diff --git a/README.md b/README.md index 23a3c0d4347a0b3c143e9aa7a42ac6352351e5ad..dea9cf8a1b36fff02f8432f975b983417dce5cf4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,18 @@ # VBcms VBcms est un panel intuitif qui vous facilitera la vie dans la création de votre loading screen. + +# English: +Hi there and thank you for download VBcms! I'm sorry for the French rental of the panel, I'm working on an English translation. +If you need help, don't hesitate to send me a PM, but also to read the panel documentation. + +Doc: https://vbcms.sl-projects.com/ (in french only for the moment) + +To download themes PSD's, go to this link: https://cloud.sl-projects.com/index.php/s/TtSEGfyLK5pQ9W3 :) + +# Français +Salut cop1 :D +Merci infiniment d'avoir téléchargé VBcms. Si tu as besoin d'aide, n'hésite surtout pas à m'envoyer un MP, mais aussi à lire la documentation du panel. + +Doc: https://vbcms.sl-projects.com/ + +Pour télécharger les fichiers PSD des thèmes, va sur ce lien: https://cloud.sl-projects.com/index.php/s/TtSEGfyLK5pQ9W3 :) \ No newline at end of file diff --git a/admin/404.php b/admin/404.php new file mode 100644 index 0000000000000000000000000000000000000000..c93c395f2e97852cfd2ddaeab0cc2f32fc330df6 --- /dev/null +++ b/admin/404.php @@ -0,0 +1,28 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=$siteInfos[0]?> | 404</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1>Mayday! Nous avons perdu le contact!</h1> + <p>Il semblerait que tu te sois perdu. :/</p> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/alerts.php b/admin/alerts.php new file mode 100644 index 0000000000000000000000000000000000000000..0ba481300a451984f42eac8a03b2ae9f5a9ca259 --- /dev/null +++ b/admin/alerts.php @@ -0,0 +1,57 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_GET["deletealert"])) { + $sql = $bdd->prepare( "DELETE FROM alerts WHERE id =:id" ); + $sql->bindParam(':id', $_GET["deletealert"]); + $sql->execute(); +} +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Admin</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1>Alertes</h1> + <p>Utiles pour avertir tes joueurs.</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">alerte créée avec succès!</div>'); + } + ?> + <a href="editor.php?type=alert" class="btn btn-success">Créer une nouvelle alerte</a> + <div class="d-flex flex-wrap"> + <?php + $res=$bdd->query("SELECT * FROM alerts"); + $result = $res->fetchAll(); + foreach($result as $row) { + ?> + <!-- Carte alert --> + <div class="card m-2" style="width: 18rem;"> + <div class="card-body"> + <h5 class="card-title"><?=$row["title"]?></h5> + <p class="card-text"><?=$row["description"]?></p> + <a href="editor.php?type=alert&id=<?=$row["id"]?>" class="btn btn-primary">Modifier</a> + <a href="alerts.php?deletealert=<?=$row["id"]?>" class="btn btn-danger"><i class="far fa-trash-alt"></i></a> - <b><?=$row["duration"]?> ms</b> + </div> + </div> + <!-- /carte alert --> + <?php } ?> + </div> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/backgrounds.php b/admin/backgrounds.php new file mode 100644 index 0000000000000000000000000000000000000000..6d17dc788392d786af476e5e3825417059c31332 --- /dev/null +++ b/admin/backgrounds.php @@ -0,0 +1,32 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Backgrounds</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <style type="text/css"> + .gallery img { + width: 100%; + } + .gallery2 img{ + width: 25vw; + border-radius: 10px; + margin: 1vw; + } + </style> + <?php include 'includes/navbar.php'; ?> + <?php include getTranslation("backgrounds"); ?> +</body> +</html> \ No newline at end of file diff --git a/admin/css/fonts.css b/admin/css/fonts.css new file mode 100644 index 0000000000000000000000000000000000000000..eda1e6fae68d5ca8dd762d96c6e3e4369fdf504e --- /dev/null +++ b/admin/css/fonts.css @@ -0,0 +1,24 @@ +@font-face {font-family: "Refrigerator Delx W01 Bold"; + src: url("../fonts/d664bf6951144f64f00f5b48099019d3.eot"); /* IE9*/ + src: url("../fonts/d664bf6951144f64f00f5b48099019d3.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("../fonts/d664bf6951144f64f00f5b48099019d3.woff2") format("woff2"), /* chrome、firefox */ + url("../fonts/d664bf6951144f64f00f5b48099019d3.woff") format("woff"), /* chrome、firefox */ + url("../fonts/d664bf6951144f64f00f5b48099019d3.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("../fonts/d664bf6951144f64f00f5b48099019d3.svg#Refrigerator Delx W01 Bold") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "Refrigerator Delx W02 Reg"; + src: url("../fonts/c0a349550b33f079982cf073e98cc67c.eot"); /* IE9*/ + src: url("../fonts/c0a349550b33f079982cf073e98cc67c.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("../fonts/c0a349550b33f079982cf073e98cc67c.woff2") format("woff2"), /* chrome、firefox */ + url("../fonts/c0a349550b33f079982cf073e98cc67c.woff") format("woff"), /* chrome、firefox */ + url("../fonts/c0a349550b33f079982cf073e98cc67c.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("../fonts/c0a349550b33f079982cf073e98cc67c.svg#Refrigerator Delx W02 Reg") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "LTKaliber Bold"; + src: url("../fonts/884a957ee2d127a16ff887ffec407798.eot"); /* IE9*/ + src: url("../fonts/884a957ee2d127a16ff887ffec407798.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("../fonts/884a957ee2d127a16ff887ffec407798.woff2") format("woff2"), /* chrome、firefox */ + url("../fonts/884a957ee2d127a16ff887ffec407798.woff") format("woff"), /* chrome、firefox */ + url("../fonts/884a957ee2d127a16ff887ffec407798.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("../fonts/884a957ee2d127a16ff887ffec407798.svg#Linotype Kaliber Bold") format("svg"); /* iOS 4.1- */ +} \ No newline at end of file diff --git a/admin/css/styles.css b/admin/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..73e1a8da3ea0fc1bb7e3340ecb7bbc89616ef497 --- /dev/null +++ b/admin/css/styles.css @@ -0,0 +1,60 @@ +@import "fonts.css"; +:root{ + --85-grey: #111111; + --10-grey: #ebebeb; + --main-blue2: #2C5FFF; + --light-blue: #40739e; +} + +.bg-dark{ + background-color: var(--85-grey) !important; +} +.bg-light{ + background-color: #f8f9fa!important; +} + +.navbar{ + background: linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,.5)),url("../images/black-back-pattern.jpg"); + background-size: auto 200%; +} +.loginCard{ + max-width: 25rem; + background-color: var(--10-grey); +} +.loginCard h1,h2,h3,h4,h5{ + font-family: "Refrigerator Delx W02 Reg"; +} +.navbar-brand{ + font-family: "LTKaliber Bold"; + color: white !important; +} +.disconnectButton{ + font-family: "Refrigerator Delx W02 Reg" !important; + color: white !important; +} + +.sidebar{ + margin-left: 0; + min-height: 100vh; +} +.sidebar .list-group { + width: 15rem; +} +.border-right { + border-right: 1px solid #dee2e6!important; +} +.page-content{ + margin-top: 1rem; +} +.page-content h1,h2,h3{ + font-family: "Refrigerator Delx W01 Bold"; +} + +.galleryImage{ + background: linear-gradient(90deg,rgba(0,0,0,.5),rgba(0,0,0,.5)),url("../images/black-back-pattern.jpg"); +} + +.fullwidthContainer{ + width: 100%; + background-color: var(--10-grey); +} \ No newline at end of file diff --git a/admin/editor.php b/admin/editor.php new file mode 100644 index 0000000000000000000000000000000000000000..066b973ca5c2a806148195155b1b8983ca546cd3 --- /dev/null +++ b/admin/editor.php @@ -0,0 +1,151 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_GET["type"])) { + $action = "create"; + $btnValue = "create".$_GET["type"]; +} + +if (isset($_GET["id"]) AND (isset($_GET["type"]) AND ($_GET["type"] == "tip" OR $_GET["type"] == "alert"))) { + if ($_GET["type"] == "tip") { + $res=$bdd->query("SELECT * FROM posts WHERE id = ".$_GET["id"]); + $result = $res->fetch(); + + } elseif ($_GET["type"] == "alert") { + $res=$bdd->query("SELECT * FROM alerts WHERE id = ".$_GET["id"]); + $result = $res->fetch(); + } + $action = "update"; + $btnValue = "update".$_GET["type"]; + $titre = $result["title"]; + $content = $result["description"]; + $id = $_GET["id"]; + $frontImage = $result["picPath"]; +} + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Editor</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> + + <link rel="stylesheet" href="vendors/summernote/dist/summernote-lite.css"> + <script type="text/javascript" src="vendors/summernote/dist/summernote-lite.js"></script> +</head> +<body> + <style type="text/css"> + .editorDiv{ + padding: 1vh; + } + .articleTitle{ + + margin-bottom: 1vh; + } + .gallery{ + width: inherit; + margin: 1vh; + } + .gallery img{ + width: 100%; + border-radius: 10px; + } + </style> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1>Editor</h1> + <p>Here you can create and edit text.</p> + + <form action = "editorSend.php" method = "POST"> + <input required class="input-group-text text-left my-1" type="text" name="articleName" <?php if(isset($action) AND $action == "update"){echo 'value="'.$titre.'"';} ?> placeholder="Title"> + <?php + if (isset($_GET["type"]) AND $_GET["type"] != "alert") { ?> + <button type="button" class="btn btn-primary btn-sm my-1" data-toggle="modal" data-target="#chooseMediaModal">Choose an illustration image</button> + <input class="input-group-text text-left mb-2 my-1" type="text" id="frontImage" name="frontImage" <?php if(isset($action) AND $action == "update"){echo 'value="'.$frontImage.'"';} ?> placeholder="Image link"> + <?php } ?> + <?php + if (isset($_GET["type"]) AND $_GET["type"] == "alert") { ?> + <input required class="input-group-text text-left my-1" type="text" id="alertDuration" name="alertDuration" <?php if(isset($action) AND $action == "update"){echo 'value="'.$frontImage.'"';} ?> placeholder="Alert duration (in ms)"> + <?php } ?> + + <?php if(isset($action) AND $action == "update"){echo '<input required class="input-group-text text-left my-1" type="text" id="articleId" name="articleId" value="'.$id.'">';} ?> + + <!-- Modal --> + <div class="modal fade" id="chooseMediaModal" tabindex="-1" role="dialog" aria-labelledby="chooseMediaModalTitle" aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title" id="chooseMediaModalTitle">Choose an image</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <?php + $res=$bdd->query("SELECT * FROM gallery ORDER BY id DESC"); + $result = $res->fetchAll(); + $count= count($result); + if($count > 0){ + foreach( $result as $row ) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row["1"]); + echo ('<div class="gallery d-flex flex-column"><img src="'.$picPath.'"><button class="btn btn-primary" onclick="changePath('."'".$picPath."'".')" id="chooseImageBtn" data-dismiss="modal">Choisir</button></div>'); + } + } else { + echo "Aucun média n'est encore ajouté. :("; + } + ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> + </div> + </div> + </div> + </div> + <!-- Fin du Modal --> + + <?php + $res=$bdd->query("SELECT * FROM gallery"); + $count= count($res->fetchAll()); + if($count == 0){ ?> + <div class="alert alert-warning border-0 alert-dismissible"> + <span class="font-weight-semibold">Hep hep hep!</span> It is better to have an image in stock. Check <a href="gallery.php" class="alert-link">here</a>. + </div> + <?php } + ?> + + <textarea required id="summernote" name="articleContent"><?php if(isset($action) AND $action == "update"){echo $content;}?></textarea> + <button type="submit" name="submit" value="<?=$btnValue?>" class="btn btn-success my-2"><?php if(isset($action) AND $action == "update"){echo 'Mettre à jour';}else{echo 'Créer';} ?></button> + </form> + </div> + </div> + <script type="text/javascript"> + $(document).ready(function() { + $('#summernote').summernote({ + placeholder: "Ceci est un texte.", + tabsize: 2, + height: 300, + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'underline', 'clear']], + ['color', ['color']], + ['para', ['paragraph']], + ['view', ['codeview', 'help']] + ] + }); + }); + function changePath(x) { + console.log(arguments[0]); + $("#frontImage").val(arguments[0]); + } + </script> +</body> +</html> \ No newline at end of file diff --git a/admin/editorSend.php b/admin/editorSend.php new file mode 100644 index 0000000000000000000000000000000000000000..ca3edeb0e80e0ace373f88583eab61bc92720ddf --- /dev/null +++ b/admin/editorSend.php @@ -0,0 +1,24 @@ +<?php +include 'includes/bdd.php'; +if (isset($_POST["submit"])) { + if ($_POST["submit"] == "createtip") { + $sql = "INSERT INTO posts (id, title, description, picPath) VALUES (?,?,?,?)"; + $bdd->prepare($sql)->execute([null, $_POST["articleName"], $_POST["articleContent"], $_POST["frontImage"]]); + header('Location: tips.php?success'); + } elseif ($_POST["submit"] == "updatetip") { + $id = $_POST["articleId"]; + $sql = "UPDATE posts SET title=?, description=?, picPath=? WHERE id = ?"; + $bdd->prepare($sql)->execute([$_POST["articleName"], $_POST["articleContent"], $_POST["frontImage"], $_POST["articleId"]]); + header('Location: tips.php?success'); + } elseif ($_POST["submit"] == "createalert") { + $sql = "INSERT INTO alerts (id, title, description, duration) VALUES (?,?,?,?)"; + $bdd->prepare($sql)->execute([null, $_POST["articleName"], $_POST["articleContent"], $_POST["alertDuration"]]); + header('Location: alerts.php?success'); + } elseif ($_POST["submit"] == "updatealert") { + $id = $_POST["articleId"]; + $sql = "UPDATE alerts SET title=?, description=?, duration=? WHERE id = ?"; + $bdd->prepare($sql)->execute([$_POST["articleName"], $_POST["articleContent"], $_POST["alertDuration"], $_POST["articleId"]]); + header('Location: alerts.php?success'); + } +} +?> \ No newline at end of file diff --git a/admin/fonts/884a957ee2d127a16ff887ffec407798.eot b/admin/fonts/884a957ee2d127a16ff887ffec407798.eot new file mode 100644 index 0000000000000000000000000000000000000000..203f7253367c5fb37f7c728eb1741b8849f84feb Binary files /dev/null and b/admin/fonts/884a957ee2d127a16ff887ffec407798.eot differ diff --git a/admin/fonts/884a957ee2d127a16ff887ffec407798.svg b/admin/fonts/884a957ee2d127a16ff887ffec407798.svg new file mode 100644 index 0000000000000000000000000000000000000000..f115945db839c6751443b66a40a90acc1a463d55 --- /dev/null +++ b/admin/fonts/884a957ee2d127a16ff887ffec407798.svg @@ -0,0 +1,698 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Wed Jul 24 22:51:31 2019 + By www +The digitally encoded machine readable software for producing the Typefaces licensed to you is copyrighted (c) 2000, Linotype Library GmbH or ist affiliated Linotype-Hell companies. All rights reserved. This software is now the property of Heidelberger Druckmaschinen AG and its licensors, and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Heidelberger Druckmaschinen AG. +</metadata> +<defs> +<font id="LinotypeKaliber-Bold" horiz-adv-x="504" > + <font-face + font-family="LTKaliber" + font-weight="700" + font-stretch="normal" + units-per-em="1000" + panose-1="2 0 7 0 0 0 0 0 0 0" + ascent="800" + descent="-200" + x-height="505" + cap-height="682" + bbox="-55 -218 801 890" + underline-thickness="35" + underline-position="-33" + unicode-range="U+0020-2122" + /> +<missing-glyph horiz-adv-x="500" +d="M63 0v765h375v-765h-375zM125 63h250v640h-250v-640z" /> + <glyph glyph-name=".notdef" unicode="‛" horiz-adv-x="500" +d="M63 0v765h375v-765h-375zM125 63h250v640h-250v-640z" /> + <glyph glyph-name=".notdef" unicode="‟" horiz-adv-x="500" +d="M63 0v765h375v-765h-375zM125 63h250v640h-250v-640z" /> + <glyph glyph-name="glyph1" horiz-adv-x="0" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="300" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="264" +d="M70 186v496h119v-496h-119zM70 -3v120h119v-120h-119z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="413" +d="M264 437h-59l25 245h123zM118 437h-59l25 245h123z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="456" +d="M326 136v-85h-79v85h-46v-85h-79v85h-63v79h63v74h-63v79h63v84h79v-84h46v84h79v-84h63v-79h-63v-74h63v-79h-63zM247 289h-46v-74h46v74z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="478" +d="M301 91h-10v-54h-108v54h-15q-43 0 -76 34t-33 80v52h107v-39q0 -15 19 -15h96q16 0 16 19v81q0 15 -17 15h-112q-43 0 -76 31t-33 77v91q0 45 31.5 78t77.5 33h15v54h108v-54h10q45 0 78 -32t33 -79v-51h-115v39q0 15 -17 15h-98q-16 0 -16 -18v-61q0 -16 19 -16h116 +q45 0 78 -31.5t33 -78.5v-116q0 -44 -32 -76t-79 -32z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="611" +d="M225 277h-111q-24 0 -40.5 16t-16.5 41v111q0 23 16.5 41.5t40.5 18.5h111q23 0 39 -17.5t16 -42.5v-111q0 -24 -16 -40.5t-39 -16.5zM210 347v86h-82v-86h82zM199 -19l-63 33l259 506l63 -33zM486 -3h-111q-24 0 -40 17t-16 42v112q0 23 16.5 40t39.5 17h111 +q23 0 39 -16.5t16 -40.5v-112q0 -25 -16 -42t-39 -17zM389 156v-88l83 1v87h-83z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="429" +d="M361 126v-21q0 -44 -31 -76t-77 -32h-87q-46 0 -76.5 32t-30.5 76v131q0 32 17 59q-17 25 -17 57v94q0 43 30.5 76t76.5 33h63q43 0 76 -31.5t33 -77.5v-52h-102v38q0 15 -17 15h-40q-14 0 -14 -15v-73l90 -52v35h106v-97l26 -15v-120zM255 185l-85 48q-5 3 -5 1v-112 +q0 -14 14 -14h61q15 0 15 14v63z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="227" +d="M118 437h-59l25 245h123z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="319" +d="M176 -179q-51 0 -84 33.5t-33 84.5v706q0 49 33.5 84t83.5 35h79v-107h-71q-18 0 -18 -21v-685q0 -23 20 -23h69v-107h-79z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="319" +d="M136 -179h-77v107h68q21 0 21 23v685q0 21 -19 21h-70v107h77q51 0 85 -35t34 -84v-706q0 -51 -33.5 -84.5t-85.5 -33.5z" /> + <glyph glyph-name="asterisk" unicode="*" +d="M358 306l-65 66v-92h-91v92l-66 -66l-63 64l110 111l-110 110l63 64l66 -66v93h91v-93l65 66l64 -64l-111 -110l111 -111z" /> + <glyph glyph-name="plus" unicode="+" +d="M301 198v-135h-107v135h-135v107h135v136h107v-136h136v-107h-136z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="264" +d="M105 -129h-59l25 246h123z" /> + <glyph glyph-name="hyphenminus" unicode="-" +d="M101 198v107h296v-107h-296z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="264" +d="M70 -3v120h119v-120h-119z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="366" +d="M123 -132h-108l223 896h109z" /> + <glyph glyph-name="zero" unicode="0" +d="M318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="300" +d="M106 -3v577h-47v108h154v-685h-107z" /> + <glyph glyph-name="two" unicode="2" +d="M59 -3v295q0 51 34.5 85t82.5 34h132q21 0 21 18v125q0 20 -18 20h-125q-20 0 -20 -18v-40h-107v47q0 50 34.5 84.5t82.5 34.5h142q50 0 84.5 -35.5t34.5 -83.5v-141q0 -50 -35.5 -84t-83.5 -34h-132q-20 0 -20 -19v-180h163v26h108v-134h-378z" /> + <glyph glyph-name="three" unicode="3" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v35q0 18 16.5 28.5t36.5 10.5t37 -10.5t17 -28.5v-28q0 -18 20 -18h125q18 0 18 20v160q0 19 -21 19h-108v107h108q21 0 21 18v125q0 20 -18 20h-125q-20 0 -20 -18v-40h-107v47q0 50 34.5 84.5t82.5 34.5h142q50 0 84.5 -35.5 +t34.5 -83.5v-141q0 -35 -21 -65q21 -30 21 -65v-176q0 -49 -34.5 -84t-84.5 -35z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="479" +d="M306 -3v238h-247v336l90 90q10 9 24 9q21 0 41 -20t20 -41q0 -14 -9 -24l-59 -59v-184h140v340h107v-685h-107z" /> + <glyph glyph-name="five" unicode="5" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v35q0 18 16.5 28.5t36.5 10.5t37 -10.5t17 -28.5v-28q0 -18 20 -18h125q18 0 18 20v160q0 19 -21 19h-249v378h354v-140h-107v32h-140v-163h152q48 0 83.5 -34t35.5 -85v-176q0 -49 -34.5 -84t-84.5 -35z" /> + <glyph glyph-name="six" unicode="6" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-143h152q48 0 83.5 -34t35.5 -85v-176q0 -49 -34.5 -84t-84.5 -35zM329 285q0 19 -21 19h-142v-176q0 -23 20 -23 +h125q18 0 18 20v160z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="447" +d="M231 269v-273h-107v318l160 160v100h-241v108h348v-253z" /> + <glyph glyph-name="eight" unicode="8" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v176q0 36 19 65q-19 29 -19 65v141q0 50 34.5 84.5t82.5 34.5h142q50 0 84.5 -35.5t34.5 -83.5v-141q0 -35 -21 -65q21 -30 21 -65v-176q0 -49 -34.5 -84t-84.5 -35zM329 554q0 20 -18 20h-125q-20 0 -20 -18v-127q0 -18 20 -18 +h122q21 0 21 18v125zM329 285q0 19 -21 19h-122q-20 0 -20 -19v-162q0 -18 20 -18h125q18 0 18 20v160z" /> + <glyph glyph-name="nine" unicode="9" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v35q0 18 16.5 28.5t36.5 10.5t37 -10.5t17 -28.5v-28q0 -18 20 -18h125q18 0 18 20v179h-153q-48 0 -82.5 34t-34.5 84v141q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -49 -34.5 -84t-84.5 -35zM329 551 +q0 23 -21 23h-124q-18 0 -18 -20v-125q0 -18 20 -18h143v140z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="264" +d="M70 386v119h119v-119h-119zM70 -3v120h119v-120h-119z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="264" +d="M70 386v119h119v-119h-119zM105 -129h-59l25 246h123z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="381" +d="M238 39l-176 177v66l176 177l76 -77l-132 -133l132 -133z" /> + <glyph glyph-name="equal" unicode="=" +d="M59 274v108h378v-108h-378zM59 122v107h378v-107h-378z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="381" +d="M136 39l-76 77l133 133l-133 133l76 77l177 -177v-66z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="542" +d="M354 316h-40q-20 0 -20 -19v-134h-119v153q0 50 34.5 84.5t83.5 34.5h40q21 0 21 17v90q0 21 -19 21h-137q-20 0 -20 -19v-52h-119v71q0 50 34.5 84.5t82.5 34.5h178q50 0 84.5 -35.5t34.5 -83.5v-129q0 -51 -35 -84.5t-84 -33.5zM175 -3v120h119v-120h-119z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="765" +d="M530 106h-168q-56 0 -94 39t-38 93v28q0 56 39.5 94t92.5 38h136v-184h21q35 0 35 32v158q0 35 -33 35h-290q-14 0 -24.5 -11t-10.5 -26v-300q0 -14 9 -24.5t24 -10.5h366v-108h-376q-56 0 -93 39t-37 93v324q0 57 38.5 94.5t91.5 37.5h311q56 0 93.5 -39t37.5 -93v-177 +q0 -56 -38.5 -94t-92.5 -38zM390 289h-16q-14 0 -24.5 -11t-10.5 -26v-38h51v75z" /> + <glyph glyph-name="A" unicode="A" +d="M329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="B" unicode="B" +d="M318 -3h-259v685h259q50 0 84.5 -35.5t34.5 -83.5v-141q0 -36 -20 -66q20 -31 20 -64v-176q0 -51 -34 -85t-85 -34zM329 554q0 20 -18 20h-145v-163h142q21 0 21 23v120zM329 283q0 21 -18 21h-145v-199h142q21 0 21 23v155z" /> + <glyph glyph-name="C" unicode="C" +d="M318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v28q0 18 16.5 28.5t36.5 10.5t37.5 -10.5t17.5 -28.5v-35q0 -50 -35.5 -84.5 +t-83.5 -34.5z" /> + <glyph glyph-name="D" unicode="D" +d="M318 -3h-259v685h259q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-142v-469h142q21 0 21 18v433z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="500" +d="M424 -3h-365v685h378v-108h-271v-163h213v-107h-213v-199h258q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="472" +d="M166 574v-163h200q18 0 29 -17t11 -37t-10.5 -36.5t-28.5 -16.5h-201v-307h-107v685h378v-108h-271z" /> + <glyph glyph-name="G" unicode="G" +d="M318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v122h-59v107h167v-236q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="H" unicode="H" +d="M329 -3v307h-163v-307h-107v685h107v-271h163v271h108v-685h-108z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="276" +d="M82 -3v685h107v-685h-107z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="475" +d="M290 -3h-142q-48 0 -83 34.5t-35 84.5v35q0 18 17 28.5t37 10.5q19 0 36 -10.5t17 -28.5v-28q0 -18 21 -18h125q17 0 17 20v557h108v-566q0 -49 -34 -84t-84 -35z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="499" +d="M329 -3v215q0 16 -107 103l-12 10l-44 -62v-266h-107v684h107v-244l168 244h100l-2 -42l-155 -225l11 -8q149 -120 149 -164v-245h-108z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="456" +d="M376 -3h-317v685h107v-577h210q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="659" +d="M481 -3v559q0 19 -21 19h-63q-20 0 -20 -19v-559h-107v559q0 19 -21 19h-63q-20 0 -20 -19v-559h-107v566q0 50 34.5 84.5t82.5 34.5h82q35 0 65 -19q31 19 65 19h81q49 0 84 -34.5t35 -84.5v-566h-107z" /> + <glyph glyph-name="N" unicode="N" +d="M311 -3l-145 402v-402h-107v685h118l152 -419v419h108v-685h-126z" /> + <glyph glyph-name="O" unicode="O" +d="M318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="499" +d="M318 304h-152v-307h-107v685h259q50 0 84.5 -35.5t34.5 -83.5v-141q0 -51 -34 -84.5t-85 -33.5zM329 554q0 20 -18 20h-145v-163h142q21 0 21 23v120z" /> + <glyph glyph-name="Q" unicode="Q" +d="M318 -3h-16v-59h-107v59h-19q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="R" unicode="R" +d="M329 -3v286q0 21 -18 21h-145v-307h-107v685h259q50 0 84.5 -35.5t34.5 -83.5v-141q0 -36 -20 -66q20 -31 20 -64v-295h-108zM329 554q0 20 -18 20h-145v-163h142q21 0 21 23v120z" /> + <glyph glyph-name="S" unicode="S" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v35q0 18 16.5 28.5t36.5 10.5t37 -10.5t17 -28.5v-28q0 -18 20 -18h125q18 0 18 20v160q0 19 -21 19h-132q-48 0 -82.5 34t-34.5 84v141q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18 +h-124q-18 0 -18 -20v-125q0 -18 20 -18h132q48 0 83.5 -34t35.5 -85v-176q0 -49 -34.5 -84t-84.5 -35z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="456" +d="M279 574v-577h-107v577h-137v108h378v-108h-134z" /> + <glyph glyph-name="U" unicode="U" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h122q21 0 21 18v559h108v-566q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="V" unicode="V" +d="M300 -3h-106q-135 165 -135 235v450h107v-426q0 -51 81 -145q82 89 82 145v426h108v-450q0 -76 -137 -235z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="659" +d="M469 -3h-81q-34 0 -65 19q-30 -19 -65 -19h-82q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h63q21 0 21 18v559h107v-559q0 -18 20 -18h63q21 0 21 18v559h107v-566q0 -50 -35 -84.5t-84 -34.5z" /> + <glyph glyph-name="X" unicode="X" +d="M329 -3v216l-82 81l-81 -81v-216h-107v259l95 96l-95 97v233h107v-191l81 -81l82 81v191h108v-233l-97 -97l97 -96v-259h-108z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="482" +d="M307 304h-16v-307h-107v307h-19q-48 0 -82.5 34t-34.5 84v260h107v-253q0 -18 20 -18h122q21 0 21 18v253h108v-260q0 -50 -35.5 -84t-83.5 -34z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="468" +d="M389 -3h-341v157l235 407v13h-224v108h331v-149l-235 -408v-20h234q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="319" +d="M59 -179v943h196v-107h-89v-729h89v-107h-196z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="366" +d="M236 -132l-224 896h109l223 -896h-108z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="319" +d="M59 -179v107h89v729h-89v107h196v-943h-196z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="434" +d="M315 498l-103 102l-103 -102l-56 57l127 127h65l127 -127z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="300" +d="M-17 -74v61h328v-61h-328z" /> + <glyph glyph-name="grave" unicode="`" +d="M355 690l-263 81l76 100l217 -148z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="495" +d="M309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201q0 21 -18 21h-125q-20 0 -20 -19v-78 +q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="b" unicode="b" +d="M318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-554q0 -23 20 -23h125q18 0 18 20v254q0 19 -21 19h-88q-18 0 -28 16.5t-10 36.5q0 54 37 54h99q48 0 83.5 -34t35.5 -85v-270q0 -49 -34.5 -84t-84.5 -35z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="481" +d="M371 312q-20 0 -37 10.5t-17 28.5v28q0 19 -21 19h-112q-18 0 -18 -21v-249q0 -23 20 -23h232v-48q0 -46 -39 -56q-12 -4 -73 -4h-130q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h130q48 0 83.5 -34t35.5 -85v-35q0 -18 -17 -28.5t-37 -10.5z" /> + <glyph glyph-name="d" unicode="d" +d="M319 -3h-142q-50 0 -84 35t-34 84v270q0 51 35 85t83 34h99q37 0 37 -54q0 -20 -10 -36.5t-28 -16.5h-88q-20 0 -20 -19v-254q0 -20 17 -20h125q21 0 21 23v554h107v-566q0 -50 -35 -84.5t-83 -34.5z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="499" +d="M221 198q-18 0 -28 16.5t-10 36.5t10 37t29 17h107v72q0 21 -18 21h-125q-20 0 -20 -23v-250q0 -20 18 -20h247v-44q0 -46 -39 -58q-17 -6 -74 -6h-142q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h142q50 0 84.5 -35t34.5 -84v-188h-216z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="376" +d="M315 323h-125v-326h-107v326h-40v104h40v136q0 57 80 101q58 24 116 49q16 -41 16 -73q0 -25 -11 -39l-86 -41q-8 -4 -8 -6v-127h125q18 0 29 -20q10 -16 10 -34q0 -20 -10 -35t-29 -15z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="505" +d="M437 -58l-149 -150q-10 -10 -24 -10q-21 0 -41.5 20.5t-20.5 41.5q0 14 10 24l117 116v391q0 23 -21 23h-124q-18 0 -18 -21v-254q0 -18 20 -18h88q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17h-98q-48 0 -82.5 34.5t-34.5 84.5v270q0 49 33.5 84t83.5 35h142 +q48 0 83.5 -34t35.5 -85v-444z" /> + <glyph glyph-name="h" unicode="h" +d="M382 -11q-20 0 -36.5 10.5t-16.5 28.5v351q0 5 -7.5 12t-13.5 7q-8 0 -142 -55v-346h-107v685h107v-223q128 49 162 49q46 0 79 -40q30 -36 30 -82v-358q0 -18 -17.5 -28.5t-37.5 -10.5z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="257" +d="M46 595q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM160 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="275" +d="M86 598q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM179 -117l-42 -48q-28 -28 -51 -28q-20 0 -38.5 18.5t-18.5 38.5q0 22 26 49q23 21 46 41v551h108v-566q0 -27 -30 -56z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="475" +d="M166 203v-206h-107v685h107v-339l137 162h104v-51l-159 -182l180 -179v-96h-57z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="261" +d="M156 -8q-24 0 -54 30q-22 24 -43 49v610h107v-566l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="660" +d="M536 -10q-20 0 -37 10.5t-17 28.5v350q0 19 -21 19h-82v-401h-107v401h-106v-401h-107v508h412q48 0 83.5 -34t35.5 -85v-357q0 -18 -17 -28.5t-37 -10.5z" /> + <glyph glyph-name="n" unicode="n" +d="M383 -10q-18 0 -36 11t-18 29v349q0 19 -21 19h-142v-401h-107v508h259q48 0 83.5 -34t35.5 -85v-356q0 -18 -20 -30q-16 -10 -34 -10z" /> + <glyph glyph-name="o" unicode="o" +d="M318 -3h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="p" unicode="p" +d="M318 -5h-99q-37 0 -37 54q0 20 10 37t28 17h88q21 0 21 18v254q0 21 -18 21h-125q-20 0 -20 -24v-554h-107v566q0 50 34.5 84.5t82.5 34.5h142q50 0 84.5 -35t34.5 -84v-270q0 -51 -35.5 -85t-83.5 -34z" /> + <glyph glyph-name="q" unicode="q" +d="M329 -179v177q-4 -1 -11 -1h-142q-48 0 -82.5 34.5t-34.5 84.5v270q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-565h-108zM329 375q0 23 -21 23h-124q-18 0 -18 -21v-254q0 -18 20 -18h125q18 0 18 20v250z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="436" +d="M361 312q-18 0 -36 10.5t-18 28.5v28q0 19 -21 19h-102q-18 0 -18 -21v-380h-107v389q0 49 33.5 84t83.5 35h120q48 0 83.5 -34t35.5 -85v-35q0 -19 -17 -29t-37 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="486" +d="M300 -3h-132q-64 0 -78 4q-42 11 -42 58v46h245q18 0 18 20v57q0 19 -21 19h-122q-48 0 -82.5 38t-34.5 89v58q0 49 33.5 84t83.5 35h132q48 0 83.5 -34t35.5 -85v-31h-108v24q0 19 -21 19h-114q-18 0 -18 -21v-42q0 -10 7 -18.5t13 -8.5h122q48 0 83.5 -34.5t35.5 -84.5 +v-73q0 -49 -34.5 -84t-84.5 -35z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="390" +d="M330 1q-13 -4 -76 -4h-35q-50 0 -84 35t-34 84v283h-66v106h66v84h107v-84h99v-106h-99v-274q0 -20 18 -20h144v-48q0 -46 -40 -56z" /> + <glyph glyph-name="u" unicode="u" +d="M176 -3q-48 0 -82.5 34.5t-34.5 84.5v389h107v-382q0 -18 20 -18h143v400h108v-508h-261z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="496" +d="M363 -3h-106q-67 0 -124 55q-74 71 -74 202l1 251h106l1 -250q0 -82 40 -124q28 -29 68 -33l87 407h115z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="658" +d="M469 -3h-81q-34 0 -65 19q-30 -19 -65 -19h-82q-48 0 -82.5 34.5t-34.5 84.5v389h107v-382q0 -18 20 -18h63q21 0 21 18v382h107v-382q0 -18 20 -18h63q21 0 21 18v382h107v-389q0 -50 -35 -84.5t-84 -34.5z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="498" +d="M333 266l111 -175v-94h-108v61l-92 145l-92 -145v-61h-107v94l110 175l-124 239h119l94 -185l93 185h120z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="502" +d="M256 -2q-82 1 -135 64q-63 74 -63 210l-1 233h114l-1 -232q0 -166 109 -173l84 405h115l-132 -621l-89 -70q-11 -8 -24 -8q-19 0 -35 17.5t-16 38.5q0 18 14 30l46 38z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="479" +d="M391 -3h-332v159l235 235v7h-224v107h331v-159l-235 -235v-6h224q18 0 28.5 -17t10.5 -37t-10 -37t-28 -17z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="383" +d="M239 -179q-51 0 -84.5 33.5t-33.5 84.5v270l-62 62v65l62 63v246q0 49 34 84t84 35h79v-107h-72q-18 0 -18 -21v-278l-55 -55l55 -54v-298q0 -23 20 -23h70v-107h-79z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="276" +d="M82 -179v967h107v-967h-107z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="383" +d="M255 209v-270q0 -51 -33.5 -84.5t-85.5 -33.5h-77v107h68q21 0 21 23v298l54 54l-54 55v278q0 21 -19 21h-70v107h77q51 0 85 -35t34 -84v-246l63 -63v-65z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="524" +d="M372 532h-74q-27 0 -44 16q-6 5 -28 38q-11 17 -26 17h-51q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h75q34 0 57 -35t38 -35h52q10 0 10 7v39h81v-42q0 -36 -25 -60t-60 -24z" /> + <glyph glyph-name="DEL" horiz-adv-x="510" + /> + <glyph glyph-name="Euro" +d="M318 -3h-142q-51 0 -84 34t-33 85v119h-35v94h35v28h-35v94h35v112q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-103h217v-94h-217v-28h217v-94h-217v-107q0 -23 20 -23h122q21 0 21 18v28q0 18 16.5 28.5 +t36.5 10.5t37.5 -10.5t17.5 -28.5v-35q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Euro" unicode="€" +d="M318 -3h-142q-51 0 -84 34t-33 85v119h-35v94h35v28h-35v94h35v112q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-103h217v-94h-217v-28h217v-94h-217v-107q0 -23 20 -23h122q21 0 21 18v28q0 18 16.5 28.5 +t36.5 10.5t37.5 -10.5t17.5 -28.5v-35q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="227" +d="M105 -129h-59l25 246h123z" /> + <glyph glyph-name="florin" unicode="ƒ" horiz-adv-x="669" +d="M626 516h-108q8 46 8 38q0 20 -17 20h-54q-22 0 -32 -49l-10 -78h108l-18 -108h-109l-71 -402q-8 -47 -47 -81.5t-89 -34.5h-41q-43 0 -73 27.5t-30 70.5q0 11 3 22l9 46h107q-2 -8 -5 -16q-4 -15 -4 -24q0 -19 16 -19h25q21 0 25 23l67 388h-63l18 108h64l22 118 +q9 48 48 82.5t89 34.5h70q44 0 72.5 -28.5t28.5 -71.5q0 -10 -2 -21z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="376" +d="M251 -129h-59l25 246h123zM105 -129h-59l25 246h123z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="674" +d="M479 -3v120h119v-120h-119zM279 -3v120h119v-120h-119zM79 -3v120h119v-120h-119z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="456" +d="M275 445v-341h-107v341h-109v107h109v130h107v-130h114v-107h-114z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="456" +d="M275 339v-235h-107v235h-109v108h109v33h-109v108h109v94h107v-94h114v-108h-114v-33h114v-108h-114z" /> + <glyph glyph-name="circumflex" unicode="ˆ" +d="M351 686l-104 102l-102 -102l-57 57l127 127h65l127 -127z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="854" +d="M725 -3h-111q-24 0 -40.5 17t-16.5 42v112q0 23 16.5 40t40.5 17h111q23 0 39 -16.5t16 -40.5v-112q0 -25 -16 -42t-39 -17zM710 68v88h-82v-88h82zM225 277h-111q-24 0 -40.5 16t-16.5 41v111q0 23 16.5 41.5t40.5 18.5h111q23 0 39 -17.5t16 -42.5v-111 +q0 -24 -16 -40.5t-39 -16.5zM210 347v86h-82v-86h82zM199 -19l-63 33l259 506l63 -33zM486 -3h-111q-24 0 -40 17t-16 42v112q0 23 16.5 40t39.5 17h111q23 0 39 -16.5t16 -40.5v-112q0 -25 -16 -42t-39 -17zM389 156v-88l83 1v87h-83z" /> + <glyph glyph-name="Scaron" unicode="Š" +d="M318 -3q49 0 84 35t35 84v176q0 50 -36 85q-34 34 -83 34h-132q-20 0 -20 18v125q0 20 18 20h124q21 0 21 -18v-40h108v47q0 49 -36 84q-35 35 -83 35h-142q-50 0 -84 -36q-33 -35 -33 -83v-141q0 -50 34 -84t83 -34h132q21 0 21 -19v-160q0 -20 -18 -20h-125 +q-20 0 -20 18v28q0 18 -17 28.5t-37 10.5t-36.5 -10.5t-16.5 -28.5v-35q0 -51 34 -85t83 -34h142zM89 823l127 -127h66l127 127l-57 57l-102 -102l-104 102z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="454" +d="M310 76l-213 138v70l212 137l29 -27l-145 -145l145 -145z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="780" +d="M694 -3h-518q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h531v-108h-270v-163h212v-107h-212v-199h257q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17zM329 574h-145q-18 0 -18 -20v-426q0 -23 20 -23h143v469z" /> + <glyph glyph-name="Zcaron" horiz-adv-x="468" +d="M389 -3q18 0 28.5 17t10.5 37t-10.5 37t-28.5 17h-234v20l235 408v149h-331v-108h224v-13l-235 -407v-157h341zM71 823l127 -127h66l127 127l-57 57l-102 -102l-104 102z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="468" +d="M389 -3q18 0 28.5 17t10.5 37t-10.5 37t-28.5 17h-234v20l235 408v149h-331v-108h224v-13l-235 -407v-157h341zM71 823l127 -127h66l127 127l-57 57l-102 -102l-104 102z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="227" +d="M152 437h-123l89 245h60z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="227" +d="M105 437h-59l25 245h123z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="376" +d="M298 437h-123l89 245h59zM152 437h-123l89 245h60z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="376" +d="M251 437h-59l25 245h123zM105 437h-59l25 245h123z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="389" +d="M253 140h-124q-20 0 -33.5 14t-13.5 35v125q0 19 13.5 34t33.5 15h124q20 0 33.5 -14t13.5 -35v-125q0 -20 -13.5 -34.5t-33.5 -14.5z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="624" +d="M42 198v107h531v-107h-531z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="744" +d="M42 198v107h649v-107h-649z" /> + <glyph glyph-name="tilde" unicode="˜" +d="M345 692h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h44q29 0 49 -16q9 -7 33 -37q14 -17 28 -17h34q10 0 10 7v39h80v-42q0 -36 -24.5 -60t-59.5 -24z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="552" +d="M492 492h-41v120q0 16 -17 16h-34v-136h-41v136h-50v-136h-41v177h171q21 0 37 -15.5t16 -37.5v-124zM227 628h-67v-136h-41v136h-68v41h176v-41z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="486" +d="M300 -3q49 0 84 35t35 84v73q0 49 -36 84q-35 35 -83 35h-122q-6 0 -13 8.5t-7 18.5v42q0 21 18 21h114q21 0 21 -19v-24h108v31q0 50 -36 85q-34 34 -83 34h-132q-49 0 -84 -35q-33 -35 -33 -84v-58q0 -52 34 -89q35 -38 83 -38h122q21 0 21 -19v-57q0 -20 -18 -20h-245 +v-46q0 -48 42 -58q12 -4 78 -4h132zM79 648l127 -127h65l127 127l-57 57l-102 -103l-104 103z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="454" +d="M134 76l-26 28l143 145l-144 145l27 27l214 -137v-70z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="780" +d="M437 198v-73q0 -20 17 -20h250v-48q0 -37 -34 -50q-24 -10 -82 -10h-141q-36 0 -65 20q-28 -20 -64 -20h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142q35 0 64 -20q30 20 65 20h141q50 0 84.5 -35t34.5 -84v-188h-270zM600 377q0 21 -19 21h-125 +q-19 0 -19 -23v-70h163v72zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="zcaron" horiz-adv-x="479" +d="M391 -3q18 0 28 17t10 37t-10.5 37t-28.5 17h-224v6l235 235v159h-331v-107h224v-7l-235 -235v-159h332zM76 648l127 -127h65l127 127l-57 57l-102 -103l-104 103z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="479" +d="M391 -3q18 0 28 17t10 37t-10.5 37t-28.5 17h-224v6l235 235v159h-331v-107h224v-7l-235 -235v-159h332zM76 648l127 -127h65l127 127l-57 57l-102 -103l-104 103z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM318 304h-16v-307h-107v307h-19q-48 0 -82.5 34t-34.5 84v260h107v-253 +q0 -18 20 -18h122q21 0 21 18v253h108v-260q0 -50 -35.5 -84t-83.5 -34z" /> + <glyph glyph-name="nonbreakingspace" unicode=" " horiz-adv-x="300" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="264" +d="M70 386v119h119v-119h-119zM70 -179v496h119v-496h-119z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="478" +d="M305 120h-14v-54h-108v54h-11q-50 0 -84 38q-29 34 -29 71v259q0 45 31.5 77.5t77.5 32.5h15v54h108v-54h10q45 0 78 -31.5t33 -78.5v-51h-115v39q0 15 -17 15h-91q-16 0 -16 -19v-221q0 -19 15 -19h90q19 0 19 16v39h115v-52q0 -53 -35 -86q-31 -29 -72 -29z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="600" +d="M59 -3v108h45q18 0 18 20v208h-63v108h63v122q0 48 34 83.5t84 35.5h113q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -20 18h-97q-18 0 -18 -20v-113h109v-108h-109v-217q0 -5 -1 -11h303v-108h-472z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="624" +d="M173 447q10 10 29 10h207q19 0 33 -6l45 45l64 -64l-48 -46q4 -12 4 -27v-216q0 -15 -4 -26l48 -47l-64 -64l-45 45q-16 -5 -33 -5h-207q-14 0 -32 6l-45 -46l-64 64l49 48q-4 13 -4 25v216q0 12 3 29q-3 4 -48 43l64 65l30 -30q5 -5 14 -15zM404 348q0 12 -13 12h-177 +q-12 0 -12 -14v-183q0 -15 14 -15h175q13 0 13 11v189z" /> + <glyph glyph-name="yen" unicode="¥" +d="M344 357h57v-72h-99v-22h99v-72h-99v-194h-107v194h-101v72h101v22h-101v72h56l-91 92v233h107v-191l81 -81l82 81v191h108v-233z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="276" +d="M189 659h-107v-250h107v250zM189 250h-107v-250h107v250z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="533" +d="M444 516h-108l11 43q3 15 -13 15h-72q-20 0 -31 -36q-7 -27 -13 -53q-4 -15 13 -15h161q41 0 67.5 -25.5t26.5 -64.5q0 -16 -5 -32l-65 -235q-13 -47 -55 -81.5t-92 -34.5h-88q-6 0 -13 1l-6 -25h-109l50 191h108l-11 -44q-4 -15 13 -15h72q21 0 34 41l10 48q4 16 -13 16 +h-161q-41 0 -67.5 24.5t-26.5 64.5q0 16 5 32l66 235q13 47 54.5 81.5t91.5 34.5h88q7 0 13 -1l6 24h109zM183 363l-9 -31q-4 -15 13 -15h161q8 0 16 -2l9 34q0 14 -13 14h-161h-16z" /> + <glyph glyph-name="dieresis" unicode="¨" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="624" +d="M541 204q0 -45 -31.5 -75.5t-74.5 -30.5h-259q-46 0 -75.5 30t-29.5 76v271q0 43 30 74.5t75 31.5h259q43 0 74.5 -30.5t31.5 -75.5v-271zM482 191v297q0 34 -37 34h-280q-36 0 -36 -37v-288q0 -16 12 -28t26 -12h278q37 0 37 34zM414 274q0 -29 -19.5 -48.5t-47.5 -19.5 +h-88q-29 0 -48 19.5t-19 48.5v128q0 28 19 47.5t48 19.5h88q28 0 47.5 -19t19.5 -48v-21h-52v16q0 20 -21 20h-79q-18 0 -18 -21v-115q0 -23 21 -23h76q21 0 21 20v17h52v-21z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="348" +d="M133 580l1 1h80l1 22q0 5 -4 7h-72q-6 0 -6 -6v-24zM61 330v53h61q-27 4 -44 24.5t-17 46.5v54q0 50 46 68h-46v33q0 31 21.5 52t51.5 21h80q31 0 52 -21.5t21 -51.5v-155q0 -28 -17.5 -47.5t-43.5 -23.5h60v-53h-225zM215 502q0 5 -4 7h-72q-6 0 -6 -5v-45q0 -5 5 -5h70 +q7 0 7 7v41z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="565" +d="M504 85l-232 150v76l232 150l29 -29l-159 -160l159 -158zM323 85l-233 150v76l233 150l29 -29l-159 -160l159 -158z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="511" +d="M329 -3v161h-245v91h336v-252h-91z" /> + <glyph glyph-name="hyphen" unicode="­" +d="M101 198v107h296v-107h-296z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="624" +d="M538 203q0 -45 -30.5 -75.5t-73.5 -30.5h-258q-46 0 -76 30t-30 76v268q0 44 30.5 75.5t75.5 31.5h258q43 0 73.5 -30.5t30.5 -76.5v-268zM481 191v295q0 14 -11.5 23t-26.5 9h-279q-34 0 -34 -36v-286q0 -16 11.5 -28t24.5 -12h277q15 0 26.5 9.5t11.5 25.5zM412 205 +h-52v70q0 20 -18 20h-99v-90h-52v261h155q27 0 46.5 -19.5t19.5 -45.5v-39q0 -23 -12 -42q12 -21 12 -39v-76zM360 369v25q0 22 -18 22h-99v-69h97q20 0 20 22z" /> + <glyph glyph-name="macron" unicode="¯" +d="M59 692v80h378v-80h-378z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="305" +d="M194 494h-88q-20 0 -33.5 14t-13.5 35v89q0 19 13.5 34.5t33.5 15.5h88q20 0 33.5 -14.5t13.5 -35.5v-89q0 -20 -13.5 -34.5t-33.5 -14.5zM181 556v64h-61v-64h61z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M59 16v107h135v134h-135v107h135v135h107v-135h136v-107h-136v-134h136v-107h-378z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="420" +d="M355 280v107h-86v-19h-117v55q0 11 12 11h99q18 0 35 7t29.5 19.5t20 29t7.5 36.5v64q0 19 -7 36t-19.5 29.5t-29.5 19.5t-36 7h-106q-18 0 -35 -7t-29.5 -19.5t-20 -29.5t-7.5 -36v-39h87v34q0 11 12 11h93q12 0 12 -13v-53q0 -9 -13 -9h-99q-18 0 -35 -7t-29.5 -20 +t-20 -30t-7.5 -36v-148h290z" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="420" +d="M264 280q10 0 28 5t35 22t22 35t5 28v73q0 21 -6.5 32t-15.5 17q8 6 15 17t7 31v52q0 16 -6.5 33t-18.5 30q-16 17 -35.5 22t-29.5 5h-110q-17 0 -34.5 -7.5t-28.5 -18.5q-9 -10 -17.5 -27t-8.5 -37v-41h86v33q0 4 1.5 7.5t10.5 3.5h94q4 0 7.5 -1.5t3.5 -10.5v-51 +q0 -3 -2.5 -7t-10.5 -4h-63v-87h63q4 0 8.5 -1.5t4.5 -9.5v-44q0 -8 -4.5 -9.5t-6.5 -1.5h-94q-9 0 -10.5 4t-1.5 6v17q0 16 -13 24.5t-30 8.5q-22 0 -32.5 -11.5t-10.5 -21.5v-45q0 -13 8 -27.5t18 -22.5q11 -9 28.5 -14.5t34.5 -5.5h110z" /> + <glyph glyph-name="acute" unicode="´" +d="M140 690l-31 33l218 148l75 -100z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="595" +d="M447 -3q-35 0 -65 20q-29 -20 -64 -20h-142q-7 0 -10 1v-177h-107v684h107v-380q0 -20 18 -20h124q21 0 21 18v382h108v-382q0 -18 19 -18h70v-108h-79z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="528" +d="M369 -179v753h-31v-753h-91v471h-92q-40 0 -68 34.5t-28 83.5v153q0 47 27 83t69 36h305v-861h-91z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="300" +d="M88 192v119h119v-119h-119z" /> + <glyph glyph-name="periodcentered" unicode="∙" horiz-adv-x="300" +d="M88 192v119h119v-119h-119z" /> + <glyph glyph-name="cedilla" unicode="¸" +d="M307 -179h-93q-26 0 -45 18t-19 46v29h65v-25q0 -3 3 -3h87q1 1 2 3v32q-1 3 -5 3h-28q-26 0 -45 18.5t-19 45.5v41h65v-38q0 -1 3 -2h29q26 0 45.5 -18.5t19.5 -45.5v-40q0 -27 -18.5 -45.5t-46.5 -18.5z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="252" +d="M181 280v402h-122v-86h35v-316h87z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="348" +d="M61 330v53h59q-27 4 -43.5 23.5t-16.5 47.5v155q0 30 21 51.5t52 21.5h80q29 0 51 -21.5t22 -51.5v-155q0 -28 -17.5 -47.5t-43.5 -23.5h61v-53h-225zM214 604q0 6 -7 6h-71q-4 -2 -4 -7v-142q0 -7 6 -7h69q5 0 7 4v146z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="565" +d="M231 85l-29 29l159 158l-159 160l29 29l234 -150v-76zM50 85l-29 29l159 158l-159 160l29 29l234 -150v-76z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="736" +d="M181 280v402h-122v-86h35v-316h87zM504 664l-63 34l-350 -684l63 -33zM665 -4v402h-86v-188h-112v76l35 35q2 2 3.5 4.5t1.5 9.5q0 9 -6 19t-15 18t-19.5 13.5t-18.5 5.5q-7 0 -9.5 -1.5t-4.5 -3.5l-53 -53v-210h198v-127h86z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="736" +d="M375 -4v148q0 39 27.5 66t64.5 27h99q13 0 13 9v53q0 13 -12 13h-93q-12 0 -12 -11v-34h-87v39q0 39 27.5 65.5t64.5 26.5h106q39 0 65.5 -27t26.5 -65v-64q0 -39 -27.5 -65.5t-64.5 -26.5h-99q-12 0 -12 -11v-55h117v19h86v-107h-290zM154 -19l-63 33l350 684l63 -34z +M94 280v316h-35v86h122v-402h-87z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="872" +d="M640 664l-63 34l-350 -684l63 -33zM801 -4v404h-86v-188h-112v76l35 35q2 2 3.5 4.5t1.5 9.5q0 9 -6 19t-15 18t-19.5 13.5t-18.5 5.5q-7 0 -9.5 -1.5t-4.5 -3.5l-53 -53v-210h198v-129h86zM258 280q10 0 28 5t35 22t22 35t5 28v73q0 21 -6.5 32t-15.5 17q8 6 15 17t7 31 +v52q0 16 -6.5 33t-18.5 30q-16 17 -35.5 22t-29.5 5h-110q-17 0 -34.5 -7.5t-28.5 -18.5q-9 -10 -17.5 -27t-8.5 -37v-41h86v33q0 4 1.5 7.5t10.5 3.5h94q4 0 7.5 -1.5t3.5 -10.5v-51q0 -3 -2.5 -7t-10.5 -4h-63v-87h63q4 0 8.5 -1.5t4.5 -9.5v-44q0 -8 -4.5 -9.5t-6.5 -1.5 +h-94q-9 0 -10.5 4t-1.5 6v17q0 16 -13 24.5t-30 8.5q-22 0 -32.5 -11.5t-10.5 -21.5v-45q0 -13 8 -27.5t18 -22.5q11 -9 28.5 -14.5t34.5 -5.5h110z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="542" +d="M237 386v119h120v-119h-120zM354 -179h-178q-50 0 -83.5 35t-33.5 83v130q0 50 34.5 84.5t82.5 34.5h40q21 0 21 17v136h120v-155q0 -50 -35.5 -83.5t-83.5 -33.5h-40q-20 0 -20 -19v-89q0 -21 17 -21h138q21 0 21 18v53h119v-72q0 -50 -35 -84t-84 -34z" /> + <glyph glyph-name="Agrave" unicode="À" +d="M355 690l-263 81l76 100l217 -148zM329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="Aacute" unicode="Á" +d="M140 690l-31 33l218 148l75 -100zM329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="Acircumflex" unicode="Â" +d="M351 686l-104 102l-102 -102l-57 57l127 127h65l127 -127zM329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="Atilde" unicode="Ã" +d="M345 692h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h44q29 0 49 -16q9 -7 33 -37q14 -17 28 -17h34q10 0 10 7v39h80v-42q0 -36 -24.5 -60t-59.5 -24zM329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142 +q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="Adieresis" unicode="Ä" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM329 -3v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h142 +q48 0 83.5 -34.5t35.5 -84.5v-566h-108zM329 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="Aring" unicode="Å" +d="M247 692q-40 0 -68.5 28.5t-28.5 68.5q0 41 28 69.5t69 28.5t69.5 -28.5t28.5 -69.5q0 -40 -29 -68.5t-69 -28.5zM247 829q-37 0 -39 -40q4 -36 39 -39q35 3 39 39q-2 40 -39 40zM328 -3v248h-163v-248h-108v566q0 50 35 84.5t83 34.5h141q49 0 84 -34.5t35 -84.5v-566 +h-107zM328 556q0 18 -21 18h-122q-20 0 -20 -18v-204h163v204z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="780" +d="M694 -3h-365v248h-163v-248h-107v566q0 50 34.5 84.5t82.5 34.5h531v-108h-270v-163h212v-107h-212v-199h257q18 0 28.5 -17t10.5 -37t-10.5 -37t-28.5 -17zM329 574h-143q-20 0 -20 -18v-204h163v222z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" +d="M318 -3h-43v-6q0 -1 3 -2h29q26 0 45.5 -18.5t19.5 -45.5v-40q0 -27 -18.5 -45.5t-46.5 -18.5h-93q-26 0 -45 18t-19 46v29h65v-25q0 -3 3 -3h87q1 1 2 3v32q-1 3 -5 3h-28q-26 0 -45 18.5t-19 45.5v9h-34q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142 +q48 0 83.5 -34.5t35.5 -84.5v-47h-108v40q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v41h108v-48q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Egrave" unicode="È" +d="M355 690l-263 81l76 100l217 -148zM59 -3v685h378v-108h-271v-163h213v-107h-213v-199h271v-108h-378z" /> + <glyph glyph-name="Eacute" unicode="É" +d="M140 690l-31 33l218 148l75 -100zM59 -3v685h378v-108h-271v-163h213v-107h-213v-199h271v-108h-378z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" +d="M351 686l-104 102l-102 -102l-57 57l127 127h65l127 -127zM59 -3v685h378v-108h-271v-163h213v-107h-213v-199h271v-108h-378z" /> + <glyph glyph-name="Edieresis" unicode="Ë" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM59 -3v685h378v-108h-271v-163h213v-107h-213v-199h271v-108h-378z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="276" +d="M208 690l-263 81l76 100l217 -148zM82 -3v685h107v-685h-107z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="276" +d="M64 690l-30 33l217 148l76 -100zM82 -3v685h107v-685h-107z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="276" +d="M245 686l-104 102l-102 -102l-57 57l127 127h65l128 -127zM88 -3v685h107v-685h-107z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="276" +d="M169 761q0 28 20.5 48.5t48.5 20.5t48.5 -20.5t20.5 -48.5t-20.5 -48.5t-48.5 -20.5t-48.5 20.5t-20.5 48.5zM-31 761q0 28 20.5 48.5t48.5 20.5t48.5 -20.5t20.5 -48.5t-20.5 -48.5t-48.5 -20.5t-48.5 20.5t-20.5 48.5zM84 -3v685h108v-685h-108z" /> + <glyph glyph-name="Eth" unicode="Ð" +d="M329 123q0 -18 -21 -18h-142v199h70v107h-70v163h142q21 0 21 -18v-433zM318 -3q49 0 83 34q36 34 36 85v447q0 49 -36 84q-35 35 -83 35h-259v-271h-59v-107h59v-307h259z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" +d="M345 692h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h44q29 0 49 -16q9 -7 33 -37q14 -17 28 -17h34q10 0 10 7v39h80v-42q0 -36 -24.5 -60t-59.5 -24zM311 -3l-145 402v-402h-107v685h118l152 -419v419h108v-685h-126z +" /> + <glyph glyph-name="Ograve" unicode="Ò" +d="M355 690l-263 81l76 100l217 -148zM318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="Oacute" unicode="Ó" +d="M140 690l-31 33l218 148l75 -100zM318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" +d="M351 686l-104 102l-102 -102l-57 57l127 127h65l127 -127zM318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122 +q21 0 21 18v433z" /> + <glyph glyph-name="Otilde" unicode="Õ" +d="M345 692h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h44q29 0 49 -16q9 -7 33 -37q14 -17 28 -17h34q10 0 10 7v39h80v-42q0 -36 -24.5 -60t-59.5 -24zM318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142 +q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="Odieresis" unicode="Ö" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM318 -3h-142q-51 0 -84 34t-33 85v447q0 48 33.5 83.5t83.5 35.5h142 +q48 0 83.5 -34.5t35.5 -84.5v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM329 556q0 18 -21 18h-124q-18 0 -18 -20v-426q0 -23 20 -23h122q21 0 21 18v433z" /> + <glyph glyph-name="multiply" unicode="×" +d="M440 367l-76 76l-116 -116l-116 116l-76 -76l116 -116l-116 -115l76 -76l116 116l116 -116l76 76l-116 115z" /> + <glyph glyph-name="Oslash" unicode="Ø" +d="M318 -3h-142q-14 0 -25 3l-12 -30l-67 27l15 38q-28 32 -28 81v447q0 48 33.5 83.5t83.5 35.5h142q14 0 29 -5l13 31l68 -26l-19 -43q28 -33 28 -76v-447q0 -50 -35.5 -84.5t-83.5 -34.5zM305 574h-121q-18 0 -18 -20v-326zM192 105h116q21 0 21 18v316z" /> + <glyph glyph-name="Ugrave" unicode="Ù" +d="M355 690l-263 81l76 100l217 -148zM318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h122q21 0 21 18v559h108v-566q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Uacute" unicode="Ú" +d="M140 690l-31 33l218 148l75 -100zM318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h122q21 0 21 18v559h108v-566q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" +d="M320 686l-104 102l-102 -102l-57 57l127 127h66l127 -127zM318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h122q21 0 21 18v559h108v-566q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Udieresis" unicode="Ü" +d="M278 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM78 761q0 29 20 49t49 20t49 -20.5t20 -48.5q0 -29 -20.5 -49t-49.5 -20q-28 0 -48 20t-20 49zM318 -3h-142q-48 0 -82.5 34.5t-34.5 84.5v566h107v-559q0 -18 20 -18h122 +q21 0 21 18v559h108v-566q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="482" +d="M307 304q49 0 83 34q36 34 36 84v260h-108v-253q0 -18 -21 -18h-122q-20 0 -20 18v253h-107v-260q0 -50 34 -84t83 -34h19v-307h107v307h16zM426 771l-75 100l-218 -148l31 -33z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="499" +d="M329 314q0 -23 -21 -23h-142v163h145q18 0 18 -20v-120zM318 184q25 0 47 9t38 24.5t25 37t9 47.5v141q0 48 -35 83q-35 36 -84 36h-152v120h-107v-685h107v187h152z" /> + <glyph glyph-name="germandbls" unicode="ß" +d="M318 -3h-125v108h115q21 0 21 23v102q0 18 -42 37q-87 38 -87 105q0 62 67 128q25 23 25 32v22q0 20 -19 20h-87q-20 0 -20 -18v-693h-107v700q0 50 34.5 84.5t82.5 34.5h104q50 0 84.5 -35.5t34.5 -83.5v-17q0 -45 -26 -79l-56 -60q-15 -16 -15 -25q0 -16 34 -28 +q101 -37 101 -124v-114q0 -51 -34 -85t-85 -34z" /> + <glyph glyph-name="agrave" unicode="à" +d="M355 525l-263 82l76 99l217 -148zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201 +q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="aacute" unicode="á" +d="M138 525l-30 33l217 148l76 -99zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201 +q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="acircumflex" unicode="â" +d="M351 521l-104 103l-102 -103l-57 57l127 127h65l127 -127zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5 +t-83.5 -34.5zM320 201q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="atilde" unicode="ã" +d="M345 527h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v42q0 36 25 59.5t60 23.5h44q29 0 48 -16q10 -7 34 -36q14 -17 28 -17h34q10 0 10 7v39h80v-43q0 -36 -24.5 -60t-59.5 -24zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5 +t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="adieresis" unicode="ä" +d="M278 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM78 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94 +q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="aring" unicode="å" +d="M247 527q-40 0 -68.5 28.5t-28.5 68.5q0 41 28 69.5t69 28.5t69.5 -28.5t28.5 -69.5q0 -40 -29 -68.5t-69 -28.5zM247 664q-37 0 -39 -40q4 -35 39 -39q35 4 39 39q-2 40 -39 40zM309 -3h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49 +q0 21 -18 21h-157q-18 0 -28.5 16.5t-10.5 36.5t10.5 37t28.5 17h164q50 0 84.5 -35t34.5 -84v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM320 201q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="780" +d="M437 198v-73q0 -20 17 -20h252v-47q0 -45 -42 -56q-16 -5 -76 -5h-141q-35 0 -65 19q-29 -19 -64 -19h-142q-50 0 -83.5 35t-33.5 84v94q0 50 34.5 84.5t82.5 34.5h142q7 0 11 -1v49q0 21 -18 21h-156q-18 0 -28.5 17t-10.5 36q0 20 10.5 37t28.5 17h163q36 0 64 -20 +q29 20 65 20h141q50 0 84.5 -35t34.5 -84v-188h-270zM600 377q0 21 -19 21h-125q-19 0 -19 -23v-70h163v72zM329 201q0 21 -18 21h-125q-20 0 -20 -19v-78q0 -20 18 -20h124q21 0 21 23v73z" /> + <glyph glyph-name="ccedilla" unicode="ç" +d="M318 -3h-43v-6q0 -1 3 -2h29q26 0 45.5 -18.5t19.5 -45.5v-40q0 -27 -18.5 -45.5t-46.5 -18.5h-93q-26 0 -45 18t-19 46v29h65v-25q0 -3 3 -3h87q1 1 2 3v32q-1 3 -5 3h-28q-26 0 -45 18.5t-19 45.5v9h-34q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142 +q48 0 83.5 -34t35.5 -85v-47h-108v40q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v41h108v-48q0 -50 -35.5 -84.5t-83.5 -34.5z" /> + <glyph glyph-name="egrave" unicode="è" +d="M355 525l-263 82l76 99l217 -148zM221 198q-18 0 -28 16.5t-10 36.5t10 37t29 17h107v72q0 21 -18 21h-125q-20 0 -20 -23v-250q0 -20 18 -20h247v-44q0 -46 -39 -58q-17 -6 -74 -6h-142q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h142q50 0 84.5 -35t34.5 -84 +v-188h-216z" /> + <glyph glyph-name="eacute" unicode="é" +d="M138 525l-30 33l217 148l76 -99zM221 198q-18 0 -28 16.5t-10 36.5t10 37t29 17h107v72q0 21 -18 21h-125q-20 0 -20 -23v-250q0 -20 18 -20h247v-44q0 -46 -39 -58q-17 -6 -74 -6h-142q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h142q50 0 84.5 -35t34.5 -84 +v-188h-216z" /> + <glyph glyph-name="ecircumflex" unicode="ê" +d="M351 521l-104 103l-102 -103l-57 57l127 127h65l127 -127zM221 198q-18 0 -28 16.5t-10 36.5t10 37t29 17h107v72q0 21 -18 21h-125q-20 0 -20 -23v-250q0 -20 18 -20h247v-44q0 -46 -39 -58q-17 -6 -74 -6h-142q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h142 +q50 0 84.5 -35t34.5 -84v-188h-216z" /> + <glyph glyph-name="edieresis" unicode="ë" +d="M278 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM78 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM221 198q-18 0 -28 16.5t-10 36.5t10 37t29 17 +h107v72q0 21 -18 21h-125q-20 0 -20 -23v-250q0 -20 18 -20h247v-44q0 -46 -39 -58q-17 -6 -74 -6h-142q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h142q50 0 84.5 -35t34.5 -84v-188h-216z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="276" +d="M208 525l-263 82l76 99l217 -148zM160 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="276" +d="M62 525l-30 33l217 148l76 -99zM160 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="276" +d="M240 521l-104 103l-102 -103l-57 57l127 127h66l127 -127zM181 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="276" +d="M167 595q0 29 20 49.5t48 20.5q29 0 50 -20t21 -49t-21 -49t-49 -20t-48.5 20t-20.5 48zM-33 595q0 29 20 49.5t48 20.5q29 0 50 -20t21 -49t-21 -49t-49 -20t-48.5 20t-20.5 48zM172 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42 +t-39 -19z" /> + <glyph glyph-name="eth" unicode="ð" +d="M319 -3q49 0 83 34q35 35 35 85v389l-61 68h61v72h-127l-33 37h-107l33 -37h-109v-72h175l61 -68v-377q0 -23 -21 -23h-125q-17 0 -17 20v254q0 19 20 19h88q18 0 28 16.5t10 36.5q0 54 -37 54h-99q-49 0 -83 -34q-35 -35 -35 -85v-270q0 -50 34 -84q35 -35 84 -35h142z +" /> + <glyph glyph-name="ntilde" unicode="ñ" +d="M345 527h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v42q0 36 25 59.5t60 23.5h44q29 0 48 -16q10 -7 34 -36q14 -17 28 -17h34q10 0 10 7v39h80v-43q0 -36 -24.5 -60t-59.5 -24zM329 -3v382q0 19 -21 19h-142v-401h-107v508h259q48 0 83.5 -34 +t35.5 -85v-389h-108z" /> + <glyph glyph-name="ograve" unicode="ò" +d="M355 525l-263 82l76 99l217 -148zM318 -3h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="oacute" unicode="ó" +d="M138 525l-30 33l217 148l76 -99zM318 -3h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="ocircumflex" unicode="ô" +d="M351 521l-104 103l-102 -103l-57 57l127 127h65l127 -127zM318 -3h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256 +z" /> + <glyph glyph-name="otilde" unicode="õ" +d="M345 527h-44q-30 0 -50 15q-10 8 -32 38q-13 18 -28 18h-35q-9 0 -9 -9v-37h-81v42q0 36 25 59.5t60 23.5h44q29 0 48 -16q10 -7 34 -36q14 -17 28 -17h34q10 0 10 7v39h80v-43q0 -36 -24.5 -60t-59.5 -24zM318 -3h-142q-51 0 -84 34t-33 85v270q0 49 33.5 84t83.5 35 +h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="odieresis" unicode="ö" +d="M278 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM78 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM318 -3h-142q-51 0 -84 34t-33 85v270 +q0 49 33.5 84t83.5 35h142q48 0 83.5 -34t35.5 -85v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM329 379q0 19 -21 19h-124q-18 0 -18 -21v-249q0 -23 20 -23h122q21 0 21 18v256z" /> + <glyph glyph-name="divide" unicode="÷" +d="M188 322v119h119v-119h-119zM59 198v107h378v-107h-378zM188 63v119h119v-119h-119z" /> + <glyph glyph-name="oslash" unicode="ø" +d="M318 -3h-142q-15 0 -26 3l-19 -31l-62 36l18 31q-28 32 -28 80v270q0 49 33.5 84t83.5 35h142q19 0 37 -6l19 34l63 -36l-23 -41q23 -31 23 -70v-270q0 -50 -35.5 -84.5t-83.5 -34.5zM166 172l129 226h-111q-18 0 -18 -21v-205zM329 310l-119 -205h98q21 0 21 18v187z +" /> + <glyph glyph-name="ugrave" unicode="ù" +d="M355 525l-263 82l76 99l217 -148zM176 -3q-48 0 -82.5 34.5t-34.5 84.5v389h107v-382q0 -18 20 -18h143v400h108v-508h-261z" /> + <glyph glyph-name="uacute" unicode="ú" +d="M138 525l-30 33l217 148l76 -99zM176 -3q-48 0 -82.5 34.5t-34.5 84.5v389h107v-382q0 -18 20 -18h143v400h108v-508h-261z" /> + <glyph glyph-name="ucircumflex" unicode="û" +d="M351 521l-104 103l-102 -103l-57 57l127 127h65l127 -127zM176 -3q-48 0 -82.5 34.5t-34.5 84.5v389h107v-382q0 -18 20 -18h143v400h108v-508h-261z" /> + <glyph glyph-name="udieresis" unicode="ü" +d="M278 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM78 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM176 -3q-48 0 -82.5 34.5t-34.5 84.5v389h107 +v-382q0 -18 20 -18h143v400h108v-508h-261z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="502" +d="M242 -70l-46 -38q-14 -12 -14 -30q0 -21 16 -38.5t35 -17.5q13 0 24 8l89 70l132 621h-115l-84 -405q-109 7 -109 173l1 232h-114l1 -233q0 -137 63 -210q52 -62 135 -64zM478 607l-76 99l-217 -148l30 -33z" /> + <glyph glyph-name="thorn" unicode="þ" +d="M318 -5q32 0 52 11.5t31 22.5q23 23 29.5 44t6.5 41v272q0 24 -9.5 46t-25.5 38t-38 25.5t-46 9.5h-152v177h-107v-864h107v579h145q7 0 12.5 -4t5.5 -17v-255q0 -7 -4 -12.5t-17 -5.5h-88q-14 0 -26 -13.5t-12 -40.5q0 -20 5 -31t11 -16t12 -6t9 -1h99z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" +d="M298 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM98 595q0 29 20 49.5t48 20.5q29 0 49.5 -20.5t20.5 -48.5q0 -29 -20.5 -49t-48.5 -20q-29 0 -49 20t-20 48zM256 -2q-82 1 -135 64q-63 74 -63 210l-1 233 +h114l-1 -232q0 -166 109 -173l84 405h115l-132 -621l-89 -70q-11 -8 -24 -8q-19 0 -35 17.5t-16 38.5q0 18 14 30l46 38z" /> + <glyph glyph-name=".null" horiz-adv-x="0" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="300" + /> + <glyph glyph-name="notequal" +d="M228 122l-45 -112l-66 27l34 85h-92v107h135l18 45h-153v108h197l48 118l66 -27l-37 -91h104v-108h-148l-18 -45h166v-107h-209z" /> + <glyph glyph-name="infinity" horiz-adv-x="624" +d="M472 125q-21 -42 -66 -42q-32 0 -57 24l-51 50l-9 -19q-22 -44 -66 -44q-31 0 -57 25l-36 33q-42 38 -42 96q0 28 13 53l41 80q23 44 66 44q30 0 56 -25l36 -36l9 17q21 44 66 44q31 0 58 -25l50 -45q42 -37 42 -97q0 -28 -12 -52zM431 282q-42 39 -46 39t-7 -5l-39 -78 +l38 -40q13 -14 19 -14t15 18q13 28 27 56q8 15 -7 24zM222 320q-7 8 -13 -3l-18 -30q-15 -27 -15 -44q0 -12 7 -19l24 -24q8 -6 13 3l40 79z" /> + <glyph glyph-name="lessequal" horiz-adv-x="381" +d="M62 16v107h170l-170 169v67l176 176l76 -77l-132 -133l132 -133l-70 -69h65v-107h-247z" /> + <glyph glyph-name="greaterequal" horiz-adv-x="381" +d="M66 16v107h64l-70 69l133 133l-133 133l76 77l177 -176v-67l-171 -169h171v-107h-247z" /> + <glyph glyph-name="partialdiff" horiz-adv-x="479" +d="M294 -3h-118q-50 0 -83.5 35t-33.5 84v270q0 51 34.5 85t82.5 34h118q7 0 12 -1v50q0 20 -19 20h-123v108h130q50 0 84.5 -35.5t34.5 -83.5v-447q0 -50 -35 -84.5t-84 -34.5zM306 377q0 21 -19 21h-101q-20 0 -20 -19v-254q0 -20 18 -20h101q7 0 14 7t7 16v249z" /> + <glyph glyph-name="summation" horiz-adv-x="554" +d="M59 -3v77l223 265l-223 266v77h427v-108h-261l197 -235l-196 -234h260v-108h-427z" /> + <glyph glyph-name="product" horiz-adv-x="624" +d="M484 574v-577h-108v577h-139v-577h-108v577h-70v108h495v-108h-70z" /> + <glyph glyph-name="pi" horiz-adv-x="624" +d="M484 398v-401h-108v401h-139v-401h-108v401h-70v107h495v-107h-70z" /> + <glyph glyph-name="integral" horiz-adv-x="576" +d="M400 598v40q0 19 -21 19h-25q-17 0 -17 -21v-697q0 -48 -34.5 -83t-84.5 -35h-42q-48 0 -82.5 34t-34.5 84v48h107v-41q0 -18 20 -18h25q18 0 18 21v696q0 49 34 84t84 35h41q49 0 84 -34.5t35 -84.5v-47h-107z" /> + <glyph glyph-name="Omega" horiz-adv-x="756" +d="M421 -3v108q33 0 33 18v433q0 18 -21 18h-125q-17 0 -17 -20v-426q0 -23 33 -23v-108h-264v182h107v-74h16v11v447q0 48 34 83.5t84 35.5h141q49 0 84 -34.5t35 -84.5v-447q0 -5 -1 -11h17v74h108v-182h-264z" /> + <glyph glyph-name="radical" horiz-adv-x="594" +d="M223 -164l-209 297l88 62l103 -145l343 738h120z" /> + <glyph glyph-name="approxequal" horiz-adv-x="524" +d="M372 279h-74q-27 0 -44 16q-6 5 -28 38q-11 17 -26 17h-51q-9 0 -9 -9v-37h-81v41q0 36 25 60t60 24h75q34 0 57 -35t38 -35h52q10 0 10 7v39h81v-42q0 -36 -25 -60t-60 -24zM372 119h-74q-27 0 -44 16q-6 5 -28 38q-11 17 -26 17h-51q-9 0 -9 -9v-37h-81v41q0 36 25 60 +t60 24h75q34 0 57 -35t38 -35h52q10 0 10 7v39h81v-42q0 -36 -25 -60t-60 -24z" /> + <glyph glyph-name="lozenge" horiz-adv-x="582" +d="M314 -179h-58l-201 430l201 431h58l200 -431zM285 491l-112 -240l112 -240l112 240z" /> + <glyph glyph-name="fraction" horiz-adv-x="821" +d="M274 -19l-63 33l350 684l63 -34z" /> + <glyph glyph-name="dotlessi" horiz-adv-x="257" +d="M160 -8q-24 0 -54 30q-22 24 -43 49l-1 434h108v-390l39 -39q9 -9 9 -23q0 -23 -19 -42t-39 -19z" /> + <glyph glyph-name="breve" +d="M341 692h-189q-36 0 -59.5 24.5t-23.5 59.5v66h79v-60q0 -10 8 -10h179q11 0 11 7v63h80v-66q0 -36 -25 -60t-60 -24z" /> + <glyph glyph-name="dotaccent" +d="M247 692q-28 0 -48 20t-20 49q-1 28 19 48.5t49 20.5t49.5 -20.5t19.5 -48.5q0 -29 -20.5 -49t-48.5 -20z" /> + <glyph glyph-name="ring" +d="M247 692q-40 0 -68.5 28.5t-28.5 68.5q0 41 28 69.5t69 28.5t69.5 -28.5t28.5 -69.5q0 -40 -29 -68.5t-69 -28.5zM247 829q-37 0 -39 -40q4 -36 39 -39q35 3 39 39q-2 40 -39 40z" /> + <glyph glyph-name="hungarumlaut" +d="M83 656l-40 20l154 214l104 -67l48 67l105 -67l-219 -167l-40 20l104 145z" /> + <glyph glyph-name="ogonek" +d="M307 -179h-93q-27 0 -45.5 19t-18.5 45v40q0 27 19 45.5t45 18.5h30q2 1 3 2v38h65v-41q0 -27 -19.5 -45.5t-45.5 -18.5h-28q-3 0 -4 -3v-32q0 -2 1 -3h88q3 0 3 3v25h65v-29q0 -28 -19.5 -46t-45.5 -18z" /> + <glyph glyph-name="caron" +d="M280 692h-65l-127 126l57 57l102 -102l104 102l56 -57z" /> + <glyph glyph-name="minus" +d="M437 198v107h-378v-107h378z" /> + <glyph glyph-name="fi" horiz-adv-x="548" +d="M190 554q3 4 8 6l86 41q8 13 9.5 22t1.5 17q0 14 -2.5 27.5t-13.5 45.5l-116 -49q-30 -13 -55 -40.5t-25 -60.5v-136h-40v-104h40v-326h107v326h163v-252l44 -49q6 -7 20 -18.5t34 -11.5q21 0 39.5 18.5t18.5 42.5q0 8 -3 14t-6 9l-39 39v390h-108v-78h-163v127zM337 595 +q0 -29 20.5 -49t47.5 -20q28 0 49 20t21 49q0 27 -20 48t-49 21t-49 -20t-20 -49z" /> + <glyph glyph-name="fl" horiz-adv-x="556" +d="M190 554q3 4 8 6l86 41q8 13 9.5 22t1.5 17q0 14 -2.5 27.5t-13.5 45.5l-116 -49q-30 -13 -55 -40.5t-25 -60.5v-136h-40v-104h40v-326h107v326h163v-252l44 -49q6 -7 20 -18.5t34 -11.5q21 0 39.5 18.5t18.5 42.5q0 8 -3 14t-6 9l-39 39v567h-108v-255h-163v127z" /> + <glyph glyph-name="Lslash" horiz-adv-x="456" +d="M376 -3q18 0 28.5 17t10.5 37t-10.5 37t-28.5 17h-210v229l96 63v108l-96 -63v240h-107v-311l-59 -39v-108l59 39v-266h317z" /> + <glyph glyph-name="lslash" horiz-adv-x="262" +d="M167 115v237l59 45v108l-59 -45v222h-108v-304l-59 -45v-108l59 45v-199l44 -49q6 -7 20 -18.5t34 -11.5q21 0 39.5 18.5t18.5 42.5q0 8 -3 14t-6 9z" /> + <glyph glyph-name="Delta" horiz-adv-x="682" +d="M658 0l-265 682h-108l-261 -682h634zM339 510l148 -402h-296z" /> + <hkern u1="A" u2="T" k="24" /> + <hkern u1="C" u2="N" k="24" /> + <hkern u1="E" u2="v" k="24" /> + <hkern u1="F" u2="å" k="30" /> + <hkern u1="F" u2="ä" k="30" /> + <hkern u1="F" u2="y" k="30" /> + <hkern u1="F" u2="u" k="30" /> + <hkern u1="F" u2="t" k="30" /> + <hkern u1="F" u2="r" k="30" /> + <hkern u1="F" u2="o" k="30" /> + <hkern u1="F" u2="i" k="20" /> + <hkern u1="F" u2="e" k="30" /> + <hkern u1="F" u2="a" k="30" /> + <hkern u1="F" u2=";" k="47" /> + <hkern u1="F" u2=":" k="47" /> + <hkern u1="F" u2="." k="118" /> + <hkern u1="F" u2="," k="118" /> + <hkern u1="I" u2="J" k="31" /> + <hkern u1="L" u2="y" k="35" /> + <hkern u1="L" u2="u" k="12" /> + <hkern u1="L" u2="Y" k="106" /> + <hkern u1="L" u2="V" k="71" /> + <hkern u1="L" u2="U" k="24" /> + <hkern u1="L" u2="T" k="71" /> + <hkern u1="L" u2="O" k="12" /> + <hkern u1="L" u2="G" k="12" /> + <hkern u1="L" u2="F" k="12" /> + <hkern u1="L" u2="C" k="35" /> + <hkern u1="L" u2="'" k="118" /> + <hkern u1="N" u2="Y" k="24" /> + <hkern u1="N" u2="T" k="24" /> + <hkern u1="O" u2="Y" k="12" /> + <hkern u1="O" u2="T" k="24" /> + <hkern u1="P" u2="å" k="35" /> + <hkern u1="P" u2="ä" k="35" /> + <hkern u1="P" u2="e" k="35" /> + <hkern u1="P" u2="a" k="35" /> + <hkern u1="P" u2="A" k="24" /> + <hkern u1="P" u2=";" k="35" /> + <hkern u1="P" u2=":" k="35" /> + <hkern u1="P" u2="." k="153" /> + <hkern u1="P" u2="," k="153" /> + <hkern u1="S" u2="T" k="35" /> + <hkern u1="T" u2="å" k="70" /> + <hkern u1="T" u2="ä" k="70" /> + <hkern u1="T" u2="y" k="71" /> + <hkern u1="T" u2="w" k="70" /> + <hkern u1="T" u2="u" k="71" /> + <hkern u1="T" u2="s" k="71" /> + <hkern u1="T" u2="r" k="71" /> + <hkern u1="T" u2="o" k="70" /> + <hkern u1="T" u2="i" k="50" /> + <hkern u1="T" u2="e" k="70" /> + <hkern u1="T" u2="c" k="71" /> + <hkern u1="T" u2="a" k="70" /> + <hkern u1="T" u2="O" k="24" /> + <hkern u1="T" u2="N" k="24" /> + <hkern u1="T" u2="C" k="24" /> + <hkern u1="T" u2="A" k="24" /> + <hkern u1="T" u2=";" k="59" /> + <hkern u1="T" u2=":" k="59" /> + <hkern u1="T" u2="." k="106" /> + <hkern u1="T" u2="," k="106" /> + <hkern u1="V" u2="." k="59" /> + <hkern u1="V" u2="," k="59" /> + <hkern u1="Y" u2="u" k="12" /> + <hkern u1="Y" u2="p" k="24" /> + <hkern u1="Y" u2="i" k="24" /> + <hkern u1="Y" u2="e" k="24" /> + <hkern u1="Y" u2="d" k="24" /> + <hkern u1="Y" u2="O" k="24" /> + <hkern u1="Y" u2="N" k="12" /> + <hkern u1="Y" u2="A" k="24" /> + <hkern u1="Y" u2="." k="94" /> + <hkern u1="Y" u2="," k="94" /> + <hkern u1="Z" u2="O" k="12" /> + <hkern u1="a" u2="f" k="12" /> + <hkern u1="f" u2="å" k="35" /> + <hkern u1="f" u2="ä" k="35" /> + <hkern u1="f" u2="u" k="20" /> + <hkern u1="f" u2="e" k="20" /> + <hkern u1="f" u2="a" k="35" /> + <hkern u1="o" u2="j" k="47" /> + <hkern u1="o" u2="f" k="12" /> + <hkern u1="r" u2="å" k="37" /> + <hkern u1="r" u2="ä" k="37" /> + <hkern u1="r" u2="a" k="37" /> + <hkern u1="r" u2="." k="118" /> + <hkern u1="r" u2="," k="118" /> + <hkern u1="t" u2="z" k="15" /> + <hkern u1="v" u2="." k="47" /> + <hkern u1="v" u2="," k="47" /> + <hkern u1="y" u2="." k="47" /> + <hkern u1="y" u2="," k="47" /> + </font> +</defs></svg> diff --git a/admin/fonts/884a957ee2d127a16ff887ffec407798.ttf b/admin/fonts/884a957ee2d127a16ff887ffec407798.ttf new file mode 100644 index 0000000000000000000000000000000000000000..63d68e8af56aeb88439d12c98d617ddc4ee6473f Binary files /dev/null and b/admin/fonts/884a957ee2d127a16ff887ffec407798.ttf differ diff --git a/admin/fonts/884a957ee2d127a16ff887ffec407798.woff b/admin/fonts/884a957ee2d127a16ff887ffec407798.woff new file mode 100644 index 0000000000000000000000000000000000000000..b406a9a43518a4f1b9a0f81a7f3a44f021383d09 Binary files /dev/null and b/admin/fonts/884a957ee2d127a16ff887ffec407798.woff differ diff --git a/admin/fonts/884a957ee2d127a16ff887ffec407798.woff2 b/admin/fonts/884a957ee2d127a16ff887ffec407798.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ee606d2561346694b4499cb298675517fbb69048 Binary files /dev/null and b/admin/fonts/884a957ee2d127a16ff887ffec407798.woff2 differ diff --git a/admin/fonts/c0a349550b33f079982cf073e98cc67c.eot b/admin/fonts/c0a349550b33f079982cf073e98cc67c.eot new file mode 100644 index 0000000000000000000000000000000000000000..522d3a295d3bcdf2f65cae2490da5cc93f65c327 Binary files /dev/null and b/admin/fonts/c0a349550b33f079982cf073e98cc67c.eot differ diff --git a/admin/fonts/c0a349550b33f079982cf073e98cc67c.svg b/admin/fonts/c0a349550b33f079982cf073e98cc67c.svg new file mode 100644 index 0000000000000000000000000000000000000000..124c94be362f36382ba05379946d0440bd21fa32 --- /dev/null +++ b/admin/fonts/c0a349550b33f079982cf073e98cc67c.svg @@ -0,0 +1,883 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Jul 2 19:22:20 2019 + By www +Copyright (c) 2008 by Mark Simonson. All rights reserved. +</metadata> +<defs> +<font id="RefrigeratorDeluxeW02-Reg" horiz-adv-x="388" > + <font-face + font-family="RefrigeratorDeluxeW02-Reg" + font-weight="400" + font-stretch="normal" + units-per-em="1000" + panose-1="2 1 6 6 2 2 2 5 2 3" + ascent="775" + descent="-225" + x-height="470" + cap-height="700" + bbox="-106 -230 838 929" + underline-thickness="68" + underline-position="-48" + unicode-range="U+000D-FB02" + /> +<missing-glyph horiz-adv-x="0" + /> + <glyph glyph-name=".notdef" horiz-adv-x="0" + /> + <glyph glyph-name=".null" horiz-adv-x="0" + /> + <glyph glyph-name="uni000D" unicode="
" horiz-adv-x="0" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="200" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="222" +d="M61 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM149 175h-75v525h75v-525z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="361" +d="M296 700l-28 -201h-36l-27 201h91zM156 700l-27 -201h-36l-28 201h91z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="513" +d="M165 252h115l65 196h-115zM113 493h84l69 207h48l-69 -207h115l69 207h48l-69 -207h75v-45h-90l-65 -196h72v-45h-87l-68 -207h-48l68 207h-115l-68 -207h-48l68 207h-72v45h87l65 196h-69v45z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="435" +d="M305 244q0 20 -14 27l-172 89q-33 17 -48.5 43.5t-15.5 52.5v54q0 42 29 71t71 29h30v90h65v-90h30q42 0 71 -29t29 -71v-58h-75v58q0 25 -25 25h-125q-25 0 -25 -25v-51q0 -20 14 -27l174 -90q34 -17 48 -40t14 -51v-61q0 -42 -29 -71t-71 -29h-30v-90h-65v90h-30 +q-42 0 -71 29t-29 71v61h75v-61q0 -25 25 -25h125q25 0 25 25v54z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="629" +d="M574 67q0 -28 -20 -47.5t-48 -19.5h-73q-28 0 -48 19.5t-20 47.5v217q0 28 20 47.5t48 19.5h73q28 0 48 -19.5t20 -47.5v-217zM522 284q0 16 -16 16h-73q-16 0 -16 -16v-217q0 -7 4.5 -12t11.5 -5h73q7 0 11.5 5t4.5 12v217zM264 416q0 -28 -20 -47.5t-48 -19.5h-73 +q-28 0 -48 19.5t-20 47.5v217q0 28 20 47.5t48 19.5h73q28 0 48 -19.5t20 -47.5v-217zM454 700l-231 -700h-48l232 700h47zM212 633q0 16 -16 16h-73q-16 0 -16 -16v-217q0 -7 4.5 -12t11.5 -5h73q7 0 11.5 5t4.5 12v217z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="586" +d="M212 75q23 0 31 16l63 126l-117 116l-45 -46q-8 -8 -11 -15.5t-3 -19.5v-152q0 -25 25 -25h57zM360 163l-55 -109q-11 -21 -32 -37.5t-61 -16.5h-57q-42 0 -71 29t-29 71v157q0 25 8 43.5t28 38.5l45 46l-47 47q-14 14 -24 39.5t-10 52.5v76q0 42 29 71t71 29h125 +q42 0 71 -29t29 -71v-87h-75v87q0 25 -25 25h-125q-25 0 -25 -25v-76q0 -26 14 -40l198 -196l65 128h80l-91 -181l190 -188l-54 -54z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="221" +d="M156 700l-27 -201h-36l-28 201h91z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="220" +d="M160 -151q-106 175 -106 476q0 300 106 475h41q-80 -180 -80 -475q0 -296 80 -476h-41z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="220" +d="M60 800q106 -175 106 -476q0 -300 -106 -475h-41q80 180 80 475q0 296 -80 476h41z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="342" +d="M189 525l12 -115h-58l12 115l-94 -68l-29 51l106 47l-106 47l29 51l94 -69l-12 116h58l-12 -116l94 69l29 -51l-106 -47l106 -47l-29 -51z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="460" +d="M430 201h-169v-166h-67v166h-164v67h164v167h67v-167h169v-67z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="182" +d="M141 40q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="271" +d="M241 201h-211v68h211v-68z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="190" +d="M45 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="307" +d="M293 800l-231 -951h-48l232 951h47z" /> + <glyph glyph-name="zero" unicode="0" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="343" +d="M316 0h-275v75h100v550h-100v75h175v-625h100v-75z" /> + <glyph glyph-name="two" unicode="2" horiz-adv-x="435" +d="M298 497q4 5 5.5 10t1.5 16v77q0 25 -25 25h-125q-11 0 -18 -7t-7 -18v-100h-75v100q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-77q0 -24 -4.5 -42.5t-16.5 -33.5l-222 -284q-4 -5 -5.5 -10t-1.5 -16v-62h250v-75h-325v137q0 24 4.5 42.5t16.5 33.5z" /> + <glyph glyph-name="three" unicode="3" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v87h75v-87q0 -25 25 -25h125q25 0 25 25v207q0 11 -7 18.5t-18 7.5h-150v75h150q25 0 25 25v167q0 25 -25 25h-125q-25 0 -25 -25v-87h-75v87q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-154q0 -32 -13.5 -51 +t-36.5 -26q23 -7 36.5 -26t13.5 -51v-192z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="432" +d="M391 163h-50v-163h-75v163h-225v62l225 475h75v-462h50v-75zM266 238v318l-145 -318h145z" /> + <glyph glyph-name="five" unicode="5" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v88h75v-88q0 -25 25 -25h125q25 0 25 25v270q0 25 -25 25h-125q-25 0 -25 -25v-38h-75v368h315v-75h-240v-205q20 50 78 50h72q42 0 71 -29t29 -71v-270z" /> + <glyph glyph-name="six" unicode="6" horiz-adv-x="435" +d="M380 100q0 -21 -8 -39t-21.5 -31.5t-31.5 -21.5t-39 -8h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-75h-75v75q0 25 -25 25h-125q-25 0 -25 -25v-242q20 50 78 50h72q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-208zM305 308q0 25 -25 25 +h-125q-25 0 -25 -25v-208q0 -25 25 -25h125q25 0 25 25v208z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="393" +d="M352 625l-144 -625h-81l150 625h-175v-113h-75v188h325v-75z" /> + <glyph glyph-name="eight" unicode="8" horiz-adv-x="435" +d="M55 295q0 27 13.5 47.5t36.5 27.5q-23 7 -36.5 27.5t-13.5 47.5v155q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-155q0 -27 -13.5 -47.5t-36.5 -27.5q23 -7 36.5 -27.5t13.5 -47.5v-195q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v195zM305 600q0 25 -25 25h-125 +q-25 0 -25 -25v-167q0 -25 25 -25h125q25 0 25 25v167zM305 308q0 25 -25 25h-125q-25 0 -25 -25v-208q0 -25 25 -25h125q25 0 25 25v208z" /> + <glyph glyph-name="nine" unicode="9" horiz-adv-x="435" +d="M55 600q0 21 7.5 39t21 31.5t32 21.5t39.5 8h125q42 0 71 -29t29 -71v-500q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v75h75v-75q0 -25 25 -25h125q25 0 25 25v242q-20 -50 -78 -50h-72q-21 0 -39.5 8t-32 21.5t-21 31.5t-7.5 39v208zM130 392q0 -25 25 -25h125 +q25 0 25 25v208q0 25 -25 25h-125q-25 0 -25 -25v-208z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="190" +d="M45 430q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM45 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="190" +d="M145 40q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5zM45 430q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="460" +d="M99 233l331 -135v-72l-400 163v89l400 163v-72z" /> + <glyph glyph-name="equal" unicode="=" horiz-adv-x="460" +d="M430 291h-400v67h400v-67zM430 111h-400v67h400v-67z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="460" +d="M30 98l331 135l-331 136v72l400 -163v-89l-400 -163v72z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="385" +d="M143 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM355 523q0 -27 -9.5 -46t-29.5 -40l-120 -122q-8 -8 -8 -19t8 -19l53 -53l-53 -52l-51 49q-13 13 -21 31t-8 39q0 48 30 77l122 121q5 5 8.5 13.5t3.5 18.5v79 +q0 25 -25 25h-125q-25 0 -25 -25v-88h-75v88q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-77z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="574" +d="M428 0q-57 0 -72 45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-417q0 -22 22 -22h20q22 0 22 22v309q0 42 -16 78.5t-43 63.5t-63.5 43t-78.5 16t-78.5 -16t-63.5 -43t-43 -63.5t-16 -78.5v-252 +q0 -42 16 -78.5t43 -63.5t63.5 -43t78.5 -16q56 0 103 28l13 -27q-26 -15 -55 -23.5t-61 -8.5q-48 0 -90.5 18t-74 49.5t-49.5 74t-18 90.5v252q0 48 18 90t49.5 73.5t74 50t90.5 18.5t90 -18.5t73.5 -50t50 -74t18.5 -89.5v-310q0 -23 -13 -37.5t-40 -14.5h-38zM356 380 +q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-225v700h225q42 0 71 -29t29 -71v-168q0 -22 -13.5 -38.5t-36.5 -23.5q23 -7 36.5 -23.5t13.5 -38.5v-208zM305 600q0 25 -25 25h-150v-218h150q25 0 25 25v168zM305 308q0 25 -25 25h-150v-258h150q25 0 25 25v208z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-225v700h225q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-150v-550h150q25 0 25 25v500z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="360" +d="M330 625h-200v-217h150v-76h-150v-332h-75v700h275v-75z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v183h-88v75h163v-258z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="435" +d="M380 0h-75v333h-175v-333h-75v700h75v-292h175v292h75v-700z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="185" +d="M130 0h-75v700h75v-700z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="386" +d="M331 100q0 -42 -29 -71t-71 -29h-100q-42 0 -71 29t-29 71v100h75v-100q0 -25 25 -25h100q25 0 25 25v600h75v-600z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="437" +d="M251 379l180 -379h-86l-136 299l-79 -149v-150h-75v700h75v-409l207 409h83z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="360" +d="M330 0h-275v700h75v-625h200v-75z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="553" +d="M498 0h-75v532l-132 -482h-32l-129 482v-532h-75v700h101l119 -442l122 442h101v-700z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="435" +d="M380 0h-63l-187 518v-518h-75v700h83l167 -472v472h75v-700z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="410" +d="M380 368q0 -21 -8 -39t-21.5 -31.5t-31.5 -21.5t-39 -8h-150v-268h-75v700h225q42 0 71 -29t29 -71v-232zM305 600q0 25 -25 25h-150v-282h150q25 0 25 25v232z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-25v-50q0 -25 25 -25h25v-75h-25q-42 0 -71 29t-29 71v50h-25q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="435" +d="M305 600q0 25 -25 25h-150v-257h150q25 0 25 25v207zM380 393q0 -35 -20 -61t-52 -35l71 -297h-80l-64 293h-105v-293h-75v700h225q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-207z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="435" +d="M305 200q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h75v-100 +q0 -11 7 -18t18 -7h125q25 0 25 25v100z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="385" +d="M355 625h-125v-625h-75v625h-125v75h325v-75z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="425" +d="M213 117l119 583h76l-150 -700h-91l-150 700h76z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="639" +d="M622 700l-120 -700h-96l-87 506l-86 -506h-96l-120 700h75l97 -578l97 578h68l96 -578l99 578h73z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="432" +d="M425 0h-85l-124 295l-123 -295h-86l167 366l-151 334h82l111 -263l112 263h81l-150 -334z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="384" +d="M379 700l-151 -430v-270h-74v270l-149 430h79l108 -345l109 345h78z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="393" +d="M363 0h-333v75l242 550h-234v75h317v-75l-243 -550h251v-75z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="237" +d="M210 -151h-155v951h155v-49h-107v-853h107v-49z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="307" +d="M61 800l232 -951h-48l-231 951h47z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="284" +d="M27 800h155v-951h-155v49h107v853h-107v49z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="290" +d="M266 551l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="450" +d="M450 -68h-450v68h450v-68z" /> + <glyph glyph-name="grave" unicode="`" +d="M274 563l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="a" unicode="a" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100z" /> + <glyph glyph-name="b" unicode="b" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-48q-56 0 -72 45v-45h-68v700h68v-275q15 45 72 45h48q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="c" unicode="c" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79z" /> + <glyph glyph-name="d" unicode="d" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v275h68v-700zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="e" unicode="e" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="269" +d="M242 402h-90v-402h-68v402h-70v68h70v140q0 18 7 34.5t19 29t28.5 19.5t35.5 7h68v-68h-68q-22 0 -22 -22v-140h90v-68z" /> + <glyph glyph-name="g" unicode="g" +d="M333 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-132v68h132q22 0 22 22v105q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-530zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290z" /> + <glyph glyph-name="h" unicode="h" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v700h68v-275q15 45 72 45h48q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="178" +d="M44 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM123 0h-68v470h68v-470z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="178" +d="M44 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM123 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-68v68h68q22 0 22 22v530h68v-530z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="348" +d="M227 279l116 -279h-78l-78 209l-64 -110v-99h-68v700h68v-486l142 256h74z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="178" +d="M123 0h-68v700h68v-700z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="568" +d="M513 0h-68v380q0 22 -22 22h-83q-22 0 -22 -22v-380h-68v380q0 22 -22 22h-83q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h33q31 0 53 -12t27 -34q11 46 72 46h43q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="n" unicode="n" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="o" unicode="o" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="p" unicode="p" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-48q-56 0 -72 45v-195h-68v620h68v-45q15 45 72 45h48q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="q" unicode="q" +d="M333 -150h-68v195q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-620zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="256" +d="M243 402h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48v-68z" /> + <glyph glyph-name="s" unicode="s" +d="M265 148q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66q0 -18 -7 -34.5t-19 -29 +t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="269" +d="M242 0h-68q-37 0 -63.5 26.5t-26.5 63.5v312h-70v68h70v140h68v-140h90v-68h-90v-312q0 -22 22 -22h68v-68z" /> + <glyph glyph-name="u" unicode="u" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="364" +d="M347 470l-118 -470h-94l-118 470h71l94 -392l94 392h71z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="520" +d="M503 470l-98 -470h-80l-65 311l-65 -311h-80l-98 470h71l73 -371l74 371h50l74 -371l73 371h71z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="364" +d="M347 0h-79l-86 186l-87 -186h-78l122 232l-122 238h78l87 -189l86 189h79l-122 -238z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="363" +d="M346 470l-174 -620h-74l47 150l-128 470h70l94 -374l94 374h71z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="332" +d="M305 0h-278v68l191 334h-183v68h263v-68l-189 -334h196v-68z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="251" +d="M128 -90q0 -12 12 -12h95v-49h-92q-26 0 -44.5 19t-18.5 45v375q0 13 -13 13h-51v48h51q13 0 13 13v374q0 26 18.5 45t44.5 19h92v-49h-95q-12 0 -12 -12v-362q0 -22 -11 -35t-26 -17q15 -4 26 -17.5t11 -35.5v-362z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="130" +d="M50 -200v1000h30v-1000h-30z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="251" +d="M123 272q0 22 11 35t26 17q-15 4 -26 17.5t-11 35.5v362q0 12 -12 12h-95v49h92q26 0 44.5 -19t18.5 -45v-375q0 -13 13 -13h51v-48h-51q-13 0 -13 -13v-374q0 -26 -18.5 -45t-44.5 -19h-92v49h95q12 0 12 12v362z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="324" +d="M24 570l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="200" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="211" +d="M156 430q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5zM68 295h75v-525h-75v525z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="435" +d="M130 190q0 -25 25 -25h125q25 0 25 25v82h75v-82q0 -42 -29 -71t-71 -29h-30v-90h-65v90h-30q-42 0 -71 29t-29 71v320q0 42 29 71t71 29h30v90h65v-90h30q42 0 71 -29t29 -71v-79h-75v79q0 25 -25 25h-125q-25 0 -25 -25v-320z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="454" +d="M408 100q0 -21 -8 -39t-21.5 -31.5t-31.5 -21.5t-39 -8h-277v75h53v258h-50v75h50v192q0 21 7.5 39t21 31.5t32 21.5t39.5 8h74q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-75h-74v75q0 25 -25 25h-76q-25 0 -25 -25v-192h75v-75h-75v-258h151q25 0 25 25v75h74v-75z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="571" +d="M118 558l83 -83q8 3 16.5 5t18.5 2h98q17 0 36 -7l85 85l48 -48l-86 -86q3 -8 5 -16.5t2 -17.5v-98q0 -10 -2 -18.5t-5 -16.5l84 -84l-48 -48l-84 84q-15 -7 -35 -7h-98q-20 0 -34 7l-82 -82l-48 48l81 81q-7 15 -7 36v98q0 20 7 35l-83 83zM356 392q0 22 -22 22h-98 +q-22 0 -22 -22v-98q0 -22 22 -22h98q22 0 22 22v98z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="426" +d="M17 400h113l-104 300h79l109 -345l109 345h78l-106 -300h114v-60h-135l-24 -70v-50h159v-60h-159v-160h-75v160h-158v60h158v50l-24 70h-134v60z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="130" +d="M50 200h30v-400h-30v400zM50 400v400h30v-400h-30z" /> + <glyph glyph-name="section" unicode="§" +d="M265 378q0 4 -2.5 10t-9.5 9l-110 53q-6 3 -13 0.5t-7 -12.5v-102q0 -9 3 -13.5t12 -9.5l108 -51q7 -3 13 0.5t6 12.5v103zM333 320q0 -26 -13 -47t-35 -32q14 -11 19.5 -29t5.5 -44v-78q0 -38 -26 -64t-64 -26h-52q-38 0 -64 26t-26 64v59h68v-59q0 -22 22 -22h52 +q22 0 22 22v79q0 15 -13 21l-104 47q-30 14 -50 36.5t-20 54.5v52q0 29 15.5 51.5t41.5 32.5q-34 26 -34 82v64q0 38 26 64t64 26h52q38 0 64 -26t26 -64v-58h-68v58q0 22 -22 22h-52q-22 0 -22 -22v-62q0 -8 3 -14t11 -10l120 -60q23 -11 38 -30t15 -48v-66z" /> + <glyph glyph-name="dieresis" unicode="¨" +d="M219 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="797" +d="M69 350q0 -68 26 -128t70.5 -104.5t104.5 -70.5t128 -26t128 26t104.5 70.5t70.5 104.5t26 128t-26 128t-70.5 104.5t-104.5 70.5t-128 26t-128 -26t-104.5 -70.5t-70.5 -104.5t-26 -128zM757 350q0 -74 -28.5 -139.5t-77 -114.5t-114 -77t-139.5 -28t-139.5 28t-114 77 +t-76.5 114.5t-28 139.5t28 139.5t76.5 114t114 77t139.5 28.5t139.5 -28.5t114 -77t77 -114t28.5 -139.5zM548 210q0 -26 -18.5 -45t-45.5 -19h-170q-27 0 -45.5 19t-18.5 45v280q0 26 18.5 45t45.5 19h170q27 0 45.5 -19t18.5 -45v-56h-48v60q0 11 -12 11h-178 +q-12 0 -12 -11v-288q0 -11 12 -11h178q12 0 12 11v60h48v-56z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="362" +d="M55 196h252v-64h-252v64zM243 444q0 11 -7.5 18.5t-18.5 7.5h-71q-11 0 -18.5 -7.5t-7.5 -18.5v-74q0 -11 7.5 -18.5t18.5 -7.5h71q11 0 18.5 7.5t7.5 18.5v74zM243 318q-4 -17 -21.5 -27.5t-37.5 -10.5h-37q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v74q0 42 26.5 66 +t63.5 24h39q20 0 37.5 -10.5t21.5 -27.5v114q0 11 -7.5 18.5t-18.5 7.5h-117v64h117q38 0 64 -26t26 -64v-330h-64v38z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="373" +d="M342 150l-35 -36l-121 121l121 121l35 -36l-85 -85zM186 150l-34 -36l-121 121l121 121l34 -36l-85 -85z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="460" +d="M430 111h-67v180h-333v67h400v-247z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="271" +d="M241 201h-211v68h211v-68z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="438" +d="M374 529q0 32 -12 60.5t-33 49.5t-49.5 33t-60.5 12t-60 -12t-49 -33t-33.5 -49.5t-12.5 -60.5t12.5 -60t33.5 -49t49 -33t60 -12t60.5 12t49.5 33t33 49t12 60zM398 529q0 -37 -14 -69.5t-38.5 -57t-57 -38.5t-69.5 -14t-69.5 14t-57 38.5t-38.5 57t-14 69.5t14 70 +t38.5 57.5t57 38.5t69.5 14t69.5 -14t57 -38.5t38.5 -57.5t14 -70zM295 430h-35l-45 71h-39v-71h-32v199h123q28 0 28 -28v-67q0 -14 -7 -23.5t-21 -9.5h-17zM263 533v64h-87v-64h87z" /> + <glyph glyph-name="macron" unicode="¯" +d="M298 581h-208v50h208v-50z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="248" +d="M220 616q0 -20 -7.5 -37t-20.5 -30t-30.5 -20.5t-36.5 -7.5q-20 0 -38 7.5t-31 20.5t-20.5 30t-7.5 37q0 41 28 69t69 28q19 0 36.5 -7.5t30.5 -20.5t20.5 -31t7.5 -38zM185 616q0 26 -17.5 43t-42.5 17q-26 0 -43 -17t-17 -43q0 -25 17 -42.5t43 -17.5q25 0 42.5 17.5 +t17.5 42.5z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="460" +d="M30 66h164v146h-164v67h164v167h67v-167h169v-67h-169v-146h169v-67h-400v67z" /> + <glyph glyph-name="uni00B2" unicode="²" horiz-adv-x="305" +d="M105 335h145v-55h-200v80q0 31 17 53l128 163q5 6 5 20v39q0 10 -10 10h-75q-10 0 -10 -10v-54h-55v54q0 29 18 47t47 18h75q29 0 47 -18t18 -47v-39q0 -31 -17 -53l-128 -163q-5 -6 -5 -20v-25z" /> + <glyph glyph-name="uni00B3" unicode="³" horiz-adv-x="305" +d="M255 345q0 -29 -18 -47t-47 -18h-75q-29 0 -47 18t-18 47v40h55v-40q0 -10 10 -10h75q10 0 10 10v120q0 10 -10 10h-90v55h90q10 0 10 10v95q0 10 -10 10h-75q-10 0 -10 -10v-40h-55v40q0 29 18 47t47 18h75q29 0 47 -18t18 -47v-87q0 -17 -9 -29.5t-26 -17.5 +q14 -4 24.5 -15t10.5 -31v-110z" /> + <glyph glyph-name="acute" unicode="´" +d="M239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="uni00B5" unicode="µ" +d="M55 -150v620h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470h-68v45q-15 -45 -70 -45q-57 0 -72 45v-195h-68z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="437" +d="M334 662v-813h-38v813h-63v-813h-38v512q-35 0 -66 13.5t-54 36.5t-36.5 54t-13.5 66t13.5 65.5t36.5 53.5t54 36.5t66 13.5h217v-38h-78z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="190" +d="M45 235q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="cedilla" unicode="¸" +d="M262 -115q0 -16 -11.5 -28t-27.5 -12h-97v50h86v30h-61v80h50v-35h61v-85z" /> + <glyph glyph-name="uni00B9" unicode="¹" horiz-adv-x="259" +d="M222 280h-185v55h65v310h-65v55h120v-365h65v-55z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="363" +d="M55 196h252v-64h-252v64zM243 610q0 25 -25 25h-73q-25 0 -25 -25v-240q0 -25 25 -25h73q25 0 25 25v240zM308 370q0 -38 -26 -64t-64 -26h-73q-38 0 -64 26t-26 64v240q0 38 26 64t64 26h73q38 0 64 -26t26 -64v-240z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="373" +d="M31 320l35 36l121 -121l-121 -121l-35 36l85 85zM187 320l34 36l121 -121l-121 -121l-34 36l85 85z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="587" +d="M222 280h-185v55h65v310h-65v55h120v-365h65v-55zM438 700l-232 -700h-53l232 700h53zM550 92h-30v-92h-55v92h-135v51l132 277h58v-273h30v-55zM465 147v172l-78 -172h78z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="638" +d="M222 280h-185v55h65v310h-65v55h120v-365h65v-55zM438 700l-232 -700h-53l232 700h53zM438 55h145v-55h-200v80q0 31 17 53l128 163q5 6 5 20v39q0 10 -10 10h-75q-10 0 -10 -10v-54h-55v54q0 29 18 47t47 18h75q29 0 47 -18t18 -47v-39q0 -31 -17 -53l-128 -163 +q-5 -6 -5 -20v-25z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="633" +d="M255 345q0 -29 -18 -47t-47 -18h-75q-29 0 -47 18t-18 47v40h55v-40q0 -10 10 -10h75q10 0 10 10v120q0 10 -10 10h-90v55h90q10 0 10 10v95q0 10 -10 10h-75q-10 0 -10 -10v-40h-55v40q0 29 18 47t47 18h75q29 0 47 -18t18 -47v-87q0 -17 -9 -29.5t-26 -17.5 +q14 -4 24.5 -15t10.5 -31v-110zM484 700l-232 -700h-53l232 700h53zM596 92h-30v-92h-55v92h-135v51l132 277h58v-273h30v-55zM511 147v172l-78 -172h78z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="385" +d="M242 430q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5zM30 -53q0 27 9.5 46t29.5 40l120 122q8 8 8 19t-8 19l-53 53l53 52l51 -49q13 -13 21 -31t8 -39q0 -48 -30 -77l-122 -121q-5 -5 -8.5 -13.5t-3.5 -18.5v-79 +q0 -25 25 -25h125q25 0 25 25v88h75v-88q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v77z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM292 793l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM257 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM333 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM74 822l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM237 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM95 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5 +t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM172 827q0 -17 12 -29t29 -12t29 12t12 29t-12 29t-29 12t-29 -12t-12 -29zM290 827q0 -32 -22.5 -55t-54.5 -23t-55 23t-23 55t23 54.5t55 22.5t54.5 -22.5t22.5 -54.5z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="645" +d="M614 0h-275v113h-197l-50 -113h-83l307 700h298v-75h-200v-217h150v-75h-150v-258h200v-75zM339 188v392l-164 -392h164z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="435" +d="M285 -115q0 -16 -11.5 -28t-27.5 -12h-97v50h86v30h-61v75h-19q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88q0 -42 -29 -71t-71 -29h-56v-30h61v-85z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM274 793l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM239 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM315 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM219 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5 +t-13.5 32.5z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM174 793l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM139 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM215 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM119 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM-23 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="435" +d="M198 345h-68v-270h150q25 0 25 25v500q0 25 -25 25h-150v-230h68v-50zM380 100q0 -42 -29 -71t-71 -29h-225v345h-65v50h65v305h225q42 0 71 -29t29 -71v-500z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="435" +d="M380 0h-63l-187 518v-518h-75v700h83l167 -472v472h75v-700zM79 822l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM297 793l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM79 822l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35 +l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM242 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5 +t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM100 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="461" +d="M397 353l-120 -119l118 -117l-48 -48l-117 117l-116 -116l-48 48l116 116l-118 118l48 48l118 -118l119 119z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="435" +d="M305 514l-171 -429q6 -10 21 -10h125q25 0 25 25v414zM130 184l171 430q-6 11 -21 11h-125q-25 0 -25 -25v-416zM408 773l-46 -116q18 -26 18 -57v-500q0 -42 -29 -71t-71 -29h-125q-28 0 -50 13l-34 -87h-44l46 116q-8 13 -13 27t-5 31v500q0 42 29 71t71 29h125 +q26 0 50 -13l34 86h44z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM297 793l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM242 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM100 838q0 19 13.5 32.5t32.5 13.5 +t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="384" +d="M379 700l-151 -430v-270h-74v270l-149 430h79l108 -345l109 345h78zM239 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="410" +d="M380 230q0 -21 -8 -39t-21.5 -31.5t-31.5 -21.5t-39 -8h-150v-130h-75v700h75v-138h150q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-232zM305 462q0 25 -25 25h-150v-282h150q25 0 25 25v232z" /> + <glyph glyph-name="germandbls" unicode="ß" +d="M333 90q0 -38 -26 -64t-64 -26h-49v68h49q22 0 22 22v290q0 23 -22 23h-49v67h49q22 0 22 22v118q0 22 -22 22h-98q-22 0 -22 -22v-610h-68v610q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-95q0 -36 -17 -57t-39 -21q22 0 39 -21t17 -57v-269 +z" /> + <glyph glyph-name="agrave" unicode="à" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM274 563l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="aacute" unicode="á" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="acircumflex" unicode="â" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="atilde" unicode="ã" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM56 592l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="adieresis" unicode="ä" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM219 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="aring" unicode="å" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM154 597q0 -17 12 -29t29 -12t29 12t12 29t-12 29t-29 12t-29 -12t-12 -29zM272 597q0 -32 -22.5 -55t-54.5 -23t-55 23t-23 55t23 54.5t55 22.5t54.5 -22.5t22.5 -54.5z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="598" +d="M265 380q0 22 -22 22h-154v68h150q52 0 60 -48q7 48 61 48h93q37 0 63.5 -26.5t26.5 -63.5v-188h-210v-102q0 -22 22 -22h155v-68h-150q-54 0 -61 48q-8 -48 -60 -48h-92q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v99q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5 +v139zM475 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM265 189q0 22 -22 22h-97q-22 0 -22 -22v-99q0 -22 22 -22h97q22 0 22 22v99z" /> + <glyph glyph-name="ccedilla" unicode="ç" +d="M262 -115q0 -16 -11.5 -28t-27.5 -12h-97v50h86v30h-61v75h-6q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79 +q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-42v-30h61v-85z" /> + <glyph glyph-name="egrave" unicode="è" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM274 563l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="eacute" unicode="é" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="ecircumflex" unicode="ê" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z +" /> + <glyph glyph-name="edieresis" unicode="ë" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM219 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5 +t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM171 563l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM136 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM212 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM116 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM-26 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="378" +d="M271 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM324 616l-57 -27l56 -119q10 -20 13 -39.5t3 -50.5v-290q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h52q21 0 34.5 -6 +t21.5 -15l-53 112l-73 -34l-27 59l73 34l-38 80h74l24 -52l58 27z" /> + <glyph glyph-name="ntilde" unicode="ñ" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380zM56 592l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="ograve" unicode="ò" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM274 563l-35 -35l-125 125 +l35 35z" /> + <glyph glyph-name="oacute" unicode="ó" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM239 688l35 -35l-125 -125 +l-35 35z" /> + <glyph glyph-name="ocircumflex" unicode="ô" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM315 564l-36 -36l-85 86 +l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="otilde" unicode="õ" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM56 592l59 60q7 8 16 11.5 +t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="odieresis" unicode="ö" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM219 608q0 19 13.5 32.5 +t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="460" +d="M177 404q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM177 64q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM30 201v67h400v-67h-400z" /> + <glyph glyph-name="oslash" unicode="ø" +d="M265 321l-139 -244q4 -9 19 -9h98q22 0 22 22v231zM123 147l139 245q-4 10 -19 10h-98q-22 0 -22 -22v-233zM66 47q-11 20 -11 43v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q31 0 54 -17l40 70h43l-57 -101q10 -20 10 -42v-290q0 -18 -7 -34.5t-19 -29t-28.5 -19.5 +t-35.5 -7h-98q-30 0 -53 17l-40 -70h-43z" /> + <glyph glyph-name="ugrave" unicode="ù" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM274 563l-35 -35l-125 125l35 35z" /> + <glyph glyph-name="uacute" unicode="ú" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="ucircumflex" unicode="û" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="udieresis" unicode="ü" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM219 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 608q0 19 13.5 32.5t32.5 13.5 +t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="363" +d="M346 470l-174 -620h-74l47 150l-128 470h70l94 -374l94 374h71zM228 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="378" +d="M339 90q0 -37 -26.5 -63.5t-63.5 -26.5h-48q-56 0 -72 45v-195h-68v850h68v-275q15 45 72 45h48q37 0 63.5 -26.5t26.5 -63.5v-290zM271 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="363" +d="M346 470l-174 -620h-74l47 150l-128 470h70l94 -374l94 374h71zM208 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM66 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5 +t-13.5 32.5z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM316 811h-208v50h208v-50z" /> + <glyph glyph-name="amacron" unicode="ā" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM298 581h-208v50h208v-50z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700h-76zM212 850q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="abreve" unicode="ă" +d="M333 0h-68v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380zM265 190q0 22 -22 22h-97q-22 0 -22 -22 +v-100q0 -22 22 -22h97q22 0 22 22v100zM194 620q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="425" +d="M131 188h162l-81 395zM309 113h-193l-23 -113h-76l150 700h91l150 -700l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28q0 8 3.5 17.5t11.5 17.5l44 42h-23z" /> + <glyph glyph-name="aogonek" unicode="ą" +d="M265 190q0 22 -22 22h-97q-22 0 -22 -22v-100q0 -22 22 -22h97q22 0 22 22v100zM221 -77q0 8 3.5 17.5t11.5 17.5l44 42h-15v38q-5 -17 -20.5 -27.5t-38.5 -10.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v100q0 40 26 65t64 25h61q23 0 38.5 -10.5t20.5 -27.5v138 +q0 22 -22 22h-154v68h154q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-380l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="cacute" unicode="ć" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79zM239 688 +l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79zM315 564 +l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88zM171 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5 +t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79zM148 608 +q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v88h75v-88zM96 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="ccaron" unicode="č" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-78h-68v78q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v79h68v-79zM73 648l36 36 +l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-225v700h225q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-150v-550h150q25 0 25 25v500zM96 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="430" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v275h68v-700zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM457 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14 +t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="435" +d="M198 345h-68v-270h150q25 0 25 25v500q0 25 -25 25h-150v-230h68v-50zM380 100q0 -42 -29 -71t-71 -29h-225v345h-65v50h65v305h225q42 0 71 -29t29 -71v-500z" /> + <glyph glyph-name="dcroat" unicode="đ" +d="M265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM403 558h-70v-558h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v133h-70v50h70v92h68v-92h70v-50z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM298 811h-208v50h208v-50z" /> + <glyph glyph-name="emacron" unicode="ē" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM298 581h-208v50h208v-50z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM194 850q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="ebreve" unicode="ĕ" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM194 620q26 0 48.5 9.5t37.5 24.5l34 -37 +q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM148 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="edotaccent" unicode="ė" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM148 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5 +t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="360" +d="M218 -77q0 8 3.5 17.5t11.5 17.5l44 42h-222v700h275v-75h-200v-217h150v-75h-150v-258h200v-75l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="eogonek" unicode="ę" +d="M265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM188 -77q0 8 3.5 17.5t11.5 17.5l44 42h-102q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188h-210v-102q0 -22 22 -22h155v-68l-62 -62v-43h62v-50 +h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="360" +d="M330 0h-275v700h275v-75h-200v-217h150v-75h-150v-258h200v-75zM73 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="ecaron" unicode="ě" +d="M333 192h-210v-102q0 -22 22 -22h155v-68h-155q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-188zM265 259v121q0 22 -22 22h-98q-22 0 -22 -22v-121h142zM73 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v183h-88v75h163v-258zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" +d="M333 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-132v68h132q22 0 22 22v105q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-530zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290zM315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v183h-88v75h163v-258zM217 850q26 0 48.5 9.5t37.5 24.5l34 -37 +q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="gbreve" unicode="ğ" +d="M333 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-132v68h132q22 0 22 22v105q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-530zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290zM194 620q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v183h-88v75h163v-258zM171 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5 +t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" +d="M333 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-132v68h132q22 0 22 22v105q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-530zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290zM148 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v183h-88v75h163v-258zM267 -75q0 -10 -4 -20l-49 -105h-37l26 78 +q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" +d="M333 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-132v68h132q22 0 22 22v105q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q58 0 72 -45v45h68v-530zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290zM146 575q0 10 4 20l49 105h37l-26 -78q11 -2 23.5 -14t12.5 -33t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="435" +d="M380 0h-75v333h-175v-333h-75v700h75v-292h175v292h75v-700zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v700h68v-275q15 45 72 45h48q38 0 64 -26t26 -64v-380zM315 795l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="435" +d="M305 408v121h-175v-121h175zM425 529h-45v-529h-75v333h-175v-333h-75v529h-46v50h46v121h75v-121h175v121h75v-121h45v-50z" /> + <glyph glyph-name="hbar" unicode="ħ" +d="M193 558h-70v-133q15 45 72 45h48q38 0 64 -26t26 -64v-380h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v558h-70v50h70v92h68v-92h70v-50z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM-44 822l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="itilde" unicode="ĩ" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM-47 592l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="Imacron" unicode="Ī" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM198 811h-208v50h208v-50z" /> + <glyph glyph-name="imacron" unicode="ī" horiz-adv-x="178" +d="M123 0h-68v470h68v-470zM195 581h-208v50h208v-50z" /> + <glyph glyph-name="Iogonek" unicode="Į" horiz-adv-x="185" +d="M18 -77q0 8 3.5 17.5t11.5 17.5l44 42h-22v700h75v-700l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="iogonek" unicode="į" horiz-adv-x="178" +d="M44 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM11 -77q0 8 3.5 17.5t11.5 17.5l44 42h-15v470h68v-470l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="Idotaccent" unicode="İ" horiz-adv-x="185" +d="M130 0h-75v700h75v-700zM48 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="178" +d="M123 0h-68v470h68v-470z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="571" +d="M130 0h-75v700h75v-700zM516 100q0 -42 -29 -71t-71 -29h-100q-42 0 -71 29t-29 71v100h75v-100q0 -25 25 -25h100q25 0 25 25v600h75v-600z" /> + <glyph glyph-name="ij" unicode="ij" horiz-adv-x="356" +d="M44 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM123 0h-68v470h68v-470zM222 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM301 -60q0 -18 -7 -34.5 +t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-68v68h68q22 0 22 22v530h68v-530z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="386" +d="M331 100q0 -42 -29 -71t-71 -29h-100q-42 0 -71 29t-29 71v100h75v-100q0 -25 25 -25h100q25 0 25 25v600h75v-600zM416 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="178" +d="M210 564l-36 -36l-85 86l-85 -86l-36 36l121 120zM123 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-68v68h68q22 0 22 22v530h68v-530z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="437" +d="M251 379l180 -379h-86l-136 299l-79 -149v-150h-75v700h75v-409l207 409h83zM293 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="348" +d="M227 279l116 -279h-78l-78 209l-64 -110v-99h-68v700h68v-486l142 256h74zM249 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="360" +d="M330 0h-275v700h75v-625h200v-75zM239 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="178" +d="M123 0h-68v700h68v-700zM136 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="360" +d="M330 0h-275v700h75v-625h200v-75zM244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="178" +d="M123 0h-68v700h68v-700zM141 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="360" +d="M330 0h-275v700h75v-625h200v-75zM295 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="219" +d="M123 0h-68v700h68v-700zM247 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="360" +d="M330 0h-275v700h75v-625h200v-75zM226 349q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="252" +d="M123 0h-68v700h68v-700zM165 235q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="360" +d="M330 0h-275v299l-67 -38v58l67 38v343h75v-299l66 38v-58l-66 -38v-268h200v-75z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="178" +d="M193 381l-70 -41v-340h-68v301l-70 -40v58l70 40v341h68v-302l70 41v-58z" /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="435" +d="M380 0h-63l-187 518v-518h-75v700h83l167 -472v472h75v-700zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="nacute" unicode="ń" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380zM239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="435" +d="M380 0h-63l-187 518v-518h-75v700h83l167 -472v472h75v-700zM267 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380zM244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="435" +d="M380 0h-63l-187 518v-518h-75v700h83l167 -472v472h75v-700zM96 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="ncaron" unicode="ň" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380zM73 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="napostrophe" unicode="ʼn" +d="M333 0h-68v380q0 22 -22 22h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48q38 0 64 -26t26 -64v-380zM143 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM321 811h-208v50h208v-50z" /> + <glyph glyph-name="omacron" unicode="ō" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM298 581h-208v50h208v-50z +" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM217 850q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13 +t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="obreve" unicode="ŏ" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM194 620q26 0 48.5 9.5 +t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-500zM305 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM287 929l45 -19l-69 -163l-45 19zM172 929l45 -19l-69 -163l-45 19z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h98q38 0 64 -26t26 -64v-290zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290zM264 699l45 -19l-69 -163 +l-45 19zM149 699l45 -19l-69 -163l-45 19z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="609" +d="M304 600q0 25 -25 25h-125q-25 0 -25 -25v-500q0 -25 25 -25h125q25 0 25 25v500zM579 0h-237v54q-4 -22 -19.5 -38t-41.5 -16h-126q-21 0 -39.5 8t-32 21.5t-21 31.5t-7.5 39v500q0 21 7.5 39t21 31.5t32 21.5t39.5 8h126q26 0 41.5 -16t19.5 -38v54h237v-75h-200v-217 +h150v-75h-150v-258h200v-75z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="598" +d="M453 470q38 0 64 -26t26 -64v-187h-210v-103q0 -22 22 -22h155v-68h-149q-54 0 -61 48q-8 -48 -60 -48h-95q-38 0 -64 26t-26 64v290q0 38 26 64t64 26h95q52 0 60 -48q7 48 61 48h92zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98q22 0 22 22v290z +M475 380q0 22 -22 22h-98q-22 0 -22 -22v-119h142v119z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="435" +d="M305 600q0 25 -25 25h-150v-257h150q25 0 25 25v207zM380 393q0 -35 -20 -61t-52 -35l71 -297h-80l-64 293h-105v-293h-75v700h225q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-207zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="256" +d="M243 402h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48v-68zM196 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="435" +d="M305 600q0 25 -25 25h-150v-257h150q25 0 25 25v207zM380 393q0 -35 -20 -61t-52 -35l71 -297h-80l-64 293h-105v-293h-75v700h225q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-207zM267 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5 +t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="256" +d="M243 402h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48v-68zM201 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="435" +d="M305 600q0 25 -25 25h-150v-257h150q25 0 25 25v207zM380 393q0 -35 -20 -61t-52 -35l71 -297h-80l-64 293h-105v-293h-75v700h225q21 0 39 -8t31.5 -21.5t21.5 -31.5t8 -39v-207zM96 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="256" +d="M243 402h-98q-22 0 -22 -22v-380h-68v470h68v-45q15 45 72 45h48v-68zM30 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="435" +d="M305 200q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h75v-100 +q0 -11 7 -18t18 -7h125q25 0 25 25v100zM262 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="sacute" unicode="ś" +d="M265 148q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66q0 -18 -7 -34.5t-19 -29 +t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58zM239 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="435" +d="M305 200q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h75v-100 +q0 -11 7 -18t18 -7h125q25 0 25 25v100zM338 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" +d="M265 148q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66q0 -18 -7 -34.5t-19 -29 +t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58zM315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="435" +d="M285 -115q0 -16 -11.5 -28t-27.5 -12h-97v50h86v30h-61v75h-19q-42 0 -71 29t-29 71v100h75v-100q0 -11 7 -18t18 -7h125q25 0 25 25v100q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125 +q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-56v-30h61v-85z" /> + <glyph glyph-name="scedilla" unicode="ş" +d="M333 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-42v-30h61v-85q0 -16 -11.5 -28t-27.5 -12h-97v50h86v30h-61v75h-6q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5 +t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="435" +d="M305 200q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h75v-100 +q0 -11 7 -18t18 -7h125q25 0 25 25v100zM96 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="scaron" unicode="š" +d="M265 148q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66q0 -18 -7 -34.5t-19 -29 +t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58zM73 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="385" +d="M355 625h-125v-625h-75v625h-125v75h325v-75zM244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="269" +d="M242 0h-68q-37 0 -63.5 26.5t-26.5 63.5v312h-70v68h70v140h68v-140h90v-68h-90v-312q0 -22 22 -22h68v-68zM170 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="385" +d="M355 625h-125v-625h-75v625h-125v75h325v-75zM73 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="269" +d="M242 0h-68q-37 0 -63.5 26.5t-26.5 63.5v312h-70v68h70v140h68v-140h90v-68h-90v-312q0 -22 22 -22h68v-68zM275 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="385" +d="M296 325h-66v-325h-75v325h-67v50h67v250h-125v75h325v-75h-125v-250h66v-50z" /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="269" +d="M232 210h-80v-120q0 -22 22 -22h68v-68h-68q-37 0 -63.5 26.5t-26.5 63.5v120h-60v50h60v142h-70v68h70v140h68v-140h90v-68h-90v-142h80v-50z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM79 822l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="utilde" unicode="ũ" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM56 592l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM321 811h-208v50h208v-50z" /> + <glyph glyph-name="umacron" unicode="ū" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM298 581h-208v50h208v-50z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM217 850q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="ubreve" unicode="ŭ" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM194 620q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM177 827q0 -17 12 -29t29 -12t29 12t12 29t-12 29t-29 12t-29 -12t-12 -29zM295 827q0 -32 -22.5 -55t-54.5 -23t-55 23t-23 55t23 54.5t55 22.5 +t54.5 -22.5t22.5 -54.5z" /> + <glyph glyph-name="uring" unicode="ů" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM154 597q0 -17 12 -29t29 -12t29 12t12 29t-12 29t-29 12t-29 -12t-12 -29zM272 597q0 -32 -22.5 -55t-54.5 -23t-55 23t-23 55t23 54.5t55 22.5 +t54.5 -22.5t22.5 -54.5z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="435" +d="M380 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600zM287 929l45 -19l-69 -163l-45 19zM172 929l45 -19l-69 -163l-45 19z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" +d="M333 0h-68v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470zM264 699l45 -19l-69 -163l-45 19zM149 699l45 -19l-69 -163l-45 19z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="435" +d="M380 100q0 -23 -9 -41t-19 -28l-93 -93v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28q0 8 3.5 17.5t11.5 17.5l43 42h-112q-42 0 -71 29t-29 71v600h75v-600q0 -25 25 -25h125q25 0 25 25v600h75v-600z" /> + <glyph glyph-name="uogonek" unicode="ų" +d="M221 -77q0 8 3.5 17.5t11.5 17.5l44 42h-15v45q-15 -45 -72 -45h-48q-37 0 -63.5 26.5t-26.5 63.5v380h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="639" +d="M622 700l-120 -700h-96l-87 506l-86 -506h-96l-120 700h75l97 -578l97 578h68l96 -578l99 578h73zM440 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="520" +d="M503 470l-98 -470h-80l-65 311l-65 -311h-80l-98 470h71l73 -371l74 371h50l74 -371l73 371h71zM381 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="384" +d="M379 700l-151 -430v-270h-74v270l-149 430h79l108 -345l109 345h78zM315 794l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="363" +d="M346 470l-174 -620h-74l47 150l-128 470h70l94 -374l94 374h71zM304 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="384" +d="M379 700l-151 -430v-270h-74v270l-149 430h79l108 -345l109 345h78zM219 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM77 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5 +t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="393" +d="M363 0h-333v75l242 550h-234v75h317v-75l-243 -550h251v-75zM241 918l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="332" +d="M305 0h-278v68l191 334h-183v68h263v-68l-189 -334h196v-68zM213 688l35 -35l-125 -125l-35 35z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="393" +d="M363 0h-333v75l242 550h-234v75h317v-75l-243 -550h251v-75zM150 838q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="332" +d="M305 0h-278v68l191 334h-183v68h263v-68l-189 -334h196v-68zM122 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="393" +d="M363 0h-333v75l242 550h-234v75h317v-75l-243 -550h251v-75zM75 878l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="332" +d="M305 0h-278v68l191 334h-183v68h263v-68l-189 -334h196v-68zM47 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="florin" unicode="ƒ" horiz-adv-x="296" +d="M108 316h-90v68h90v226q0 18 7 34.5t19 29t28.5 19.5t35.5 7h68v-68h-68q-22 0 -22 -22v-226h90v-68h-90v-376q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-68v68h68q22 0 22 22v376z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="435" +d="M305 200q0 21 -12 33l-204 203q-16 15 -25 38t-9 49v77q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-100h-75v100q0 25 -25 25h-125q-25 0 -25 -25v-77q0 -20 12 -32l204 -203q16 -15 25 -38.5t9 -49.5v-100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h75v-100 +q0 -11 7 -18t18 -7h125q25 0 25 25v100zM267 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="scommaaccent" unicode="ș" +d="M265 148q0 17 -14 24l-141 68q-20 10 -37.5 28t-17.5 50v62q0 37 26.5 63.5t63.5 26.5h98q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-58h-68v58q0 22 -22 22h-98q-22 0 -22 -22v-53q0 -18 14 -25l141 -68q20 -10 37.5 -28t17.5 -50v-66q0 -18 -7 -34.5t-19 -29 +t-28.5 -19.5t-35.5 -7h-98q-37 0 -63.5 26.5t-26.5 63.5v58h68v-58q0 -22 22 -22h98q22 0 22 22v58zM244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="385" +d="M355 625h-125v-625h-75v625h-125v75h325v-75zM244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="269" +d="M242 0h-68q-37 0 -63.5 26.5t-26.5 63.5v312h-70v68h70v140h68v-140h90v-68h-90v-312q0 -22 22 -22h68v-68zM170 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" +d="M315 564l-36 -36l-85 86l-85 -86l-36 36l121 120z" /> + <glyph glyph-name="caron" unicode="ˇ" +d="M73 648l36 36l85 -86l85 86l36 -36l-121 -120z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" +d="M298 581h-208v50h208v-50z" /> + <glyph glyph-name="breve" unicode="˘" +d="M194 620q26 0 48.5 9.5t37.5 24.5l34 -37q-23 -21 -54 -34t-66 -13t-66 13t-54 34l34 37q15 -15 37.5 -24.5t48.5 -9.5z" /> + <glyph glyph-name="dotaccent" unicode="˙" +d="M148 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5z" /> + <glyph glyph-name="ring" unicode="˚" +d="M154 597q0 -17 12 -29t29 -12t29 12t12 29t-12 29t-29 12t-29 -12t-12 -29zM272 597q0 -32 -22.5 -55t-54.5 -23t-55 23t-23 55t23 54.5t55 22.5t54.5 -22.5t22.5 -54.5z" /> + <glyph glyph-name="ogonek" unicode="˛" +d="M138 -77q0 8 3.5 17.5t11.5 17.5l44 42h53l-62 -62v-43h62v-50h-63q-20 0 -34.5 15t-14.5 35v28z" /> + <glyph glyph-name="tilde" unicode="˜" +d="M56 592l59 60q7 8 16 11.5t18 3.5q21 0 36 -15l55 -54l58 57l34 -35l-57 -58q-14 -15 -34 -15q-21 0 -36 15l-55 54l-59 -58z" /> + <glyph glyph-name="hungarumlaut" unicode="˝" +d="M264 699l45 -19l-69 -163l-45 19zM149 699l45 -19l-69 -163l-45 19z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="425" +d="M108 75h208l-104 508zM167 700h91l150 -700h-391z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="434" +d="M242 0v223h38q25 0 25 25v352q0 25 -25 25h-126q-25 0 -25 -25v-352q0 -25 25 -25h39v-223h-138v75h99v73q-20 0 -38 8t-31.5 21.5t-21.5 31.5t-8 39v352q0 21 8 39t21.5 31.5t31.5 21.5t38 8h125q42 0 71 -29t29 -71v-352q0 -42 -29 -71t-71 -29v-73h100v-75h-137z" /> + <glyph glyph-name="mu" unicode="μ" +d="M55 -150v620h68v-380q0 -22 22 -22h98q22 0 22 22v380h68v-470h-68v45q-15 -45 -70 -45q-57 0 -72 45v-195h-68z" /> + <glyph glyph-name="pi" unicode="π" +d="M333 0h-68v402h-142v-402h-68v470h278v-470z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="438" +d="M408 201h-378v68h378v-68z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="642" +d="M612 201h-582v68h582v-68z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="186" +d="M43 560q0 10 4 20l56 120h35l-31 -93q11 -2 23.5 -14t12.5 -33t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="186" +d="M143 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="182" +d="M141 40q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="322" +d="M179 560q0 10 4 20l56 120h35l-31 -93q11 -2 23.5 -14t12.5 -33t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM43 560q0 10 4 20l56 120h35l-31 -93q11 -2 23.5 -14t12.5 -33t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="322" +d="M143 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5zM279 660q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="318" +d="M141 40q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5zM277 40q0 -10 -4 -20l-56 -120h-35l31 93q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="339" +d="M310 536h-117v-336h-47v336h-117v47h117v117h47v-117h117v-47z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="339" +d="M29 364h117v172h-117v47h117v117h47v-117h117v-47h-117v-172h117v-47h-117v-117h-47v117h-117v47z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="380" +d="M334 235q0 -30 -11.5 -56.5t-31 -46t-45.5 -31t-56 -11.5t-56.5 11.5t-46 31t-30.5 46t-11 56.5t11 56.5t30.5 46t46 31t56.5 11.5t56 -11.5t45.5 -31t31 -46t11.5 -56.5z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="570" +d="M425 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM235 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5zM45 40q0 21 14.5 35.5t35.5 14.5t35.5 -14.5 +t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="893" +d="M838 67q0 -28 -20 -47.5t-48 -19.5h-73q-28 0 -48 19.5t-20 47.5v217q0 28 20 47.5t48 19.5h73q28 0 48 -19.5t20 -47.5v-217zM786 284q0 16 -16 16h-73q-16 0 -16 -16v-217q0 -7 4.5 -12t11.5 -5h73q7 0 11.5 5t4.5 12v217zM574 67q0 -28 -20 -47.5t-48 -19.5h-73 +q-28 0 -48 19.5t-20 47.5v217q0 28 20 47.5t48 19.5h73q28 0 48 -19.5t20 -47.5v-217zM522 284q0 16 -16 16h-73q-16 0 -16 -16v-217q0 -7 4.5 -12t11.5 -5h73q7 0 11.5 5t4.5 12v217zM264 416q0 -28 -20 -47.5t-48 -19.5h-73q-28 0 -48 19.5t-20 47.5v217q0 28 20 47.5 +t48 19.5h73q28 0 48 -19.5t20 -47.5v-217zM454 700l-231 -700h-48l232 700h47zM212 633q0 16 -16 16h-73q-16 0 -16 -16v-217q0 -7 4.5 -12t11.5 -5h73q7 0 11.5 5t4.5 12v217z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="217" +d="M186 150l-34 -36l-121 121l121 121l34 -36l-85 -85z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="217" +d="M31 320l34 36l121 -121l-121 -121l-34 36l85 85z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="74" +d="M179 700l-232 -700h-53l232 700h53z" /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="461" +d="M31 459h50v141q0 42 29 71t71 29h125q42 0 71 -29t29 -71v-88h-75v88q0 25 -25 25h-125q-25 0 -25 -25v-141h137v-75h-137v-71h137v-75h-137v-138q0 -25 25 -25h125q25 0 25 25v88h75v-88q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v138h-50v75h50v71h-50v75z" /> + <glyph glyph-name="afii61289" unicode="ℓ" horiz-adv-x="434" +d="M44 138q-14 13 -25.5 34t-11.5 56q12 6 19.5 9t13 5t9.5 4l10 5q4 70 22.5 132.5t44.5 114.5t57.5 91t61.5 63q20 16 41 23.5t41 7.5q40 0 68 -31t28 -94q0 -49 -21 -95t-53.5 -88t-73 -80.5t-79.5 -71.5q0 -5 -0.5 -9.5t-0.5 -9.5q0 -46 12 -71.5t30 -25.5q17 0 36.5 26 +t36.5 84q12 3 26 3q19 0 37.5 -7.5t30.5 -26.5q-7 -37 -22 -72t-37.5 -62t-52 -43.5t-64.5 -16.5q-22 0 -46.5 9.5t-47 29t-40.5 48t-28 67.5zM199 341q29 24 52.5 54.5t40 60.5t25.5 57t9 45q0 26 -11 26q-7 0 -15 -11q-9 -12 -22.5 -34.5t-28 -52.5t-28 -66.5t-22.5 -78.5 +z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="437" +d="M385 420h-30v211l-53 -178h-12l-53 178v-211h-30v280h41l48 -165l48 165h41v-280zM157 670h-50v-250h-30v250h-50v30h130v-30z" /> + <glyph glyph-name="uni2126" unicode="Ω" horiz-adv-x="434" +d="M242 0v223h38q25 0 25 25v352q0 25 -25 25h-126q-25 0 -25 -25v-352q0 -25 25 -25h39v-223h-138v75h99v73q-20 0 -38 8t-31.5 21.5t-21.5 31.5t-8 39v352q0 21 8 39t21.5 31.5t31.5 21.5t38 8h125q42 0 71 -29t29 -71v-352q0 -42 -29 -71t-71 -29v-73h100v-75h-137z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="763" +d="M539 386q5 0 9 6q2 3 3 6q0 49 -16 79.5t-42 51.5q-25 20 -54.5 27t-57.5 7q-27 0 -55 -8.5t-52 -27.5q-27 -21 -45 -55.5t-18 -85.5h328zM731 295h-520v-37q0 -42 12 -72.5t32 -51.5q26 -28 60 -40.5t66 -12.5q44 0 82 8.5t68 27.5t53 50t37 76q16 6 35 6q16 0 31 -5.5 +t26 -16.5q-3 -35 -24 -76.5t-62.5 -77.5t-102.5 -60t-143 -24q-78 0 -142 29t-110 76t-71.5 106.5t-25.5 121.5q0 61 25.5 121t71.5 107t110 76t142 29t142 -29t110.5 -76.5t72 -107.5t25.5 -121v-26z" /> + <glyph glyph-name="partialdiff" unicode="∂" +d="M333 90q0 -38 -26 -64t-64 -26h-98q-18 0 -34.5 7t-29 19t-19.5 28.5t-7 35.5v290q0 37 26.5 63.5t63.5 26.5h48q57 0 72 -45v185q0 22 -22 22h-68v68h68q19 0 35.5 -7t28.5 -19.5t19 -29t7 -34.5v-520zM265 380q0 22 -22 22h-98q-22 0 -22 -22v-290q0 -22 22 -22h98 +q22 0 22 22v290z" /> + <glyph glyph-name="uni2206" unicode="∆" horiz-adv-x="425" +d="M108 75h208l-104 508zM167 700h91l150 -700h-391z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="435" +d="M380 0h-75v625h-175v-625h-75v700h325v-700z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="414" +d="M387 0h-332v75l161 275l-161 275v75h317v-75h-241l161 -275l-161 -275h256v-75z" /> + <glyph glyph-name="minus" unicode="−" horiz-adv-x="460" +d="M30 201v67h400v-67h-400z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="307" +d="M293 800l-231 -951h-48l232 951h47z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="190" +d="M45 235q0 21 14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="493" +d="M493 700l-175 -700h-94l-73 292h-121v67h175l66 -281l151 622h71z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="640" +d="M215 155q14 0 24 2.5t16 14.5l31 62l-31 63q-6 12 -16 14.5t-24 2.5h-60q-32 0 -32 -32v-95q0 -32 32 -32h60zM485 155q32 0 32 32v95q0 32 -32 32h-61q-14 0 -24 -2.5t-16 -14.5l-32 -63l32 -62q6 -12 16 -14.5t24 -2.5h61zM424 87q-37 0 -58.5 17t-35.5 44l-11 21 +l-10 -21q-14 -27 -35.5 -44t-58.5 -17h-60q-42 0 -71 29t-29 71v95q0 42 29 71t71 29h60q37 0 58.5 -17t35.5 -44l10 -21l11 21q14 27 35.5 44t58.5 17h61q42 0 71 -29t29 -71v-95q0 -42 -29 -71t-71 -29h-61z" /> + <glyph glyph-name="integral" unicode="∫" horiz-adv-x="260" +d="M254 632h-68q-22 0 -22 -22v-670q0 -38 -26 -64t-64 -26h-68v68h68q22 0 22 22v670q0 37 26.5 63.5t63.5 26.5h68v-68z" /> + <glyph glyph-name="approxequal" unicode="≈" horiz-adv-x="460" +d="M174 153q-8 8 -16 8q-7 0 -15 -8l-69 -70l-48 49l69 69q27 27 63 27q37 0 64 -27l64 -64q8 -8 16 -8q7 0 15 8l69 70l48 -49l-69 -69q-27 -27 -64 -27q-36 0 -63 27zM174 332q-8 8 -16 8q-7 0 -15 -8l-69 -70l-48 49l69 69q27 27 63 27q37 0 64 -27l64 -64q8 -8 16 -8 +q7 0 15 8l69 70l48 -49l-69 -69q-27 -27 -64 -27q-36 0 -63 27z" /> + <glyph glyph-name="notequal" unicode="≠" horiz-adv-x="460" +d="M430 291h-154l-38 -113h192v-67h-214l-37 -112h-53l37 112h-133v67h155l38 113h-193v67h215l37 111h53l-37 -111h132v-67z" /> + <glyph glyph-name="lessequal" unicode="≤" horiz-adv-x="460" +d="M30 66h338l-338 138v89l400 163v-72l-331 -136l331 -135v-114h-400v67z" /> + <glyph glyph-name="greaterequal" unicode="≥" horiz-adv-x="460" +d="M430 -1h-400v114l331 135l-331 136v72l400 -163v-89l-339 -138h339v-67z" /> + <glyph glyph-name="lozenge" unicode="◊" horiz-adv-x="460" +d="M114 351l115 -282l115 280l-116 282zM42 351l142 349h89l143 -351l-142 -349h-89z" /> + <glyph glyph-name="uniF6C3" unicode="" +d="M244 -75q0 -10 -4 -20l-49 -105h-37l26 78q-11 2 -23.5 14t-12.5 33t14.5 35.5t35.5 14.5t35.5 -14.5t14.5 -35.5z" /> + <glyph glyph-name="uniFB01" unicode="fi" horiz-adv-x="432" +d="M298 608q0 19 13.5 32.5t32.5 13.5t32.5 -13.5t13.5 -32.5t-13.5 -32.5t-32.5 -13.5t-32.5 13.5t-13.5 32.5zM377 0h-68v402h-157v-402h-68v402h-70v68h70v140q0 18 7 34.5t19 29t28.5 19.5t35.5 7h68v-68h-68q-22 0 -22 -22v-140h225v-470z" /> + <glyph glyph-name="uniFB02" unicode="fl" horiz-adv-x="432" +d="M377 0h-68v632h-135q-22 0 -22 -22v-140h90v-68h-90v-402h-68v402h-70v68h70v140q0 18 7 34.5t19 29t28.5 19.5t35.5 7h203v-700z" /> + <glyph glyph-name="glyph329" horiz-adv-x="305" +d="M105 55h145v-55h-200v80q0 31 17 53l128 163q5 6 5 20v39q0 10 -10 10h-75q-10 0 -10 -10v-54h-55v54q0 29 18 47t47 18h75q29 0 47 -18t18 -47v-39q0 -31 -17 -53l-128 -163q-5 -6 -5 -20v-25z" /> + <glyph glyph-name="glyph330" horiz-adv-x="294" +d="M257 92h-30v-92h-55v92h-135v51l132 277h58v-273h30v-55zM172 147v172l-78 -172h78z" /> + <glyph glyph-name="glyph360" +d="M144 575q0 10 4 20l49 105h37l-26 -78q11 -2 23.5 -14t12.5 -33t-14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5z" /> + <glyph glyph-name="glyph373" horiz-adv-x="0" + /> + </font> +</defs></svg> diff --git a/admin/fonts/c0a349550b33f079982cf073e98cc67c.ttf b/admin/fonts/c0a349550b33f079982cf073e98cc67c.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4ce70dd979d26c160001dfee3f6466742df0f096 Binary files /dev/null and b/admin/fonts/c0a349550b33f079982cf073e98cc67c.ttf differ diff --git a/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff b/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff new file mode 100644 index 0000000000000000000000000000000000000000..6c51f4a781c393be06ff46dea67622d9a53cf7d0 Binary files /dev/null and b/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff differ diff --git a/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff2 b/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0182c1033b11c4d1318c1978399baed8b1efec0c Binary files /dev/null and b/admin/fonts/c0a349550b33f079982cf073e98cc67c.woff2 differ diff --git a/admin/fonts/d664bf6951144f64f00f5b48099019d3.eot b/admin/fonts/d664bf6951144f64f00f5b48099019d3.eot new file mode 100644 index 0000000000000000000000000000000000000000..c8899602bfb574d4adb86f24a501e0f7f6d5ac91 Binary files /dev/null and b/admin/fonts/d664bf6951144f64f00f5b48099019d3.eot differ diff --git a/admin/fonts/d664bf6951144f64f00f5b48099019d3.svg b/admin/fonts/d664bf6951144f64f00f5b48099019d3.svg new file mode 100644 index 0000000000000000000000000000000000000000..945faae4f0232993e59811c667d9d48884fd073f --- /dev/null +++ b/admin/fonts/d664bf6951144f64f00f5b48099019d3.svg @@ -0,0 +1,518 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Sat Jun 29 15:42:44 2019 + By www +Copyright (c) 2008 by Mark Simonson. All rights reserved. +</metadata> +<defs> +<font id="RefrigeratorDeluxeW01-Bold" horiz-adv-x="450" > + <font-face + font-family="RefrigeratorDeluxeW01-Bold" + font-weight="700" + font-stretch="normal" + units-per-em="1000" + panose-1="2 1 8 6 2 2 2 5 2 3" + ascent="775" + descent="-225" + x-height="470" + cap-height="700" + bbox="-100 -230 873 923" + underline-thickness="90" + underline-position="-105" + unicode-range="U+000D-2122" + /> +<missing-glyph horiz-adv-x="0" + /> + <glyph glyph-name=".notdef" horiz-adv-x="0" + /> + <glyph glyph-name=".null" horiz-adv-x="0" + /> + <glyph glyph-name="uni000D" unicode="
" horiz-adv-x="200" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="200" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="200" +d="M150 200h-100v500h100v-500zM160 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="351" +d="M307 700l-37 -201h-48l-37 201h122zM166 700l-37 -201h-48l-37 201h122z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="533" +d="M175 259h124l60 182h-124zM279 199h-124l-66 -199h-64l66 199h-71l20 60h71l60 182h-71l20 60h71l66 199h64l-66 -199h124l66 199h64l-66 -199h75l-20 -60h-75l-60 -182h75l-20 -60h-75l-66 -199h-64z" /> + <glyph glyph-name="dollar" unicode="$" +d="M326 361q31 -16 52.5 -43.5t21.5 -61.5v-66q0 -42 -29 -71t-71 -29h-30v-90h-90v90h-30q-42 0 -71 29t-29 71v74h100v-74h150v61l-176 90q-31 16 -52.5 43.5t-21.5 61.5v64q0 42 29 71t71 29h30v90h90v-90h30q42 0 71 -29t29 -71v-71h-100v71h-150v-60z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="649" +d="M275 416q0 -28 -19.5 -47.5t-48.5 -19.5h-89q-29 0 -48.5 19.5t-19.5 47.5v217q0 28 20 47.5t48 19.5h89q28 0 48 -19.5t20 -47.5v-217zM473 700l-232 -700h-64l232 700h64zM599 67q0 -28 -19.5 -47.5t-47.5 -19.5h-90q-28 0 -47.5 19.5t-19.5 47.5v217q0 28 19.5 47.5 +t47.5 19.5h90q28 0 47.5 -19.5t19.5 -47.5v-217zM207 416v217h-89v-217h89zM532 67v217h-90v-217h90z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="600" +d="M242 100l59 117l-105 104l-46 -47v-174h92zM376 143l-44 -87q-5 -9 -13.5 -19t-20.5 -18t-26 -13.5t-29 -5.5h-93q-42 0 -71 29t-29 71v174q0 23 7.5 39t21.5 30l46 47l-41 42q-14 14 -24 34.5t-10 40.5v93q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150 +v-90l199 -198l55 108h112l-92 -182l175 -172l-72 -73z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="200" +d="M161 701l-37 -201h-48l-37 201h122z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="219" +d="M143 -151q-106 175 -106 476q0 300 106 475h64q-80 -180 -80 -475q0 -296 80 -476h-64z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="219" +d="M182 325q0 -301 -106 -476h-64q80 180 80 476q0 295 -80 475h64q106 -175 106 -475z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="320" +d="M185 512l14 -102h-78l14 102l-81 -63l-39 67l95 39l-95 39l39 67l81 -64l-14 103h78l-14 -102l81 63l39 -67l-97 -39l97 -39l-39 -67z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="448" +d="M424 190h-158v-154h-90v154h-152v90h152v156h90v-156h158v-90z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="200" +d="M160 52q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="261" +d="M236 190h-211v90h211v-90z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="200" +d="M160 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="295" +d="M295 800l-231 -951h-64l232 951h63z" /> + <glyph glyph-name="zero" unicode="0" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="362" +d="M337 0h-300v100h100v500h-100v100h200v-600h100v-100z" /> + <glyph glyph-name="two" unicode="2" +d="M300 511v89h-150v-100h-100v100q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-89q0 -16 -4.5 -31t-12.5 -26l-233 -298v-56h250v-100h-350v156q0 16 4.5 31t12.5 26z" /> + <glyph glyph-name="three" unicode="3" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v100h100v-100h150v220h-150v100h150v180h-150v-100h-100v100q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-154q0 -57 -50 -77q50 -18 50 -77v-192z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="449" +d="M412 150h-50v-150h-100v150h-225v100l225 450h100v-450h50v-100zM262 250v261l-126 -261h126z" /> + <glyph glyph-name="five" unicode="5" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v100h100v-100h150v270h-150v-50h-100v380h340v-100h-240v-180q20 50 78 50h72q42 0 71 -29t29 -71v-270z" /> + <glyph glyph-name="six" unicode="6" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-230q20 50 78 50h72q42 0 71 -29t29 -71v-220zM300 100v220h-150v-220h150z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="412" +d="M375 600l-140 -600h-110l146 600h-146v-100h-100v200h350v-100z" /> + <glyph glyph-name="eight" unicode="8" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v193q0 57 50 77q-50 20 -50 77v153q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-153q0 -57 -50 -77q50 -20 50 -77v-193zM300 420v180h-150v-180h150zM300 100v220h-150v-220h150z" /> + <glyph glyph-name="nine" unicode="9" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v100h100v-100h150v230q-18 -50 -77 -50h-73q-42 0 -71 29t-29 71v220q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 380v220h-150v-220h150z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="200" +d="M160 410q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM160 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="200" +d="M160 52q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41zM160 410q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="less" unicode="<" +d="M103 233l322 -110v-96l-400 141v133l400 141v-96z" /> + <glyph glyph-name="equal" unicode="=" +d="M425 280h-400v90h400v-90zM425 100h-400v90h400v-90z" /> + <glyph glyph-name="greater" unicode=">" +d="M25 123l322 112l-322 111v96l400 -141v-133l-400 -141v96z" /> + <glyph glyph-name="question" unicode="?" +d="M400 516q0 -48 -49 -97l-115 -115l52 -54l-72 -72l-54 52q-26 26 -26 67q0 47 30 77l134 134v92h-150v-100h-100v100q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-84zM286 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5 +t17.5 -42.5z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="563" +d="M338 380h-120v-290h120v290zM403 0q-20 0 -32 7t-20 16q-9 10 -13 23q-4 -13 -14 -23q-8 -9 -22 -16t-36 -7h-48q-38 0 -64 26t-26 64v290q0 38 26 64t64 26h48q22 0 36 -7.5t22 -15.5q10 -11 14 -23v46h90v-425h45v317q0 40 -15 74.5t-41 60.5t-60.5 41t-74.5 15 +t-74.5 -15t-60.5 -41t-41 -60.5t-15 -74.5v-252q0 -40 15 -74.5t41 -60.5t60.5 -41t74.5 -15q26 0 51 7t45 19l21 -35q-25 -15 -55 -23.5t-62 -8.5q-48 0 -90.5 18t-74 49.5t-49.5 74t-18 90.5v252q0 48 18 90t49.5 73.5t74 50t90.5 18.5t90 -18.5t73.5 -50t49.5 -73.5 +t18 -90v-317q0 -19 -10.5 -32t-29.5 -13h-70z" /> + <glyph glyph-name="A" unicode="A" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="451" +d="M401 100q0 -42 -29 -71t-71 -29h-250v700h250q42 0 71 -29t29 -71v-153q0 -57 -50 -77q50 -20 50 -77v-193zM301 420v180h-150v-180h150zM301 100v220h-150v-220h150z" /> + <glyph glyph-name="C" unicode="C" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-500h150v100h100v-100z" /> + <glyph glyph-name="D" unicode="D" +d="M400 100q0 -42 -29 -71t-71 -29h-250v700h250q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="387" +d="M350 0h-300v700h300v-100h-200v-180h150v-100h-150v-220h200v-100z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="375" +d="M350 600h-200v-180h150v-100h-150v-320h-100v700h300v-100z" /> + <glyph glyph-name="G" unicode="G" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-500h150v170h-75v100h175v-270z" /> + <glyph glyph-name="H" unicode="H" +d="M400 0h-100v320h-150v-320h-100v700h100v-280h150v280h100v-700z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="200" +d="M150 0h-100v700h100v-700z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="400" +d="M350 100q0 -42 -29 -71t-71 -29h-125q-42 0 -71 29t-29 71v100h100v-100h125v600h100v-600z" /> + <glyph glyph-name="K" unicode="K" +d="M450 0h-114l-120 279l-66 -128v-151h-100v700h100v-358l182 358h106l-166 -324z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="375" +d="M350 0h-300v700h100v-600h200v-100z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="568" +d="M518 0h-100v444l-118 -444h-32l-118 444v-444h-100v700h126l108 -412l108 412h126v-700z" /> + <glyph glyph-name="N" unicode="N" +d="M400 0h-88l-162 458v-458h-100v700h108l142 -412v412h100v-700z" /> + <glyph glyph-name="O" unicode="O" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="437" +d="M400 380q0 -21 -8 -39t-21.5 -31.5t-31.5 -21.5t-39 -8h-150v-280h-100v700h250q42 0 71 -29t29 -71v-220zM300 380v220h-150v-220h150z" /> + <glyph glyph-name="Q" unicode="Q" +d="M400 100q0 -42 -29 -71t-71 -29h-25v-50h50v-100h-50q-42 0 -71 29t-29 71v50h-25q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150z" /> + <glyph glyph-name="R" unicode="R" +d="M400 0h-106l-66 280h-78v-280h-100v700h250q42 0 71 -29t29 -71v-220q0 -82 -79 -95zM300 380v220h-150v-220h150z" /> + <glyph glyph-name="S" unicode="S" +d="M352 309q48 -47 48 -106v-103q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v100h100v-100h150v116l-202 201q-48 47 -48 106v77q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-90z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="400" +d="M375 600h-125v-600h-100v600h-125v100h350v-100z" /> + <glyph glyph-name="U" unicode="U" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v600h100v-600h150v600h100v-600z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="448" +d="M436 700l-150 -700h-124l-150 700h111l101 -543l101 543h111z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="654" +d="M642 700l-120 -700h-119l-76 456l-76 -456h-119l-120 700h108l81 -528l80 528h93l79 -528l82 528h107z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="448" +d="M446 0h-119l-103 278l-103 -278h-119l160 366l-144 334h115l91 -246l91 246h115l-144 -334z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="400" +d="M400 700l-151 -430v-270h-100v270l-149 430h110l90 -320l90 320h110z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="432" +d="M395 0h-358v100l236 500h-228v100h342v-100l-236 -500h244v-100z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="245" +d="M220 -151h-170v951h170v-64h-107v-823h107v-64z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="295" +d="M295 -151h-64l-231 951h63z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="245" +d="M195 -151h-170v64h107v823h-107v64h170v-951z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="300" +d="M275 555l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="underscore" unicode="_" +d="M450 -90h-450v90h450v-90z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="400" +d="M285 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-48q-56 0 -72 46v-46h-90v700h90v-276q16 46 72 46h48q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-90h-90v90h-120v-290h120v90h90v-90z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h48q56 0 72 -46v276h90v-700zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="400" +d="M350 180h-210v-90h177v-90h-177q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-200zM260 270v110h-120v-110h120z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="290" +d="M265 380h-90v-380h-90v380h-70v90h70v140q0 19 7 35.5t19.5 28.5t29 19t34.5 7h90v-90h-90v-140h90v-90z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="400" +d="M350 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-154v90h154v106q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q56 0 72 -46v46h90v-530zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="400" +d="M350 0h-90v380h-120v-380h-90v700h90v-276q16 46 72 46h48q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="190" +d="M156 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM140 0h-90v470h90v-470z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="190" +d="M156 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM140 -60q0 -18 -7 -34.5t-19.5 -28.5t-29 -19.5t-34.5 -7.5h-90v90h90v530h90v-530z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="360" +d="M360 0h-100l-68 190l-52 -90v-100h-90v700h90v-448l120 218h96l-110 -194z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="190" +d="M140 0h-90v700h90v-700z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="580" +d="M530 0h-90v380h-105v-380h-90v380h-105v-380h-90v470h90v-46q16 46 72 46h41q56 0 72 -46q16 46 72 46h43q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="400" +d="M350 0h-90v380h-120v-380h-90v470h90v-46q16 46 72 46h48q38 0 64 -26t26 -64v-380z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="400" +d="M350 90q0 -37 -26.5 -63.5t-63.5 -26.5h-48q-56 0 -72 46v-196h-90v620h90v-46q16 46 72 46h48q37 0 63.5 -26.5t26.5 -63.5v-290zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="400" +d="M350 -150h-90v196q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v290q0 37 26.5 63.5t63.5 26.5h48q56 0 72 -46v46h90v-620zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="272" +d="M260 380h-120v-380h-90v470h90v-46q16 46 72 46h48v-90z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v70h90v-70h120v70l-140 66q-70 33 -70 90v64q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-70h-90v70h-120v-60l128 -60q82 -37 82 -92v-78z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="290" +d="M265 0h-90q-37 0 -63.5 26.5t-26.5 63.5v290h-70v90h70v140h90v-140h90v-90h-90v-290h90v-90z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v380h90v-380h120v380h90v-470z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="376" +d="M364 470l-118 -470h-116l-118 470h96l80 -356l80 356h96z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="532" +d="M520 470l-98 -470h-102l-54 272l-54 -272h-102l-98 470h96l60 -328l62 328h72l62 -328l60 328h96z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="376" +d="M364 0h-101l-75 175l-76 -175h-100l116 232l-116 238h100l76 -177l75 177h101l-116 -238z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="376" +d="M364 470l-174 -620h-96l46 150l-128 470h96l80 -336l80 336h96z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="350" +d="M325 0h-300v90l184 290h-176v90h286v-90l-184 -290h190v-90z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="258" +d="M139 -87h107v-64h-107q-26 0 -44.5 19t-18.5 45v380h-64v64h64v379q0 26 18.5 45t44.5 19h107v-64h-107v-359q0 -22 -11 -35t-26 -17q15 -4 26 -17.5t11 -35.5v-359z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="140" +d="M88 -200h-38v1000h38v-1000z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="258" +d="M119 272q0 22 11 35t26 17q-15 4 -26 17.5t-11 35.5v359h-107v64h107q26 0 44.5 -19t18.5 -45v-379h64v-64h-64v-380q0 -26 -18.5 -45t-44.5 -19h-107v64h107v359z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="335" +d="M25 575l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="200" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="200" +d="M160 420q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM150 -230h-100v500h100v-500z" /> + <glyph glyph-name="cent" unicode="¢" +d="M150 190h150v89h100v-89q0 -42 -29 -71t-71 -29h-30v-90h-90v90h-30q-42 0 -71 29t-29 71v320q0 42 29 71t71 29h30v90h90v-90h30q42 0 71 -29t29 -71v-86h-100v86h-150v-320z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="468" +d="M428 100q0 -42 -29 -71t-71 -29h-303v100h53v220h-50v100h50v180q0 42 29 71t71 29h100q42 0 71 -29t29 -71v-100h-100v100h-100v-180h100v-100h-100v-220h150v100h100v-100z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="549" +d="M499 481l-79 -79q3 -11 3 -22v-120q0 -14 -3 -24l76 -76l-64 -63l-76 76q-11 -3 -23 -3h-120h-12t-11 2l-74 -74l-64 64l74 74q-3 10 -3 24v120q0 11 3 23l-76 76l63 64l76 -76q12 3 24 3h120q12 0 24 -3l78 78zM333 260v120h-120v-120h120z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="442" +d="M25 410h96l-100 290h110l90 -320l90 320h110l-102 -290h98v-80h-126l-21 -60v-40h147v-80h-147v-150h-100v150h-145v80h145v40l-21 60h-124v80z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="140" +d="M50 -200v400h38v-400h-38zM88 400h-38v400h38v-400z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="400" +d="M350 320q0 -54 -48 -79q25 -19 25 -73v-78q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-74q-37 0 -63.5 26.5t-26.5 63.5v70h90v-70h74v82l-117 54q-70 31 -70 90v64q0 61 57 84q-34 25 -34 82v64q0 19 7 35.5t19.5 28.5t29 19t34.5 7h74q38 0 64 -26t26 -64v-70h-90 +v70h-74v-69l105 -51q82 -40 82 -92v-78zM260 265v125l-120 58v-128z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="400" +d="M340 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM180 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="797" +d="M716 350q0 66 -25 124t-68 101t-101 68t-124 25t-123.5 -25t-101 -68t-68.5 -101t-25 -124t25 -124t68.5 -101t101 -68t123.5 -25t124 25t101 68t68 101t25 124zM757 350q0 -74 -28.5 -139.5t-77 -114.5t-114 -77t-139.5 -28t-139.5 28t-114 77t-76.5 114.5t-28 139.5 +t28 139.5t76.5 114t114 77t139.5 28.5t139.5 -28.5t114 -77t77 -114t28.5 -139.5zM556 210q0 -26 -18.5 -45t-45.5 -19h-186q-26 0 -45 19t-19 45v280q0 26 19 45t45 19h186q27 0 45.5 -19t18.5 -45v-64h-64v64h-186v-280h186v64h64v-64z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="375" +d="M50 195h275v-85h-275v85zM240 460h-104v-95h104v95zM240 280v38q-3 -11 -11 -19q-7 -8 -18.5 -13.5t-29.5 -5.5h-39q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v85q0 42 26.5 66t63.5 24h41q18 0 29.5 -6t18.5 -13q8 -9 11 -19v108h-145v85h140q38 0 64 -26t26 -64v-330 +h-85z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="388" +d="M363 154l-44 -44l-125 125l125 125l44 -44l-81 -81zM194 154l-44 -44l-125 125l125 125l44 -44l-81 -81z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M425 100h-90v180h-310v90h400v-270z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="261" +d="M236 190h-211v90h211v-90z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="438" +d="M364 529q0 30 -11.5 57t-31 46.5t-46 31t-56.5 11.5t-56.5 -11.5t-46 -31t-31 -46.5t-11.5 -57t11.5 -56.5t31 -46t46 -31t56.5 -11.5t56.5 11.5t46 31t31 46t11.5 56.5zM398 529q0 -37 -14 -69.5t-38.5 -57t-57 -38.5t-69.5 -14t-69.5 14t-57 38.5t-38.5 57t-14 69.5 +t14 70t38.5 57.5t57 38.5t69.5 14t69.5 -14t57 -38.5t38.5 -57.5t14 -70zM300 430h-45l-46 65h-28v-65h-42v199h133q28 0 28 -28v-77q0 -29 -28 -29h-17zM258 538v49h-77v-49h77z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="400" +d="M317 577h-233v62h233v-62z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="253" +d="M228 611q0 -21 -8 -39.5t-21.5 -32t-32 -21.5t-39.5 -8t-39.5 8t-32.5 21.5t-22 32t-8 39.5t8 39.5t22 32.5t32.5 22t39.5 8t39.5 -8t32 -22t21.5 -32.5t8 -39.5zM181 611q0 23 -15.5 38.5t-38.5 15.5q-22 0 -38 -15.5t-16 -38.5q0 -22 16 -38t38 -16q23 0 38.5 16 +t15.5 38z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="448" +d="M24 90h152v135h-152v90h152v156h90v-156h158v-90h-158v-135h158v-90h-400v90z" /> + <glyph glyph-name="uni00B2" unicode="²" horiz-adv-x="310" +d="M195 589v41h-80v-49h-70v59q0 25 17.5 42.5t42.5 17.5h100q25 0 42.5 -17.5t17.5 -42.5v-51q0 -16 -4 -26.5t-12 -20.5l-134 -172v-20h150v-70h-220v90q0 16 4 26.5t12 20.5z" /> + <glyph glyph-name="uni00B3" unicode="³" horiz-adv-x="310" +d="M265 340q0 -25 -17.5 -42.5t-42.5 -17.5h-100q-25 0 -42.5 17.5t-17.5 42.5v65h70v-55h80v117h-90v70h90v93h-80v-55h-70v65q0 25 17.5 42.5t42.5 17.5h100q25 0 42.5 -17.5t17.5 -42.5v-92q0 -35 -30 -47q30 -11 30 -46v-115z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="400" +d="M285 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="400" +d="M140 -150h-90v620h90v-380h120v380h90v-470h-90v46q-16 -46 -72 -46t-72 46l24 -111v-85z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="437" +d="M334 662v-813h-38v813h-63v-813h-38v512q-35 0 -66 13.5t-54 36.5t-36.5 54t-13.5 66t13.5 65.5t36.5 53.5t54 36.5t66 13.5h217v-38h-78z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="200" +d="M160 242q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="400" +d="M274 -93q0 -25 -18 -43.5t-43 -18.5h-87v62h86v28h-61v70h62v-35h61v-63z" /> + <glyph glyph-name="uni00B9" unicode="¹" horiz-adv-x="266" +d="M233 280h-200v70h65v280h-65v70h135v-350h65v-70z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="375" +d="M50 195h275v-85h-275v85zM240 615h-105v-250h105v250zM325 370q0 -38 -26 -64t-64 -26h-95q-38 0 -64 26t-26 64v240q0 38 26 64t64 26h95q38 0 64 -26t26 -64v-240z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="388" +d="M363 235l-125 -125l-44 44l81 81l-81 81l44 44zM194 235l-125 -125l-44 44l81 81l-81 81l44 44z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="623" +d="M233 280h-200v70h65v280h-65v70h135v-350h65v-70zM462 700l-232 -700h-64l232 700h64zM590 85h-30v-85h-70v85h-135v70l133 265h72v-265h30v-70zM490 155v140l-66 -140h66z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="672" +d="M233 280h-200v70h65v280h-65v70h135v-350h65v-70zM462 700l-232 -700h-64l232 700h64zM557 309v41h-80v-49h-70v59q0 25 17.5 42.5t42.5 17.5h100q25 0 42.5 -17.5t17.5 -42.5v-51q0 -16 -4 -26.5t-12 -20.5l-134 -172v-20h150v-70h-220v90q0 16 4 26.5t12 20.5z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="667" +d="M265 340q0 -25 -17.5 -42.5t-42.5 -17.5h-100q-25 0 -42.5 17.5t-17.5 42.5v65h70v-55h80v117h-90v70h90v93h-80v-55h-70v65q0 25 17.5 42.5t42.5 17.5h100q25 0 42.5 -17.5t17.5 -42.5v-92q0 -35 -30 -47q30 -11 30 -46v-115zM506 700l-232 -700h-64l232 700h64zM634 85 +h-30v-85h-70v85h-135v70l133 265h72v-265h30v-70zM534 155v140l-66 -140h66z" /> + <glyph glyph-name="questiondown" unicode="¿" +d="M284 420q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM400 -130q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v84q0 48 49 97l115 115l-52 54l72 72l54 -52q26 -26 26 -67q0 -47 -30 -77l-134 -134v-92h150v100 +h100v-100z" /> + <glyph glyph-name="Agrave" unicode="À" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM320 798l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="Aacute" unicode="Á" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM310 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Acircumflex" unicode="Â" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM350 798l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="Atilde" unicode="Ã" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM83 828l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="Adieresis" unicode="Ä" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM365 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM205 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5 +t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="Aring" unicode="Å" +d="M438 0h-106l-20 100h-174l-20 -100h-106l150 700h126zM292 200l-65 326l-69 -326h134zM309 827q0 -35 -24 -59.5t-59 -24.5t-59.5 24.5t-24.5 59.5t24.5 59t59.5 24t59 -24t24 -59zM262 827q0 14 -11 24.5t-25 10.5t-24.5 -10.5t-10.5 -24.5t10.5 -25t24.5 -11t25 11 +t11 25z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="655" +d="M630 0h-300v100h-174l-40 -100h-116l307 700h323v-100h-200v-180h150v-100h-150v-220h200v-100zM330 200v326l-134 -326h134z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" +d="M299 -93q0 -25 -18 -43.5t-43 -18.5h-87v62h86v28h-61v65h-26q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-500h150v100h100v-100q0 -42 -29 -71t-71 -29h-62v-30h61v-63z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="387" +d="M350 0h-300v700h300v-100h-200v-180h150v-100h-150v-220h200v-100zM295 798l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="387" +d="M350 0h-300v700h300v-100h-200v-180h150v-100h-150v-220h200v-100zM285 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="387" +d="M350 0h-300v700h300v-100h-200v-180h150v-100h-150v-220h200v-100zM325 798l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="387" +d="M350 0h-300v700h300v-100h-200v-180h150v-100h-150v-220h200v-100zM340 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM180 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5 +t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="200" +d="M150 0h-100v700h100v-700zM197 798l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="200" +d="M150 0h-100v700h100v-700zM187 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="200" +d="M150 0h-100v700h100v-700zM227 798l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="200" +d="M150 0h-100v700h100v-700zM242 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM82 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="Eth" unicode="Ð" +d="M300 100v500h-150v-199h67v-62h-67v-239h150zM400 100q0 -42 -29 -71t-71 -29h-250v339h-66v62h66v299h250q42 0 71 -29t29 -71v-500z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" +d="M400 0h-88l-162 458v-458h-100v700h108l142 -412v412h100v-700zM83 828l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="Ograve" unicode="Ò" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150zM320 798l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="Oacute" unicode="Ó" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150zM310 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150zM350 798l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="Otilde" unicode="Õ" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150zM83 828l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="Odieresis" unicode="Ö" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-500zM300 100v500h-150v-500h150zM365 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM205 838 +q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="448" +d="M399 347l-112 -112l109 -109l-64 -63l-108 109l-108 -108l-64 64l108 107l-110 110l63 64l111 -110l111 112z" /> + <glyph glyph-name="Oslash" unicode="Ø" +d="M415 774l-41 -107q26 -29 26 -67v-500q0 -42 -29 -71t-71 -29h-150q-18 0 -39 8l-33 -82h-44l42 107q-26 29 -26 67v500q0 42 29 71t71 29h150q18 0 39 -8l32 82h44zM302 600h-152v-388zM300 100v388l-153 -388h153z" /> + <glyph glyph-name="Ugrave" unicode="Ù" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v600h100v-600h150v600h100v-600zM320 798l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="Uacute" unicode="Ú" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v600h100v-600h150v600h100v-600zM310 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v600h100v-600h150v600h100v-600zM350 798l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="Udieresis" unicode="Ü" +d="M400 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v600h100v-600h150v600h100v-600zM365 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM205 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5 +t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="400" +d="M400 700l-151 -430v-270h-100v270l-149 430h110l90 -320l90 320h110zM285 879l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="425" +d="M400 242q0 -21 -8 -39.5t-21.5 -32t-31.5 -21t-39 -7.5h-150v-142h-100v700h100v-138h150q42 0 71 -29t29 -71v-220zM300 242v220h-150v-220h150z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-61v90h61v290h-61v90h61v140h-120v-610h-90v610q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-108q0 -57 -50 -77q50 -18 50 -77v-258z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM285 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM277 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM317 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM50 598l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54 +q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM332 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5 +t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM172 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="390" +d="M340 0h-90v38q-5 -19 -25 -28.5t-34 -9.5h-59q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h176q38 0 64 -26t26 -64v-380zM250 90v110h-119v-110h119zM276 597q0 -35 -24 -59.5t-59 -24.5t-59.5 24.5t-24.5 59.5t24.5 59 +t59.5 24t59 -24t24 -59zM229 597q0 14 -11 24.5t-25 10.5t-24.5 -10.5t-10.5 -24.5t10.5 -25t24.5 -11t25 11t11 25z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="600" +d="M132 0q-18 0 -35 7t-29.5 19.5t-20 29t-7.5 34.5v110q0 42 26 66t64 24h61q48 0 59 -38v128h-176v90h161q52 0 60 -48q7 48 61 48h104q38 0 64 -26t26 -64v-200h-210v-90h177v-90h-161q-54 0 -61 48q-8 -48 -60 -48h-103zM460 270v110h-120v-110h120zM250 90v110h-119 +v-110h119z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="400" +d="M274 -93q0 -25 -18 -43.5t-43 -18.5h-87v62h86v28h-61v65h-11q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-90h-90v90h-120v-290h120v90h90v-90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-47v-30h61v-63z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="400" +d="M350 180h-210v-90h177v-90h-177q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-200zM260 270v110h-120v-110h120zM295 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="400" +d="M350 180h-210v-90h177v-90h-177q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-200zM260 270v110h-120v-110h120zM285 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="400" +d="M350 180h-210v-90h177v-90h-177q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-200zM260 270v110h-120v-110h120zM325 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="400" +d="M350 180h-210v-90h177v-90h-177q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-200zM260 270v110h-120v-110h120zM340 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5 +t17.5 -42.5zM180 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="190" +d="M140 0h-90v470h90v-470zM192 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="190" +d="M140 0h-90v470h90v-470zM182 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="190" +d="M140 0h-90v470h90v-470zM222 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="190" +d="M140 0h-90v470h90v-470zM237 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM77 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="400" +d="M260 90v290h-120v-290h120zM342 600l-54 -25l35 -73q16 -32 21.5 -62t5.5 -60v-290q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h54q36 0 53 -20l-40 87l-56 -26l-38 82l55 26l-38 81h99 +l20 -44l55 26z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="400" +d="M350 0h-90v380h-120v-380h-90v470h90v-46q16 46 72 46h48q38 0 64 -26t26 -64v-380zM58 598l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120zM295 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120zM285 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120zM325 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120zM58 598l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54 +q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v290q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-290zM260 90v290h-120v-290h120zM340 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5 +t42.5 17.5t42.5 -17.5t17.5 -42.5zM180 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="448" +d="M281 405q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM281 65q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM24 190v90h400v-90h-400z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="400" +d="M386 523l-52 -91q16 -23 16 -52v-290q0 -37 -26.5 -63.5t-63.5 -26.5h-120q-22 0 -46 12l-36 -65h-43l52 91q-17 23 -17 52v290q0 37 26.5 63.5t63.5 26.5h120q23 0 46 -12l37 65h43zM262 380h-122v-217zM260 90v217l-121 -217h121z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v380h90v-380h120v380h90v-470zM295 568l-44 -44l-125 125l44 44z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v380h90v-380h120v380h90v-470zM285 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v380h90v-380h120v380h90v-470zM325 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="400" +d="M350 0h-90v46q-16 -46 -72 -46h-48q-37 0 -63.5 26.5t-26.5 63.5v380h90v-380h120v380h90v-470zM340 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM180 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5 +t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="376" +d="M364 470l-174 -620h-96l46 150l-128 470h96l80 -336l80 336h96zM275 649l-125 -125l-44 44l125 125z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="400" +d="M350 90q0 -37 -26.5 -63.5t-63.5 -26.5h-48q-56 0 -72 46v-196h-90v850h90v-276q16 46 72 46h48q37 0 63.5 -26.5t26.5 -63.5v-290zM260 90v290h-120v-290h120z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="376" +d="M364 470l-174 -620h-96l46 150l-128 470h96l80 -336l80 336h96zM330 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM170 608q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5 +t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="190" +d="M140 0h-90v470h90v-470z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="625" +d="M600 0h-251v54q-4 -22 -20 -38t-41 -16h-138q-42 0 -71 29t-29 71v500q0 42 29 71t71 29h138q25 0 41 -16t20 -38v54h251v-100h-200v-180h150v-100h-150v-220h200v-100zM300 100v500h-150v-500h150z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="610" +d="M260 380h-120v-290h120v290zM470 380h-120v-110h120v110zM245 470q27 0 42.5 -12t18.5 -29q3 17 18 29t42 12h104q38 0 64 -26t26 -64v-200h-210v-90h177v-90h-161q-27 0 -42.5 12t-18.5 29q-3 -17 -18 -29t-42 -12h-105q-38 0 -64 26t-26 64v290q0 38 26 64t64 26h105z +" /> + <glyph glyph-name="Scaron" unicode="Š" +d="M352 309q48 -47 48 -106v-103q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v100h100v-100h150v116l-202 201q-48 47 -48 106v77q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-90zM225 754l-125 125l44 44l81 -81l81 81l44 -44z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="400" +d="M350 90q0 -18 -7 -34.5t-19 -29t-28.5 -19.5t-35.5 -7h-120q-37 0 -63.5 26.5t-26.5 63.5v70h90v-70h120v70l-140 66q-70 33 -70 90v64q0 19 7 35.5t19.5 28.5t29 19t34.5 7h120q38 0 64 -26t26 -64v-70h-90v70h-120v-60l128 -60q82 -37 82 -92v-78zM200 524l-125 125 +l44 44l81 -81l81 81l44 -44z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="400" +d="M400 700l-151 -430v-270h-100v270l-149 430h110l90 -320l90 320h110zM340 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM180 838q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5 +t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="432" +d="M395 0h-358v100l236 500h-228v100h342v-100l-236 -500h244v-100zM216 754l-125 125l44 44l81 -81l81 81l44 -44z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="350" +d="M325 0h-300v90l184 290h-176v90h286v-90l-184 -290h190v-90zM177 524l-125 125l44 44l81 -81l81 81l44 -44z" /> + <glyph glyph-name="florin" unicode="ƒ" horiz-adv-x="311" +d="M286 310h-91v-370q0 -38 -26 -64t-64 -26h-90v90h90v370h-89v90h89v210q0 19 7 35.5t19.5 28.5t29 19t34.5 7h91v-90h-91v-210h91v-90z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="400" +d="M325 568l-44 -44l-81 81l-81 -81l-44 44l125 125z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="400" +d="M200 524l-125 125l44 44l81 -81l81 81l44 -44z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="400" +d="M283 597q0 -35 -24 -59.5t-59 -24.5t-59.5 24.5t-24.5 59.5t24.5 59t59.5 24t59 -24t24 -59zM236 597q0 14 -11 24.5t-25 10.5t-24.5 -10.5t-10.5 -24.5t10.5 -25t24.5 -11t25 11t11 25z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="400" +d="M58 598l54 54q18 18 44 18t44 -18l46 -45l54 54l43 -44l-54 -54q-18 -18 -44 -18t-44 18l-46 45l-53 -53z" /> + <glyph glyph-name="endash" unicode="–" +d="M425 190h-400v90h400v-90z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="654" +d="M629 190h-604v90h604v-90z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="200" +d="M152 549q0 -25 -17.5 -42.5t-42.5 -17.5q-24 0 -42 17t-18 41q0 12 8 30l56 122h48l-30 -96q36 -13 38 -54z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="200" +d="M160 652q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="200" +d="M160 52q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="351" +d="M315 549q0 -25 -17.5 -42.5t-42.5 -17.5q-24 0 -42 17t-18 41q0 12 8 30l56 122h48l-30 -96q36 -13 38 -54zM156 549q0 -25 -17.5 -42.5t-42.5 -17.5q-24 0 -42 17t-18 41q0 12 8 30l56 122h48l-30 -96q36 -13 38 -54z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="346" +d="M310 652q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41zM156 652q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="354" +d="M314 52q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41zM160 52q0 -12 -8 -30l-56 -122h-48l30 96q-38 14 -38 54q0 25 17.5 42.5t42.5 17.5q24 0 42 -17t18 -41z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="348" +d="M323 519h-117v-319h-64v319h-117v64h117v117h64v-117h117v-64z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="348" +d="M323 317h-117v-117h-64v117h-117v64h117v138h-117v64h117v117h64v-117h117v-64h-117v-138h117v-64z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="393" +d="M353 235q0 -33 -12.5 -61.5t-33.5 -49.5t-49.5 -33.5t-61.5 -12.5q-32 0 -60.5 12.5t-49.5 33.5t-33.5 49.5t-12.5 61.5t12.5 61.5t33.5 49.5t49.5 33.5t60.5 12.5q33 0 61.5 -12.5t49.5 -33.5t33.5 -49.5t12.5 -61.5z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="600" +d="M560 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM360 50q0 -25 -17.5 -42.5t-42.5 -17.5t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5zM160 50q0 -25 -17.5 -42.5t-42.5 -17.5 +t-42.5 17.5t-17.5 42.5t17.5 42.5t42.5 17.5t42.5 -17.5t17.5 -42.5z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="923" +d="M873 67q0 -28 -19.5 -47.5t-47.5 -19.5h-90q-28 0 -47.5 19.5t-19.5 47.5v217q0 28 19.5 47.5t47.5 19.5h90q28 0 47.5 -19.5t19.5 -47.5v-217zM806 67v217h-90v-217h90zM275 416q0 -28 -19.5 -47.5t-48.5 -19.5h-89q-29 0 -48.5 19.5t-19.5 47.5v217q0 28 20 47.5 +t48 19.5h89q28 0 48 -19.5t20 -47.5v-217zM473 700l-232 -700h-64l232 700h64zM599 67q0 -28 -19.5 -47.5t-47.5 -19.5h-90q-28 0 -47.5 19.5t-19.5 47.5v217q0 28 19.5 47.5t47.5 19.5h90q28 0 47.5 -19.5t19.5 -47.5v-217zM207 416v217h-89v-217h89zM532 67v217h-90v-217 +h90z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="219" +d="M194 166l-44 -44l-125 125l125 125l44 -44l-81 -81z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="219" +d="M194 247l-125 -125l-44 44l81 81l-81 81l44 44z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="96" +d="M196 700l-232 -700h-64l232 700h64z" /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="475" +d="M425 100q0 -42 -29 -71t-71 -29h-150q-42 0 -71 29t-29 71v125h-50v100h50v46h-50v100h50v129q0 42 29 71t71 29h150q42 0 71 -29t29 -71v-100h-100v100h-150v-129h137v-100h-137v-46h137v-100h-137v-125h150v100h100v-100z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="443" +d="M393 420h-40v178l-48 -178h-12l-48 178v-178h-40v280h51l43 -165l43 165h51v-280zM165 660h-50v-240h-40v240h-50v40h140v-40z" /> + <glyph glyph-name="glyph206" horiz-adv-x="310" +d="M195 309v41h-80v-49h-70v59q0 25 17.5 42.5t42.5 17.5h100q25 0 42.5 -17.5t17.5 -42.5v-51q0 -16 -4 -26.5t-12 -20.5l-134 -172v-20h150v-70h-220v90q0 16 4 26.5t12 20.5z" /> + <glyph glyph-name="glyph207" horiz-adv-x="301" +d="M268 85h-30v-85h-70v85h-135v70l133 265h72v-265h30v-70zM168 155v140l-66 -140h66z" /> + <glyph glyph-name="glyph225" horiz-adv-x="0" + /> + </font> +</defs></svg> diff --git a/admin/fonts/d664bf6951144f64f00f5b48099019d3.ttf b/admin/fonts/d664bf6951144f64f00f5b48099019d3.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a2a3a2e4693822004eb594b06a3238ab08ddaa48 Binary files /dev/null and b/admin/fonts/d664bf6951144f64f00f5b48099019d3.ttf differ diff --git a/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff b/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff new file mode 100644 index 0000000000000000000000000000000000000000..c290095bcbd3557347a21a9f35b2807d3f6672dc Binary files /dev/null and b/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff differ diff --git a/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff2 b/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8f733ee9c4906e2d3c16f9116926469481107bf3 Binary files /dev/null and b/admin/fonts/d664bf6951144f64f00f5b48099019d3.woff2 differ diff --git a/admin/gallery.php b/admin/gallery.php new file mode 100644 index 0000000000000000000000000000000000000000..c09b3e71b61085072e7f20076af5609053c7eccd --- /dev/null +++ b/admin/gallery.php @@ -0,0 +1,52 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_GET['deleteMedia'])) { + $id = $_GET['deleteMedia']; + $res=$bdd->query("SELECT * FROM gallery WHERE id = ".$id); + $result = $res->fetch(); + $sql = $bdd->prepare( "DELETE FROM gallery WHERE id =:id" ); + $sql->bindParam(':id', $id); + $sql->execute(); + unlink('upload/'.$result["path"]); + header("Location: gallery.php"); +} + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Gallerie</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> + + <!-- dropzone --> + <link rel="stylesheet" href="vendors/dropzone-5.7.0/dist/dropzone.css"> + <script src="vendors/dropzone-5.7.0/dist/dropzone.js"></script> +</head> +<body> + <style type="text/css"> + .gallery{ + } + .gallery img{ + width: 25vw; + border-radius: 10px; + margin: 1vw; + } + </style> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <?php include getTranslation("gallery"); ?> + </div> + </div> + <script type="text/javascript" src="js/drag-config.js"></script> +</body> +</html> \ No newline at end of file diff --git a/admin/images/286x180.jpg b/admin/images/286x180.jpg new file mode 100644 index 0000000000000000000000000000000000000000..52f01043ce74fcd466349ca46f85d4cb85362124 Binary files /dev/null and b/admin/images/286x180.jpg differ diff --git a/admin/images/black-back-pattern-10.jpg b/admin/images/black-back-pattern-10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6997a49470f712a9a8ae3618e9b5257688a85ce0 Binary files /dev/null and b/admin/images/black-back-pattern-10.jpg differ diff --git a/admin/images/black-back-pattern.jpg b/admin/images/black-back-pattern.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d1686b184e6ffa8445dfed5a2fb4215c5542f3d Binary files /dev/null and b/admin/images/black-back-pattern.jpg differ diff --git a/admin/images/vbcms-logo-dark.png b/admin/images/vbcms-logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9fb126f704c136390c0d1029dd9ec8042a2499 Binary files /dev/null and b/admin/images/vbcms-logo-dark.png differ diff --git a/admin/images/vbcms-logo-mini.png b/admin/images/vbcms-logo-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..55cb80c6366ff823d634d5c92193d1a67784b42e Binary files /dev/null and b/admin/images/vbcms-logo-mini.png differ diff --git a/admin/images/vbcms-logo.png b/admin/images/vbcms-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..29a710990acb3656acc8f428297b5e0fb34b20f3 Binary files /dev/null and b/admin/images/vbcms-logo.png differ diff --git a/admin/includes/SourceQuery.php b/admin/includes/SourceQuery.php new file mode 100644 index 0000000000000000000000000000000000000000..fb43697a12829bc8d7aab30f99a4009d928433bd --- /dev/null +++ b/admin/includes/SourceQuery.php @@ -0,0 +1,153 @@ +<?php +class SourceQuery { + + public function __construct($ip, $port=27015) { + $this->ip = $ip; + $this->port = $port; + } + + protected function query($query) { + $fp = fsockopen('udp://' . $this->ip, $this->port, $errno, $errstr, 2); + if (!$fp) { + trigger_error('The server does not respond', E_USER_NOTICE); + return false; + } else { + fwrite($fp, $query); + stream_set_timeout($fp, 2); + $result = ''; + do { + $result .= fread ($fp, 1); + $fpstatus = socket_get_status($fp); + } while ($fpstatus['unread_bytes']); + fclose($fp); + return $result; + } + } + + protected function getChallenge() { + $challenge = $this->query("\xFF\xFF\xFF\xFFU\xFF\xFF\xFF\xFF"); + return substr($challenge, 5); + } + + // Hex to Signed Dec http://fr2.php.net/manual/en/function.hexdec.php#97172 + private function hexdecs($hex){ + $dec = hexdec($hex); + $max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2))); + $_dec = $max - $dec; + return $dec > $_dec ? -$_dec : $dec; + } + + public function getInfos() { + $infos = $this->query("\xFF\xFF\xFF\xFFTSource Engine Query\x00"); + + // Détermine le protocole utilisé + $protocol = hexdec(substr(bin2hex($infos), 8, 2)); + + if($protocol == 109) return $this->getInfos1($infos); + else if($protocol == 73) return $this->getInfos2($infos); + + trigger_error('Unknown server type', E_USER_NOTICE); + return false; + } + + protected function getInfos1($infos) { + // Split informations + $infos = chunk_split(substr(bin2hex($infos), 10), 2, '\\'); + @list($serveur['ip'], $serveur['name'], $serveur['map'], $serveur['mod'], $serveur['modname'], $serveur['params']) = explode('\\00', $infos); + + // Split parameters + $serveur['params'] = substr($serveur['params'],0,18); + + $serveur['params'] = chunk_split(str_replace('\\', '', $serveur['params']), 2, ' '); + list($params['players'], $params['places'], $params['protocol'], $params['dedie'], $params['os'], $params['pass']) = explode(' ', $serveur['params']); + $params = array( + 'id' => 0, // Unsupported + 'bots' => 0, // Unsupported + 'ip' => $this->ip, + 'port' => $this->port, + 'players' => hexdec($params['players']), + 'places' => hexdec($params['places']), + 'protocol' => hexdec($params['protocol']), + 'dedie' => chr(hexdec($params['dedie'])), + 'os' => chr(hexdec($params['os'])), + 'pass' => hexdec($params['pass']) + ); + unset($serveur['ip']); + unset($serveur['params']); + + $serveur = array_map(function($item){ + return pack("H*", str_replace('\\', '', $item)); + }, $serveur); + + $infos = ($params + $serveur); + return $infos; + } + + protected function getInfos2($infos) { + // Split informations + $infos = chunk_split(substr(bin2hex($infos), 12), 2, '\\'); + @list($serveur['name'], $serveur['map'], $serveur['mod'], $serveur['modname'], $serveur['params']) = explode('\\00', $infos, 5); + + // Split parameters + $serveur['params'] = substr($serveur['params'], 0); + + $serveur['params'] = chunk_split(str_replace('\\', '', $serveur['params']), 2, ' '); + list($params['id1'], $params['id2'], $params['players'], $params['places'], $params['bots'], $params['dedie'], $params['os'], $params['pass']) = explode(' ', $serveur['params']); + $params=array( + 'id' => hexdec($params['id2'] . $params['id1']), + 'ip' => $this->ip, + 'port' => $this->port, + 'players' => hexdec($params['players']), + 'places' => hexdec($params['places']), + 'bots' => hexdec($params['bots']), + 'protocol' => 73, + 'dedie' => chr(hexdec($params['dedie'])), + 'os' => chr(hexdec($params['os'])), + 'pass' => hexdec($params['pass']) + ); + unset($serveur['params']); + + $serveur = array_map(function($item){ + return pack("H*", str_replace('\\', '', $item)); + }, $serveur); + + $infos = ($serveur + $params); + return $infos; + } + + public function getPlayers() { + $challenge = $this->getChallenge(); + + $infos = $this->query("\xFF\xFF\xFF\xFFU" . $challenge); + + $infos = chunk_split(substr(bin2hex($infos), 12), 2, '\\'); + + $infos = explode('\\', $infos); + + $players = array(); + for ($i = 0; isset($infos[$i + 1]); $i = $j + 9) { + + // Player name + $name = ''; + for ($j = $i + 1; isset($infos[$j]) && $infos[$j] != '00'; $j++) $name .= chr(hexdec($infos[$j])); + + if (!isset($infos[$j + 8])) break; + + // Gametime + eval('$time="\x'.trim(chunk_split($infos[$j + 5] . $infos[$j + 6] . $infos[$j + 7] . $infos[$j + 8], 2,"\x"), "\x") . '";'); + list(,$time) = unpack('f', $time); + + // Score + $score = ltrim($infos[$j + 4] . $infos[$j + 3] . $infos[$j + 2] . $infos[$j + 1], '0'); + + $players[] = array( + 'id' => hexdec($infos[$i]), + 'name' => $name, + 'score' => empty($score)? 0 : $this->hexdecs($score), + 'time' => $time + ); + } + return $players; + } +} +?> \ No newline at end of file diff --git a/admin/includes/bdd.php b/admin/includes/bdd.php new file mode 100644 index 0000000000000000000000000000000000000000..c148ef15bf598ad2a322c3132535ba11a5a1e505 --- /dev/null +++ b/admin/includes/bdd.php @@ -0,0 +1,16 @@ +<?php +include 'config.php'; +try { + $bddConn = new PDO("mysql:host=$bddHost;dbname=$bddName", $bddUser, $bddMdp); //Test de la connexion + $bddConn = null; +} catch (PDOException $e) { + $bddError = true; + print "Erreur !: " . $e->getMessage() . "<br/>"; + die(); +} +if (!isset($bddError)){ + $bdd = new PDO("mysql:host=$bddHost;dbname=$bddName", $bddUser, $bddMdp); + $bdd->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); + $bdd->query("SET NAMES 'utf8'"); +} +?> \ No newline at end of file diff --git a/admin/includes/browser-check.php b/admin/includes/browser-check.php new file mode 100644 index 0000000000000000000000000000000000000000..a089be7eba5b9bb2038c2690c7538fa2db3d75e3 --- /dev/null +++ b/admin/includes/browser-check.php @@ -0,0 +1,1841 @@ +<?php +/** + * File: Browser.php + * Author: Chris Schuld (http://chrisschuld.com/) + * Last Modified: April 14th, 2020 + * @version 1.9.6 + * + * Copyright 2019 Chris Schuld + * + * 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. + * + * Typical Usage: + * + * $browser = new Browser(); + * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { + * echo 'You have FireFox version 2 or greater'; + * } + * + * User Agents Sampled from: http://www.useragentstring.com/ + * + * This implementation is based on the original work from Gary White + * http://apptools.com/phptools/browser/ + * + */ +class Browser +{ + private $_agent = ''; + private $_browser_name = ''; + private $_version = ''; + private $_platform = ''; + private $_os = ''; + private $_is_aol = false; + private $_is_mobile = false; + private $_is_tablet = false; + private $_is_robot = false; + private $_is_facebook = false; + private $_aol_version = ''; + + const BROWSER_UNKNOWN = 'unknown'; + const VERSION_UNKNOWN = 'unknown'; + + const BROWSER_OPERA = 'Opera'; // http://www.opera.com/ + const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/ + const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/ + const BROWSER_EDGE = 'Edge'; // https://www.microsoft.com/edge + const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/ + const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile + const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/ + const BROWSER_ICAB = 'iCab'; // http://www.icab.de/ + const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/ + const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/ + const BROWSER_FIREFOX = 'Firefox'; // https://www.mozilla.org/en-US/firefox/ + const BROWSER_BRAVE = 'Brave'; // https://brave.com/ + const BROWSER_PALEMOON = 'Palemoon'; // https://www.palemoon.org/ + const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/ + const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko + const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/ + const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/ + const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx + const BROWSER_SAFARI = 'Safari'; // http://apple.com + const BROWSER_IPHONE = 'iPhone'; // http://apple.com + const BROWSER_IPOD = 'iPod'; // http://apple.com + const BROWSER_IPAD = 'iPad'; // http://apple.com + const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome + const BROWSER_ANDROID = 'Android'; // http://www.android.com/ + const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot + const BROWSER_CURL = 'cURL'; // https://en.wikipedia.org/wiki/CURL + const BROWSER_WGET = 'Wget'; // https://en.wikipedia.org/wiki/Wget + const BROWSER_UCBROWSER = 'UCBrowser'; // https://www.ucweb.com/ + + + const BROWSER_YANDEXBOT = 'YandexBot'; // http://yandex.com/bots + const BROWSER_YANDEXIMAGERESIZER_BOT = 'YandexImageResizer'; // http://yandex.com/bots + const BROWSER_YANDEXIMAGES_BOT = 'YandexImages'; // http://yandex.com/bots + const BROWSER_YANDEXVIDEO_BOT = 'YandexVideo'; // http://yandex.com/bots + const BROWSER_YANDEXMEDIA_BOT = 'YandexMedia'; // http://yandex.com/bots + const BROWSER_YANDEXBLOGS_BOT = 'YandexBlogs'; // http://yandex.com/bots + const BROWSER_YANDEXFAVICONS_BOT = 'YandexFavicons'; // http://yandex.com/bots + const BROWSER_YANDEXWEBMASTER_BOT = 'YandexWebmaster'; // http://yandex.com/bots + const BROWSER_YANDEXDIRECT_BOT = 'YandexDirect'; // http://yandex.com/bots + const BROWSER_YANDEXMETRIKA_BOT = 'YandexMetrika'; // http://yandex.com/bots + const BROWSER_YANDEXNEWS_BOT = 'YandexNews'; // http://yandex.com/bots + const BROWSER_YANDEXCATALOG_BOT = 'YandexCatalog'; // http://yandex.com/bots + + const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp + const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/ + const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/ + const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat + const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60 + const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform + const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/ + const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm + const BROWSER_BINGBOT = 'Bing Bot'; // http://en.wikipedia.org/wiki/Bingbot + const BROWSER_VIVALDI = 'Vivaldi'; // https://vivaldi.com/ + const BROWSER_YANDEX = 'Yandex'; // https://browser.yandex.ua/ + + const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED) + const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED) + const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) + const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) + const BROWSER_PLAYSTATION = "PlayStation"; + const BROWSER_SAMSUNG = "SamsungBrowser"; + const BROWSER_SILK = "Silk"; + const BROWSER_I_FRAME = "Iframely"; + const BROWSER_COCOA = "CocoaRestClient"; + + const PLATFORM_UNKNOWN = 'unknown'; + const PLATFORM_WINDOWS = 'Windows'; + const PLATFORM_WINDOWS_CE = 'Windows CE'; + const PLATFORM_APPLE = 'Apple'; + const PLATFORM_LINUX = 'Linux'; + const PLATFORM_OS2 = 'OS/2'; + const PLATFORM_BEOS = 'BeOS'; + const PLATFORM_IPHONE = 'iPhone'; + const PLATFORM_IPOD = 'iPod'; + const PLATFORM_IPAD = 'iPad'; + const PLATFORM_BLACKBERRY = 'BlackBerry'; + const PLATFORM_NOKIA = 'Nokia'; + const PLATFORM_FREEBSD = 'FreeBSD'; + const PLATFORM_OPENBSD = 'OpenBSD'; + const PLATFORM_NETBSD = 'NetBSD'; + const PLATFORM_SUNOS = 'SunOS'; + const PLATFORM_OPENSOLARIS = 'OpenSolaris'; + const PLATFORM_ANDROID = 'Android'; + const PLATFORM_PLAYSTATION = "Sony PlayStation"; + const PLATFORM_ROKU = "Roku"; + const PLATFORM_APPLE_TV = "Apple TV"; + const PLATFORM_TERMINAL = "Terminal"; + const PLATFORM_FIRE_OS = "Fire OS"; + const PLATFORM_SMART_TV = "SMART-TV"; + const PLATFORM_CHROME_OS = "Chrome OS"; + const PLATFORM_JAVA_ANDROID = "Java/Android"; + const PLATFORM_POSTMAN = "Postman"; + const PLATFORM_I_FRAME = "Iframely"; + + const OPERATING_SYSTEM_UNKNOWN = 'unknown'; + + /** + * Class constructor + * @param string $userAgent + */ + public function __construct($userAgent = '') + { + if ($userAgent != '') { + $this->setUserAgent($userAgent); + } else { + $this->reset(); + $this->determine(); + } + } + + /** + * Reset all properties + */ + public function reset() + { + $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; + $this->_browser_name = self::BROWSER_UNKNOWN; + $this->_version = self::VERSION_UNKNOWN; + $this->_platform = self::PLATFORM_UNKNOWN; + $this->_os = self::OPERATING_SYSTEM_UNKNOWN; + $this->_is_aol = false; + $this->_is_mobile = false; + $this->_is_tablet = false; + $this->_is_robot = false; + $this->_is_facebook = false; + $this->_aol_version = self::VERSION_UNKNOWN; + } + + /** + * Check to see if the specific browser is valid + * @param string $browserName + * @return bool True if the browser is the specified browser + */ + function isBrowser($browserName) + { + return (0 == strcasecmp($this->_browser_name, trim($browserName))); + } + + /** + * The name of the browser. All return types are from the class contants + * @return string Name of the browser + */ + public function getBrowser() + { + return $this->_browser_name; + } + + /** + * Set the name of the browser + * @param $browser string The name of the Browser + */ + public function setBrowser($browser) + { + $this->_browser_name = $browser; + } + + /** + * The name of the platform. All return types are from the class contants + * @return string Name of the browser + */ + public function getPlatform() + { + return $this->_platform; + } + + /** + * Set the name of the platform + * @param string $platform The name of the Platform + */ + public function setPlatform($platform) + { + $this->_platform = $platform; + } + + /** + * The version of the browser. + * @return string Version of the browser (will only contain alpha-numeric characters and a period) + */ + public function getVersion() + { + return $this->_version; + } + + /** + * Set the version of the browser + * @param string $version The version of the Browser + */ + public function setVersion($version) + { + $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/', '', $version); + } + + /** + * The version of AOL. + * @return string Version of AOL (will only contain alpha-numeric characters and a period) + */ + public function getAolVersion() + { + return $this->_aol_version; + } + + /** + * Set the version of AOL + * @param string $version The version of AOL + */ + public function setAolVersion($version) + { + $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/', '', $version); + } + + /** + * Is the browser from AOL? + * @return boolean True if the browser is from AOL otherwise false + */ + public function isAol() + { + return $this->_is_aol; + } + + /** + * Is the browser from a mobile device? + * @return boolean True if the browser is from a mobile device otherwise false + */ + public function isMobile() + { + return $this->_is_mobile; + } + + /** + * Is the browser from a tablet device? + * @return boolean True if the browser is from a tablet device otherwise false + */ + public function isTablet() + { + return $this->_is_tablet; + } + + /** + * Is the browser from a robot (ex Slurp,GoogleBot)? + * @return boolean True if the browser is from a robot otherwise false + */ + public function isRobot() + { + return $this->_is_robot; + } + + /** + * Is the browser from facebook? + * @return boolean True if the browser is from facebook otherwise false + */ + public function isFacebook() + { + return $this->_is_facebook; + } + + /** + * Set the browser to be from AOL + * @param $isAol + */ + public function setAol($isAol) + { + $this->_is_aol = $isAol; + } + + /** + * Set the Browser to be mobile + * @param boolean $value is the browser a mobile browser or not + */ + protected function setMobile($value = true) + { + $this->_is_mobile = $value; + } + + /** + * Set the Browser to be tablet + * @param boolean $value is the browser a tablet browser or not + */ + protected function setTablet($value = true) + { + $this->_is_tablet = $value; + } + + /** + * Set the Browser to be a robot + * @param boolean $value is the browser a robot or not + */ + protected function setRobot($value = true) + { + $this->_is_robot = $value; + } + + /** + * Set the Browser to be a Facebook request + * @param boolean $value is the browser a robot or not + */ + protected function setFacebook($value = true) + { + $this->_is_facebook = $value; + } + + /** + * Get the user agent value in use to determine the browser + * @return string The user agent from the HTTP header + */ + public function getUserAgent() + { + return $this->_agent; + } + + /** + * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) + * @param string $agent_string The value for the User Agent + */ + public function setUserAgent($agent_string) + { + $this->reset(); + $this->_agent = $agent_string; + $this->determine(); + } + + /** + * Used to determine if the browser is actually "chromeframe" + * @since 1.7 + * @return boolean True if the browser is using chromeframe + */ + public function isChromeFrame() + { + return (strpos($this->_agent, "chromeframe") !== false); + } + + /** + * Returns a formatted string with a summary of the details of the browser. + * @return string formatted string with a summary of the browser + */ + public function __toString() + { + return "<strong>Browser Name:</strong> {$this->getBrowser()}<br/>\n" . + "<strong>Browser Version:</strong> {$this->getVersion()}<br/>\n" . + "<strong>Browser User Agent String:</strong> {$this->getUserAgent()}<br/>\n" . + "<strong>Platform:</strong> {$this->getPlatform()}<br/>"; + } + + /** + * Protected routine to calculate and determine what the browser is in use (including platform) + */ + protected function determine() + { + $this->checkPlatform(); + $this->checkBrowsers(); + $this->checkForAol(); + } + + /** + * Protected routine to determine the browser type + * @return boolean True if the browser was detected otherwise false + */ + protected function checkBrowsers() + { + return ( + // well-known, well-used + // Special Notes: + // (1) Opera must be checked before FireFox due to the odd + // user agents used in some older versions of Opera + // (2) WebTV is strapped onto Internet Explorer so we must + // check for WebTV before IE + // (3) (deprecated) Galeon is based on Firefox and needs to be + // tested before Firefox is tested + // (4) OmniWeb is based on Safari so OmniWeb check must occur + // before Safari + // (5) Netscape 9+ is based on Firefox so Netscape checks + // before FireFox are necessary + // (6) Vivaldi is UA contains both Firefox and Chrome so Vivaldi checks + // before Firefox and Chrome + $this->checkBrowserWebTv() || + $this->checkBrowserBrave() || + $this->checkBrowserUCBrowser() || + $this->checkBrowserEdge() || + $this->checkBrowserInternetExplorer() || + $this->checkBrowserOpera() || + $this->checkBrowserGaleon() || + $this->checkBrowserNetscapeNavigator9Plus() || + $this->checkBrowserVivaldi() || + $this->checkBrowserYandex() || + $this->checkBrowserPalemoon() || + $this->checkBrowserFirefox() || + $this->checkBrowserChrome() || + $this->checkBrowserOmniWeb() || + + // common mobile + $this->checkBrowserAndroid() || + $this->checkBrowseriPad() || + $this->checkBrowseriPod() || + $this->checkBrowseriPhone() || + $this->checkBrowserBlackBerry() || + $this->checkBrowserNokia() || + + // common bots + $this->checkBrowserGoogleBot() || + $this->checkBrowserMSNBot() || + $this->checkBrowserBingBot() || + $this->checkBrowserSlurp() || + + // Yandex bots + $this->checkBrowserYandexBot() || + $this->checkBrowserYandexImageResizerBot() || + $this->checkBrowserYandexBlogsBot() || + $this->checkBrowserYandexCatalogBot() || + $this->checkBrowserYandexDirectBot() || + $this->checkBrowserYandexFaviconsBot() || + $this->checkBrowserYandexImagesBot() || + $this->checkBrowserYandexMediaBot() || + $this->checkBrowserYandexMetrikaBot() || + $this->checkBrowserYandexNewsBot() || + $this->checkBrowserYandexVideoBot() || + $this->checkBrowserYandexWebmasterBot() || + + // check for facebook external hit when loading URL + $this->checkFacebookExternalHit() || + + // WebKit base check (post mobile and others) + $this->checkBrowserSamsung() || + $this->checkBrowserSilk() || + $this->checkBrowserSafari() || + + // everyone else + $this->checkBrowserNetPositive() || + $this->checkBrowserFirebird() || + $this->checkBrowserKonqueror() || + $this->checkBrowserIcab() || + $this->checkBrowserPhoenix() || + $this->checkBrowserAmaya() || + $this->checkBrowserLynx() || + $this->checkBrowserShiretoko() || + $this->checkBrowserIceCat() || + $this->checkBrowserIceweasel() || + $this->checkBrowserW3CValidator() || + $this->checkBrowserCurl() || + $this->checkBrowserWget() || + $this->checkBrowserPlayStation() || + $this->checkBrowserIframely() || + $this->checkBrowserCocoa() || + $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */); + } + + /** + * Determine if the user is using a BlackBerry (last updated 1.7) + * @return boolean True if the browser is the BlackBerry browser otherwise false + */ + protected function checkBrowserBlackBerry() + { + if (stripos($this->_agent, 'blackberry') !== false) { + $aresult = explode('/', stristr($this->_agent, "BlackBerry")); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_BLACKBERRY; + $this->setMobile(true); + return true; + } + } + return false; + } + + /** + * Determine if the user is using an AOL User Agent (last updated 1.7) + * @return boolean True if the browser is from AOL otherwise false + */ + protected function checkForAol() + { + $this->setAol(false); + $this->setAolVersion(self::VERSION_UNKNOWN); + + if (stripos($this->_agent, 'aol') !== false) { + $aversion = explode(' ', stristr($this->_agent, 'AOL')); + if (isset($aversion[1])) { + $this->setAol(true); + $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1])); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the GoogleBot or not (last updated 1.7) + * @return boolean True if the browser is the GoogletBot otherwise false + */ + protected function checkBrowserGoogleBot() + { + if (stripos($this->_agent, 'googlebot') !== false) { + $aresult = explode('/', stristr($this->_agent, 'googlebot')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_GOOGLEBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexBot or not + * @return boolean True if the browser is the YandexBot otherwise false + */ + protected function checkBrowserYandexBot() + { + if (stripos($this->_agent, 'YandexBot') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexBot')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexImageResizer or not + * @return boolean True if the browser is the YandexImageResizer otherwise false + */ + protected function checkBrowserYandexImageResizerBot() + { + if (stripos($this->_agent, 'YandexImageResizer') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexImageResizer')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXIMAGERESIZER_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexCatalog or not + * @return boolean True if the browser is the YandexCatalog otherwise false + */ + protected function checkBrowserYandexCatalogBot() + { + if (stripos($this->_agent, 'YandexCatalog') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexCatalog')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXCATALOG_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexNews or not + * @return boolean True if the browser is the YandexNews otherwise false + */ + protected function checkBrowserYandexNewsBot() + { + if (stripos($this->_agent, 'YandexNews') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexNews')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXNEWS_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexMetrika or not + * @return boolean True if the browser is the YandexMetrika otherwise false + */ + protected function checkBrowserYandexMetrikaBot() + { + if (stripos($this->_agent, 'YandexMetrika') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexMetrika')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXMETRIKA_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexDirect or not + * @return boolean True if the browser is the YandexDirect otherwise false + */ + protected function checkBrowserYandexDirectBot() + { + if (stripos($this->_agent, 'YandexDirect') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexDirect')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXDIRECT_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexWebmaster or not + * @return boolean True if the browser is the YandexWebmaster otherwise false + */ + protected function checkBrowserYandexWebmasterBot() + { + if (stripos($this->_agent, 'YandexWebmaster') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexWebmaster')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXWEBMASTER_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexFavicons or not + * @return boolean True if the browser is the YandexFavicons otherwise false + */ + protected function checkBrowserYandexFaviconsBot() + { + if (stripos($this->_agent, 'YandexFavicons') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexFavicons')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXFAVICONS_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexBlogs or not + * @return boolean True if the browser is the YandexBlogs otherwise false + */ + protected function checkBrowserYandexBlogsBot() + { + if (stripos($this->_agent, 'YandexBlogs') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexBlogs')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXBLOGS_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexMedia or not + * @return boolean True if the browser is the YandexMedia otherwise false + */ + protected function checkBrowserYandexMediaBot() + { + if (stripos($this->_agent, 'YandexMedia') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexMedia')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXMEDIA_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexVideo or not + * @return boolean True if the browser is the YandexVideo otherwise false + */ + protected function checkBrowserYandexVideoBot() + { + if (stripos($this->_agent, 'YandexVideo') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexVideo')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXVIDEO_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the YandexImages or not + * @return boolean True if the browser is the YandexImages otherwise false + */ + protected function checkBrowserYandexImagesBot() + { + if (stripos($this->_agent, 'YandexImages') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YandexImages')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(';', '', $aversion[0])); + $this->_browser_name = self::BROWSER_YANDEXIMAGES_BOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the MSNBot or not (last updated 1.9) + * @return boolean True if the browser is the MSNBot otherwise false + */ + protected function checkBrowserMSNBot() + { + if (stripos($this->_agent, "msnbot") !== false) { + $aresult = explode("/", stristr($this->_agent, "msnbot")); + if (isset($aresult[1])) { + $aversion = explode(" ", $aresult[1]); + $this->setVersion(str_replace(";", '', $aversion[0])); + $this->_browser_name = self::BROWSER_MSNBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the BingBot or not (last updated 1.9) + * @return boolean True if the browser is the BingBot otherwise false + */ + protected function checkBrowserBingBot() + { + if (stripos($this->_agent, "bingbot") !== false) { + $aresult = explode("/", stristr($this->_agent, "bingbot")); + if (isset($aresult[1])) { + $aversion = explode(" ", $aresult[1]); + $this->setVersion(str_replace(";", '', $aversion[0])); + $this->_browser_name = self::BROWSER_BINGBOT; + $this->setRobot(true); + return true; + } + } + return false; + } + + /** + * Determine if the browser is the W3C Validator or not (last updated 1.7) + * @return boolean True if the browser is the W3C Validator otherwise false + */ + protected function checkBrowserW3CValidator() + { + if (stripos($this->_agent, 'W3C-checklink') !== false) { + $aresult = explode('/', stristr($this->_agent, 'W3C-checklink')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + return true; + } + } else if (stripos($this->_agent, 'W3C_Validator') !== false) { + // Some of the Validator versions do not delineate w/ a slash - add it back in + $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent); + $aresult = explode('/', stristr($ua, 'W3C_Validator')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + return true; + } + } else if (stripos($this->_agent, 'W3C-mobileOK') !== false) { + $this->_browser_name = self::BROWSER_W3CVALIDATOR; + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) + * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false + */ + protected function checkBrowserSlurp() + { + if (stripos($this->_agent, 'slurp') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Slurp')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->_browser_name = self::BROWSER_SLURP; + $this->setRobot(true); + $this->setMobile(false); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Brave or not + * @return boolean True if the browser is Brave otherwise false + */ + protected function checkBrowserBrave() + { + if (stripos($this->_agent, 'Brave/') !== false) { + $aResult = explode('/', stristr($this->_agent, 'Brave')); + if (isset($aResult[1])) { + $aversion = explode(' ', $aResult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_BRAVE); + return true; + } + } elseif (stripos($this->_agent, ' Brave ') !== false) { + $this->setBrowser(self::BROWSER_BRAVE); + // this version of the UA did not ship with a version marker + // e.g. Mozilla/5.0 (Linux; Android 7.0; SM-G955F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Brave Chrome/68.0.3440.91 Mobile Safari/537.36 + $this->setVersion(''); + return true; + } + return false; + } + + /** + * Determine if the browser is Edge or not + * @return boolean True if the browser is Edge otherwise false + */ + protected function checkBrowserEdge() + { + if ($name = (stripos($this->_agent, 'Edge/') !== false ? 'Edge' : ((stripos($this->_agent, 'Edg/') !== false || stripos($this->_agent, 'EdgA/') !== false) ? 'Edg' : false))) { + $aresult = explode('/', stristr($this->_agent, $name)); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_EDGE); + if (stripos($this->_agent, 'Windows Phone') !== false || stripos($this->_agent, 'Android') !== false) { + $this->setMobile(true); + } + return true; + } + } + return false; + } + + /** + * Determine if the browser is Internet Explorer or not (last updated 1.7) + * @return boolean True if the browser is Internet Explorer otherwise false + */ + protected function checkBrowserInternetExplorer() + { + // Test for IE11 + if (stripos($this->_agent, 'Trident/7.0; rv:11.0') !== false) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion('11.0'); + return true; + } // Test for v1 - v1.5 IE + else if (stripos($this->_agent, 'microsoft internet explorer') !== false) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion('1.0'); + $aresult = stristr($this->_agent, '/'); + if (preg_match('/308|425|426|474|0b1/i', $aresult)) { + $this->setVersion('1.5'); + } + return true; + } // Test for versions > 1.5 + else if (stripos($this->_agent, 'msie') !== false && stripos($this->_agent, 'opera') === false) { + // See if the browser is the odd MSN Explorer + if (stripos($this->_agent, 'msnb') !== false) { + $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'MSN')); + if (isset($aresult[1])) { + $this->setBrowser(self::BROWSER_MSN); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); + return true; + } + } + $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'msie')); + if (isset($aresult[1])) { + $this->setBrowser(self::BROWSER_IE); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1])); + if (stripos($this->_agent, 'IEMobile') !== false) { + $this->setBrowser(self::BROWSER_POCKET_IE); + $this->setMobile(true); + } + return true; + } + } // Test for versions > IE 10 + else if (stripos($this->_agent, 'trident') !== false) { + $this->setBrowser(self::BROWSER_IE); + $result = explode('rv:', $this->_agent); + if (isset($result[1])) { + $this->setVersion(preg_replace('/[^0-9.]+/', '', $result[1])); + $this->_agent = str_replace(array("Mozilla", "Gecko"), "MSIE", $this->_agent); + } + } // Test for Pocket IE + else if (stripos($this->_agent, 'mspie') !== false || stripos($this->_agent, 'pocket') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'mspie')); + if (isset($aresult[1])) { + $this->setPlatform(self::PLATFORM_WINDOWS_CE); + $this->setBrowser(self::BROWSER_POCKET_IE); + $this->setMobile(true); + + if (stripos($this->_agent, 'mspie') !== false) { + $this->setVersion($aresult[1]); + } else { + $aversion = explode('/', $this->_agent); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + } + } + return true; + } + } + return false; + } + + /** + * Determine if the browser is Opera or not (last updated 1.7) + * @return boolean True if the browser is Opera otherwise false + */ + protected function checkBrowserOpera() + { + if (stripos($this->_agent, 'opera mini') !== false) { + $resultant = stristr($this->_agent, 'opera mini'); + if (preg_match('/\//', $resultant)) { + $aresult = explode('/', $resultant); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } else { + $aversion = explode(' ', stristr($resultant, 'opera mini')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + } + } + $this->_browser_name = self::BROWSER_OPERA_MINI; + $this->setMobile(true); + return true; + } else if (stripos($this->_agent, 'opera') !== false) { + $resultant = stristr($this->_agent, 'opera'); + if (preg_match('/Version\/(1*.*)$/', $resultant, $matches)) { + $this->setVersion($matches[1]); + } else if (preg_match('/\//', $resultant)) { + $aresult = explode('/', str_replace("(", " ", $resultant)); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } else { + $aversion = explode(' ', stristr($resultant, 'opera')); + $this->setVersion(isset($aversion[1]) ? $aversion[1] : ''); + } + if (stripos($this->_agent, 'Opera Mobi') !== false) { + $this->setMobile(true); + } + $this->_browser_name = self::BROWSER_OPERA; + return true; + } else if (stripos($this->_agent, 'OPR') !== false) { + $resultant = stristr($this->_agent, 'OPR'); + if (preg_match('/\//', $resultant)) { + $aresult = explode('/', str_replace("(", " ", $resultant)); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } + } + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } + $this->_browser_name = self::BROWSER_OPERA; + return true; + } + return false; + } + + /** + * Determine if the browser is Chrome or not (last updated 1.7) + * @return boolean True if the browser is Chrome otherwise false + */ + protected function checkBrowserChrome() + { + if (stripos($this->_agent, 'Chrome') !== false) { + $aresult = preg_split('/[\/;]+/', stristr($this->_agent, 'Chrome')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_CHROME); + //Chrome on Android + if (stripos($this->_agent, 'Android') !== false) { + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + } + return true; + } + } + return false; + } + + + /** + * Determine if the browser is WebTv or not (last updated 1.7) + * @return boolean True if the browser is WebTv otherwise false + */ + protected function checkBrowserWebTv() + { + if (stripos($this->_agent, 'webtv') !== false) { + $aresult = explode('/', stristr($this->_agent, 'webtv')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_WEBTV); + return true; + } + } + return false; + } + + /** + * Determine if the browser is NetPositive or not (last updated 1.7) + * @return boolean True if the browser is NetPositive otherwise false + */ + protected function checkBrowserNetPositive() + { + if (stripos($this->_agent, 'NetPositive') !== false) { + $aresult = explode('/', stristr($this->_agent, 'NetPositive')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion(str_replace(array('(', ')', ';'), '', $aversion[0])); + $this->setBrowser(self::BROWSER_NETPOSITIVE); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Galeon or not (last updated 1.7) + * @return boolean True if the browser is Galeon otherwise false + */ + protected function checkBrowserGaleon() + { + if (stripos($this->_agent, 'galeon') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'galeon')); + $aversion = explode('/', $aresult[0]); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_GALEON); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Konqueror or not (last updated 1.7) + * @return boolean True if the browser is Konqueror otherwise false + */ + protected function checkBrowserKonqueror() + { + if (stripos($this->_agent, 'Konqueror') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'Konqueror')); + $aversion = explode('/', $aresult[0]); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_KONQUEROR); + return true; + } + } + return false; + } + + /** + * Determine if the browser is iCab or not (last updated 1.7) + * @return boolean True if the browser is iCab otherwise false + */ + protected function checkBrowserIcab() + { + if (stripos($this->_agent, 'icab') !== false) { + $aversion = explode(' ', stristr(str_replace('/', ' ', $this->_agent), 'icab')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_ICAB); + return true; + } + } + return false; + } + + /** + * Determine if the browser is OmniWeb or not (last updated 1.7) + * @return boolean True if the browser is OmniWeb otherwise false + */ + protected function checkBrowserOmniWeb() + { + if (stripos($this->_agent, 'omniweb') !== false) { + $aresult = explode('/', stristr($this->_agent, 'omniweb')); + $aversion = explode(' ', isset($aresult[1]) ? $aresult[1] : ''); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_OMNIWEB); + return true; + } + return false; + } + + /** + * Determine if the browser is Phoenix or not (last updated 1.7) + * @return boolean True if the browser is Phoenix otherwise false + */ + protected function checkBrowserPhoenix() + { + if (stripos($this->_agent, 'Phoenix') !== false) { + $aversion = explode('/', stristr($this->_agent, 'Phoenix')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_PHOENIX); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Firebird or not (last updated 1.7) + * @return boolean True if the browser is Firebird otherwise false + */ + protected function checkBrowserFirebird() + { + if (stripos($this->_agent, 'Firebird') !== false) { + $aversion = explode('/', stristr($this->_agent, 'Firebird')); + if (isset($aversion[1])) { + $this->setVersion($aversion[1]); + $this->setBrowser(self::BROWSER_FIREBIRD); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) + * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) + * @return boolean True if the browser is Netscape Navigator 9+ otherwise false + */ + protected function checkBrowserNetscapeNavigator9Plus() + { + if (stripos($this->_agent, 'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); + return true; + } else if (stripos($this->_agent, 'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR); + return true; + } + return false; + } + + /** + * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) + * @return boolean True if the browser is Shiretoko otherwise false + */ + protected function checkBrowserShiretoko() + { + if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_SHIRETOKO); + return true; + } + return false; + } + + /** + * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) + * @return boolean True if the browser is Ice Cat otherwise false + */ + protected function checkBrowserIceCat() + { + if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i', $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_ICECAT); + return true; + } + return false; + } + + /** + * Determine if the browser is Nokia or not (last updated 1.7) + * @return boolean True if the browser is Nokia otherwise false + */ + protected function checkBrowserNokia() + { + if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[2]); + if (stripos($this->_agent, 'Series60') !== false || strpos($this->_agent, 'S60') !== false) { + $this->setBrowser(self::BROWSER_NOKIA_S60); + } else { + $this->setBrowser(self::BROWSER_NOKIA); + } + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is Palemoon or not + * @return boolean True if the browser is Palemoon otherwise false + */ + protected function checkBrowserPalemoon() + { + if (stripos($this->_agent, 'safari') === false) { + if (preg_match("/Palemoon[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_PALEMOON); + return true; + } else if (preg_match("/Palemoon([0-9a-zA-Z\.]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_PALEMOON); + return true; + } else if (preg_match("/Palemoon/i", $this->_agent, $matches)) { + $this->setVersion(''); + $this->setBrowser(self::BROWSER_PALEMOON); + return true; + } + } + return false; + } + + /** + * Determine if the browser is UCBrowser or not + * @return boolean True if the browser is UCBrowser otherwise false + */ + protected function checkBrowserUCBrowser() + { + if (preg_match('/UC ?Browser\/?([\d\.]+)/', $this->_agent, $matches)) { + if (isset($matches[1])) { + $this->setVersion($matches[1]); + } + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + $this->setBrowser(self::BROWSER_UCBROWSER); + return true; + } + return false; + } + + /** + * Determine if the browser is Firefox or not + * @return boolean True if the browser is Firefox otherwise false + */ + protected function checkBrowserFirefox() + { + if (stripos($this->_agent, 'safari') === false) { + if (preg_match("/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_FIREFOX); + //Firefox on Android + if (stripos($this->_agent, 'Android') !== false || stripos($this->_agent, 'iPhone') !== false) { + if (stripos($this->_agent, 'Mobile') !== false || stripos($this->_agent, 'Tablet') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + } + return true; + } else if (preg_match("/Firefox([0-9a-zA-Z\.]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_FIREFOX); + return true; + } else if (preg_match("/Firefox$/i", $this->_agent, $matches)) { + $this->setVersion(''); + $this->setBrowser(self::BROWSER_FIREFOX); + return true; + } + } elseif (preg_match("/FxiOS[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_FIREFOX); + //Firefox on Android + if (stripos($this->_agent, 'Android') !== false || stripos($this->_agent, 'iPhone') !== false) { + if (stripos($this->_agent, 'Mobile') !== false || stripos($this->_agent, 'Tablet') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + } + return true; + } + return false; + } + + /** + * Determine if the browser is Firefox or not (last updated 1.7) + * @return boolean True if the browser is Firefox otherwise false + */ + protected function checkBrowserIceweasel() + { + if (stripos($this->_agent, 'Iceweasel') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Iceweasel')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_ICEWEASEL); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Mozilla or not (last updated 1.7) + * @return boolean True if the browser is Mozilla otherwise false + */ + protected function checkBrowserMozilla() + { + if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { + $aversion = explode(' ', stristr($this->_agent, 'rv:')); + preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion); + $this->setVersion(str_replace('rv:', '', $aversion[0])); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) { + $aversion = explode('', stristr($this->_agent, 'rv:')); + $this->setVersion(str_replace('rv:', '', $aversion[0])); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i', $this->_agent, $matches) && stripos($this->_agent, 'netscape') === false) { + $this->setVersion($matches[1]); + $this->setBrowser(self::BROWSER_MOZILLA); + return true; + } + return false; + } + + /** + * Determine if the browser is Lynx or not (last updated 1.7) + * @return boolean True if the browser is Lynx otherwise false + */ + protected function checkBrowserLynx() + { + if (stripos($this->_agent, 'lynx') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Lynx')); + $aversion = explode(' ', (isset($aresult[1]) ? $aresult[1] : '')); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_LYNX); + return true; + } + return false; + } + + /** + * Determine if the browser is Amaya or not (last updated 1.7) + * @return boolean True if the browser is Amaya otherwise false + */ + protected function checkBrowserAmaya() + { + if (stripos($this->_agent, 'amaya') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Amaya')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_AMAYA); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Safari or not (last updated 1.7) + * @return boolean True if the browser is Safari otherwise false + */ + protected function checkBrowserSafari() + { + if ( + stripos($this->_agent, 'Safari') !== false + && stripos($this->_agent, 'iPhone') === false + && stripos($this->_agent, 'iPod') === false + ) { + + $aresult = explode('/', stristr($this->_agent, 'Version')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_SAFARI); + return true; + } + return false; + } + + protected function checkBrowserSamsung() + { + if (stripos($this->_agent, 'SamsungBrowser') !== false) { + + $aresult = explode('/', stristr($this->_agent, 'SamsungBrowser')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_SAMSUNG); + return true; + } + return false; + } + + protected function checkBrowserSilk() + { + if (stripos($this->_agent, 'Silk') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Silk')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_SILK); + return true; + } + return false; + } + + protected function checkBrowserIframely() + { + if (stripos($this->_agent, 'Iframely') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Iframely')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_I_FRAME); + return true; + } + return false; + } + + protected function checkBrowserCocoa() + { + if (stripos($this->_agent, 'CocoaRestClient') !== false) { + $aresult = explode('/', stristr($this->_agent, 'CocoaRestClient')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + $this->setBrowser(self::BROWSER_COCOA); + return true; + } + return false; + } + + /** + * Detect if URL is loaded from FacebookExternalHit + * @return boolean True if it detects FacebookExternalHit otherwise false + */ + protected function checkFacebookExternalHit() + { + if (stristr($this->_agent, 'FacebookExternalHit')) { + $this->setRobot(true); + $this->setFacebook(true); + return true; + } + return false; + } + + /** + * Detect if URL is being loaded from internal Facebook browser + * @return boolean True if it detects internal Facebook browser otherwise false + */ + protected function checkForFacebookIos() + { + if (stristr($this->_agent, 'FBIOS')) { + $this->setFacebook(true); + return true; + } + return false; + } + + /** + * Detect Version for the Safari browser on iOS devices + * @return boolean True if it detects the version correctly otherwise false + */ + protected function getSafariVersionOnIos() + { + $aresult = explode('/', stristr($this->_agent, 'Version')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + return true; + } + return false; + } + + /** + * Detect Version for the Chrome browser on iOS devices + * @return boolean True if it detects the version correctly otherwise false + */ + protected function getChromeVersionOnIos() + { + $aresult = explode('/', stristr($this->_agent, 'CriOS')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_CHROME); + return true; + } + return false; + } + + /** + * Determine if the browser is iPhone or not (last updated 1.7) + * @return boolean True if the browser is iPhone otherwise false + */ + protected function checkBrowseriPhone() + { + if (stripos($this->_agent, 'iPhone') !== false) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPHONE); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is iPad or not (last updated 1.7) + * @return boolean True if the browser is iPad otherwise false + */ + protected function checkBrowseriPad() + { + if (stripos($this->_agent, 'iPad') !== false) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPAD); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setTablet(true); + return true; + } + return false; + } + + /** + * Determine if the browser is iPod or not (last updated 1.7) + * @return boolean True if the browser is iPod otherwise false + */ + protected function checkBrowseriPod() + { + if (stripos($this->_agent, 'iPod') !== false) { + $this->setVersion(self::VERSION_UNKNOWN); + $this->setBrowser(self::BROWSER_IPOD); + $this->getSafariVersionOnIos(); + $this->getChromeVersionOnIos(); + $this->checkForFacebookIos(); + $this->setMobile(true); + return true; + } + return false; + } + + /** + * Determine if the browser is Android or not (last updated 1.7) + * @return boolean True if the browser is Android otherwise false + */ + protected function checkBrowserAndroid() + { + if (stripos($this->_agent, 'Android') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'Android')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + } else { + $this->setVersion(self::VERSION_UNKNOWN); + } + if (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } else { + $this->setTablet(true); + } + $this->setBrowser(self::BROWSER_ANDROID); + return true; + } + return false; + } + + /** + * Determine if the browser is Vivaldi + * @return boolean True if the browser is Vivaldi otherwise false + */ + protected function checkBrowserVivaldi() + { + if (stripos($this->_agent, 'Vivaldi') !== false) { + $aresult = explode('/', stristr($this->_agent, 'Vivaldi')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_VIVALDI); + return true; + } + } + return false; + } + + /** + * Determine if the browser is Yandex + * @return boolean True if the browser is Yandex otherwise false + */ + protected function checkBrowserYandex() + { + if (stripos($this->_agent, 'YaBrowser') !== false) { + $aresult = explode('/', stristr($this->_agent, 'YaBrowser')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_YANDEX); + + if (stripos($this->_agent, 'iPad') !== false) { + $this->setTablet(true); + } elseif (stripos($this->_agent, 'Mobile') !== false) { + $this->setMobile(true); + } elseif (stripos($this->_agent, 'Android') !== false) { + $this->setTablet(true); + } + + return true; + } + } + + return false; + } + + /** + * Determine if the browser is a PlayStation + * @return boolean True if the browser is PlayStation otherwise false + */ + protected function checkBrowserPlayStation() + { + if (stripos($this->_agent, 'PlayStation ') !== false) { + $aresult = explode(' ', stristr($this->_agent, 'PlayStation ')); + $this->setBrowser(self::BROWSER_PLAYSTATION); + if (isset($aresult[0])) { + $aversion = explode(')', $aresult[2]); + $this->setVersion($aversion[0]); + if (stripos($this->_agent, 'Portable)') !== false || stripos($this->_agent, 'Vita') !== false) { + $this->setMobile(true); + } + return true; + } + } + return false; + } + + /** + * Determine if the browser is Wget or not (last updated 1.7) + * @return boolean True if the browser is Wget otherwise false + */ + protected function checkBrowserWget() + { + if (preg_match("!^Wget/([^ ]+)!i", $this->_agent, $aresult)) { + $this->setVersion($aresult[1]); + $this->setBrowser(self::BROWSER_WGET); + return true; + } + return false; + } + /** + * Determine if the browser is cURL or not (last updated 1.7) + * @return boolean True if the browser is cURL otherwise false + */ + protected function checkBrowserCurl() + { + if (strpos($this->_agent, 'curl') === 0) { + $aresult = explode('/', stristr($this->_agent, 'curl')); + if (isset($aresult[1])) { + $aversion = explode(' ', $aresult[1]); + $this->setVersion($aversion[0]); + $this->setBrowser(self::BROWSER_CURL); + return true; + } + } + return false; + } + + /** + * Determine the user's platform (last updated 2.0) + */ + protected function checkPlatform() + { + if (stripos($this->_agent, 'windows') !== false) { + $this->_platform = self::PLATFORM_WINDOWS; + } else if (stripos($this->_agent, 'iPad') !== false) { + $this->_platform = self::PLATFORM_IPAD; + } else if (stripos($this->_agent, 'iPod') !== false) { + $this->_platform = self::PLATFORM_IPOD; + } else if (stripos($this->_agent, 'iPhone') !== false) { + $this->_platform = self::PLATFORM_IPHONE; + } elseif (stripos($this->_agent, 'mac') !== false) { + $this->_platform = self::PLATFORM_APPLE; + } elseif (stripos($this->_agent, 'android') !== false) { + $this->_platform = self::PLATFORM_ANDROID; + } elseif (stripos($this->_agent, 'Silk') !== false) { + $this->_platform = self::PLATFORM_FIRE_OS; + } elseif (stripos($this->_agent, 'linux') !== false && stripos($this->_agent, 'SMART-TV') !== false) { + $this->_platform = self::PLATFORM_LINUX . '/' . self::PLATFORM_SMART_TV; + } elseif (stripos($this->_agent, 'linux') !== false) { + $this->_platform = self::PLATFORM_LINUX; + } else if (stripos($this->_agent, 'Nokia') !== false) { + $this->_platform = self::PLATFORM_NOKIA; + } else if (stripos($this->_agent, 'BlackBerry') !== false) { + $this->_platform = self::PLATFORM_BLACKBERRY; + } elseif (stripos($this->_agent, 'FreeBSD') !== false) { + $this->_platform = self::PLATFORM_FREEBSD; + } elseif (stripos($this->_agent, 'OpenBSD') !== false) { + $this->_platform = self::PLATFORM_OPENBSD; + } elseif (stripos($this->_agent, 'NetBSD') !== false) { + $this->_platform = self::PLATFORM_NETBSD; + } elseif (stripos($this->_agent, 'OpenSolaris') !== false) { + $this->_platform = self::PLATFORM_OPENSOLARIS; + } elseif (stripos($this->_agent, 'SunOS') !== false) { + $this->_platform = self::PLATFORM_SUNOS; + } elseif (stripos($this->_agent, 'OS\/2') !== false) { + $this->_platform = self::PLATFORM_OS2; + } elseif (stripos($this->_agent, 'BeOS') !== false) { + $this->_platform = self::PLATFORM_BEOS; + } elseif (stripos($this->_agent, 'win') !== false) { + $this->_platform = self::PLATFORM_WINDOWS; + } elseif (stripos($this->_agent, 'Playstation') !== false) { + $this->_platform = self::PLATFORM_PLAYSTATION; + } elseif (stripos($this->_agent, 'Roku') !== false) { + $this->_platform = self::PLATFORM_ROKU; + } elseif (stripos($this->_agent, 'iOS') !== false) { + $this->_platform = self::PLATFORM_IPHONE . '/' . self::PLATFORM_IPAD; + } elseif (stripos($this->_agent, 'tvOS') !== false) { + $this->_platform = self::PLATFORM_APPLE_TV; + } elseif (stripos($this->_agent, 'curl') !== false) { + $this->_platform = self::PLATFORM_TERMINAL; + } elseif (stripos($this->_agent, 'CrOS') !== false) { + $this->_platform = self::PLATFORM_CHROME_OS; + } elseif (stripos($this->_agent, 'okhttp') !== false) { + $this->_platform = self::PLATFORM_JAVA_ANDROID; + } elseif (stripos($this->_agent, 'PostmanRuntime') !== false) { + $this->_platform = self::PLATFORM_POSTMAN; + } elseif (stripos($this->_agent, 'Iframely') !== false) { + $this->_platform = self::PLATFORM_I_FRAME; + } + } +} diff --git a/admin/includes/config.php b/admin/includes/config.php new file mode 100644 index 0000000000000000000000000000000000000000..251e7d05951f54f87861b683be8aeeaaffea5bf8 --- /dev/null +++ b/admin/includes/config.php @@ -0,0 +1,10 @@ +<?php +$bddHost = ''; +$bddUser = ''; +$bddMdp = ''; +$bddName = ''; + +$installed = false; + +error_reporting(0); //désactive les messages d'erreur +?> \ No newline at end of file diff --git a/admin/includes/constants.php b/admin/includes/constants.php new file mode 100644 index 0000000000000000000000000000000000000000..50bca498eed8071cade12a0af573858a44546676 --- /dev/null +++ b/admin/includes/constants.php @@ -0,0 +1,57 @@ +<?php +include 'bdd.php'; + +if ($installed == true) { //vérifie si VBcms est installé + + +function getParameters ($parm){ + include 'bdd.php'; + $result = $bdd->query("SELECT value FROM settings WHERE parameter ='".$parm."'"); + $siteInfos = $result->fetch(); + return $siteInfos[0]; +} +function themeFeatures ($feature){ + $themeJsonFileContents = file_get_contents(getParameters("themePath")); + $themeJsonFileContents = json_decode($themeJsonFileContents); + if (in_array($feature, $themeJsonFileContents->features)) { + return true; + } else { + return false; + } +} +function getTranslation ($file){ + $path = "includes/translations/".getParameters("language")."/".$file; + return $path; +} +function uploadfiles ($fileUrl){ + $ch = curl_init($fileUrl); + $dir = './upload/'; + $file_name = basename($fileUrl); + $save_file_loc = $dir . $file_name; + $fp = fopen($save_file_loc, 'wb'); + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_setopt($ch, CURLOPT_HEADER, 0); + curl_exec($ch); + curl_close($ch); + fclose($fp); +} + +if (getParameters("themeInclude") != "") { + include getParameters("themeInclude"); +} + +if (isset($_GET["steamid"])) { + $playerSteamInfo = simplexml_load_file("http://steamcommunity.com/profiles/".$_GET["steamid"]."/?xml=1"); + $playerSteamName = $playerSteamInfo->steamID; + $playerSteamPic = $playerSteamInfo->avatarFull; +} + +if (getParameters("serverIp") != null) { + include 'SourceQuery.php'; + $serverInfos = new SourceQuery(getParameters("serverIp"), 27015); + $serverInfos = $serverInfos->getInfos(); +} + +}//Fin de la condition + +?> diff --git a/admin/includes/depedencies.php b/admin/includes/depedencies.php new file mode 100644 index 0000000000000000000000000000000000000000..23afbd25723fb439b12b34c38d1e5785d63ea06b --- /dev/null +++ b/admin/includes/depedencies.php @@ -0,0 +1,11 @@ +<!-- Intégration de Bootstrap 4.5 --> +<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> +<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> +<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> +<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> + +<!-- Intégration du style custom --> +<link rel="stylesheet" type="text/css" href="./css/styles.css"> + +<!-- Intégration de font awesome --> +<script src="https://kit.fontawesome.com/43b17b447b.js" crossorigin="anonymous"></script> \ No newline at end of file diff --git a/admin/includes/navbar.php b/admin/includes/navbar.php new file mode 100644 index 0000000000000000000000000000000000000000..e512b543eb5e5df6bf3be5cfc4be89c3fcb3ce46 --- /dev/null +++ b/admin/includes/navbar.php @@ -0,0 +1,31 @@ +<?php +$format = 'Y-m-d H:i:s'; + +$currentVJSON = file_get_contents('https://vbcms.sl-projects.com/getupdate.php?version='.getParameters("version")); +if ($currentVJSON != "false") { + $currentVInfo = json_decode($currentVJSON); + $currentVDate = $currentVInfo->date; + $currentVDate = DateTime::createFromFormat($format, $currentVDate); + + $newVJSON = file_get_contents('https://vbcms.sl-projects.com/getupdate.php?lastest'); + $newVInfo = json_decode($newVJSON); + $newVDate = $newVInfo->date; + $newVDate = DateTime::createFromFormat($format, $newVDate); + + if (($currentVDate<$newVDate) == true) { + $anUpdateIsAvailable = true; + } +} +?> +<!-- Image and text --> +<nav class="navbar navbar-light"> + <a class="navbar-brand" href="index.php"> + <img src="./images/vbcms-logo-mini.png" width="30" height="30" class="d-inline-block align-top" alt=""> + VBcms + </a> + <div class="form-inline my-2 my-lg-0"> + <?php if(isset($serverInfos) AND ($serverInfos == "")){ echo('<span class="badge badge-danger">Votre serveur semble éteint</span>');} ?> + <a class="text-white mx-2" href="update.php"><i class="fas fa-sync"></i> <?php if(isset($anUpdateIsAvailable)){ echo('<span class="badge badge-danger">New update available!</span>');} ?></a> + <button class="btn btn-outline-light disconnectButton my-2 my-sm-0" onclick="window.location.href='logout.php'"><?php if(getParameters("language") == "fr"){echo "Se déconnecter";}elseif (getParameters("language") == "en") {echo "Disconnect";} ?></button> + </div> +</nav> \ No newline at end of file diff --git a/admin/includes/notinstalled.php b/admin/includes/notinstalled.php new file mode 100644 index 0000000000000000000000000000000000000000..2baee134f5ec00fec8c1bc8f0828da963e9352dd --- /dev/null +++ b/admin/includes/notinstalled.php @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>VBcms n'est pas intallé</title> + <link rel="icon" type="image/png" href="admin/images/vbcms-logo-mini.png" /> + <link rel="stylesheet" type="text/css" href="admin/css/fonts.css"> +</head> +<body> + <style type="text/css"> + body{ + background-image: url("admin/images/black-back-pattern-10.jpg"); + color: white; + } + .centerDiv{ + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 50%; + height: 30%; + + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + font-family: "LTKaliber Bold"; + color: white; + font-size: 1.5em; + } + .centerDiv img{ + width: 20%; + } + .btn{ + background: #ed1c24; + border-radius: 10px; + padding: 20px 45px; + color: #ffffff; + display: inline-block; + font: normal bold 26px/1 "LTKaliber Bold"; + text-align: center; + } + a{ + text-decoration: none; + } + </style> + <div class="centerDiv"> + <img src="admin/images/vbcms-logo-dark.png"> + <p>Oh oh... Le panel ne semble pas être installé.<br> + Rejoins la page de Connexion.</p> + <a class="btn" href="admin/login.php">Installer VBcms</a> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/includes/sidebar.php b/admin/includes/sidebar.php new file mode 100644 index 0000000000000000000000000000000000000000..cfd8a3cb9ef5c665e5d4de6a02ee4eb78dd2796b --- /dev/null +++ b/admin/includes/sidebar.php @@ -0,0 +1,25 @@ + +<div class="sidebar bg-light border-right"> + <div class="list-group list-group-flush"> + <a href="index.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Accueil";}elseif (getParameters("language") == "en") {echo "Home";} ?></a> + + <a href="gallery.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Galerie";}elseif (getParameters("language") == "en") {echo "Gallery";} ?></a> + + <?php if (themeFeatures("tips") == true) {?> <a href="tips.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Astuces";}elseif (getParameters("language") == "en") {echo "Tips";} ?> <i class="fas fa-check-circle"></i></a> <?php } ?> + + <?php if (themeFeatures("alerts") == true) {?> <a href="alerts.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Alertes";}elseif (getParameters("language") == "en") {echo "Alerts";} ?> <i class="fas fa-check-circle"></i></a> <?php } ?> + + <?php if (themeFeatures("dynamicBackgrounds") == true OR themeFeatures("staticBackground") == true) {?> <a href="backgrounds.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Images de fond";}elseif (getParameters("language") == "en") {echo "Backgrounds";} ?> <i class="fas fa-check-circle"></i></a> <?php } ?> + + <a href="themes.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Thèmes";}elseif (getParameters("language") == "en") {echo "Themes";} ?></a> + <a href="settings.php" class="list-group-item list-group-item-action bg-light"><?php if(getParameters("language") == "fr"){echo "Paramètres généraux";}elseif (getParameters("language") == "en") {echo "Global settings";} ?></a> + <?php + if (getParameters("themeInclude") != "") { + echo customSidebar(); + } + ?> + </div> + <div class="fixed-bottom text-center" style="width: 15rem;"> + VBcms <a class="text-dark" href="update.php">v<?=getParameters("version")?></a> + </div> +</div> \ No newline at end of file diff --git a/admin/includes/translations/en/backgrounds b/admin/includes/translations/en/backgrounds new file mode 100644 index 0000000000000000000000000000000000000000..396914ee0ce10ff661daadcba2bf27fe26f2f9b1 --- /dev/null +++ b/admin/includes/translations/en/backgrounds @@ -0,0 +1,103 @@ +<div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1>Backgrounds images</h1> + <p>Here you can define the background images. Don't forget that the loading screen stylizes them all on its own.</p> + + <?php + $count= count(json_decode(getParameters("backgroundImages"))); + + if($count > 0){?> + <div class="alert alert-success border-0 alert-dismissible"> + <span class="font-weight-semibold"><?=$count?> images</span> where found. + </div> + <?php } else { ?> + <div class="alert alert-danger border-0 alert-dismissible"> + <span class="font-weight-semibold">Hep hep hep!</span> You haven't defined any images yet, watch out for the infinite loop! + </div> + <?php } + + if(isset($_POST['submit'])){ + if(!empty($_POST['usedBackground'])) { + // Counting number of checked checkboxes. + $checked_count = count($_POST['usedBackground']); + echo ('<div class="alert alert-success" role="alert">You have selected '.$checked_count." images.</div> <br/>"); + /*$truncate = $bdd->prepare('TRUNCATE TABLE backgroundImages'); + $truncate->execute();*/ + + $backgrounds = json_encode($_POST['usedBackground']); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([$backgrounds]); + }else{ + echo '<div class="alert alert-danger" role="alert">You must choose at least 1 image</div>'; + } + }?> + + <p>Background images <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#changeBackModal">Choose</button></p> + + <!-- Modal --> + <div class="modal fade" id="changeBackModal" tabindex="-1" role="dialog" aria-labelledby="changeBackModalTitle" aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <form action="backgrounds.php" method="post"> + <div class="modal-header"> + <h5 class="modal-title" id="changeBackModalTitle">Choose background images</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <?php + $res=$bdd->query("SELECT * FROM gallery"); + $result = $res->fetchAll(); + $count= count($result); + $backgroundImages = json_decode(getParameters("backgroundImages")); + if($count > 0){ + foreach( $result as $row ) { + if (in_array($row['1'], $backgroundImages)) { + $checked = "checked"; + } else { + $checked = ""; + } + $find = strpos($row["1"], "http"); + if ($find === false) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row["1"]); + } else{ + $picPath = $row["1"]; + } + echo ('<div class="gallery"><img src='.$picPath.'><input type="checkbox" name="usedBackground[]" value="'.$row['1'].'" '.$checked.'><label>Utiliser</label></div>'); + } + } else { + echo "No image is added yet. :("; + } + + + ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> + <button type="submit" name="submit" class="btn btn-primary">Save</button> + </div> + </form> + </div> + </div> + </div> + + <?php + if($count > 0){ + $backgroundImages = json_decode(getParameters("backgroundImages")); + echo ('<div class="gallery2 d-flex flex-wrap">'); + foreach( $backgroundImages as $row ) { + $find = strpos($row["1"], "http"); + if ($find === false) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row); + } else{ + $picPath = $row; + } + echo ('<div class="d-flex flex-column"><img src='.$picPath.'></div>'); + } + echo ('</div>'); + } + ?> + </div> +</div> \ No newline at end of file diff --git a/admin/includes/translations/en/gallery b/admin/includes/translations/en/gallery new file mode 100644 index 0000000000000000000000000000000000000000..1664b8dc3bc423345abf8ec18873f8c68c6635a6 --- /dev/null +++ b/admin/includes/translations/en/gallery @@ -0,0 +1,25 @@ +<h1>Image galery</h1> +<p>Quite useful to fill your loading screen. <i class="far fa-smile-wink"></i></p> +<?php +$res=$bdd->query("SELECT * FROM gallery"); +$count= count($res->fetchAll()); +if($count > 0){?> + <div class="alert alert-success border-0 alert-dismissible"> + <span class="font-weight-semibold"><?=$count?> images</span> were found. + </div> +<?php } else { ?> + <div class="alert alert-warning border-0 alert-dismissible"> + <span class="font-weight-semibold">Hep hep hep!</span> You have no images sent yet. + </div> +<?php } +echo ('<form action="media-upload.php" class="dropzone"><div class="fallback"><input name="file" type="file" multiple /></div></form>'); +if($count > 0){ + $res=$bdd->query("SELECT * FROM gallery ORDER BY id DESC"); + $result = $res->fetchAll(); + echo ('<div class="gallery d-flex flex-wrap">'); + foreach( $result as $row ) { + echo ('<div class="d-flex flex-column"><img class="galleryImage" src=upload/'.$row['path'].'><a href="gallery.php?deleteMedia='.$row['id'].'"><i class="far fa-trash-alt"></i> Delete</a></div>'); + } + echo ('</div>'); +} +?> \ No newline at end of file diff --git a/admin/includes/translations/en/index b/admin/includes/translations/en/index new file mode 100644 index 0000000000000000000000000000000000000000..b93e1b1a3bf225fac7ba56277f8f01c58ac06c51 --- /dev/null +++ b/admin/includes/translations/en/index @@ -0,0 +1,6 @@ +<h1>Welcome to VBcms!</h1> +<p>Thanks for installing VBcms. <i class="fas fa-heart"></i><br> + To start, choose a theme and upload images via the <b>Gallery</b> page, then go to <b>General settings</b> to set the background images. Don't forget to create a multitude of <b>tips</b> so that the player doesn't have to see the same one several times.<i class="far fa-smile-wink"></i></p> +<p>If you have any questions or find a bug, don't hesitate to let me know. I will correct the problem as soon as possible.<br> +Remember to take a look at the <a href="https://vbcms.sl-projects.com/doc-index.php">Panel Documentation</a>. ^^</p> +<p><b>Loading screen link:</b> <?=getParameters("siteUrl")?>?ststeamid=%s</p> \ No newline at end of file diff --git a/admin/includes/translations/en/settings b/admin/includes/translations/en/settings new file mode 100644 index 0000000000000000000000000000000000000000..1d358253505df0cde9a22fec9d355f518a5c2b16 --- /dev/null +++ b/admin/includes/translations/en/settings @@ -0,0 +1,66 @@ +<h1>Global settings</h1> +<p>Here you can adjust the parameters of the loading screen.</p> +<?php +if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Parameters updated successfully!</div>'); +} +?> +<form method="post" action="settings.php"> + <div class="form-group"> + <label>Language</label> + <select class="form-control" name="language"> + <option value="fr">Français</option> + <option value="en">English (may be incomplete)</option> + </select> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSiteName">Server logo</label> + <button type="button" class="btn btn-primary my-2" data-toggle="modal" data-target="#chooseServerLogo">Choisir</button> + <input type="text" id="serverLogo" name="serverLogo" class="form-control" value="<?=getParameters("serverLogo")?>" placeholder="Image link" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSiteName">Name of the site</label> + <input type="text" id="inputSiteName" name="inputSiteName" class="form-control" value="<?=getParameters("siteName")?>" placeholder="Gordon's website" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputUrl">Site url <b>(with a / at the end)</b></label> + <input type="text" id="inputUrl" name="inputUrl" class="form-control" value="<?=getParameters("siteUrl")?>" placeholder="https://gordonfreeman.blackmesa.us/" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputServerIp">Server's IP <b>(IP:Port)</b></label> + <input type="text" id="inputServerIp" name="inputServerIp" class="form-control" value="<?=getParameters("serverIp")?>" placeholder="server's ip" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSteamAPIkey">Steam API key <b>(voir <a href="https://steamcommunity.com/dev/apikey">ce lien</a>)</b></label> + <input type="text" id="inputSteamAPIkey" name="inputSteamAPIkey" class="form-control" value="<?=getParameters("steamAPIkey")?>" placeholder="Steam API key" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputTimeBackChange">Duration of the background image <b>(in ms)</b> <?php if (themeFeatures("dynamicBackgrounds") != true) {echo '<b>Non utilisé</b>';} ?></label> + <input type="text" id="inputTimeBackChange" name="inputTimeBackChange" class="form-control" value="<?=getParameters("timeBackChange")?>" placeholder="5000" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputPostChange">Duration of a tip <b>(in ms)</b> <?php if (themeFeatures("tips") != true) {echo '<b>Non utilisé</b>';} ?></label> + <input type="text" id="inputPostChange" name="inputPostChange" class="form-control" value="<?=getParameters("timePostChange")?>" placeholder="7000" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputMusic">Musics <b>(ogg format is prefered)</b> write in this form: <b>["chemin/vers/musique1.ogg","http://site.com/vers/musique2.ogg"]</b><?php if (themeFeatures("musics") != true) {echo '<br><b>Non used</b>';} ?></label> + <input type="text" id="inputMusic" name="inputMusic" class="form-control" value='<?=getParameters("musics")?>' required="required"> + </div> + </div> + <button type="submit" name="submit" value="update" class="btn btn-success my-2">Update</button> +</form> \ No newline at end of file diff --git a/admin/includes/translations/en/themes b/admin/includes/translations/en/themes new file mode 100644 index 0000000000000000000000000000000000000000..0525845d509fa97ba8a2989f8c40b592605aad10 --- /dev/null +++ b/admin/includes/translations/en/themes @@ -0,0 +1,3 @@ +<h1>Themes</h1> +<p>Here you can see and apply the installed themes.<br> + Current theme: <b><?=getParameters("theme")?></b></p> \ No newline at end of file diff --git a/admin/includes/translations/fr/backgrounds b/admin/includes/translations/fr/backgrounds new file mode 100644 index 0000000000000000000000000000000000000000..29a4af93a9ebda88b5b982951cd4f586c63b1d3e --- /dev/null +++ b/admin/includes/translations/fr/backgrounds @@ -0,0 +1,103 @@ +<div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1>Images de fond</h1> + <p>Ici tu peux définir les images de fond. N'oublie pas que l'écran de chargement les stylise tout seul.</p> + + <?php + $count= count(json_decode(getParameters("backgroundImages"))); + + if($count > 0){?> + <div class="alert alert-success border-0 alert-dismissible"> + <span class="font-weight-semibold"><?=$count?> images</span> ont été trouvées. + </div> + <?php } else { ?> + <div class="alert alert-danger border-0 alert-dismissible"> + <span class="font-weight-semibold">Hep hep hep!</span> Tu n'a encore défini aucune image, fait gaffe à la boucle infinie! + </div> + <?php } + + if(isset($_POST['submit'])){ + if(!empty($_POST['usedBackground'])) { + // Counting number of checked checkboxes. + $checked_count = count($_POST['usedBackground']); + echo ('<div class="alert alert-success" role="alert">Vous avez sélectionné '.$checked_count." images.</div> <br/>"); + /*$truncate = $bdd->prepare('TRUNCATE TABLE backgroundImages'); + $truncate->execute();*/ + + $backgrounds = json_encode($_POST['usedBackground']); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([$backgrounds]); + }else{ + echo '<div class="alert alert-danger" role="alert">Vous devez choisir au moins 1 image</div>'; + } + }?> + + <p>Images de fond <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#changeBackModal">Choisir</button></p> + + <!-- Modal --> + <div class="modal fade" id="changeBackModal" tabindex="-1" role="dialog" aria-labelledby="changeBackModalTitle" aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <form action="backgrounds.php" method="post"> + <div class="modal-header"> + <h5 class="modal-title" id="changeBackModalTitle">Choisir les images de fond</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <?php + $res=$bdd->query("SELECT * FROM gallery"); + $result = $res->fetchAll(); + $count= count($result); + $backgroundImages = json_decode(getParameters("backgroundImages")); + if($count > 0){ + foreach( $result as $row ) { + if (in_array($row['1'], $backgroundImages)) { + $checked = "checked"; + } else { + $checked = ""; + } + $find = strpos($row["1"], "http"); + if ($find === false) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row["1"]); + } else{ + $picPath = $row["1"]; + } + echo ('<div class="gallery"><img src='.$picPath.'><input type="checkbox" name="usedBackground[]" value="'.$row['1'].'" '.$checked.'><label>Utiliser</label></div>'); + } + } else { + echo "Aucune image n'est encore ajoutée. :("; + } + + + ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button> + <button type="submit" name="submit" class="btn btn-primary">Sauvegarder</button> + </div> + </form> + </div> + </div> + </div> + + <?php + if($count > 0){ + $backgroundImages = json_decode(getParameters("backgroundImages")); + echo ('<div class="gallery2 d-flex flex-wrap">'); + foreach( $backgroundImages as $row ) { + $find = strpos($row["1"], "http"); + if ($find === false) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row); + } else{ + $picPath = $row; + } + echo ('<div class="d-flex flex-column"><img src='.$picPath.'></div>'); + } + echo ('</div>'); + } + ?> + </div> +</div> \ No newline at end of file diff --git a/admin/includes/translations/fr/gallery b/admin/includes/translations/fr/gallery new file mode 100644 index 0000000000000000000000000000000000000000..e5ab33abd1fb9e4ab545b7b0a5c5cf4733323ee3 --- /dev/null +++ b/admin/includes/translations/fr/gallery @@ -0,0 +1,25 @@ +<h1>Galerie d'images</h1> +<p>Assez utile pour remplir ton écran de chargement. <i class="far fa-smile-wink"></i></p> +<?php +$res=$bdd->query("SELECT * FROM gallery"); +$count= count($res->fetchAll()); +if($count > 0){?> + <div class="alert alert-success border-0 alert-dismissible"> + <span class="font-weight-semibold"><?=$count?> images</span> ont été trouvées. + </div> +<?php } else { ?> + <div class="alert alert-warning border-0 alert-dismissible"> + <span class="font-weight-semibold">Hep hep hep!</span> Tu n'a aucune image d'envoyée pour le moment. + </div> +<?php } +echo ('<form action="media-upload.php" class="dropzone"><div class="fallback"><input name="file" type="file" multiple /></div></form>'); +if($count > 0){ + $res=$bdd->query("SELECT * FROM gallery ORDER BY id DESC"); + $result = $res->fetchAll(); + echo ('<div class="gallery d-flex flex-wrap">'); + foreach( $result as $row ) { + echo ('<div class="d-flex flex-column"><img class="galleryImage" src=upload/'.$row['path'].'><a href="gallery.php?deleteMedia='.$row['id'].'"><i class="far fa-trash-alt"></i> Supprimer</a></div>'); + } + echo ('</div>'); +} +?> \ No newline at end of file diff --git a/admin/includes/translations/fr/index b/admin/includes/translations/fr/index new file mode 100644 index 0000000000000000000000000000000000000000..c8add226a4b70d267d46cd1fef38367b75a6a4df --- /dev/null +++ b/admin/includes/translations/fr/index @@ -0,0 +1,6 @@ +<h1>Bienvenu sur VBcms !</h1> +<p>Merci d'avoir installé VBcms. <i class="fas fa-heart"></i><br> + Pour commencer, choisi un thème et envoie des images via la page <b>Gallerie</b>, puis va dans <b>Paramètres généraux</b> afin de définir les images de fond. N'oublies pas de créer une multitudes de <b>tips</b> de sorte à ce que le joueur n'ai pas à revoir le même plusieurs fois. <i class="far fa-smile-wink"></i></p> +<p>Si tu as des questions ou que tu trouves un bug, n'hésites pas à me le faire savoir. Je corrigerai le problème dans les plus brefs délais.<br> + Pense à faire un tour sur la <a href="https://vbcms.sl-projects.com/doc-index.php">Documentation</a> du panel. ^^</p> +<p><b>Lien de l'écran de chargement:</b> <?=getParameters("siteUrl")?>?ststeamid=%s</p> \ No newline at end of file diff --git a/admin/includes/translations/fr/settings b/admin/includes/translations/fr/settings new file mode 100644 index 0000000000000000000000000000000000000000..bb26ebd419c7e601538f84b313e38834fc4c2581 --- /dev/null +++ b/admin/includes/translations/fr/settings @@ -0,0 +1,66 @@ +<h1>Paramètres généraux</h1> +<p>Ici tu peux régler les paramètres du loading screen.</p> +<?php +if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Paramètres mis à jour avec succès!</div>'); +} +?> +<form method="post" action="settings.php"> + <div class="form-group"> + <label>Langue</label> + <select class="form-control" name="language"> + <option value="fr">Français</option> + <option value="en">English (may be incomplete)</option> + </select> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSiteName">Logo du serveur</label> + <button type="button" class="btn btn-primary my-2" data-toggle="modal" data-target="#chooseServerLogo">Choisir</button> + <input type="text" id="serverLogo" name="serverLogo" class="form-control" value="<?=getParameters("serverLogo")?>" placeholder="Lien de l'image" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSiteName">Nom du site</label> + <input type="text" id="inputSiteName" name="inputSiteName" class="form-control" value="<?=getParameters("siteName")?>" placeholder="Site de Gordon" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputUrl">Url du site <b>(avec un / à la fin)</b></label> + <input type="text" id="inputUrl" name="inputUrl" class="form-control" value="<?=getParameters("siteUrl")?>" placeholder="https://gordonfreeman.blackmesa.us/" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputServerIp">IP du serveur <b>(IP:Port)</b></label> + <input type="text" id="inputServerIp" name="inputServerIp" class="form-control" value="<?=getParameters("serverIp")?>" placeholder="ip du serveur" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSteamAPIkey">Steam API key <b>(voir <a href="https://steamcommunity.com/dev/apikey">ce lien</a>)</b></label> + <input type="text" id="inputSteamAPIkey" name="inputSteamAPIkey" class="form-control" value="<?=getParameters("steamAPIkey")?>" placeholder="clé steam API" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputTimeBackChange">Durée de l'image de fond <b>(en ms)</b> <?php if (themeFeatures("dynamicBackgrounds") != true) {echo '<b>Non utilisé</b>';} ?></label> + <input type="text" id="inputTimeBackChange" name="inputTimeBackChange" class="form-control" value="<?=getParameters("timeBackChange")?>" placeholder="5000" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputPostChange">Durée d'une astuce <b>(en ms)</b> <?php if (themeFeatures("tips") != true) {echo '<b>Non utilisé</b>';} ?></label> + <input type="text" id="inputPostChange" name="inputPostChange" class="form-control" value="<?=getParameters("timePostChange")?>" placeholder="7000" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputMusic">Musiques <b>(format ogg préféré)</b> écrire sous cette forme: <b>["chemin/vers/musique1.ogg","http://site.com/vers/musique2.ogg"]</b><?php if (themeFeatures("musics") != true) {echo '<br><b>Non utilisé</b>';} ?></label> + <input type="text" id="inputMusic" name="inputMusic" class="form-control" value='<?=getParameters("musics")?>' required="required"> + </div> + </div> + <button type="submit" name="submit" value="update" class="btn btn-success my-2">Mettre à jour</button> +</form> \ No newline at end of file diff --git a/admin/includes/translations/fr/themes b/admin/includes/translations/fr/themes new file mode 100644 index 0000000000000000000000000000000000000000..3bf26892341d5425b8865f9119796954b7ef52a7 --- /dev/null +++ b/admin/includes/translations/fr/themes @@ -0,0 +1,3 @@ +<h1>Thèmes</h1> +<p>Ici tu peux voir et appliquer les thèmes installés.<br> + Thème utilisé: <b><?=getParameters("theme")?></b></p> \ No newline at end of file diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000000000000000000000000000000000000..8e49f3ac1f1428c005bd1cbbbb62af3da86772ab --- /dev/null +++ b/admin/index.php @@ -0,0 +1,28 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Admin</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <img width="100px" src="images/vbcms-logo.png"> + <?php include getTranslation("index"); ?> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/js/drag-config.js b/admin/js/drag-config.js new file mode 100644 index 0000000000000000000000000000000000000000..b252ce28c1f1d93d1bbd5d79b532031b61fd3004 --- /dev/null +++ b/admin/js/drag-config.js @@ -0,0 +1,832 @@ +var myDropzone = new Dropzone("div#myId", { url: "upload"}); +Dropzone.options.myAwesomeDropzone = { + /** + * Has to be specified on elements other than form (or when the form + * doesn't have an `action` attribute). You can also + * provide a function that will be called with `files` and + * must return the url (since `v3.12.0`) + */ + url: null, + + /** + * Can be changed to `"put"` if necessary. You can also provide a function + * that will be called with `files` and must return the method (since `v3.12.0`). + */ + method: "post", + + /** + * Will be set on the XHRequest. + */ + withCredentials: false, + + /** + * The timeout for the XHR requests in milliseconds (since `v4.4.0`). + */ + timeout: 30000, + + /** + * How many file uploads to process in parallel (See the + * Enqueuing file uploads* documentation section for more info) + */ + parallelUploads: 2, + + /** + * Whether to send multiple files in one request. If + * this it set to true, then the fallback file input element will + * have the `multiple` attribute as well. This option will + * also trigger additional events (like `processingmultiple`). See the events + * documentation section for more information. + */ + uploadMultiple: false, + + /** + * Whether you want files to be uploaded in chunks to your server. This can't be + * used in combination with `uploadMultiple`. + * + * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload. + */ + chunking: false, + + /** + * If `chunking` is enabled, this defines whether **every** file should be chunked, + * even if the file size is below chunkSize. This means, that the additional chunk + * form data will be submitted and the `chunksUploaded` callback will be invoked. + */ + forceChunking: false, + + /** + * If `chunking` is `true`, then this defines the chunk size in bytes. + */ + chunkSize: 2000000, + + /** + * If `true`, the individual chunks of a file are being uploaded simultaneously. + */ + parallelChunkUploads: false, + + /** + * Whether a chunk should be retried if it fails. + */ + retryChunks: false, + + /** + * If `retryChunks` is true, how many times should it be retried. + */ + retryChunksLimit: 3, + + /** + * If not `null` defines how many files this Dropzone handles. If it exceeds, + * the event `maxfilesexceeded` will be called. The dropzone element gets the + * class `dz-max-files-reached` accordingly so you can provide visual feedback. + */ + maxFilesize: 256, + + /** + * The name of the file param that gets transferred. + * **NOTE**: If you have the option `uploadMultiple` set to `true`, then + * Dropzone will append `[]` to the name. + */ + paramName: "file", + + /** + * Whether thumbnails for images should be generated + */ + createImageThumbnails: true, + + /** + * In MB. When the filename exceeds this limit, the thumbnail will not be generated. + */ + maxThumbnailFilesize: 10, + + /** + * If `null`, the ratio of the image will be used to calculate it. + */ + thumbnailWidth: 120, + + /** + * The same as `thumbnailWidth`. If both are null, images will not be resized. + */ + thumbnailHeight: 120, + + /** + * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided. + * Can be either `contain` or `crop`. + */ + thumbnailMethod: 'crop', + + /** + * If set, images will be resized to these dimensions before being **uploaded**. + * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect + * ratio of the file will be preserved. + * + * The `options.transformFile` function uses these options, so if the `transformFile` function + * is overridden, these options don't do anything. + */ + resizeWidth: null, + + /** + * See `resizeWidth`. + */ + resizeHeight: null, + + /** + * The mime type of the resized image (before it gets uploaded to the server). + * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`. + * See `resizeWidth` for more information. + */ + resizeMimeType: null, + + /** + * The quality of the resized images. See `resizeWidth`. + */ + resizeQuality: 0.8, + + /** + * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided. + * Can be either `contain` or `crop`. + */ + resizeMethod: 'contain', + + /** + * The base that is used to calculate the filesize. You can change this to + * 1024 if you would rather display kibibytes, mebibytes, etc... + * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`. + * You can change this to `1024` if you don't care about validity. + */ + filesizeBase: 1000, + + /** + * Can be used to limit the maximum number of files that will be handled by this Dropzone + */ + maxFiles: null, + + /** + * An optional object to send additional headers to the server. Eg: + * `{ "My-Awesome-Header": "header value" }` + */ + headers: null, + + /** + * If `true`, the dropzone element itself will be clickable, if `false` + * nothing will be clickable. + * + * You can also pass an HTML element, a CSS selector (for multiple elements) + * or an array of those. In that case, all of those elements will trigger an + * upload when clicked. + */ + clickable: true, + + /** + * Whether hidden files in directories should be ignored. + */ + ignoreHiddenFiles: true, + + /** + * The default implementation of `accept` checks the file's mime type or + * extension against this list. This is a comma separated list of mime + * types or file extensions. + * + * Eg.: `image/*,application/pdf,.psd` + * + * If the Dropzone is `clickable` this option will also be used as + * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept) + * parameter on the hidden file input as well. + */ + acceptedFiles: null, + + /** + * **Deprecated!** + * Use acceptedFiles instead. + */ + acceptedMimeTypes: null, + + /** + * If false, files will be added to the queue but the queue will not be + * processed automatically. + * This can be useful if you need some additional user input before sending + * files (or if you want want all files sent at once). + * If you're ready to send the file simply call `myDropzone.processQueue()`. + * + * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation + * section for more information. + */ + autoProcessQueue: true, + + /** + * If false, files added to the dropzone will not be queued by default. + * You'll have to call `enqueueFile(file)` manually. + */ + autoQueue: true, + + /** + * If `true`, this will add a link to every file preview to remove or cancel (if + * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation` + * and `dictRemoveFile` options are used for the wording. + */ + addRemoveLinks: false, + + /** + * Defines where to display the file previews – if `null` the + * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS + * selector. The element should have the `dropzone-previews` class so + * the previews are displayed properly. + */ + previewsContainer: null, + + /** + * This is the element the hidden input field (which is used when clicking on the + * dropzone to trigger file selection) will be appended to. This might + * be important in case you use frameworks to switch the content of your page. + */ + hiddenInputContainer: "body", + + /** + * If null, no capture type will be specified + * If camera, mobile devices will skip the file selection and choose camera + * If microphone, mobile devices will skip the file selection and choose the microphone + * If camcorder, mobile devices will skip the file selection and choose the camera in video mode + * On apple devices multiple must be set to false. AcceptedFiles may need to + * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*"). + */ + capture: null, + + /** + * **Deprecated**. Use `renameFile` instead. + */ + renameFilename: null, + + /** + * A function that is invoked before the file is uploaded to the server and renames the file. + * This function gets the `File` as argument and can use the `file.name`. The actual name of the + * file that gets used during the upload can be accessed through `file.upload.filename`. + */ + renameFile: null, + + /** + * If `true` the fallback will be forced. This is very useful to test your server + * implementations first and make sure that everything works as + * expected without dropzone if you experience problems, and to test + * how your fallbacks will look. + */ + forceFallback: false, + + /** + * The text used before any files are dropped. + */ + dictDefaultMessage: "Déposes tes images ici :)", + + /** + * The text that replaces the default message text it the browser is not supported. + */ + dictFallbackMessage: "Ton naviguateur ne supporte pas le drag'n drop :(", + + /** + * The text that will be added before the fallback form. + * If you provide a fallback element yourself, or if this option is `null` this will + * be ignored. + */ + dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", + + /** + * If the filesize is too big. + * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values. + */ + dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", + + /** + * If the file doesn't match the file type. + */ + dictInvalidFileType: "You can't upload files of this type.", + + /** + * If the server response was invalid. + * `{{statusCode}}` will be replaced with the servers status code. + */ + dictResponseError: "Server responded with {{statusCode}} code.", + + /** + * If `addRemoveLinks` is true, the text to be used for the cancel upload link. + */ + dictCancelUpload: "Cancel upload", + + /** + * The text that is displayed if an upload was manually canceled + */ + dictUploadCanceled: "Upload canceled.", + + /** + * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload. + */ + dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", + + /** + * If `addRemoveLinks` is true, the text to be used to remove a file. + */ + dictRemoveFile: "Remove file", + + /** + * If this is not null, then the user will be prompted before removing a file. + */ + dictRemoveFileConfirmation: null, + + /** + * Displayed if `maxFiles` is st and exceeded. + * The string `{{maxFiles}}` will be replaced by the configuration value. + */ + dictMaxFilesExceeded: "You can not upload any more files.", + + /** + * Allows you to translate the different units. Starting with `tb` for terabytes and going down to + * `b` for bytes. + */ + dictFileSizeUnits: { tb: "TB", gb: "GB", mb: "MB", kb: "KB", b: "b" }, + /** + * Called when dropzone initialized + * You can add event listeners here + */ + init: function init() {}, + + /** + * Can be an **object** of additional parameters to transfer to the server, **or** a `Function` + * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case + * of a function, this needs to return a map. + * + * The default implementation does nothing for normal uploads, but adds relevant information for + * chunked uploads. + * + * This is the same as adding hidden input fields in the form element. + */ + params: function params(files, xhr, chunk) { + if (chunk) { + return { + dzuuid: chunk.file.upload.uuid, + dzchunkindex: chunk.index, + dztotalfilesize: chunk.file.size, + dzchunksize: this.options.chunkSize, + dztotalchunkcount: chunk.file.upload.totalChunkCount, + dzchunkbyteoffset: chunk.index * this.options.chunkSize + }; + } + }, + + + /** + * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File) + * and a `done` function as parameters. + * + * If the done function is invoked without arguments, the file is "accepted" and will + * be processed. If you pass an error message, the file is rejected, and the error + * message will be displayed. + * This function will not be called if the file is too big or doesn't match the mime types. + */ + accept: function accept(file, done) { + return done(); + }, + + + /** + * The callback that will be invoked when all chunks have been uploaded for a file. + * It gets the file for which the chunks have been uploaded as the first parameter, + * and the `done` function as second. `done()` needs to be invoked when everything + * needed to finish the upload process is done. + */ + chunksUploaded: function chunksUploaded(file, done) { + done(); + }, + + /** + * Gets called when the browser is not supported. + * The default implementation shows the fallback input field and adds + * a text. + */ + fallback: function fallback() { + // This code should pass in IE7... :( + var messageElement = void 0; + this.element.className = this.element.className + " dz-browser-not-supported"; + + for (var _iterator2 = this.element.getElementsByTagName("div"), _isArray2 = true, _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + var child = _ref2; + + if (/(^| )dz-message($| )/.test(child.className)) { + messageElement = child; + child.className = "dz-message"; // Removes the 'dz-default' class + break; + } + } + if (!messageElement) { + messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>"); + this.element.appendChild(messageElement); + } + + var span = messageElement.getElementsByTagName("span")[0]; + if (span) { + if (span.textContent != null) { + span.textContent = this.options.dictFallbackMessage; + } else if (span.innerText != null) { + span.innerText = this.options.dictFallbackMessage; + } + } + + return this.element.appendChild(this.getFallbackForm()); + }, + + + /** + * Gets called to calculate the thumbnail dimensions. + * + * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing: + * + * - `srcWidth` & `srcHeight` (required) + * - `trgWidth` & `trgHeight` (required) + * - `srcX` & `srcY` (optional, default `0`) + * - `trgX` & `trgY` (optional, default `0`) + * + * Those values are going to be used by `ctx.drawImage()`. + */ + resize: function resize(file, width, height, resizeMethod) { + var info = { + srcX: 0, + srcY: 0, + srcWidth: file.width, + srcHeight: file.height + }; + + var srcRatio = file.width / file.height; + + // Automatically calculate dimensions if not specified + if (width == null && height == null) { + width = info.srcWidth; + height = info.srcHeight; + } else if (width == null) { + width = height * srcRatio; + } else if (height == null) { + height = width / srcRatio; + } + + // Make sure images aren't upscaled + width = Math.min(width, info.srcWidth); + height = Math.min(height, info.srcHeight); + + var trgRatio = width / height; + + if (info.srcWidth > width || info.srcHeight > height) { + // Image is bigger and needs rescaling + if (resizeMethod === 'crop') { + if (srcRatio > trgRatio) { + info.srcHeight = file.height; + info.srcWidth = info.srcHeight * trgRatio; + } else { + info.srcWidth = file.width; + info.srcHeight = info.srcWidth / trgRatio; + } + } else if (resizeMethod === 'contain') { + // Method 'contain' + if (srcRatio > trgRatio) { + height = width / srcRatio; + } else { + width = height * srcRatio; + } + } else { + throw new Error("Unknown resizeMethod '" + resizeMethod + "'"); + } + } + + info.srcX = (file.width - info.srcWidth) / 2; + info.srcY = (file.height - info.srcHeight) / 2; + + info.trgWidth = width; + info.trgHeight = height; + + return info; + }, + + + /** + * Can be used to transform the file (for example, resize an image if necessary). + * + * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes + * images according to those dimensions. + * + * Gets the `file` as the first parameter, and a `done()` function as the second, that needs + * to be invoked with the file when the transformation is done. + */ + transformFile: function transformFile(file, done) { + if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) { + return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done); + } else { + return done(file); + } + }, + + + /** + * A string that contains the template used for each dropped + * file. Change it to fulfill your needs but make sure to properly + * provide all elements. + * + * If you want to use an actual HTML element instead of providing a String + * as a config option, you could create a div with the id `tpl`, + * put the template inside it and provide the element like this: + * + * document + * .querySelector('#tpl') + * .innerHTML + * + */ + previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n <div class=\"dz-details\">\n <div class=\"dz-size\"><span data-dz-size></span></div>\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n <div class=\"dz-success-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n <title>Check</title>\n <defs></defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\" sketch:type=\"MSShapeGroup\"></path>\n </g>\n </svg>\n </div>\n <div class=\"dz-error-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n <title>Error</title>\n <defs></defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n <g id=\"Check-+-Oval-2\" sketch:type=\"MSLayerGroup\" stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" sketch:type=\"MSShapeGroup\"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>", + + // END OPTIONS + // (Required by the dropzone documentation parser) + + + /* + Those functions register themselves to the events on init and handle all + the user interface specific stuff. Overwriting them won't break the upload + but can break the way it's displayed. + You can overwrite them if you don't like the default behavior. If you just + want to add an additional event handler, register it on the dropzone object + and don't overwrite those options. + */ + + // Those are self explanatory and simply concern the DragnDrop. + drop: function drop(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragstart: function dragstart(e) {}, + dragend: function dragend(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragenter: function dragenter(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragover: function dragover(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragleave: function dragleave(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + paste: function paste(e) {}, + + + // Called whenever there are no files left in the dropzone anymore, and the + // dropzone should be displayed as if in the initial state. + reset: function reset() { + return this.element.classList.remove("dz-started"); + }, + + + // Called when a file is added to the queue + // Receives `file` + addedfile: function addedfile(file) { + var _this2 = this; + + if (this.element === this.previewsContainer) { + this.element.classList.add("dz-started"); + } + + if (this.previewsContainer) { + file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); + file.previewTemplate = file.previewElement; // Backwards compatibility + + this.previewsContainer.appendChild(file.previewElement); + for (var _iterator3 = file.previewElement.querySelectorAll("[data-dz-name]"), _isArray3 = true, _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + var node = _ref3; + + node.textContent = file.name; + } + for (var _iterator4 = file.previewElement.querySelectorAll("[data-dz-size]"), _isArray4 = true, _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + node = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + node = _i4.value; + } + + node.innerHTML = this.filesize(file.size); + } + + if (this.options.addRemoveLinks) { + file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>" + this.options.dictRemoveFile + "</a>"); + file.previewElement.appendChild(file._removeLink); + } + + var removeFileEvent = function removeFileEvent(e) { + e.preventDefault(); + e.stopPropagation(); + if (file.status === Dropzone.UPLOADING) { + return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + if (_this2.options.dictRemoveFileConfirmation) { + return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + return _this2.removeFile(file); + } + } + }; + + for (var _iterator5 = file.previewElement.querySelectorAll("[data-dz-remove]"), _isArray5 = true, _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref4; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref4 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref4 = _i5.value; + } + + var removeLink = _ref4; + + removeLink.addEventListener("click", removeFileEvent); + } + } + }, + + + // Called whenever a file is removed. + removedfile: function removedfile(file) { + if (file.previewElement != null && file.previewElement.parentNode != null) { + file.previewElement.parentNode.removeChild(file.previewElement); + } + return this._updateMaxFilesReachedClass(); + }, + + + // Called when a thumbnail has been generated + // Receives `file` and `dataUrl` + thumbnail: function thumbnail(file, dataUrl) { + if (file.previewElement) { + file.previewElement.classList.remove("dz-file-preview"); + for (var _iterator6 = file.previewElement.querySelectorAll("[data-dz-thumbnail]"), _isArray6 = true, _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref5; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref5 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref5 = _i6.value; + } + + var thumbnailElement = _ref5; + + thumbnailElement.alt = file.name; + thumbnailElement.src = dataUrl; + } + + return setTimeout(function () { + return file.previewElement.classList.add("dz-image-preview"); + }, 1); + } + }, + + + // Called whenever an error occurs + // Receives `file` and `message` + error: function error(file, message) { + if (file.previewElement) { + file.previewElement.classList.add("dz-error"); + if (typeof message !== "String" && message.error) { + message = message.error; + } + for (var _iterator7 = file.previewElement.querySelectorAll("[data-dz-errormessage]"), _isArray7 = true, _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref6; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref6 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref6 = _i7.value; + } + + var node = _ref6; + + node.textContent = message; + } + } + }, + errormultiple: function errormultiple() {}, + + + // Called when a file gets processed. Since there is a cue, not all added + // files are processed immediately. + // Receives `file` + processing: function processing(file) { + if (file.previewElement) { + file.previewElement.classList.add("dz-processing"); + if (file._removeLink) { + return file._removeLink.textContent = this.options.dictCancelUpload; + } + } + }, + processingmultiple: function processingmultiple() {}, + + + // Called whenever the upload progress gets updated. + // Receives `file`, `progress` (percentage 0-100) and `bytesSent`. + // To get the total number of bytes of the file, use `file.size` + uploadprogress: function uploadprogress(file, progress, bytesSent) { + if (file.previewElement) { + for (var _iterator8 = file.previewElement.querySelectorAll("[data-dz-uploadprogress]"), _isArray8 = true, _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref7; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref7 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref7 = _i8.value; + } + + var node = _ref7; + + node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = progress + "%"; + } + } + }, + + + // Called whenever the total upload progress gets updated. + // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent + totaluploadprogress: function totaluploadprogress() {}, + + + // Called just before the file is sent. Gets the `xhr` object as second + // parameter, so you can modify it (for example to add a CSRF token) and a + // `formData` object to add additional information. + sending: function sending() {}, + sendingmultiple: function sendingmultiple() {}, + + + // When the complete upload is finished and successful + // Receives `file` + success: function success(file) { + if (file.previewElement) { + return file.previewElement.classList.add("dz-success"); + } + }, + successmultiple: function successmultiple() {}, + + + // When the upload is canceled. + canceled: function canceled(file) { + return this.emit("error", file, this.options.dictUploadCanceled); + }, + canceledmultiple: function canceledmultiple() {}, + + + // When the upload is finished, either with success or an error. + // Receives `file` + complete: function complete(file) { + if (file._removeLink) { + file._removeLink.textContent = this.options.dictRemoveFile; + } + if (file.previewElement) { + return file.previewElement.classList.add("dz-complete"); + } + }, + completemultiple: function completemultiple() {}, + maxfilesexceeded: function maxfilesexceeded() {}, + maxfilesreached: function maxfilesreached() {}, + queuecomplete: function queuecomplete() {}, + addedfiles: function addedfiles() {} + }; + + this.prototype._thumbnailQueue = []; + this.prototype._processingThumbnail = false; + } + +} \ No newline at end of file diff --git a/admin/login.php b/admin/login.php new file mode 100644 index 0000000000000000000000000000000000000000..4b047af49c0606f8a1362379d09fdd30d70dee27 --- /dev/null +++ b/admin/login.php @@ -0,0 +1,176 @@ +<?php +$admin = true; +include 'includes/config.php'; +if (!is_writable("includes/config.php")) { + $errorMessage = ('<div class="alert alert-danger" role="alert">Configuration file is note writable!</div>'); +} +if (isset($installed) AND ($installed == true)) { + $installed = true; + $title = "Connexion"; + include 'includes/bdd.php'; +} else { + $installed = false; + $title = "Installation"; +} + +if (isset($_COOKIE["login"])) { + header('Location: index.php'); +} + +if (isset($_POST["inputUser"]) AND ($installed == false)) { + + //Écriture du fichier config + $bddhost_str = var_export($_POST["inputBddHost"], true); + $bdduser_str = var_export($_POST["inputBddUser"], true); + $bddpass_str = var_export($_POST["inputBddPass"], true); + $bddname_str = var_export($_POST["inputBddName"], true); + $var = ("<?php\n".'$bddHost = '.$bddhost_str.";\n".'$bddUser = '.$bdduser_str.";\n".'$bddMdp = '.$bddpass_str.";\n".'$bddName = '.$bddname_str.";\n\n".'$installed = true;'."\n?>"); + file_put_contents('includes/config.php', $var); + include 'includes/bdd.php'; + + //Création des tables + $bdd->exec("CREATE TABLE IF NOT EXISTS users ( id INT NOT NULL AUTO_INCREMENT , name VARCHAR(32) NOT NULL , password VARCHAR(64) NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;"); + $bdd->exec("CREATE TABLE IF NOT EXISTS posts ( id INT NOT NULL AUTO_INCREMENT , title VARCHAR(128) NOT NULL , description VARCHAR(512) NOT NULL , picPath VARCHAR(512) NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;"); + $bdd->exec("CREATE TABLE IF NOT EXISTS alerts ( id INT NOT NULL AUTO_INCREMENT , title VARCHAR(128) NOT NULL , description VARCHAR(512) NOT NULL , duration INT NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;"); + $bdd->exec("CREATE TABLE IF NOT EXISTS settings ( parameter VARCHAR(128) NOT NULL , value VARCHAR(512) NOT NULL , PRIMARY KEY (parameter)) ENGINE = InnoDB;"); + $bdd->exec("CREATE TABLE IF NOT EXISTS gallery ( id INT NOT NULL AUTO_INCREMENT , path VARCHAR(512) NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;"); + + //Insertion des info du formulaire + $hashed_password = crypt($_POST["inputPassword"]); + $sql = "INSERT INTO users (id, name, password) VALUES (?,?,?)"; + $bdd->prepare($sql)->execute([NULL, $_POST["inputUser"], $hashed_password]); + + $sql = "INSERT INTO settings (parameter, value) VALUES ('siteName', ?), ('siteUrl', ?), ('timeBackChange', ?), ('timePostChange', ?), ('musics', ?), ('backgroundImages', ?), ('version', ?), ('theme', ?), ('themePath', ?), ('themeInclude', ?), ('serverLogo', ?), ('serverIp', ?), ('steamAPIkey', ?), ('language', ?)"; + $bdd->prepare($sql)->execute([$_POST["inputSiteName"], $_POST["inputUrl"], 5000, 7000, "[]", "[]", "1.2c", "demo", "../themes/demo/theme.json", "", "", $_POST["inputServerIp"], $_POST["inputSteamAPIkey"], $_POST["language"]]); + + header('Location: login.php'); +} elseif (isset($_POST["inputUser"]) AND ($installed == true)) { + include 'includes/constants.php'; + if (getParameters("version") != "1.2c") { + $sql = "UPDATE settings SET value = ? WHERE parameter = 'version'"; + $bdd->prepare($sql)->execute(["1.2c"]); + } + $res=$bdd->query("SELECT * FROM users WHERE name = '".$_POST["inputUser"]."'"); + $result = $res->fetch(); + if ($result["password"] != "") { + if (hash_equals($result["password"], crypt($_POST["inputPassword"], $result["password"]))) { + setcookie("login", $_POST["inputUser"], time()+3600); /* expire dans 1 heure */ + header('Location: index.php'); + exit; + } else { + $errorMessage = ('<div class="alert alert-danger" role="alert">Mauvais couple mot de passe/identifiant</div>'); + } + } else { + $errorMessage = ('<div class="alert alert-danger" role="alert">Mauvais couple mot de passe/identifiant</div>'); + } + +} +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=$title?></title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <style type="text/css"> + body{ + background-image: url("images/black-back-pattern-10.jpg"); + } + </style> + <div class="loginCard mx-auto mt-5 rounded d-flex flex-column"> + <div class="m-2 text-center"> + <img class="w-25" src="images/vbcms-logo.png"> + </div> + <div class="d-flex m-2 flex-column"> + <h1><?=$title?></h1> + <form method="post" action="login.php"> + <?php + if (isset($errorMessage)) { + echo $errorMessage; + } + if ($installed == false) {?> + <h3>Language</h3> + <div class="form-group"> + <select class="form-control" name="language"> + <option value="fr">Français</option> + <option value="en">English (may be incomplete)</option> + </select> + </div> + + + <h3>Connexion à la base de données</h3> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputBddHost">Adresse du serveur (souvent localhost)</label> + <input type="text" id="inputBddHost" name="inputBddHost" class="form-control" value="<?=$bddHost?>" placeholder="localhost" required="required" autofocus="autofocus"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputBddUser">Utilisateur de la base</label> + <input type="text" id="inputBddUser" name="inputBddUser" class="form-control" value="<?=$bddUser?>" placeholder="bdd_user" required="required" autofocus="autofocus"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputBddPass">Mot de passe de l'utilisateur</label> + <input type="password" id="inputBddPass" name="inputBddPass" class="form-control" value="<?=$bddMdp?>" placeholder="testr0pl3nt!" required="required" autofocus="autofocus"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputBddName">Nom de la base</label> + <input type="text" id="inputBddName" name="inputBddName" class="form-control" value="<?=$bddName?>" placeholder="bdd_user" required="required" autofocus="autofocus"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSiteName">Nom du site</label> + <input type="text" id="inputSiteName" name="inputSiteName" class="form-control" placeholder="Site de Gordon" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputUrl">Url du site (avec un / à la fin)</label> + <input type="text" id="inputUrl" name="inputUrl" class="form-control" placeholder="https://gordonfreeman.blackmesa.us/" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputServerIp">IP du serveur (optionnel)</label> + <input type="text" id="inputServerIp" name="inputServerIp" class="form-control" placeholder="ip du serveur"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputSteamAPIkey">Steam API key (voir <a href="https://steamcommunity.com/dev/apikey">ce lien</a>) (optionnel)</label> + <input type="text" id="inputSteamAPIkey" name="inputSteamAPIkey" class="form-control" placeholder="clé steam API" > + </div> + </div> + <h3>Création de l'utilisateur</h3> + <?php } ?> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputUser">Nom d'utilisateur</label> + <input type="text" id="inputUser" name="inputUser" class="form-control" placeholder="GordonFreeman" required="required" autofocus="autofocus"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputPassword">Mot de passe</label> + <input type="password" id="inputPassword" name="inputPassword" class="form-control" placeholder="tut@password" required="required"> + + </div> + </div> + + <button type="submit" class="btn btn-primary btn-block"><?=$title?></button> + </form> + </div> + </div> + <p class="text-center text-muted">VBCMS par <a href="https://sl-projects.com" target="_blank">SofianeLasri</a></p> +</body> +</html> \ No newline at end of file diff --git a/admin/logout.php b/admin/logout.php new file mode 100644 index 0000000000000000000000000000000000000000..f9c21e8df196dda00b49cbf4106d26782a519da9 --- /dev/null +++ b/admin/logout.php @@ -0,0 +1,4 @@ +<?php +setcookie("login", $_POST["inputUser"], time()-3600); /* supprime le cookie */ +header('Location: login.php'); +?> \ No newline at end of file diff --git a/admin/media-upload.php b/admin/media-upload.php new file mode 100644 index 0000000000000000000000000000000000000000..26bb824dafa41f47c32b6fb1b71caf986555748f --- /dev/null +++ b/admin/media-upload.php @@ -0,0 +1,23 @@ +<?php +include ('includes/bdd.php'); +$ds = DIRECTORY_SEPARATOR; + +$storeFolder = 'upload'; + +if (!empty($_FILES)) { + + $tempFile = $_FILES['file']['tmp_name']; + + $sql = "INSERT INTO gallery (id, path) VALUES (?,?)"; + $bdd->prepare($sql)->execute([NULL, $_FILES['file']['name']]); + + $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds; + + $targetFile = $targetPath. $_FILES['file']['name']; + + + + move_uploaded_file($tempFile,$targetFile); + +} +?> \ No newline at end of file diff --git a/admin/settings.php b/admin/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..9523d1944003d1f92109419e92397aa374243deb --- /dev/null +++ b/admin/settings.php @@ -0,0 +1,100 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_POST["submit"])) { + //Modification des paramètres + $sql = "UPDATE settings SET value = ? WHERE parameter = 'siteName'"; + $bdd->prepare($sql)->execute([$_POST["inputSiteName"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'siteUrl'"; + $bdd->prepare($sql)->execute([$_POST["inputUrl"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'timeBackChange'"; + $bdd->prepare($sql)->execute([$_POST["inputTimeBackChange"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'timePostChange'"; + $bdd->prepare($sql)->execute([$_POST["inputPostChange"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'musics'"; + $bdd->prepare($sql)->execute([$_POST["inputMusic"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'serverLogo'"; + $bdd->prepare($sql)->execute([$_POST["serverLogo"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'serverIp'"; + $bdd->prepare($sql)->execute([$_POST["inputServerIp"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'steamAPIkey'"; + $bdd->prepare($sql)->execute([$_POST["inputSteamAPIkey"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'language'"; + $bdd->prepare($sql)->execute([$_POST["language"]]); + + //Actualisation de la page + header('Location: settings.php?success'); +} +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Paramètres</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <style type="text/css"> + .gallery{ + width: inherit; + margin: 1vh; + } + .gallery img{ + width: 100%; + border-radius: 10px; + } + </style> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <?php include getTranslation("settings"); ?> + <!-- Modal --> + <div class="modal fade" id="chooseServerLogo" tabindex="-1" role="dialog" aria-labelledby="chooseServerLogoTitle" aria-hidden="true"> + <div class="modal-dialog" role="document"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title" id="chooseServerLogoTitle">Choisir une image</h5> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + </div> + <div class="modal-body"> + <?php + $res=$bdd->query("SELECT * FROM gallery ORDER BY id DESC"); + $result = $res->fetchAll(); + $count= count($result); + if($count > 0){ + foreach( $result as $row ) { + $picPath = (getParameters("siteUrl")."admin/upload/".$row["1"]); + echo ('<div class="gallery d-flex flex-column"><img src="'.$picPath.'"><button class="btn btn-primary" onclick="changePath('."'".$picPath."'".')" id="chooseImageBtn" data-dismiss="modal">Choisir</button></div>'); + } + } else { + echo "Aucun média n'est encore ajouté. :("; + } + ?> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button> + </div> + </div> + </div> + </div> + <!-- Fin du Modal --> + </div> + </div> + + <script type="text/javascript"> + function changePath(x) { + console.log(arguments[0]); + $("#serverLogo").val(arguments[0]); + } + </script> +</body> +</html> \ No newline at end of file diff --git a/admin/themeFeature.php b/admin/themeFeature.php new file mode 100644 index 0000000000000000000000000000000000000000..d22f61d5ce467e8054fdfe42a68fdcf25ed92777 --- /dev/null +++ b/admin/themeFeature.php @@ -0,0 +1,34 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Fonction du thème</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; + + if (getParameters("themeInclude") != "") { + include customPage($_GET["p"]); + }else { + echo ('<div class="page-content container-fluid"> + <h1>Oh oh :(</h1> + <p>Il semblerait que le thème utilisé ne possède pas de page personnalisé. :(</p> + </div>'); + } + + ?> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/themes.php b/admin/themes.php new file mode 100644 index 0000000000000000000000000000000000000000..56fd31af8eff0951748e73a423bbcc5f7dd44500 --- /dev/null +++ b/admin/themes.php @@ -0,0 +1,71 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_GET["use"])) { + $sql = "UPDATE settings SET value = ? WHERE parameter = 'theme'"; + $bdd->prepare($sql)->execute([$_GET["use"]]); + $themepath = "../themes/".$_GET["use"]."/theme.json"; + $sql = "UPDATE settings SET value = ? WHERE parameter = 'themePath'"; + $bdd->prepare($sql)->execute([$themepath]); + $themeJsonFileContents = file_get_contents($themepath); + $themeJsonFileContents = json_decode($themeJsonFileContents); + if ($themeJsonFileContents->include != "") { + $themeInclude = "../themes/".$_GET["use"]."/".$themeJsonFileContents->include; + } else { + $themeInclude = $themeJsonFileContents->include; + } + $sql = "UPDATE settings SET value = ? WHERE parameter = 'themeInclude'"; + $bdd->prepare($sql)->execute([$themeInclude]); + header('Location: themes.php'); +} + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Thèmes</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <?php include getTranslation("themes"); ?> + <div class="d-flex flex-wrap"> + <?php + $themes = array_diff(scandir("../themes"), array('..', '.')); + foreach ($themes as $isDir) { + $isDir = "../themes/".$isDir; + if (is_dir($isDir) == true) { + $themeJSON = array_diff(scandir($isDir), array('..', '.')); + foreach ($themeJSON as $isTheme) { + if ($isTheme == "theme.json") { + $theme = ($isDir."/".$isTheme); + $themeJsonFileContents = file_get_contents($theme); + $themeJsonFileContents = json_decode($themeJsonFileContents); + echo ('<div class="card m-2" style="width: 18rem;"> + <img src="'.$isDir.'/assets/images/themeTopImage.jpg" class="card-img-top" alt="..."> + <div class="card-body"> + <h5 class="card-title">'.$themeJsonFileContents->showname.'</h5> + <p class="card-text">'.$themeJsonFileContents->description.'</p> + <a href="themes.php?use='.$themeJsonFileContents->name.'" class="btn btn-primary">Utiliser</a> + </div> + </div>'); + } + } + } + } + ?> + </div> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/tips.php b/admin/tips.php new file mode 100644 index 0000000000000000000000000000000000000000..dd8ff164dd9f553f7a23eba82d2da1f32eb6bb78 --- /dev/null +++ b/admin/tips.php @@ -0,0 +1,66 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +if (isset($_GET["deletetip"])) { + $sql = $bdd->prepare( "DELETE FROM posts WHERE id =:id" ); + $sql->bindParam(':id', $_GET["deletetip"]); + $sql->execute(); +} +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Tips</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <h1><?php if(getParameters("language") == "fr"){echo "Liste des astuces";}elseif (getParameters("language") == "en") {echo "Tips List";} ?></h1> + <p><?php if(getParameters("language") == "fr"){echo "Tu peux les modifier individuellement. Pense à en mettre plusieurs! :D";}elseif (getParameters("language") == "en") {echo "You can modify them individually. Remember to put several! :D";} ?></p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Tip créé avec succès!</div>'); + } + ?> + <a href="editor.php?type=tip" class="btn btn-success"><?php if(getParameters("language") == "fr"){echo "Créer une nouvelle astuce";}elseif (getParameters("language") == "en") {echo "Create new tip";} ?></a> + <div class="d-flex flex-wrap"> + <?php + $res=$bdd->query("SELECT * FROM posts"); + $result = $res->fetchAll(); + foreach($result as $row) { + if ($row["picPath"] != "") { + $find = strpos($row["picPath"], "http"); + if ($find === false) { + $picPath = (getParameters("siteUrl").$row["picPath"]); + } else{ + $picPath = $row["picPath"]; + } + } + ?> + <!-- Carte tip --> + <div class="card m-2" style="width: 18rem;"> + <?php if($row["picPath"] != ""){echo ('<img src="'.$picPath.'" class="card-img-top" alt="...">');}?> + <div class="card-body"> + <h5 class="card-title"><?=$row["title"]?></h5> + <p class="card-text"><?=$row["description"]?></p> + <a href="editor.php?type=tip&id=<?=$row["id"]?>" class="btn btn-primary"><?php if(getParameters("language") == "fr"){echo "Modifier";}elseif (getParameters("language") == "en") {echo "Modify";} ?></a> + <a href="tips.php?deletetip=<?=$row["id"]?>" class="btn btn-danger"><i class="far fa-trash-alt"></i></a> + </div> + </div> + <!-- /carte tip --> + <?php } ?> + </div> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/update.php b/admin/update.php new file mode 100644 index 0000000000000000000000000000000000000000..c7188afeb542f3ba3780c2bba21cceab0be74b3a --- /dev/null +++ b/admin/update.php @@ -0,0 +1,61 @@ +<?php +if (!isset($_COOKIE["login"])) { + header('Location: login.php'); + exit; +} +include 'includes/constants.php'; + +?> +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?> | Admin</title> + <link rel="icon" type="image/png" href="images/vbcms-logo-mini.png"/> + + <?php include 'includes/depedencies.php';?> +</head> +<body> + <?php include 'includes/navbar.php'; ?> + <div class="d-flex"> + <?php include 'includes/sidebar.php'; ?> + <div class="page-content container-fluid"> + <img width="100px" src="images/vbcms-logo.png"> + <h1><?php if(getParameters("language") == "fr"){echo "Mettre à jour VBcms";}elseif (getParameters("language") == "en") {echo "Update VBcms";} ?></h1> + <p>Réfère-toi à la <a href="https://vbcms.sl-projects.com/doc-update.php">documentation</a> pour mettre à jour.<br> + <b>v<?=getParameters("version")?></b> par <a href="https://sl-projects.com/">SofianeLasri</a></p> + + + <?php + if ($currentVJSON != "false") { + if (($currentVDate<$newVDate) == true) { ?> + + <div class="fullwidthContainer rounded p-2 d-flex"> + <div class="flex-grow-1"> + <h1>Mise à jour <?=$newVInfo->version?></h1> + <h4 class='mt-n2'><?=$newVDate->format('Y/m/d')?></h4> + <p><?=$newVInfo->changelog?></p> + <br><a href="https://vbcms.sl-projects.com/update.php?ver=<?=getParameters("version")?>" target="_blank">En savoir plus</a> + </div> + <div class="align-self-center"> + <h5>À extraire à la racine!</h5> + <a class="btn btn-success" href="<?=$newVInfo->downloadLink?>" target="_blank">Télécharger le fichier de mise à jour</a> + </div> + </div> + <?php } else { + echo "Vous possédez la dernière version. :D"; + } + + echo "<br><br><h2>Version actuelle | ".getParameters("version")."</h2>"; + echo "<h4 class='mt-n2'>".$currentVDate->format('Y/m/d')."</h4>"; + echo ($currentVInfo->changelog); + echo "<br><a href='https://vbcms.sl-projects.com/update.php?ver=".getParameters("version")."' target='_blank'>En savoir plus</a>"; + + } else { + echo "Vous disposez d'une version non officielle. :/"; + } + ?> + </div> + </div> +</body> +</html> \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/.gitignore b/admin/vendors/dropzone-5.7.0/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..0a8439dca2ab84fd43eb9a301b85892b16652324 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/.gitignore @@ -0,0 +1,7 @@ +build +components +node_modules +.DS_Store +.sass-cache +_site +_config.yaml \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/.tagconfig b/admin/vendors/dropzone-5.7.0/.tagconfig new file mode 100644 index 0000000000000000000000000000000000000000..4e0cad936f57e70801a0baf03f294e2c18d994f7 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/.tagconfig @@ -0,0 +1,52 @@ +{ + "files": [ + { + "name": "src/dropzone.coffee", + "regexs": [ + "Dropzone.version = \"###\"" + ] + }, + { + "name": "dist/dropzone.js", + "regexs": [ + "version = \"###\"" + ] + }, + { + "name": "dist/min/dropzone.min.js", + "regexs": [ + "version=\"###\"" + ] + }, + { + "name": "dist/dropzone-amd-module.js", + "regexs": [ + "version = \"###\"" + ] + }, + { + "name": "dist/min/dropzone-amd-module.min.js", + "regexs": [ + "version=\"###\"" + ] + }, + { + "name": "package.json", + "regexs": [ + "\"version\": \"###\"" + ] + }, + { + "name": "component.json", + "regexs": [ + "\"version\": \"###\"" + ] + }, + { + "name": "bower.json", + "regexs": [ + "\"version\": \"###\"" + ] + } + ] +} diff --git a/admin/vendors/dropzone-5.7.0/CONTRIBUTING.md b/admin/vendors/dropzone-5.7.0/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..98aebe02457de8a02db02f76d53a9a4b08f53e91 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/CONTRIBUTING.md @@ -0,0 +1,6 @@ +Contribute +========== + +DO NOT CREATE PULL REQUESTS ON GITHUB! + +I will simply close them. If you want to contribute, please use [gitlab.com](https://gitlab.com/meno/dropzone) instead. \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/LICENSE b/admin/vendors/dropzone-5.7.0/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..2ec3379e5c0439b2a00ebaf6226a4178d9e6b69a --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/LICENSE @@ -0,0 +1,12 @@ +License + +(The MIT License) + +Copyright (c) 2012 Matias Meno <m@tias.me> +Logo & Website Design (c) 2015 "1910" www.weare1910.com + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/admin/vendors/dropzone-5.7.0/README.md b/admin/vendors/dropzone-5.7.0/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a22b3a14c0febd09613daa0ba0916e54c5e37765 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/README.md @@ -0,0 +1,36 @@ +<img alt="Dropzone.js" src="http://www.dropzonejs.com/images/new-logo.svg" /> + +Dropzone.js is a light weight JavaScript library that turns an HTML element into a dropzone. +This means that a user can drag and drop a file onto it, and the file gets uploaded to the server via AJAX. + +* * * + +_If you want support, please use [stackoverflow](http://stackoverflow.com/) with the `dropzone.js` tag and not the +GitHub issues tracker. Only post an issue here if you think you discovered a bug or have a feature request._ + +* * * + +**Please read the [contributing guidelines](CONTRIBUTING.md) before you start working on Dropzone!** + +<br> +<div align="center"> + <a href="https://gitlab.com/meno/dropzone/builds/artifacts/master/download?job=release"><strong>>> Download <<</strong></a> +</div> +<br> +<br> + +This is no longer the official repository for Dropzone. I have switched to [gitlab.com](https://gitlab.com/meno/dropzone) +as the primary location to continue development. + +There are multiple reasons why I am switching from GitHub to GitLab, but a few of the reasons are the +issue tracker that GitHub is providing, *drowning* me in issues that I am unable to categorise or prioritize properly, +the lack of proper continuous integration, and build files. I don't want the compiled `.js` files in my repository, and +people regularly commit changes to the compiled files and create pull requests with them. + +I will write a blog post soon, that goes into detail about why I am doing the switch. + +This repository will still remain, and always host the most up to date versions of dropzone, but only the distribution +files! + +MIT License +----------- diff --git a/admin/vendors/dropzone-5.7.0/bower.json b/admin/vendors/dropzone-5.7.0/bower.json new file mode 100644 index 0000000000000000000000000000000000000000..0d5a7010451ffe3e3ae74e094785ade1e8d1e08f --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/bower.json @@ -0,0 +1,16 @@ +{ + "name": "dropzone", + "location": "enyo/dropzone", + "version": "5.7.0", + "description": "Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.", + "homepage": "http://www.dropzonejs.com", + "main": [ + "dist/min/dropzone.min.css", + "dist/min/dropzone.min.js" + ], + "ignore": [ + "*", + "!dist", + "!dist/**/*" + ] +} diff --git a/admin/vendors/dropzone-5.7.0/component.json b/admin/vendors/dropzone-5.7.0/component.json new file mode 100644 index 0000000000000000000000000000000000000000..815c58e5be0eec3cfcfbc439f79fd7c039930684 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/component.json @@ -0,0 +1,10 @@ +{ + "name": "dropzone", + "repo": "enyo/dropzone", + "version": "5.7.0", + "description": "Handles drag and drop of files for you.", + "scripts": [ "index.js", "dist/dropzone.js" ], + "styles": [ "dist/basic.css" ], + "dependencies": { }, + "license": "MIT" +} diff --git a/admin/vendors/dropzone-5.7.0/composer.json b/admin/vendors/dropzone-5.7.0/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..6be638756151a80d8f50532c5e6eef3e4bda481a --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/composer.json @@ -0,0 +1,18 @@ +{ + "name": "enyo/dropzone", + "description": "Handles drag and drop of files for you.", + "homepage": "http://www.dropzonejs.com", + "keywords": [ + "dragndrop", + "drag and drop", + "file upload", + "upload" + ], + "authors": [{ + "name": "Matias Meno", + "email": "m@tias.me", + "homepage": "http://www.matiasmeno.com" + }], + "license": "MIT", + "minimum-stability": "dev" +} diff --git a/admin/vendors/dropzone-5.7.0/dist/basic.css b/admin/vendors/dropzone-5.7.0/dist/basic.css new file mode 100644 index 0000000000000000000000000000000000000000..b72d7deaaeb10f4e0777b55ec9cae8deb8d121a3 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/basic.css @@ -0,0 +1,39 @@ +/* + * The MIT License + * Copyright (c) 2012 Matias Meno <m@tias.me> + */ +.dropzone, .dropzone * { + box-sizing: border-box; } + +.dropzone { + position: relative; } + .dropzone .dz-preview { + position: relative; + display: inline-block; + width: 120px; + margin: 0.5em; } + .dropzone .dz-preview .dz-progress { + display: block; + height: 15px; + border: 1px solid #aaa; } + .dropzone .dz-preview .dz-progress .dz-upload { + display: block; + height: 100%; + width: 0; + background: green; } + .dropzone .dz-preview .dz-error-message { + color: red; + display: none; } + .dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark { + display: block; } + .dropzone .dz-preview.dz-success .dz-success-mark { + display: block; } + .dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark { + position: absolute; + display: none; + left: 30px; + top: 30px; + width: 54px; + height: 58px; + left: 50%; + margin-left: -27px; } diff --git a/admin/vendors/dropzone-5.7.0/dist/dropzone-amd-module.js b/admin/vendors/dropzone-5.7.0/dist/dropzone-amd-module.js new file mode 100644 index 0000000000000000000000000000000000000000..dc6b1961c19bea5a30495cbdeb9cc02efdcb193a --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/dropzone-amd-module.js @@ -0,0 +1,3845 @@ +// Uses AMD or browser globals to create a jQuery plugin. +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +} (function (jQuery) { + var module = { exports: { } }; // Fake component + +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + * + * More info at [www.dropzonejs.com](http://www.dropzonejs.com) + * + * Copyright (c) 2012, Matias Meno + * + * 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. + * + */ +// The Emitter class provides the ability to call `.on()` on Dropzone to listen +// to events. +// It is strongly based on component's emitter class, and I removed the +// functionality because of the dependency hell with different frameworks. +var Emitter = +/*#__PURE__*/ +function () { + function Emitter() { + _classCallCheck(this, Emitter); + } + + _createClass(Emitter, [{ + key: "on", + // Add an event listener for given event + value: function on(event, fn) { + this._callbacks = this._callbacks || {}; // Create namespace for this event + + if (!this._callbacks[event]) { + this._callbacks[event] = []; + } + + this._callbacks[event].push(fn); + + return this; + } + }, { + key: "emit", + value: function emit(event) { + this._callbacks = this._callbacks || {}; + var callbacks = this._callbacks[event]; + + if (callbacks) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = callbacks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var callback = _step.value; + callback.apply(this, args); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + + return this; + } // Remove event listener for given event. If fn is not provided, all event + // listeners for that event will be removed. If neither is provided, all + // event listeners will be removed. + + }, { + key: "off", + value: function off(event, fn) { + if (!this._callbacks || arguments.length === 0) { + this._callbacks = {}; + return this; + } // specific event + + + var callbacks = this._callbacks[event]; + + if (!callbacks) { + return this; + } // remove all handlers + + + if (arguments.length === 1) { + delete this._callbacks[event]; + return this; + } // remove specific handler + + + for (var i = 0; i < callbacks.length; i++) { + var callback = callbacks[i]; + + if (callback === fn) { + callbacks.splice(i, 1); + break; + } + } + + return this; + } + }]); + + return Emitter; +}(); + +var Dropzone = +/*#__PURE__*/ +function (_Emitter) { + _inherits(Dropzone, _Emitter); + + _createClass(Dropzone, null, [{ + key: "initClass", + value: function initClass() { + // Exposing the emitter class, mainly for tests + this.prototype.Emitter = Emitter; + /* + This is a list of all available events you can register on a dropzone object. + You can register an event handler like this: + dropzone.on("dragEnter", function() { }); + */ + + this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"]; + this.prototype.defaultOptions = { + /** + * Has to be specified on elements other than form (or when the form + * doesn't have an `action` attribute). You can also + * provide a function that will be called with `files` and + * must return the url (since `v3.12.0`) + */ + url: null, + + /** + * Can be changed to `"put"` if necessary. You can also provide a function + * that will be called with `files` and must return the method (since `v3.12.0`). + */ + method: "post", + + /** + * Will be set on the XHRequest. + */ + withCredentials: false, + + /** + * The timeout for the XHR requests in milliseconds (since `v4.4.0`). + */ + timeout: 30000, + + /** + * How many file uploads to process in parallel (See the + * Enqueuing file uploads documentation section for more info) + */ + parallelUploads: 2, + + /** + * Whether to send multiple files in one request. If + * this it set to true, then the fallback file input element will + * have the `multiple` attribute as well. This option will + * also trigger additional events (like `processingmultiple`). See the events + * documentation section for more information. + */ + uploadMultiple: false, + + /** + * Whether you want files to be uploaded in chunks to your server. This can't be + * used in combination with `uploadMultiple`. + * + * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload. + */ + chunking: false, + + /** + * If `chunking` is enabled, this defines whether **every** file should be chunked, + * even if the file size is below chunkSize. This means, that the additional chunk + * form data will be submitted and the `chunksUploaded` callback will be invoked. + */ + forceChunking: false, + + /** + * If `chunking` is `true`, then this defines the chunk size in bytes. + */ + chunkSize: 2000000, + + /** + * If `true`, the individual chunks of a file are being uploaded simultaneously. + */ + parallelChunkUploads: false, + + /** + * Whether a chunk should be retried if it fails. + */ + retryChunks: false, + + /** + * If `retryChunks` is true, how many times should it be retried. + */ + retryChunksLimit: 3, + + /** + * If not `null` defines how many files this Dropzone handles. If it exceeds, + * the event `maxfilesexceeded` will be called. The dropzone element gets the + * class `dz-max-files-reached` accordingly so you can provide visual feedback. + */ + maxFilesize: 256, + + /** + * The name of the file param that gets transferred. + * **NOTE**: If you have the option `uploadMultiple` set to `true`, then + * Dropzone will append `[]` to the name. + */ + paramName: "file", + + /** + * Whether thumbnails for images should be generated + */ + createImageThumbnails: true, + + /** + * In MB. When the filename exceeds this limit, the thumbnail will not be generated. + */ + maxThumbnailFilesize: 10, + + /** + * If `null`, the ratio of the image will be used to calculate it. + */ + thumbnailWidth: 120, + + /** + * The same as `thumbnailWidth`. If both are null, images will not be resized. + */ + thumbnailHeight: 120, + + /** + * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided. + * Can be either `contain` or `crop`. + */ + thumbnailMethod: 'crop', + + /** + * If set, images will be resized to these dimensions before being **uploaded**. + * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect + * ratio of the file will be preserved. + * + * The `options.transformFile` function uses these options, so if the `transformFile` function + * is overridden, these options don't do anything. + */ + resizeWidth: null, + + /** + * See `resizeWidth`. + */ + resizeHeight: null, + + /** + * The mime type of the resized image (before it gets uploaded to the server). + * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`. + * See `resizeWidth` for more information. + */ + resizeMimeType: null, + + /** + * The quality of the resized images. See `resizeWidth`. + */ + resizeQuality: 0.8, + + /** + * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided. + * Can be either `contain` or `crop`. + */ + resizeMethod: 'contain', + + /** + * The base that is used to calculate the filesize. You can change this to + * 1024 if you would rather display kibibytes, mebibytes, etc... + * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`. + * You can change this to `1024` if you don't care about validity. + */ + filesizeBase: 1000, + + /** + * Can be used to limit the maximum number of files that will be handled by this Dropzone + */ + maxFiles: null, + + /** + * An optional object to send additional headers to the server. Eg: + * `{ "My-Awesome-Header": "header value" }` + */ + headers: null, + + /** + * If `true`, the dropzone element itself will be clickable, if `false` + * nothing will be clickable. + * + * You can also pass an HTML element, a CSS selector (for multiple elements) + * or an array of those. In that case, all of those elements will trigger an + * upload when clicked. + */ + clickable: true, + + /** + * Whether hidden files in directories should be ignored. + */ + ignoreHiddenFiles: true, + + /** + * The default implementation of `accept` checks the file's mime type or + * extension against this list. This is a comma separated list of mime + * types or file extensions. + * + * Eg.: `image/*,application/pdf,.psd` + * + * If the Dropzone is `clickable` this option will also be used as + * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept) + * parameter on the hidden file input as well. + */ + acceptedFiles: null, + + /** + * **Deprecated!** + * Use acceptedFiles instead. + */ + acceptedMimeTypes: null, + + /** + * If false, files will be added to the queue but the queue will not be + * processed automatically. + * This can be useful if you need some additional user input before sending + * files (or if you want want all files sent at once). + * If you're ready to send the file simply call `myDropzone.processQueue()`. + * + * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation + * section for more information. + */ + autoProcessQueue: true, + + /** + * If false, files added to the dropzone will not be queued by default. + * You'll have to call `enqueueFile(file)` manually. + */ + autoQueue: true, + + /** + * If `true`, this will add a link to every file preview to remove or cancel (if + * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation` + * and `dictRemoveFile` options are used for the wording. + */ + addRemoveLinks: false, + + /** + * Defines where to display the file previews – if `null` the + * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS + * selector. The element should have the `dropzone-previews` class so + * the previews are displayed properly. + */ + previewsContainer: null, + + /** + * This is the element the hidden input field (which is used when clicking on the + * dropzone to trigger file selection) will be appended to. This might + * be important in case you use frameworks to switch the content of your page. + * + * Can be a selector string, or an element directly. + */ + hiddenInputContainer: "body", + + /** + * If null, no capture type will be specified + * If camera, mobile devices will skip the file selection and choose camera + * If microphone, mobile devices will skip the file selection and choose the microphone + * If camcorder, mobile devices will skip the file selection and choose the camera in video mode + * On apple devices multiple must be set to false. AcceptedFiles may need to + * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*"). + */ + capture: null, + + /** + * **Deprecated**. Use `renameFile` instead. + */ + renameFilename: null, + + /** + * A function that is invoked before the file is uploaded to the server and renames the file. + * This function gets the `File` as argument and can use the `file.name`. The actual name of the + * file that gets used during the upload can be accessed through `file.upload.filename`. + */ + renameFile: null, + + /** + * If `true` the fallback will be forced. This is very useful to test your server + * implementations first and make sure that everything works as + * expected without dropzone if you experience problems, and to test + * how your fallbacks will look. + */ + forceFallback: false, + + /** + * The text used before any files are dropped. + */ + dictDefaultMessage: "Drop files here to upload", + + /** + * The text that replaces the default message text it the browser is not supported. + */ + dictFallbackMessage: "Your browser does not support drag'n'drop file uploads.", + + /** + * The text that will be added before the fallback form. + * If you provide a fallback element yourself, or if this option is `null` this will + * be ignored. + */ + dictFallbackText: "Please use the fallback form below to upload your files like in the olden days.", + + /** + * If the filesize is too big. + * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values. + */ + dictFileTooBig: "File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.", + + /** + * If the file doesn't match the file type. + */ + dictInvalidFileType: "You can't upload files of this type.", + + /** + * If the server response was invalid. + * `{{statusCode}}` will be replaced with the servers status code. + */ + dictResponseError: "Server responded with {{statusCode}} code.", + + /** + * If `addRemoveLinks` is true, the text to be used for the cancel upload link. + */ + dictCancelUpload: "Cancel upload", + + /** + * The text that is displayed if an upload was manually canceled + */ + dictUploadCanceled: "Upload canceled.", + + /** + * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload. + */ + dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?", + + /** + * If `addRemoveLinks` is true, the text to be used to remove a file. + */ + dictRemoveFile: "Remove file", + + /** + * If this is not null, then the user will be prompted before removing a file. + */ + dictRemoveFileConfirmation: null, + + /** + * Displayed if `maxFiles` is st and exceeded. + * The string `{{maxFiles}}` will be replaced by the configuration value. + */ + dictMaxFilesExceeded: "You can not upload any more files.", + + /** + * Allows you to translate the different units. Starting with `tb` for terabytes and going down to + * `b` for bytes. + */ + dictFileSizeUnits: { + tb: "TB", + gb: "GB", + mb: "MB", + kb: "KB", + b: "b" + }, + + /** + * Called when dropzone initialized + * You can add event listeners here + */ + init: function init() {}, + + /** + * Can be an **object** of additional parameters to transfer to the server, **or** a `Function` + * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case + * of a function, this needs to return a map. + * + * The default implementation does nothing for normal uploads, but adds relevant information for + * chunked uploads. + * + * This is the same as adding hidden input fields in the form element. + */ + params: function params(files, xhr, chunk) { + if (chunk) { + return { + dzuuid: chunk.file.upload.uuid, + dzchunkindex: chunk.index, + dztotalfilesize: chunk.file.size, + dzchunksize: this.options.chunkSize, + dztotalchunkcount: chunk.file.upload.totalChunkCount, + dzchunkbyteoffset: chunk.index * this.options.chunkSize + }; + } + }, + + /** + * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File) + * and a `done` function as parameters. + * + * If the done function is invoked without arguments, the file is "accepted" and will + * be processed. If you pass an error message, the file is rejected, and the error + * message will be displayed. + * This function will not be called if the file is too big or doesn't match the mime types. + */ + accept: function accept(file, done) { + return done(); + }, + + /** + * The callback that will be invoked when all chunks have been uploaded for a file. + * It gets the file for which the chunks have been uploaded as the first parameter, + * and the `done` function as second. `done()` needs to be invoked when everything + * needed to finish the upload process is done. + */ + chunksUploaded: function chunksUploaded(file, done) { + done(); + }, + + /** + * Gets called when the browser is not supported. + * The default implementation shows the fallback input field and adds + * a text. + */ + fallback: function fallback() { + // This code should pass in IE7... :( + var messageElement; + this.element.className = "".concat(this.element.className, " dz-browser-not-supported"); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = this.element.getElementsByTagName("div")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var child = _step2.value; + + if (/(^| )dz-message($| )/.test(child.className)) { + messageElement = child; + child.className = "dz-message"; // Removes the 'dz-default' class + + break; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + if (!messageElement) { + messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>"); + this.element.appendChild(messageElement); + } + + var span = messageElement.getElementsByTagName("span")[0]; + + if (span) { + if (span.textContent != null) { + span.textContent = this.options.dictFallbackMessage; + } else if (span.innerText != null) { + span.innerText = this.options.dictFallbackMessage; + } + } + + return this.element.appendChild(this.getFallbackForm()); + }, + + /** + * Gets called to calculate the thumbnail dimensions. + * + * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing: + * + * - `srcWidth` & `srcHeight` (required) + * - `trgWidth` & `trgHeight` (required) + * - `srcX` & `srcY` (optional, default `0`) + * - `trgX` & `trgY` (optional, default `0`) + * + * Those values are going to be used by `ctx.drawImage()`. + */ + resize: function resize(file, width, height, resizeMethod) { + var info = { + srcX: 0, + srcY: 0, + srcWidth: file.width, + srcHeight: file.height + }; + var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified + + if (width == null && height == null) { + width = info.srcWidth; + height = info.srcHeight; + } else if (width == null) { + width = height * srcRatio; + } else if (height == null) { + height = width / srcRatio; + } // Make sure images aren't upscaled + + + width = Math.min(width, info.srcWidth); + height = Math.min(height, info.srcHeight); + var trgRatio = width / height; + + if (info.srcWidth > width || info.srcHeight > height) { + // Image is bigger and needs rescaling + if (resizeMethod === 'crop') { + if (srcRatio > trgRatio) { + info.srcHeight = file.height; + info.srcWidth = info.srcHeight * trgRatio; + } else { + info.srcWidth = file.width; + info.srcHeight = info.srcWidth / trgRatio; + } + } else if (resizeMethod === 'contain') { + // Method 'contain' + if (srcRatio > trgRatio) { + height = width / srcRatio; + } else { + width = height * srcRatio; + } + } else { + throw new Error("Unknown resizeMethod '".concat(resizeMethod, "'")); + } + } + + info.srcX = (file.width - info.srcWidth) / 2; + info.srcY = (file.height - info.srcHeight) / 2; + info.trgWidth = width; + info.trgHeight = height; + return info; + }, + + /** + * Can be used to transform the file (for example, resize an image if necessary). + * + * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes + * images according to those dimensions. + * + * Gets the `file` as the first parameter, and a `done()` function as the second, that needs + * to be invoked with the file when the transformation is done. + */ + transformFile: function transformFile(file, done) { + if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) { + return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done); + } else { + return done(file); + } + }, + + /** + * A string that contains the template used for each dropped + * file. Change it to fulfill your needs but make sure to properly + * provide all elements. + * + * If you want to use an actual HTML element instead of providing a String + * as a config option, you could create a div with the id `tpl`, + * put the template inside it and provide the element like this: + * + * document + * .querySelector('#tpl') + * .innerHTML + * + */ + previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n <div class=\"dz-details\">\n <div class=\"dz-size\"><span data-dz-size></span></div>\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n <div class=\"dz-success-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Check</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\"></path>\n </g>\n </svg>\n </div>\n <div class=\"dz-error-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Error</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>", + // END OPTIONS + // (Required by the dropzone documentation parser) + + /* + Those functions register themselves to the events on init and handle all + the user interface specific stuff. Overwriting them won't break the upload + but can break the way it's displayed. + You can overwrite them if you don't like the default behavior. If you just + want to add an additional event handler, register it on the dropzone object + and don't overwrite those options. + */ + // Those are self explanatory and simply concern the DragnDrop. + drop: function drop(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragstart: function dragstart(e) {}, + dragend: function dragend(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragenter: function dragenter(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragover: function dragover(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragleave: function dragleave(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + paste: function paste(e) {}, + // Called whenever there are no files left in the dropzone anymore, and the + // dropzone should be displayed as if in the initial state. + reset: function reset() { + return this.element.classList.remove("dz-started"); + }, + // Called when a file is added to the queue + // Receives `file` + addedfile: function addedfile(file) { + var _this2 = this; + + if (this.element === this.previewsContainer) { + this.element.classList.add("dz-started"); + } + + if (this.previewsContainer) { + file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); + file.previewTemplate = file.previewElement; // Backwards compatibility + + this.previewsContainer.appendChild(file.previewElement); + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = file.previewElement.querySelectorAll("[data-dz-name]")[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var node = _step3.value; + node.textContent = file.name; + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = file.previewElement.querySelectorAll("[data-dz-size]")[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + node = _step4.value; + node.innerHTML = this.filesize(file.size); + } + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { + _iterator4["return"](); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + + if (this.options.addRemoveLinks) { + file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>".concat(this.options.dictRemoveFile, "</a>")); + file.previewElement.appendChild(file._removeLink); + } + + var removeFileEvent = function removeFileEvent(e) { + e.preventDefault(); + e.stopPropagation(); + + if (file.status === Dropzone.UPLOADING) { + return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + if (_this2.options.dictRemoveFileConfirmation) { + return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + return _this2.removeFile(file); + } + } + }; + + var _iteratorNormalCompletion5 = true; + var _didIteratorError5 = false; + var _iteratorError5 = undefined; + + try { + for (var _iterator5 = file.previewElement.querySelectorAll("[data-dz-remove]")[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { + var removeLink = _step5.value; + removeLink.addEventListener("click", removeFileEvent); + } + } catch (err) { + _didIteratorError5 = true; + _iteratorError5 = err; + } finally { + try { + if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) { + _iterator5["return"](); + } + } finally { + if (_didIteratorError5) { + throw _iteratorError5; + } + } + } + } + }, + // Called whenever a file is removed. + removedfile: function removedfile(file) { + if (file.previewElement != null && file.previewElement.parentNode != null) { + file.previewElement.parentNode.removeChild(file.previewElement); + } + + return this._updateMaxFilesReachedClass(); + }, + // Called when a thumbnail has been generated + // Receives `file` and `dataUrl` + thumbnail: function thumbnail(file, dataUrl) { + if (file.previewElement) { + file.previewElement.classList.remove("dz-file-preview"); + var _iteratorNormalCompletion6 = true; + var _didIteratorError6 = false; + var _iteratorError6 = undefined; + + try { + for (var _iterator6 = file.previewElement.querySelectorAll("[data-dz-thumbnail]")[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { + var thumbnailElement = _step6.value; + thumbnailElement.alt = file.name; + thumbnailElement.src = dataUrl; + } + } catch (err) { + _didIteratorError6 = true; + _iteratorError6 = err; + } finally { + try { + if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) { + _iterator6["return"](); + } + } finally { + if (_didIteratorError6) { + throw _iteratorError6; + } + } + } + + return setTimeout(function () { + return file.previewElement.classList.add("dz-image-preview"); + }, 1); + } + }, + // Called whenever an error occurs + // Receives `file` and `message` + error: function error(file, message) { + if (file.previewElement) { + file.previewElement.classList.add("dz-error"); + + if (typeof message !== "String" && message.error) { + message = message.error; + } + + var _iteratorNormalCompletion7 = true; + var _didIteratorError7 = false; + var _iteratorError7 = undefined; + + try { + for (var _iterator7 = file.previewElement.querySelectorAll("[data-dz-errormessage]")[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { + var node = _step7.value; + node.textContent = message; + } + } catch (err) { + _didIteratorError7 = true; + _iteratorError7 = err; + } finally { + try { + if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) { + _iterator7["return"](); + } + } finally { + if (_didIteratorError7) { + throw _iteratorError7; + } + } + } + } + }, + errormultiple: function errormultiple() {}, + // Called when a file gets processed. Since there is a cue, not all added + // files are processed immediately. + // Receives `file` + processing: function processing(file) { + if (file.previewElement) { + file.previewElement.classList.add("dz-processing"); + + if (file._removeLink) { + return file._removeLink.innerHTML = this.options.dictCancelUpload; + } + } + }, + processingmultiple: function processingmultiple() {}, + // Called whenever the upload progress gets updated. + // Receives `file`, `progress` (percentage 0-100) and `bytesSent`. + // To get the total number of bytes of the file, use `file.size` + uploadprogress: function uploadprogress(file, progress, bytesSent) { + if (file.previewElement) { + var _iteratorNormalCompletion8 = true; + var _didIteratorError8 = false; + var _iteratorError8 = undefined; + + try { + for (var _iterator8 = file.previewElement.querySelectorAll("[data-dz-uploadprogress]")[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { + var node = _step8.value; + node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = "".concat(progress, "%"); + } + } catch (err) { + _didIteratorError8 = true; + _iteratorError8 = err; + } finally { + try { + if (!_iteratorNormalCompletion8 && _iterator8["return"] != null) { + _iterator8["return"](); + } + } finally { + if (_didIteratorError8) { + throw _iteratorError8; + } + } + } + } + }, + // Called whenever the total upload progress gets updated. + // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent + totaluploadprogress: function totaluploadprogress() {}, + // Called just before the file is sent. Gets the `xhr` object as second + // parameter, so you can modify it (for example to add a CSRF token) and a + // `formData` object to add additional information. + sending: function sending() {}, + sendingmultiple: function sendingmultiple() {}, + // When the complete upload is finished and successful + // Receives `file` + success: function success(file) { + if (file.previewElement) { + return file.previewElement.classList.add("dz-success"); + } + }, + successmultiple: function successmultiple() {}, + // When the upload is canceled. + canceled: function canceled(file) { + return this.emit("error", file, this.options.dictUploadCanceled); + }, + canceledmultiple: function canceledmultiple() {}, + // When the upload is finished, either with success or an error. + // Receives `file` + complete: function complete(file) { + if (file._removeLink) { + file._removeLink.innerHTML = this.options.dictRemoveFile; + } + + if (file.previewElement) { + return file.previewElement.classList.add("dz-complete"); + } + }, + completemultiple: function completemultiple() {}, + maxfilesexceeded: function maxfilesexceeded() {}, + maxfilesreached: function maxfilesreached() {}, + queuecomplete: function queuecomplete() {}, + addedfiles: function addedfiles() {} + }; + this.prototype._thumbnailQueue = []; + this.prototype._processingThumbnail = false; + } // global utility + + }, { + key: "extend", + value: function extend(target) { + for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + objects[_key2 - 1] = arguments[_key2]; + } + + for (var _i = 0, _objects = objects; _i < _objects.length; _i++) { + var object = _objects[_i]; + + for (var key in object) { + var val = object[key]; + target[key] = val; + } + } + + return target; + } + }]); + + function Dropzone(el, options) { + var _this; + + _classCallCheck(this, Dropzone); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Dropzone).call(this)); + var fallback, left; + _this.element = el; // For backwards compatibility since the version was in the prototype previously + + _this.version = Dropzone.version; + _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\n*/g, ""); + _this.clickableElements = []; + _this.listeners = []; + _this.files = []; // All files + + if (typeof _this.element === "string") { + _this.element = document.querySelector(_this.element); + } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird. + + + if (!_this.element || _this.element.nodeType == null) { + throw new Error("Invalid dropzone element."); + } + + if (_this.element.dropzone) { + throw new Error("Dropzone already attached."); + } // Now add this dropzone to the instances. + + + Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself. + + _this.element.dropzone = _assertThisInitialized(_this); + var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {}; + _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {}); // If the browser failed, just call the fallback and leave + + if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) { + return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this))); + } // @options.url = @element.getAttribute "action" unless @options.url? + + + if (_this.options.url == null) { + _this.options.url = _this.element.getAttribute("action"); + } + + if (!_this.options.url) { + throw new Error("No URL provided."); + } + + if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) { + throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated."); + } + + if (_this.options.uploadMultiple && _this.options.chunking) { + throw new Error('You cannot set both: uploadMultiple and chunking.'); + } // Backwards compatibility + + + if (_this.options.acceptedMimeTypes) { + _this.options.acceptedFiles = _this.options.acceptedMimeTypes; + delete _this.options.acceptedMimeTypes; + } // Backwards compatibility + + + if (_this.options.renameFilename != null) { + _this.options.renameFile = function (file) { + return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file); + }; + } + + _this.options.method = _this.options.method.toUpperCase(); + + if ((fallback = _this.getExistingFallback()) && fallback.parentNode) { + // Remove the fallback + fallback.parentNode.removeChild(fallback); + } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false + + + if (_this.options.previewsContainer !== false) { + if (_this.options.previewsContainer) { + _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, "previewsContainer"); + } else { + _this.previewsContainer = _this.element; + } + } + + if (_this.options.clickable) { + if (_this.options.clickable === true) { + _this.clickableElements = [_this.element]; + } else { + _this.clickableElements = Dropzone.getElements(_this.options.clickable, "clickable"); + } + } + + _this.init(); + + return _this; + } // Returns all files that have been accepted + + + _createClass(Dropzone, [{ + key: "getAcceptedFiles", + value: function getAcceptedFiles() { + return this.files.filter(function (file) { + return file.accepted; + }).map(function (file) { + return file; + }); + } // Returns all files that have been rejected + // Not sure when that's going to be useful, but added for completeness. + + }, { + key: "getRejectedFiles", + value: function getRejectedFiles() { + return this.files.filter(function (file) { + return !file.accepted; + }).map(function (file) { + return file; + }); + } + }, { + key: "getFilesWithStatus", + value: function getFilesWithStatus(status) { + return this.files.filter(function (file) { + return file.status === status; + }).map(function (file) { + return file; + }); + } // Returns all files that are in the queue + + }, { + key: "getQueuedFiles", + value: function getQueuedFiles() { + return this.getFilesWithStatus(Dropzone.QUEUED); + } + }, { + key: "getUploadingFiles", + value: function getUploadingFiles() { + return this.getFilesWithStatus(Dropzone.UPLOADING); + } + }, { + key: "getAddedFiles", + value: function getAddedFiles() { + return this.getFilesWithStatus(Dropzone.ADDED); + } // Files that are either queued or uploading + + }, { + key: "getActiveFiles", + value: function getActiveFiles() { + return this.files.filter(function (file) { + return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED; + }).map(function (file) { + return file; + }); + } // The function that gets called when Dropzone is initialized. You + // can (and should) setup event listeners inside this function. + + }, { + key: "init", + value: function init() { + var _this3 = this; + + // In case it isn't set already + if (this.element.tagName === "form") { + this.element.setAttribute("enctype", "multipart/form-data"); + } + + if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) { + this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">".concat(this.options.dictDefaultMessage, "</button></div>"))); + } + + if (this.clickableElements.length) { + var setupHiddenFileInput = function setupHiddenFileInput() { + if (_this3.hiddenFileInput) { + _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput); + } + + _this3.hiddenFileInput = document.createElement("input"); + + _this3.hiddenFileInput.setAttribute("type", "file"); + + if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) { + _this3.hiddenFileInput.setAttribute("multiple", "multiple"); + } + + _this3.hiddenFileInput.className = "dz-hidden-input"; + + if (_this3.options.acceptedFiles !== null) { + _this3.hiddenFileInput.setAttribute("accept", _this3.options.acceptedFiles); + } + + if (_this3.options.capture !== null) { + _this3.hiddenFileInput.setAttribute("capture", _this3.options.capture); + } // Not setting `display="none"` because some browsers don't accept clicks + // on elements that aren't displayed. + + + _this3.hiddenFileInput.style.visibility = "hidden"; + _this3.hiddenFileInput.style.position = "absolute"; + _this3.hiddenFileInput.style.top = "0"; + _this3.hiddenFileInput.style.left = "0"; + _this3.hiddenFileInput.style.height = "0"; + _this3.hiddenFileInput.style.width = "0"; + Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput); + return _this3.hiddenFileInput.addEventListener("change", function () { + var files = _this3.hiddenFileInput.files; + + if (files.length) { + var _iteratorNormalCompletion9 = true; + var _didIteratorError9 = false; + var _iteratorError9 = undefined; + + try { + for (var _iterator9 = files[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { + var file = _step9.value; + + _this3.addFile(file); + } + } catch (err) { + _didIteratorError9 = true; + _iteratorError9 = err; + } finally { + try { + if (!_iteratorNormalCompletion9 && _iterator9["return"] != null) { + _iterator9["return"](); + } + } finally { + if (_didIteratorError9) { + throw _iteratorError9; + } + } + } + } + + _this3.emit("addedfiles", files); + + return setupHiddenFileInput(); + }); + }; + + setupHiddenFileInput(); + } + + this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself. + // They're not in @setupEventListeners() because they shouldn't be removed + // again when the dropzone gets disabled. + + var _iteratorNormalCompletion10 = true; + var _didIteratorError10 = false; + var _iteratorError10 = undefined; + + try { + for (var _iterator10 = this.events[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) { + var eventName = _step10.value; + this.on(eventName, this.options[eventName]); + } + } catch (err) { + _didIteratorError10 = true; + _iteratorError10 = err; + } finally { + try { + if (!_iteratorNormalCompletion10 && _iterator10["return"] != null) { + _iterator10["return"](); + } + } finally { + if (_didIteratorError10) { + throw _iteratorError10; + } + } + } + + this.on("uploadprogress", function () { + return _this3.updateTotalUploadProgress(); + }); + this.on("removedfile", function () { + return _this3.updateTotalUploadProgress(); + }); + this.on("canceled", function (file) { + return _this3.emit("complete", file); + }); // Emit a `queuecomplete` event if all files finished uploading. + + this.on("complete", function (file) { + if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) { + // This needs to be deferred so that `queuecomplete` really triggers after `complete` + return setTimeout(function () { + return _this3.emit("queuecomplete"); + }, 0); + } + }); + + var containsFiles = function containsFiles(e) { + return e.dataTransfer.types && e.dataTransfer.types.some(function (type) { + return type == "Files"; + }); + }; + + var noPropagation = function noPropagation(e) { + // If there are no files, we don't want to stop + // propagation so we don't interfere with other + // drag and drop behaviour. + if (!containsFiles(e)) return; + e.stopPropagation(); + + if (e.preventDefault) { + return e.preventDefault(); + } else { + return e.returnValue = false; + } + }; // Create the listeners + + + this.listeners = [{ + element: this.element, + events: { + "dragstart": function dragstart(e) { + return _this3.emit("dragstart", e); + }, + "dragenter": function dragenter(e) { + noPropagation(e); + return _this3.emit("dragenter", e); + }, + "dragover": function dragover(e) { + // Makes it possible to drag files from chrome's download bar + // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar + // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception) + var efct; + + try { + efct = e.dataTransfer.effectAllowed; + } catch (error) {} + + e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy'; + noPropagation(e); + return _this3.emit("dragover", e); + }, + "dragleave": function dragleave(e) { + return _this3.emit("dragleave", e); + }, + "drop": function drop(e) { + noPropagation(e); + return _this3.drop(e); + }, + "dragend": function dragend(e) { + return _this3.emit("dragend", e); + } + } // This is disabled right now, because the browsers don't implement it properly. + // "paste": (e) => + // noPropagation e + // @paste e + + }]; + this.clickableElements.forEach(function (clickableElement) { + return _this3.listeners.push({ + element: clickableElement, + events: { + "click": function click(evt) { + // Only the actual dropzone or the message element should trigger file selection + if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(".dz-message"))) { + _this3.hiddenFileInput.click(); // Forward the click + + } + + return true; + } + } + }); + }); + this.enable(); + return this.options.init.call(this); + } // Not fully tested yet + + }, { + key: "destroy", + value: function destroy() { + this.disable(); + this.removeAllFiles(true); + + if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) { + this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput); + this.hiddenFileInput = null; + } + + delete this.element.dropzone; + return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1); + } + }, { + key: "updateTotalUploadProgress", + value: function updateTotalUploadProgress() { + var totalUploadProgress; + var totalBytesSent = 0; + var totalBytes = 0; + var activeFiles = this.getActiveFiles(); + + if (activeFiles.length) { + var _iteratorNormalCompletion11 = true; + var _didIteratorError11 = false; + var _iteratorError11 = undefined; + + try { + for (var _iterator11 = this.getActiveFiles()[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) { + var file = _step11.value; + totalBytesSent += file.upload.bytesSent; + totalBytes += file.upload.total; + } + } catch (err) { + _didIteratorError11 = true; + _iteratorError11 = err; + } finally { + try { + if (!_iteratorNormalCompletion11 && _iterator11["return"] != null) { + _iterator11["return"](); + } + } finally { + if (_didIteratorError11) { + throw _iteratorError11; + } + } + } + + totalUploadProgress = 100 * totalBytesSent / totalBytes; + } else { + totalUploadProgress = 100; + } + + return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent); + } // @options.paramName can be a function taking one parameter rather than a string. + // A parameter name for a file is obtained simply by calling this with an index number. + + }, { + key: "_getParamName", + value: function _getParamName(n) { + if (typeof this.options.paramName === "function") { + return this.options.paramName(n); + } else { + return "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(n, "]") : ""); + } + } // If @options.renameFile is a function, + // the function will be used to rename the file.name before appending it to the formData + + }, { + key: "_renameFile", + value: function _renameFile(file) { + if (typeof this.options.renameFile !== "function") { + return file.name; + } + + return this.options.renameFile(file); + } // Returns a form that can be used as fallback if the browser does not support DragnDrop + // + // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided. + // This code has to pass in IE7 :( + + }, { + key: "getFallbackForm", + value: function getFallbackForm() { + var existingFallback, form; + + if (existingFallback = this.getExistingFallback()) { + return existingFallback; + } + + var fieldsString = "<div class=\"dz-fallback\">"; + + if (this.options.dictFallbackText) { + fieldsString += "<p>".concat(this.options.dictFallbackText, "</p>"); + } + + fieldsString += "<input type=\"file\" name=\"".concat(this._getParamName(0), "\" ").concat(this.options.uploadMultiple ? 'multiple="multiple"' : undefined, " /><input type=\"submit\" value=\"Upload!\"></div>"); + var fields = Dropzone.createElement(fieldsString); + + if (this.element.tagName !== "FORM") { + form = Dropzone.createElement("<form action=\"".concat(this.options.url, "\" enctype=\"multipart/form-data\" method=\"").concat(this.options.method, "\"></form>")); + form.appendChild(fields); + } else { + // Make sure that the enctype and method attributes are set properly + this.element.setAttribute("enctype", "multipart/form-data"); + this.element.setAttribute("method", this.options.method); + } + + return form != null ? form : fields; + } // Returns the fallback elements if they exist already + // + // This code has to pass in IE7 :( + + }, { + key: "getExistingFallback", + value: function getExistingFallback() { + var getFallback = function getFallback(elements) { + var _iteratorNormalCompletion12 = true; + var _didIteratorError12 = false; + var _iteratorError12 = undefined; + + try { + for (var _iterator12 = elements[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) { + var el = _step12.value; + + if (/(^| )fallback($| )/.test(el.className)) { + return el; + } + } + } catch (err) { + _didIteratorError12 = true; + _iteratorError12 = err; + } finally { + try { + if (!_iteratorNormalCompletion12 && _iterator12["return"] != null) { + _iterator12["return"](); + } + } finally { + if (_didIteratorError12) { + throw _iteratorError12; + } + } + } + }; + + for (var _i2 = 0, _arr = ["div", "form"]; _i2 < _arr.length; _i2++) { + var tagName = _arr[_i2]; + var fallback; + + if (fallback = getFallback(this.element.getElementsByTagName(tagName))) { + return fallback; + } + } + } // Activates all listeners stored in @listeners + + }, { + key: "setupEventListeners", + value: function setupEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.addEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Deactivates all listeners stored in @listeners + + }, { + key: "removeEventListeners", + value: function removeEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.removeEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Removes all event listeners and cancels all files in the queue or being processed. + + }, { + key: "disable", + value: function disable() { + var _this4 = this; + + this.clickableElements.forEach(function (element) { + return element.classList.remove("dz-clickable"); + }); + this.removeEventListeners(); + this.disabled = true; + return this.files.map(function (file) { + return _this4.cancelUpload(file); + }); + } + }, { + key: "enable", + value: function enable() { + delete this.disabled; + this.clickableElements.forEach(function (element) { + return element.classList.add("dz-clickable"); + }); + return this.setupEventListeners(); + } // Returns a nicely formatted filesize + + }, { + key: "filesize", + value: function filesize(size) { + var selectedSize = 0; + var selectedUnit = "b"; + + if (size > 0) { + var units = ['tb', 'gb', 'mb', 'kb', 'b']; + + for (var i = 0; i < units.length; i++) { + var unit = units[i]; + var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10; + + if (size >= cutoff) { + selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i); + selectedUnit = unit; + break; + } + } + + selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits + } + + return "<strong>".concat(selectedSize, "</strong> ").concat(this.options.dictFileSizeUnits[selectedUnit]); + } // Adds or removes the `dz-max-files-reached` class from the form. + + }, { + key: "_updateMaxFilesReachedClass", + value: function _updateMaxFilesReachedClass() { + if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + if (this.getAcceptedFiles().length === this.options.maxFiles) { + this.emit('maxfilesreached', this.files); + } + + return this.element.classList.add("dz-max-files-reached"); + } else { + return this.element.classList.remove("dz-max-files-reached"); + } + } + }, { + key: "drop", + value: function drop(e) { + if (!e.dataTransfer) { + return; + } + + this.emit("drop", e); // Convert the FileList to an Array + // This is necessary for IE11 + + var files = []; + + for (var i = 0; i < e.dataTransfer.files.length; i++) { + files[i] = e.dataTransfer.files[i]; + } // Even if it's a folder, files.length will contain the folders. + + + if (files.length) { + var items = e.dataTransfer.items; + + if (items && items.length && items[0].webkitGetAsEntry != null) { + // The browser supports dropping of folders, so handle items instead of files + this._addFilesFromItems(items); + } else { + this.handleFiles(files); + } + } + + this.emit("addedfiles", files); + } + }, { + key: "paste", + value: function paste(e) { + if (__guard__(e != null ? e.clipboardData : undefined, function (x) { + return x.items; + }) == null) { + return; + } + + this.emit("paste", e); + var items = e.clipboardData.items; + + if (items.length) { + return this._addFilesFromItems(items); + } + } + }, { + key: "handleFiles", + value: function handleFiles(files) { + var _iteratorNormalCompletion13 = true; + var _didIteratorError13 = false; + var _iteratorError13 = undefined; + + try { + for (var _iterator13 = files[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) { + var file = _step13.value; + this.addFile(file); + } + } catch (err) { + _didIteratorError13 = true; + _iteratorError13 = err; + } finally { + try { + if (!_iteratorNormalCompletion13 && _iterator13["return"] != null) { + _iterator13["return"](); + } + } finally { + if (_didIteratorError13) { + throw _iteratorError13; + } + } + } + } // When a folder is dropped (or files are pasted), items must be handled + // instead of files. + + }, { + key: "_addFilesFromItems", + value: function _addFilesFromItems(items) { + var _this5 = this; + + return function () { + var result = []; + var _iteratorNormalCompletion14 = true; + var _didIteratorError14 = false; + var _iteratorError14 = undefined; + + try { + for (var _iterator14 = items[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { + var item = _step14.value; + var entry; + + if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) { + if (entry.isFile) { + result.push(_this5.addFile(item.getAsFile())); + } else if (entry.isDirectory) { + // Append all files from that directory to files + result.push(_this5._addFilesFromDirectory(entry, entry.name)); + } else { + result.push(undefined); + } + } else if (item.getAsFile != null) { + if (item.kind == null || item.kind === "file") { + result.push(_this5.addFile(item.getAsFile())); + } else { + result.push(undefined); + } + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError14 = true; + _iteratorError14 = err; + } finally { + try { + if (!_iteratorNormalCompletion14 && _iterator14["return"] != null) { + _iterator14["return"](); + } + } finally { + if (_didIteratorError14) { + throw _iteratorError14; + } + } + } + + return result; + }(); + } // Goes through the directory, and adds each file it finds recursively + + }, { + key: "_addFilesFromDirectory", + value: function _addFilesFromDirectory(directory, path) { + var _this6 = this; + + var dirReader = directory.createReader(); + + var errorHandler = function errorHandler(error) { + return __guardMethod__(console, 'log', function (o) { + return o.log(error); + }); + }; + + var readEntries = function readEntries() { + return dirReader.readEntries(function (entries) { + if (entries.length > 0) { + var _iteratorNormalCompletion15 = true; + var _didIteratorError15 = false; + var _iteratorError15 = undefined; + + try { + for (var _iterator15 = entries[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) { + var entry = _step15.value; + + if (entry.isFile) { + entry.file(function (file) { + if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') { + return; + } + + file.fullPath = "".concat(path, "/").concat(file.name); + return _this6.addFile(file); + }); + } else if (entry.isDirectory) { + _this6._addFilesFromDirectory(entry, "".concat(path, "/").concat(entry.name)); + } + } // Recursively call readEntries() again, since browser only handle + // the first 100 entries. + // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries + + } catch (err) { + _didIteratorError15 = true; + _iteratorError15 = err; + } finally { + try { + if (!_iteratorNormalCompletion15 && _iterator15["return"] != null) { + _iterator15["return"](); + } + } finally { + if (_didIteratorError15) { + throw _iteratorError15; + } + } + } + + readEntries(); + } + + return null; + }, errorHandler); + }; + + return readEntries(); + } // If `done()` is called without argument the file is accepted + // If you call it with an error message, the file is rejected + // (This allows for asynchronous validation) + // + // This function checks the filesize, and if the file.type passes the + // `acceptedFiles` check. + + }, { + key: "accept", + value: function accept(file, done) { + if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) { + done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)); + } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) { + done(this.options.dictInvalidFileType); + } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)); + this.emit("maxfilesexceeded", file); + } else { + this.options.accept.call(this, file, done); + } + } + }, { + key: "addFile", + value: function addFile(file) { + var _this7 = this; + + file.upload = { + uuid: Dropzone.uuidv4(), + progress: 0, + // Setting the total upload size to file.size for the beginning + // It's actual different than the size to be transmitted. + total: file.size, + bytesSent: 0, + filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and + // thus the chunks — might change if `options.transformFile` is set + // and does something to the data. + + }; + this.files.push(file); + file.status = Dropzone.ADDED; + this.emit("addedfile", file); + + this._enqueueThumbnail(file); + + this.accept(file, function (error) { + if (error) { + file.accepted = false; + + _this7._errorProcessing([file], error); // Will set the file.status + + } else { + file.accepted = true; + + if (_this7.options.autoQueue) { + _this7.enqueueFile(file); + } // Will set .accepted = true + + } + + _this7._updateMaxFilesReachedClass(); + }); + } // Wrapper for enqueueFile + + }, { + key: "enqueueFiles", + value: function enqueueFiles(files) { + var _iteratorNormalCompletion16 = true; + var _didIteratorError16 = false; + var _iteratorError16 = undefined; + + try { + for (var _iterator16 = files[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { + var file = _step16.value; + this.enqueueFile(file); + } + } catch (err) { + _didIteratorError16 = true; + _iteratorError16 = err; + } finally { + try { + if (!_iteratorNormalCompletion16 && _iterator16["return"] != null) { + _iterator16["return"](); + } + } finally { + if (_didIteratorError16) { + throw _iteratorError16; + } + } + } + + return null; + } + }, { + key: "enqueueFile", + value: function enqueueFile(file) { + var _this8 = this; + + if (file.status === Dropzone.ADDED && file.accepted === true) { + file.status = Dropzone.QUEUED; + + if (this.options.autoProcessQueue) { + return setTimeout(function () { + return _this8.processQueue(); + }, 0); // Deferring the call + } + } else { + throw new Error("This file can't be queued because it has already been processed or was rejected."); + } + } + }, { + key: "_enqueueThumbnail", + value: function _enqueueThumbnail(file) { + var _this9 = this; + + if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { + this._thumbnailQueue.push(file); + + return setTimeout(function () { + return _this9._processThumbnailQueue(); + }, 0); // Deferring the call + } + } + }, { + key: "_processThumbnailQueue", + value: function _processThumbnailQueue() { + var _this10 = this; + + if (this._processingThumbnail || this._thumbnailQueue.length === 0) { + return; + } + + this._processingThumbnail = true; + + var file = this._thumbnailQueue.shift(); + + return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) { + _this10.emit("thumbnail", file, dataUrl); + + _this10._processingThumbnail = false; + return _this10._processThumbnailQueue(); + }); + } // Can be called by the user to remove a file + + }, { + key: "removeFile", + value: function removeFile(file) { + if (file.status === Dropzone.UPLOADING) { + this.cancelUpload(file); + } + + this.files = without(this.files, file); + this.emit("removedfile", file); + + if (this.files.length === 0) { + return this.emit("reset"); + } + } // Removes all files that aren't currently processed from the list + + }, { + key: "removeAllFiles", + value: function removeAllFiles(cancelIfNecessary) { + // Create a copy of files since removeFile() changes the @files array. + if (cancelIfNecessary == null) { + cancelIfNecessary = false; + } + + var _iteratorNormalCompletion17 = true; + var _didIteratorError17 = false; + var _iteratorError17 = undefined; + + try { + for (var _iterator17 = this.files.slice()[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) { + var file = _step17.value; + + if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) { + this.removeFile(file); + } + } + } catch (err) { + _didIteratorError17 = true; + _iteratorError17 = err; + } finally { + try { + if (!_iteratorNormalCompletion17 && _iterator17["return"] != null) { + _iterator17["return"](); + } + } finally { + if (_didIteratorError17) { + throw _iteratorError17; + } + } + } + + return null; + } // Resizes an image before it gets sent to the server. This function is the default behavior of + // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with + // the resized blob. + + }, { + key: "resizeImage", + value: function resizeImage(file, width, height, resizeMethod, callback) { + var _this11 = this; + + return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) { + if (canvas == null) { + // The image has not been resized + return callback(file); + } else { + var resizeMimeType = _this11.options.resizeMimeType; + + if (resizeMimeType == null) { + resizeMimeType = file.type; + } + + var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality); + + if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') { + // Now add the original EXIF information + resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL); + } + + return callback(Dropzone.dataURItoBlob(resizedDataURL)); + } + }); + } + }, { + key: "createThumbnail", + value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) { + var _this12 = this; + + var fileReader = new FileReader(); + + fileReader.onload = function () { + file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector + + if (file.type === "image/svg+xml") { + if (callback != null) { + callback(fileReader.result); + } + + return; + } + + _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback); + }; + + fileReader.readAsDataURL(file); + } // `mockFile` needs to have these attributes: + // + // { name: 'name', size: 12345, imageUrl: '' } + // + // `callback` will be invoked when the image has been downloaded and displayed. + // `crossOrigin` will be added to the `img` tag when accessing the file. + + }, { + key: "displayExistingFile", + value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) { + var _this13 = this; + + var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + this.emit("addedfile", mockFile); + this.emit("complete", mockFile); + + if (!resizeThumbnail) { + this.emit("thumbnail", mockFile, imageUrl); + if (callback) callback(); + } else { + var onDone = function onDone(thumbnail) { + _this13.emit('thumbnail', mockFile, thumbnail); + + if (callback) callback(); + }; + + mockFile.dataURL = imageUrl; + this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.resizeMethod, this.options.fixOrientation, onDone, crossOrigin); + } + } + }, { + key: "createThumbnailFromUrl", + value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) { + var _this14 = this; + + // Not using `new Image` here because of a bug in latest Chrome versions. + // See https://github.com/enyo/dropzone/pull/226 + var img = document.createElement("img"); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.onload = function () { + var loadExif = function loadExif(callback) { + return callback(1); + }; + + if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) { + loadExif = function loadExif(callback) { + return EXIF.getData(img, function () { + return callback(EXIF.getTag(this, 'Orientation')); + }); + }; + } + + return loadExif(function (orientation) { + file.width = img.width; + file.height = img.height; + + var resizeInfo = _this14.options.resize.call(_this14, file, width, height, resizeMethod); + + var canvas = document.createElement("canvas"); + var ctx = canvas.getContext("2d"); + canvas.width = resizeInfo.trgWidth; + canvas.height = resizeInfo.trgHeight; + + if (orientation > 4) { + canvas.width = resizeInfo.trgHeight; + canvas.height = resizeInfo.trgWidth; + } + + switch (orientation) { + case 2: + // horizontal flip + ctx.translate(canvas.width, 0); + ctx.scale(-1, 1); + break; + + case 3: + // 180° rotate left + ctx.translate(canvas.width, canvas.height); + ctx.rotate(Math.PI); + break; + + case 4: + // vertical flip + ctx.translate(0, canvas.height); + ctx.scale(1, -1); + break; + + case 5: + // vertical flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.scale(1, -1); + break; + + case 6: + // 90° rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(0, -canvas.width); + break; + + case 7: + // horizontal flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(canvas.height, -canvas.width); + ctx.scale(-1, 1); + break; + + case 8: + // 90° rotate left + ctx.rotate(-0.5 * Math.PI); + ctx.translate(-canvas.height, 0); + break; + } // This is a bugfix for iOS' scaling bug. + + + drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight); + var thumbnail = canvas.toDataURL("image/png"); + + if (callback != null) { + return callback(thumbnail, canvas); + } + }); + }; + + if (callback != null) { + img.onerror = callback; + } + + return img.src = file.dataURL; + } // Goes through the queue and processes files if there aren't too many already. + + }, { + key: "processQueue", + value: function processQueue() { + var parallelUploads = this.options.parallelUploads; + var processingLength = this.getUploadingFiles().length; + var i = processingLength; // There are already at least as many files uploading than should be + + if (processingLength >= parallelUploads) { + return; + } + + var queuedFiles = this.getQueuedFiles(); + + if (!(queuedFiles.length > 0)) { + return; + } + + if (this.options.uploadMultiple) { + // The files should be uploaded in one request + return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength)); + } else { + while (i < parallelUploads) { + if (!queuedFiles.length) { + return; + } // Nothing left to process + + + this.processFile(queuedFiles.shift()); + i++; + } + } + } // Wrapper for `processFiles` + + }, { + key: "processFile", + value: function processFile(file) { + return this.processFiles([file]); + } // Loads the file, then calls finishedLoading() + + }, { + key: "processFiles", + value: function processFiles(files) { + var _iteratorNormalCompletion18 = true; + var _didIteratorError18 = false; + var _iteratorError18 = undefined; + + try { + for (var _iterator18 = files[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { + var file = _step18.value; + file.processing = true; // Backwards compatibility + + file.status = Dropzone.UPLOADING; + this.emit("processing", file); + } + } catch (err) { + _didIteratorError18 = true; + _iteratorError18 = err; + } finally { + try { + if (!_iteratorNormalCompletion18 && _iterator18["return"] != null) { + _iterator18["return"](); + } + } finally { + if (_didIteratorError18) { + throw _iteratorError18; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("processingmultiple", files); + } + + return this.uploadFiles(files); + } + }, { + key: "_getFilesWithXhr", + value: function _getFilesWithXhr(xhr) { + var files; + return files = this.files.filter(function (file) { + return file.xhr === xhr; + }).map(function (file) { + return file; + }); + } // Cancels the file upload and sets the status to CANCELED + // **if** the file is actually being uploaded. + // If it's still in the queue, the file is being removed from it and the status + // set to CANCELED. + + }, { + key: "cancelUpload", + value: function cancelUpload(file) { + if (file.status === Dropzone.UPLOADING) { + var groupedFiles = this._getFilesWithXhr(file.xhr); + + var _iteratorNormalCompletion19 = true; + var _didIteratorError19 = false; + var _iteratorError19 = undefined; + + try { + for (var _iterator19 = groupedFiles[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) { + var groupedFile = _step19.value; + groupedFile.status = Dropzone.CANCELED; + } + } catch (err) { + _didIteratorError19 = true; + _iteratorError19 = err; + } finally { + try { + if (!_iteratorNormalCompletion19 && _iterator19["return"] != null) { + _iterator19["return"](); + } + } finally { + if (_didIteratorError19) { + throw _iteratorError19; + } + } + } + + if (typeof file.xhr !== 'undefined') { + file.xhr.abort(); + } + + var _iteratorNormalCompletion20 = true; + var _didIteratorError20 = false; + var _iteratorError20 = undefined; + + try { + for (var _iterator20 = groupedFiles[Symbol.iterator](), _step20; !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { + var _groupedFile = _step20.value; + this.emit("canceled", _groupedFile); + } + } catch (err) { + _didIteratorError20 = true; + _iteratorError20 = err; + } finally { + try { + if (!_iteratorNormalCompletion20 && _iterator20["return"] != null) { + _iterator20["return"](); + } + } finally { + if (_didIteratorError20) { + throw _iteratorError20; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", groupedFiles); + } + } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) { + file.status = Dropzone.CANCELED; + this.emit("canceled", file); + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", [file]); + } + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }, { + key: "resolveOption", + value: function resolveOption(option) { + if (typeof option === 'function') { + for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + + return option.apply(this, args); + } + + return option; + } + }, { + key: "uploadFile", + value: function uploadFile(file) { + return this.uploadFiles([file]); + } + }, { + key: "uploadFiles", + value: function uploadFiles(files) { + var _this15 = this; + + this._transformFiles(files, function (transformedFiles) { + if (_this15.options.chunking) { + // Chunking is not allowed to be used with `uploadMultiple` so we know + // that there is only __one__file. + var transformedFile = transformedFiles[0]; + files[0].upload.chunked = _this15.options.chunking && (_this15.options.forceChunking || transformedFile.size > _this15.options.chunkSize); + files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this15.options.chunkSize); + } + + if (files[0].upload.chunked) { + // This file should be sent in chunks! + // If the chunking option is set, we **know** that there can only be **one** file, since + // uploadMultiple is not allowed with this option. + var file = files[0]; + var _transformedFile = transformedFiles[0]; + var startedChunkCount = 0; + file.upload.chunks = []; + + var handleNextChunk = function handleNextChunk() { + var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet. + + while (file.upload.chunks[chunkIndex] !== undefined) { + chunkIndex++; + } // This means, that all chunks have already been started. + + + if (chunkIndex >= file.upload.totalChunkCount) return; + startedChunkCount++; + var start = chunkIndex * _this15.options.chunkSize; + var end = Math.min(start + _this15.options.chunkSize, file.size); + var dataBlock = { + name: _this15._getParamName(0), + data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end), + filename: file.upload.filename, + chunkIndex: chunkIndex + }; + file.upload.chunks[chunkIndex] = { + file: file, + index: chunkIndex, + dataBlock: dataBlock, + // In case we want to retry. + status: Dropzone.UPLOADING, + progress: 0, + retries: 0 // The number of times this block has been retried. + + }; + + _this15._uploadData(files, [dataBlock]); + }; + + file.upload.finishedChunkUpload = function (chunk) { + var allFinished = true; + chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk + + chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers + + chunk.xhr = null; + + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] === undefined) { + return handleNextChunk(); + } + + if (file.upload.chunks[i].status !== Dropzone.SUCCESS) { + allFinished = false; + } + } + + if (allFinished) { + _this15.options.chunksUploaded(file, function () { + _this15._finished(files, '', null); + }); + } + }; + + if (_this15.options.parallelChunkUploads) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + handleNextChunk(); + } + } else { + handleNextChunk(); + } + } else { + var dataBlocks = []; + + for (var _i3 = 0; _i3 < files.length; _i3++) { + dataBlocks[_i3] = { + name: _this15._getParamName(_i3), + data: transformedFiles[_i3], + filename: files[_i3].upload.filename + }; + } + + _this15._uploadData(files, dataBlocks); + } + }); + } /// Returns the right chunk for given file and xhr + + }, { + key: "_getChunk", + value: function _getChunk(file, xhr) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) { + return file.upload.chunks[i]; + } + } + } // This function actually uploads the file(s) to the server. + // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed + // files, or individual chunks for chunked upload). + + }, { + key: "_uploadData", + value: function _uploadData(files, dataBlocks) { + var _this16 = this; + + var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later. + + var _iteratorNormalCompletion21 = true; + var _didIteratorError21 = false; + var _iteratorError21 = undefined; + + try { + for (var _iterator21 = files[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { + var file = _step21.value; + file.xhr = xhr; + } + } catch (err) { + _didIteratorError21 = true; + _iteratorError21 = err; + } finally { + try { + if (!_iteratorNormalCompletion21 && _iterator21["return"] != null) { + _iterator21["return"](); + } + } finally { + if (_didIteratorError21) { + throw _iteratorError21; + } + } + } + + if (files[0].upload.chunked) { + // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk + files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr; + } + + var method = this.resolveOption(this.options.method, files); + var url = this.resolveOption(this.options.url, files); + xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8 + + xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179 + + xhr.withCredentials = !!this.options.withCredentials; + + xhr.onload = function (e) { + _this16._finishedUploading(files, xhr, e); + }; + + xhr.ontimeout = function () { + _this16._handleUploadError(files, xhr, "Request timedout after ".concat(_this16.options.timeout, " seconds")); + }; + + xhr.onerror = function () { + _this16._handleUploadError(files, xhr); + }; // Some browsers do not have the .upload property + + + var progressObj = xhr.upload != null ? xhr.upload : xhr; + + progressObj.onprogress = function (e) { + return _this16._updateFilesUploadProgress(files, xhr, e); + }; + + var headers = { + "Accept": "application/json", + "Cache-Control": "no-cache", + "X-Requested-With": "XMLHttpRequest" + }; + + if (this.options.headers) { + Dropzone.extend(headers, this.options.headers); + } + + for (var headerName in headers) { + var headerValue = headers[headerName]; + + if (headerValue) { + xhr.setRequestHeader(headerName, headerValue); + } + } + + var formData = new FormData(); // Adding all @options parameters + + if (this.options.params) { + var additionalParams = this.options.params; + + if (typeof additionalParams === 'function') { + additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null); + } + + for (var key in additionalParams) { + var value = additionalParams[key]; + formData.append(key, value); + } + } // Let the user add additional data if necessary + + + var _iteratorNormalCompletion22 = true; + var _didIteratorError22 = false; + var _iteratorError22 = undefined; + + try { + for (var _iterator22 = files[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { + var _file = _step22.value; + this.emit("sending", _file, xhr, formData); + } + } catch (err) { + _didIteratorError22 = true; + _iteratorError22 = err; + } finally { + try { + if (!_iteratorNormalCompletion22 && _iterator22["return"] != null) { + _iterator22["return"](); + } + } finally { + if (_didIteratorError22) { + throw _iteratorError22; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("sendingmultiple", files, xhr, formData); + } + + this._addFormElementData(formData); // Finally add the files + // Has to be last because some servers (eg: S3) expect the file to be the last parameter + + + for (var i = 0; i < dataBlocks.length; i++) { + var dataBlock = dataBlocks[i]; + formData.append(dataBlock.name, dataBlock.data, dataBlock.filename); + } + + this.submitRequest(xhr, formData, files); + } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done. + + }, { + key: "_transformFiles", + value: function _transformFiles(files, done) { + var _this17 = this; + + var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library. + + var doneCounter = 0; + + var _loop = function _loop(i) { + _this17.options.transformFile.call(_this17, files[i], function (transformedFile) { + transformedFiles[i] = transformedFile; + + if (++doneCounter === files.length) { + done(transformedFiles); + } + }); + }; + + for (var i = 0; i < files.length; i++) { + _loop(i); + } + } // Takes care of adding other input elements of the form to the AJAX request + + }, { + key: "_addFormElementData", + value: function _addFormElementData(formData) { + // Take care of other input elements + if (this.element.tagName === "FORM") { + var _iteratorNormalCompletion23 = true; + var _didIteratorError23 = false; + var _iteratorError23 = undefined; + + try { + for (var _iterator23 = this.element.querySelectorAll("input, textarea, select, button")[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { + var input = _step23.value; + var inputName = input.getAttribute("name"); + var inputType = input.getAttribute("type"); + if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it. + + if (typeof inputName === 'undefined' || inputName === null) continue; + + if (input.tagName === "SELECT" && input.hasAttribute("multiple")) { + // Possibly multiple values + var _iteratorNormalCompletion24 = true; + var _didIteratorError24 = false; + var _iteratorError24 = undefined; + + try { + for (var _iterator24 = input.options[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { + var option = _step24.value; + + if (option.selected) { + formData.append(inputName, option.value); + } + } + } catch (err) { + _didIteratorError24 = true; + _iteratorError24 = err; + } finally { + try { + if (!_iteratorNormalCompletion24 && _iterator24["return"] != null) { + _iterator24["return"](); + } + } finally { + if (_didIteratorError24) { + throw _iteratorError24; + } + } + } + } else if (!inputType || inputType !== "checkbox" && inputType !== "radio" || input.checked) { + formData.append(inputName, input.value); + } + } + } catch (err) { + _didIteratorError23 = true; + _iteratorError23 = err; + } finally { + try { + if (!_iteratorNormalCompletion23 && _iterator23["return"] != null) { + _iterator23["return"](); + } + } finally { + if (_didIteratorError23) { + throw _iteratorError23; + } + } + } + } + } // Invoked when there is new progress information about given files. + // If e is not provided, it is assumed that the upload is finished. + + }, { + key: "_updateFilesUploadProgress", + value: function _updateFilesUploadProgress(files, xhr, e) { + var progress; + + if (typeof e !== 'undefined') { + progress = 100 * e.loaded / e.total; + + if (files[0].upload.chunked) { + var file = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk progress. + + var chunk = this._getChunk(file, xhr); + + chunk.progress = progress; + chunk.total = e.total; + chunk.bytesSent = e.loaded; + var fileProgress = 0, + fileTotal, + fileBytesSent; + file.upload.progress = 0; + file.upload.total = 0; + file.upload.bytesSent = 0; + + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) { + file.upload.progress += file.upload.chunks[i].progress; + file.upload.total += file.upload.chunks[i].total; + file.upload.bytesSent += file.upload.chunks[i].bytesSent; + } + } + + file.upload.progress = file.upload.progress / file.upload.totalChunkCount; + } else { + var _iteratorNormalCompletion25 = true; + var _didIteratorError25 = false; + var _iteratorError25 = undefined; + + try { + for (var _iterator25 = files[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { + var _file2 = _step25.value; + _file2.upload.progress = progress; + _file2.upload.total = e.total; + _file2.upload.bytesSent = e.loaded; + } + } catch (err) { + _didIteratorError25 = true; + _iteratorError25 = err; + } finally { + try { + if (!_iteratorNormalCompletion25 && _iterator25["return"] != null) { + _iterator25["return"](); + } + } finally { + if (_didIteratorError25) { + throw _iteratorError25; + } + } + } + } + + var _iteratorNormalCompletion26 = true; + var _didIteratorError26 = false; + var _iteratorError26 = undefined; + + try { + for (var _iterator26 = files[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) { + var _file3 = _step26.value; + this.emit("uploadprogress", _file3, _file3.upload.progress, _file3.upload.bytesSent); + } + } catch (err) { + _didIteratorError26 = true; + _iteratorError26 = err; + } finally { + try { + if (!_iteratorNormalCompletion26 && _iterator26["return"] != null) { + _iterator26["return"](); + } + } finally { + if (_didIteratorError26) { + throw _iteratorError26; + } + } + } + } else { + // Called when the file finished uploading + var allFilesFinished = true; + progress = 100; + var _iteratorNormalCompletion27 = true; + var _didIteratorError27 = false; + var _iteratorError27 = undefined; + + try { + for (var _iterator27 = files[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) { + var _file4 = _step27.value; + + if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) { + allFilesFinished = false; + } + + _file4.upload.progress = progress; + _file4.upload.bytesSent = _file4.upload.total; + } // Nothing to do, all files already at 100% + + } catch (err) { + _didIteratorError27 = true; + _iteratorError27 = err; + } finally { + try { + if (!_iteratorNormalCompletion27 && _iterator27["return"] != null) { + _iterator27["return"](); + } + } finally { + if (_didIteratorError27) { + throw _iteratorError27; + } + } + } + + if (allFilesFinished) { + return; + } + + var _iteratorNormalCompletion28 = true; + var _didIteratorError28 = false; + var _iteratorError28 = undefined; + + try { + for (var _iterator28 = files[Symbol.iterator](), _step28; !(_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done); _iteratorNormalCompletion28 = true) { + var _file5 = _step28.value; + this.emit("uploadprogress", _file5, progress, _file5.upload.bytesSent); + } + } catch (err) { + _didIteratorError28 = true; + _iteratorError28 = err; + } finally { + try { + if (!_iteratorNormalCompletion28 && _iterator28["return"] != null) { + _iterator28["return"](); + } + } finally { + if (_didIteratorError28) { + throw _iteratorError28; + } + } + } + } + } + }, { + key: "_finishedUploading", + value: function _finishedUploading(files, xhr, e) { + var response; + + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (xhr.readyState !== 4) { + return; + } + + if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') { + response = xhr.responseText; + + if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { + try { + response = JSON.parse(response); + } catch (error) { + e = error; + response = "Invalid JSON response from server."; + } + } + } + + this._updateFilesUploadProgress(files); + + if (!(200 <= xhr.status && xhr.status < 300)) { + this._handleUploadError(files, xhr, response); + } else { + if (files[0].upload.chunked) { + files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr)); + } else { + this._finished(files, response, e); + } + } + } + }, { + key: "_handleUploadError", + value: function _handleUploadError(files, xhr, response) { + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (files[0].upload.chunked && this.options.retryChunks) { + var chunk = this._getChunk(files[0], xhr); + + if (chunk.retries++ < this.options.retryChunksLimit) { + this._uploadData(files, [chunk.dataBlock]); + + return; + } else { + console.warn('Retried this chunk too often. Giving up.'); + } + } + + this._errorProcessing(files, response || this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr); + } + }, { + key: "submitRequest", + value: function submitRequest(xhr, formData, files) { + xhr.send(formData); + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_finished", + value: function _finished(files, responseText, e) { + var _iteratorNormalCompletion29 = true; + var _didIteratorError29 = false; + var _iteratorError29 = undefined; + + try { + for (var _iterator29 = files[Symbol.iterator](), _step29; !(_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done); _iteratorNormalCompletion29 = true) { + var file = _step29.value; + file.status = Dropzone.SUCCESS; + this.emit("success", file, responseText, e); + this.emit("complete", file); + } + } catch (err) { + _didIteratorError29 = true; + _iteratorError29 = err; + } finally { + try { + if (!_iteratorNormalCompletion29 && _iterator29["return"] != null) { + _iterator29["return"](); + } + } finally { + if (_didIteratorError29) { + throw _iteratorError29; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("successmultiple", files, responseText, e); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_errorProcessing", + value: function _errorProcessing(files, message, xhr) { + var _iteratorNormalCompletion30 = true; + var _didIteratorError30 = false; + var _iteratorError30 = undefined; + + try { + for (var _iterator30 = files[Symbol.iterator](), _step30; !(_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done); _iteratorNormalCompletion30 = true) { + var file = _step30.value; + file.status = Dropzone.ERROR; + this.emit("error", file, message, xhr); + this.emit("complete", file); + } + } catch (err) { + _didIteratorError30 = true; + _iteratorError30 = err; + } finally { + try { + if (!_iteratorNormalCompletion30 && _iterator30["return"] != null) { + _iterator30["return"](); + } + } finally { + if (_didIteratorError30) { + throw _iteratorError30; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("errormultiple", files, message, xhr); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }], [{ + key: "uuidv4", + value: function uuidv4() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } + }]); + + return Dropzone; +}(Emitter); + +Dropzone.initClass(); +Dropzone.version = "5.7.0"; // This is a map of options for your different dropzones. Add configurations +// to this object for your different dropzone elemens. +// +// Example: +// +// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 }; +// +// To disable autoDiscover for a specific element, you can set `false` as an option: +// +// Dropzone.options.myDisabledElementId = false; +// +// And in html: +// +// <form action="/upload" id="my-dropzone-element-id" class="dropzone"></form> + +Dropzone.options = {}; // Returns the options for an element or undefined if none available. + +Dropzone.optionsForElement = function (element) { + // Get the `Dropzone.options.elementId` for this element if it exists + if (element.getAttribute("id")) { + return Dropzone.options[camelize(element.getAttribute("id"))]; + } else { + return undefined; + } +}; // Holds a list of all dropzone instances + + +Dropzone.instances = []; // Returns the dropzone for given element if any + +Dropzone.forElement = function (element) { + if (typeof element === "string") { + element = document.querySelector(element); + } + + if ((element != null ? element.dropzone : undefined) == null) { + throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone."); + } + + return element.dropzone; +}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements. + + +Dropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them + +Dropzone.discover = function () { + var dropzones; + + if (document.querySelectorAll) { + dropzones = document.querySelectorAll(".dropzone"); + } else { + dropzones = []; // IE :( + + var checkElements = function checkElements(elements) { + return function () { + var result = []; + var _iteratorNormalCompletion31 = true; + var _didIteratorError31 = false; + var _iteratorError31 = undefined; + + try { + for (var _iterator31 = elements[Symbol.iterator](), _step31; !(_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done); _iteratorNormalCompletion31 = true) { + var el = _step31.value; + + if (/(^| )dropzone($| )/.test(el.className)) { + result.push(dropzones.push(el)); + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError31 = true; + _iteratorError31 = err; + } finally { + try { + if (!_iteratorNormalCompletion31 && _iterator31["return"] != null) { + _iterator31["return"](); + } + } finally { + if (_didIteratorError31) { + throw _iteratorError31; + } + } + } + + return result; + }(); + }; + + checkElements(document.getElementsByTagName("div")); + checkElements(document.getElementsByTagName("form")); + } + + return function () { + var result = []; + var _iteratorNormalCompletion32 = true; + var _didIteratorError32 = false; + var _iteratorError32 = undefined; + + try { + for (var _iterator32 = dropzones[Symbol.iterator](), _step32; !(_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done); _iteratorNormalCompletion32 = true) { + var dropzone = _step32.value; + + // Create a dropzone unless auto discover has been disabled for specific element + if (Dropzone.optionsForElement(dropzone) !== false) { + result.push(new Dropzone(dropzone)); + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError32 = true; + _iteratorError32 = err; + } finally { + try { + if (!_iteratorNormalCompletion32 && _iterator32["return"] != null) { + _iterator32["return"](); + } + } finally { + if (_didIteratorError32) { + throw _iteratorError32; + } + } + } + + return result; + }(); +}; // Since the whole Drag'n'Drop API is pretty new, some browsers implement it, +// but not correctly. +// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know. +// But what to do when browsers *theoretically* support an API, but crash +// when using it. +// +// This is a list of regular expressions tested against navigator.userAgent +// +// ** It should only be used on browser that *do* support the API, but +// incorrectly ** +// + + +Dropzone.blacklistedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API. +/opera.*(Macintosh|Windows Phone).*version\/12/i]; // Checks if the browser is supported + +Dropzone.isBrowserSupported = function () { + var capableBrowser = true; + + if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { + if (!("classList" in document.createElement("a"))) { + capableBrowser = false; + } else { + // The browser supports the API, but may be blacklisted. + var _iteratorNormalCompletion33 = true; + var _didIteratorError33 = false; + var _iteratorError33 = undefined; + + try { + for (var _iterator33 = Dropzone.blacklistedBrowsers[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { + var regex = _step33.value; + + if (regex.test(navigator.userAgent)) { + capableBrowser = false; + continue; + } + } + } catch (err) { + _didIteratorError33 = true; + _iteratorError33 = err; + } finally { + try { + if (!_iteratorNormalCompletion33 && _iterator33["return"] != null) { + _iterator33["return"](); + } + } finally { + if (_didIteratorError33) { + throw _iteratorError33; + } + } + } + } + } else { + capableBrowser = false; + } + + return capableBrowser; +}; + +Dropzone.dataURItoBlob = function (dataURI) { + // convert base64 to raw binary data held in a string + // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this + var byteString = atob(dataURI.split(',')[1]); // separate out the mime component + + var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer + + var ab = new ArrayBuffer(byteString.length); + var ia = new Uint8Array(ab); + + for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) { + ia[i] = byteString.charCodeAt(i); + } // write the ArrayBuffer to a blob + + + return new Blob([ab], { + type: mimeString + }); +}; // Returns an array without the rejected item + + +var without = function without(list, rejectedItem) { + return list.filter(function (item) { + return item !== rejectedItem; + }).map(function (item) { + return item; + }); +}; // abc-def_ghi -> abcDefGhi + + +var camelize = function camelize(str) { + return str.replace(/[\-_](\w)/g, function (match) { + return match.charAt(1).toUpperCase(); + }); +}; // Creates an element from string + + +Dropzone.createElement = function (string) { + var div = document.createElement("div"); + div.innerHTML = string; + return div.childNodes[0]; +}; // Tests if given element is inside (or simply is) the container + + +Dropzone.elementInside = function (element, container) { + if (element === container) { + return true; + } // Coffeescript doesn't support do/while loops + + + while (element = element.parentNode) { + if (element === container) { + return true; + } + } + + return false; +}; + +Dropzone.getElement = function (el, name) { + var element; + + if (typeof el === "string") { + element = document.querySelector(el); + } else if (el.nodeType != null) { + element = el; + } + + if (element == null) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector or a plain HTML element.")); + } + + return element; +}; + +Dropzone.getElements = function (els, name) { + var el, elements; + + if (els instanceof Array) { + elements = []; + + try { + var _iteratorNormalCompletion34 = true; + var _didIteratorError34 = false; + var _iteratorError34 = undefined; + + try { + for (var _iterator34 = els[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { + el = _step34.value; + elements.push(this.getElement(el, name)); + } + } catch (err) { + _didIteratorError34 = true; + _iteratorError34 = err; + } finally { + try { + if (!_iteratorNormalCompletion34 && _iterator34["return"] != null) { + _iterator34["return"](); + } + } finally { + if (_didIteratorError34) { + throw _iteratorError34; + } + } + } + } catch (e) { + elements = null; + } + } else if (typeof els === "string") { + elements = []; + var _iteratorNormalCompletion35 = true; + var _didIteratorError35 = false; + var _iteratorError35 = undefined; + + try { + for (var _iterator35 = document.querySelectorAll(els)[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { + el = _step35.value; + elements.push(el); + } + } catch (err) { + _didIteratorError35 = true; + _iteratorError35 = err; + } finally { + try { + if (!_iteratorNormalCompletion35 && _iterator35["return"] != null) { + _iterator35["return"](); + } + } finally { + if (_didIteratorError35) { + throw _iteratorError35; + } + } + } + } else if (els.nodeType != null) { + elements = [els]; + } + + if (elements == null || !elements.length) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.")); + } + + return elements; +}; // Asks the user the question and calls accepted or rejected accordingly +// +// The default implementation just uses `window.confirm` and then calls the +// appropriate callback. + + +Dropzone.confirm = function (question, accepted, rejected) { + if (window.confirm(question)) { + return accepted(); + } else if (rejected != null) { + return rejected(); + } +}; // Validates the mime type like this: +// +// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept + + +Dropzone.isValidFile = function (file, acceptedFiles) { + if (!acceptedFiles) { + return true; + } // If there are no accepted mime types, it's OK + + + acceptedFiles = acceptedFiles.split(","); + var mimeType = file.type; + var baseMimeType = mimeType.replace(/\/.*$/, ""); + var _iteratorNormalCompletion36 = true; + var _didIteratorError36 = false; + var _iteratorError36 = undefined; + + try { + for (var _iterator36 = acceptedFiles[Symbol.iterator](), _step36; !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { + var validType = _step36.value; + validType = validType.trim(); + + if (validType.charAt(0) === ".") { + if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) { + return true; + } + } else if (/\/\*$/.test(validType)) { + // This is something like a image/* mime type + if (baseMimeType === validType.replace(/\/.*$/, "")) { + return true; + } + } else { + if (mimeType === validType) { + return true; + } + } + } + } catch (err) { + _didIteratorError36 = true; + _iteratorError36 = err; + } finally { + try { + if (!_iteratorNormalCompletion36 && _iterator36["return"] != null) { + _iterator36["return"](); + } + } finally { + if (_didIteratorError36) { + throw _iteratorError36; + } + } + } + + return false; +}; // Augment jQuery + + +if (typeof jQuery !== 'undefined' && jQuery !== null) { + jQuery.fn.dropzone = function (options) { + return this.each(function () { + return new Dropzone(this, options); + }); + }; +} + +if (typeof module !== 'undefined' && module !== null) { + module.exports = Dropzone; +} else { + window.Dropzone = Dropzone; +} // Dropzone file status codes + + +Dropzone.ADDED = "added"; +Dropzone.QUEUED = "queued"; // For backwards compatibility. Now, if a file is accepted, it's either queued +// or uploading. + +Dropzone.ACCEPTED = Dropzone.QUEUED; +Dropzone.UPLOADING = "uploading"; +Dropzone.PROCESSING = Dropzone.UPLOADING; // alias + +Dropzone.CANCELED = "canceled"; +Dropzone.ERROR = "error"; +Dropzone.SUCCESS = "success"; +/* + + Bugfix for iOS 6 and 7 + Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios + based on the work of https://github.com/stomita/ios-imagefile-megapixel + + */ +// Detecting vertical squash in loaded image. +// Fixes a bug which squash image vertically while drawing into canvas for some images. +// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel + +var detectVerticalSquash = function detectVerticalSquash(img) { + var iw = img.naturalWidth; + var ih = img.naturalHeight; + var canvas = document.createElement("canvas"); + canvas.width = 1; + canvas.height = ih; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + + var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih), + data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically. + + + var sy = 0; + var ey = ih; + var py = ih; + + while (py > sy) { + var alpha = data[(py - 1) * 4 + 3]; + + if (alpha === 0) { + ey = py; + } else { + sy = py; + } + + py = ey + sy >> 1; + } + + var ratio = py / ih; + + if (ratio === 0) { + return 1; + } else { + return ratio; + } +}; // A replacement for context.drawImage +// (args are for source and destination). + + +var drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) { + var vertSquashRatio = detectVerticalSquash(img); + return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio); +}; // Based on MinifyJpeg +// Source: http://www.perry.cz/files/ExifRestorer.js +// http://elicon.blog57.fc2.com/blog-entry-206.html + + +var ExifRestore = +/*#__PURE__*/ +function () { + function ExifRestore() { + _classCallCheck(this, ExifRestore); + } + + _createClass(ExifRestore, null, [{ + key: "initClass", + value: function initClass() { + this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + } + }, { + key: "encode64", + value: function encode64(input) { + var output = ''; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ''; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ''; + var i = 0; + + while (true) { + chr1 = input[i++]; + chr2 = input[i++]; + chr3 = input[i++]; + enc1 = chr1 >> 2; + enc2 = (chr1 & 3) << 4 | chr2 >> 4; + enc3 = (chr2 & 15) << 2 | chr3 >> 6; + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4); + chr1 = chr2 = chr3 = ''; + enc1 = enc2 = enc3 = enc4 = ''; + + if (!(i < input.length)) { + break; + } + } + + return output; + } + }, { + key: "restore", + value: function restore(origFileBase64, resizedFileBase64) { + if (!origFileBase64.match('data:image/jpeg;base64,')) { + return resizedFileBase64; + } + + var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', '')); + var segments = this.slice2Segments(rawImage); + var image = this.exifManipulation(resizedFileBase64, segments); + return "data:image/jpeg;base64,".concat(this.encode64(image)); + } + }, { + key: "exifManipulation", + value: function exifManipulation(resizedFileBase64, segments) { + var exifArray = this.getExifArray(segments); + var newImageArray = this.insertExif(resizedFileBase64, exifArray); + var aBuffer = new Uint8Array(newImageArray); + return aBuffer; + } + }, { + key: "getExifArray", + value: function getExifArray(segments) { + var seg = undefined; + var x = 0; + + while (x < segments.length) { + seg = segments[x]; + + if (seg[0] === 255 & seg[1] === 225) { + return seg; + } + + x++; + } + + return []; + } + }, { + key: "insertExif", + value: function insertExif(resizedFileBase64, exifArray) { + var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', ''); + var buf = this.decode64(imageData); + var separatePoint = buf.indexOf(255, 3); + var mae = buf.slice(0, separatePoint); + var ato = buf.slice(separatePoint); + var array = mae; + array = array.concat(exifArray); + array = array.concat(ato); + return array; + } + }, { + key: "slice2Segments", + value: function slice2Segments(rawImageArray) { + var head = 0; + var segments = []; + + while (true) { + var length; + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) { + break; + } + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) { + head += 2; + } else { + length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3]; + var endPoint = head + length + 2; + var seg = rawImageArray.slice(head, endPoint); + segments.push(seg); + head = endPoint; + } + + if (head > rawImageArray.length) { + break; + } + } + + return segments; + } + }, { + key: "decode64", + value: function decode64(input) { + var output = ''; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ''; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ''; + var i = 0; + var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = + + var base64test = /[^A-Za-z0-9\+\/\=]/g; + + if (base64test.exec(input)) { + console.warn('There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\nExpect errors in decoding.'); + } + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); + + while (true) { + enc1 = this.KEY_STR.indexOf(input.charAt(i++)); + enc2 = this.KEY_STR.indexOf(input.charAt(i++)); + enc3 = this.KEY_STR.indexOf(input.charAt(i++)); + enc4 = this.KEY_STR.indexOf(input.charAt(i++)); + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + buf.push(chr1); + + if (enc3 !== 64) { + buf.push(chr2); + } + + if (enc4 !== 64) { + buf.push(chr3); + } + + chr1 = chr2 = chr3 = ''; + enc1 = enc2 = enc3 = enc4 = ''; + + if (!(i < input.length)) { + break; + } + } + + return buf; + } + }]); + + return ExifRestore; +}(); + +ExifRestore.initClass(); +/* + * contentloaded.js + * + * Author: Diego Perini (diego.perini at gmail.com) + * Summary: cross-browser wrapper for DOMContentLoaded + * Updated: 20101020 + * License: MIT + * Version: 1.2 + * + * URL: + * http://javascript.nwbox.com/ContentLoaded/ + * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE + */ +// @win window reference +// @fn function reference + +var contentLoaded = function contentLoaded(win, fn) { + var done = false; + var top = true; + var doc = win.document; + var root = doc.documentElement; + var add = doc.addEventListener ? "addEventListener" : "attachEvent"; + var rem = doc.addEventListener ? "removeEventListener" : "detachEvent"; + var pre = doc.addEventListener ? "" : "on"; + + var init = function init(e) { + if (e.type === "readystatechange" && doc.readyState !== "complete") { + return; + } + + (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); + + if (!done && (done = true)) { + return fn.call(win, e.type || e); + } + }; + + var poll = function poll() { + try { + root.doScroll("left"); + } catch (e) { + setTimeout(poll, 50); + return; + } + + return init("poll"); + }; + + if (doc.readyState !== "complete") { + if (doc.createEventObject && root.doScroll) { + try { + top = !win.frameElement; + } catch (error) {} + + if (top) { + poll(); + } + } + + doc[add](pre + "DOMContentLoaded", init, false); + doc[add](pre + "readystatechange", init, false); + return win[add](pre + "load", init, false); + } +}; // As a single function to be able to write tests. + + +Dropzone._autoDiscoverFunction = function () { + if (Dropzone.autoDiscover) { + return Dropzone.discover(); + } +}; + +contentLoaded(window, Dropzone._autoDiscoverFunction); + +function __guard__(value, transform) { + return typeof value !== 'undefined' && value !== null ? transform(value) : undefined; +} + +function __guardMethod__(obj, methodName, transform) { + if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') { + return transform(obj, methodName); + } else { + return undefined; + } +} + + return module.exports; +})); \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/dist/dropzone.css b/admin/vendors/dropzone-5.7.0/dist/dropzone.css new file mode 100644 index 0000000000000000000000000000000000000000..55424bfab017d96b43eef855b2507c933796a3d4 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/dropzone.css @@ -0,0 +1,395 @@ +/* + * The MIT License + * Copyright (c) 2012 Matias Meno <m@tias.me> + */ +@-webkit-keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); } } +@-moz-keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); } } +@keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); } } +@-webkit-keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } } +@-moz-keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } } +@keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); } } +@-webkit-keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } } +@-moz-keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } } +@keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); } } +.dropzone, .dropzone * { + box-sizing: border-box; } + +.dropzone { + border: 2px solid rgba(0, 0, 0, 0.3); + background: white; + padding: 20px 20px; } + .dropzone.dz-clickable { + cursor: pointer; } + .dropzone.dz-clickable * { + cursor: default; } + .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { + cursor: pointer; } + .dropzone.dz-started .dz-message { + display: none; } + .dropzone.dz-drag-hover { + border-style: solid; } + .dropzone.dz-drag-hover .dz-message { + opacity: 0.5; } + .dropzone .dz-message { + text-align: center; + margin: 2em 0; } + .dropzone .dz-message .dz-button { + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; + outline: inherit; } + .dropzone .dz-preview { + position: relative; + display: inline-block; + vertical-align: top; + margin: 16px; + min-height: 100px; } + .dropzone .dz-preview:hover { + z-index: 1000; } + .dropzone .dz-preview:hover .dz-details { + opacity: 1; } + .dropzone .dz-preview.dz-file-preview .dz-image { + border-radius: 20px; + background: #999; + background: linear-gradient(to bottom, #eee, #ddd); } + .dropzone .dz-preview.dz-file-preview .dz-details { + opacity: 1; } + .dropzone .dz-preview.dz-image-preview { + background: white; } + .dropzone .dz-preview.dz-image-preview .dz-details { + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -ms-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; } + .dropzone .dz-preview .dz-remove { + font-size: 14px; + text-align: center; + display: block; + cursor: pointer; + border: none; } + .dropzone .dz-preview .dz-remove:hover { + text-decoration: underline; } + .dropzone .dz-preview:hover .dz-details { + opacity: 1; } + .dropzone .dz-preview .dz-details { + z-index: 20; + position: absolute; + top: 0; + left: 0; + opacity: 0; + font-size: 13px; + min-width: 100%; + max-width: 100%; + padding: 2em 1em; + text-align: center; + color: rgba(0, 0, 0, 0.9); + line-height: 150%; } + .dropzone .dz-preview .dz-details .dz-size { + margin-bottom: 1em; + font-size: 16px; } + .dropzone .dz-preview .dz-details .dz-filename { + white-space: nowrap; } + .dropzone .dz-preview .dz-details .dz-filename:hover span { + border: 1px solid rgba(200, 200, 200, 0.8); + background-color: rgba(255, 255, 255, 0.8); } + .dropzone .dz-preview .dz-details .dz-filename:not(:hover) { + overflow: hidden; + text-overflow: ellipsis; } + .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { + border: 1px solid transparent; } + .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { + background-color: rgba(255, 255, 255, 0.4); + padding: 0 0.4em; + border-radius: 3px; } + .dropzone .dz-preview:hover .dz-image img { + -webkit-transform: scale(1.05, 1.05); + -moz-transform: scale(1.05, 1.05); + -ms-transform: scale(1.05, 1.05); + -o-transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); + -webkit-filter: blur(8px); + filter: blur(8px); } + .dropzone .dz-preview .dz-image { + border-radius: 20px; + overflow: hidden; + width: 120px; + height: 120px; + position: relative; + display: block; + z-index: 10; } + .dropzone .dz-preview .dz-image img { + display: block; } + .dropzone .dz-preview.dz-success .dz-success-mark { + -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); } + .dropzone .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); } + .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { + pointer-events: none; + opacity: 0; + z-index: 500; + position: absolute; + display: block; + top: 50%; + left: 50%; + margin-left: -27px; + margin-top: -27px; } + .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { + display: block; + width: 54px; + height: 54px; } + .dropzone .dz-preview.dz-processing .dz-progress { + opacity: 1; + -webkit-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + -ms-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; } + .dropzone .dz-preview.dz-complete .dz-progress { + opacity: 0; + -webkit-transition: opacity 0.4s ease-in; + -moz-transition: opacity 0.4s ease-in; + -ms-transition: opacity 0.4s ease-in; + -o-transition: opacity 0.4s ease-in; + transition: opacity 0.4s ease-in; } + .dropzone .dz-preview:not(.dz-processing) .dz-progress { + -webkit-animation: pulse 6s ease infinite; + -moz-animation: pulse 6s ease infinite; + -ms-animation: pulse 6s ease infinite; + -o-animation: pulse 6s ease infinite; + animation: pulse 6s ease infinite; } + .dropzone .dz-preview .dz-progress { + opacity: 1; + z-index: 1000; + pointer-events: none; + position: absolute; + height: 16px; + left: 50%; + top: 50%; + margin-top: -8px; + width: 80px; + margin-left: -40px; + background: rgba(255, 255, 255, 0.9); + -webkit-transform: scale(1); + border-radius: 8px; + overflow: hidden; } + .dropzone .dz-preview .dz-progress .dz-upload { + background: #333; + background: linear-gradient(to bottom, #666, #444); + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 0; + -webkit-transition: width 300ms ease-in-out; + -moz-transition: width 300ms ease-in-out; + -ms-transition: width 300ms ease-in-out; + -o-transition: width 300ms ease-in-out; + transition: width 300ms ease-in-out; } + .dropzone .dz-preview.dz-error .dz-error-message { + display: block; } + .dropzone .dz-preview.dz-error:hover .dz-error-message { + opacity: 1; + pointer-events: auto; } + .dropzone .dz-preview .dz-error-message { + pointer-events: none; + z-index: 1000; + position: absolute; + display: block; + display: none; + opacity: 0; + -webkit-transition: opacity 0.3s ease; + -moz-transition: opacity 0.3s ease; + -ms-transition: opacity 0.3s ease; + -o-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + border-radius: 8px; + font-size: 13px; + top: 130px; + left: -10px; + width: 140px; + background: #be2626; + background: linear-gradient(to bottom, #be2626, #a92222); + padding: 0.5em 1.2em; + color: white; } + .dropzone .dz-preview .dz-error-message:after { + content: ''; + position: absolute; + top: -6px; + left: 64px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #be2626; } diff --git a/admin/vendors/dropzone-5.7.0/dist/dropzone.js b/admin/vendors/dropzone-5.7.0/dist/dropzone.js new file mode 100644 index 0000000000000000000000000000000000000000..10df2e7e7c60f768d952f6f33f8a7f22ec7e0f4d --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/dropzone.js @@ -0,0 +1,3830 @@ +"use strict"; + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + * + * More info at [www.dropzonejs.com](http://www.dropzonejs.com) + * + * Copyright (c) 2012, Matias Meno + * + * 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. + * + */ +// The Emitter class provides the ability to call `.on()` on Dropzone to listen +// to events. +// It is strongly based on component's emitter class, and I removed the +// functionality because of the dependency hell with different frameworks. +var Emitter = +/*#__PURE__*/ +function () { + function Emitter() { + _classCallCheck(this, Emitter); + } + + _createClass(Emitter, [{ + key: "on", + // Add an event listener for given event + value: function on(event, fn) { + this._callbacks = this._callbacks || {}; // Create namespace for this event + + if (!this._callbacks[event]) { + this._callbacks[event] = []; + } + + this._callbacks[event].push(fn); + + return this; + } + }, { + key: "emit", + value: function emit(event) { + this._callbacks = this._callbacks || {}; + var callbacks = this._callbacks[event]; + + if (callbacks) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = callbacks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var callback = _step.value; + callback.apply(this, args); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator["return"] != null) { + _iterator["return"](); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + + return this; + } // Remove event listener for given event. If fn is not provided, all event + // listeners for that event will be removed. If neither is provided, all + // event listeners will be removed. + + }, { + key: "off", + value: function off(event, fn) { + if (!this._callbacks || arguments.length === 0) { + this._callbacks = {}; + return this; + } // specific event + + + var callbacks = this._callbacks[event]; + + if (!callbacks) { + return this; + } // remove all handlers + + + if (arguments.length === 1) { + delete this._callbacks[event]; + return this; + } // remove specific handler + + + for (var i = 0; i < callbacks.length; i++) { + var callback = callbacks[i]; + + if (callback === fn) { + callbacks.splice(i, 1); + break; + } + } + + return this; + } + }]); + + return Emitter; +}(); + +var Dropzone = +/*#__PURE__*/ +function (_Emitter) { + _inherits(Dropzone, _Emitter); + + _createClass(Dropzone, null, [{ + key: "initClass", + value: function initClass() { + // Exposing the emitter class, mainly for tests + this.prototype.Emitter = Emitter; + /* + This is a list of all available events you can register on a dropzone object. + You can register an event handler like this: + dropzone.on("dragEnter", function() { }); + */ + + this.prototype.events = ["drop", "dragstart", "dragend", "dragenter", "dragover", "dragleave", "addedfile", "addedfiles", "removedfile", "thumbnail", "error", "errormultiple", "processing", "processingmultiple", "uploadprogress", "totaluploadprogress", "sending", "sendingmultiple", "success", "successmultiple", "canceled", "canceledmultiple", "complete", "completemultiple", "reset", "maxfilesexceeded", "maxfilesreached", "queuecomplete"]; + this.prototype.defaultOptions = { + /** + * Has to be specified on elements other than form (or when the form + * doesn't have an `action` attribute). You can also + * provide a function that will be called with `files` and + * must return the url (since `v3.12.0`) + */ + url: null, + + /** + * Can be changed to `"put"` if necessary. You can also provide a function + * that will be called with `files` and must return the method (since `v3.12.0`). + */ + method: "post", + + /** + * Will be set on the XHRequest. + */ + withCredentials: false, + + /** + * The timeout for the XHR requests in milliseconds (since `v4.4.0`). + */ + timeout: 30000, + + /** + * How many file uploads to process in parallel (See the + * Enqueuing file uploads documentation section for more info) + */ + parallelUploads: 2, + + /** + * Whether to send multiple files in one request. If + * this it set to true, then the fallback file input element will + * have the `multiple` attribute as well. This option will + * also trigger additional events (like `processingmultiple`). See the events + * documentation section for more information. + */ + uploadMultiple: false, + + /** + * Whether you want files to be uploaded in chunks to your server. This can't be + * used in combination with `uploadMultiple`. + * + * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload. + */ + chunking: false, + + /** + * If `chunking` is enabled, this defines whether **every** file should be chunked, + * even if the file size is below chunkSize. This means, that the additional chunk + * form data will be submitted and the `chunksUploaded` callback will be invoked. + */ + forceChunking: false, + + /** + * If `chunking` is `true`, then this defines the chunk size in bytes. + */ + chunkSize: 2000000, + + /** + * If `true`, the individual chunks of a file are being uploaded simultaneously. + */ + parallelChunkUploads: false, + + /** + * Whether a chunk should be retried if it fails. + */ + retryChunks: false, + + /** + * If `retryChunks` is true, how many times should it be retried. + */ + retryChunksLimit: 3, + + /** + * If not `null` defines how many files this Dropzone handles. If it exceeds, + * the event `maxfilesexceeded` will be called. The dropzone element gets the + * class `dz-max-files-reached` accordingly so you can provide visual feedback. + */ + maxFilesize: 256, + + /** + * The name of the file param that gets transferred. + * **NOTE**: If you have the option `uploadMultiple` set to `true`, then + * Dropzone will append `[]` to the name. + */ + paramName: "file", + + /** + * Whether thumbnails for images should be generated + */ + createImageThumbnails: true, + + /** + * In MB. When the filename exceeds this limit, the thumbnail will not be generated. + */ + maxThumbnailFilesize: 10, + + /** + * If `null`, the ratio of the image will be used to calculate it. + */ + thumbnailWidth: 120, + + /** + * The same as `thumbnailWidth`. If both are null, images will not be resized. + */ + thumbnailHeight: 120, + + /** + * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided. + * Can be either `contain` or `crop`. + */ + thumbnailMethod: 'crop', + + /** + * If set, images will be resized to these dimensions before being **uploaded**. + * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect + * ratio of the file will be preserved. + * + * The `options.transformFile` function uses these options, so if the `transformFile` function + * is overridden, these options don't do anything. + */ + resizeWidth: null, + + /** + * See `resizeWidth`. + */ + resizeHeight: null, + + /** + * The mime type of the resized image (before it gets uploaded to the server). + * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`. + * See `resizeWidth` for more information. + */ + resizeMimeType: null, + + /** + * The quality of the resized images. See `resizeWidth`. + */ + resizeQuality: 0.8, + + /** + * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided. + * Can be either `contain` or `crop`. + */ + resizeMethod: 'contain', + + /** + * The base that is used to calculate the filesize. You can change this to + * 1024 if you would rather display kibibytes, mebibytes, etc... + * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`. + * You can change this to `1024` if you don't care about validity. + */ + filesizeBase: 1000, + + /** + * Can be used to limit the maximum number of files that will be handled by this Dropzone + */ + maxFiles: null, + + /** + * An optional object to send additional headers to the server. Eg: + * `{ "My-Awesome-Header": "header value" }` + */ + headers: null, + + /** + * If `true`, the dropzone element itself will be clickable, if `false` + * nothing will be clickable. + * + * You can also pass an HTML element, a CSS selector (for multiple elements) + * or an array of those. In that case, all of those elements will trigger an + * upload when clicked. + */ + clickable: true, + + /** + * Whether hidden files in directories should be ignored. + */ + ignoreHiddenFiles: true, + + /** + * The default implementation of `accept` checks the file's mime type or + * extension against this list. This is a comma separated list of mime + * types or file extensions. + * + * Eg.: `image/*,application/pdf,.psd` + * + * If the Dropzone is `clickable` this option will also be used as + * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept) + * parameter on the hidden file input as well. + */ + acceptedFiles: null, + + /** + * **Deprecated!** + * Use acceptedFiles instead. + */ + acceptedMimeTypes: null, + + /** + * If false, files will be added to the queue but the queue will not be + * processed automatically. + * This can be useful if you need some additional user input before sending + * files (or if you want want all files sent at once). + * If you're ready to send the file simply call `myDropzone.processQueue()`. + * + * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation + * section for more information. + */ + autoProcessQueue: true, + + /** + * If false, files added to the dropzone will not be queued by default. + * You'll have to call `enqueueFile(file)` manually. + */ + autoQueue: true, + + /** + * If `true`, this will add a link to every file preview to remove or cancel (if + * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation` + * and `dictRemoveFile` options are used for the wording. + */ + addRemoveLinks: false, + + /** + * Defines where to display the file previews – if `null` the + * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS + * selector. The element should have the `dropzone-previews` class so + * the previews are displayed properly. + */ + previewsContainer: null, + + /** + * This is the element the hidden input field (which is used when clicking on the + * dropzone to trigger file selection) will be appended to. This might + * be important in case you use frameworks to switch the content of your page. + * + * Can be a selector string, or an element directly. + */ + hiddenInputContainer: "body", + + /** + * If null, no capture type will be specified + * If camera, mobile devices will skip the file selection and choose camera + * If microphone, mobile devices will skip the file selection and choose the microphone + * If camcorder, mobile devices will skip the file selection and choose the camera in video mode + * On apple devices multiple must be set to false. AcceptedFiles may need to + * be set to an appropriate mime type (e.g. "image/*", "audio/*", or "video/*"). + */ + capture: null, + + /** + * **Deprecated**. Use `renameFile` instead. + */ + renameFilename: null, + + /** + * A function that is invoked before the file is uploaded to the server and renames the file. + * This function gets the `File` as argument and can use the `file.name`. The actual name of the + * file that gets used during the upload can be accessed through `file.upload.filename`. + */ + renameFile: null, + + /** + * If `true` the fallback will be forced. This is very useful to test your server + * implementations first and make sure that everything works as + * expected without dropzone if you experience problems, and to test + * how your fallbacks will look. + */ + forceFallback: false, + + /** + * The text used before any files are dropped. + */ + dictDefaultMessage: "Drag'n drop your images here. <i class='far fa-smile'></i>", + + /** + * The text that replaces the default message text it the browser is not supported. + */ + dictFallbackMessage: "Your browser does not support drag and drop file downloads. <i class='fal fa-frown'></i>", + + /** + * The text that will be added before the fallback form. + * If you provide a fallback element yourself, or if this option is `null` this will + * be ignored. + */ + dictFallbackText: "Please use the fallback form below to upload your files as before. :/", + + /** + * If the filesize is too big. + * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values. + */ + dictFileTooBig: "File is too big: ({{filesize}}MiB). Max is: {{maxFilesize}}MiB.", + + /** + * If the file doesn't match the file type. + */ + dictInvalidFileType: "You cannot send files of this type.", + + /** + * If the server response was invalid. + * `{{statusCode}}` will be replaced with the servers status code. + */ + dictResponseError: "The server returns this error code: {{statusCode}}.", + + /** + * If `addRemoveLinks` is true, the text to be used for the cancel upload link. + */ + dictCancelUpload: "Cancel upload.", + + /** + * The text that is displayed if an upload was manually canceled + */ + dictUploadCanceled: "Upload canceled.", + + /** + * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload. + */ + dictCancelUploadConfirmation: "Are you sure you want to cancel the send?", + + /** + * If `addRemoveLinks` is true, the text to be used to remove a file. + */ + dictRemoveFile: "Delete file", + + /** + * If this is not null, then the user will be prompted before removing a file. + */ + dictRemoveFileConfirmation: null, + + /** + * Displayed if `maxFiles` is st and exceeded. + * The string `{{maxFiles}}` will be replaced by the configuration value. + */ + dictMaxFilesExceeded: "Vous ne pouvez plus télécharger de fichiers.", + + /** + * Allows you to translate the different units. Starting with `tb` for terabytes and going down to + * `b` for bytes. + */ + dictFileSizeUnits: { + tb: "TB", + gb: "GB", + mb: "MB", + kb: "KB", + b: "b" + }, + + /** + * Called when dropzone initialized + * You can add event listeners here + */ + init: function init() {}, + + /** + * Can be an **object** of additional parameters to transfer to the server, **or** a `Function` + * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case + * of a function, this needs to return a map. + * + * The default implementation does nothing for normal uploads, but adds relevant information for + * chunked uploads. + * + * This is the same as adding hidden input fields in the form element. + */ + params: function params(files, xhr, chunk) { + if (chunk) { + return { + dzuuid: chunk.file.upload.uuid, + dzchunkindex: chunk.index, + dztotalfilesize: chunk.file.size, + dzchunksize: this.options.chunkSize, + dztotalchunkcount: chunk.file.upload.totalChunkCount, + dzchunkbyteoffset: chunk.index * this.options.chunkSize + }; + } + }, + + /** + * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File) + * and a `done` function as parameters. + * + * If the done function is invoked without arguments, the file is "accepted" and will + * be processed. If you pass an error message, the file is rejected, and the error + * message will be displayed. + * This function will not be called if the file is too big or doesn't match the mime types. + */ + accept: function accept(file, done) { + return done(); + }, + + /** + * The callback that will be invoked when all chunks have been uploaded for a file. + * It gets the file for which the chunks have been uploaded as the first parameter, + * and the `done` function as second. `done()` needs to be invoked when everything + * needed to finish the upload process is done. + */ + chunksUploaded: function chunksUploaded(file, done) { + done(); + }, + + /** + * Gets called when the browser is not supported. + * The default implementation shows the fallback input field and adds + * a text. + */ + fallback: function fallback() { + // This code should pass in IE7... :( + var messageElement; + this.element.className = "".concat(this.element.className, " dz-browser-not-supported"); + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = this.element.getElementsByTagName("div")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var child = _step2.value; + + if (/(^| )dz-message($| )/.test(child.className)) { + messageElement = child; + child.className = "dz-message"; // Removes the 'dz-default' class + + break; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { + _iterator2["return"](); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + if (!messageElement) { + messageElement = Dropzone.createElement("<div class=\"dz-message\"><span></span></div>"); + this.element.appendChild(messageElement); + } + + var span = messageElement.getElementsByTagName("span")[0]; + + if (span) { + if (span.textContent != null) { + span.textContent = this.options.dictFallbackMessage; + } else if (span.innerText != null) { + span.innerText = this.options.dictFallbackMessage; + } + } + + return this.element.appendChild(this.getFallbackForm()); + }, + + /** + * Gets called to calculate the thumbnail dimensions. + * + * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing: + * + * - `srcWidth` & `srcHeight` (required) + * - `trgWidth` & `trgHeight` (required) + * - `srcX` & `srcY` (optional, default `0`) + * - `trgX` & `trgY` (optional, default `0`) + * + * Those values are going to be used by `ctx.drawImage()`. + */ + resize: function resize(file, width, height, resizeMethod) { + var info = { + srcX: 0, + srcY: 0, + srcWidth: file.width, + srcHeight: file.height + }; + var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified + + if (width == null && height == null) { + width = info.srcWidth; + height = info.srcHeight; + } else if (width == null) { + width = height * srcRatio; + } else if (height == null) { + height = width / srcRatio; + } // Make sure images aren't upscaled + + + width = Math.min(width, info.srcWidth); + height = Math.min(height, info.srcHeight); + var trgRatio = width / height; + + if (info.srcWidth > width || info.srcHeight > height) { + // Image is bigger and needs rescaling + if (resizeMethod === 'crop') { + if (srcRatio > trgRatio) { + info.srcHeight = file.height; + info.srcWidth = info.srcHeight * trgRatio; + } else { + info.srcWidth = file.width; + info.srcHeight = info.srcWidth / trgRatio; + } + } else if (resizeMethod === 'contain') { + // Method 'contain' + if (srcRatio > trgRatio) { + height = width / srcRatio; + } else { + width = height * srcRatio; + } + } else { + throw new Error("Unknown resizeMethod '".concat(resizeMethod, "'")); + } + } + + info.srcX = (file.width - info.srcWidth) / 2; + info.srcY = (file.height - info.srcHeight) / 2; + info.trgWidth = width; + info.trgHeight = height; + return info; + }, + + /** + * Can be used to transform the file (for example, resize an image if necessary). + * + * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes + * images according to those dimensions. + * + * Gets the `file` as the first parameter, and a `done()` function as the second, that needs + * to be invoked with the file when the transformation is done. + */ + transformFile: function transformFile(file, done) { + if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) { + return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done); + } else { + return done(file); + } + }, + + /** + * A string that contains the template used for each dropped + * file. Change it to fulfill your needs but make sure to properly + * provide all elements. + * + * If you want to use an actual HTML element instead of providing a String + * as a config option, you could create a div with the id `tpl`, + * put the template inside it and provide the element like this: + * + * document + * .querySelector('#tpl') + * .innerHTML + * + */ + previewTemplate: "<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n <div class=\"dz-details\">\n <div class=\"dz-size\"><span data-dz-size></span></div>\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n <div class=\"dz-success-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Check</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\"></path>\n </g>\n </svg>\n </div>\n <div class=\"dz-error-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <title>Error</title>\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>", + // END OPTIONS + // (Required by the dropzone documentation parser) + + /* + Those functions register themselves to the events on init and handle all + the user interface specific stuff. Overwriting them won't break the upload + but can break the way it's displayed. + You can overwrite them if you don't like the default behavior. If you just + want to add an additional event handler, register it on the dropzone object + and don't overwrite those options. + */ + // Those are self explanatory and simply concern the DragnDrop. + drop: function drop(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragstart: function dragstart(e) {}, + dragend: function dragend(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + dragenter: function dragenter(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragover: function dragover(e) { + return this.element.classList.add("dz-drag-hover"); + }, + dragleave: function dragleave(e) { + return this.element.classList.remove("dz-drag-hover"); + }, + paste: function paste(e) {}, + // Called whenever there are no files left in the dropzone anymore, and the + // dropzone should be displayed as if in the initial state. + reset: function reset() { + return this.element.classList.remove("dz-started"); + }, + // Called when a file is added to the queue + // Receives `file` + addedfile: function addedfile(file) { + var _this2 = this; + + if (this.element === this.previewsContainer) { + this.element.classList.add("dz-started"); + } + + if (this.previewsContainer) { + file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim()); + file.previewTemplate = file.previewElement; // Backwards compatibility + + this.previewsContainer.appendChild(file.previewElement); + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = file.previewElement.querySelectorAll("[data-dz-name]")[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var node = _step3.value; + node.textContent = file.name; + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { + _iterator3["return"](); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + var _iteratorNormalCompletion4 = true; + var _didIteratorError4 = false; + var _iteratorError4 = undefined; + + try { + for (var _iterator4 = file.previewElement.querySelectorAll("[data-dz-size]")[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { + node = _step4.value; + node.innerHTML = this.filesize(file.size); + } + } catch (err) { + _didIteratorError4 = true; + _iteratorError4 = err; + } finally { + try { + if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { + _iterator4["return"](); + } + } finally { + if (_didIteratorError4) { + throw _iteratorError4; + } + } + } + + if (this.options.addRemoveLinks) { + file._removeLink = Dropzone.createElement("<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>".concat(this.options.dictRemoveFile, "</a>")); + file.previewElement.appendChild(file._removeLink); + } + + var removeFileEvent = function removeFileEvent(e) { + e.preventDefault(); + e.stopPropagation(); + + if (file.status === Dropzone.UPLOADING) { + return Dropzone.confirm(_this2.options.dictCancelUploadConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + if (_this2.options.dictRemoveFileConfirmation) { + return Dropzone.confirm(_this2.options.dictRemoveFileConfirmation, function () { + return _this2.removeFile(file); + }); + } else { + return _this2.removeFile(file); + } + } + }; + + var _iteratorNormalCompletion5 = true; + var _didIteratorError5 = false; + var _iteratorError5 = undefined; + + try { + for (var _iterator5 = file.previewElement.querySelectorAll("[data-dz-remove]")[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { + var removeLink = _step5.value; + removeLink.addEventListener("click", removeFileEvent); + } + } catch (err) { + _didIteratorError5 = true; + _iteratorError5 = err; + } finally { + try { + if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) { + _iterator5["return"](); + } + } finally { + if (_didIteratorError5) { + throw _iteratorError5; + } + } + } + } + }, + // Called whenever a file is removed. + removedfile: function removedfile(file) { + if (file.previewElement != null && file.previewElement.parentNode != null) { + file.previewElement.parentNode.removeChild(file.previewElement); + } + + return this._updateMaxFilesReachedClass(); + }, + // Called when a thumbnail has been generated + // Receives `file` and `dataUrl` + thumbnail: function thumbnail(file, dataUrl) { + if (file.previewElement) { + file.previewElement.classList.remove("dz-file-preview"); + var _iteratorNormalCompletion6 = true; + var _didIteratorError6 = false; + var _iteratorError6 = undefined; + + try { + for (var _iterator6 = file.previewElement.querySelectorAll("[data-dz-thumbnail]")[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { + var thumbnailElement = _step6.value; + thumbnailElement.alt = file.name; + thumbnailElement.src = dataUrl; + } + } catch (err) { + _didIteratorError6 = true; + _iteratorError6 = err; + } finally { + try { + if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) { + _iterator6["return"](); + } + } finally { + if (_didIteratorError6) { + throw _iteratorError6; + } + } + } + + return setTimeout(function () { + return file.previewElement.classList.add("dz-image-preview"); + }, 1); + } + }, + // Called whenever an error occurs + // Receives `file` and `message` + error: function error(file, message) { + if (file.previewElement) { + file.previewElement.classList.add("dz-error"); + + if (typeof message !== "String" && message.error) { + message = message.error; + } + + var _iteratorNormalCompletion7 = true; + var _didIteratorError7 = false; + var _iteratorError7 = undefined; + + try { + for (var _iterator7 = file.previewElement.querySelectorAll("[data-dz-errormessage]")[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) { + var node = _step7.value; + node.textContent = message; + } + } catch (err) { + _didIteratorError7 = true; + _iteratorError7 = err; + } finally { + try { + if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) { + _iterator7["return"](); + } + } finally { + if (_didIteratorError7) { + throw _iteratorError7; + } + } + } + } + }, + errormultiple: function errormultiple() {}, + // Called when a file gets processed. Since there is a cue, not all added + // files are processed immediately. + // Receives `file` + processing: function processing(file) { + if (file.previewElement) { + file.previewElement.classList.add("dz-processing"); + + if (file._removeLink) { + return file._removeLink.innerHTML = this.options.dictCancelUpload; + } + } + }, + processingmultiple: function processingmultiple() {}, + // Called whenever the upload progress gets updated. + // Receives `file`, `progress` (percentage 0-100) and `bytesSent`. + // To get the total number of bytes of the file, use `file.size` + uploadprogress: function uploadprogress(file, progress, bytesSent) { + if (file.previewElement) { + var _iteratorNormalCompletion8 = true; + var _didIteratorError8 = false; + var _iteratorError8 = undefined; + + try { + for (var _iterator8 = file.previewElement.querySelectorAll("[data-dz-uploadprogress]")[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) { + var node = _step8.value; + node.nodeName === 'PROGRESS' ? node.value = progress : node.style.width = "".concat(progress, "%"); + } + } catch (err) { + _didIteratorError8 = true; + _iteratorError8 = err; + } finally { + try { + if (!_iteratorNormalCompletion8 && _iterator8["return"] != null) { + _iterator8["return"](); + } + } finally { + if (_didIteratorError8) { + throw _iteratorError8; + } + } + } + } + }, + // Called whenever the total upload progress gets updated. + // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent + totaluploadprogress: function totaluploadprogress() {}, + // Called just before the file is sent. Gets the `xhr` object as second + // parameter, so you can modify it (for example to add a CSRF token) and a + // `formData` object to add additional information. + sending: function sending() {}, + sendingmultiple: function sendingmultiple() {}, + // When the complete upload is finished and successful + // Receives `file` + success: function success(file) { + if (file.previewElement) { + return file.previewElement.classList.add("dz-success"); + } + }, + successmultiple: function successmultiple() {}, + // When the upload is canceled. + canceled: function canceled(file) { + return this.emit("error", file, this.options.dictUploadCanceled); + }, + canceledmultiple: function canceledmultiple() {}, + // When the upload is finished, either with success or an error. + // Receives `file` + complete: function complete(file) { + if (file._removeLink) { + file._removeLink.innerHTML = this.options.dictRemoveFile; + } + + if (file.previewElement) { + return file.previewElement.classList.add("dz-complete"); + } + }, + completemultiple: function completemultiple() {}, + maxfilesexceeded: function maxfilesexceeded() {}, + maxfilesreached: function maxfilesreached() {}, + queuecomplete: function queuecomplete() {}, + addedfiles: function addedfiles() {} + }; + this.prototype._thumbnailQueue = []; + this.prototype._processingThumbnail = false; + } // global utility + + }, { + key: "extend", + value: function extend(target) { + for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + objects[_key2 - 1] = arguments[_key2]; + } + + for (var _i = 0, _objects = objects; _i < _objects.length; _i++) { + var object = _objects[_i]; + + for (var key in object) { + var val = object[key]; + target[key] = val; + } + } + + return target; + } + }]); + + function Dropzone(el, options) { + var _this; + + _classCallCheck(this, Dropzone); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Dropzone).call(this)); + var fallback, left; + _this.element = el; // For backwards compatibility since the version was in the prototype previously + + _this.version = Dropzone.version; + _this.defaultOptions.previewTemplate = _this.defaultOptions.previewTemplate.replace(/\n*/g, ""); + _this.clickableElements = []; + _this.listeners = []; + _this.files = []; // All files + + if (typeof _this.element === "string") { + _this.element = document.querySelector(_this.element); + } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird. + + + if (!_this.element || _this.element.nodeType == null) { + throw new Error("Invalid dropzone element."); + } + + if (_this.element.dropzone) { + throw new Error("Dropzone already attached."); + } // Now add this dropzone to the instances. + + + Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself. + + _this.element.dropzone = _assertThisInitialized(_this); + var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {}; + _this.options = Dropzone.extend({}, _this.defaultOptions, elementOptions, options != null ? options : {}); // If the browser failed, just call the fallback and leave + + if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) { + return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this))); + } // @options.url = @element.getAttribute "action" unless @options.url? + + + if (_this.options.url == null) { + _this.options.url = _this.element.getAttribute("action"); + } + + if (!_this.options.url) { + throw new Error("No URL provided."); + } + + if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) { + throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated."); + } + + if (_this.options.uploadMultiple && _this.options.chunking) { + throw new Error('You cannot set both: uploadMultiple and chunking.'); + } // Backwards compatibility + + + if (_this.options.acceptedMimeTypes) { + _this.options.acceptedFiles = _this.options.acceptedMimeTypes; + delete _this.options.acceptedMimeTypes; + } // Backwards compatibility + + + if (_this.options.renameFilename != null) { + _this.options.renameFile = function (file) { + return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file); + }; + } + + _this.options.method = _this.options.method.toUpperCase(); + + if ((fallback = _this.getExistingFallback()) && fallback.parentNode) { + // Remove the fallback + fallback.parentNode.removeChild(fallback); + } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false + + + if (_this.options.previewsContainer !== false) { + if (_this.options.previewsContainer) { + _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, "previewsContainer"); + } else { + _this.previewsContainer = _this.element; + } + } + + if (_this.options.clickable) { + if (_this.options.clickable === true) { + _this.clickableElements = [_this.element]; + } else { + _this.clickableElements = Dropzone.getElements(_this.options.clickable, "clickable"); + } + } + + _this.init(); + + return _this; + } // Returns all files that have been accepted + + + _createClass(Dropzone, [{ + key: "getAcceptedFiles", + value: function getAcceptedFiles() { + return this.files.filter(function (file) { + return file.accepted; + }).map(function (file) { + return file; + }); + } // Returns all files that have been rejected + // Not sure when that's going to be useful, but added for completeness. + + }, { + key: "getRejectedFiles", + value: function getRejectedFiles() { + return this.files.filter(function (file) { + return !file.accepted; + }).map(function (file) { + return file; + }); + } + }, { + key: "getFilesWithStatus", + value: function getFilesWithStatus(status) { + return this.files.filter(function (file) { + return file.status === status; + }).map(function (file) { + return file; + }); + } // Returns all files that are in the queue + + }, { + key: "getQueuedFiles", + value: function getQueuedFiles() { + return this.getFilesWithStatus(Dropzone.QUEUED); + } + }, { + key: "getUploadingFiles", + value: function getUploadingFiles() { + return this.getFilesWithStatus(Dropzone.UPLOADING); + } + }, { + key: "getAddedFiles", + value: function getAddedFiles() { + return this.getFilesWithStatus(Dropzone.ADDED); + } // Files that are either queued or uploading + + }, { + key: "getActiveFiles", + value: function getActiveFiles() { + return this.files.filter(function (file) { + return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED; + }).map(function (file) { + return file; + }); + } // The function that gets called when Dropzone is initialized. You + // can (and should) setup event listeners inside this function. + + }, { + key: "init", + value: function init() { + var _this3 = this; + + // In case it isn't set already + if (this.element.tagName === "form") { + this.element.setAttribute("enctype", "multipart/form-data"); + } + + if (this.element.classList.contains("dropzone") && !this.element.querySelector(".dz-message")) { + this.element.appendChild(Dropzone.createElement("<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">".concat(this.options.dictDefaultMessage, "</button></div>"))); + } + + if (this.clickableElements.length) { + var setupHiddenFileInput = function setupHiddenFileInput() { + if (_this3.hiddenFileInput) { + _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput); + } + + _this3.hiddenFileInput = document.createElement("input"); + + _this3.hiddenFileInput.setAttribute("type", "file"); + + if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) { + _this3.hiddenFileInput.setAttribute("multiple", "multiple"); + } + + _this3.hiddenFileInput.className = "dz-hidden-input"; + + if (_this3.options.acceptedFiles !== null) { + _this3.hiddenFileInput.setAttribute("accept", _this3.options.acceptedFiles); + } + + if (_this3.options.capture !== null) { + _this3.hiddenFileInput.setAttribute("capture", _this3.options.capture); + } // Not setting `display="none"` because some browsers don't accept clicks + // on elements that aren't displayed. + + + _this3.hiddenFileInput.style.visibility = "hidden"; + _this3.hiddenFileInput.style.position = "absolute"; + _this3.hiddenFileInput.style.top = "0"; + _this3.hiddenFileInput.style.left = "0"; + _this3.hiddenFileInput.style.height = "0"; + _this3.hiddenFileInput.style.width = "0"; + Dropzone.getElement(_this3.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(_this3.hiddenFileInput); + return _this3.hiddenFileInput.addEventListener("change", function () { + var files = _this3.hiddenFileInput.files; + + if (files.length) { + var _iteratorNormalCompletion9 = true; + var _didIteratorError9 = false; + var _iteratorError9 = undefined; + + try { + for (var _iterator9 = files[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) { + var file = _step9.value; + + _this3.addFile(file); + } + } catch (err) { + _didIteratorError9 = true; + _iteratorError9 = err; + } finally { + try { + if (!_iteratorNormalCompletion9 && _iterator9["return"] != null) { + _iterator9["return"](); + } + } finally { + if (_didIteratorError9) { + throw _iteratorError9; + } + } + } + } + + _this3.emit("addedfiles", files); + + return setupHiddenFileInput(); + }); + }; + + setupHiddenFileInput(); + } + + this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself. + // They're not in @setupEventListeners() because they shouldn't be removed + // again when the dropzone gets disabled. + + var _iteratorNormalCompletion10 = true; + var _didIteratorError10 = false; + var _iteratorError10 = undefined; + + try { + for (var _iterator10 = this.events[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) { + var eventName = _step10.value; + this.on(eventName, this.options[eventName]); + } + } catch (err) { + _didIteratorError10 = true; + _iteratorError10 = err; + } finally { + try { + if (!_iteratorNormalCompletion10 && _iterator10["return"] != null) { + _iterator10["return"](); + } + } finally { + if (_didIteratorError10) { + throw _iteratorError10; + } + } + } + + this.on("uploadprogress", function () { + return _this3.updateTotalUploadProgress(); + }); + this.on("removedfile", function () { + return _this3.updateTotalUploadProgress(); + }); + this.on("canceled", function (file) { + return _this3.emit("complete", file); + }); // Emit a `queuecomplete` event if all files finished uploading. + + this.on("complete", function (file) { + if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) { + // This needs to be deferred so that `queuecomplete` really triggers after `complete` + return setTimeout(function () { + return _this3.emit("queuecomplete"); + }, 0); + } + }); + + var containsFiles = function containsFiles(e) { + return e.dataTransfer.types && e.dataTransfer.types.some(function (type) { + return type == "Files"; + }); + }; + + var noPropagation = function noPropagation(e) { + // If there are no files, we don't want to stop + // propagation so we don't interfere with other + // drag and drop behaviour. + if (!containsFiles(e)) return; + e.stopPropagation(); + + if (e.preventDefault) { + return e.preventDefault(); + } else { + return e.returnValue = false; + } + }; // Create the listeners + + + this.listeners = [{ + element: this.element, + events: { + "dragstart": function dragstart(e) { + return _this3.emit("dragstart", e); + }, + "dragenter": function dragenter(e) { + noPropagation(e); + return _this3.emit("dragenter", e); + }, + "dragover": function dragover(e) { + // Makes it possible to drag files from chrome's download bar + // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar + // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception) + var efct; + + try { + efct = e.dataTransfer.effectAllowed; + } catch (error) {} + + e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy'; + noPropagation(e); + return _this3.emit("dragover", e); + }, + "dragleave": function dragleave(e) { + return _this3.emit("dragleave", e); + }, + "drop": function drop(e) { + noPropagation(e); + return _this3.drop(e); + }, + "dragend": function dragend(e) { + return _this3.emit("dragend", e); + } + } // This is disabled right now, because the browsers don't implement it properly. + // "paste": (e) => + // noPropagation e + // @paste e + + }]; + this.clickableElements.forEach(function (clickableElement) { + return _this3.listeners.push({ + element: clickableElement, + events: { + "click": function click(evt) { + // Only the actual dropzone or the message element should trigger file selection + if (clickableElement !== _this3.element || evt.target === _this3.element || Dropzone.elementInside(evt.target, _this3.element.querySelector(".dz-message"))) { + _this3.hiddenFileInput.click(); // Forward the click + + } + + return true; + } + } + }); + }); + this.enable(); + return this.options.init.call(this); + } // Not fully tested yet + + }, { + key: "destroy", + value: function destroy() { + this.disable(); + this.removeAllFiles(true); + + if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) { + this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput); + this.hiddenFileInput = null; + } + + delete this.element.dropzone; + return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1); + } + }, { + key: "updateTotalUploadProgress", + value: function updateTotalUploadProgress() { + var totalUploadProgress; + var totalBytesSent = 0; + var totalBytes = 0; + var activeFiles = this.getActiveFiles(); + + if (activeFiles.length) { + var _iteratorNormalCompletion11 = true; + var _didIteratorError11 = false; + var _iteratorError11 = undefined; + + try { + for (var _iterator11 = this.getActiveFiles()[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) { + var file = _step11.value; + totalBytesSent += file.upload.bytesSent; + totalBytes += file.upload.total; + } + } catch (err) { + _didIteratorError11 = true; + _iteratorError11 = err; + } finally { + try { + if (!_iteratorNormalCompletion11 && _iterator11["return"] != null) { + _iterator11["return"](); + } + } finally { + if (_didIteratorError11) { + throw _iteratorError11; + } + } + } + + totalUploadProgress = 100 * totalBytesSent / totalBytes; + } else { + totalUploadProgress = 100; + } + + return this.emit("totaluploadprogress", totalUploadProgress, totalBytes, totalBytesSent); + } // @options.paramName can be a function taking one parameter rather than a string. + // A parameter name for a file is obtained simply by calling this with an index number. + + }, { + key: "_getParamName", + value: function _getParamName(n) { + if (typeof this.options.paramName === "function") { + return this.options.paramName(n); + } else { + return "".concat(this.options.paramName).concat(this.options.uploadMultiple ? "[".concat(n, "]") : ""); + } + } // If @options.renameFile is a function, + // the function will be used to rename the file.name before appending it to the formData + + }, { + key: "_renameFile", + value: function _renameFile(file) { + if (typeof this.options.renameFile !== "function") { + return file.name; + } + + return this.options.renameFile(file); + } // Returns a form that can be used as fallback if the browser does not support DragnDrop + // + // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided. + // This code has to pass in IE7 :( + + }, { + key: "getFallbackForm", + value: function getFallbackForm() { + var existingFallback, form; + + if (existingFallback = this.getExistingFallback()) { + return existingFallback; + } + + var fieldsString = "<div class=\"dz-fallback\">"; + + if (this.options.dictFallbackText) { + fieldsString += "<p>".concat(this.options.dictFallbackText, "</p>"); + } + + fieldsString += "<input type=\"file\" name=\"".concat(this._getParamName(0), "\" ").concat(this.options.uploadMultiple ? 'multiple="multiple"' : undefined, " /><input type=\"submit\" value=\"Upload!\"></div>"); + var fields = Dropzone.createElement(fieldsString); + + if (this.element.tagName !== "FORM") { + form = Dropzone.createElement("<form action=\"".concat(this.options.url, "\" enctype=\"multipart/form-data\" method=\"").concat(this.options.method, "\"></form>")); + form.appendChild(fields); + } else { + // Make sure that the enctype and method attributes are set properly + this.element.setAttribute("enctype", "multipart/form-data"); + this.element.setAttribute("method", this.options.method); + } + + return form != null ? form : fields; + } // Returns the fallback elements if they exist already + // + // This code has to pass in IE7 :( + + }, { + key: "getExistingFallback", + value: function getExistingFallback() { + var getFallback = function getFallback(elements) { + var _iteratorNormalCompletion12 = true; + var _didIteratorError12 = false; + var _iteratorError12 = undefined; + + try { + for (var _iterator12 = elements[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) { + var el = _step12.value; + + if (/(^| )fallback($| )/.test(el.className)) { + return el; + } + } + } catch (err) { + _didIteratorError12 = true; + _iteratorError12 = err; + } finally { + try { + if (!_iteratorNormalCompletion12 && _iterator12["return"] != null) { + _iterator12["return"](); + } + } finally { + if (_didIteratorError12) { + throw _iteratorError12; + } + } + } + }; + + for (var _i2 = 0, _arr = ["div", "form"]; _i2 < _arr.length; _i2++) { + var tagName = _arr[_i2]; + var fallback; + + if (fallback = getFallback(this.element.getElementsByTagName(tagName))) { + return fallback; + } + } + } // Activates all listeners stored in @listeners + + }, { + key: "setupEventListeners", + value: function setupEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.addEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Deactivates all listeners stored in @listeners + + }, { + key: "removeEventListeners", + value: function removeEventListeners() { + return this.listeners.map(function (elementListeners) { + return function () { + var result = []; + + for (var event in elementListeners.events) { + var listener = elementListeners.events[event]; + result.push(elementListeners.element.removeEventListener(event, listener, false)); + } + + return result; + }(); + }); + } // Removes all event listeners and cancels all files in the queue or being processed. + + }, { + key: "disable", + value: function disable() { + var _this4 = this; + + this.clickableElements.forEach(function (element) { + return element.classList.remove("dz-clickable"); + }); + this.removeEventListeners(); + this.disabled = true; + return this.files.map(function (file) { + return _this4.cancelUpload(file); + }); + } + }, { + key: "enable", + value: function enable() { + delete this.disabled; + this.clickableElements.forEach(function (element) { + return element.classList.add("dz-clickable"); + }); + return this.setupEventListeners(); + } // Returns a nicely formatted filesize + + }, { + key: "filesize", + value: function filesize(size) { + var selectedSize = 0; + var selectedUnit = "b"; + + if (size > 0) { + var units = ['tb', 'gb', 'mb', 'kb', 'b']; + + for (var i = 0; i < units.length; i++) { + var unit = units[i]; + var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10; + + if (size >= cutoff) { + selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i); + selectedUnit = unit; + break; + } + } + + selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits + } + + return "<strong>".concat(selectedSize, "</strong> ").concat(this.options.dictFileSizeUnits[selectedUnit]); + } // Adds or removes the `dz-max-files-reached` class from the form. + + }, { + key: "_updateMaxFilesReachedClass", + value: function _updateMaxFilesReachedClass() { + if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + if (this.getAcceptedFiles().length === this.options.maxFiles) { + this.emit('maxfilesreached', this.files); + } + + return this.element.classList.add("dz-max-files-reached"); + } else { + return this.element.classList.remove("dz-max-files-reached"); + } + } + }, { + key: "drop", + value: function drop(e) { + if (!e.dataTransfer) { + return; + } + + this.emit("drop", e); // Convert the FileList to an Array + // This is necessary for IE11 + + var files = []; + + for (var i = 0; i < e.dataTransfer.files.length; i++) { + files[i] = e.dataTransfer.files[i]; + } // Even if it's a folder, files.length will contain the folders. + + + if (files.length) { + var items = e.dataTransfer.items; + + if (items && items.length && items[0].webkitGetAsEntry != null) { + // The browser supports dropping of folders, so handle items instead of files + this._addFilesFromItems(items); + } else { + this.handleFiles(files); + } + } + + this.emit("addedfiles", files); + } + }, { + key: "paste", + value: function paste(e) { + if (__guard__(e != null ? e.clipboardData : undefined, function (x) { + return x.items; + }) == null) { + return; + } + + this.emit("paste", e); + var items = e.clipboardData.items; + + if (items.length) { + return this._addFilesFromItems(items); + } + } + }, { + key: "handleFiles", + value: function handleFiles(files) { + var _iteratorNormalCompletion13 = true; + var _didIteratorError13 = false; + var _iteratorError13 = undefined; + + try { + for (var _iterator13 = files[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) { + var file = _step13.value; + this.addFile(file); + } + } catch (err) { + _didIteratorError13 = true; + _iteratorError13 = err; + } finally { + try { + if (!_iteratorNormalCompletion13 && _iterator13["return"] != null) { + _iterator13["return"](); + } + } finally { + if (_didIteratorError13) { + throw _iteratorError13; + } + } + } + } // When a folder is dropped (or files are pasted), items must be handled + // instead of files. + + }, { + key: "_addFilesFromItems", + value: function _addFilesFromItems(items) { + var _this5 = this; + + return function () { + var result = []; + var _iteratorNormalCompletion14 = true; + var _didIteratorError14 = false; + var _iteratorError14 = undefined; + + try { + for (var _iterator14 = items[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) { + var item = _step14.value; + var entry; + + if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) { + if (entry.isFile) { + result.push(_this5.addFile(item.getAsFile())); + } else if (entry.isDirectory) { + // Append all files from that directory to files + result.push(_this5._addFilesFromDirectory(entry, entry.name)); + } else { + result.push(undefined); + } + } else if (item.getAsFile != null) { + if (item.kind == null || item.kind === "file") { + result.push(_this5.addFile(item.getAsFile())); + } else { + result.push(undefined); + } + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError14 = true; + _iteratorError14 = err; + } finally { + try { + if (!_iteratorNormalCompletion14 && _iterator14["return"] != null) { + _iterator14["return"](); + } + } finally { + if (_didIteratorError14) { + throw _iteratorError14; + } + } + } + + return result; + }(); + } // Goes through the directory, and adds each file it finds recursively + + }, { + key: "_addFilesFromDirectory", + value: function _addFilesFromDirectory(directory, path) { + var _this6 = this; + + var dirReader = directory.createReader(); + + var errorHandler = function errorHandler(error) { + return __guardMethod__(console, 'log', function (o) { + return o.log(error); + }); + }; + + var readEntries = function readEntries() { + return dirReader.readEntries(function (entries) { + if (entries.length > 0) { + var _iteratorNormalCompletion15 = true; + var _didIteratorError15 = false; + var _iteratorError15 = undefined; + + try { + for (var _iterator15 = entries[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) { + var entry = _step15.value; + + if (entry.isFile) { + entry.file(function (file) { + if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') { + return; + } + + file.fullPath = "".concat(path, "/").concat(file.name); + return _this6.addFile(file); + }); + } else if (entry.isDirectory) { + _this6._addFilesFromDirectory(entry, "".concat(path, "/").concat(entry.name)); + } + } // Recursively call readEntries() again, since browser only handle + // the first 100 entries. + // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries + + } catch (err) { + _didIteratorError15 = true; + _iteratorError15 = err; + } finally { + try { + if (!_iteratorNormalCompletion15 && _iterator15["return"] != null) { + _iterator15["return"](); + } + } finally { + if (_didIteratorError15) { + throw _iteratorError15; + } + } + } + + readEntries(); + } + + return null; + }, errorHandler); + }; + + return readEntries(); + } // If `done()` is called without argument the file is accepted + // If you call it with an error message, the file is rejected + // (This allows for asynchronous validation) + // + // This function checks the filesize, and if the file.type passes the + // `acceptedFiles` check. + + }, { + key: "accept", + value: function accept(file, done) { + if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) { + done(this.options.dictFileTooBig.replace("{{filesize}}", Math.round(file.size / 1024 / 10.24) / 100).replace("{{maxFilesize}}", this.options.maxFilesize)); + } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) { + done(this.options.dictInvalidFileType); + } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) { + done(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}", this.options.maxFiles)); + this.emit("maxfilesexceeded", file); + } else { + this.options.accept.call(this, file, done); + } + } + }, { + key: "addFile", + value: function addFile(file) { + var _this7 = this; + + file.upload = { + uuid: Dropzone.uuidv4(), + progress: 0, + // Setting the total upload size to file.size for the beginning + // It's actual different than the size to be transmitted. + total: file.size, + bytesSent: 0, + filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and + // thus the chunks — might change if `options.transformFile` is set + // and does something to the data. + + }; + this.files.push(file); + file.status = Dropzone.ADDED; + this.emit("addedfile", file); + + this._enqueueThumbnail(file); + + this.accept(file, function (error) { + if (error) { + file.accepted = false; + + _this7._errorProcessing([file], error); // Will set the file.status + + } else { + file.accepted = true; + + if (_this7.options.autoQueue) { + _this7.enqueueFile(file); + } // Will set .accepted = true + + } + + _this7._updateMaxFilesReachedClass(); + }); + } // Wrapper for enqueueFile + + }, { + key: "enqueueFiles", + value: function enqueueFiles(files) { + var _iteratorNormalCompletion16 = true; + var _didIteratorError16 = false; + var _iteratorError16 = undefined; + + try { + for (var _iterator16 = files[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) { + var file = _step16.value; + this.enqueueFile(file); + } + } catch (err) { + _didIteratorError16 = true; + _iteratorError16 = err; + } finally { + try { + if (!_iteratorNormalCompletion16 && _iterator16["return"] != null) { + _iterator16["return"](); + } + } finally { + if (_didIteratorError16) { + throw _iteratorError16; + } + } + } + + return null; + } + }, { + key: "enqueueFile", + value: function enqueueFile(file) { + var _this8 = this; + + if (file.status === Dropzone.ADDED && file.accepted === true) { + file.status = Dropzone.QUEUED; + + if (this.options.autoProcessQueue) { + return setTimeout(function () { + return _this8.processQueue(); + }, 0); // Deferring the call + } + } else { + throw new Error("This file can't be queued because it has already been processed or was rejected."); + } + } + }, { + key: "_enqueueThumbnail", + value: function _enqueueThumbnail(file) { + var _this9 = this; + + if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) { + this._thumbnailQueue.push(file); + + return setTimeout(function () { + return _this9._processThumbnailQueue(); + }, 0); // Deferring the call + } + } + }, { + key: "_processThumbnailQueue", + value: function _processThumbnailQueue() { + var _this10 = this; + + if (this._processingThumbnail || this._thumbnailQueue.length === 0) { + return; + } + + this._processingThumbnail = true; + + var file = this._thumbnailQueue.shift(); + + return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) { + _this10.emit("thumbnail", file, dataUrl); + + _this10._processingThumbnail = false; + return _this10._processThumbnailQueue(); + }); + } // Can be called by the user to remove a file + + }, { + key: "removeFile", + value: function removeFile(file) { + if (file.status === Dropzone.UPLOADING) { + this.cancelUpload(file); + } + + this.files = without(this.files, file); + this.emit("removedfile", file); + + if (this.files.length === 0) { + return this.emit("reset"); + } + } // Removes all files that aren't currently processed from the list + + }, { + key: "removeAllFiles", + value: function removeAllFiles(cancelIfNecessary) { + // Create a copy of files since removeFile() changes the @files array. + if (cancelIfNecessary == null) { + cancelIfNecessary = false; + } + + var _iteratorNormalCompletion17 = true; + var _didIteratorError17 = false; + var _iteratorError17 = undefined; + + try { + for (var _iterator17 = this.files.slice()[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) { + var file = _step17.value; + + if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) { + this.removeFile(file); + } + } + } catch (err) { + _didIteratorError17 = true; + _iteratorError17 = err; + } finally { + try { + if (!_iteratorNormalCompletion17 && _iterator17["return"] != null) { + _iterator17["return"](); + } + } finally { + if (_didIteratorError17) { + throw _iteratorError17; + } + } + } + + return null; + } // Resizes an image before it gets sent to the server. This function is the default behavior of + // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with + // the resized blob. + + }, { + key: "resizeImage", + value: function resizeImage(file, width, height, resizeMethod, callback) { + var _this11 = this; + + return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) { + if (canvas == null) { + // The image has not been resized + return callback(file); + } else { + var resizeMimeType = _this11.options.resizeMimeType; + + if (resizeMimeType == null) { + resizeMimeType = file.type; + } + + var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality); + + if (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') { + // Now add the original EXIF information + resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL); + } + + return callback(Dropzone.dataURItoBlob(resizedDataURL)); + } + }); + } + }, { + key: "createThumbnail", + value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) { + var _this12 = this; + + var fileReader = new FileReader(); + + fileReader.onload = function () { + file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector + + if (file.type === "image/svg+xml") { + if (callback != null) { + callback(fileReader.result); + } + + return; + } + + _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback); + }; + + fileReader.readAsDataURL(file); + } // `mockFile` needs to have these attributes: + // + // { name: 'name', size: 12345, imageUrl: '' } + // + // `callback` will be invoked when the image has been downloaded and displayed. + // `crossOrigin` will be added to the `img` tag when accessing the file. + + }, { + key: "displayExistingFile", + value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) { + var _this13 = this; + + var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + this.emit("addedfile", mockFile); + this.emit("complete", mockFile); + + if (!resizeThumbnail) { + this.emit("thumbnail", mockFile, imageUrl); + if (callback) callback(); + } else { + var onDone = function onDone(thumbnail) { + _this13.emit('thumbnail', mockFile, thumbnail); + + if (callback) callback(); + }; + + mockFile.dataURL = imageUrl; + this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.resizeMethod, this.options.fixOrientation, onDone, crossOrigin); + } + } + }, { + key: "createThumbnailFromUrl", + value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) { + var _this14 = this; + + // Not using `new Image` here because of a bug in latest Chrome versions. + // See https://github.com/enyo/dropzone/pull/226 + var img = document.createElement("img"); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.onload = function () { + var loadExif = function loadExif(callback) { + return callback(1); + }; + + if (typeof EXIF !== 'undefined' && EXIF !== null && fixOrientation) { + loadExif = function loadExif(callback) { + return EXIF.getData(img, function () { + return callback(EXIF.getTag(this, 'Orientation')); + }); + }; + } + + return loadExif(function (orientation) { + file.width = img.width; + file.height = img.height; + + var resizeInfo = _this14.options.resize.call(_this14, file, width, height, resizeMethod); + + var canvas = document.createElement("canvas"); + var ctx = canvas.getContext("2d"); + canvas.width = resizeInfo.trgWidth; + canvas.height = resizeInfo.trgHeight; + + if (orientation > 4) { + canvas.width = resizeInfo.trgHeight; + canvas.height = resizeInfo.trgWidth; + } + + switch (orientation) { + case 2: + // horizontal flip + ctx.translate(canvas.width, 0); + ctx.scale(-1, 1); + break; + + case 3: + // 180° rotate left + ctx.translate(canvas.width, canvas.height); + ctx.rotate(Math.PI); + break; + + case 4: + // vertical flip + ctx.translate(0, canvas.height); + ctx.scale(1, -1); + break; + + case 5: + // vertical flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.scale(1, -1); + break; + + case 6: + // 90° rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(0, -canvas.width); + break; + + case 7: + // horizontal flip + 90 rotate right + ctx.rotate(0.5 * Math.PI); + ctx.translate(canvas.height, -canvas.width); + ctx.scale(-1, 1); + break; + + case 8: + // 90° rotate left + ctx.rotate(-0.5 * Math.PI); + ctx.translate(-canvas.height, 0); + break; + } // This is a bugfix for iOS' scaling bug. + + + drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight); + var thumbnail = canvas.toDataURL("image/png"); + + if (callback != null) { + return callback(thumbnail, canvas); + } + }); + }; + + if (callback != null) { + img.onerror = callback; + } + + return img.src = file.dataURL; + } // Goes through the queue and processes files if there aren't too many already. + + }, { + key: "processQueue", + value: function processQueue() { + var parallelUploads = this.options.parallelUploads; + var processingLength = this.getUploadingFiles().length; + var i = processingLength; // There are already at least as many files uploading than should be + + if (processingLength >= parallelUploads) { + return; + } + + var queuedFiles = this.getQueuedFiles(); + + if (!(queuedFiles.length > 0)) { + return; + } + + if (this.options.uploadMultiple) { + // The files should be uploaded in one request + return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength)); + } else { + while (i < parallelUploads) { + if (!queuedFiles.length) { + return; + } // Nothing left to process + + + this.processFile(queuedFiles.shift()); + i++; + } + } + } // Wrapper for `processFiles` + + }, { + key: "processFile", + value: function processFile(file) { + return this.processFiles([file]); + } // Loads the file, then calls finishedLoading() + + }, { + key: "processFiles", + value: function processFiles(files) { + var _iteratorNormalCompletion18 = true; + var _didIteratorError18 = false; + var _iteratorError18 = undefined; + + try { + for (var _iterator18 = files[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) { + var file = _step18.value; + file.processing = true; // Backwards compatibility + + file.status = Dropzone.UPLOADING; + this.emit("processing", file); + } + } catch (err) { + _didIteratorError18 = true; + _iteratorError18 = err; + } finally { + try { + if (!_iteratorNormalCompletion18 && _iterator18["return"] != null) { + _iterator18["return"](); + } + } finally { + if (_didIteratorError18) { + throw _iteratorError18; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("processingmultiple", files); + } + + return this.uploadFiles(files); + } + }, { + key: "_getFilesWithXhr", + value: function _getFilesWithXhr(xhr) { + var files; + return files = this.files.filter(function (file) { + return file.xhr === xhr; + }).map(function (file) { + return file; + }); + } // Cancels the file upload and sets the status to CANCELED + // **if** the file is actually being uploaded. + // If it's still in the queue, the file is being removed from it and the status + // set to CANCELED. + + }, { + key: "cancelUpload", + value: function cancelUpload(file) { + if (file.status === Dropzone.UPLOADING) { + var groupedFiles = this._getFilesWithXhr(file.xhr); + + var _iteratorNormalCompletion19 = true; + var _didIteratorError19 = false; + var _iteratorError19 = undefined; + + try { + for (var _iterator19 = groupedFiles[Symbol.iterator](), _step19; !(_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done); _iteratorNormalCompletion19 = true) { + var groupedFile = _step19.value; + groupedFile.status = Dropzone.CANCELED; + } + } catch (err) { + _didIteratorError19 = true; + _iteratorError19 = err; + } finally { + try { + if (!_iteratorNormalCompletion19 && _iterator19["return"] != null) { + _iterator19["return"](); + } + } finally { + if (_didIteratorError19) { + throw _iteratorError19; + } + } + } + + if (typeof file.xhr !== 'undefined') { + file.xhr.abort(); + } + + var _iteratorNormalCompletion20 = true; + var _didIteratorError20 = false; + var _iteratorError20 = undefined; + + try { + for (var _iterator20 = groupedFiles[Symbol.iterator](), _step20; !(_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done); _iteratorNormalCompletion20 = true) { + var _groupedFile = _step20.value; + this.emit("canceled", _groupedFile); + } + } catch (err) { + _didIteratorError20 = true; + _iteratorError20 = err; + } finally { + try { + if (!_iteratorNormalCompletion20 && _iterator20["return"] != null) { + _iterator20["return"](); + } + } finally { + if (_didIteratorError20) { + throw _iteratorError20; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", groupedFiles); + } + } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) { + file.status = Dropzone.CANCELED; + this.emit("canceled", file); + + if (this.options.uploadMultiple) { + this.emit("canceledmultiple", [file]); + } + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }, { + key: "resolveOption", + value: function resolveOption(option) { + if (typeof option === 'function') { + for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + args[_key3 - 1] = arguments[_key3]; + } + + return option.apply(this, args); + } + + return option; + } + }, { + key: "uploadFile", + value: function uploadFile(file) { + return this.uploadFiles([file]); + } + }, { + key: "uploadFiles", + value: function uploadFiles(files) { + var _this15 = this; + + this._transformFiles(files, function (transformedFiles) { + if (_this15.options.chunking) { + // Chunking is not allowed to be used with `uploadMultiple` so we know + // that there is only __one__file. + var transformedFile = transformedFiles[0]; + files[0].upload.chunked = _this15.options.chunking && (_this15.options.forceChunking || transformedFile.size > _this15.options.chunkSize); + files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this15.options.chunkSize); + } + + if (files[0].upload.chunked) { + // This file should be sent in chunks! + // If the chunking option is set, we **know** that there can only be **one** file, since + // uploadMultiple is not allowed with this option. + var file = files[0]; + var _transformedFile = transformedFiles[0]; + var startedChunkCount = 0; + file.upload.chunks = []; + + var handleNextChunk = function handleNextChunk() { + var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet. + + while (file.upload.chunks[chunkIndex] !== undefined) { + chunkIndex++; + } // This means, that all chunks have already been started. + + + if (chunkIndex >= file.upload.totalChunkCount) return; + startedChunkCount++; + var start = chunkIndex * _this15.options.chunkSize; + var end = Math.min(start + _this15.options.chunkSize, file.size); + var dataBlock = { + name: _this15._getParamName(0), + data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end), + filename: file.upload.filename, + chunkIndex: chunkIndex + }; + file.upload.chunks[chunkIndex] = { + file: file, + index: chunkIndex, + dataBlock: dataBlock, + // In case we want to retry. + status: Dropzone.UPLOADING, + progress: 0, + retries: 0 // The number of times this block has been retried. + + }; + + _this15._uploadData(files, [dataBlock]); + }; + + file.upload.finishedChunkUpload = function (chunk) { + var allFinished = true; + chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk + + chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers + + chunk.xhr = null; + + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] === undefined) { + return handleNextChunk(); + } + + if (file.upload.chunks[i].status !== Dropzone.SUCCESS) { + allFinished = false; + } + } + + if (allFinished) { + _this15.options.chunksUploaded(file, function () { + _this15._finished(files, '', null); + }); + } + }; + + if (_this15.options.parallelChunkUploads) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + handleNextChunk(); + } + } else { + handleNextChunk(); + } + } else { + var dataBlocks = []; + + for (var _i3 = 0; _i3 < files.length; _i3++) { + dataBlocks[_i3] = { + name: _this15._getParamName(_i3), + data: transformedFiles[_i3], + filename: files[_i3].upload.filename + }; + } + + _this15._uploadData(files, dataBlocks); + } + }); + } /// Returns the right chunk for given file and xhr + + }, { + key: "_getChunk", + value: function _getChunk(file, xhr) { + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) { + return file.upload.chunks[i]; + } + } + } // This function actually uploads the file(s) to the server. + // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed + // files, or individual chunks for chunked upload). + + }, { + key: "_uploadData", + value: function _uploadData(files, dataBlocks) { + var _this16 = this; + + var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later. + + var _iteratorNormalCompletion21 = true; + var _didIteratorError21 = false; + var _iteratorError21 = undefined; + + try { + for (var _iterator21 = files[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) { + var file = _step21.value; + file.xhr = xhr; + } + } catch (err) { + _didIteratorError21 = true; + _iteratorError21 = err; + } finally { + try { + if (!_iteratorNormalCompletion21 && _iterator21["return"] != null) { + _iterator21["return"](); + } + } finally { + if (_didIteratorError21) { + throw _iteratorError21; + } + } + } + + if (files[0].upload.chunked) { + // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk + files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr; + } + + var method = this.resolveOption(this.options.method, files); + var url = this.resolveOption(this.options.url, files); + xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8 + + xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179 + + xhr.withCredentials = !!this.options.withCredentials; + + xhr.onload = function (e) { + _this16._finishedUploading(files, xhr, e); + }; + + xhr.ontimeout = function () { + _this16._handleUploadError(files, xhr, "Request timedout after ".concat(_this16.options.timeout, " seconds")); + }; + + xhr.onerror = function () { + _this16._handleUploadError(files, xhr); + }; // Some browsers do not have the .upload property + + + var progressObj = xhr.upload != null ? xhr.upload : xhr; + + progressObj.onprogress = function (e) { + return _this16._updateFilesUploadProgress(files, xhr, e); + }; + + var headers = { + "Accept": "application/json", + "Cache-Control": "no-cache", + "X-Requested-With": "XMLHttpRequest" + }; + + if (this.options.headers) { + Dropzone.extend(headers, this.options.headers); + } + + for (var headerName in headers) { + var headerValue = headers[headerName]; + + if (headerValue) { + xhr.setRequestHeader(headerName, headerValue); + } + } + + var formData = new FormData(); // Adding all @options parameters + + if (this.options.params) { + var additionalParams = this.options.params; + + if (typeof additionalParams === 'function') { + additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null); + } + + for (var key in additionalParams) { + var value = additionalParams[key]; + formData.append(key, value); + } + } // Let the user add additional data if necessary + + + var _iteratorNormalCompletion22 = true; + var _didIteratorError22 = false; + var _iteratorError22 = undefined; + + try { + for (var _iterator22 = files[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) { + var _file = _step22.value; + this.emit("sending", _file, xhr, formData); + } + } catch (err) { + _didIteratorError22 = true; + _iteratorError22 = err; + } finally { + try { + if (!_iteratorNormalCompletion22 && _iterator22["return"] != null) { + _iterator22["return"](); + } + } finally { + if (_didIteratorError22) { + throw _iteratorError22; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("sendingmultiple", files, xhr, formData); + } + + this._addFormElementData(formData); // Finally add the files + // Has to be last because some servers (eg: S3) expect the file to be the last parameter + + + for (var i = 0; i < dataBlocks.length; i++) { + var dataBlock = dataBlocks[i]; + formData.append(dataBlock.name, dataBlock.data, dataBlock.filename); + } + + this.submitRequest(xhr, formData, files); + } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done. + + }, { + key: "_transformFiles", + value: function _transformFiles(files, done) { + var _this17 = this; + + var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library. + + var doneCounter = 0; + + var _loop = function _loop(i) { + _this17.options.transformFile.call(_this17, files[i], function (transformedFile) { + transformedFiles[i] = transformedFile; + + if (++doneCounter === files.length) { + done(transformedFiles); + } + }); + }; + + for (var i = 0; i < files.length; i++) { + _loop(i); + } + } // Takes care of adding other input elements of the form to the AJAX request + + }, { + key: "_addFormElementData", + value: function _addFormElementData(formData) { + // Take care of other input elements + if (this.element.tagName === "FORM") { + var _iteratorNormalCompletion23 = true; + var _didIteratorError23 = false; + var _iteratorError23 = undefined; + + try { + for (var _iterator23 = this.element.querySelectorAll("input, textarea, select, button")[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) { + var input = _step23.value; + var inputName = input.getAttribute("name"); + var inputType = input.getAttribute("type"); + if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it. + + if (typeof inputName === 'undefined' || inputName === null) continue; + + if (input.tagName === "SELECT" && input.hasAttribute("multiple")) { + // Possibly multiple values + var _iteratorNormalCompletion24 = true; + var _didIteratorError24 = false; + var _iteratorError24 = undefined; + + try { + for (var _iterator24 = input.options[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) { + var option = _step24.value; + + if (option.selected) { + formData.append(inputName, option.value); + } + } + } catch (err) { + _didIteratorError24 = true; + _iteratorError24 = err; + } finally { + try { + if (!_iteratorNormalCompletion24 && _iterator24["return"] != null) { + _iterator24["return"](); + } + } finally { + if (_didIteratorError24) { + throw _iteratorError24; + } + } + } + } else if (!inputType || inputType !== "checkbox" && inputType !== "radio" || input.checked) { + formData.append(inputName, input.value); + } + } + } catch (err) { + _didIteratorError23 = true; + _iteratorError23 = err; + } finally { + try { + if (!_iteratorNormalCompletion23 && _iterator23["return"] != null) { + _iterator23["return"](); + } + } finally { + if (_didIteratorError23) { + throw _iteratorError23; + } + } + } + } + } // Invoked when there is new progress information about given files. + // If e is not provided, it is assumed that the upload is finished. + + }, { + key: "_updateFilesUploadProgress", + value: function _updateFilesUploadProgress(files, xhr, e) { + var progress; + + if (typeof e !== 'undefined') { + progress = 100 * e.loaded / e.total; + + if (files[0].upload.chunked) { + var file = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk progress. + + var chunk = this._getChunk(file, xhr); + + chunk.progress = progress; + chunk.total = e.total; + chunk.bytesSent = e.loaded; + var fileProgress = 0, + fileTotal, + fileBytesSent; + file.upload.progress = 0; + file.upload.total = 0; + file.upload.bytesSent = 0; + + for (var i = 0; i < file.upload.totalChunkCount; i++) { + if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) { + file.upload.progress += file.upload.chunks[i].progress; + file.upload.total += file.upload.chunks[i].total; + file.upload.bytesSent += file.upload.chunks[i].bytesSent; + } + } + + file.upload.progress = file.upload.progress / file.upload.totalChunkCount; + } else { + var _iteratorNormalCompletion25 = true; + var _didIteratorError25 = false; + var _iteratorError25 = undefined; + + try { + for (var _iterator25 = files[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) { + var _file2 = _step25.value; + _file2.upload.progress = progress; + _file2.upload.total = e.total; + _file2.upload.bytesSent = e.loaded; + } + } catch (err) { + _didIteratorError25 = true; + _iteratorError25 = err; + } finally { + try { + if (!_iteratorNormalCompletion25 && _iterator25["return"] != null) { + _iterator25["return"](); + } + } finally { + if (_didIteratorError25) { + throw _iteratorError25; + } + } + } + } + + var _iteratorNormalCompletion26 = true; + var _didIteratorError26 = false; + var _iteratorError26 = undefined; + + try { + for (var _iterator26 = files[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) { + var _file3 = _step26.value; + this.emit("uploadprogress", _file3, _file3.upload.progress, _file3.upload.bytesSent); + } + } catch (err) { + _didIteratorError26 = true; + _iteratorError26 = err; + } finally { + try { + if (!_iteratorNormalCompletion26 && _iterator26["return"] != null) { + _iterator26["return"](); + } + } finally { + if (_didIteratorError26) { + throw _iteratorError26; + } + } + } + } else { + // Called when the file finished uploading + var allFilesFinished = true; + progress = 100; + var _iteratorNormalCompletion27 = true; + var _didIteratorError27 = false; + var _iteratorError27 = undefined; + + try { + for (var _iterator27 = files[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) { + var _file4 = _step27.value; + + if (_file4.upload.progress !== 100 || _file4.upload.bytesSent !== _file4.upload.total) { + allFilesFinished = false; + } + + _file4.upload.progress = progress; + _file4.upload.bytesSent = _file4.upload.total; + } // Nothing to do, all files already at 100% + + } catch (err) { + _didIteratorError27 = true; + _iteratorError27 = err; + } finally { + try { + if (!_iteratorNormalCompletion27 && _iterator27["return"] != null) { + _iterator27["return"](); + } + } finally { + if (_didIteratorError27) { + throw _iteratorError27; + } + } + } + + if (allFilesFinished) { + return; + } + + var _iteratorNormalCompletion28 = true; + var _didIteratorError28 = false; + var _iteratorError28 = undefined; + + try { + for (var _iterator28 = files[Symbol.iterator](), _step28; !(_iteratorNormalCompletion28 = (_step28 = _iterator28.next()).done); _iteratorNormalCompletion28 = true) { + var _file5 = _step28.value; + this.emit("uploadprogress", _file5, progress, _file5.upload.bytesSent); + } + } catch (err) { + _didIteratorError28 = true; + _iteratorError28 = err; + } finally { + try { + if (!_iteratorNormalCompletion28 && _iterator28["return"] != null) { + _iterator28["return"](); + } + } finally { + if (_didIteratorError28) { + throw _iteratorError28; + } + } + } + } + } + }, { + key: "_finishedUploading", + value: function _finishedUploading(files, xhr, e) { + var response; + + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (xhr.readyState !== 4) { + return; + } + + if (xhr.responseType !== 'arraybuffer' && xhr.responseType !== 'blob') { + response = xhr.responseText; + + if (xhr.getResponseHeader("content-type") && ~xhr.getResponseHeader("content-type").indexOf("application/json")) { + try { + response = JSON.parse(response); + } catch (error) { + e = error; + response = "Invalid JSON response from server."; + } + } + } + + this._updateFilesUploadProgress(files); + + if (!(200 <= xhr.status && xhr.status < 300)) { + this._handleUploadError(files, xhr, response); + } else { + if (files[0].upload.chunked) { + files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr)); + } else { + this._finished(files, response, e); + } + } + } + }, { + key: "_handleUploadError", + value: function _handleUploadError(files, xhr, response) { + if (files[0].status === Dropzone.CANCELED) { + return; + } + + if (files[0].upload.chunked && this.options.retryChunks) { + var chunk = this._getChunk(files[0], xhr); + + if (chunk.retries++ < this.options.retryChunksLimit) { + this._uploadData(files, [chunk.dataBlock]); + + return; + } else { + console.warn('Retried this chunk too often. Giving up.'); + } + } + + this._errorProcessing(files, response || this.options.dictResponseError.replace("{{statusCode}}", xhr.status), xhr); + } + }, { + key: "submitRequest", + value: function submitRequest(xhr, formData, files) { + xhr.send(formData); + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_finished", + value: function _finished(files, responseText, e) { + var _iteratorNormalCompletion29 = true; + var _didIteratorError29 = false; + var _iteratorError29 = undefined; + + try { + for (var _iterator29 = files[Symbol.iterator](), _step29; !(_iteratorNormalCompletion29 = (_step29 = _iterator29.next()).done); _iteratorNormalCompletion29 = true) { + var file = _step29.value; + file.status = Dropzone.SUCCESS; + this.emit("success", file, responseText, e); + this.emit("complete", file); + } + } catch (err) { + _didIteratorError29 = true; + _iteratorError29 = err; + } finally { + try { + if (!_iteratorNormalCompletion29 && _iterator29["return"] != null) { + _iterator29["return"](); + } + } finally { + if (_didIteratorError29) { + throw _iteratorError29; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("successmultiple", files, responseText, e); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } // Called internally when processing is finished. + // Individual callbacks have to be called in the appropriate sections. + + }, { + key: "_errorProcessing", + value: function _errorProcessing(files, message, xhr) { + var _iteratorNormalCompletion30 = true; + var _didIteratorError30 = false; + var _iteratorError30 = undefined; + + try { + for (var _iterator30 = files[Symbol.iterator](), _step30; !(_iteratorNormalCompletion30 = (_step30 = _iterator30.next()).done); _iteratorNormalCompletion30 = true) { + var file = _step30.value; + file.status = Dropzone.ERROR; + this.emit("error", file, message, xhr); + this.emit("complete", file); + } + } catch (err) { + _didIteratorError30 = true; + _iteratorError30 = err; + } finally { + try { + if (!_iteratorNormalCompletion30 && _iterator30["return"] != null) { + _iterator30["return"](); + } + } finally { + if (_didIteratorError30) { + throw _iteratorError30; + } + } + } + + if (this.options.uploadMultiple) { + this.emit("errormultiple", files, message, xhr); + this.emit("completemultiple", files); + } + + if (this.options.autoProcessQueue) { + return this.processQueue(); + } + } + }], [{ + key: "uuidv4", + value: function uuidv4() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, + v = c === 'x' ? r : r & 0x3 | 0x8; + return v.toString(16); + }); + } + }]); + + return Dropzone; +}(Emitter); + +Dropzone.initClass(); +Dropzone.version = "5.7.0"; // This is a map of options for your different dropzones. Add configurations +// to this object for your different dropzone elemens. +// +// Example: +// +// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 }; +// +// To disable autoDiscover for a specific element, you can set `false` as an option: +// +// Dropzone.options.myDisabledElementId = false; +// +// And in html: +// +// <form action="/upload" id="my-dropzone-element-id" class="dropzone"></form> + +Dropzone.options = {}; // Returns the options for an element or undefined if none available. + +Dropzone.optionsForElement = function (element) { + // Get the `Dropzone.options.elementId` for this element if it exists + if (element.getAttribute("id")) { + return Dropzone.options[camelize(element.getAttribute("id"))]; + } else { + return undefined; + } +}; // Holds a list of all dropzone instances + + +Dropzone.instances = []; // Returns the dropzone for given element if any + +Dropzone.forElement = function (element) { + if (typeof element === "string") { + element = document.querySelector(element); + } + + if ((element != null ? element.dropzone : undefined) == null) { + throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone."); + } + + return element.dropzone; +}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements. + + +Dropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them + +Dropzone.discover = function () { + var dropzones; + + if (document.querySelectorAll) { + dropzones = document.querySelectorAll(".dropzone"); + } else { + dropzones = []; // IE :( + + var checkElements = function checkElements(elements) { + return function () { + var result = []; + var _iteratorNormalCompletion31 = true; + var _didIteratorError31 = false; + var _iteratorError31 = undefined; + + try { + for (var _iterator31 = elements[Symbol.iterator](), _step31; !(_iteratorNormalCompletion31 = (_step31 = _iterator31.next()).done); _iteratorNormalCompletion31 = true) { + var el = _step31.value; + + if (/(^| )dropzone($| )/.test(el.className)) { + result.push(dropzones.push(el)); + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError31 = true; + _iteratorError31 = err; + } finally { + try { + if (!_iteratorNormalCompletion31 && _iterator31["return"] != null) { + _iterator31["return"](); + } + } finally { + if (_didIteratorError31) { + throw _iteratorError31; + } + } + } + + return result; + }(); + }; + + checkElements(document.getElementsByTagName("div")); + checkElements(document.getElementsByTagName("form")); + } + + return function () { + var result = []; + var _iteratorNormalCompletion32 = true; + var _didIteratorError32 = false; + var _iteratorError32 = undefined; + + try { + for (var _iterator32 = dropzones[Symbol.iterator](), _step32; !(_iteratorNormalCompletion32 = (_step32 = _iterator32.next()).done); _iteratorNormalCompletion32 = true) { + var dropzone = _step32.value; + + // Create a dropzone unless auto discover has been disabled for specific element + if (Dropzone.optionsForElement(dropzone) !== false) { + result.push(new Dropzone(dropzone)); + } else { + result.push(undefined); + } + } + } catch (err) { + _didIteratorError32 = true; + _iteratorError32 = err; + } finally { + try { + if (!_iteratorNormalCompletion32 && _iterator32["return"] != null) { + _iterator32["return"](); + } + } finally { + if (_didIteratorError32) { + throw _iteratorError32; + } + } + } + + return result; + }(); +}; // Since the whole Drag'n'Drop API is pretty new, some browsers implement it, +// but not correctly. +// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know. +// But what to do when browsers *theoretically* support an API, but crash +// when using it. +// +// This is a list of regular expressions tested against navigator.userAgent +// +// ** It should only be used on browser that *do* support the API, but +// incorrectly ** +// + + +Dropzone.blacklistedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API. +/opera.*(Macintosh|Windows Phone).*version\/12/i]; // Checks if the browser is supported + +Dropzone.isBrowserSupported = function () { + var capableBrowser = true; + + if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) { + if (!("classList" in document.createElement("a"))) { + capableBrowser = false; + } else { + // The browser supports the API, but may be blacklisted. + var _iteratorNormalCompletion33 = true; + var _didIteratorError33 = false; + var _iteratorError33 = undefined; + + try { + for (var _iterator33 = Dropzone.blacklistedBrowsers[Symbol.iterator](), _step33; !(_iteratorNormalCompletion33 = (_step33 = _iterator33.next()).done); _iteratorNormalCompletion33 = true) { + var regex = _step33.value; + + if (regex.test(navigator.userAgent)) { + capableBrowser = false; + continue; + } + } + } catch (err) { + _didIteratorError33 = true; + _iteratorError33 = err; + } finally { + try { + if (!_iteratorNormalCompletion33 && _iterator33["return"] != null) { + _iterator33["return"](); + } + } finally { + if (_didIteratorError33) { + throw _iteratorError33; + } + } + } + } + } else { + capableBrowser = false; + } + + return capableBrowser; +}; + +Dropzone.dataURItoBlob = function (dataURI) { + // convert base64 to raw binary data held in a string + // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this + var byteString = atob(dataURI.split(',')[1]); // separate out the mime component + + var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer + + var ab = new ArrayBuffer(byteString.length); + var ia = new Uint8Array(ab); + + for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) { + ia[i] = byteString.charCodeAt(i); + } // write the ArrayBuffer to a blob + + + return new Blob([ab], { + type: mimeString + }); +}; // Returns an array without the rejected item + + +var without = function without(list, rejectedItem) { + return list.filter(function (item) { + return item !== rejectedItem; + }).map(function (item) { + return item; + }); +}; // abc-def_ghi -> abcDefGhi + + +var camelize = function camelize(str) { + return str.replace(/[\-_](\w)/g, function (match) { + return match.charAt(1).toUpperCase(); + }); +}; // Creates an element from string + + +Dropzone.createElement = function (string) { + var div = document.createElement("div"); + div.innerHTML = string; + return div.childNodes[0]; +}; // Tests if given element is inside (or simply is) the container + + +Dropzone.elementInside = function (element, container) { + if (element === container) { + return true; + } // Coffeescript doesn't support do/while loops + + + while (element = element.parentNode) { + if (element === container) { + return true; + } + } + + return false; +}; + +Dropzone.getElement = function (el, name) { + var element; + + if (typeof el === "string") { + element = document.querySelector(el); + } else if (el.nodeType != null) { + element = el; + } + + if (element == null) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector or a plain HTML element.")); + } + + return element; +}; + +Dropzone.getElements = function (els, name) { + var el, elements; + + if (els instanceof Array) { + elements = []; + + try { + var _iteratorNormalCompletion34 = true; + var _didIteratorError34 = false; + var _iteratorError34 = undefined; + + try { + for (var _iterator34 = els[Symbol.iterator](), _step34; !(_iteratorNormalCompletion34 = (_step34 = _iterator34.next()).done); _iteratorNormalCompletion34 = true) { + el = _step34.value; + elements.push(this.getElement(el, name)); + } + } catch (err) { + _didIteratorError34 = true; + _iteratorError34 = err; + } finally { + try { + if (!_iteratorNormalCompletion34 && _iterator34["return"] != null) { + _iterator34["return"](); + } + } finally { + if (_didIteratorError34) { + throw _iteratorError34; + } + } + } + } catch (e) { + elements = null; + } + } else if (typeof els === "string") { + elements = []; + var _iteratorNormalCompletion35 = true; + var _didIteratorError35 = false; + var _iteratorError35 = undefined; + + try { + for (var _iterator35 = document.querySelectorAll(els)[Symbol.iterator](), _step35; !(_iteratorNormalCompletion35 = (_step35 = _iterator35.next()).done); _iteratorNormalCompletion35 = true) { + el = _step35.value; + elements.push(el); + } + } catch (err) { + _didIteratorError35 = true; + _iteratorError35 = err; + } finally { + try { + if (!_iteratorNormalCompletion35 && _iterator35["return"] != null) { + _iterator35["return"](); + } + } finally { + if (_didIteratorError35) { + throw _iteratorError35; + } + } + } + } else if (els.nodeType != null) { + elements = [els]; + } + + if (elements == null || !elements.length) { + throw new Error("Invalid `".concat(name, "` option provided. Please provide a CSS selector, a plain HTML element or a list of those.")); + } + + return elements; +}; // Asks the user the question and calls accepted or rejected accordingly +// +// The default implementation just uses `window.confirm` and then calls the +// appropriate callback. + + +Dropzone.confirm = function (question, accepted, rejected) { + if (window.confirm(question)) { + return accepted(); + } else if (rejected != null) { + return rejected(); + } +}; // Validates the mime type like this: +// +// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept + + +Dropzone.isValidFile = function (file, acceptedFiles) { + if (!acceptedFiles) { + return true; + } // If there are no accepted mime types, it's OK + + + acceptedFiles = acceptedFiles.split(","); + var mimeType = file.type; + var baseMimeType = mimeType.replace(/\/.*$/, ""); + var _iteratorNormalCompletion36 = true; + var _didIteratorError36 = false; + var _iteratorError36 = undefined; + + try { + for (var _iterator36 = acceptedFiles[Symbol.iterator](), _step36; !(_iteratorNormalCompletion36 = (_step36 = _iterator36.next()).done); _iteratorNormalCompletion36 = true) { + var validType = _step36.value; + validType = validType.trim(); + + if (validType.charAt(0) === ".") { + if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) { + return true; + } + } else if (/\/\*$/.test(validType)) { + // This is something like a image/* mime type + if (baseMimeType === validType.replace(/\/.*$/, "")) { + return true; + } + } else { + if (mimeType === validType) { + return true; + } + } + } + } catch (err) { + _didIteratorError36 = true; + _iteratorError36 = err; + } finally { + try { + if (!_iteratorNormalCompletion36 && _iterator36["return"] != null) { + _iterator36["return"](); + } + } finally { + if (_didIteratorError36) { + throw _iteratorError36; + } + } + } + + return false; +}; // Augment jQuery + + +if (typeof jQuery !== 'undefined' && jQuery !== null) { + jQuery.fn.dropzone = function (options) { + return this.each(function () { + return new Dropzone(this, options); + }); + }; +} + +if (typeof module !== 'undefined' && module !== null) { + module.exports = Dropzone; +} else { + window.Dropzone = Dropzone; +} // Dropzone file status codes + + +Dropzone.ADDED = "added"; +Dropzone.QUEUED = "queued"; // For backwards compatibility. Now, if a file is accepted, it's either queued +// or uploading. + +Dropzone.ACCEPTED = Dropzone.QUEUED; +Dropzone.UPLOADING = "uploading"; +Dropzone.PROCESSING = Dropzone.UPLOADING; // alias + +Dropzone.CANCELED = "canceled"; +Dropzone.ERROR = "error"; +Dropzone.SUCCESS = "success"; +/* + + Bugfix for iOS 6 and 7 + Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios + based on the work of https://github.com/stomita/ios-imagefile-megapixel + + */ +// Detecting vertical squash in loaded image. +// Fixes a bug which squash image vertically while drawing into canvas for some images. +// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel + +var detectVerticalSquash = function detectVerticalSquash(img) { + var iw = img.naturalWidth; + var ih = img.naturalHeight; + var canvas = document.createElement("canvas"); + canvas.width = 1; + canvas.height = ih; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + + var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih), + data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically. + + + var sy = 0; + var ey = ih; + var py = ih; + + while (py > sy) { + var alpha = data[(py - 1) * 4 + 3]; + + if (alpha === 0) { + ey = py; + } else { + sy = py; + } + + py = ey + sy >> 1; + } + + var ratio = py / ih; + + if (ratio === 0) { + return 1; + } else { + return ratio; + } +}; // A replacement for context.drawImage +// (args are for source and destination). + + +var drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) { + var vertSquashRatio = detectVerticalSquash(img); + return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio); +}; // Based on MinifyJpeg +// Source: http://www.perry.cz/files/ExifRestorer.js +// http://elicon.blog57.fc2.com/blog-entry-206.html + + +var ExifRestore = +/*#__PURE__*/ +function () { + function ExifRestore() { + _classCallCheck(this, ExifRestore); + } + + _createClass(ExifRestore, null, [{ + key: "initClass", + value: function initClass() { + this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + } + }, { + key: "encode64", + value: function encode64(input) { + var output = ''; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ''; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ''; + var i = 0; + + while (true) { + chr1 = input[i++]; + chr2 = input[i++]; + chr3 = input[i++]; + enc1 = chr1 >> 2; + enc2 = (chr1 & 3) << 4 | chr2 >> 4; + enc3 = (chr2 & 15) << 2 | chr3 >> 6; + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4); + chr1 = chr2 = chr3 = ''; + enc1 = enc2 = enc3 = enc4 = ''; + + if (!(i < input.length)) { + break; + } + } + + return output; + } + }, { + key: "restore", + value: function restore(origFileBase64, resizedFileBase64) { + if (!origFileBase64.match('data:image/jpeg;base64,')) { + return resizedFileBase64; + } + + var rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', '')); + var segments = this.slice2Segments(rawImage); + var image = this.exifManipulation(resizedFileBase64, segments); + return "data:image/jpeg;base64,".concat(this.encode64(image)); + } + }, { + key: "exifManipulation", + value: function exifManipulation(resizedFileBase64, segments) { + var exifArray = this.getExifArray(segments); + var newImageArray = this.insertExif(resizedFileBase64, exifArray); + var aBuffer = new Uint8Array(newImageArray); + return aBuffer; + } + }, { + key: "getExifArray", + value: function getExifArray(segments) { + var seg = undefined; + var x = 0; + + while (x < segments.length) { + seg = segments[x]; + + if (seg[0] === 255 & seg[1] === 225) { + return seg; + } + + x++; + } + + return []; + } + }, { + key: "insertExif", + value: function insertExif(resizedFileBase64, exifArray) { + var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', ''); + var buf = this.decode64(imageData); + var separatePoint = buf.indexOf(255, 3); + var mae = buf.slice(0, separatePoint); + var ato = buf.slice(separatePoint); + var array = mae; + array = array.concat(exifArray); + array = array.concat(ato); + return array; + } + }, { + key: "slice2Segments", + value: function slice2Segments(rawImageArray) { + var head = 0; + var segments = []; + + while (true) { + var length; + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) { + break; + } + + if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) { + head += 2; + } else { + length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3]; + var endPoint = head + length + 2; + var seg = rawImageArray.slice(head, endPoint); + segments.push(seg); + head = endPoint; + } + + if (head > rawImageArray.length) { + break; + } + } + + return segments; + } + }, { + key: "decode64", + value: function decode64(input) { + var output = ''; + var chr1 = undefined; + var chr2 = undefined; + var chr3 = ''; + var enc1 = undefined; + var enc2 = undefined; + var enc3 = undefined; + var enc4 = ''; + var i = 0; + var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = + + var base64test = /[^A-Za-z0-9\+\/\=]/g; + + if (base64test.exec(input)) { + console.warn('There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\nExpect errors in decoding.'); + } + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); + + while (true) { + enc1 = this.KEY_STR.indexOf(input.charAt(i++)); + enc2 = this.KEY_STR.indexOf(input.charAt(i++)); + enc3 = this.KEY_STR.indexOf(input.charAt(i++)); + enc4 = this.KEY_STR.indexOf(input.charAt(i++)); + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + buf.push(chr1); + + if (enc3 !== 64) { + buf.push(chr2); + } + + if (enc4 !== 64) { + buf.push(chr3); + } + + chr1 = chr2 = chr3 = ''; + enc1 = enc2 = enc3 = enc4 = ''; + + if (!(i < input.length)) { + break; + } + } + + return buf; + } + }]); + + return ExifRestore; +}(); + +ExifRestore.initClass(); +/* + * contentloaded.js + * + * Author: Diego Perini (diego.perini at gmail.com) + * Summary: cross-browser wrapper for DOMContentLoaded + * Updated: 20101020 + * License: MIT + * Version: 1.2 + * + * URL: + * http://javascript.nwbox.com/ContentLoaded/ + * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE + */ +// @win window reference +// @fn function reference + +var contentLoaded = function contentLoaded(win, fn) { + var done = false; + var top = true; + var doc = win.document; + var root = doc.documentElement; + var add = doc.addEventListener ? "addEventListener" : "attachEvent"; + var rem = doc.addEventListener ? "removeEventListener" : "detachEvent"; + var pre = doc.addEventListener ? "" : "on"; + + var init = function init(e) { + if (e.type === "readystatechange" && doc.readyState !== "complete") { + return; + } + + (e.type === "load" ? win : doc)[rem](pre + e.type, init, false); + + if (!done && (done = true)) { + return fn.call(win, e.type || e); + } + }; + + var poll = function poll() { + try { + root.doScroll("left"); + } catch (e) { + setTimeout(poll, 50); + return; + } + + return init("poll"); + }; + + if (doc.readyState !== "complete") { + if (doc.createEventObject && root.doScroll) { + try { + top = !win.frameElement; + } catch (error) {} + + if (top) { + poll(); + } + } + + doc[add](pre + "DOMContentLoaded", init, false); + doc[add](pre + "readystatechange", init, false); + return win[add](pre + "load", init, false); + } +}; // As a single function to be able to write tests. + + +Dropzone._autoDiscoverFunction = function () { + if (Dropzone.autoDiscover) { + return Dropzone.discover(); + } +}; + +contentLoaded(window, Dropzone._autoDiscoverFunction); + +function __guard__(value, transform) { + return typeof value !== 'undefined' && value !== null ? transform(value) : undefined; +} + +function __guardMethod__(obj, methodName, transform) { + if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') { + return transform(obj, methodName); + } else { + return undefined; + } +} diff --git a/admin/vendors/dropzone-5.7.0/dist/dropzone.js.map b/admin/vendors/dropzone-5.7.0/dist/dropzone.js.map new file mode 100644 index 0000000000000000000000000000000000000000..1ee4b6466ca4326a43d39f916d5b54ed2798ec3d --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/dropzone.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/dropzone.js"],"names":["Emitter","event","fn","_callbacks","push","callbacks","args","callback","apply","arguments","length","i","splice","Dropzone","prototype","events","defaultOptions","url","method","withCredentials","timeout","parallelUploads","uploadMultiple","chunking","forceChunking","chunkSize","parallelChunkUploads","retryChunks","retryChunksLimit","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","headers","clickable","ignoreHiddenFiles","acceptedFiles","acceptedMimeTypes","autoProcessQueue","autoQueue","addRemoveLinks","previewsContainer","hiddenInputContainer","capture","renameFilename","renameFile","forceFallback","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictUploadCanceled","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","b","init","params","files","xhr","chunk","dzuuid","file","upload","uuid","dzchunkindex","index","dztotalfilesize","size","dzchunksize","options","dztotalchunkcount","totalChunkCount","dzchunkbyteoffset","accept","done","chunksUploaded","fallback","messageElement","element","className","getElementsByTagName","child","test","createElement","appendChild","span","textContent","innerText","getFallbackForm","resize","width","height","info","srcX","srcY","srcWidth","srcHeight","srcRatio","Math","min","trgRatio","Error","trgWidth","trgHeight","transformFile","type","match","resizeImage","previewTemplate","drop","e","classList","remove","dragstart","dragend","dragenter","add","dragover","dragleave","paste","reset","addedfile","previewElement","trim","querySelectorAll","node","name","innerHTML","filesize","_removeLink","removeFileEvent","preventDefault","stopPropagation","status","UPLOADING","confirm","removeFile","removeLink","addEventListener","removedfile","parentNode","removeChild","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","alt","src","setTimeout","error","message","errormultiple","processing","processingmultiple","uploadprogress","progress","bytesSent","nodeName","value","style","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","emit","canceledmultiple","complete","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","_thumbnailQueue","_processingThumbnail","target","objects","object","key","val","el","left","version","replace","clickableElements","listeners","document","querySelector","nodeType","dropzone","instances","elementOptions","optionsForElement","extend","isBrowserSupported","call","getAttribute","toUpperCase","getExistingFallback","getElement","getElements","filter","accepted","map","getFilesWithStatus","QUEUED","ADDED","tagName","setAttribute","contains","setupHiddenFileInput","hiddenFileInput","visibility","position","top","addFile","URL","window","webkitURL","eventName","on","updateTotalUploadProgress","getAddedFiles","getUploadingFiles","getQueuedFiles","noPropagation","returnValue","efct","dataTransfer","effectAllowed","dropEffect","forEach","clickableElement","evt","elementInside","click","enable","disable","removeAllFiles","undefined","indexOf","totalUploadProgress","totalBytesSent","totalBytes","activeFiles","getActiveFiles","total","n","existingFallback","form","fieldsString","_getParamName","fields","getFallback","elements","elementListeners","result","listener","removeEventListener","removeEventListeners","disabled","cancelUpload","setupEventListeners","selectedSize","selectedUnit","units","unit","cutoff","pow","round","getAcceptedFiles","items","webkitGetAsEntry","_addFilesFromItems","handleFiles","__guard__","clipboardData","x","item","entry","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","createReader","errorHandler","__guardMethod__","console","o","log","readEntries","entries","substring","fullPath","isValidFile","uuidv4","filename","_renameFile","chunked","ceil","_enqueueThumbnail","_errorProcessing","enqueueFile","processQueue","_processThumbnailQueue","shift","createThumbnail","without","cancelIfNecessary","slice","canvas","resizedDataURL","toDataURL","ExifRestore","restore","dataURL","dataURItoBlob","fixOrientation","fileReader","FileReader","onload","createThumbnailFromUrl","readAsDataURL","crossOrigin","img","loadExif","EXIF","getData","getTag","orientation","resizeInfo","ctx","getContext","translate","scale","rotate","PI","drawImageIOSFix","trgX","trgY","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","groupedFiles","_getFilesWithXhr","groupedFile","CANCELED","abort","option","_transformFiles","transformedFiles","transformedFile","startedChunkCount","chunks","handleNextChunk","chunkIndex","start","end","dataBlock","data","webkitSlice","retries","_uploadData","finishedChunkUpload","allFinished","SUCCESS","_finished","dataBlocks","XMLHttpRequest","resolveOption","open","_finishedUploading","ontimeout","_handleUploadError","progressObj","onprogress","_updateFilesUploadProgress","headerName","headerValue","setRequestHeader","formData","FormData","additionalParams","_getChunk","append","_addFormElementData","submitRequest","doneCounter","input","inputName","inputType","toLowerCase","hasAttribute","selected","checked","loaded","fileProgress","fileTotal","fileBytesSent","allFilesFinished","response","readyState","responseType","responseText","getResponseHeader","JSON","parse","warn","send","ERROR","c","r","random","v","toString","initClass","camelize","forElement","autoDiscover","discover","dropzones","checkElements","blacklistedBrowsers","capableBrowser","File","FileList","Blob","regex","navigator","userAgent","dataURI","byteString","atob","split","mimeString","ab","ArrayBuffer","ia","Uint8Array","asc","charCodeAt","list","rejectedItem","str","charAt","string","div","childNodes","container","els","Array","question","rejected","mimeType","baseMimeType","validType","jQuery","each","module","exports","ACCEPTED","PROCESSING","detectVerticalSquash","iw","naturalWidth","ih","naturalHeight","drawImage","getImageData","sy","ey","py","alpha","ratio","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","KEY_STR","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","isNaN","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","aBuffer","seg","imageData","buf","separatePoint","mae","ato","array","concat","rawImageArray","head","endPoint","base64test","exec","contentLoaded","win","doc","root","documentElement","rem","pre","poll","doScroll","createEventObject","frameElement","_autoDiscoverFunction","transform","obj","methodName"],"mappings":"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","sourcesContent":["/*\n *\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\n *\n * Copyright (c) 2012, Matias Meno\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\n\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nclass Emitter {\n // Add an event listener for given event\n on(event, fn) {\n this._callbacks = this._callbacks || {};\n // Create namespace for this event\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n this._callbacks[event].push(fn);\n return this;\n }\n\n\n emit(event, ...args) {\n this._callbacks = this._callbacks || {};\n let callbacks = this._callbacks[event];\n\n if (callbacks) {\n for (let callback of callbacks) {\n callback.apply(this, args);\n }\n }\n\n return this;\n }\n\n // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n off(event, fn) {\n if (!this._callbacks || (arguments.length === 0)) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n let callbacks = this._callbacks[event];\n if (!callbacks) {\n return this;\n }\n\n // remove all handlers\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n for (let i = 0; i < callbacks.length; i++) {\n let callback = callbacks[i];\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n}\n\nclass Dropzone extends Emitter {\n static initClass() {\n\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n\n /*\n This is a list of all available events you can register on a dropzone object.\n\n You can register an event handler like this:\n\n dropzone.on(\"dragEnter\", function() { });\n\n */\n this.prototype.events = [\n \"drop\",\n \"dragstart\",\n \"dragend\",\n \"dragenter\",\n \"dragover\",\n \"dragleave\",\n \"addedfile\",\n \"addedfiles\",\n \"removedfile\",\n \"thumbnail\",\n \"error\",\n \"errormultiple\",\n \"processing\",\n \"processingmultiple\",\n \"uploadprogress\",\n \"totaluploadprogress\",\n \"sending\",\n \"sendingmultiple\",\n \"success\",\n \"successmultiple\",\n \"canceled\",\n \"canceledmultiple\",\n \"complete\",\n \"completemultiple\",\n \"reset\",\n \"maxfilesexceeded\",\n \"maxfilesreached\",\n \"queuecomplete\"\n ];\n\n\n this.prototype.defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n */\n timeout: 30000,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads* documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual feedback.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: 'crop',\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: 'contain',\n\n /**\n * The base that is used to calculate the filesize. You can change this to\n * 1024 if you would rather display kibibytes, mebibytes, etc...\n * 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte` not `1 kilobyte`.\n * You can change this to `1024` if you don't care about validity.\n */\n filesizeBase: 1000,\n\n /**\n * Can be used to limit the maximum number of files that will be handled by this Dropzone\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: {tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\"},\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function(file, done) { done(); },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback() {\n // This code should pass in IE7... :(\n let messageElement;\n this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n for (let child of this.element.getElementsByTagName(\"div\")) {\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n break;\n }\n }\n if (!messageElement) {\n messageElement = Dropzone.createElement(\"<div class=\\\"dz-message\\\"><span></span></div>\");\n this.element.appendChild(messageElement);\n }\n\n let span = messageElement.getElementsByTagName(\"span\")[0];\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize(file, width, height, resizeMethod) {\n let info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n\n let srcRatio = file.width / file.height;\n\n // Automatically calculate dimensions if not specified\n if ((width == null) && (height == null)) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if ((width == null)) {\n width = height * srcRatio;\n } else if ((height == null)) {\n height = width / srcRatio;\n }\n\n // Make sure images aren't upscaled\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n\n let trgRatio = width / height;\n\n if ((info.srcWidth > width) || (info.srcHeight > height)) {\n // Image is bigger and needs rescaling\n if (resizeMethod === 'crop') {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === 'contain') {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n\n info.trgWidth = width;\n info.trgHeight = height;\n\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: `\\\n<div class=\"dz-preview dz-file-preview\">\n <div class=\"dz-image\"><img data-dz-thumbnail /></div>\n <div class=\"dz-details\">\n <div class=\"dz-size\"><span data-dz-size></span></div>\n <div class=\"dz-filename\"><span data-dz-name></span></div>\n </div>\n <div class=\"dz-progress\"><span class=\"dz-upload\" data-dz-uploadprogress></span></div>\n <div class=\"dz-error-message\"><span data-dz-errormessage></span></div>\n <div class=\"dz-success-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n <title>Check</title>\n <defs></defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n <path d=\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" stroke-opacity=\"0.198794158\" stroke=\"#747474\" fill-opacity=\"0.816519475\" fill=\"#FFFFFF\" sketch:type=\"MSShapeGroup\"></path>\n </g>\n </svg>\n </div>\n <div class=\"dz-error-mark\">\n <svg width=\"54px\" height=\"54px\" viewBox=\"0 0 54 54\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n <title>Error</title>\n <defs></defs>\n <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n <g id=\"Check-+-Oval-2\" sketch:type=\"MSLayerGroup\" stroke=\"#747474\" stroke-opacity=\"0.198794158\" fill=\"#FFFFFF\" fill-opacity=\"0.816519475\">\n <path d=\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\" id=\"Oval-2\" sketch:type=\"MSShapeGroup\"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>\\\n`,\n\n // END OPTIONS\n // (Required by the dropzone documentation parser)\n\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n\n\n\n\n // Those are self explanatory and simply concern the DragnDrop.\n drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart(e) {\n },\n dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n\n paste(e) {\n },\n\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n\n // Called when a file is added to the queue\n // Receives `file`\n addedfile(file) {\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n node.textContent = file.name;\n }\n for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n node.innerHTML = this.filesize(file.size);\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(`<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`);\n file.previewElement.appendChild(file._removeLink);\n }\n\n let removeFileEvent = e => {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(this.options.dictCancelUploadConfirmation, () => this.removeFile(file));\n } else {\n if (this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(this.options.dictRemoveFileConfirmation, () => this.removeFile(file));\n } else {\n return this.removeFile(file);\n }\n }\n };\n\n for (let removeLink of file.previewElement.querySelectorAll(\"[data-dz-remove]\")) {\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n }\n },\n\n\n // Called whenever a file is removed.\n removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n return this._updateMaxFilesReachedClass();\n },\n\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n for (let thumbnailElement of file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\")) {\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n\n return setTimeout((() => file.previewElement.classList.add(\"dz-image-preview\")), 1);\n }\n },\n\n // Called whenever an error occurs\n // Receives `file` and `message`\n error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if ((typeof message !== \"String\") && message.error) {\n message = message.error;\n }\n for (let node of file.previewElement.querySelectorAll(\"[data-dz-errormessage]\")) {\n node.textContent = message;\n }\n }\n },\n\n errormultiple() {\n },\n\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n\n processingmultiple() {\n },\n\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n for (let node of file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\")) {\n node.nodeName === 'PROGRESS' ?\n (node.value = progress)\n :\n (node.style.width = `${progress}%`)\n }\n }\n },\n\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress() {\n },\n\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending() {\n },\n\n sendingmultiple() {},\n\n // When the complete upload is finished and successful\n // Receives `file`\n success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n\n successmultiple() {},\n\n // When the upload is canceled.\n canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n\n canceledmultiple() {},\n\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n\n completemultiple() {},\n\n maxfilesexceeded() {},\n\n maxfilesreached() {},\n\n queuecomplete() {},\n\n addedfiles() {}\n };\n\n\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n\n // global utility\n static extend(target, ...objects) {\n for (let object of objects) {\n for (let key in object) {\n let val = object[key];\n target[key] = val;\n }\n }\n return target;\n }\n\n constructor(el, options) {\n super();\n let fallback, left;\n this.element = el;\n // For backwards compatibility since the version was in the prototype previously\n this.version = Dropzone.version;\n\n this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\n\n this.clickableElements = [];\n this.listeners = [];\n this.files = []; // All files\n\n if (typeof this.element === \"string\") {\n this.element = document.querySelector(this.element);\n }\n\n // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n if (!this.element || (this.element.nodeType == null)) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n }\n\n // Now add this dropzone to the instances.\n Dropzone.instances.push(this);\n\n // Put the dropzone inside the element itself.\n this.element.dropzone = this;\n\n let elementOptions = (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n this.options = Dropzone.extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\n\n // If the browser failed, just call the fallback and leave\n if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return this.options.fallback.call(this);\n }\n\n // @options.url = @element.getAttribute \"action\" unless @options.url?\n if (this.options.url == null) {\n this.options.url = this.element.getAttribute(\"action\");\n }\n\n if (!this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (this.options.uploadMultiple && this.options.chunking) {\n throw new Error('You cannot set both: uploadMultiple and chunking.');\n }\n\n // Backwards compatibility\n if (this.options.acceptedMimeTypes) {\n this.options.acceptedFiles = this.options.acceptedMimeTypes;\n delete this.options.acceptedMimeTypes;\n }\n\n // Backwards compatibility\n if (this.options.renameFilename != null) {\n this.options.renameFile = file => this.options.renameFilename.call(this, file.name, file);\n }\n\n this.options.method = this.options.method.toUpperCase();\n\n if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n }\n\n // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n if (this.options.previewsContainer !== false) {\n if (this.options.previewsContainer) {\n this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\n } else {\n this.previewsContainer = this.element;\n }\n }\n\n if (this.options.clickable) {\n if (this.options.clickable === true) {\n this.clickableElements = [this.element];\n } else {\n this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\n }\n }\n\n\n this.init();\n }\n\n\n // Returns all files that have been accepted\n getAcceptedFiles() {\n return this.files.filter((file) => file.accepted).map((file) => file);\n }\n\n // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n getRejectedFiles() {\n return this.files.filter((file) => !file.accepted).map((file) => file);\n }\n\n getFilesWithStatus(status) {\n return this.files.filter((file) => file.status === status).map((file) => file);\n }\n\n // Returns all files that are in the queue\n getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n\n getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n\n getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n }\n\n // Files that are either queued or uploading\n getActiveFiles() {\n return this.files.filter((file) => (file.status === Dropzone.UPLOADING) || (file.status === Dropzone.QUEUED)).map((file) => file);\n }\n\n // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n init() {\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(`<div class=\"dz-default dz-message\"><span>${this.options.dictDefaultMessage}</span></div>`));\n }\n\n if (this.clickableElements.length) {\n let setupHiddenFileInput = () => {\n if (this.hiddenFileInput) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n }\n this.hiddenFileInput = document.createElement(\"input\");\n this.hiddenFileInput.setAttribute(\"type\", \"file\");\n if ((this.options.maxFiles === null) || (this.options.maxFiles > 1)) {\n this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n this.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (this.options.acceptedFiles !== null) {\n this.hiddenFileInput.setAttribute(\"accept\", this.options.acceptedFiles);\n }\n if (this.options.capture !== null) {\n this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n }\n\n // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n this.hiddenFileInput.style.visibility = \"hidden\";\n this.hiddenFileInput.style.position = \"absolute\";\n this.hiddenFileInput.style.top = \"0\";\n this.hiddenFileInput.style.left = \"0\";\n this.hiddenFileInput.style.height = \"0\";\n this.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(this.options.hiddenInputContainer, 'hiddenInputContainer').appendChild(this.hiddenFileInput);\n return this.hiddenFileInput.addEventListener(\"change\", () => {\n let {files} = this.hiddenFileInput;\n if (files.length) {\n for (let file of files) {\n this.addFile(file);\n }\n }\n this.emit(\"addedfiles\", files);\n return setupHiddenFileInput();\n });\n };\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n\n // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n for (let eventName of this.events) {\n this.on(eventName, this.options[eventName]);\n }\n\n this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n this.on(\"canceled\", file => this.emit(\"complete\", file));\n\n // Emit a `queuecomplete` event if all files finished uploading.\n this.on(\"complete\", file => {\n if ((this.getAddedFiles().length === 0) && (this.getUploadingFiles().length === 0) && (this.getQueuedFiles().length === 0)) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout((() => this.emit(\"queuecomplete\")), 0);\n }\n });\n\n\n let noPropagation = function (e) {\n e.stopPropagation();\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n };\n\n // Create the listeners\n this.listeners = [\n {\n element: this.element,\n events: {\n \"dragstart\": e => {\n return this.emit(\"dragstart\", e);\n },\n \"dragenter\": e => {\n noPropagation(e);\n return this.emit(\"dragenter\", e);\n },\n \"dragover\": e => {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n let efct;\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {\n }\n e.dataTransfer.dropEffect = ('move' === efct) || ('linkMove' === efct) ? 'move' : 'copy';\n\n noPropagation(e);\n return this.emit(\"dragover\", e);\n },\n \"dragleave\": e => {\n return this.emit(\"dragleave\", e);\n },\n \"drop\": e => {\n noPropagation(e);\n return this.drop(e);\n },\n \"dragend\": e => {\n return this.emit(\"dragend\", e);\n }\n }\n\n // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n }\n ];\n\n this.clickableElements.forEach(clickableElement => {\n return this.listeners.push({\n element: clickableElement,\n events: {\n \"click\": evt => {\n // Only the actual dropzone or the message element should trigger file selection\n if ((clickableElement !== this.element) || ((evt.target === this.element) || Dropzone.elementInside(evt.target, this.element.querySelector(\".dz-message\")))) {\n this.hiddenFileInput.click(); // Forward the click\n }\n return true;\n }\n }\n });\n });\n\n this.enable();\n\n return this.options.init.call(this);\n }\n\n // Not fully tested yet\n destroy() {\n this.disable();\n this.removeAllFiles(true);\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n\n\n updateTotalUploadProgress() {\n let totalUploadProgress;\n let totalBytesSent = 0;\n let totalBytes = 0;\n\n let activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n for (let file of this.getActiveFiles()) {\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n }\n\n // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return `${this.options.paramName}${this.options.uploadMultiple ? `[${n}]` : \"\"}`;\n }\n }\n\n // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n return this.options.renameFile(file);\n }\n\n // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n getFallbackForm() {\n let existingFallback, form;\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n let fieldsString = \"<div class=\\\"dz-fallback\\\">\";\n if (this.options.dictFallbackText) {\n fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n }\n fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n let fields = Dropzone.createElement(fieldsString);\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(`<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`);\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n return form != null ? form : fields;\n }\n\n\n // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n getExistingFallback() {\n let getFallback = function (elements) {\n for (let el of elements) {\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n };\n\n for (let tagName of [\"div\", \"form\"]) {\n var fallback;\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n }\n\n\n // Activates all listeners stored in @listeners\n setupEventListeners() {\n return this.listeners.map((elementListeners) =>\n (() => {\n let result = [];\n for (let event in elementListeners.events) {\n let listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n return result;\n })());\n }\n\n\n // Deactivates all listeners stored in @listeners\n removeEventListeners() {\n return this.listeners.map((elementListeners) =>\n (() => {\n let result = [];\n for (let event in elementListeners.events) {\n let listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n return result;\n })());\n }\n\n // Removes all event listeners and cancels all files in the queue or being processed.\n disable() {\n this.clickableElements.forEach(element => element.classList.remove(\"dz-clickable\"));\n this.removeEventListeners();\n this.disabled = true;\n\n return this.files.map((file) => this.cancelUpload(file));\n }\n\n enable() {\n delete this.disabled;\n this.clickableElements.forEach(element => element.classList.add(\"dz-clickable\"));\n return this.setupEventListeners();\n }\n\n // Returns a nicely formatted filesize\n filesize(size) {\n let selectedSize = 0;\n let selectedUnit = \"b\";\n\n if (size > 0) {\n let units = ['tb', 'gb', 'mb', 'kb', 'b'];\n\n for (let i = 0; i < units.length; i++) {\n let unit = units[i];\n let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n }\n\n\n // Adds or removes the `dz-max-files-reached` class from the form.\n _updateMaxFilesReachedClass() {\n if ((this.options.maxFiles != null) && (this.getAcceptedFiles().length >= this.options.maxFiles)) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit('maxfilesreached', this.files);\n }\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n\n\n drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n this.emit(\"drop\", e);\n\n // Convert the FileList to an Array\n // This is necessary for IE11\n let files = [];\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n }\n\n this.emit(\"addedfiles\", files);\n\n // Even if it's a folder, files.length will contain the folders.\n if (files.length) {\n let {items} = e.dataTransfer;\n if (items && items.length && (items[0].webkitGetAsEntry != null)) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n }\n\n paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, x => x.items) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n let {items} = e.clipboardData;\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n\n\n handleFiles(files) {\n for(let file of files) {\n this.addFile(file);\n }\n }\n\n // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n _addFilesFromItems(items) {\n return (() => {\n let result = [];\n for (let item of items) {\n var entry;\n if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(this.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(this._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if ((item.kind == null) || (item.kind === \"file\")) {\n result.push(this.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n return result;\n })();\n }\n\n\n // Goes through the directory, and adds each file it finds recursively\n _addFilesFromDirectory(directory, path) {\n let dirReader = directory.createReader();\n\n let errorHandler = error => __guardMethod__(console, 'log', o => o.log(error));\n\n var readEntries = () => {\n return dirReader.readEntries(entries => {\n if (entries.length > 0) {\n for (let entry of entries) {\n if (entry.isFile) {\n entry.file(file => {\n if (this.options.ignoreHiddenFiles && (file.name.substring(0, 1) === '.')) {\n return;\n }\n file.fullPath = `${path}/${file.name}`;\n return this.addFile(file);\n });\n } else if (entry.isDirectory) {\n this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n }\n }\n\n // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n readEntries();\n }\n return null;\n }\n , errorHandler);\n };\n\n return readEntries();\n }\n\n\n // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n accept(file, done) {\n if (this.options.maxFilesize && file.size > (this.options.maxFilesize * 1024 * 1024)) {\n return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n return done(this.options.dictInvalidFileType);\n } else if ((this.options.maxFiles != null) && (this.getAcceptedFiles().length >= this.options.maxFiles)) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n return this.emit(\"maxfilesexceeded\", file);\n } else {\n return this.options.accept.call(this, file, done);\n }\n }\n\n addFile(file) {\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file),\n chunked: this.options.chunking && (this.options.forceChunking || file.size > this.options.chunkSize),\n totalChunkCount: Math.ceil(file.size / this.options.chunkSize)\n };\n this.files.push(file);\n\n file.status = Dropzone.ADDED;\n\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n return this.accept(file, error => {\n if (error) {\n file.accepted = false;\n this._errorProcessing([file], error); // Will set the file.status\n } else {\n file.accepted = true;\n if (this.options.autoQueue) {\n this.enqueueFile(file);\n } // Will set .accepted = true\n }\n return this._updateMaxFilesReachedClass();\n });\n }\n\n\n // Wrapper for enqueueFile\n enqueueFiles(files) {\n for (let file of files) {\n this.enqueueFile(file);\n }\n return null;\n }\n\n enqueueFile(file) {\n if ((file.status === Dropzone.ADDED) && (file.accepted === true)) {\n file.status = Dropzone.QUEUED;\n if (this.options.autoProcessQueue) {\n return setTimeout((() => this.processQueue()), 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n\n _enqueueThumbnail(file) {\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && (file.size <= (this.options.maxThumbnailFilesize * 1024 * 1024))) {\n this._thumbnailQueue.push(file);\n return setTimeout((() => this._processThumbnailQueue()), 0); // Deferring the call\n }\n }\n\n _processThumbnailQueue() {\n if (this._processingThumbnail || (this._thumbnailQueue.length === 0)) {\n return;\n }\n\n this._processingThumbnail = true;\n let file = this._thumbnailQueue.shift();\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, dataUrl => {\n this.emit(\"thumbnail\", file, dataUrl);\n this._processingThumbnail = false;\n return this._processThumbnailQueue();\n });\n }\n\n\n // Can be called by the user to remove a file\n removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n this.files = without(this.files, file);\n\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n }\n\n // Removes all files that aren't currently processed from the list\n removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n for (let file of this.files.slice()) {\n if ((file.status !== Dropzone.UPLOADING) || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n return null;\n }\n\n // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n resizeImage(file, width, height, resizeMethod, callback) {\n return this.createThumbnail(file, width, height, resizeMethod, true, (dataUrl, canvas) => {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n let {resizeMimeType} = this.options;\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n let resizedDataURL = canvas.toDataURL(resizeMimeType, this.options.resizeQuality);\n if ((resizeMimeType === 'image/jpeg') || (resizeMimeType === 'image/jpg')) {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n\n createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n let fileReader = new FileReader;\n\n fileReader.onload = () => {\n\n file.dataURL = fileReader.result;\n\n // Don't bother creating a thumbnail for SVG images since they're vector\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n return;\n }\n\n return this.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n return fileReader.readAsDataURL(file);\n }\n\n createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n let img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.onload = () => {\n let loadExif = callback => callback(1);\n if ((typeof EXIF !== 'undefined' && EXIF !== null) && fixOrientation) {\n loadExif = callback =>\n EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, 'Orientation'));\n })\n ;\n }\n\n return loadExif(orientation => {\n file.width = img.width;\n file.height = img.height;\n\n let resizeInfo = this.options.resize.call(this, file, width, height, resizeMethod);\n\n let canvas = document.createElement(\"canvas\");\n let ctx = canvas.getContext(\"2d\");\n\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n }\n\n // This is a bugfix for iOS' scaling bug.\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n\n let thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n }\n\n\n // Goes through the queue and processes files if there aren't too many already.\n processQueue() {\n let {parallelUploads} = this.options;\n let processingLength = this.getUploadingFiles().length;\n let i = processingLength;\n\n // There are already at least as many files uploading than should be\n if (processingLength >= parallelUploads) {\n return;\n }\n\n let queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, (parallelUploads - processingLength)));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n }\n\n\n // Wrapper for `processFiles`\n processFile(file) {\n return this.processFiles([file]);\n }\n\n\n // Loads the file, then calls finishedLoading()\n processFiles(files) {\n for (let file of files) {\n file.processing = true; // Backwards compatibility\n file.status = Dropzone.UPLOADING;\n\n this.emit(\"processing\", file);\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n\n\n _getFilesWithXhr(xhr) {\n let files;\n return files = (this.files.filter((file) => file.xhr === xhr).map((file) => file));\n }\n\n\n // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n let groupedFiles = this._getFilesWithXhr(file.xhr);\n for (let groupedFile of groupedFiles) {\n groupedFile.status = Dropzone.CANCELED;\n }\n if (typeof file.xhr !== 'undefined') {\n file.xhr.abort();\n }\n for (let groupedFile of groupedFiles) {\n this.emit(\"canceled\", groupedFile);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n resolveOption(option, ...args) {\n if (typeof option === 'function') {\n return option.apply(this, args);\n }\n return option;\n }\n\n uploadFile(file) { return this.uploadFiles([file]); }\n\n uploadFiles(files) {\n this._transformFiles(files, (transformedFiles) => {\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n let file = files[0];\n let transformedFile = transformedFiles[0];\n let startedChunkCount = 0;\n\n file.upload.chunks = [];\n\n let handleNextChunk = () => {\n let chunkIndex = 0;\n\n // Find the next item in file.upload.chunks that is not defined yet.\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n }\n\n // This means, that all chunks have already been started.\n if (chunkIndex >= file.upload.totalChunkCount) return;\n\n startedChunkCount++;\n\n let start = chunkIndex * this.options.chunkSize;\n let end = Math.min(start + this.options.chunkSize, file.size);\n\n let dataBlock = {\n name: this._getParamName(0),\n data: transformedFile.webkitSlice ? transformedFile.webkitSlice(start, end) : transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock, // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n };\n\n\n this._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = (chunk) => {\n let allFinished = true;\n chunk.status = Dropzone.SUCCESS;\n\n // Clear the data from the chunk\n chunk.dataBlock = null;\n // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n chunk.xhr = null;\n\n for (let i = 0; i < file.upload.totalChunkCount; i ++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n this.options.chunksUploaded(file, () => {\n this._finished(files, '', null);\n });\n }\n };\n\n if (this.options.parallelChunkUploads) {\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n }\n else {\n handleNextChunk();\n }\n } else {\n let dataBlocks = [];\n for (let i = 0; i < files.length; i++) {\n dataBlocks[i] = {\n name: this._getParamName(i),\n data: transformedFiles[i],\n filename: files[i].upload.filename\n };\n }\n this._uploadData(files, dataBlocks);\n }\n });\n }\n\n /// Returns the right chunk for given file and xhr\n _getChunk(file, xhr) {\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n }\n\n // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n _uploadData(files, dataBlocks) {\n let xhr = new XMLHttpRequest();\n\n // Put the xhr object in the file objects to be able to reference it later.\n for (let file of files) {\n file.xhr = xhr;\n }\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n let method = this.resolveOption(this.options.method, files);\n let url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true);\n\n // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n xhr.withCredentials = !!this.options.withCredentials;\n\n\n xhr.onload = e => {\n this._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = () => {\n this._handleUploadError(files, xhr, `Request timedout after ${this.options.timeout} seconds`);\n };\n\n xhr.onerror = () => {\n this._handleUploadError(files, xhr);\n };\n\n // Some browsers do not have the .upload property\n let progressObj = xhr.upload != null ? xhr.upload : xhr;\n progressObj.onprogress = (e) => this._updateFilesUploadProgress(files, xhr, e);\n\n let headers = {\n \"Accept\": \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (let headerName in headers) {\n let headerValue = headers[headerName];\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n let formData = new FormData();\n\n // Adding all @options parameters\n if (this.options.params) {\n let additionalParams = this.options.params;\n if (typeof additionalParams === 'function') {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (let key in additionalParams) {\n let value = additionalParams[key];\n formData.append(key, value);\n }\n }\n\n // Let the user add additional data if necessary\n for (let file of files) {\n this.emit(\"sending\", file, xhr, formData);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n\n this._addFormElementData(formData);\n\n\n // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n for (let i = 0; i < dataBlocks.length; i++) {\n let dataBlock = dataBlocks[i];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n }\n\n\n // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n _transformFiles(files, done) {\n let transformedFiles = [];\n // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n let doneCounter = 0;\n for (let i = 0; i < files.length; i++) {\n this.options.transformFile.call(this, files[i], (transformedFile) => {\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n }\n }\n\n // Takes care of adding other input elements of the form to the AJAX request\n _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n for (let input of this.element.querySelectorAll(\"input, textarea, select, button\")) {\n let inputName = input.getAttribute(\"name\");\n let inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase();\n\n // If the input doesn't have a name, we can't use it.\n if (typeof inputName === 'undefined' || inputName === null) continue;\n\n if ((input.tagName === \"SELECT\") && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n for (let option of input.options) {\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } else if (!inputType || (inputType !== \"checkbox\" && inputType !== \"radio\") || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n }\n }\n\n // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n _updateFilesUploadProgress(files, xhr, e) {\n let progress;\n if (typeof e !== 'undefined') {\n progress = (100 * e.loaded) / e.total;\n\n if (files[0].upload.chunked) {\n let file = files[0];\n // Since this is a chunked upload, we need to update the appropriate chunk progress.\n let chunk = this._getChunk(file, xhr);\n chunk.progress = progress;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n let fileProgress = 0, fileTotal, fileBytesSent;\n file.upload.progress = 0;\n file.upload.total = 0;\n file.upload.bytesSent = 0;\n for (let i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].progress !== undefined) {\n file.upload.progress += file.upload.chunks[i].progress;\n file.upload.total += file.upload.chunks[i].total;\n file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n }\n }\n file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n } else {\n for (let file of files) {\n file.upload.progress = progress;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n }\n }\n for (let file of files) {\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n } else {\n // Called when the file finished uploading\n\n let allFilesFinished = true;\n\n progress = 100;\n\n for (let file of files) {\n if ((file.upload.progress !== 100) || (file.upload.bytesSent !== file.upload.total)) {\n allFilesFinished = false;\n }\n file.upload.progress = progress;\n file.upload.bytesSent = file.upload.total;\n }\n\n // Nothing to do, all files already at 100%\n if (allFilesFinished) {\n return;\n }\n\n for (let file of files) {\n this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent);\n }\n }\n\n }\n\n\n _finishedUploading(files, xhr, e) {\n let response;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if ((xhr.responseType !== 'arraybuffer') && (xhr.responseType !== 'blob')) {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr));\n } else {\n this._finished(files, response, e);\n }\n }\n }\n\n _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n let chunk = this._getChunk(files[0], xhr);\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n return;\n } else {\n console.warn('Retried this chunk too often. Giving up.')\n }\n }\n\n for (let file of files) {\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }\n\n submitRequest(xhr, formData, files) {\n xhr.send(formData);\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _finished(files, responseText, e) {\n for (let file of files) {\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n _errorProcessing(files, message, xhr) {\n for (let file of files) {\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n\n static uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n let r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n}\nDropzone.initClass();\n\n\nDropzone.version = \"5.5.0\";\n\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n};\n\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n return element.dropzone;\n};\n\n\n// Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\nDropzone.autoDiscover = true;\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n let dropzones;\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = [];\n // IE :(\n let checkElements = elements =>\n (() => {\n let result = [];\n for (let el of elements) {\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n return result;\n })()\n ;\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return (() => {\n let result = [];\n for (let dropzone of dropzones) {\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n return result;\n })();\n};\n\n\n// Since the whole Drag'n'Drop API is pretty new, some browsers implement it,\n// but not correctly.\n// So I created a blacklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n//\nDropzone.blacklistedBrowsers = [\n // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n /opera.*(Macintosh|Windows Phone).*version\\/12/i\n];\n\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n let capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n // The browser supports the API, but may be blacklisted.\n for (let regex of Dropzone.blacklistedBrowsers) {\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n let byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n let ab = new ArrayBuffer(byteString.length);\n let ia = new Uint8Array(ab);\n for (let i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob\n return new Blob([ab], {type: mimeString});\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) => list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = str => str.replace(/[\\-_](\\w)/g, match => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n let div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n while ((element = element.parentNode)) {\n if (element === container) {\n return true;\n }\n }\n return false;\n};\n\n\nDropzone.getElement = function (el, name) {\n let element;\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n if (element == null) {\n throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`);\n }\n return element;\n};\n\n\nDropzone.getElements = function (els, name) {\n let el, elements;\n if (els instanceof Array) {\n elements = [];\n try {\n for (el of els) {\n elements.push(this.getElement(el, name));\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n for (el of document.querySelectorAll(els)) {\n elements.push(el);\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if ((elements == null) || !elements.length) {\n throw new Error(`Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`);\n }\n\n return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n acceptedFiles = acceptedFiles.split(\",\");\n\n let mimeType = file.type;\n let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n for (let validType of acceptedFiles) {\n validType = validType.trim();\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== 'undefined' && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n}\n\n\nif (typeof module !== 'undefined' && module !== null) {\n module.exports = Dropzone;\n} else {\n window.Dropzone = Dropzone;\n}\n\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n let iw = img.naturalWidth;\n let ih = img.naturalHeight;\n let canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n let ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n let {data} = ctx.getImageData(1, 0, 1, ih);\n\n\n // search image edge pixel position in case it is squashed vertically.\n let sy = 0;\n let ey = ih;\n let py = ih;\n while (py > sy) {\n let alpha = data[((py - 1) * 4) + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = (ey + sy) >> 1;\n }\n let ratio = (py / ih);\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n let vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n static initClass() {\n this.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n }\n\n static encode64(input) {\n let output = '';\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = '';\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = '';\n let i = 0;\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = (enc4 = 64);\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = (chr2 = (chr3 = ''));\n enc1 = (enc2 = (enc3 = (enc4 = '')));\n if (!(i < input.length)) {\n break;\n }\n }\n return output;\n }\n\n static restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match('data:image/jpeg;base64,')) {\n return resizedFileBase64;\n }\n let rawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));\n let segments = this.slice2Segments(rawImage);\n let image = this.exifManipulation(resizedFileBase64, segments);\n return `data:image/jpeg;base64,${this.encode64(image)}`;\n }\n\n static exifManipulation(resizedFileBase64, segments) {\n let exifArray = this.getExifArray(segments);\n let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n let aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n\n static getExifArray(segments) {\n let seg = undefined;\n let x = 0;\n while (x < segments.length) {\n seg = segments[x];\n if ((seg[0] === 255) & (seg[1] === 225)) {\n return seg;\n }\n x++;\n }\n return [];\n }\n\n static insertExif(resizedFileBase64, exifArray) {\n let imageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');\n let buf = this.decode64(imageData);\n let separatePoint = buf.indexOf(255, 3);\n let mae = buf.slice(0, separatePoint);\n let ato = buf.slice(separatePoint);\n let array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n\n static slice2Segments(rawImageArray) {\n let head = 0;\n let segments = [];\n while (true) {\n var length;\n if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n break;\n }\n if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n head += 2;\n } else {\n length = (rawImageArray[head + 2] * 256) + rawImageArray[head + 3];\n let endPoint = head + length + 2;\n let seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) {\n break;\n }\n }\n return segments;\n }\n\n static decode64(input) {\n let output = '';\n let chr1 = undefined;\n let chr2 = undefined;\n let chr3 = '';\n let enc1 = undefined;\n let enc2 = undefined;\n let enc3 = undefined;\n let enc4 = '';\n let i = 0;\n let buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) {\n console.warn('There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, \\'+\\', \\'/\\',and \\'=\\'\\nExpect errors in decoding.');\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n buf.push(chr1);\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n chr1 = (chr2 = (chr3 = ''));\n enc1 = (enc2 = (enc3 = (enc4 = '')));\n if (!(i < input.length)) {\n break;\n }\n }\n return buf;\n }\n}\nExifRestore.initClass();\n\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n let done = false;\n let top = true;\n let doc = win.document;\n let root = doc.documentElement;\n let add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\n let rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\n let pre = (doc.addEventListener ? \"\" : \"on\");\n var init = function (e) {\n if ((e.type === \"readystatechange\") && (doc.readyState !== \"complete\")) {\n return;\n }\n ((e.type === \"load\" ? win : doc))[rem](pre + e.type, init, false);\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function () {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {\n }\n if (top) {\n poll();\n }\n }\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\n\n\n// As a single function to be able to write tests.\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return (typeof value !== 'undefined' && value !== null) ? transform(value) : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== 'undefined' && obj !== null && typeof obj[methodName] === 'function') {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}"],"file":"dropzone.js"} \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/dist/min/basic.min.css b/admin/vendors/dropzone-5.7.0/dist/min/basic.min.css new file mode 100644 index 0000000000000000000000000000000000000000..5238d5cae5c590afce745efdd16aa1780276b765 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/min/basic.min.css @@ -0,0 +1 @@ +.dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:0.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px} diff --git a/admin/vendors/dropzone-5.7.0/dist/min/dropzone-amd-module.min.js b/admin/vendors/dropzone-5.7.0/dist/min/dropzone-amd-module.min.js new file mode 100644 index 0000000000000000000000000000000000000000..6aec051b8ae3732a496e7d2969e361aa14790d63 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/min/dropzone-amd-module.min.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}(function(e){var t={exports:{}};function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?s(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function s(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function o(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}var c=function(){function e(){u(this,e)}return o(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var o=!0,a=!1,l=void 0;try{for(var s,u=t[Symbol.iterator]();!(o=(s=u.next()).done);o=!0){s.value.apply(this,i)}}catch(e){a=!0,l=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw l}}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var i=0;i<n.length;i++){if(n[i]===t){n.splice(i,1);break}}return this}}]),e}(),d=function(){function z(e,t){var n,i,r;if(u(this,z),(n=a(this,l(z).call(this))).element=e,n.version=z.version,n.defaultOptions.previewTemplate=n.defaultOptions.previewTemplate.replace(/\n*/g,""),n.clickableElements=[],n.listeners=[],n.files=[],"string"==typeof n.element&&(n.element=document.querySelector(n.element)),!n.element||null==n.element.nodeType)throw new Error("Invalid dropzone element.");if(n.element.dropzone)throw new Error("Dropzone already attached.");z.instances.push(s(n)),n.element.dropzone=s(n);var o=null!=(r=z.optionsForElement(n.element))?r:{};if(n.options=z.extend({},n.defaultOptions,o,null!=t?t:{}),n.options.forceFallback||!z.isBrowserSupported())return a(n,n.options.fallback.call(s(n)));if(null==n.options.url&&(n.options.url=n.element.getAttribute("action")),!n.options.url)throw new Error("No URL provided.");if(n.options.acceptedFiles&&n.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(n.options.uploadMultiple&&n.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return n.options.acceptedMimeTypes&&(n.options.acceptedFiles=n.options.acceptedMimeTypes,delete n.options.acceptedMimeTypes),null!=n.options.renameFilename&&(n.options.renameFile=function(e){return n.options.renameFilename.call(s(n),e.name,e)}),n.options.method=n.options.method.toUpperCase(),(i=n.getExistingFallback())&&i.parentNode&&i.parentNode.removeChild(i),!1!==n.options.previewsContainer&&(n.options.previewsContainer?n.previewsContainer=z.getElement(n.options.previewsContainer,"previewsContainer"):n.previewsContainer=n.element),n.options.clickable&&(!0===n.options.clickable?n.clickableElements=[n.element]:n.clickableElements=z.getElements(n.options.clickable,"clickable")),n.init(),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(z,c),o(z,null,[{key:"initClass",value:function(){this.prototype.Emitter=c,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,n){if(n)return{dzuuid:n.file.upload.uuid,dzchunkindex:n.index,dztotalfilesize:n.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:n.file.upload.totalChunkCount,dzchunkbyteoffset:n.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e;this.element.className="".concat(this.element.className," dz-browser-not-supported");var t=!0,n=!1,i=void 0;try{for(var r,o=this.element.getElementsByTagName("div")[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;if(/(^| )dz-message($| )/.test(a.className)){(e=a).className="dz-message";break}}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}e||(e=z.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var l=e.getElementsByTagName("span")[0];return l&&(null!=l.textContent?l.textContent=this.options.dictFallbackMessage:null!=l.innerText&&(l.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,i){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=r.srcWidth,n=r.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var a=(t=Math.min(t,r.srcWidth))/(n=Math.min(n,r.srcHeight));if(r.srcWidth>t||r.srcHeight>n)if("crop"===i)a<o?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*a):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/a);else{if("contain"!==i)throw new Error("Unknown resizeMethod '".concat(i,"'"));a<o?n=t/o:t=n*o}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=n,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Check</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Error</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',drop:function(){return this.element.classList.remove("dz-drag-hover")},dragstart:function(){},dragend:function(){return this.element.classList.remove("dz-drag-hover")},dragenter:function(){return this.element.classList.add("dz-drag-hover")},dragover:function(){return this.element.classList.add("dz-drag-hover")},dragleave:function(){return this.element.classList.remove("dz-drag-hover")},paste:function(){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(t){var n=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){t.previewElement=z.createElement(this.options.previewTemplate.trim()),t.previewTemplate=t.previewElement,this.previewsContainer.appendChild(t.previewElement);var e=!0,i=!1,r=void 0;try{for(var o,a=t.previewElement.querySelectorAll("[data-dz-name]")[Symbol.iterator]();!(e=(o=a.next()).done);e=!0){var l=o.value;l.textContent=t.name}}catch(e){i=!0,r=e}finally{try{e||null==a.return||a.return()}finally{if(i)throw r}}var s=!0,u=!1,c=void 0;try{for(var d,h=t.previewElement.querySelectorAll("[data-dz-size]")[Symbol.iterator]();!(s=(d=h.next()).done);s=!0)(l=d.value).innerHTML=this.filesize(t.size)}catch(e){u=!0,c=e}finally{try{s||null==h.return||h.return()}finally{if(u)throw c}}this.options.addRemoveLinks&&(t._removeLink=z.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile,"</a>")),t.previewElement.appendChild(t._removeLink));function p(e){return e.preventDefault(),e.stopPropagation(),t.status===z.UPLOADING?z.confirm(n.options.dictCancelUploadConfirmation,function(){return n.removeFile(t)}):n.options.dictRemoveFileConfirmation?z.confirm(n.options.dictRemoveFileConfirmation,function(){return n.removeFile(t)}):n.removeFile(t)}var f=!0,v=!1,m=void 0;try{for(var y,g=t.previewElement.querySelectorAll("[data-dz-remove]")[Symbol.iterator]();!(f=(y=g.next()).done);f=!0){y.value.addEventListener("click",p)}}catch(e){v=!0,m=e}finally{try{f||null==g.return||g.return()}finally{if(v)throw m}}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-thumbnail]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var l=o.value;l.alt=e.name,l.src=t}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"String"!=typeof t&&t.error&&(t=t.error);var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-errormessage]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){o.value.textContent=t}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t){if(e.previewElement){var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-uploadprogress]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var l=o.value;"PROGRESS"===l.nodeName?l.value=t:l.style.width="".concat(t,"%")}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var r=0,o=n;r<o.length;r++){var a=o[r];for(var l in a){var s=a[l];e[l]=s}}return e}}]),o(z,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(t){return this.files.filter(function(e){return e.status===t}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(z.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(z.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(z.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===z.UPLOADING||e.status===z.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var s=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(z.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage,"</button></div>"))),this.clickableElements.length){!function l(){return s.hiddenFileInput&&s.hiddenFileInput.parentNode.removeChild(s.hiddenFileInput),s.hiddenFileInput=document.createElement("input"),s.hiddenFileInput.setAttribute("type","file"),(null===s.options.maxFiles||1<s.options.maxFiles)&&s.hiddenFileInput.setAttribute("multiple","multiple"),s.hiddenFileInput.className="dz-hidden-input",null!==s.options.acceptedFiles&&s.hiddenFileInput.setAttribute("accept",s.options.acceptedFiles),null!==s.options.capture&&s.hiddenFileInput.setAttribute("capture",s.options.capture),s.hiddenFileInput.style.visibility="hidden",s.hiddenFileInput.style.position="absolute",s.hiddenFileInput.style.top="0",s.hiddenFileInput.style.left="0",s.hiddenFileInput.style.height="0",s.hiddenFileInput.style.width="0",z.getElement(s.options.hiddenInputContainer,"hiddenInputContainer").appendChild(s.hiddenFileInput),s.hiddenFileInput.addEventListener("change",function(){var e=s.hiddenFileInput.files;if(e.length){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;s.addFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}return s.emit("addedfiles",e),l()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;var e=!0,t=!1,n=void 0;try{for(var i,r=this.events[Symbol.iterator]();!(e=(i=r.next()).done);e=!0){var o=i.value;this.on(o,this.options[o])}}catch(e){t=!0,n=e}finally{try{e||null==r.return||r.return()}finally{if(t)throw n}}this.on("uploadprogress",function(){return s.updateTotalUploadProgress()}),this.on("removedfile",function(){return s.updateTotalUploadProgress()}),this.on("canceled",function(e){return s.emit("complete",e)}),this.on("complete",function(e){if(0===s.getAddedFiles().length&&0===s.getUploadingFiles().length&&0===s.getQueuedFiles().length)return setTimeout(function(){return s.emit("queuecomplete")},0)});function a(e){var t;return(t=e).dataTransfer.types&&t.dataTransfer.types.some(function(e){return"Files"==e})&&(e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1)}return this.listeners=[{element:this.element,events:{dragstart:function(e){return s.emit("dragstart",e)},dragenter:function(e){return a(e),s.emit("dragenter",e)},dragover:function(e){var t;try{t=e.dataTransfer.effectAllowed}catch(e){}return e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy",a(e),s.emit("dragover",e)},dragleave:function(e){return s.emit("dragleave",e)},drop:function(e){return a(e),s.drop(e)},dragend:function(e){return s.emit("dragend",e)}}}],this.clickableElements.forEach(function(t){return s.listeners.push({element:t,events:{click:function(e){return t===s.element&&e.target!==s.element&&!z.elementInside(e.target,s.element.querySelector(".dz-message"))||s.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),null!=this.hiddenFileInput&&this.hiddenFileInput.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,z.instances.splice(z.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e,t=0,n=0;if(this.getActiveFiles().length){var i=!0,r=!1,o=void 0;try{for(var a,l=this.getActiveFiles()[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;t+=s.upload.bytesSent,n+=s.upload.total}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}e=100*t/n}else e=100;return this.emit("totaluploadprogress",e,n,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):"".concat(this.options.paramName).concat(this.options.uploadMultiple?"[".concat(e,"]"):"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,t;if(e=this.getExistingFallback())return e;var n='<div class="dz-fallback">';this.options.dictFallbackText&&(n+="<p>".concat(this.options.dictFallbackText,"</p>")),n+='<input type="file" name="'.concat(this._getParamName(0),'" ').concat(this.options.uploadMultiple?'multiple="multiple"':void 0,' /><input type="submit" value="Upload!"></div>');var i=z.createElement(n);return"FORM"!==this.element.tagName?(t=z.createElement('<form action="'.concat(this.options.url,'" enctype="multipart/form-data" method="').concat(this.options.method,'"></form>'))).appendChild(i):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:i}},{key:"getExistingFallback",value:function(){function e(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;if(/(^| )fallback($| )/.test(a.className))return a}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}for(var t=0,n=["div","form"];t<n.length;t++){var i,r=n[t];if(i=e(this.element.getElementsByTagName(r)))return i}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.addEventListener(t,n,!1))}return e}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.removeEventListener(t,n,!1))}return e}()})}},{key:"disable",value:function(){var t=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(e){return t.cancelUpload(e)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,n="b";if(0<e){for(var i=["tb","gb","mb","kb","b"],r=0;r<i.length;r++){var o=i[r];if(Math.pow(this.options.filesizeBase,4-r)/10<=e){t=e/Math.pow(this.options.filesizeBase,4-r),n=o;break}}t=Math.round(10*t)/10}return"<strong>".concat(t,"</strong> ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n<e.dataTransfer.files.length;n++)t[n]=e.dataTransfer.files[n];if(t.length){var i=e.dataTransfer.items;i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(t)}this.emit("addedfiles",t)}}},{key:"paste",value:function(e){if(null!=(t=null!=e?e.clipboardData:void 0,n=function(e){return e.items},null!=t?n(t):void 0)){var t,n;this.emit("paste",e);var i=e.clipboardData.items;return i.length?this._addFilesFromItems(i):void 0}}},{key:"handleFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;this.addFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}},{key:"_addFilesFromItems",value:function(s){var u=this;return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=s[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a,l=r.value;null!=l.webkitGetAsEntry&&(a=l.webkitGetAsEntry())?a.isFile?e.push(u.addFile(l.getAsFile())):a.isDirectory?e.push(u._addFilesFromDirectory(a,a.name)):e.push(void 0):null!=l.getAsFile&&(null==l.kind||"file"===l.kind)?e.push(u.addFile(l.getAsFile())):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()}},{key:"_addFilesFromDirectory",value:function(e,s){function t(t){return e=console,n="log",i=function(e){return e.log(t)},null!=e&&"function"==typeof e[n]?i(e,n):void 0;var e,n,i}var u=this,n=e.createReader();return function l(){return n.readEntries(function(e){if(0<e.length){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.isFile?a.file(function(e){if(!u.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(s,"/").concat(e.name),u.addFile(e)}):a.isDirectory&&u._addFilesFromDirectory(a,"".concat(s,"/").concat(a.name))}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}l()}return null},t)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):z.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(t){var n=this;t.upload={uuid:z.uuidv4(),progress:0,total:t.size,bytesSent:0,filename:this._renameFile(t)},this.files.push(t),t.status=z.ADDED,this.emit("addedfile",t),this._enqueueThumbnail(t),this.accept(t,function(e){e?(t.accepted=!1,n._errorProcessing([t],e)):(t.accepted=!0,n.options.autoQueue&&n.enqueueFile(t)),n._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;this.enqueueFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==z.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=z.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var t=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var n=this._thumbnailQueue.shift();return this.createThumbnail(n,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(e){return t.emit("thumbnail",n,e),t._processingThumbnail=!1,t._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===z.UPLOADING&&this.cancelUpload(e),this.files=h(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t=!0,n=!1,i=void 0;try{for(var r,o=this.files.slice()[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.status===z.UPLOADING&&!e||this.removeFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return null}},{key:"resizeImage",value:function(r,e,t,n,o){var a=this;return this.createThumbnail(r,e,t,n,!0,function(e,t){if(null==t)return o(r);var n=a.options.resizeMimeType;null==n&&(n=r.type);var i=t.toDataURL(n,a.options.resizeQuality);return"image/jpeg"!==n&&"image/jpg"!==n||(i=v.restore(r.dataURL,i)),o(z.dataURItoBlob(i))})}},{key:"createThumbnail",value:function(e,t,n,i,r,o){var a=this,l=new FileReader;l.onload=function(){e.dataURL=l.result,"image/svg+xml"!==e.type?a.createThumbnailFromUrl(e,t,n,i,r,o):null!=o&&o(l.result)},l.readAsDataURL(e)}},{key:"displayExistingFile",value:function(t,e,n,i,r){var o=this,a=!(4<arguments.length&&void 0!==r)||r;if(this.emit("addedfile",t),this.emit("complete",t),a){t.dataURL=e,this.createThumbnailFromUrl(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.resizeMethod,this.options.fixOrientation,function(e){o.emit("thumbnail",t,e),n&&n()},i)}else this.emit("thumbnail",t,e),n&&n()}},{key:"createThumbnailFromUrl",value:function(o,a,l,s,t,u,e){var c=this,d=document.createElement("img");return e&&(d.crossOrigin=e),d.onload=function(){var e=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&t&&(e=function(e){return EXIF.getData(d,function(){return e(EXIF.getTag(this,"Orientation"))})}),e(function(e){o.width=d.width,o.height=d.height;var t=c.options.resize.call(c,o,a,l,s),n=document.createElement("canvas"),i=n.getContext("2d");switch(n.width=t.trgWidth,n.height=t.trgHeight,4<e&&(n.width=t.trgHeight,n.height=t.trgWidth),e){case 2:i.translate(n.width,0),i.scale(-1,1);break;case 3:i.translate(n.width,n.height),i.rotate(Math.PI);break;case 4:i.translate(0,n.height),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-n.width);break;case 7:i.rotate(.5*Math.PI),i.translate(n.height,-n.width),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-n.height,0)}f(i,d,null!=t.srcX?t.srcX:0,null!=t.srcY?t.srcY:0,t.srcWidth,t.srcHeight,null!=t.trgX?t.trgX:0,null!=t.trgY?t.trgY:0,t.trgWidth,t.trgHeight);var r=n.toDataURL("image/png");if(null!=u)return u(r,n)})},null!=u&&(d.onerror=u),d.src=o.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(e<=t)){var i=this.getQueuedFiles();if(0<i.length){if(this.options.uploadMultiple)return this.processFiles(i.slice(0,e-t));for(;n<e;){if(!i.length)return;this.processFile(i.shift()),n++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.processing=!0,a.status=z.UPLOADING,this.emit("processing",a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(t){return this.files.filter(function(e){return e.xhr===t}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===z.UPLOADING){var t=this._getFilesWithXhr(e.xhr),n=!0,i=!1,r=void 0;try{for(var o,a=t[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){o.value.status=z.CANCELED}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}void 0!==e.xhr&&e.xhr.abort();var l=!0,s=!1,u=void 0;try{for(var c,d=t[Symbol.iterator]();!(l=(c=d.next()).done);l=!0){var h=c.value;this.emit("canceled",h)}}catch(e){s=!0,u=e}finally{try{l||null==d.return||d.return()}finally{if(s)throw u}}this.options.uploadMultiple&&this.emit("canceledmultiple",t)}else e.status!==z.ADDED&&e.status!==z.QUEUED||(e.status=z.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"!=typeof e)return e;for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return e.apply(this,n)}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(s){var u=this;this._transformFiles(s,function(e){if(u.options.chunking){var t=e[0];s[0].upload.chunked=u.options.chunking&&(u.options.forceChunking||t.size>u.options.chunkSize),s[0].upload.totalChunkCount=Math.ceil(t.size/u.options.chunkSize)}if(s[0].upload.chunked){var r=s[0],o=e[0];r.upload.chunks=[];function i(){for(var e=0;void 0!==r.upload.chunks[e];)e++;if(!(e>=r.upload.totalChunkCount)){0;var t=e*u.options.chunkSize,n=Math.min(t+u.options.chunkSize,r.size),i={name:u._getParamName(0),data:o.webkitSlice?o.webkitSlice(t,n):o.slice(t,n),filename:r.upload.filename,chunkIndex:e};r.upload.chunks[e]={file:r,index:e,dataBlock:i,status:z.UPLOADING,progress:0,retries:0},u._uploadData(s,[i])}}if(r.upload.finishedChunkUpload=function(e){var t=!0;e.status=z.SUCCESS,e.dataBlock=null,e.xhr=null;for(var n=0;n<r.upload.totalChunkCount;n++){if(void 0===r.upload.chunks[n])return i();r.upload.chunks[n].status!==z.SUCCESS&&(t=!1)}t&&u.options.chunksUploaded(r,function(){u._finished(s,"",null)})},u.options.parallelChunkUploads)for(var n=0;n<r.upload.totalChunkCount;n++)i();else i()}else{for(var a=[],l=0;l<s.length;l++)a[l]={name:u._getParamName(l),data:e[l],filename:s[l].upload.filename};u._uploadData(s,a)}})}},{key:"_getChunk",value:function(e,t){for(var n=0;n<e.upload.totalChunkCount;n++)if(void 0!==e.upload.chunks[n]&&e.upload.chunks[n].xhr===t)return e.upload.chunks[n]}},{key:"_uploadData",value:function(t,e){var n=this,i=new XMLHttpRequest,r=!0,o=!1,a=void 0;try{for(var l,s=t[Symbol.iterator]();!(r=(l=s.next()).done);r=!0){l.value.xhr=i}}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}t[0].upload.chunked&&(t[0].upload.chunks[e[0].chunkIndex].xhr=i);var u=this.resolveOption(this.options.method,t),c=this.resolveOption(this.options.url,t);i.open(u,c,!0),i.timeout=this.resolveOption(this.options.timeout,t),i.withCredentials=!!this.options.withCredentials,i.onload=function(e){n._finishedUploading(t,i,e)},i.ontimeout=function(){n._handleUploadError(t,i,"Request timedout after ".concat(n.options.timeout," seconds"))},i.onerror=function(){n._handleUploadError(t,i)},(null!=i.upload?i.upload:i).onprogress=function(e){return n._updateFilesUploadProgress(t,i,e)};var d={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var h in this.options.headers&&z.extend(d,this.options.headers),d){var p=d[h];p&&i.setRequestHeader(h,p)}var f=new FormData;if(this.options.params){var v=this.options.params;for(var m in"function"==typeof v&&(v=v.call(this,t,i,t[0].upload.chunked?this._getChunk(t[0],i):null)),v){var y=v[m];f.append(m,y)}}var g=!0,b=!1,k=void 0;try{for(var w,F=t[Symbol.iterator]();!(g=(w=F.next()).done);g=!0){var x=w.value;this.emit("sending",x,i,f)}}catch(e){b=!0,k=e}finally{try{g||null==F.return||F.return()}finally{if(b)throw k}}this.options.uploadMultiple&&this.emit("sendingmultiple",t,i,f),this._addFormElementData(f);for(var E=0;E<e.length;E++){var C=e[E];f.append(C.name,C.data,C.filename)}this.submitRequest(i,f,t)}},{key:"_transformFiles",value:function(n,i){function e(t){r.options.transformFile.call(r,n[t],function(e){o[t]=e,++a===n.length&&i(o)})}for(var r=this,o=[],a=0,t=0;t<n.length;t++)e(t)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName){var t=!0,n=!1,i=void 0;try{for(var r,o=this.element.querySelectorAll("input, textarea, select, button")[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value,l=a.getAttribute("name"),s=a.getAttribute("type");if(s=s&&s.toLowerCase(),null!=l)if("SELECT"===a.tagName&&a.hasAttribute("multiple")){var u=!0,c=!1,d=void 0;try{for(var h,p=a.options[Symbol.iterator]();!(u=(h=p.next()).done);u=!0){var f=h.value;f.selected&&e.append(l,f.value)}}catch(e){c=!0,d=e}finally{try{u||null==p.return||p.return()}finally{if(c)throw d}}}else(!s||"checkbox"!==s&&"radio"!==s||a.checked)&&e.append(l,a.value)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}}},{key:"_updateFilesUploadProgress",value:function(e,t,n){var i;if(void 0!==n){if(i=100*n.loaded/n.total,e[0].upload.chunked){var r=e[0],o=this._getChunk(r,t);o.progress=i,o.total=n.total,o.bytesSent=n.loaded;r.upload.progress=0,r.upload.total=0;for(var a=r.upload.bytesSent=0;a<r.upload.totalChunkCount;a++)void 0!==r.upload.chunks[a]&&void 0!==r.upload.chunks[a].progress&&(r.upload.progress+=r.upload.chunks[a].progress,r.upload.total+=r.upload.chunks[a].total,r.upload.bytesSent+=r.upload.chunks[a].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else{var l=!0,s=!1,u=void 0;try{for(var c,d=e[Symbol.iterator]();!(l=(c=d.next()).done);l=!0){var h=c.value;h.upload.progress=i,h.upload.total=n.total,h.upload.bytesSent=n.loaded}}catch(e){s=!0,u=e}finally{try{l||null==d.return||d.return()}finally{if(s)throw u}}}var p=!0,f=!1,v=void 0;try{for(var m,y=e[Symbol.iterator]();!(p=(m=y.next()).done);p=!0){var g=m.value;this.emit("uploadprogress",g,g.upload.progress,g.upload.bytesSent)}}catch(e){f=!0,v=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw v}}}else{var b=!0,k=!0,w=!(i=100),F=void 0;try{for(var x,E=e[Symbol.iterator]();!(k=(x=E.next()).done);k=!0){var C=x.value;100===C.upload.progress&&C.upload.bytesSent===C.upload.total||(b=!1),C.upload.progress=i,C.upload.bytesSent=C.upload.total}}catch(e){w=!0,F=e}finally{try{k||null==E.return||E.return()}finally{if(w)throw F}}if(b)return;var z=!0,S=!1,L=void 0;try{for(var _,T=e[Symbol.iterator]();!(z=(_=T.next()).done);z=!0){var A=_.value;this.emit("uploadprogress",A,i,A.upload.bytesSent)}}catch(e){S=!0,L=e}finally{try{z||null==T.return||T.return()}finally{if(S)throw L}}}}},{key:"_finishedUploading",value:function(e,t,n){var i;if(e[0].status!==z.CANCELED&&4===t.readyState){if("arraybuffer"!==t.responseType&&"blob"!==t.responseType&&(i=t.responseText,t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json")))try{i=JSON.parse(i)}catch(e){n=e,i="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=t.status&&t.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],t)):this._finished(e,i,n):this._handleUploadError(e,t,i)}}},{key:"_handleUploadError",value:function(e,t,n){if(e[0].status!==z.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var i=this._getChunk(e[0],t);if(i.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[i.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}this._errorProcessing(e,n||this.options.dictResponseError.replace("{{statusCode}}",t.status),t)}}},{key:"submitRequest",value:function(e,t){e.send(t)}},{key:"_finished",value:function(e,t,n){var i=!0,r=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;s.status=z.SUCCESS,this.emit("success",s,t,n),this.emit("complete",s)}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,t,n){var i=!0,r=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;s.status=z.ERROR,this.emit("error",s,t,n),this.emit("complete",s)}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),z}();d.initClass(),d.version="5.7.0",d.options={},d.optionsForElement=function(e){return e.getAttribute("id")?d.options[p(e.getAttribute("id"))]:void 0},d.instances=[],d.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},d.autoDiscover=!0,d.discover=function(){var s;if(document.querySelectorAll)s=document.querySelectorAll(".dropzone");else{s=[];function e(l){return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=l[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;/(^| )dropzone($| )/.test(a.className)?e.push(s.push(a)):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()}e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form"))}return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=s[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;!1!==d.optionsForElement(a)?e.push(new d(a)):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()},d.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],d.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a")){var t=!0,n=!1,i=void 0;try{for(var r,o=d.blacklistedBrowsers[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){r.value.test(navigator.userAgent)&&(e=!1)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}else e=!1;else e=!1;return e},d.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],i=new ArrayBuffer(t.length),r=new Uint8Array(i),o=0,a=t.length,l=0<=a;l?o<=a:a<=o;l?o++:o--)r[o]=t.charCodeAt(o);return new Blob([i],{type:n})};var h=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},p=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};d.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},d.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},d.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},d.getElements=function(e,t){var n,i;if(e instanceof Array){i=[];try{var r=!0,o=!1,a=void 0;try{for(var l,s=e[Symbol.iterator]();!(r=(l=s.next()).done);r=!0)n=l.value,i.push(this.getElement(n,t))}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}}catch(e){i=null}}else if("string"==typeof e){var u=!0,c=!(i=[]),d=void 0;try{for(var h,p=document.querySelectorAll(e)[Symbol.iterator]();!(u=(h=p.next()).done);u=!0)n=h.value,i.push(n)}catch(e){c=!0,d=e}finally{try{u||null==p.return||p.return()}finally{if(c)throw d}}}else null!=e.nodeType&&(i=[e]);if(null==i||!i.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return i},d.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},d.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n=e.type,i=n.replace(/\/.*$/,""),r=!0,o=!1,a=void 0;try{for(var l,s=t[Symbol.iterator]();!(r=(l=s.next()).done);r=!0){var u=l.value;if("."===(u=u.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(u.toLowerCase(),e.name.length-u.length))return!0}else if(/\/\*$/.test(u)){if(i===u.replace(/\/.*$/,""))return!0}else if(n===u)return!0}}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return!1},null!=e&&(e.fn.dropzone=function(e){return this.each(function(){return new d(this,e)})}),null!=t?t.exports=d:window.Dropzone=d,d.ADDED="added",d.QUEUED="queued",d.ACCEPTED=d.QUEUED,d.UPLOADING="uploading",d.PROCESSING=d.UPLOADING,d.CANCELED="canceled",d.ERROR="error",d.SUCCESS="success";var f=function(e,t,n,i,r,o,a,l,s,u){var c=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var i=n.getContext("2d");i.drawImage(e,0,0);for(var r=i.getImageData(1,0,1,t).data,o=0,a=t,l=t;o<l;){0===r[4*(l-1)+3]?a=l:o=l,l=a+o>>1}var s=l/t;return 0==s?1:s}(t);return e.drawImage(t,n,i,r,o,a,l,s,u/c)},v=function(){function e(){u(this,e)}return o(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,i=void 0,r="",o=void 0,a=void 0,l=void 0,s="",u=0;o=(n=e[u++])>>2,a=(3&n)<<4|(i=e[u++])>>4,l=(15&i)<<2|(r=e[u++])>>6,s=63&r,isNaN(i)?l=s=64:isNaN(r)&&(s=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l)+this.KEY_STR.charAt(s),n=i=r="",o=a=l=s="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var n=this.decode64(e.replace("data:image/jpeg;base64,","")),i=this.slice2Segments(n),r=this.exifManipulation(t,i);return"data:image/jpeg;base64,".concat(this.encode64(r))}},{key:"exifManipulation",value:function(e,t){var n=this.getExifArray(t),i=this.insertExif(e,n);return new Uint8Array(i)}},{key:"getExifArray",value:function(e){for(var t=void 0,n=0;n<e.length;){if(255===(t=e[n])[0]&225===t[1])return t;n++}return[]}},{key:"insertExif",value:function(e,t){var n=e.replace("data:image/jpeg;base64,",""),i=this.decode64(n),r=i.indexOf(255,3),o=i.slice(0,r),a=i.slice(r),l=o;return l=(l=l.concat(t)).concat(a)}},{key:"slice2Segments",value:function(e){for(var t=0,n=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var i=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,i);n.push(r),t=i}if(t>e.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,i="",r=void 0,o=void 0,a="",l=0,s=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(l++))<<2|(r=this.KEY_STR.indexOf(e.charAt(l++)))>>4,n=(15&r)<<4|(o=this.KEY_STR.indexOf(e.charAt(l++)))>>2,i=(3&o)<<6|(a=this.KEY_STR.indexOf(e.charAt(l++))),s.push(t),64!==o&&s.push(n),64!==a&&s.push(i),t=n=i="",r=o=a="",l<e.length;);return s}}]),e}();v.initClass();return d._autoDiscoverFunction=function(){if(d.autoDiscover)return d.discover()},function(t,n){function i(e){if("readystatechange"!==e.type||"complete"===o.readyState)return("load"===e.type?t:o)[s](u+e.type,i,!1),!r&&(r=!0)?n.call(t,e.type||e):void 0}var r=!1,e=!0,o=t.document,a=o.documentElement,l=o.addEventListener?"addEventListener":"attachEvent",s=o.addEventListener?"removeEventListener":"detachEvent",u=o.addEventListener?"":"on";if("complete"!==o.readyState){if(o.createEventObject&&a.doScroll){try{e=!t.frameElement}catch(e){}e&&!function t(){try{a.doScroll("left")}catch(e){return void setTimeout(t,50)}return i("poll")}()}o[l](u+"DOMContentLoaded",i,!1),o[l](u+"readystatechange",i,!1),t[l](u+"load",i,!1)}}(window,d._autoDiscoverFunction),t.exports}); \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.css b/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.css new file mode 100644 index 0000000000000000000000000000000000000000..1b63110fbf5039884a44a1b733b23e45621ebcbb --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.css @@ -0,0 +1 @@ +@-webkit-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-moz-keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@keyframes passing-through{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%, 70%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}100%{opacity:0;-webkit-transform:translateY(-40px);-moz-transform:translateY(-40px);-ms-transform:translateY(-40px);-o-transform:translateY(-40px);transform:translateY(-40px)}}@-webkit-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-moz-keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@keyframes slide-in{0%{opacity:0;-webkit-transform:translateY(40px);-moz-transform:translateY(40px);-ms-transform:translateY(40px);-o-transform:translateY(40px);transform:translateY(40px)}30%{opacity:1;-webkit-transform:translateY(0px);-moz-transform:translateY(0px);-ms-transform:translateY(0px);-o-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-moz-keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}10%{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}20%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:2px solid rgba(0,0,0,0.3);background:white;padding:20px 20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:0.5}.dropzone .dz-message{text-align:center;margin:2em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom, #eee, #ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:white}.dropzone .dz-preview.dz-image-preview .dz-details{-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;-ms-transition:opacity 0.2s linear;-o-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:rgba(0,0,0,0.9);line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,0.8);background-color:rgba(255,255,255,0.8)}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:rgba(255,255,255,0.4);padding:0 0.4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{-webkit-transform:scale(1.05, 1.05);-moz-transform:scale(1.05, 1.05);-ms-transform:scale(1.05, 1.05);-o-transform:scale(1.05, 1.05);transform:scale(1.05, 1.05);-webkit-filter:blur(8px);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{-webkit-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation:passing-through 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;-webkit-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);animation:slide-in 3s cubic-bezier(0.77, 0, 0.175, 1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;-webkit-transition:all 0.2s linear;-moz-transition:all 0.2s linear;-ms-transition:all 0.2s linear;-o-transition:all 0.2s linear;transition:all 0.2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;-webkit-transition:opacity 0.4s ease-in;-moz-transition:opacity 0.4s ease-in;-ms-transition:opacity 0.4s ease-in;-o-transition:opacity 0.4s ease-in;transition:opacity 0.4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{-webkit-animation:pulse 6s ease infinite;-moz-animation:pulse 6s ease infinite;-ms-animation:pulse 6s ease infinite;-o-animation:pulse 6s ease infinite;animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:16px;left:50%;top:50%;margin-top:-8px;width:80px;margin-left:-40px;background:rgba(255,255,255,0.9);-webkit-transform:scale(1);border-radius:8px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#333;background:linear-gradient(to bottom, #666, #444);position:absolute;top:0;left:0;bottom:0;width:0;-webkit-transition:width 300ms ease-in-out;-moz-transition:width 300ms ease-in-out;-ms-transition:width 300ms ease-in-out;-o-transition:width 300ms ease-in-out;transition:width 300ms ease-in-out}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;-webkit-transition:opacity 0.3s ease;-moz-transition:opacity 0.3s ease;-ms-transition:opacity 0.3s ease;-o-transition:opacity 0.3s ease;transition:opacity 0.3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#be2626;background:linear-gradient(to bottom, #be2626, #a92222);padding:0.5em 1.2em;color:white}.dropzone .dz-preview .dz-error-message:after{content:'';position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #be2626} diff --git a/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.js b/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a4d64800c082b0605840e76d09d9da3aa5d3a736 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/dist/min/dropzone.min.js @@ -0,0 +1 @@ +"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}var Emitter=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"on",value:function(e,t){return this._callbacks=this._callbacks||{},this._callbacks[e]||(this._callbacks[e]=[]),this._callbacks[e].push(t),this}},{key:"emit",value:function(e){this._callbacks=this._callbacks||{};var t=this._callbacks[e];if(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];var o=!0,a=!1,l=void 0;try{for(var s,u=t[Symbol.iterator]();!(o=(s=u.next()).done);o=!0){s.value.apply(this,i)}}catch(e){a=!0,l=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw l}}}return this}},{key:"off",value:function(e,t){if(!this._callbacks||0===arguments.length)return this._callbacks={},this;var n=this._callbacks[e];if(!n)return this;if(1===arguments.length)return delete this._callbacks[e],this;for(var i=0;i<n.length;i++){if(n[i]===t){n.splice(i,1);break}}return this}}]),e}(),Dropzone=function(){function C(e,t){var n,i,r;if(_classCallCheck(this,C),(n=_possibleConstructorReturn(this,_getPrototypeOf(C).call(this))).element=e,n.version=C.version,n.defaultOptions.previewTemplate=n.defaultOptions.previewTemplate.replace(/\n*/g,""),n.clickableElements=[],n.listeners=[],n.files=[],"string"==typeof n.element&&(n.element=document.querySelector(n.element)),!n.element||null==n.element.nodeType)throw new Error("Invalid dropzone element.");if(n.element.dropzone)throw new Error("Dropzone already attached.");C.instances.push(_assertThisInitialized(n)),n.element.dropzone=_assertThisInitialized(n);var o=null!=(r=C.optionsForElement(n.element))?r:{};if(n.options=C.extend({},n.defaultOptions,o,null!=t?t:{}),n.options.forceFallback||!C.isBrowserSupported())return _possibleConstructorReturn(n,n.options.fallback.call(_assertThisInitialized(n)));if(null==n.options.url&&(n.options.url=n.element.getAttribute("action")),!n.options.url)throw new Error("No URL provided.");if(n.options.acceptedFiles&&n.options.acceptedMimeTypes)throw new Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");if(n.options.uploadMultiple&&n.options.chunking)throw new Error("You cannot set both: uploadMultiple and chunking.");return n.options.acceptedMimeTypes&&(n.options.acceptedFiles=n.options.acceptedMimeTypes,delete n.options.acceptedMimeTypes),null!=n.options.renameFilename&&(n.options.renameFile=function(e){return n.options.renameFilename.call(_assertThisInitialized(n),e.name,e)}),n.options.method=n.options.method.toUpperCase(),(i=n.getExistingFallback())&&i.parentNode&&i.parentNode.removeChild(i),!1!==n.options.previewsContainer&&(n.options.previewsContainer?n.previewsContainer=C.getElement(n.options.previewsContainer,"previewsContainer"):n.previewsContainer=n.element),n.options.clickable&&(!0===n.options.clickable?n.clickableElements=[n.element]:n.clickableElements=C.getElements(n.options.clickable,"clickable")),n.init(),n}return _inherits(C,Emitter),_createClass(C,null,[{key:"initClass",value:function(){this.prototype.Emitter=Emitter,this.prototype.events=["drop","dragstart","dragend","dragenter","dragover","dragleave","addedfile","addedfiles","removedfile","thumbnail","error","errormultiple","processing","processingmultiple","uploadprogress","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","reset","maxfilesexceeded","maxfilesreached","queuecomplete"],this.prototype.defaultOptions={url:null,method:"post",withCredentials:!1,timeout:3e4,parallelUploads:2,uploadMultiple:!1,chunking:!1,forceChunking:!1,chunkSize:2e6,parallelChunkUploads:!1,retryChunks:!1,retryChunksLimit:3,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,thumbnailMethod:"crop",resizeWidth:null,resizeHeight:null,resizeMimeType:null,resizeQuality:.8,resizeMethod:"contain",filesizeBase:1e3,maxFiles:null,headers:null,clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,renameFilename:null,renameFile:null,forceFallback:!1,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictUploadCanceled:"Upload canceled.",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",dictFileSizeUnits:{tb:"TB",gb:"GB",mb:"MB",kb:"KB",b:"b"},init:function(){},params:function(e,t,n){if(n)return{dzuuid:n.file.upload.uuid,dzchunkindex:n.index,dztotalfilesize:n.file.size,dzchunksize:this.options.chunkSize,dztotalchunkcount:n.file.upload.totalChunkCount,dzchunkbyteoffset:n.index*this.options.chunkSize}},accept:function(e,t){return t()},chunksUploaded:function(e,t){t()},fallback:function(){var e;this.element.className="".concat(this.element.className," dz-browser-not-supported");var t=!0,n=!1,i=void 0;try{for(var r,o=this.element.getElementsByTagName("div")[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;if(/(^| )dz-message($| )/.test(a.className)){(e=a).className="dz-message";break}}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}e||(e=C.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(e));var l=e.getElementsByTagName("span")[0];return l&&(null!=l.textContent?l.textContent=this.options.dictFallbackMessage:null!=l.innerText&&(l.innerText=this.options.dictFallbackMessage)),this.element.appendChild(this.getFallbackForm())},resize:function(e,t,n,i){var r={srcX:0,srcY:0,srcWidth:e.width,srcHeight:e.height},o=e.width/e.height;null==t&&null==n?(t=r.srcWidth,n=r.srcHeight):null==t?t=n*o:null==n&&(n=t/o);var a=(t=Math.min(t,r.srcWidth))/(n=Math.min(n,r.srcHeight));if(r.srcWidth>t||r.srcHeight>n)if("crop"===i)a<o?(r.srcHeight=e.height,r.srcWidth=r.srcHeight*a):(r.srcWidth=e.width,r.srcHeight=r.srcWidth/a);else{if("contain"!==i)throw new Error("Unknown resizeMethod '".concat(i,"'"));a<o?n=t/o:t=n*o}return r.srcX=(e.width-r.srcWidth)/2,r.srcY=(e.height-r.srcHeight)/2,r.trgWidth=t,r.trgHeight=n,r},transformFile:function(e,t){return(this.options.resizeWidth||this.options.resizeHeight)&&e.type.match(/image.*/)?this.resizeImage(e,this.options.resizeWidth,this.options.resizeHeight,this.options.resizeMethod,t):t(e)},previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Check</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <title>Error</title>\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <g stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>',drop:function(){return this.element.classList.remove("dz-drag-hover")},dragstart:function(){},dragend:function(){return this.element.classList.remove("dz-drag-hover")},dragenter:function(){return this.element.classList.add("dz-drag-hover")},dragover:function(){return this.element.classList.add("dz-drag-hover")},dragleave:function(){return this.element.classList.remove("dz-drag-hover")},paste:function(){},reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(t){var n=this;if(this.element===this.previewsContainer&&this.element.classList.add("dz-started"),this.previewsContainer){t.previewElement=C.createElement(this.options.previewTemplate.trim()),t.previewTemplate=t.previewElement,this.previewsContainer.appendChild(t.previewElement);var e=!0,i=!1,r=void 0;try{for(var o,a=t.previewElement.querySelectorAll("[data-dz-name]")[Symbol.iterator]();!(e=(o=a.next()).done);e=!0){var l=o.value;l.textContent=t.name}}catch(e){i=!0,r=e}finally{try{e||null==a.return||a.return()}finally{if(i)throw r}}var s=!0,u=!1,c=void 0;try{for(var d,p=t.previewElement.querySelectorAll("[data-dz-size]")[Symbol.iterator]();!(s=(d=p.next()).done);s=!0)(l=d.value).innerHTML=this.filesize(t.size)}catch(e){u=!0,c=e}finally{try{s||null==p.return||p.return()}finally{if(u)throw c}}this.options.addRemoveLinks&&(t._removeLink=C.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'.concat(this.options.dictRemoveFile,"</a>")),t.previewElement.appendChild(t._removeLink));var h=function(e){return e.preventDefault(),e.stopPropagation(),t.status===C.UPLOADING?C.confirm(n.options.dictCancelUploadConfirmation,function(){return n.removeFile(t)}):n.options.dictRemoveFileConfirmation?C.confirm(n.options.dictRemoveFileConfirmation,function(){return n.removeFile(t)}):n.removeFile(t)},f=!0,v=!1,m=void 0;try{for(var y,g=t.previewElement.querySelectorAll("[data-dz-remove]")[Symbol.iterator]();!(f=(y=g.next()).done);f=!0){y.value.addEventListener("click",h)}}catch(e){v=!0,m=e}finally{try{f||null==g.return||g.return()}finally{if(v)throw m}}}},removedfile:function(e){return null!=e.previewElement&&null!=e.previewElement.parentNode&&e.previewElement.parentNode.removeChild(e.previewElement),this._updateMaxFilesReachedClass()},thumbnail:function(e,t){if(e.previewElement){e.previewElement.classList.remove("dz-file-preview");var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-thumbnail]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var l=o.value;l.alt=e.name,l.src=t}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}return setTimeout(function(){return e.previewElement.classList.add("dz-image-preview")},1)}},error:function(e,t){if(e.previewElement){e.previewElement.classList.add("dz-error"),"String"!=typeof t&&t.error&&(t=t.error);var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-errormessage]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){o.value.textContent=t}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}}},errormultiple:function(){},processing:function(e){if(e.previewElement&&(e.previewElement.classList.add("dz-processing"),e._removeLink))return e._removeLink.innerHTML=this.options.dictCancelUpload},processingmultiple:function(){},uploadprogress:function(e,t){if(e.previewElement){var n=!0,i=!1,r=void 0;try{for(var o,a=e.previewElement.querySelectorAll("[data-dz-uploadprogress]")[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var l=o.value;"PROGRESS"===l.nodeName?l.value=t:l.style.width="".concat(t,"%")}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}}},totaluploadprogress:function(){},sending:function(){},sendingmultiple:function(){},success:function(e){if(e.previewElement)return e.previewElement.classList.add("dz-success")},successmultiple:function(){},canceled:function(e){return this.emit("error",e,this.options.dictUploadCanceled)},canceledmultiple:function(){},complete:function(e){if(e._removeLink&&(e._removeLink.innerHTML=this.options.dictRemoveFile),e.previewElement)return e.previewElement.classList.add("dz-complete")},completemultiple:function(){},maxfilesexceeded:function(){},maxfilesreached:function(){},queuecomplete:function(){},addedfiles:function(){}},this.prototype._thumbnailQueue=[],this.prototype._processingThumbnail=!1}},{key:"extend",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var r=0,o=n;r<o.length;r++){var a=o[r];for(var l in a){var s=a[l];e[l]=s}}return e}}]),_createClass(C,[{key:"getAcceptedFiles",value:function(){return this.files.filter(function(e){return e.accepted}).map(function(e){return e})}},{key:"getRejectedFiles",value:function(){return this.files.filter(function(e){return!e.accepted}).map(function(e){return e})}},{key:"getFilesWithStatus",value:function(t){return this.files.filter(function(e){return e.status===t}).map(function(e){return e})}},{key:"getQueuedFiles",value:function(){return this.getFilesWithStatus(C.QUEUED)}},{key:"getUploadingFiles",value:function(){return this.getFilesWithStatus(C.UPLOADING)}},{key:"getAddedFiles",value:function(){return this.getFilesWithStatus(C.ADDED)}},{key:"getActiveFiles",value:function(){return this.files.filter(function(e){return e.status===C.UPLOADING||e.status===C.QUEUED}).map(function(e){return e})}},{key:"init",value:function(){var s=this;if("form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data"),this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(C.createElement('<div class="dz-default dz-message"><button class="dz-button" type="button">'.concat(this.options.dictDefaultMessage,"</button></div>"))),this.clickableElements.length){!function l(){return s.hiddenFileInput&&s.hiddenFileInput.parentNode.removeChild(s.hiddenFileInput),s.hiddenFileInput=document.createElement("input"),s.hiddenFileInput.setAttribute("type","file"),(null===s.options.maxFiles||1<s.options.maxFiles)&&s.hiddenFileInput.setAttribute("multiple","multiple"),s.hiddenFileInput.className="dz-hidden-input",null!==s.options.acceptedFiles&&s.hiddenFileInput.setAttribute("accept",s.options.acceptedFiles),null!==s.options.capture&&s.hiddenFileInput.setAttribute("capture",s.options.capture),s.hiddenFileInput.style.visibility="hidden",s.hiddenFileInput.style.position="absolute",s.hiddenFileInput.style.top="0",s.hiddenFileInput.style.left="0",s.hiddenFileInput.style.height="0",s.hiddenFileInput.style.width="0",C.getElement(s.options.hiddenInputContainer,"hiddenInputContainer").appendChild(s.hiddenFileInput),s.hiddenFileInput.addEventListener("change",function(){var e=s.hiddenFileInput.files;if(e.length){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;s.addFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}return s.emit("addedfiles",e),l()})}()}this.URL=null!==window.URL?window.URL:window.webkitURL;var e=!0,t=!1,n=void 0;try{for(var i,r=this.events[Symbol.iterator]();!(e=(i=r.next()).done);e=!0){var o=i.value;this.on(o,this.options[o])}}catch(e){t=!0,n=e}finally{try{e||null==r.return||r.return()}finally{if(t)throw n}}this.on("uploadprogress",function(){return s.updateTotalUploadProgress()}),this.on("removedfile",function(){return s.updateTotalUploadProgress()}),this.on("canceled",function(e){return s.emit("complete",e)}),this.on("complete",function(e){if(0===s.getAddedFiles().length&&0===s.getUploadingFiles().length&&0===s.getQueuedFiles().length)return setTimeout(function(){return s.emit("queuecomplete")},0)});function a(e){var t;return(t=e).dataTransfer.types&&t.dataTransfer.types.some(function(e){return"Files"==e})&&(e.stopPropagation(),e.preventDefault?e.preventDefault():e.returnValue=!1)}return this.listeners=[{element:this.element,events:{dragstart:function(e){return s.emit("dragstart",e)},dragenter:function(e){return a(e),s.emit("dragenter",e)},dragover:function(e){var t;try{t=e.dataTransfer.effectAllowed}catch(e){}return e.dataTransfer.dropEffect="move"===t||"linkMove"===t?"move":"copy",a(e),s.emit("dragover",e)},dragleave:function(e){return s.emit("dragleave",e)},drop:function(e){return a(e),s.drop(e)},dragend:function(e){return s.emit("dragend",e)}}}],this.clickableElements.forEach(function(t){return s.listeners.push({element:t,events:{click:function(e){return t===s.element&&e.target!==s.element&&!C.elementInside(e.target,s.element.querySelector(".dz-message"))||s.hiddenFileInput.click(),!0}}})}),this.enable(),this.options.init.call(this)}},{key:"destroy",value:function(){return this.disable(),this.removeAllFiles(!0),null!=this.hiddenFileInput&&this.hiddenFileInput.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null),delete this.element.dropzone,C.instances.splice(C.instances.indexOf(this),1)}},{key:"updateTotalUploadProgress",value:function(){var e,t=0,n=0;if(this.getActiveFiles().length){var i=!0,r=!1,o=void 0;try{for(var a,l=this.getActiveFiles()[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;t+=s.upload.bytesSent,n+=s.upload.total}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}e=100*t/n}else e=100;return this.emit("totaluploadprogress",e,n,t)}},{key:"_getParamName",value:function(e){return"function"==typeof this.options.paramName?this.options.paramName(e):"".concat(this.options.paramName).concat(this.options.uploadMultiple?"[".concat(e,"]"):"")}},{key:"_renameFile",value:function(e){return"function"!=typeof this.options.renameFile?e.name:this.options.renameFile(e)}},{key:"getFallbackForm",value:function(){var e,t;if(e=this.getExistingFallback())return e;var n='<div class="dz-fallback">';this.options.dictFallbackText&&(n+="<p>".concat(this.options.dictFallbackText,"</p>")),n+='<input type="file" name="'.concat(this._getParamName(0),'" ').concat(this.options.uploadMultiple?'multiple="multiple"':void 0,' /><input type="submit" value="Upload!"></div>');var i=C.createElement(n);return"FORM"!==this.element.tagName?(t=C.createElement('<form action="'.concat(this.options.url,'" enctype="multipart/form-data" method="').concat(this.options.method,'"></form>'))).appendChild(i):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method)),null!=t?t:i}},{key:"getExistingFallback",value:function(){for(var e=function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;if(/(^| )fallback($| )/.test(a.className))return a}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}},t=0,n=["div","form"];t<n.length;t++){var i,r=n[t];if(i=e(this.element.getElementsByTagName(r)))return i}}},{key:"setupEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.addEventListener(t,n,!1))}return e}()})}},{key:"removeEventListeners",value:function(){return this.listeners.map(function(i){return function(){var e=[];for(var t in i.events){var n=i.events[t];e.push(i.element.removeEventListener(t,n,!1))}return e}()})}},{key:"disable",value:function(){var t=this;return this.clickableElements.forEach(function(e){return e.classList.remove("dz-clickable")}),this.removeEventListeners(),this.disabled=!0,this.files.map(function(e){return t.cancelUpload(e)})}},{key:"enable",value:function(){return delete this.disabled,this.clickableElements.forEach(function(e){return e.classList.add("dz-clickable")}),this.setupEventListeners()}},{key:"filesize",value:function(e){var t=0,n="b";if(0<e){for(var i=["tb","gb","mb","kb","b"],r=0;r<i.length;r++){var o=i[r];if(Math.pow(this.options.filesizeBase,4-r)/10<=e){t=e/Math.pow(this.options.filesizeBase,4-r),n=o;break}}t=Math.round(10*t)/10}return"<strong>".concat(t,"</strong> ").concat(this.options.dictFileSizeUnits[n])}},{key:"_updateMaxFilesReachedClass",value:function(){return null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")}},{key:"drop",value:function(e){if(e.dataTransfer){this.emit("drop",e);for(var t=[],n=0;n<e.dataTransfer.files.length;n++)t[n]=e.dataTransfer.files[n];if(t.length){var i=e.dataTransfer.items;i&&i.length&&null!=i[0].webkitGetAsEntry?this._addFilesFromItems(i):this.handleFiles(t)}this.emit("addedfiles",t)}}},{key:"paste",value:function(e){if(null!=__guard__(null!=e?e.clipboardData:void 0,function(e){return e.items})){this.emit("paste",e);var t=e.clipboardData.items;return t.length?this._addFilesFromItems(t):void 0}}},{key:"handleFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;this.addFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}},{key:"_addFilesFromItems",value:function(s){var u=this;return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=s[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a,l=r.value;null!=l.webkitGetAsEntry&&(a=l.webkitGetAsEntry())?a.isFile?e.push(u.addFile(l.getAsFile())):a.isDirectory?e.push(u._addFilesFromDirectory(a,a.name)):e.push(void 0):null!=l.getAsFile&&(null==l.kind||"file"===l.kind)?e.push(u.addFile(l.getAsFile())):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()}},{key:"_addFilesFromDirectory",value:function(e,s){function t(t){return __guardMethod__(console,"log",function(e){return e.log(t)})}var u=this,n=e.createReader();return function l(){return n.readEntries(function(e){if(0<e.length){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.isFile?a.file(function(e){if(!u.options.ignoreHiddenFiles||"."!==e.name.substring(0,1))return e.fullPath="".concat(s,"/").concat(e.name),u.addFile(e)}):a.isDirectory&&u._addFilesFromDirectory(a,"".concat(s,"/").concat(a.name))}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}l()}return null},t)}()}},{key:"accept",value:function(e,t){this.options.maxFilesize&&e.size>1024*this.options.maxFilesize*1024?t(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(e.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):C.isValidFile(e,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(t(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",e)):this.options.accept.call(this,e,t):t(this.options.dictInvalidFileType)}},{key:"addFile",value:function(t){var n=this;t.upload={uuid:C.uuidv4(),progress:0,total:t.size,bytesSent:0,filename:this._renameFile(t)},this.files.push(t),t.status=C.ADDED,this.emit("addedfile",t),this._enqueueThumbnail(t),this.accept(t,function(e){e?(t.accepted=!1,n._errorProcessing([t],e)):(t.accepted=!0,n.options.autoQueue&&n.enqueueFile(t)),n._updateMaxFilesReachedClass()})}},{key:"enqueueFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;this.enqueueFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return null}},{key:"enqueueFile",value:function(e){var t=this;if(e.status!==C.ADDED||!0!==e.accepted)throw new Error("This file can't be queued because it has already been processed or was rejected.");if(e.status=C.QUEUED,this.options.autoProcessQueue)return setTimeout(function(){return t.processQueue()},0)}},{key:"_enqueueThumbnail",value:function(e){var t=this;if(this.options.createImageThumbnails&&e.type.match(/image.*/)&&e.size<=1024*this.options.maxThumbnailFilesize*1024)return this._thumbnailQueue.push(e),setTimeout(function(){return t._processThumbnailQueue()},0)}},{key:"_processThumbnailQueue",value:function(){var t=this;if(!this._processingThumbnail&&0!==this._thumbnailQueue.length){this._processingThumbnail=!0;var n=this._thumbnailQueue.shift();return this.createThumbnail(n,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.thumbnailMethod,!0,function(e){return t.emit("thumbnail",n,e),t._processingThumbnail=!1,t._processThumbnailQueue()})}}},{key:"removeFile",value:function(e){if(e.status===C.UPLOADING&&this.cancelUpload(e),this.files=without(this.files,e),this.emit("removedfile",e),0===this.files.length)return this.emit("reset")}},{key:"removeAllFiles",value:function(e){null==e&&(e=!1);var t=!0,n=!1,i=void 0;try{for(var r,o=this.files.slice()[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.status===C.UPLOADING&&!e||this.removeFile(a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return null}},{key:"resizeImage",value:function(r,e,t,n,o){var a=this;return this.createThumbnail(r,e,t,n,!0,function(e,t){if(null==t)return o(r);var n=a.options.resizeMimeType;null==n&&(n=r.type);var i=t.toDataURL(n,a.options.resizeQuality);return"image/jpeg"!==n&&"image/jpg"!==n||(i=ExifRestore.restore(r.dataURL,i)),o(C.dataURItoBlob(i))})}},{key:"createThumbnail",value:function(e,t,n,i,r,o){var a=this,l=new FileReader;l.onload=function(){e.dataURL=l.result,"image/svg+xml"!==e.type?a.createThumbnailFromUrl(e,t,n,i,r,o):null!=o&&o(l.result)},l.readAsDataURL(e)}},{key:"displayExistingFile",value:function(t,e,n,i,r){var o=this,a=!(4<arguments.length&&void 0!==r)||r;if(this.emit("addedfile",t),this.emit("complete",t),a){t.dataURL=e,this.createThumbnailFromUrl(t,this.options.thumbnailWidth,this.options.thumbnailHeight,this.options.resizeMethod,this.options.fixOrientation,function(e){o.emit("thumbnail",t,e),n&&n()},i)}else this.emit("thumbnail",t,e),n&&n()}},{key:"createThumbnailFromUrl",value:function(o,a,l,s,t,u,e){var c=this,d=document.createElement("img");return e&&(d.crossOrigin=e),d.onload=function(){var e=function(e){return e(1)};return"undefined"!=typeof EXIF&&null!==EXIF&&t&&(e=function(e){return EXIF.getData(d,function(){return e(EXIF.getTag(this,"Orientation"))})}),e(function(e){o.width=d.width,o.height=d.height;var t=c.options.resize.call(c,o,a,l,s),n=document.createElement("canvas"),i=n.getContext("2d");switch(n.width=t.trgWidth,n.height=t.trgHeight,4<e&&(n.width=t.trgHeight,n.height=t.trgWidth),e){case 2:i.translate(n.width,0),i.scale(-1,1);break;case 3:i.translate(n.width,n.height),i.rotate(Math.PI);break;case 4:i.translate(0,n.height),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-n.width);break;case 7:i.rotate(.5*Math.PI),i.translate(n.height,-n.width),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-n.height,0)}drawImageIOSFix(i,d,null!=t.srcX?t.srcX:0,null!=t.srcY?t.srcY:0,t.srcWidth,t.srcHeight,null!=t.trgX?t.trgX:0,null!=t.trgY?t.trgY:0,t.trgWidth,t.trgHeight);var r=n.toDataURL("image/png");if(null!=u)return u(r,n)})},null!=u&&(d.onerror=u),d.src=o.dataURL}},{key:"processQueue",value:function(){var e=this.options.parallelUploads,t=this.getUploadingFiles().length,n=t;if(!(e<=t)){var i=this.getQueuedFiles();if(0<i.length){if(this.options.uploadMultiple)return this.processFiles(i.slice(0,e-t));for(;n<e;){if(!i.length)return;this.processFile(i.shift()),n++}}}}},{key:"processFile",value:function(e){return this.processFiles([e])}},{key:"processFiles",value:function(e){var t=!0,n=!1,i=void 0;try{for(var r,o=e[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;a.processing=!0,a.status=C.UPLOADING,this.emit("processing",a)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return this.options.uploadMultiple&&this.emit("processingmultiple",e),this.uploadFiles(e)}},{key:"_getFilesWithXhr",value:function(t){return this.files.filter(function(e){return e.xhr===t}).map(function(e){return e})}},{key:"cancelUpload",value:function(e){if(e.status===C.UPLOADING){var t=this._getFilesWithXhr(e.xhr),n=!0,i=!1,r=void 0;try{for(var o,a=t[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){o.value.status=C.CANCELED}}catch(e){i=!0,r=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw r}}void 0!==e.xhr&&e.xhr.abort();var l=!0,s=!1,u=void 0;try{for(var c,d=t[Symbol.iterator]();!(l=(c=d.next()).done);l=!0){var p=c.value;this.emit("canceled",p)}}catch(e){s=!0,u=e}finally{try{l||null==d.return||d.return()}finally{if(s)throw u}}this.options.uploadMultiple&&this.emit("canceledmultiple",t)}else e.status!==C.ADDED&&e.status!==C.QUEUED||(e.status=C.CANCELED,this.emit("canceled",e),this.options.uploadMultiple&&this.emit("canceledmultiple",[e]));if(this.options.autoProcessQueue)return this.processQueue()}},{key:"resolveOption",value:function(e){if("function"!=typeof e)return e;for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return e.apply(this,n)}},{key:"uploadFile",value:function(e){return this.uploadFiles([e])}},{key:"uploadFiles",value:function(s){var u=this;this._transformFiles(s,function(e){if(u.options.chunking){var t=e[0];s[0].upload.chunked=u.options.chunking&&(u.options.forceChunking||t.size>u.options.chunkSize),s[0].upload.totalChunkCount=Math.ceil(t.size/u.options.chunkSize)}if(s[0].upload.chunked){var r=s[0],o=e[0];r.upload.chunks=[];var i=function(){for(var e=0;void 0!==r.upload.chunks[e];)e++;if(!(e>=r.upload.totalChunkCount)){0;var t=e*u.options.chunkSize,n=Math.min(t+u.options.chunkSize,r.size),i={name:u._getParamName(0),data:o.webkitSlice?o.webkitSlice(t,n):o.slice(t,n),filename:r.upload.filename,chunkIndex:e};r.upload.chunks[e]={file:r,index:e,dataBlock:i,status:C.UPLOADING,progress:0,retries:0},u._uploadData(s,[i])}};if(r.upload.finishedChunkUpload=function(e){var t=!0;e.status=C.SUCCESS,e.dataBlock=null,e.xhr=null;for(var n=0;n<r.upload.totalChunkCount;n++){if(void 0===r.upload.chunks[n])return i();r.upload.chunks[n].status!==C.SUCCESS&&(t=!1)}t&&u.options.chunksUploaded(r,function(){u._finished(s,"",null)})},u.options.parallelChunkUploads)for(var n=0;n<r.upload.totalChunkCount;n++)i();else i()}else{for(var a=[],l=0;l<s.length;l++)a[l]={name:u._getParamName(l),data:e[l],filename:s[l].upload.filename};u._uploadData(s,a)}})}},{key:"_getChunk",value:function(e,t){for(var n=0;n<e.upload.totalChunkCount;n++)if(void 0!==e.upload.chunks[n]&&e.upload.chunks[n].xhr===t)return e.upload.chunks[n]}},{key:"_uploadData",value:function(t,e){var n=this,i=new XMLHttpRequest,r=!0,o=!1,a=void 0;try{for(var l,s=t[Symbol.iterator]();!(r=(l=s.next()).done);r=!0){l.value.xhr=i}}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}t[0].upload.chunked&&(t[0].upload.chunks[e[0].chunkIndex].xhr=i);var u=this.resolveOption(this.options.method,t),c=this.resolveOption(this.options.url,t);i.open(u,c,!0),i.timeout=this.resolveOption(this.options.timeout,t),i.withCredentials=!!this.options.withCredentials,i.onload=function(e){n._finishedUploading(t,i,e)},i.ontimeout=function(){n._handleUploadError(t,i,"Request timedout after ".concat(n.options.timeout," seconds"))},i.onerror=function(){n._handleUploadError(t,i)},(null!=i.upload?i.upload:i).onprogress=function(e){return n._updateFilesUploadProgress(t,i,e)};var d={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};for(var p in this.options.headers&&C.extend(d,this.options.headers),d){var h=d[p];h&&i.setRequestHeader(p,h)}var f=new FormData;if(this.options.params){var v=this.options.params;for(var m in"function"==typeof v&&(v=v.call(this,t,i,t[0].upload.chunked?this._getChunk(t[0],i):null)),v){var y=v[m];f.append(m,y)}}var g=!0,b=!1,k=void 0;try{for(var w,F=t[Symbol.iterator]();!(g=(w=F.next()).done);g=!0){var z=w.value;this.emit("sending",z,i,f)}}catch(e){b=!0,k=e}finally{try{g||null==F.return||F.return()}finally{if(b)throw k}}this.options.uploadMultiple&&this.emit("sendingmultiple",t,i,f),this._addFormElementData(f);for(var x=0;x<e.length;x++){var E=e[x];f.append(E.name,E.data,E.filename)}this.submitRequest(i,f,t)}},{key:"_transformFiles",value:function(n,i){for(var e=this,r=[],o=0,t=function(t){e.options.transformFile.call(e,n[t],function(e){r[t]=e,++o===n.length&&i(r)})},a=0;a<n.length;a++)t(a)}},{key:"_addFormElementData",value:function(e){if("FORM"===this.element.tagName){var t=!0,n=!1,i=void 0;try{for(var r,o=this.element.querySelectorAll("input, textarea, select, button")[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value,l=a.getAttribute("name"),s=a.getAttribute("type");if(s=s&&s.toLowerCase(),null!=l)if("SELECT"===a.tagName&&a.hasAttribute("multiple")){var u=!0,c=!1,d=void 0;try{for(var p,h=a.options[Symbol.iterator]();!(u=(p=h.next()).done);u=!0){var f=p.value;f.selected&&e.append(l,f.value)}}catch(e){c=!0,d=e}finally{try{u||null==h.return||h.return()}finally{if(c)throw d}}}else(!s||"checkbox"!==s&&"radio"!==s||a.checked)&&e.append(l,a.value)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}}},{key:"_updateFilesUploadProgress",value:function(e,t,n){var i;if(void 0!==n){if(i=100*n.loaded/n.total,e[0].upload.chunked){var r=e[0],o=this._getChunk(r,t);o.progress=i,o.total=n.total,o.bytesSent=n.loaded;r.upload.progress=0,r.upload.total=0;for(var a=r.upload.bytesSent=0;a<r.upload.totalChunkCount;a++)void 0!==r.upload.chunks[a]&&void 0!==r.upload.chunks[a].progress&&(r.upload.progress+=r.upload.chunks[a].progress,r.upload.total+=r.upload.chunks[a].total,r.upload.bytesSent+=r.upload.chunks[a].bytesSent);r.upload.progress=r.upload.progress/r.upload.totalChunkCount}else{var l=!0,s=!1,u=void 0;try{for(var c,d=e[Symbol.iterator]();!(l=(c=d.next()).done);l=!0){var p=c.value;p.upload.progress=i,p.upload.total=n.total,p.upload.bytesSent=n.loaded}}catch(e){s=!0,u=e}finally{try{l||null==d.return||d.return()}finally{if(s)throw u}}}var h=!0,f=!1,v=void 0;try{for(var m,y=e[Symbol.iterator]();!(h=(m=y.next()).done);h=!0){var g=m.value;this.emit("uploadprogress",g,g.upload.progress,g.upload.bytesSent)}}catch(e){f=!0,v=e}finally{try{h||null==y.return||y.return()}finally{if(f)throw v}}}else{var b=!0,k=!0,w=!(i=100),F=void 0;try{for(var z,x=e[Symbol.iterator]();!(k=(z=x.next()).done);k=!0){var E=z.value;100===E.upload.progress&&E.upload.bytesSent===E.upload.total||(b=!1),E.upload.progress=i,E.upload.bytesSent=E.upload.total}}catch(e){w=!0,F=e}finally{try{k||null==x.return||x.return()}finally{if(w)throw F}}if(b)return;var C=!0,_=!1,S=void 0;try{for(var D,T=e[Symbol.iterator]();!(C=(D=T.next()).done);C=!0){var L=D.value;this.emit("uploadprogress",L,i,L.upload.bytesSent)}}catch(e){_=!0,S=e}finally{try{C||null==T.return||T.return()}finally{if(_)throw S}}}}},{key:"_finishedUploading",value:function(e,t,n){var i;if(e[0].status!==C.CANCELED&&4===t.readyState){if("arraybuffer"!==t.responseType&&"blob"!==t.responseType&&(i=t.responseText,t.getResponseHeader("content-type")&&~t.getResponseHeader("content-type").indexOf("application/json")))try{i=JSON.parse(i)}catch(e){n=e,i="Invalid JSON response from server."}this._updateFilesUploadProgress(e),200<=t.status&&t.status<300?e[0].upload.chunked?e[0].upload.finishedChunkUpload(this._getChunk(e[0],t)):this._finished(e,i,n):this._handleUploadError(e,t,i)}}},{key:"_handleUploadError",value:function(e,t,n){if(e[0].status!==C.CANCELED){if(e[0].upload.chunked&&this.options.retryChunks){var i=this._getChunk(e[0],t);if(i.retries++<this.options.retryChunksLimit)return void this._uploadData(e,[i.dataBlock]);console.warn("Retried this chunk too often. Giving up.")}this._errorProcessing(e,n||this.options.dictResponseError.replace("{{statusCode}}",t.status),t)}}},{key:"submitRequest",value:function(e,t){e.send(t)}},{key:"_finished",value:function(e,t,n){var i=!0,r=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;s.status=C.SUCCESS,this.emit("success",s,t,n),this.emit("complete",s)}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}if(this.options.uploadMultiple&&(this.emit("successmultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}},{key:"_errorProcessing",value:function(e,t,n){var i=!0,r=!1,o=void 0;try{for(var a,l=e[Symbol.iterator]();!(i=(a=l.next()).done);i=!0){var s=a.value;s.status=C.ERROR,this.emit("error",s,t,n),this.emit("complete",s)}}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}if(this.options.uploadMultiple&&(this.emit("errormultiple",e,t,n),this.emit("completemultiple",e)),this.options.autoProcessQueue)return this.processQueue()}}],[{key:"uuidv4",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}}]),C}();Dropzone.initClass(),Dropzone.version="5.7.0",Dropzone.options={},Dropzone.optionsForElement=function(e){return e.getAttribute("id")?Dropzone.options[camelize(e.getAttribute("id"))]:void 0},Dropzone.instances=[],Dropzone.forElement=function(e){if("string"==typeof e&&(e=document.querySelector(e)),null==(null!=e?e.dropzone:void 0))throw new Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");return e.dropzone},Dropzone.autoDiscover=!0,Dropzone.discover=function(){var s;if(document.querySelectorAll)s=document.querySelectorAll(".dropzone");else{s=[];var e=function(l){return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=l[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;/(^| )dropzone($| )/.test(a.className)?e.push(s.push(a)):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()};e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form"))}return function(){var e=[],t=!0,n=!1,i=void 0;try{for(var r,o=s[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){var a=r.value;!1!==Dropzone.optionsForElement(a)?e.push(new Dropzone(a)):e.push(void 0)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}return e}()},Dropzone.blacklistedBrowsers=[/opera.*(Macintosh|Windows Phone).*version\/12/i],Dropzone.isBrowserSupported=function(){var e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a")){var t=!0,n=!1,i=void 0;try{for(var r,o=Dropzone.blacklistedBrowsers[Symbol.iterator]();!(t=(r=o.next()).done);t=!0){r.value.test(navigator.userAgent)&&(e=!1)}}catch(e){n=!0,i=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw i}}}else e=!1;else e=!1;return e},Dropzone.dataURItoBlob=function(e){for(var t=atob(e.split(",")[1]),n=e.split(",")[0].split(":")[1].split(";")[0],i=new ArrayBuffer(t.length),r=new Uint8Array(i),o=0,a=t.length,l=0<=a;l?o<=a:a<=o;l?o++:o--)r[o]=t.charCodeAt(o);return new Blob([i],{type:n})};var without=function(e,t){return e.filter(function(e){return e!==t}).map(function(e){return e})},camelize=function(e){return e.replace(/[\-_](\w)/g,function(e){return e.charAt(1).toUpperCase()})};Dropzone.createElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.childNodes[0]},Dropzone.elementInside=function(e,t){if(e===t)return!0;for(;e=e.parentNode;)if(e===t)return!0;return!1},Dropzone.getElement=function(e,t){var n;if("string"==typeof e?n=document.querySelector(e):null!=e.nodeType&&(n=e),null==n)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector or a plain HTML element."));return n},Dropzone.getElements=function(e,t){var n,i;if(e instanceof Array){i=[];try{var r=!0,o=!1,a=void 0;try{for(var l,s=e[Symbol.iterator]();!(r=(l=s.next()).done);r=!0)n=l.value,i.push(this.getElement(n,t))}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}}catch(e){i=null}}else if("string"==typeof e){var u=!0,c=!(i=[]),d=void 0;try{for(var p,h=document.querySelectorAll(e)[Symbol.iterator]();!(u=(p=h.next()).done);u=!0)n=p.value,i.push(n)}catch(e){c=!0,d=e}finally{try{u||null==h.return||h.return()}finally{if(c)throw d}}}else null!=e.nodeType&&(i=[e]);if(null==i||!i.length)throw new Error("Invalid `".concat(t,"` option provided. Please provide a CSS selector, a plain HTML element or a list of those."));return i},Dropzone.confirm=function(e,t,n){return window.confirm(e)?t():null!=n?n():void 0},Dropzone.isValidFile=function(e,t){if(!t)return!0;t=t.split(",");var n=e.type,i=n.replace(/\/.*$/,""),r=!0,o=!1,a=void 0;try{for(var l,s=t[Symbol.iterator]();!(r=(l=s.next()).done);r=!0){var u=l.value;if("."===(u=u.trim()).charAt(0)){if(-1!==e.name.toLowerCase().indexOf(u.toLowerCase(),e.name.length-u.length))return!0}else if(/\/\*$/.test(u)){if(i===u.replace(/\/.*$/,""))return!0}else if(n===u)return!0}}catch(e){o=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(o)throw a}}return!1},"undefined"!=typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new Dropzone(this,e)})}),"undefined"!=typeof module&&null!==module?module.exports=Dropzone:window.Dropzone=Dropzone,Dropzone.ADDED="added",Dropzone.QUEUED="queued",Dropzone.ACCEPTED=Dropzone.QUEUED,Dropzone.UPLOADING="uploading",Dropzone.PROCESSING=Dropzone.UPLOADING,Dropzone.CANCELED="canceled",Dropzone.ERROR="error",Dropzone.SUCCESS="success";var detectVerticalSquash=function(e){e.naturalWidth;var t=e.naturalHeight,n=document.createElement("canvas");n.width=1,n.height=t;var i=n.getContext("2d");i.drawImage(e,0,0);for(var r=i.getImageData(1,0,1,t).data,o=0,a=t,l=t;o<l;){0===r[4*(l-1)+3]?a=l:o=l,l=a+o>>1}var s=l/t;return 0==s?1:s},drawImageIOSFix=function(e,t,n,i,r,o,a,l,s,u){var c=detectVerticalSquash(t);return e.drawImage(t,n,i,r,o,a,l,s,u/c)},ExifRestore=function(){function e(){_classCallCheck(this,e)}return _createClass(e,null,[{key:"initClass",value:function(){this.KEY_STR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}},{key:"encode64",value:function(e){for(var t="",n=void 0,i=void 0,r="",o=void 0,a=void 0,l=void 0,s="",u=0;o=(n=e[u++])>>2,a=(3&n)<<4|(i=e[u++])>>4,l=(15&i)<<2|(r=e[u++])>>6,s=63&r,isNaN(i)?l=s=64:isNaN(r)&&(s=64),t=t+this.KEY_STR.charAt(o)+this.KEY_STR.charAt(a)+this.KEY_STR.charAt(l)+this.KEY_STR.charAt(s),n=i=r="",o=a=l=s="",u<e.length;);return t}},{key:"restore",value:function(e,t){if(!e.match("data:image/jpeg;base64,"))return t;var n=this.decode64(e.replace("data:image/jpeg;base64,","")),i=this.slice2Segments(n),r=this.exifManipulation(t,i);return"data:image/jpeg;base64,".concat(this.encode64(r))}},{key:"exifManipulation",value:function(e,t){var n=this.getExifArray(t),i=this.insertExif(e,n);return new Uint8Array(i)}},{key:"getExifArray",value:function(e){for(var t=void 0,n=0;n<e.length;){if(255===(t=e[n])[0]&225===t[1])return t;n++}return[]}},{key:"insertExif",value:function(e,t){var n=e.replace("data:image/jpeg;base64,",""),i=this.decode64(n),r=i.indexOf(255,3),o=i.slice(0,r),a=i.slice(r),l=o;return l=(l=l.concat(t)).concat(a)}},{key:"slice2Segments",value:function(e){for(var t=0,n=[];;){if(255===e[t]&218===e[t+1])break;if(255===e[t]&216===e[t+1])t+=2;else{var i=t+(256*e[t+2]+e[t+3])+2,r=e.slice(t,i);n.push(r),t=i}if(t>e.length)break}return n}},{key:"decode64",value:function(e){var t=void 0,n=void 0,i="",r=void 0,o=void 0,a="",l=0,s=[];for(/[^A-Za-z0-9\+\/\=]/g.exec(e)&&console.warn("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\nExpect errors in decoding."),e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");t=this.KEY_STR.indexOf(e.charAt(l++))<<2|(r=this.KEY_STR.indexOf(e.charAt(l++)))>>4,n=(15&r)<<4|(o=this.KEY_STR.indexOf(e.charAt(l++)))>>2,i=(3&o)<<6|(a=this.KEY_STR.indexOf(e.charAt(l++))),s.push(t),64!==o&&s.push(n),64!==a&&s.push(i),t=n=i="",r=o=a="",l<e.length;);return s}}]),e}();ExifRestore.initClass();var contentLoaded=function(t,n){function i(e){if("readystatechange"!==e.type||"complete"===o.readyState)return("load"===e.type?t:o)[s](u+e.type,i,!1),!r&&(r=!0)?n.call(t,e.type||e):void 0}var r=!1,e=!0,o=t.document,a=o.documentElement,l=o.addEventListener?"addEventListener":"attachEvent",s=o.addEventListener?"removeEventListener":"detachEvent",u=o.addEventListener?"":"on";if("complete"!==o.readyState){if(o.createEventObject&&a.doScroll){try{e=!t.frameElement}catch(e){}e&&!function t(){try{a.doScroll("left")}catch(e){return void setTimeout(t,50)}return i("poll")}()}return o[l](u+"DOMContentLoaded",i,!1),o[l](u+"readystatechange",i,!1),t[l](u+"load",i,!1)}};function __guard__(e,t){return null!=e?t(e):void 0}function __guardMethod__(e,t,n){return null!=e&&"function"==typeof e[t]?n(e,t):void 0}Dropzone._autoDiscoverFunction=function(){if(Dropzone.autoDiscover)return Dropzone.discover()},contentLoaded(window,Dropzone._autoDiscoverFunction); \ No newline at end of file diff --git a/admin/vendors/dropzone-5.7.0/index.js b/admin/vendors/dropzone-5.7.0/index.js new file mode 100644 index 0000000000000000000000000000000000000000..4a1d413fda73ced490da827c2c252ad7ccaa52a2 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/index.js @@ -0,0 +1 @@ +module.exports = require("./dist/dropzone.js"); // Exposing dropzone diff --git a/admin/vendors/dropzone-5.7.0/package.json b/admin/vendors/dropzone-5.7.0/package.json new file mode 100644 index 0000000000000000000000000000000000000000..555f58c9af6e1a90a64488a50f2a0cdc27973d80 --- /dev/null +++ b/admin/vendors/dropzone-5.7.0/package.json @@ -0,0 +1,40 @@ +{ + "name": "dropzone", + "version": "5.7.0", + "description": "Handles drag and drop of files for you.", + "keywords": [ + "dragndrop", + "drag and drop", + "file upload", + "upload" + ], + "homepage": "http://www.dropzonejs.com", + "main": "./dist/dropzone.js", + "maintainers": [ + { + "name": "Matias Meno", + "email": "m@tias.me", + "web": "http://www.colorglare.com" + } + ], + "contributors": [ + { + "name": "Matias Meno", + "email": "m@tias.me", + "web": "http://www.colorglare.com" + } + ], + "scripts": { + "test": "grunt && npm run test-prebuilt", + "test-prebuilt": "mocha-headless-chrome -f test/test-prebuilt.html -a no-sandbox -a disable-setuid-sandbox" + }, + "bugs": { + "email": "m@tias.me", + "url": "https://gitlab.com/meno/dropzone/issues" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://gitlab.com/meno/dropzone.git" + } +} diff --git a/admin/vendors/summernote/dist/font/summernote.eot b/admin/vendors/summernote/dist/font/summernote.eot new file mode 100644 index 0000000000000000000000000000000000000000..4f047db9a0e2df65099bbd7173951f3c80b7129e Binary files /dev/null and b/admin/vendors/summernote/dist/font/summernote.eot differ diff --git a/admin/vendors/summernote/dist/font/summernote.ttf b/admin/vendors/summernote/dist/font/summernote.ttf new file mode 100644 index 0000000000000000000000000000000000000000..64ef84c145cf08f0aa62e6d7c0bfb1f3a4793da9 Binary files /dev/null and b/admin/vendors/summernote/dist/font/summernote.ttf differ diff --git a/admin/vendors/summernote/dist/font/summernote.woff b/admin/vendors/summernote/dist/font/summernote.woff new file mode 100644 index 0000000000000000000000000000000000000000..dfd4f6626b1045270b4cee325b8455c342c52d13 Binary files /dev/null and b/admin/vendors/summernote/dist/font/summernote.woff differ diff --git a/admin/vendors/summernote/dist/font/summernote.woff2 b/admin/vendors/summernote/dist/font/summernote.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..40b203082895ff304978af0f3527639f90c2a29b Binary files /dev/null and b/admin/vendors/summernote/dist/font/summernote.woff2 differ diff --git a/admin/vendors/summernote/dist/lang/summernote-ar-AR.js b/admin/vendors/summernote/dist/lang/summernote-ar-AR.js new file mode 100644 index 0000000000000000000000000000000000000000..fb2adc33eb275042b28ee28ff73cc6a5d640cfe7 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ar-AR.js @@ -0,0 +1,274 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 7); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 7: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ar-AR': { + font: { + bold: 'عريض', + italic: 'مائل', + underline: 'تحته خط', + clear: 'مسح التنسيق', + height: 'إرتفاع السطر', + name: 'الخط', + strikethrough: 'فى وسطه خط', + subscript: 'مخطوطة', + superscript: 'حرف فوقي', + size: 'الحجم' + }, + image: { + image: 'صورة', + insert: 'إضافة صورة', + resizeFull: 'الحجم بالكامل', + resizeHalf: 'تصغير للنصف', + resizeQuarter: 'تصغير للربع', + floatLeft: 'تطيير لليسار', + floatRight: 'تطيير لليمين', + floatNone: 'ثابته', + shapeRounded: 'الشكل: تقريب', + shapeCircle: 'الشكل: دائرة', + shapeThumbnail: 'الشكل: صورة مصغرة', + shapeNone: 'الشكل: لا شيء', + dragImageHere: 'إدرج الصورة هنا', + dropImage: 'إسقاط صورة أو نص', + selectFromFiles: 'حدد ملف', + maximumFileSize: 'الحد الأقصى لحجم الملف', + maximumFileSizeError: 'تم تجاوز الحد الأقصى لحجم الملف', + url: 'رابط الصورة', + remove: 'حذف الصورة', + original: 'Original' + }, + video: { + video: 'فيديو', + videoLink: 'رابط الفيديو', + insert: 'إدراج الفيديو', + url: 'رابط الفيديو', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'رابط', + insert: 'إدراج', + unlink: 'حذف الرابط', + edit: 'تعديل', + textToDisplay: 'النص', + url: 'مسار الرابط', + openInNewWindow: 'فتح في نافذة جديدة' + }, + table: { + table: 'جدول', + addRowAbove: 'إضافة سطر أعلاه', + addRowBelow: 'إضافة سطر أدناه', + addColLeft: 'إضافة عمود قبله', + addColRight: 'إضافة عمود بعده', + delRow: 'حذف سطر', + delCol: 'حذف عمود', + delTable: 'حذف الجدول' + }, + hr: { + insert: 'إدراج خط أفقي' + }, + style: { + style: 'تنسيق', + p: 'عادي', + blockquote: 'إقتباس', + pre: 'شفيرة', + h1: 'عنوان رئيسي 1', + h2: 'عنوان رئيسي 2', + h3: 'عنوان رئيسي 3', + h4: 'عنوان رئيسي 4', + h5: 'عنوان رئيسي 5', + h6: 'عنوان رئيسي 6' + }, + lists: { + unordered: 'قائمة مُنقطة', + ordered: 'قائمة مُرقمة' + }, + options: { + help: 'مساعدة', + fullscreen: 'حجم الشاشة بالكامل', + codeview: 'شفيرة المصدر' + }, + paragraph: { + paragraph: 'فقرة', + outdent: 'محاذاة للخارج', + indent: 'محاذاة للداخل', + left: 'محاذاة لليسار', + center: 'توسيط', + right: 'محاذاة لليمين', + justify: 'ملئ السطر' + }, + color: { + recent: 'تم إستخدامه', + more: 'المزيد', + background: 'لون الخلفية', + foreground: 'لون النص', + transparent: 'شفاف', + setTransparent: 'بدون خلفية', + reset: 'إعادة الضبط', + resetToDefault: 'إعادة الضبط', + cpSelect: 'اختار' + }, + shortcut: { + shortcuts: 'إختصارات', + close: 'غلق', + textFormatting: 'تنسيق النص', + action: 'Action', + paragraphFormatting: 'تنسيق الفقرة', + documentStyle: 'تنسيق المستند', + extraKeys: 'أزرار إضافية' + }, + help: { + 'insertParagraph': 'إدراج فقرة', + 'undo': 'تراجع عن آخر أمر', + 'redo': 'إعادة تنفيذ آخر أمر', + 'tab': 'إزاحة (تاب)', + 'untab': 'سحب النص باتجاه البداية', + 'bold': 'تنسيق عريض', + 'italic': 'تنسيق مائل', + 'underline': 'تنسيق خط سفلي', + 'strikethrough': 'تنسيق خط متوسط للنص', + 'removeFormat': 'إزالة التنسيقات', + 'justifyLeft': 'محاذاة لليسار', + 'justifyCenter': 'محاذاة توسيط', + 'justifyRight': 'محاذاة لليمين', + 'justifyFull': 'محاذاة كاملة', + 'insertUnorderedList': 'قائمة منقّطة', + 'insertOrderedList': 'قائمة مرقّمة', + 'outdent': 'إزاحة للأمام على الفقرة الحالية', + 'indent': 'إزاحة للخلف على الفقرة الحالية', + 'formatPara': 'تغيير التنسيق للكتلة الحالية إلى فقرة', + 'formatH1': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 1', + 'formatH2': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 2', + 'formatH3': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 3', + 'formatH4': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 4', + 'formatH5': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 5', + 'formatH6': 'تغيير التنسيق للكتلة الحالية إلى ترويسة 6', + 'insertHorizontalRule': 'إدراج خط أفقي', + 'linkDialog.show': 'إظهار خصائص الرابط' + }, + history: { + undo: 'تراجع', + redo: 'إعادة' + }, + specialChar: { + specialChar: 'محارف خاصة', + select: 'اختر المحرف الخاص' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ar-AR.min.js b/admin/vendors/summernote/dist/lang/summernote-ar-AR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..159b47a5f1ab39d326591e5d93f5072d90d5bf38 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ar-AR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ar-AR.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=7)}({7:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"ar-AR":{font:{bold:"عريض",italic:"مائل",underline:"تحته خط",clear:"مسح التنسيق",height:"إرتفاع السطر",name:"الخط",strikethrough:"فى وسطه خط",subscript:"مخطوطة",superscript:"حرف فوقي",size:"الحجم"},image:{image:"صورة",insert:"إضافة صورة",resizeFull:"الحجم بالكامل",resizeHalf:"تصغير للنصف",resizeQuarter:"تصغير للربع",floatLeft:"تطيير لليسار",floatRight:"تطيير لليمين",floatNone:"ثابته",shapeRounded:"الشكل: تقريب",shapeCircle:"الشكل: دائرة",shapeThumbnail:"الشكل: صورة مصغرة",shapeNone:"الشكل: لا شيء",dragImageHere:"إدرج الصورة هنا",dropImage:"إسقاط صورة أو نص",selectFromFiles:"حدد ملف",maximumFileSize:"الحد الأقصى لحجم الملف",maximumFileSizeError:"تم تجاوز الحد الأقصى لحجم الملف",url:"رابط الصورة",remove:"حذف الصورة",original:"Original"},video:{video:"فيديو",videoLink:"رابط الفيديو",insert:"إدراج الفيديو",url:"رابط الفيديو",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"رابط",insert:"إدراج",unlink:"حذف الرابط",edit:"تعديل",textToDisplay:"النص",url:"مسار الرابط",openInNewWindow:"فتح في نافذة جديدة"},table:{table:"جدول",addRowAbove:"إضافة سطر أعلاه",addRowBelow:"إضافة سطر أدناه",addColLeft:"إضافة عمود قبله",addColRight:"إضافة عمود بعده",delRow:"حذف سطر",delCol:"حذف عمود",delTable:"حذف الجدول"},hr:{insert:"إدراج خط أفقي"},style:{style:"تنسيق",p:"عادي",blockquote:"إقتباس",pre:"شفيرة",h1:"عنوان رئيسي 1",h2:"عنوان رئيسي 2",h3:"عنوان رئيسي 3",h4:"عنوان رئيسي 4",h5:"عنوان رئيسي 5",h6:"عنوان رئيسي 6"},lists:{unordered:"قائمة مُنقطة",ordered:"قائمة مُرقمة"},options:{help:"مساعدة",fullscreen:"حجم الشاشة بالكامل",codeview:"شفيرة المصدر"},paragraph:{paragraph:"فقرة",outdent:"محاذاة للخارج",indent:"محاذاة للداخل",left:"محاذاة لليسار",center:"توسيط",right:"محاذاة لليمين",justify:"ملئ السطر"},color:{recent:"تم إستخدامه",more:"المزيد",background:"لون الخلفية",foreground:"لون النص",transparent:"شفاف",setTransparent:"بدون خلفية",reset:"إعادة الضبط",resetToDefault:"إعادة الضبط",cpSelect:"اختار"},shortcut:{shortcuts:"إختصارات",close:"غلق",textFormatting:"تنسيق النص",action:"Action",paragraphFormatting:"تنسيق الفقرة",documentStyle:"تنسيق المستند",extraKeys:"أزرار إضافية"},help:{insertParagraph:"إدراج فقرة",undo:"تراجع عن آخر أمر",redo:"إعادة تنفيذ آخر أمر",tab:"إزاحة (تاب)",untab:"سحب النص باتجاه البداية",bold:"تنسيق عريض",italic:"تنسيق مائل",underline:"تنسيق خط سفلي",strikethrough:"تنسيق خط متوسط للنص",removeFormat:"إزالة التنسيقات",justifyLeft:"محاذاة لليسار",justifyCenter:"محاذاة توسيط",justifyRight:"محاذاة لليمين",justifyFull:"محاذاة كاملة",insertUnorderedList:"قائمة منقّطة",insertOrderedList:"قائمة مرقّمة",outdent:"إزاحة للأمام على الفقرة الحالية",indent:"إزاحة للخلف على الفقرة الحالية",formatPara:"تغيير التنسيق للكتلة الحالية إلى فقرة",formatH1:"تغيير التنسيق للكتلة الحالية إلى ترويسة 1",formatH2:"تغيير التنسيق للكتلة الحالية إلى ترويسة 2",formatH3:"تغيير التنسيق للكتلة الحالية إلى ترويسة 3",formatH4:"تغيير التنسيق للكتلة الحالية إلى ترويسة 4",formatH5:"تغيير التنسيق للكتلة الحالية إلى ترويسة 5",formatH6:"تغيير التنسيق للكتلة الحالية إلى ترويسة 6",insertHorizontalRule:"إدراج خط أفقي","linkDialog.show":"إظهار خصائص الرابط"},history:{undo:"تراجع",redo:"إعادة"},specialChar:{specialChar:"محارف خاصة",select:"اختر المحرف الخاص"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-bg-BG.js b/admin/vendors/summernote/dist/lang/summernote-bg-BG.js new file mode 100644 index 0000000000000000000000000000000000000000..1cb858815b6916c9685386ab5969f3335373b60f --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-bg-BG.js @@ -0,0 +1,274 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 9); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 9: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'bg-BG': { + font: { + bold: 'Удебелен', + italic: 'Наклонен', + underline: 'Подчертан', + clear: 'Изчисти стиловете', + height: 'Височина', + name: 'Шрифт', + strikethrough: 'Задраскано', + subscript: 'Долен индекс', + superscript: 'Горен индекс', + size: 'Размер на шрифта' + }, + image: { + image: 'Изображение', + insert: 'Постави картинка', + resizeFull: 'Цял размер', + resizeHalf: 'Размер на 50%', + resizeQuarter: 'Размер на 25%', + floatLeft: 'Подравни в ляво', + floatRight: 'Подравни в дясно', + floatNone: 'Без подравняване', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Пуснете изображението тук', + dropImage: 'Drop image or Text', + selectFromFiles: 'Изберете файл', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL адрес на изображение', + remove: 'Премахни изображение', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Връзка', + insert: 'Добави връзка', + unlink: 'Премахни връзка', + edit: 'Промени', + textToDisplay: 'Текст за показване', + url: 'URL адрес', + openInNewWindow: 'Отвори в нов прозорец' + }, + table: { + table: 'Таблица', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Добави хоризонтална линия' + }, + style: { + style: 'Стил', + p: 'Нормален', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавие 1', + h2: 'Заглавие 2', + h3: 'Заглавие 3', + h4: 'Заглавие 4', + h5: 'Заглавие 5', + h6: 'Заглавие 6' + }, + lists: { + unordered: 'Символен списък', + ordered: 'Цифров списък' + }, + options: { + help: 'Помощ', + fullscreen: 'На цял екран', + codeview: 'Преглед на код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Намаляване на отстъпа', + indent: 'Абзац', + left: 'Подравняване в ляво', + center: 'Център', + right: 'Подравняване в дясно', + justify: 'Разтягане по ширина' + }, + color: { + recent: 'Последния избран цвят', + more: 'Още цветове', + background: 'Цвят на фона', + foreground: 'Цвят на шрифта', + transparent: 'Прозрачен', + setTransparent: 'Направете прозрачен', + reset: 'Възстанови', + resetToDefault: 'Възстанови оригиналните', + cpSelect: 'Изберете' + }, + shortcut: { + shortcuts: 'Клавишни комбинации', + close: 'Затвори', + textFormatting: 'Форматиране на текста', + action: 'Действие', + paragraphFormatting: 'Форматиране на параграф', + documentStyle: 'Стил на документа', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Назад', + redo: 'Напред' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-bg-BG.min.js b/admin/vendors/summernote/dist/lang/summernote-bg-BG.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ee6526c2d54d50a3c8e64b4cd78440d68a450025 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-bg-BG.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-bg-BG.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}({9:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"bg-BG":{font:{bold:"Удебелен",italic:"Наклонен",underline:"Подчертан",clear:"Изчисти стиловете",height:"Височина",name:"Шрифт",strikethrough:"Задраскано",subscript:"Долен индекс",superscript:"Горен индекс",size:"Размер на шрифта"},image:{image:"Изображение",insert:"Постави картинка",resizeFull:"Цял размер",resizeHalf:"Размер на 50%",resizeQuarter:"Размер на 25%",floatLeft:"Подравни в ляво",floatRight:"Подравни в дясно",floatNone:"Без подравняване",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Пуснете изображението тук",dropImage:"Drop image or Text",selectFromFiles:"Изберете файл",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL адрес на изображение",remove:"Премахни изображение",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Връзка",insert:"Добави връзка",unlink:"Премахни връзка",edit:"Промени",textToDisplay:"Текст за показване",url:"URL адрес",openInNewWindow:"Отвори в нов прозорец"},table:{table:"Таблица",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Добави хоризонтална линия"},style:{style:"Стил",p:"Нормален",blockquote:"Цитат",pre:"Код",h1:"Заглавие 1",h2:"Заглавие 2",h3:"Заглавие 3",h4:"Заглавие 4",h5:"Заглавие 5",h6:"Заглавие 6"},lists:{unordered:"Символен списък",ordered:"Цифров списък"},options:{help:"Помощ",fullscreen:"На цял екран",codeview:"Преглед на код"},paragraph:{paragraph:"Параграф",outdent:"Намаляване на отстъпа",indent:"Абзац",left:"Подравняване в ляво",center:"Център",right:"Подравняване в дясно",justify:"Разтягане по ширина"},color:{recent:"Последния избран цвят",more:"Още цветове",background:"Цвят на фона",foreground:"Цвят на шрифта",transparent:"Прозрачен",setTransparent:"Направете прозрачен",reset:"Възстанови",resetToDefault:"Възстанови оригиналните",cpSelect:"Изберете"},shortcut:{shortcuts:"Клавишни комбинации",close:"Затвори",textFormatting:"Форматиране на текста",action:"Действие",paragraphFormatting:"Форматиране на параграф",documentStyle:"Стил на документа",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Назад",redo:"Напред"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ca-ES.js b/admin/vendors/summernote/dist/lang/summernote-ca-ES.js new file mode 100644 index 0000000000000000000000000000000000000000..8be372a89aae3dfc5d8d48d0fb9b073749bbf472 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ca-ES.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 10); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 10: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ca-ES': { + font: { + bold: 'Negreta', + italic: 'Cursiva', + underline: 'Subratllat', + clear: 'Treure estil de lletra', + height: 'Alçada de línia', + name: 'Font', + strikethrough: 'Ratllat', + subscript: 'Subíndex', + superscript: 'Superíndex', + size: 'Mida de lletra' + }, + image: { + image: 'Imatge', + insert: 'Inserir imatge', + resizeFull: 'Redimensionar a mida completa', + resizeHalf: 'Redimensionar a la meitat', + resizeQuarter: 'Redimensionar a un quart', + floatLeft: 'Alinear a l\'esquerra', + floatRight: 'Alinear a la dreta', + floatNone: 'No alinear', + shapeRounded: 'Forma: Arrodonit', + shapeCircle: 'Forma: Cercle', + shapeThumbnail: 'Forma: Marc', + shapeNone: 'Forma: Cap', + dragImageHere: 'Arrossegueu una imatge o text aquí', + dropImage: 'Deixa anar aquí una imatge o un text', + selectFromFiles: 'Seleccioneu des dels arxius', + maximumFileSize: 'Mida màxima de l\'arxiu', + maximumFileSizeError: 'La mida màxima de l\'arxiu s\'ha superat.', + url: 'URL de la imatge', + remove: 'Eliminar imatge', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Enllaç del vídeo', + insert: 'Inserir vídeo', + url: 'URL del vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Enllaç', + insert: 'Inserir enllaç', + unlink: 'Treure enllaç', + edit: 'Editar', + textToDisplay: 'Text per mostrar', + url: 'Cap a quina URL porta l\'enllaç?', + openInNewWindow: 'Obrir en una finestra nova' + }, + table: { + table: 'Taula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserir línia horitzontal' + }, + style: { + style: 'Estil', + p: 'p', + blockquote: 'Cita', + pre: 'Codi', + h1: 'Títol 1', + h2: 'Títol 2', + h3: 'Títol 3', + h4: 'Títol 4', + h5: 'Títol 5', + h6: 'Títol 6' + }, + lists: { + unordered: 'Llista desendreçada', + ordered: 'Llista endreçada' + }, + options: { + help: 'Ajut', + fullscreen: 'Pantalla sencera', + codeview: 'Veure codi font' + }, + paragraph: { + paragraph: 'Paràgraf', + outdent: 'Menys tabulació', + indent: 'Més tabulació', + left: 'Alinear a l\'esquerra', + center: 'Alinear al mig', + right: 'Alinear a la dreta', + justify: 'Justificar' + }, + color: { + recent: 'Últim color', + more: 'Més colors', + background: 'Color de fons', + foreground: 'Color de lletra', + transparent: 'Transparent', + setTransparent: 'Establir transparent', + reset: 'Restablir', + resetToDefault: 'Restablir per defecte' + }, + shortcut: { + shortcuts: 'Dreceres de teclat', + close: 'Tancar', + textFormatting: 'Format de text', + action: 'Acció', + paragraphFormatting: 'Format de paràgraf', + documentStyle: 'Estil del document', + extraKeys: 'Tecles adicionals' + }, + help: { + 'insertParagraph': 'Inserir paràgraf', + 'undo': 'Desfer l\'última acció', + 'redo': 'Refer l\'última acció', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulació', + 'bold': 'Establir estil negreta', + 'italic': 'Establir estil cursiva', + 'underline': 'Establir estil subratllat', + 'strikethrough': 'Establir estil ratllat', + 'removeFormat': 'Netejar estil', + 'justifyLeft': 'Alinear a l\'esquerra', + 'justifyCenter': 'Alinear al centre', + 'justifyRight': 'Alinear a la dreta', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Inserir llista desendreçada', + 'insertOrderedList': 'Inserir llista endreçada', + 'outdent': 'Reduïr tabulació del paràgraf', + 'indent': 'Augmentar tabulació del paràgraf', + 'formatPara': 'Canviar l\'estil del bloc com a un paràgraf (etiqueta P)', + 'formatH1': 'Canviar l\'estil del bloc com a un H1', + 'formatH2': 'Canviar l\'estil del bloc com a un H2', + 'formatH3': 'Canviar l\'estil del bloc com a un H3', + 'formatH4': 'Canviar l\'estil del bloc com a un H4', + 'formatH5': 'Canviar l\'estil del bloc com a un H5', + 'formatH6': 'Canviar l\'estil del bloc com a un H6', + 'insertHorizontalRule': 'Inserir una línia horitzontal', + 'linkDialog.show': 'Mostrar panel d\'enllaços' + }, + history: { + undo: 'Desfer', + redo: 'Refer' + }, + specialChar: { + specialChar: 'CARÀCTERS ESPECIALS', + select: 'Selecciona caràcters especials' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ca-ES.min.js b/admin/vendors/summernote/dist/lang/summernote-ca-ES.min.js new file mode 100644 index 0000000000000000000000000000000000000000..40b6c45168d19bc1e7c650a7a0e17ab934d6b583 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ca-ES.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ca-ES.min.js.LICENSE.txt */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var t in r)("object"==typeof exports?exports:e)[t]=r[t]}}(window,(function(){return function(e){var a={};function r(t){if(a[t])return a[t].exports;var l=a[t]={i:t,l:!1,exports:{}};return e[t].call(l.exports,l,l.exports,r),l.l=!0,l.exports}return r.m=e,r.c=a,r.d=function(e,a,t){r.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,a){if(1&a&&(e=r(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var l in e)r.d(t,l,function(a){return e[a]}.bind(null,l));return t},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="",r(r.s=10)}({10:function(e,a){var r;(r=jQuery).extend(r.summernote.lang,{"ca-ES":{font:{bold:"Negreta",italic:"Cursiva",underline:"Subratllat",clear:"Treure estil de lletra",height:"Alçada de línia",name:"Font",strikethrough:"Ratllat",subscript:"Subíndex",superscript:"Superíndex",size:"Mida de lletra"},image:{image:"Imatge",insert:"Inserir imatge",resizeFull:"Redimensionar a mida completa",resizeHalf:"Redimensionar a la meitat",resizeQuarter:"Redimensionar a un quart",floatLeft:"Alinear a l'esquerra",floatRight:"Alinear a la dreta",floatNone:"No alinear",shapeRounded:"Forma: Arrodonit",shapeCircle:"Forma: Cercle",shapeThumbnail:"Forma: Marc",shapeNone:"Forma: Cap",dragImageHere:"Arrossegueu una imatge o text aquí",dropImage:"Deixa anar aquí una imatge o un text",selectFromFiles:"Seleccioneu des dels arxius",maximumFileSize:"Mida màxima de l'arxiu",maximumFileSizeError:"La mida màxima de l'arxiu s'ha superat.",url:"URL de la imatge",remove:"Eliminar imatge",original:"Original"},video:{video:"Vídeo",videoLink:"Enllaç del vídeo",insert:"Inserir vídeo",url:"URL del vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Enllaç",insert:"Inserir enllaç",unlink:"Treure enllaç",edit:"Editar",textToDisplay:"Text per mostrar",url:"Cap a quina URL porta l'enllaç?",openInNewWindow:"Obrir en una finestra nova"},table:{table:"Taula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserir línia horitzontal"},style:{style:"Estil",p:"p",blockquote:"Cita",pre:"Codi",h1:"Títol 1",h2:"Títol 2",h3:"Títol 3",h4:"Títol 4",h5:"Títol 5",h6:"Títol 6"},lists:{unordered:"Llista desendreçada",ordered:"Llista endreçada"},options:{help:"Ajut",fullscreen:"Pantalla sencera",codeview:"Veure codi font"},paragraph:{paragraph:"Paràgraf",outdent:"Menys tabulació",indent:"Més tabulació",left:"Alinear a l'esquerra",center:"Alinear al mig",right:"Alinear a la dreta",justify:"Justificar"},color:{recent:"Últim color",more:"Més colors",background:"Color de fons",foreground:"Color de lletra",transparent:"Transparent",setTransparent:"Establir transparent",reset:"Restablir",resetToDefault:"Restablir per defecte"},shortcut:{shortcuts:"Dreceres de teclat",close:"Tancar",textFormatting:"Format de text",action:"Acció",paragraphFormatting:"Format de paràgraf",documentStyle:"Estil del document",extraKeys:"Tecles adicionals"},help:{insertParagraph:"Inserir paràgraf",undo:"Desfer l'última acció",redo:"Refer l'última acció",tab:"Tabular",untab:"Eliminar tabulació",bold:"Establir estil negreta",italic:"Establir estil cursiva",underline:"Establir estil subratllat",strikethrough:"Establir estil ratllat",removeFormat:"Netejar estil",justifyLeft:"Alinear a l'esquerra",justifyCenter:"Alinear al centre",justifyRight:"Alinear a la dreta",justifyFull:"Justificar",insertUnorderedList:"Inserir llista desendreçada",insertOrderedList:"Inserir llista endreçada",outdent:"Reduïr tabulació del paràgraf",indent:"Augmentar tabulació del paràgraf",formatPara:"Canviar l'estil del bloc com a un paràgraf (etiqueta P)",formatH1:"Canviar l'estil del bloc com a un H1",formatH2:"Canviar l'estil del bloc com a un H2",formatH3:"Canviar l'estil del bloc com a un H3",formatH4:"Canviar l'estil del bloc com a un H4",formatH5:"Canviar l'estil del bloc com a un H5",formatH6:"Canviar l'estil del bloc com a un H6",insertHorizontalRule:"Inserir una línia horitzontal","linkDialog.show":"Mostrar panel d'enllaços"},history:{undo:"Desfer",redo:"Refer"},specialChar:{specialChar:"CARÀCTERS ESPECIALS",select:"Selecciona caràcters especials"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-cs-CZ.js b/admin/vendors/summernote/dist/lang/summernote-cs-CZ.js new file mode 100644 index 0000000000000000000000000000000000000000..4e7a15b1d386b602c9ba3f3c658e311889b30a8a --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-cs-CZ.js @@ -0,0 +1,268 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 11); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 11: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'cs-CZ': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podtržené', + clear: 'Odstranit styl písma', + height: 'Výška řádku', + strikethrough: 'Přeškrtnuté', + size: 'Velikost písma' + }, + image: { + image: 'Obrázek', + insert: 'Vložit obrázek', + resizeFull: 'Původní velikost', + resizeHalf: 'Poloviční velikost', + resizeQuarter: 'Čtvrteční velikost', + floatLeft: 'Umístit doleva', + floatRight: 'Umístit doprava', + floatNone: 'Neobtékat textem', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Přetáhnout sem obrázek', + dropImage: 'Drop image or Text', + selectFromFiles: 'Vybrat soubor', + url: 'URL obrázku', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložit video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvořit odkaz', + unlink: 'Zrušit odkaz', + edit: 'Upravit', + textToDisplay: 'Zobrazovaný text', + url: 'Na jaké URL má tento odkaz vést?', + openInNewWindow: 'Otevřít v novém okně' + }, + table: { + table: 'Tabulka', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Vložit vodorovnou čáru' + }, + style: { + style: 'Styl', + p: 'Normální', + blockquote: 'Citace', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový seznam', + ordered: 'Číselný seznam' + }, + options: { + help: 'Nápověda', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odstavec', + outdent: 'Zvětšit odsazení', + indent: 'Zmenšit odsazení', + left: 'Zarovnat doleva', + center: 'Zarovnat na střed', + right: 'Zarovnat doprava', + justify: 'Zarovnat oboustranně' + }, + color: { + recent: 'Aktuální barva', + more: 'Další barvy', + background: 'Barva pozadí', + foreground: 'Barva písma', + transparent: 'Průhlednost', + setTransparent: 'Nastavit průhlednost', + reset: 'Obnovit', + resetToDefault: 'Obnovit výchozí', + cpSelect: 'Vybrat' + }, + shortcut: { + shortcuts: 'Klávesové zkratky', + close: 'Zavřít', + textFormatting: 'Formátování textu', + action: 'Akce', + paragraphFormatting: 'Formátování odstavce', + documentStyle: 'Styl dokumentu' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok vpřed' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-cs-CZ.min.js b/admin/vendors/summernote/dist/lang/summernote-cs-CZ.min.js new file mode 100644 index 0000000000000000000000000000000000000000..4614db17f2834261478e170f185b29b1b4a30a37 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-cs-CZ.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-cs-CZ.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(o,a,function(t){return e[t]}.bind(null,a));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=11)}({11:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"cs-CZ":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podtržené",clear:"Odstranit styl písma",height:"Výška řádku",strikethrough:"Přeškrtnuté",size:"Velikost písma"},image:{image:"Obrázek",insert:"Vložit obrázek",resizeFull:"Původní velikost",resizeHalf:"Poloviční velikost",resizeQuarter:"Čtvrteční velikost",floatLeft:"Umístit doleva",floatRight:"Umístit doprava",floatNone:"Neobtékat textem",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Přetáhnout sem obrázek",dropImage:"Drop image or Text",selectFromFiles:"Vybrat soubor",url:"URL obrázku",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložit video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion nebo Youku)"},link:{link:"Odkaz",insert:"Vytvořit odkaz",unlink:"Zrušit odkaz",edit:"Upravit",textToDisplay:"Zobrazovaný text",url:"Na jaké URL má tento odkaz vést?",openInNewWindow:"Otevřít v novém okně"},table:{table:"Tabulka",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Vložit vodorovnou čáru"},style:{style:"Styl",p:"Normální",blockquote:"Citace",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový seznam",ordered:"Číselný seznam"},options:{help:"Nápověda",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odstavec",outdent:"Zvětšit odsazení",indent:"Zmenšit odsazení",left:"Zarovnat doleva",center:"Zarovnat na střed",right:"Zarovnat doprava",justify:"Zarovnat oboustranně"},color:{recent:"Aktuální barva",more:"Další barvy",background:"Barva pozadí",foreground:"Barva písma",transparent:"Průhlednost",setTransparent:"Nastavit průhlednost",reset:"Obnovit",resetToDefault:"Obnovit výchozí",cpSelect:"Vybrat"},shortcut:{shortcuts:"Klávesové zkratky",close:"Zavřít",textFormatting:"Formátování textu",action:"Akce",paragraphFormatting:"Formátování odstavce",documentStyle:"Styl dokumentu"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Krok vzad",redo:"Krok vpřed"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-da-DK.js b/admin/vendors/summernote/dist/lang/summernote-da-DK.js new file mode 100644 index 0000000000000000000000000000000000000000..46e6ca59bceef8ebd8913df96877aff1a3aee638 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-da-DK.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 12); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 12: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'da-DK': { + font: { + bold: 'Fed', + italic: 'Kursiv', + underline: 'Understreget', + clear: 'Fjern formatering', + height: 'Højde', + name: 'Skrifttype', + strikethrough: 'Gennemstreget', + subscript: 'Sænket skrift', + superscript: 'Hævet skrift', + size: 'Skriftstørrelse' + }, + image: { + image: 'Billede', + insert: 'Indsæt billede', + resizeFull: 'Original størrelse', + resizeHalf: 'Halv størrelse', + resizeQuarter: 'Kvart størrelse', + floatLeft: 'Venstrestillet', + floatRight: 'Højrestillet', + floatNone: 'Fjern formatering', + shapeRounded: 'Form: Runde kanter', + shapeCircle: 'Form: Cirkel', + shapeThumbnail: 'Form: Miniature', + shapeNone: 'Form: Ingen', + dragImageHere: 'Træk billede hertil', + dropImage: 'Slip billede', + selectFromFiles: 'Vælg billed-fil', + maximumFileSize: 'Maks fil størrelse', + maximumFileSizeError: 'Filen er større end maks tilladte fil størrelse!', + url: 'Billede URL', + remove: 'Fjern billede', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Indsæt Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Link', + insert: 'Indsæt link', + unlink: 'Fjern link', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Hvor skal linket pege hen?', + openInNewWindow: 'Åbn i nyt vindue' + }, + table: { + table: 'Tabel', + addRowAbove: 'Tilføj række over', + addRowBelow: 'Tilføj række under', + addColLeft: 'Tilføj venstre kolonne', + addColRight: 'Tilføj højre kolonne', + delRow: 'Slet række', + delCol: 'Slet kolonne', + delTable: 'Slet tabel' + }, + hr: { + insert: 'Indsæt horisontal linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktopstillet liste', + ordered: 'Nummereret liste' + }, + options: { + help: 'Hjælp', + fullscreen: 'Fuld skærm', + codeview: 'HTML-Visning' + }, + paragraph: { + paragraph: 'Afsnit', + outdent: 'Formindsk indryk', + indent: 'Forøg indryk', + left: 'Venstrestillet', + center: 'Centreret', + right: 'Højrestillet', + justify: 'Blokjuster' + }, + color: { + recent: 'Nyligt valgt farve', + more: 'Flere farver', + background: 'Baggrund', + foreground: 'Forgrund', + transparent: 'Transparent', + setTransparent: 'Sæt transparent', + reset: 'Nulstil', + resetToDefault: 'Gendan standardindstillinger' + }, + shortcut: { + shortcuts: 'Genveje', + close: 'Luk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Afsnitsformatering', + documentStyle: 'Dokumentstil', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Indsæt paragraf', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Vis Link Dialog' + }, + history: { + undo: 'Fortryd', + redo: 'Annuller fortryd' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Vælg special karakterer' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-da-DK.min.js b/admin/vendors/summernote/dist/lang/summernote-da-DK.min.js new file mode 100644 index 0000000000000000000000000000000000000000..6d4a0309effedeb0b3e49decda366745588f6636 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-da-DK.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-da-DK.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(window,(function(){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var i in e)t.d(n,i,function(r){return e[r]}.bind(null,i));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=12)}({12:function(e,r){var t;(t=jQuery).extend(t.summernote.lang,{"da-DK":{font:{bold:"Fed",italic:"Kursiv",underline:"Understreget",clear:"Fjern formatering",height:"Højde",name:"Skrifttype",strikethrough:"Gennemstreget",subscript:"Sænket skrift",superscript:"Hævet skrift",size:"Skriftstørrelse"},image:{image:"Billede",insert:"Indsæt billede",resizeFull:"Original størrelse",resizeHalf:"Halv størrelse",resizeQuarter:"Kvart størrelse",floatLeft:"Venstrestillet",floatRight:"Højrestillet",floatNone:"Fjern formatering",shapeRounded:"Form: Runde kanter",shapeCircle:"Form: Cirkel",shapeThumbnail:"Form: Miniature",shapeNone:"Form: Ingen",dragImageHere:"Træk billede hertil",dropImage:"Slip billede",selectFromFiles:"Vælg billed-fil",maximumFileSize:"Maks fil størrelse",maximumFileSizeError:"Filen er større end maks tilladte fil størrelse!",url:"Billede URL",remove:"Fjern billede",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Indsæt Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Link",insert:"Indsæt link",unlink:"Fjern link",edit:"Rediger",textToDisplay:"Visningstekst",url:"Hvor skal linket pege hen?",openInNewWindow:"Åbn i nyt vindue"},table:{table:"Tabel",addRowAbove:"Tilføj række over",addRowBelow:"Tilføj række under",addColLeft:"Tilføj venstre kolonne",addColRight:"Tilføj højre kolonne",delRow:"Slet række",delCol:"Slet kolonne",delTable:"Slet tabel"},hr:{insert:"Indsæt horisontal linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktopstillet liste",ordered:"Nummereret liste"},options:{help:"Hjælp",fullscreen:"Fuld skærm",codeview:"HTML-Visning"},paragraph:{paragraph:"Afsnit",outdent:"Formindsk indryk",indent:"Forøg indryk",left:"Venstrestillet",center:"Centreret",right:"Højrestillet",justify:"Blokjuster"},color:{recent:"Nyligt valgt farve",more:"Flere farver",background:"Baggrund",foreground:"Forgrund",transparent:"Transparent",setTransparent:"Sæt transparent",reset:"Nulstil",resetToDefault:"Gendan standardindstillinger"},shortcut:{shortcuts:"Genveje",close:"Luk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Afsnitsformatering",documentStyle:"Dokumentstil",extraKeys:"Extra keys"},help:{insertParagraph:"Indsæt paragraf",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Vis Link Dialog"},history:{undo:"Fortryd",redo:"Annuller fortryd"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Vælg special karakterer"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-de-DE.js b/admin/vendors/summernote/dist/lang/summernote-de-DE.js new file mode 100644 index 0000000000000000000000000000000000000000..1efb27839abae682d6d127d890f933c28ec487e2 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-de-DE.js @@ -0,0 +1,274 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 13); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 13: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'de-DE': { + font: { + bold: 'Fett', + italic: 'Kursiv', + underline: 'Unterstreichen', + clear: 'Zurücksetzen', + height: 'Zeilenhöhe', + name: 'Schriftart', + strikethrough: 'Durchgestrichen', + subscript: 'Tiefgestellt', + superscript: 'Hochgestellt', + size: 'Schriftgröße' + }, + image: { + image: 'Bild', + insert: 'Bild einfügen', + resizeFull: 'Originalgröße', + resizeHalf: '1/2 Größe', + resizeQuarter: '1/4 Größe', + floatLeft: 'Linksbündig', + floatRight: 'Rechtsbündig', + floatNone: 'Kein Textfluss', + shapeRounded: 'Abgerundeter Rahmen', + shapeCircle: 'Kreisförmiger Rahmen', + shapeThumbnail: 'Rahmenvorschau', + shapeNone: 'Kein Rahmen', + dragImageHere: 'Bild hierher ziehen', + dropImage: 'Bild oder Text nehmen', + selectFromFiles: 'Datei auswählen', + maximumFileSize: 'Maximale Dateigröße', + maximumFileSizeError: 'Maximale Dateigröße überschritten', + url: 'Bild URL', + remove: 'Bild entfernen', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Videolink', + insert: 'Video einfügen', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)' + }, + link: { + link: 'Link', + insert: 'Link einfügen', + unlink: 'Link entfernen', + edit: 'Bearbeiten', + textToDisplay: 'Anzeigetext', + url: 'Link URL', + openInNewWindow: 'In neuem Fenster öffnen' + }, + table: { + table: 'Tabelle', + addRowAbove: '+ Zeile oberhalb', + addRowBelow: '+ Zeile unterhalb', + addColLeft: '+ Spalte links', + addColRight: '+ Spalte rechts', + delRow: 'Reihe löschen', + delCol: 'Spalte löschen', + delTable: 'Tabelle löschen' + }, + hr: { + insert: 'Horizontale Linie einfügen' + }, + style: { + style: 'Stil', + normal: 'Normal', + p: 'Normal', + blockquote: 'Zitat', + pre: 'Quellcode', + h1: 'Überschrift 1', + h2: 'Überschrift 2', + h3: 'Überschrift 3', + h4: 'Überschrift 4', + h5: 'Überschrift 5', + h6: 'Überschrift 6' + }, + lists: { + unordered: 'Unnummerierte Liste', + ordered: 'Nummerierte Liste' + }, + options: { + help: 'Hilfe', + fullscreen: 'Vollbild', + codeview: 'Quellcode anzeigen' + }, + paragraph: { + paragraph: 'Absatz', + outdent: 'Einzug verkleinern', + indent: 'Einzug vergrößern', + left: 'Links ausrichten', + center: 'Zentriert ausrichten', + right: 'Rechts ausrichten', + justify: 'Blocksatz' + }, + color: { + recent: 'Letzte Farbe', + more: 'Weitere Farben', + background: 'Hintergrundfarbe', + foreground: 'Schriftfarbe', + transparent: 'Transparenz', + setTransparent: 'Transparenz setzen', + reset: 'Zurücksetzen', + resetToDefault: 'Auf Standard zurücksetzen' + }, + shortcut: { + shortcuts: 'Tastenkürzel', + close: 'Schließen', + textFormatting: 'Textformatierung', + action: 'Aktion', + paragraphFormatting: 'Absatzformatierung', + documentStyle: 'Dokumentenstil', + extraKeys: 'Weitere Tasten' + }, + help: { + 'insertParagraph': 'Absatz einfügen', + 'undo': 'Letzte Anweisung rückgängig', + 'redo': 'Letzte Anweisung wiederholen', + 'tab': 'Einzug hinzufügen', + 'untab': 'Einzug entfernen', + 'bold': 'Schrift Fett', + 'italic': 'Schrift Kursiv', + 'underline': 'Unterstreichen', + 'strikethrough': 'Durchstreichen', + 'removeFormat': 'Entfernt Format', + 'justifyLeft': 'Linksbündig', + 'justifyCenter': 'Mittig', + 'justifyRight': 'Rechtsbündig', + 'justifyFull': 'Blocksatz', + 'insertUnorderedList': 'Unnummerierte Liste', + 'insertOrderedList': 'Nummerierte Liste', + 'outdent': 'Aktuellen Absatz ausrücken', + 'indent': 'Aktuellen Absatz einrücken', + 'formatPara': 'Formatiert aktuellen Block als Absatz (P-Tag)', + 'formatH1': 'Formatiert aktuellen Block als H1', + 'formatH2': 'Formatiert aktuellen Block als H2', + 'formatH3': 'Formatiert aktuellen Block als H3', + 'formatH4': 'Formatiert aktuellen Block als H4', + 'formatH5': 'Formatiert aktuellen Block als H5', + 'formatH6': 'Formatiert aktuellen Block als H6', + 'insertHorizontalRule': 'Fügt eine horizontale Linie ein', + 'linkDialog.show': 'Zeigt Linkdialog' + }, + history: { + undo: 'Rückgängig', + redo: 'Wiederholen' + }, + specialChar: { + specialChar: 'Sonderzeichen', + select: 'Zeichen auswählen' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-de-DE.min.js b/admin/vendors/summernote/dist/lang/summernote-de-DE.min.js new file mode 100644 index 0000000000000000000000000000000000000000..f28654985993d48a30aff4e28889a919b08d3220 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-de-DE.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-de-DE.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=13)}({13:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"de-DE":{font:{bold:"Fett",italic:"Kursiv",underline:"Unterstreichen",clear:"Zurücksetzen",height:"Zeilenhöhe",name:"Schriftart",strikethrough:"Durchgestrichen",subscript:"Tiefgestellt",superscript:"Hochgestellt",size:"Schriftgröße"},image:{image:"Bild",insert:"Bild einfügen",resizeFull:"Originalgröße",resizeHalf:"1/2 Größe",resizeQuarter:"1/4 Größe",floatLeft:"Linksbündig",floatRight:"Rechtsbündig",floatNone:"Kein Textfluss",shapeRounded:"Abgerundeter Rahmen",shapeCircle:"Kreisförmiger Rahmen",shapeThumbnail:"Rahmenvorschau",shapeNone:"Kein Rahmen",dragImageHere:"Bild hierher ziehen",dropImage:"Bild oder Text nehmen",selectFromFiles:"Datei auswählen",maximumFileSize:"Maximale Dateigröße",maximumFileSizeError:"Maximale Dateigröße überschritten",url:"Bild URL",remove:"Bild entfernen",original:"Original"},video:{video:"Video",videoLink:"Videolink",insert:"Video einfügen",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion oder Youku)"},link:{link:"Link",insert:"Link einfügen",unlink:"Link entfernen",edit:"Bearbeiten",textToDisplay:"Anzeigetext",url:"Link URL",openInNewWindow:"In neuem Fenster öffnen"},table:{table:"Tabelle",addRowAbove:"+ Zeile oberhalb",addRowBelow:"+ Zeile unterhalb",addColLeft:"+ Spalte links",addColRight:"+ Spalte rechts",delRow:"Reihe löschen",delCol:"Spalte löschen",delTable:"Tabelle löschen"},hr:{insert:"Horizontale Linie einfügen"},style:{style:"Stil",normal:"Normal",p:"Normal",blockquote:"Zitat",pre:"Quellcode",h1:"Überschrift 1",h2:"Überschrift 2",h3:"Überschrift 3",h4:"Überschrift 4",h5:"Überschrift 5",h6:"Überschrift 6"},lists:{unordered:"Unnummerierte Liste",ordered:"Nummerierte Liste"},options:{help:"Hilfe",fullscreen:"Vollbild",codeview:"Quellcode anzeigen"},paragraph:{paragraph:"Absatz",outdent:"Einzug verkleinern",indent:"Einzug vergrößern",left:"Links ausrichten",center:"Zentriert ausrichten",right:"Rechts ausrichten",justify:"Blocksatz"},color:{recent:"Letzte Farbe",more:"Weitere Farben",background:"Hintergrundfarbe",foreground:"Schriftfarbe",transparent:"Transparenz",setTransparent:"Transparenz setzen",reset:"Zurücksetzen",resetToDefault:"Auf Standard zurücksetzen"},shortcut:{shortcuts:"Tastenkürzel",close:"Schließen",textFormatting:"Textformatierung",action:"Aktion",paragraphFormatting:"Absatzformatierung",documentStyle:"Dokumentenstil",extraKeys:"Weitere Tasten"},help:{insertParagraph:"Absatz einfügen",undo:"Letzte Anweisung rückgängig",redo:"Letzte Anweisung wiederholen",tab:"Einzug hinzufügen",untab:"Einzug entfernen",bold:"Schrift Fett",italic:"Schrift Kursiv",underline:"Unterstreichen",strikethrough:"Durchstreichen",removeFormat:"Entfernt Format",justifyLeft:"Linksbündig",justifyCenter:"Mittig",justifyRight:"Rechtsbündig",justifyFull:"Blocksatz",insertUnorderedList:"Unnummerierte Liste",insertOrderedList:"Nummerierte Liste",outdent:"Aktuellen Absatz ausrücken",indent:"Aktuellen Absatz einrücken",formatPara:"Formatiert aktuellen Block als Absatz (P-Tag)",formatH1:"Formatiert aktuellen Block als H1",formatH2:"Formatiert aktuellen Block als H2",formatH3:"Formatiert aktuellen Block als H3",formatH4:"Formatiert aktuellen Block als H4",formatH5:"Formatiert aktuellen Block als H5",formatH6:"Formatiert aktuellen Block als H6",insertHorizontalRule:"Fügt eine horizontale Linie ein","linkDialog.show":"Zeigt Linkdialog"},history:{undo:"Rückgängig",redo:"Wiederholen"},specialChar:{specialChar:"Sonderzeichen",select:"Zeichen auswählen"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-el-GR.js b/admin/vendors/summernote/dist/lang/summernote-el-GR.js new file mode 100644 index 0000000000000000000000000000000000000000..f6cd30403c846565145ec1dd29e4ef134660c937 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-el-GR.js @@ -0,0 +1,281 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 14); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 14: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'el-GR': { + font: { + bold: 'Έντονα', + italic: 'Πλάγια', + underline: 'Υπογραμμισμένα', + clear: 'Καθαρισμός', + height: 'Ύψος', + name: 'Γραμματοσειρά', + strikethrough: 'Διεγραμμένα', + subscript: 'Δείκτης', + superscript: 'Εκθέτης', + size: 'Μέγεθος', + sizeunit: 'Μονάδα μεγέθους' + }, + image: { + image: 'Εικόνα', + insert: 'Εισαγωγή', + resizeFull: 'Πλήρες μέγεθος', + resizeHalf: 'Μισό μέγεθος', + resizeQuarter: '1/4 μέγεθος', + resizeNone: 'Αρχικό μέγεθος', + floatLeft: 'Μετατόπιση αριστερά', + floatRight: 'Μετατόπιση δεξιά', + floatNone: 'Χωρίς μετατόπιση', + shapeRounded: 'Σχήμα: Στρογγυλεμένο', + shapeCircle: 'Σχήμα: Κύκλος', + shapeThumbnail: 'Σχήμα: Μικρογραφία', + shapeNone: 'Σχήμα: Κανένα', + dragImageHere: 'Σύρτε την εικόνα εδώ', + dropImage: 'Αφήστε την εικόνα', + selectFromFiles: 'Επιλογή από αρχεία', + maximumFileSize: 'Μέγιστο μέγεθος αρχείου', + maximumFileSizeError: 'Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.', + url: 'URL', + remove: 'Αφαίρεση', + original: 'Αρχικό' + }, + link: { + link: 'Σύνδεσμος', + insert: 'Εισαγωγή συνδέσμου', + unlink: 'Αφαίρεση συνδέσμου', + edit: 'Επεξεργασία συνδέσμου', + textToDisplay: 'Κείμενο συνδέσμου', + url: 'Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;', + openInNewWindow: 'Άνοιγμα σε νέο παράθυρο', + useProtocol: 'Χρήση προεπιλεγμένου πρωτοκόλλου' + }, + video: { + video: 'Βίντεο', + videoLink: 'Σύνδεσμος Βίντεο', + insert: 'Εισαγωγή', + url: 'URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)' + }, + table: { + table: 'Πίνακας', + addRowAbove: 'Προσθήκη γραμμής πάνω', + addRowBelow: 'Προσθήκη γραμμής κάτω', + addColLeft: 'Προσθήκη στήλης αριστερά', + addColRight: 'Προσθήκη στήλης δεξία', + delRow: 'Διαγραφή γραμμής', + delCol: 'Διαγραφή στήλης', + delTable: 'Διαγραφή πίνακα' + }, + hr: { + insert: 'Εισαγωγή οριζόντιας γραμμής' + }, + style: { + style: 'Στυλ', + normal: 'Κανονικό', + blockquote: 'Παράθεση', + pre: 'Ως έχει', + h1: 'Κεφαλίδα 1', + h2: 'Κεφαλίδα 2', + h3: 'Κεφαλίδα 3', + h4: 'Κεφαλίδα 4', + h5: 'Κεφαλίδα 5', + h6: 'Κεφαλίδα 6' + }, + lists: { + unordered: 'Αταξινόμητη λίστα', + ordered: 'Ταξινομημένη λίστα' + }, + options: { + help: 'Βοήθεια', + fullscreen: 'Πλήρης οθόνη', + codeview: 'Προβολή HTML' + }, + paragraph: { + paragraph: 'Παράγραφος', + outdent: 'Μείωση εσοχής', + indent: 'Άυξηση εσοχής', + left: 'Αριστερή στοίχιση', + center: 'Στοίχιση στο κέντρο', + right: 'Δεξιά στοίχιση', + justify: 'Πλήρης στοίχιση' + }, + color: { + recent: 'Πρόσφατη επιλογή', + more: 'Περισσότερα', + background: 'Υπόβαθρο', + foreground: 'Μπροστά', + transparent: 'Διαφανές', + setTransparent: 'Επιλογή διαφάνειας', + reset: 'Επαναφορά', + resetToDefault: 'Επαναφορά στις προκαθορισμένες τιμές', + cpSelect: 'Επιλογή' + }, + shortcut: { + shortcuts: 'Συντομεύσεις', + close: 'Κλείσιμο', + textFormatting: 'Διαμόρφωση κειμένου', + action: 'Ενέργεια', + paragraphFormatting: 'Διαμόρφωση παραγράφου', + documentStyle: 'Στυλ κειμένου', + extraKeys: 'Επιπλέον συντομεύσεις' + }, + help: { + 'escape': 'Έξοδος', + 'insertParagraph': 'Εισαγωγή παραγράφου', + 'undo': 'Αναιρεί την προηγούμενη εντολή', + 'redo': 'Επαναλαμβάνει την προηγούμενη εντολή', + 'tab': 'Εσοχή', + 'untab': 'Αναίρεση εσοχής', + 'bold': 'Ορισμός έντονου στυλ', + 'italic': 'Ορισμός πλάγιου στυλ', + 'underline': 'Ορισμός υπογεγραμμένου στυλ', + 'strikethrough': 'Ορισμός διεγραμμένου στυλ', + 'removeFormat': 'Αφαίρεση στυλ', + 'justifyLeft': 'Ορισμός αριστερής στοίχισης', + 'justifyCenter': 'Ορισμός κεντρικής στοίχισης', + 'justifyRight': 'Ορισμός δεξιάς στοίχισης', + 'justifyFull': 'Ορισμός πλήρους στοίχισης', + 'insertUnorderedList': 'Ορισμός μη-ταξινομημένης λίστας', + 'insertOrderedList': 'Ορισμός ταξινομημένης λίστας', + 'outdent': 'Προεξοχή παραγράφου', + 'indent': 'Εσοχή παραγράφου', + 'formatPara': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)', + 'formatH1': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1', + 'formatH2': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2', + 'formatH3': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3', + 'formatH4': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4', + 'formatH5': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5', + 'formatH6': 'Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6', + 'insertHorizontalRule': 'Εισαγωγή οριζόντιας γραμμής', + 'linkDialog.show': 'Εμφάνιση διαλόγου συνδέσμου' + }, + history: { + undo: 'Αναίρεση', + redo: 'Επαναληψη' + }, + specialChar: { + specialChar: 'ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ', + select: 'Επιλέξτε ειδικούς χαρακτήρες' + }, + output: { + noSelection: 'Δεν έγινε επιλογή!' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-el-GR.min.js b/admin/vendors/summernote/dist/lang/summernote-el-GR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..8d79c16b687a6710933fecbd4a7f4eed04b630ac --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-el-GR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-el-GR.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=14)}({14:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"el-GR":{font:{bold:"Έντονα",italic:"Πλάγια",underline:"Υπογραμμισμένα",clear:"Καθαρισμός",height:"Ύψος",name:"Γραμματοσειρά",strikethrough:"Διεγραμμένα",subscript:"Δείκτης",superscript:"Εκθέτης",size:"Μέγεθος",sizeunit:"Μονάδα μεγέθους"},image:{image:"Εικόνα",insert:"Εισαγωγή",resizeFull:"Πλήρες μέγεθος",resizeHalf:"Μισό μέγεθος",resizeQuarter:"1/4 μέγεθος",resizeNone:"Αρχικό μέγεθος",floatLeft:"Μετατόπιση αριστερά",floatRight:"Μετατόπιση δεξιά",floatNone:"Χωρίς μετατόπιση",shapeRounded:"Σχήμα: Στρογγυλεμένο",shapeCircle:"Σχήμα: Κύκλος",shapeThumbnail:"Σχήμα: Μικρογραφία",shapeNone:"Σχήμα: Κανένα",dragImageHere:"Σύρτε την εικόνα εδώ",dropImage:"Αφήστε την εικόνα",selectFromFiles:"Επιλογή από αρχεία",maximumFileSize:"Μέγιστο μέγεθος αρχείου",maximumFileSizeError:"Το μέγεθος είναι μεγαλύτερο από το μέγιστο επιτρεπτό.",url:"URL",remove:"Αφαίρεση",original:"Αρχικό"},link:{link:"Σύνδεσμος",insert:"Εισαγωγή συνδέσμου",unlink:"Αφαίρεση συνδέσμου",edit:"Επεξεργασία συνδέσμου",textToDisplay:"Κείμενο συνδέσμου",url:"Σε ποιo URL πρέπει να πηγαίνει αυτός ο σύνδεσμος;",openInNewWindow:"Άνοιγμα σε νέο παράθυρο",useProtocol:"Χρήση προεπιλεγμένου πρωτοκόλλου"},video:{video:"Βίντεο",videoLink:"Σύνδεσμος Βίντεο",insert:"Εισαγωγή",url:"URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ή Youku)"},table:{table:"Πίνακας",addRowAbove:"Προσθήκη γραμμής πάνω",addRowBelow:"Προσθήκη γραμμής κάτω",addColLeft:"Προσθήκη στήλης αριστερά",addColRight:"Προσθήκη στήλης δεξία",delRow:"Διαγραφή γραμμής",delCol:"Διαγραφή στήλης",delTable:"Διαγραφή πίνακα"},hr:{insert:"Εισαγωγή οριζόντιας γραμμής"},style:{style:"Στυλ",normal:"Κανονικό",blockquote:"Παράθεση",pre:"Ως έχει",h1:"Κεφαλίδα 1",h2:"Κεφαλίδα 2",h3:"Κεφαλίδα 3",h4:"Κεφαλίδα 4",h5:"Κεφαλίδα 5",h6:"Κεφαλίδα 6"},lists:{unordered:"Αταξινόμητη λίστα",ordered:"Ταξινομημένη λίστα"},options:{help:"Βοήθεια",fullscreen:"Πλήρης οθόνη",codeview:"Προβολή HTML"},paragraph:{paragraph:"Παράγραφος",outdent:"Μείωση εσοχής",indent:"Άυξηση εσοχής",left:"Αριστερή στοίχιση",center:"Στοίχιση στο κέντρο",right:"Δεξιά στοίχιση",justify:"Πλήρης στοίχιση"},color:{recent:"Πρόσφατη επιλογή",more:"Περισσότερα",background:"Υπόβαθρο",foreground:"Μπροστά",transparent:"Διαφανές",setTransparent:"Επιλογή διαφάνειας",reset:"Επαναφορά",resetToDefault:"Επαναφορά στις προκαθορισμένες τιμές",cpSelect:"Επιλογή"},shortcut:{shortcuts:"Συντομεύσεις",close:"Κλείσιμο",textFormatting:"Διαμόρφωση κειμένου",action:"Ενέργεια",paragraphFormatting:"Διαμόρφωση παραγράφου",documentStyle:"Στυλ κειμένου",extraKeys:"Επιπλέον συντομεύσεις"},help:{escape:"Έξοδος",insertParagraph:"Εισαγωγή παραγράφου",undo:"Αναιρεί την προηγούμενη εντολή",redo:"Επαναλαμβάνει την προηγούμενη εντολή",tab:"Εσοχή",untab:"Αναίρεση εσοχής",bold:"Ορισμός έντονου στυλ",italic:"Ορισμός πλάγιου στυλ",underline:"Ορισμός υπογεγραμμένου στυλ",strikethrough:"Ορισμός διεγραμμένου στυλ",removeFormat:"Αφαίρεση στυλ",justifyLeft:"Ορισμός αριστερής στοίχισης",justifyCenter:"Ορισμός κεντρικής στοίχισης",justifyRight:"Ορισμός δεξιάς στοίχισης",justifyFull:"Ορισμός πλήρους στοίχισης",insertUnorderedList:"Ορισμός μη-ταξινομημένης λίστας",insertOrderedList:"Ορισμός ταξινομημένης λίστας",outdent:"Προεξοχή παραγράφου",indent:"Εσοχή παραγράφου",formatPara:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε παράγραφο (P tag)",formatH1:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H1",formatH2:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H2",formatH3:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H3",formatH4:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H4",formatH5:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H5",formatH6:"Αλλαγή της μορφής του τρέχοντος μπλοκ σε H6",insertHorizontalRule:"Εισαγωγή οριζόντιας γραμμής","linkDialog.show":"Εμφάνιση διαλόγου συνδέσμου"},history:{undo:"Αναίρεση",redo:"Επαναληψη"},specialChar:{specialChar:"ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ",select:"Επιλέξτε ειδικούς χαρακτήρες"},output:{noSelection:"Δεν έγινε επιλογή!"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-es-ES.js b/admin/vendors/summernote/dist/lang/summernote-es-ES.js new file mode 100644 index 0000000000000000000000000000000000000000..4eb7b05b6c6f3302f778a8a1d0f12c3aefba1c70 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-es-ES.js @@ -0,0 +1,280 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 15); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 15: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'es-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subrayado', + clear: 'Eliminar estilo de letra', + height: 'Altura de línea', + name: 'Tipo de letra', + strikethrough: 'Tachado', + subscript: 'Subíndice', + superscript: 'Superíndice', + size: 'Tamaño de la fuente', + sizeunit: 'Unidad del tamaño de letra' + }, + image: { + image: 'Imagen', + insert: 'Insertar imagen', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar a la mitad', + resizeQuarter: 'Redimensionar a un cuarto', + resizeNone: 'Tamaño original', + floatLeft: 'Flotar a la izquierda', + floatRight: 'Flotar a la derecha', + floatNone: 'No flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Miniatura', + shapeNone: 'Forma: Ninguna', + dragImageHere: 'Arrastre una imagen o texto aquí', + dropImage: 'Suelte una imagen o texto', + selectFromFiles: 'Seleccione un fichero', + maximumFileSize: 'Tamaño máximo del fichero', + maximumFileSizeError: 'Superado el tamaño máximo de fichero.', + url: 'URL de la imagen', + remove: 'Eliminar la imagen', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Enlace del vídeo', + insert: 'Insertar un vídeo', + url: 'URL del vídeo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Enlace', + insert: 'Insertar un enlace', + unlink: 'Quitar el enlace', + edit: 'Editar', + textToDisplay: 'Texto a mostrar', + url: '¿A qué URL lleva este enlace?', + openInNewWindow: 'Abrir en una nueva ventana', + useProtocol: 'Usar el protocolo predefinido' + }, + table: { + table: 'Tabla', + addRowAbove: 'Añadir una fila encima', + addRowBelow: 'Añadir una fila debajo', + addColLeft: 'Añadir una columna a la izquierda', + addColRight: 'Añadir una columna a la derecha', + delRow: 'Borrar la fila', + delCol: 'Borrar la columna', + delTable: 'Borrar la tabla' + }, + hr: { + insert: 'Insertar una línea horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista', + ordered: 'Lista numerada' + }, + options: { + help: 'Ayuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver el código fuente' + }, + paragraph: { + paragraph: 'Párrafo', + outdent: 'Reducir la sangría', + indent: 'Aumentar la sangría', + left: 'Alinear a la izquierda', + center: 'Centrar', + right: 'Alinear a la derecha', + justify: 'Justificar' + }, + color: { + recent: 'Último color', + more: 'Más colores', + background: 'Color de fondo', + foreground: 'Color del texto', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restablecer', + resetToDefault: 'Restablecer a los valores predefinidos', + cpSelect: 'Seleccionar' + }, + shortcut: { + shortcuts: 'Atajos de teclado', + close: 'Cerrar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de párrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionales' + }, + help: { + insertParagraph: 'Insertar un párrafo', + undo: 'Deshacer la última acción', + redo: 'Rehacer la última acción', + tab: 'Tabular', + untab: 'Eliminar tabulación', + bold: 'Establecer estilo negrita', + italic: 'Establecer estilo cursiva', + underline: 'Establecer estilo subrayado', + strikethrough: 'Establecer estilo tachado', + removeFormat: 'Limpiar estilo', + justifyLeft: 'Alinear a la izquierda', + justifyCenter: 'Alinear al centro', + justifyRight: 'Alinear a la derecha', + justifyFull: 'Justificar', + insertUnorderedList: 'Insertar lista', + insertOrderedList: 'Insertar lista numerada', + outdent: 'Reducir sangría del párrafo', + indent: 'Aumentar sangría del párrafo', + formatPara: 'Cambiar el formato del bloque actual a párrafo (etiqueta P)', + formatH1: 'Cambiar el formato del bloque actual a H1', + formatH2: 'Cambiar el formato del bloque actual a H2', + formatH3: 'Cambiar el formato del bloque actual a H3', + formatH4: 'Cambiar el formato del bloque actual a H4', + formatH5: 'Cambiar el formato del bloque actual a H5', + formatH6: 'Cambiar el formato del bloque actual a H6', + insertHorizontalRule: 'Insertar una línea horizontal', + 'linkDialog.show': 'Mostrar el panel de enlaces' + }, + history: { + undo: 'Deshacer', + redo: 'Rehacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIALES', + select: 'Seleccionar caracteres especiales' + }, + output: { + noSelection: '¡No ha seleccionado nada!' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-es-ES.min.js b/admin/vendors/summernote/dist/lang/summernote-es-ES.min.js new file mode 100644 index 0000000000000000000000000000000000000000..35de78f82f49acb6af9eb0daa1170549e4364b24 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-es-ES.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-es-ES.min.js.LICENSE.txt */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var a={};function r(o){if(a[o])return a[o].exports;var t=a[o]={i:o,l:!1,exports:{}};return e[o].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=e,r.c=a,r.d=function(e,a,o){r.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,a){if(1&a&&(e=r(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var t in e)r.d(o,t,function(a){return e[a]}.bind(null,t));return o},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="",r(r.s=15)}({15:function(e,a){var r;(r=jQuery).extend(r.summernote.lang,{"es-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subrayado",clear:"Eliminar estilo de letra",height:"Altura de línea",name:"Tipo de letra",strikethrough:"Tachado",subscript:"Subíndice",superscript:"Superíndice",size:"Tamaño de la fuente",sizeunit:"Unidad del tamaño de letra"},image:{image:"Imagen",insert:"Insertar imagen",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar a la mitad",resizeQuarter:"Redimensionar a un cuarto",resizeNone:"Tamaño original",floatLeft:"Flotar a la izquierda",floatRight:"Flotar a la derecha",floatNone:"No flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Miniatura",shapeNone:"Forma: Ninguna",dragImageHere:"Arrastre una imagen o texto aquí",dropImage:"Suelte una imagen o texto",selectFromFiles:"Seleccione un fichero",maximumFileSize:"Tamaño máximo del fichero",maximumFileSizeError:"Superado el tamaño máximo de fichero.",url:"URL de la imagen",remove:"Eliminar la imagen",original:"Original"},video:{video:"Vídeo",videoLink:"Enlace del vídeo",insert:"Insertar un vídeo",url:"URL del vídeo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Enlace",insert:"Insertar un enlace",unlink:"Quitar el enlace",edit:"Editar",textToDisplay:"Texto a mostrar",url:"¿A qué URL lleva este enlace?",openInNewWindow:"Abrir en una nueva ventana",useProtocol:"Usar el protocolo predefinido"},table:{table:"Tabla",addRowAbove:"Añadir una fila encima",addRowBelow:"Añadir una fila debajo",addColLeft:"Añadir una columna a la izquierda",addColRight:"Añadir una columna a la derecha",delRow:"Borrar la fila",delCol:"Borrar la columna",delTable:"Borrar la tabla"},hr:{insert:"Insertar una línea horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista",ordered:"Lista numerada"},options:{help:"Ayuda",fullscreen:"Pantalla completa",codeview:"Ver el código fuente"},paragraph:{paragraph:"Párrafo",outdent:"Reducir la sangría",indent:"Aumentar la sangría",left:"Alinear a la izquierda",center:"Centrar",right:"Alinear a la derecha",justify:"Justificar"},color:{recent:"Último color",more:"Más colores",background:"Color de fondo",foreground:"Color del texto",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restablecer",resetToDefault:"Restablecer a los valores predefinidos",cpSelect:"Seleccionar"},shortcut:{shortcuts:"Atajos de teclado",close:"Cerrar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de párrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionales"},help:{insertParagraph:"Insertar un párrafo",undo:"Deshacer la última acción",redo:"Rehacer la última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subrayado",strikethrough:"Establecer estilo tachado",removeFormat:"Limpiar estilo",justifyLeft:"Alinear a la izquierda",justifyCenter:"Alinear al centro",justifyRight:"Alinear a la derecha",justifyFull:"Justificar",insertUnorderedList:"Insertar lista",insertOrderedList:"Insertar lista numerada",outdent:"Reducir sangría del párrafo",indent:"Aumentar sangría del párrafo",formatPara:"Cambiar el formato del bloque actual a párrafo (etiqueta P)",formatH1:"Cambiar el formato del bloque actual a H1",formatH2:"Cambiar el formato del bloque actual a H2",formatH3:"Cambiar el formato del bloque actual a H3",formatH4:"Cambiar el formato del bloque actual a H4",formatH5:"Cambiar el formato del bloque actual a H5",formatH6:"Cambiar el formato del bloque actual a H6",insertHorizontalRule:"Insertar una línea horizontal","linkDialog.show":"Mostrar el panel de enlaces"},history:{undo:"Deshacer",redo:"Rehacer"},specialChar:{specialChar:"CARACTERES ESPECIALES",select:"Seleccionar caracteres especiales"},output:{noSelection:"¡No ha seleccionado nada!"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-es-EU.js b/admin/vendors/summernote/dist/lang/summernote-es-EU.js new file mode 100644 index 0000000000000000000000000000000000000000..5fca3359b2cc3d9af94635febb3ebfc0be072aa5 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-es-EU.js @@ -0,0 +1,272 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 16); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 16: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'es-EU': { + font: { + bold: 'Lodia', + italic: 'Etzana', + underline: 'Azpimarratua', + clear: 'Estiloa kendu', + height: 'Lerro altuera', + name: 'Tipografia', + strikethrough: 'Marratua', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Letren neurria' + }, + image: { + image: 'Irudia', + insert: 'Irudi bat txertatu', + resizeFull: 'Jatorrizko neurrira aldatu', + resizeHalf: 'Neurria erdira aldatu', + resizeQuarter: 'Neurria laurdenera aldatu', + floatLeft: 'Ezkerrean kokatu', + floatRight: 'Eskuinean kokatu', + floatNone: 'Kokapenik ez ezarri', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Irudi bat ezarri hemen', + dropImage: 'Drop image or Text', + selectFromFiles: 'Zure fitxategi bat aukeratu', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Irudiaren URL helbidea', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Bideoa', + videoLink: 'Bideorako esteka', + insert: 'Bideo berri bat txertatu', + url: 'Bideoaren URL helbidea', + providers: '(YouTube, Vimeo, Vine, Instagram edo DailyMotion)' + }, + link: { + link: 'Esteka', + insert: 'Esteka bat txertatu', + unlink: 'Esteka ezabatu', + edit: 'Editatu', + textToDisplay: 'Estekaren testua', + url: 'Estekaren URL helbidea', + openInNewWindow: 'Leiho berri batean ireki' + }, + table: { + table: 'Taula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Marra horizontala txertatu' + }, + style: { + style: 'Estiloa', + p: 'p', + blockquote: 'Aipamena', + pre: 'Kodea', + h1: '1. izenburua', + h2: '2. izenburua', + h3: '3. izenburua', + h4: '4. izenburua', + h5: '5. izenburua', + h6: '6. izenburua' + }, + lists: { + unordered: 'Ordenatu gabeko zerrenda', + ordered: 'Zerrenda ordenatua' + }, + options: { + help: 'Laguntza', + fullscreen: 'Pantaila osoa', + codeview: 'Kodea ikusi' + }, + paragraph: { + paragraph: 'Paragrafoa', + outdent: 'Koska txikiagoa', + indent: 'Koska handiagoa', + left: 'Ezkerrean kokatu', + center: 'Erdian kokatu', + right: 'Eskuinean kokatu', + justify: 'Justifikatu' + }, + color: { + recent: 'Azken kolorea', + more: 'Kolore gehiago', + background: 'Atzeko planoa', + foreground: 'Aurreko planoa', + transparent: 'Gardena', + setTransparent: 'Gardendu', + reset: 'Lehengoratu', + resetToDefault: 'Berrezarri lehenetsia' + }, + shortcut: { + shortcuts: 'Lasterbideak', + close: 'Itxi', + textFormatting: 'Testuaren formatua', + action: 'Ekintza', + paragraphFormatting: 'Paragrafoaren formatua', + documentStyle: 'Dokumentuaren estiloa' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Desegin', + redo: 'Berregin' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-es-EU.min.js b/admin/vendors/summernote/dist/lang/summernote-es-EU.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b63b68e32c7d5aff84ac71094ee0405ecc5597ed --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-es-EU.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-es-EU.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var a=r();for(var t in a)("object"==typeof exports?exports:e)[t]=a[t]}}(window,(function(){return function(e){var r={};function a(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=e,a.c=r,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)a.d(t,o,function(r){return e[r]}.bind(null,o));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="",a(a.s=16)}({16:function(e,r){var a;(a=jQuery).extend(a.summernote.lang,{"es-EU":{font:{bold:"Lodia",italic:"Etzana",underline:"Azpimarratua",clear:"Estiloa kendu",height:"Lerro altuera",name:"Tipografia",strikethrough:"Marratua",subscript:"Subscript",superscript:"Superscript",size:"Letren neurria"},image:{image:"Irudia",insert:"Irudi bat txertatu",resizeFull:"Jatorrizko neurrira aldatu",resizeHalf:"Neurria erdira aldatu",resizeQuarter:"Neurria laurdenera aldatu",floatLeft:"Ezkerrean kokatu",floatRight:"Eskuinean kokatu",floatNone:"Kokapenik ez ezarri",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Irudi bat ezarri hemen",dropImage:"Drop image or Text",selectFromFiles:"Zure fitxategi bat aukeratu",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Irudiaren URL helbidea",remove:"Remove Image",original:"Original"},video:{video:"Bideoa",videoLink:"Bideorako esteka",insert:"Bideo berri bat txertatu",url:"Bideoaren URL helbidea",providers:"(YouTube, Vimeo, Vine, Instagram edo DailyMotion)"},link:{link:"Esteka",insert:"Esteka bat txertatu",unlink:"Esteka ezabatu",edit:"Editatu",textToDisplay:"Estekaren testua",url:"Estekaren URL helbidea",openInNewWindow:"Leiho berri batean ireki"},table:{table:"Taula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Marra horizontala txertatu"},style:{style:"Estiloa",p:"p",blockquote:"Aipamena",pre:"Kodea",h1:"1. izenburua",h2:"2. izenburua",h3:"3. izenburua",h4:"4. izenburua",h5:"5. izenburua",h6:"6. izenburua"},lists:{unordered:"Ordenatu gabeko zerrenda",ordered:"Zerrenda ordenatua"},options:{help:"Laguntza",fullscreen:"Pantaila osoa",codeview:"Kodea ikusi"},paragraph:{paragraph:"Paragrafoa",outdent:"Koska txikiagoa",indent:"Koska handiagoa",left:"Ezkerrean kokatu",center:"Erdian kokatu",right:"Eskuinean kokatu",justify:"Justifikatu"},color:{recent:"Azken kolorea",more:"Kolore gehiago",background:"Atzeko planoa",foreground:"Aurreko planoa",transparent:"Gardena",setTransparent:"Gardendu",reset:"Lehengoratu",resetToDefault:"Berrezarri lehenetsia"},shortcut:{shortcuts:"Lasterbideak",close:"Itxi",textFormatting:"Testuaren formatua",action:"Ekintza",paragraphFormatting:"Paragrafoaren formatua",documentStyle:"Dokumentuaren estiloa"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Desegin",redo:"Berregin"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fa-IR.js b/admin/vendors/summernote/dist/lang/summernote-fa-IR.js new file mode 100644 index 0000000000000000000000000000000000000000..0aa209c3d7dcd99859bcf85d9fd061098e7028d2 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fa-IR.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 17); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 17: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'fa-IR': { + font: { + bold: 'درشت', + italic: 'خمیده', + underline: 'میان خط', + clear: 'پاک کردن فرمت فونت', + height: 'فاصله ی خطی', + name: 'اسم فونت', + strikethrough: 'Strike', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'اندازه ی فونت' + }, + image: { + image: 'تصویر', + insert: 'وارد کردن تصویر', + resizeFull: 'تغییر به اندازه ی کامل', + resizeHalf: 'تغییر به اندازه نصف', + resizeQuarter: 'تغییر به اندازه یک چهارم', + floatLeft: 'چسباندن به چپ', + floatRight: 'چسباندن به راست', + floatNone: 'بدون چسبندگی', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'یک تصویر را اینجا بکشید', + dropImage: 'Drop image or Text', + selectFromFiles: 'فایل ها را انتخاب کنید', + maximumFileSize: 'حداکثر اندازه پرونده', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'آدرس تصویر', + remove: 'حذف تصویر', + original: 'Original' + }, + video: { + video: 'ویدیو', + videoLink: 'لینک ویدیو', + insert: 'افزودن ویدیو', + url: 'آدرس ویدیو ؟', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)' + }, + link: { + link: 'لینک', + insert: 'اضافه کردن لینک', + unlink: 'حذف لینک', + edit: 'ویرایش', + textToDisplay: 'متن جهت نمایش', + url: 'این لینک به چه آدرسی باید برود ؟', + openInNewWindow: 'در یک پنجره ی جدید باز شود' + }, + table: { + table: 'جدول', + addRowAbove: 'افزودن ردیف بالا', + addRowBelow: 'افزودن ردیف پایین', + addColLeft: 'افزودن ستون چپ', + addColRight: 'افزودن ستون راست', + delRow: 'حذف ردیف', + delCol: 'حذف ستون', + delTable: 'حذف جدول' + }, + hr: { + insert: 'افزودن خط افقی' + }, + style: { + style: 'استیل', + p: 'نرمال', + blockquote: 'نقل قول', + pre: 'کد', + h1: 'سرتیتر 1', + h2: 'سرتیتر 2', + h3: 'سرتیتر 3', + h4: 'سرتیتر 4', + h5: 'سرتیتر 5', + h6: 'سرتیتر 6' + }, + lists: { + unordered: 'لیست غیر ترتیبی', + ordered: 'لیست ترتیبی' + }, + options: { + help: 'راهنما', + fullscreen: 'نمایش تمام صفحه', + codeview: 'مشاهده ی کد' + }, + paragraph: { + paragraph: 'پاراگراف', + outdent: 'کاهش تو رفتگی', + indent: 'افزایش تو رفتگی', + left: 'چپ چین', + center: 'میان چین', + right: 'راست چین', + justify: 'بلوک چین' + }, + color: { + recent: 'رنگ اخیرا استفاده شده', + more: 'رنگ بیشتر', + background: 'رنگ پس زمینه', + foreground: 'رنگ متن', + transparent: 'بی رنگ', + setTransparent: 'تنظیم حالت بی رنگ', + reset: 'بازنشاندن', + resetToDefault: 'حالت پیش فرض' + }, + shortcut: { + shortcuts: 'دکمه های میان بر', + close: 'بستن', + textFormatting: 'فرمت متن', + action: 'عملیات', + paragraphFormatting: 'فرمت پاراگراف', + documentStyle: 'استیل سند', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'افزودن پاراگراف', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'چپ چین', + 'justifyCenter': 'وسط چین', + 'justifyRight': 'راست چین', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'واچیدن', + redo: 'بازچیدن' + }, + specialChar: { + specialChar: 'کاراکتر خاص', + select: 'انتخاب کاراکتر خاص' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fa-IR.min.js b/admin/vendors/summernote/dist/lang/summernote-fa-IR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c7e861a2c17cdf3d7fd534604e1af84f75c988bb --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fa-IR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-fa-IR.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=17)}({17:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"fa-IR":{font:{bold:"درشت",italic:"خمیده",underline:"میان خط",clear:"پاک کردن فرمت فونت",height:"فاصله ی خطی",name:"اسم فونت",strikethrough:"Strike",subscript:"Subscript",superscript:"Superscript",size:"اندازه ی فونت"},image:{image:"تصویر",insert:"وارد کردن تصویر",resizeFull:"تغییر به اندازه ی کامل",resizeHalf:"تغییر به اندازه نصف",resizeQuarter:"تغییر به اندازه یک چهارم",floatLeft:"چسباندن به چپ",floatRight:"چسباندن به راست",floatNone:"بدون چسبندگی",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"یک تصویر را اینجا بکشید",dropImage:"Drop image or Text",selectFromFiles:"فایل ها را انتخاب کنید",maximumFileSize:"حداکثر اندازه پرونده",maximumFileSizeError:"Maximum file size exceeded.",url:"آدرس تصویر",remove:"حذف تصویر",original:"Original"},video:{video:"ویدیو",videoLink:"لینک ویدیو",insert:"افزودن ویدیو",url:"آدرس ویدیو ؟",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion یا Youku)"},link:{link:"لینک",insert:"اضافه کردن لینک",unlink:"حذف لینک",edit:"ویرایش",textToDisplay:"متن جهت نمایش",url:"این لینک به چه آدرسی باید برود ؟",openInNewWindow:"در یک پنجره ی جدید باز شود"},table:{table:"جدول",addRowAbove:"افزودن ردیف بالا",addRowBelow:"افزودن ردیف پایین",addColLeft:"افزودن ستون چپ",addColRight:"افزودن ستون راست",delRow:"حذف ردیف",delCol:"حذف ستون",delTable:"حذف جدول"},hr:{insert:"افزودن خط افقی"},style:{style:"استیل",p:"نرمال",blockquote:"نقل قول",pre:"کد",h1:"سرتیتر 1",h2:"سرتیتر 2",h3:"سرتیتر 3",h4:"سرتیتر 4",h5:"سرتیتر 5",h6:"سرتیتر 6"},lists:{unordered:"لیست غیر ترتیبی",ordered:"لیست ترتیبی"},options:{help:"راهنما",fullscreen:"نمایش تمام صفحه",codeview:"مشاهده ی کد"},paragraph:{paragraph:"پاراگراف",outdent:"کاهش تو رفتگی",indent:"افزایش تو رفتگی",left:"چپ چین",center:"میان چین",right:"راست چین",justify:"بلوک چین"},color:{recent:"رنگ اخیرا استفاده شده",more:"رنگ بیشتر",background:"رنگ پس زمینه",foreground:"رنگ متن",transparent:"بی رنگ",setTransparent:"تنظیم حالت بی رنگ",reset:"بازنشاندن",resetToDefault:"حالت پیش فرض"},shortcut:{shortcuts:"دکمه های میان بر",close:"بستن",textFormatting:"فرمت متن",action:"عملیات",paragraphFormatting:"فرمت پاراگراف",documentStyle:"استیل سند",extraKeys:"Extra keys"},help:{insertParagraph:"افزودن پاراگراف",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"چپ چین",justifyCenter:"وسط چین",justifyRight:"راست چین",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"واچیدن",redo:"بازچیدن"},specialChar:{specialChar:"کاراکتر خاص",select:"انتخاب کاراکتر خاص"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fi-FI.js b/admin/vendors/summernote/dist/lang/summernote-fi-FI.js new file mode 100644 index 0000000000000000000000000000000000000000..b2d40068d1cf06863ce1b8d3a0e85c71cba9808f --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fi-FI.js @@ -0,0 +1,271 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 18); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 18: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'fi-FI': { + font: { + bold: 'Lihavointi', + italic: 'Kursivointi', + underline: 'Alleviivaus', + clear: 'Tyhjennä muotoilu', + height: 'Riviväli', + name: 'Kirjasintyyppi', + strikethrough: 'Yliviivaus', + subscript: 'Alaindeksi', + superscript: 'Yläindeksi', + size: 'Kirjasinkoko' + }, + image: { + image: 'Kuva', + insert: 'Lisää kuva', + resizeFull: 'Koko leveys', + resizeHalf: 'Puolikas leveys', + resizeQuarter: 'Neljäsosa leveys', + floatLeft: 'Sijoita vasemmalle', + floatRight: 'Sijoita oikealle', + floatNone: 'Ei sijoitusta', + shapeRounded: 'Muoto: Pyöristetty', + shapeCircle: 'Muoto: Ympyrä', + shapeThumbnail: 'Muoto: Esikatselukuva', + shapeNone: 'Muoto: Ei muotoilua', + dragImageHere: 'Vedä kuva tähän', + selectFromFiles: 'Valitse tiedostoista', + maximumFileSize: 'Maksimi tiedosto koko', + maximumFileSizeError: 'Maksimi tiedosto koko ylitetty.', + url: 'URL-osoitteen mukaan', + remove: 'Poista kuva', + original: 'Alkuperäinen' + }, + video: { + video: 'Video', + videoLink: 'Linkki videoon', + insert: 'Lisää video', + url: 'Videon URL-osoite', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)' + }, + link: { + link: 'Linkki', + insert: 'Lisää linkki', + unlink: 'Poista linkki', + edit: 'Muokkaa', + textToDisplay: 'Näytettävä teksti', + url: 'Linkin URL-osoite', + openInNewWindow: 'Avaa uudessa ikkunassa' + }, + table: { + table: 'Taulukko', + addRowAbove: 'Lisää rivi yläpuolelle', + addRowBelow: 'Lisää rivi alapuolelle', + addColLeft: 'Lisää sarake vasemmalle puolelle', + addColRight: 'Lisää sarake oikealle puolelle', + delRow: 'Poista rivi', + delCol: 'Poista sarake', + delTable: 'Poista taulukko' + }, + hr: { + insert: 'Lisää vaakaviiva' + }, + style: { + style: 'Tyyli', + p: 'Normaali', + blockquote: 'Lainaus', + pre: 'Koodi', + h1: 'Otsikko 1', + h2: 'Otsikko 2', + h3: 'Otsikko 3', + h4: 'Otsikko 4', + h5: 'Otsikko 5', + h6: 'Otsikko 6' + }, + lists: { + unordered: 'Luettelomerkitty luettelo', + ordered: 'Numeroitu luettelo' + }, + options: { + help: 'Ohje', + fullscreen: 'Koko näyttö', + codeview: 'HTML-näkymä' + }, + paragraph: { + paragraph: 'Kappale', + outdent: 'Pienennä sisennystä', + indent: 'Suurenna sisennystä', + left: 'Tasaa vasemmalle', + center: 'Keskitä', + right: 'Tasaa oikealle', + justify: 'Tasaa' + }, + color: { + recent: 'Viimeisin väri', + more: 'Lisää värejä', + background: 'Korostusväri', + foreground: 'Tekstin väri', + transparent: 'Läpinäkyvä', + setTransparent: 'Aseta läpinäkyväksi', + reset: 'Palauta', + resetToDefault: 'Palauta oletusarvoksi' + }, + shortcut: { + shortcuts: 'Pikanäppäimet', + close: 'Sulje', + textFormatting: 'Tekstin muotoilu', + action: 'Toiminto', + paragraphFormatting: 'Kappaleen muotoilu', + documentStyle: 'Asiakirjan tyyli' + }, + help: { + 'insertParagraph': 'Lisää kappale', + 'undo': 'Kumoa viimeisin komento', + 'redo': 'Tee uudelleen kumottu komento', + 'tab': 'Sarkain', + 'untab': 'Sarkainmerkin poisto', + 'bold': 'Lihavointi', + 'italic': 'Kursiivi', + 'underline': 'Alleviivaus', + 'strikethrough': 'Yliviivaus', + 'removeFormat': 'Poista asetetut tyylit', + 'justifyLeft': 'Tasaa vasemmalle', + 'justifyCenter': 'Keskitä', + 'justifyRight': 'Tasaa oikealle', + 'justifyFull': 'Tasaa', + 'insertUnorderedList': 'Luettelomerkillä varustettu lista', + 'insertOrderedList': 'Numeroitu lista', + 'outdent': 'Pienennä sisennystä', + 'indent': 'Suurenna sisennystä', + 'formatPara': 'Muuta kappaleen formaatti p', + 'formatH1': 'Muuta kappaleen formaatti H1', + 'formatH2': 'Muuta kappaleen formaatti H2', + 'formatH3': 'Muuta kappaleen formaatti H3', + 'formatH4': 'Muuta kappaleen formaatti H4', + 'formatH5': 'Muuta kappaleen formaatti H5', + 'formatH6': 'Muuta kappaleen formaatti H6', + 'insertHorizontalRule': 'Lisää vaakaviiva', + 'linkDialog.show': 'Lisää linkki' + }, + history: { + undo: 'Kumoa', + redo: 'Toista' + }, + specialChar: { + specialChar: 'ERIKOISMERKIT', + select: 'Valitse erikoismerkit' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fi-FI.min.js b/admin/vendors/summernote/dist/lang/summernote-fi-FI.min.js new file mode 100644 index 0000000000000000000000000000000000000000..1599cae29461cd16e3f2fd800e09e9c7b5f95af3 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fi-FI.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-fi-FI.min.js.LICENSE.txt */ +!function(e,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var t=i();for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}(window,(function(){return function(e){var i={};function t(a){if(i[a])return i[a].exports;var o=i[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=i,t.d=function(e,i,a){t.o(e,i)||Object.defineProperty(e,i,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,i){if(1&i&&(e=t(e)),8&i)return e;if(4&i&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&i&&"string"!=typeof e)for(var o in e)t.d(a,o,function(i){return e[i]}.bind(null,o));return a},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},t.p="",t(t.s=18)}({18:function(e,i){var t;(t=jQuery).extend(t.summernote.lang,{"fi-FI":{font:{bold:"Lihavointi",italic:"Kursivointi",underline:"Alleviivaus",clear:"Tyhjennä muotoilu",height:"Riviväli",name:"Kirjasintyyppi",strikethrough:"Yliviivaus",subscript:"Alaindeksi",superscript:"Yläindeksi",size:"Kirjasinkoko"},image:{image:"Kuva",insert:"Lisää kuva",resizeFull:"Koko leveys",resizeHalf:"Puolikas leveys",resizeQuarter:"Neljäsosa leveys",floatLeft:"Sijoita vasemmalle",floatRight:"Sijoita oikealle",floatNone:"Ei sijoitusta",shapeRounded:"Muoto: Pyöristetty",shapeCircle:"Muoto: Ympyrä",shapeThumbnail:"Muoto: Esikatselukuva",shapeNone:"Muoto: Ei muotoilua",dragImageHere:"Vedä kuva tähän",selectFromFiles:"Valitse tiedostoista",maximumFileSize:"Maksimi tiedosto koko",maximumFileSizeError:"Maksimi tiedosto koko ylitetty.",url:"URL-osoitteen mukaan",remove:"Poista kuva",original:"Alkuperäinen"},video:{video:"Video",videoLink:"Linkki videoon",insert:"Lisää video",url:"Videon URL-osoite",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion tai Youku)"},link:{link:"Linkki",insert:"Lisää linkki",unlink:"Poista linkki",edit:"Muokkaa",textToDisplay:"Näytettävä teksti",url:"Linkin URL-osoite",openInNewWindow:"Avaa uudessa ikkunassa"},table:{table:"Taulukko",addRowAbove:"Lisää rivi yläpuolelle",addRowBelow:"Lisää rivi alapuolelle",addColLeft:"Lisää sarake vasemmalle puolelle",addColRight:"Lisää sarake oikealle puolelle",delRow:"Poista rivi",delCol:"Poista sarake",delTable:"Poista taulukko"},hr:{insert:"Lisää vaakaviiva"},style:{style:"Tyyli",p:"Normaali",blockquote:"Lainaus",pre:"Koodi",h1:"Otsikko 1",h2:"Otsikko 2",h3:"Otsikko 3",h4:"Otsikko 4",h5:"Otsikko 5",h6:"Otsikko 6"},lists:{unordered:"Luettelomerkitty luettelo",ordered:"Numeroitu luettelo"},options:{help:"Ohje",fullscreen:"Koko näyttö",codeview:"HTML-näkymä"},paragraph:{paragraph:"Kappale",outdent:"Pienennä sisennystä",indent:"Suurenna sisennystä",left:"Tasaa vasemmalle",center:"Keskitä",right:"Tasaa oikealle",justify:"Tasaa"},color:{recent:"Viimeisin väri",more:"Lisää värejä",background:"Korostusväri",foreground:"Tekstin väri",transparent:"Läpinäkyvä",setTransparent:"Aseta läpinäkyväksi",reset:"Palauta",resetToDefault:"Palauta oletusarvoksi"},shortcut:{shortcuts:"Pikanäppäimet",close:"Sulje",textFormatting:"Tekstin muotoilu",action:"Toiminto",paragraphFormatting:"Kappaleen muotoilu",documentStyle:"Asiakirjan tyyli"},help:{insertParagraph:"Lisää kappale",undo:"Kumoa viimeisin komento",redo:"Tee uudelleen kumottu komento",tab:"Sarkain",untab:"Sarkainmerkin poisto",bold:"Lihavointi",italic:"Kursiivi",underline:"Alleviivaus",strikethrough:"Yliviivaus",removeFormat:"Poista asetetut tyylit",justifyLeft:"Tasaa vasemmalle",justifyCenter:"Keskitä",justifyRight:"Tasaa oikealle",justifyFull:"Tasaa",insertUnorderedList:"Luettelomerkillä varustettu lista",insertOrderedList:"Numeroitu lista",outdent:"Pienennä sisennystä",indent:"Suurenna sisennystä",formatPara:"Muuta kappaleen formaatti p",formatH1:"Muuta kappaleen formaatti H1",formatH2:"Muuta kappaleen formaatti H2",formatH3:"Muuta kappaleen formaatti H3",formatH4:"Muuta kappaleen formaatti H4",formatH5:"Muuta kappaleen formaatti H5",formatH6:"Muuta kappaleen formaatti H6",insertHorizontalRule:"Lisää vaakaviiva","linkDialog.show":"Lisää linkki"},history:{undo:"Kumoa",redo:"Toista"},specialChar:{specialChar:"ERIKOISMERKIT",select:"Valitse erikoismerkit"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fr-FR.js b/admin/vendors/summernote/dist/lang/summernote-fr-FR.js new file mode 100644 index 0000000000000000000000000000000000000000..68e737e2507816703a62af58330da57044e718f9 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fr-FR.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 19); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 19: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'fr-FR': { + font: { + bold: 'Gras', + italic: 'Italique', + underline: 'Souligné', + clear: 'Effacer la mise en forme', + height: 'Interligne', + name: 'Famille de police', + strikethrough: 'Barré', + superscript: 'Exposant', + subscript: 'Indice', + size: 'Taille de police' + }, + image: { + image: 'Image', + insert: 'Insérer une image', + resizeFull: 'Taille originale', + resizeHalf: 'Redimensionner à 50 %', + resizeQuarter: 'Redimensionner à 25 %', + floatLeft: 'Aligné à gauche', + floatRight: 'Aligné à droite', + floatNone: 'Pas d\'alignement', + shapeRounded: 'Forme: Rectangle arrondi', + shapeCircle: 'Forme: Cercle', + shapeThumbnail: 'Forme: Vignette', + shapeNone: 'Forme: Aucune', + dragImageHere: 'Faites glisser une image ou un texte dans ce cadre', + dropImage: 'Lachez l\'image ou le texte', + selectFromFiles: 'Choisir un fichier', + maximumFileSize: 'Taille de fichier maximale', + maximumFileSizeError: 'Taille maximale du fichier dépassée', + url: 'URL de l\'image', + remove: 'Supprimer l\'image', + original: 'Original' + }, + video: { + video: 'Vidéo', + videoLink: 'Lien vidéo', + insert: 'Insérer une vidéo', + url: 'URL de la vidéo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Lien', + insert: 'Insérer un lien', + unlink: 'Supprimer un lien', + edit: 'Modifier', + textToDisplay: 'Texte à afficher', + url: 'URL du lien', + openInNewWindow: 'Ouvrir dans une nouvelle fenêtre' + }, + table: { + table: 'Tableau', + addRowAbove: 'Ajouter une ligne au-dessus', + addRowBelow: 'Ajouter une ligne en dessous', + addColLeft: 'Ajouter une colonne à gauche', + addColRight: 'Ajouter une colonne à droite', + delRow: 'Supprimer la ligne', + delCol: 'Supprimer la colonne', + delTable: 'Supprimer le tableau' + }, + hr: { + insert: 'Insérer une ligne horizontale' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Citation', + pre: 'Code source', + h1: 'Titre 1', + h2: 'Titre 2', + h3: 'Titre 3', + h4: 'Titre 4', + h5: 'Titre 5', + h6: 'Titre 6' + }, + lists: { + unordered: 'Liste à puces', + ordered: 'Liste numérotée' + }, + options: { + help: 'Aide', + fullscreen: 'Plein écran', + codeview: 'Afficher le code HTML' + }, + paragraph: { + paragraph: 'Paragraphe', + outdent: 'Diminuer le retrait', + indent: 'Augmenter le retrait', + left: 'Aligner à gauche', + center: 'Centrer', + right: 'Aligner à droite', + justify: 'Justifier' + }, + color: { + recent: 'Dernière couleur sélectionnée', + more: 'Plus de couleurs', + background: 'Couleur de fond', + foreground: 'Couleur de police', + transparent: 'Transparent', + setTransparent: 'Définir la transparence', + reset: 'Restaurer', + resetToDefault: 'Restaurer la couleur par défaut' + }, + shortcut: { + shortcuts: 'Raccourcis', + close: 'Fermer', + textFormatting: 'Mise en forme du texte', + action: 'Action', + paragraphFormatting: 'Mise en forme des paragraphes', + documentStyle: 'Style du document', + extraKeys: 'Touches supplémentaires' + }, + help: { + 'insertParagraph': 'Insérer paragraphe', + 'undo': 'Défaire la dernière commande', + 'redo': 'Refaire la dernière commande', + 'tab': 'Tabulation', + 'untab': 'Tabulation arrière', + 'bold': 'Mettre en caractère gras', + 'italic': 'Mettre en italique', + 'underline': 'Mettre en souligné', + 'strikethrough': 'Mettre en texte barré', + 'removeFormat': 'Nettoyer les styles', + 'justifyLeft': 'Aligner à gauche', + 'justifyCenter': 'Centrer', + 'justifyRight': 'Aligner à droite', + 'justifyFull': 'Justifier à gauche et à droite', + 'insertUnorderedList': 'Basculer liste à puces', + 'insertOrderedList': 'Basculer liste ordonnée', + 'outdent': 'Diminuer le retrait du paragraphe', + 'indent': 'Augmenter le retrait du paragraphe', + 'formatPara': 'Changer le paragraphe en cours en normal (P)', + 'formatH1': 'Changer le paragraphe en cours en entête H1', + 'formatH2': 'Changer le paragraphe en cours en entête H2', + 'formatH3': 'Changer le paragraphe en cours en entête H3', + 'formatH4': 'Changer le paragraphe en cours en entête H4', + 'formatH5': 'Changer le paragraphe en cours en entête H5', + 'formatH6': 'Changer le paragraphe en cours en entête H6', + 'insertHorizontalRule': 'Insérer séparation horizontale', + 'linkDialog.show': 'Afficher fenêtre d\'hyperlien' + }, + history: { + undo: 'Annuler la dernière action', + redo: 'Restaurer la dernière action annulée' + }, + specialChar: { + specialChar: 'Caractères spéciaux', + select: 'Choisir des caractères spéciaux' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-fr-FR.min.js b/admin/vendors/summernote/dist/lang/summernote-fr-FR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..cbc6c705b70879e7ffe225391159b207d0faa063 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-fr-FR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-fr-FR.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(window,(function(){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var i in e)t.d(n,i,function(r){return e[r]}.bind(null,i));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=19)}({19:function(e,r){var t;(t=jQuery).extend(t.summernote.lang,{"fr-FR":{font:{bold:"Gras",italic:"Italique",underline:"Souligné",clear:"Effacer la mise en forme",height:"Interligne",name:"Famille de police",strikethrough:"Barré",superscript:"Exposant",subscript:"Indice",size:"Taille de police"},image:{image:"Image",insert:"Insérer une image",resizeFull:"Taille originale",resizeHalf:"Redimensionner à 50 %",resizeQuarter:"Redimensionner à 25 %",floatLeft:"Aligné à gauche",floatRight:"Aligné à droite",floatNone:"Pas d'alignement",shapeRounded:"Forme: Rectangle arrondi",shapeCircle:"Forme: Cercle",shapeThumbnail:"Forme: Vignette",shapeNone:"Forme: Aucune",dragImageHere:"Faites glisser une image ou un texte dans ce cadre",dropImage:"Lachez l'image ou le texte",selectFromFiles:"Choisir un fichier",maximumFileSize:"Taille de fichier maximale",maximumFileSizeError:"Taille maximale du fichier dépassée",url:"URL de l'image",remove:"Supprimer l'image",original:"Original"},video:{video:"Vidéo",videoLink:"Lien vidéo",insert:"Insérer une vidéo",url:"URL de la vidéo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Lien",insert:"Insérer un lien",unlink:"Supprimer un lien",edit:"Modifier",textToDisplay:"Texte à afficher",url:"URL du lien",openInNewWindow:"Ouvrir dans une nouvelle fenêtre"},table:{table:"Tableau",addRowAbove:"Ajouter une ligne au-dessus",addRowBelow:"Ajouter une ligne en dessous",addColLeft:"Ajouter une colonne à gauche",addColRight:"Ajouter une colonne à droite",delRow:"Supprimer la ligne",delCol:"Supprimer la colonne",delTable:"Supprimer le tableau"},hr:{insert:"Insérer une ligne horizontale"},style:{style:"Style",p:"Normal",blockquote:"Citation",pre:"Code source",h1:"Titre 1",h2:"Titre 2",h3:"Titre 3",h4:"Titre 4",h5:"Titre 5",h6:"Titre 6"},lists:{unordered:"Liste à puces",ordered:"Liste numérotée"},options:{help:"Aide",fullscreen:"Plein écran",codeview:"Afficher le code HTML"},paragraph:{paragraph:"Paragraphe",outdent:"Diminuer le retrait",indent:"Augmenter le retrait",left:"Aligner à gauche",center:"Centrer",right:"Aligner à droite",justify:"Justifier"},color:{recent:"Dernière couleur sélectionnée",more:"Plus de couleurs",background:"Couleur de fond",foreground:"Couleur de police",transparent:"Transparent",setTransparent:"Définir la transparence",reset:"Restaurer",resetToDefault:"Restaurer la couleur par défaut"},shortcut:{shortcuts:"Raccourcis",close:"Fermer",textFormatting:"Mise en forme du texte",action:"Action",paragraphFormatting:"Mise en forme des paragraphes",documentStyle:"Style du document",extraKeys:"Touches supplémentaires"},help:{insertParagraph:"Insérer paragraphe",undo:"Défaire la dernière commande",redo:"Refaire la dernière commande",tab:"Tabulation",untab:"Tabulation arrière",bold:"Mettre en caractère gras",italic:"Mettre en italique",underline:"Mettre en souligné",strikethrough:"Mettre en texte barré",removeFormat:"Nettoyer les styles",justifyLeft:"Aligner à gauche",justifyCenter:"Centrer",justifyRight:"Aligner à droite",justifyFull:"Justifier à gauche et à droite",insertUnorderedList:"Basculer liste à puces",insertOrderedList:"Basculer liste ordonnée",outdent:"Diminuer le retrait du paragraphe",indent:"Augmenter le retrait du paragraphe",formatPara:"Changer le paragraphe en cours en normal (P)",formatH1:"Changer le paragraphe en cours en entête H1",formatH2:"Changer le paragraphe en cours en entête H2",formatH3:"Changer le paragraphe en cours en entête H3",formatH4:"Changer le paragraphe en cours en entête H4",formatH5:"Changer le paragraphe en cours en entête H5",formatH6:"Changer le paragraphe en cours en entête H6",insertHorizontalRule:"Insérer séparation horizontale","linkDialog.show":"Afficher fenêtre d'hyperlien"},history:{undo:"Annuler la dernière action",redo:"Restaurer la dernière action annulée"},specialChar:{specialChar:"Caractères spéciaux",select:"Choisir des caractères spéciaux"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-gl-ES.js b/admin/vendors/summernote/dist/lang/summernote-gl-ES.js new file mode 100644 index 0000000000000000000000000000000000000000..85a88362db5496184cff6498646a3c058ecb4d94 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-gl-ES.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 20); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 20: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'gl-ES': { + font: { + bold: 'Negrita', + italic: 'Cursiva', + underline: 'Subliñado', + clear: 'Quitar estilo de fonte', + height: 'Altura de liña', + name: 'Fonte', + strikethrough: 'Riscado', + superscript: 'Superíndice', + subscript: 'Subíndice', + size: 'Tamaño da fonte' + }, + image: { + image: 'Imaxe', + insert: 'Inserir imaxe', + resizeFull: 'Redimensionar a tamaño completo', + resizeHalf: 'Redimensionar á metade', + resizeQuarter: 'Redimensionar a un cuarto', + floatLeft: 'Flotar á esquerda', + floatRight: 'Flotar á dereita', + floatNone: 'Non flotar', + shapeRounded: 'Forma: Redondeado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Marco', + shapeNone: 'Forma: Ningunha', + dragImageHere: 'Arrastrar unha imaxe ou texto aquí', + dropImage: 'Solta a imaxe ou texto', + selectFromFiles: 'Seleccionar desde os arquivos', + maximumFileSize: 'Tamaño máximo do arquivo', + maximumFileSizeError: 'Superaches o tamaño máximo do arquivo.', + url: 'URL da imaxe', + remove: 'Eliminar imaxe', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Ligazón do vídeo', + insert: 'Insertar vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)' + }, + link: { + link: 'Ligazón', + insert: 'Inserir Ligazón', + unlink: 'Quitar Ligazón', + edit: 'Editar', + textToDisplay: 'Texto para amosar', + url: 'Cara a que URL leva a ligazón?', + openInNewWindow: 'Abrir nunha nova xanela' + }, + table: { + table: 'Táboa', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserir liña horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Cita', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista desordenada', + ordered: 'Lista ordenada' + }, + options: { + help: 'Axuda', + fullscreen: 'Pantalla completa', + codeview: 'Ver código fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menos tabulación', + indent: 'Máis tabulación', + left: 'Aliñar á esquerda', + center: 'Aliñar ao centro', + right: 'Aliñar á dereita', + justify: 'Xustificar' + }, + color: { + recent: 'Última cor', + more: 'Máis cores', + background: 'Cor de fondo', + foreground: 'Cor de fuente', + transparent: 'Transparente', + setTransparent: 'Establecer transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar por defecto' + }, + shortcut: { + shortcuts: 'Atallos de teclado', + close: 'Pechar', + textFormatting: 'Formato de texto', + action: 'Acción', + paragraphFormatting: 'Formato de parágrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Teclas adicionais' + }, + help: { + 'insertParagraph': 'Inserir parágrafo', + 'undo': 'Desfacer última acción', + 'redo': 'Refacer última acción', + 'tab': 'Tabular', + 'untab': 'Eliminar tabulación', + 'bold': 'Establecer estilo negrita', + 'italic': 'Establecer estilo cursiva', + 'underline': 'Establecer estilo subliñado', + 'strikethrough': 'Establecer estilo riscado', + 'removeFormat': 'Limpar estilo', + 'justifyLeft': 'Aliñar á esquerda', + 'justifyCenter': 'Aliñar ao centro', + 'justifyRight': 'Aliñar á dereita', + 'justifyFull': 'Xustificar', + 'insertUnorderedList': 'Inserir lista desordenada', + 'insertOrderedList': 'Inserir lista ordenada', + 'outdent': 'Reducir tabulación do parágrafo', + 'indent': 'Aumentar tabulación do parágrafo', + 'formatPara': 'Mudar estilo do bloque a parágrafo (etiqueta P)', + 'formatH1': 'Mudar estilo do bloque a H1', + 'formatH2': 'Mudar estilo do bloque a H2', + 'formatH3': 'Mudar estilo do bloque a H3', + 'formatH4': 'Mudar estilo do bloque a H4', + 'formatH5': 'Mudar estilo do bloque a H5', + 'formatH6': 'Mudar estilo do bloque a H6', + 'insertHorizontalRule': 'Inserir liña horizontal', + 'linkDialog.show': 'Amosar panel ligazóns' + }, + history: { + undo: 'Desfacer', + redo: 'Refacer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIAIS', + select: 'Selecciona Caracteres especiais' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-gl-ES.min.js b/admin/vendors/summernote/dist/lang/summernote-gl-ES.min.js new file mode 100644 index 0000000000000000000000000000000000000000..63fce467fd2ae85aeef0b75ea2d0c42e5c1169d4 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-gl-ES.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-gl-ES.min.js.LICENSE.txt */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var r=a();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var a={};function r(o){if(a[o])return a[o].exports;var t=a[o]={i:o,l:!1,exports:{}};return e[o].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=e,r.c=a,r.d=function(e,a,o){r.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,a){if(1&a&&(e=r(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var t in e)r.d(o,t,function(a){return e[a]}.bind(null,t));return o},r.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(a,"a",a),a},r.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},r.p="",r(r.s=20)}({20:function(e,a){var r;(r=jQuery).extend(r.summernote.lang,{"gl-ES":{font:{bold:"Negrita",italic:"Cursiva",underline:"Subliñado",clear:"Quitar estilo de fonte",height:"Altura de liña",name:"Fonte",strikethrough:"Riscado",superscript:"Superíndice",subscript:"Subíndice",size:"Tamaño da fonte"},image:{image:"Imaxe",insert:"Inserir imaxe",resizeFull:"Redimensionar a tamaño completo",resizeHalf:"Redimensionar á metade",resizeQuarter:"Redimensionar a un cuarto",floatLeft:"Flotar á esquerda",floatRight:"Flotar á dereita",floatNone:"Non flotar",shapeRounded:"Forma: Redondeado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Marco",shapeNone:"Forma: Ningunha",dragImageHere:"Arrastrar unha imaxe ou texto aquí",dropImage:"Solta a imaxe ou texto",selectFromFiles:"Seleccionar desde os arquivos",maximumFileSize:"Tamaño máximo do arquivo",maximumFileSizeError:"Superaches o tamaño máximo do arquivo.",url:"URL da imaxe",remove:"Eliminar imaxe",original:"Original"},video:{video:"Vídeo",videoLink:"Ligazón do vídeo",insert:"Insertar vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, o Youku)"},link:{link:"Ligazón",insert:"Inserir Ligazón",unlink:"Quitar Ligazón",edit:"Editar",textToDisplay:"Texto para amosar",url:"Cara a que URL leva a ligazón?",openInNewWindow:"Abrir nunha nova xanela"},table:{table:"Táboa",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserir liña horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Cita",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista desordenada",ordered:"Lista ordenada"},options:{help:"Axuda",fullscreen:"Pantalla completa",codeview:"Ver código fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menos tabulación",indent:"Máis tabulación",left:"Aliñar á esquerda",center:"Aliñar ao centro",right:"Aliñar á dereita",justify:"Xustificar"},color:{recent:"Última cor",more:"Máis cores",background:"Cor de fondo",foreground:"Cor de fuente",transparent:"Transparente",setTransparent:"Establecer transparente",reset:"Restaurar",resetToDefault:"Restaurar por defecto"},shortcut:{shortcuts:"Atallos de teclado",close:"Pechar",textFormatting:"Formato de texto",action:"Acción",paragraphFormatting:"Formato de parágrafo",documentStyle:"Estilo de documento",extraKeys:"Teclas adicionais"},help:{insertParagraph:"Inserir parágrafo",undo:"Desfacer última acción",redo:"Refacer última acción",tab:"Tabular",untab:"Eliminar tabulación",bold:"Establecer estilo negrita",italic:"Establecer estilo cursiva",underline:"Establecer estilo subliñado",strikethrough:"Establecer estilo riscado",removeFormat:"Limpar estilo",justifyLeft:"Aliñar á esquerda",justifyCenter:"Aliñar ao centro",justifyRight:"Aliñar á dereita",justifyFull:"Xustificar",insertUnorderedList:"Inserir lista desordenada",insertOrderedList:"Inserir lista ordenada",outdent:"Reducir tabulación do parágrafo",indent:"Aumentar tabulación do parágrafo",formatPara:"Mudar estilo do bloque a parágrafo (etiqueta P)",formatH1:"Mudar estilo do bloque a H1",formatH2:"Mudar estilo do bloque a H2",formatH3:"Mudar estilo do bloque a H3",formatH4:"Mudar estilo do bloque a H4",formatH5:"Mudar estilo do bloque a H5",formatH6:"Mudar estilo do bloque a H6",insertHorizontalRule:"Inserir liña horizontal","linkDialog.show":"Amosar panel ligazóns"},history:{undo:"Desfacer",redo:"Refacer"},specialChar:{specialChar:"CARACTERES ESPECIAIS",select:"Selecciona Caracteres especiais"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-he-IL.js b/admin/vendors/summernote/dist/lang/summernote-he-IL.js new file mode 100644 index 0000000000000000000000000000000000000000..06f01fe765b9c072db4995dfccfd093471bb1751 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-he-IL.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 21); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 21: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'he-IL': { + font: { + bold: 'מודגש', + italic: 'נטוי', + underline: 'קו תחתון', + clear: 'נקה עיצוב', + height: 'גובה', + name: 'גופן', + strikethrough: 'קו חוצה', + subscript: 'כתב תחתי', + superscript: 'כתב עילי', + size: 'גודל גופן' + }, + image: { + image: 'תמונה', + insert: 'הוסף תמונה', + resizeFull: 'גודל מלא', + resizeHalf: 'להקטין לחצי', + resizeQuarter: 'להקטין לרבע', + floatLeft: 'יישור לשמאל', + floatRight: 'יישור לימין', + floatNone: 'ישר', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'גרור תמונה לכאן', + dropImage: 'Drop image or Text', + selectFromFiles: 'בחר מתוך קבצים', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'נתיב לתמונה', + remove: 'הסר תמונה', + original: 'Original' + }, + video: { + video: 'סרטון', + videoLink: 'קישור לסרטון', + insert: 'הוסף סרטון', + url: 'קישור לסרטון', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)' + }, + link: { + link: 'קישור', + insert: 'הוסף קישור', + unlink: 'הסר קישור', + edit: 'ערוך', + textToDisplay: 'טקסט להציג', + url: 'קישור', + openInNewWindow: 'פתח בחלון חדש' + }, + table: { + table: 'טבלה', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'הוסף קו' + }, + style: { + style: 'עיצוב', + p: 'טקסט רגיל', + blockquote: 'ציטוט', + pre: 'קוד', + h1: 'כותרת 1', + h2: 'כותרת 2', + h3: 'כותרת 3', + h4: 'כותרת 4', + h5: 'כותרת 5', + h6: 'כותרת 6' + }, + lists: { + unordered: 'רשימת תבליטים', + ordered: 'רשימה ממוספרת' + }, + options: { + help: 'עזרה', + fullscreen: 'מסך מלא', + codeview: 'תצוגת קוד' + }, + paragraph: { + paragraph: 'פסקה', + outdent: 'הקטן כניסה', + indent: 'הגדל כניסה', + left: 'יישור לשמאל', + center: 'יישור למרכז', + right: 'יישור לימין', + justify: 'מיושר' + }, + color: { + recent: 'צבע טקסט אחרון', + more: 'עוד צבעים', + background: 'צבע רקע', + foreground: 'צבע טקסט', + transparent: 'שקוף', + setTransparent: 'קבע כשקוף', + reset: 'איפוס', + resetToDefault: 'אפס לברירת מחדל' + }, + shortcut: { + shortcuts: 'קיצורי מקלדת', + close: 'סגור', + textFormatting: 'עיצוב הטקסט', + action: 'פעולה', + paragraphFormatting: 'סגנונות פסקה', + documentStyle: 'עיצוב המסמך', + extraKeys: 'קיצורים נוספים' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'בטל פעולה', + redo: 'בצע שוב' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-he-IL.min.js b/admin/vendors/summernote/dist/lang/summernote-he-IL.min.js new file mode 100644 index 0000000000000000000000000000000000000000..cdb955d2f279e33727f1b60859abf7b8c8a03210 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-he-IL.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-he-IL.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=21)}({21:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"he-IL":{font:{bold:"מודגש",italic:"נטוי",underline:"קו תחתון",clear:"נקה עיצוב",height:"גובה",name:"גופן",strikethrough:"קו חוצה",subscript:"כתב תחתי",superscript:"כתב עילי",size:"גודל גופן"},image:{image:"תמונה",insert:"הוסף תמונה",resizeFull:"גודל מלא",resizeHalf:"להקטין לחצי",resizeQuarter:"להקטין לרבע",floatLeft:"יישור לשמאל",floatRight:"יישור לימין",floatNone:"ישר",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"גרור תמונה לכאן",dropImage:"Drop image or Text",selectFromFiles:"בחר מתוך קבצים",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"נתיב לתמונה",remove:"הסר תמונה",original:"Original"},video:{video:"סרטון",videoLink:"קישור לסרטון",insert:"הוסף סרטון",url:"קישור לסרטון",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion או Youku)"},link:{link:"קישור",insert:"הוסף קישור",unlink:"הסר קישור",edit:"ערוך",textToDisplay:"טקסט להציג",url:"קישור",openInNewWindow:"פתח בחלון חדש"},table:{table:"טבלה",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"הוסף קו"},style:{style:"עיצוב",p:"טקסט רגיל",blockquote:"ציטוט",pre:"קוד",h1:"כותרת 1",h2:"כותרת 2",h3:"כותרת 3",h4:"כותרת 4",h5:"כותרת 5",h6:"כותרת 6"},lists:{unordered:"רשימת תבליטים",ordered:"רשימה ממוספרת"},options:{help:"עזרה",fullscreen:"מסך מלא",codeview:"תצוגת קוד"},paragraph:{paragraph:"פסקה",outdent:"הקטן כניסה",indent:"הגדל כניסה",left:"יישור לשמאל",center:"יישור למרכז",right:"יישור לימין",justify:"מיושר"},color:{recent:"צבע טקסט אחרון",more:"עוד צבעים",background:"צבע רקע",foreground:"צבע טקסט",transparent:"שקוף",setTransparent:"קבע כשקוף",reset:"איפוס",resetToDefault:"אפס לברירת מחדל"},shortcut:{shortcuts:"קיצורי מקלדת",close:"סגור",textFormatting:"עיצוב הטקסט",action:"פעולה",paragraphFormatting:"סגנונות פסקה",documentStyle:"עיצוב המסמך",extraKeys:"קיצורים נוספים"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"בטל פעולה",redo:"בצע שוב"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-hr-HR.js b/admin/vendors/summernote/dist/lang/summernote-hr-HR.js new file mode 100644 index 0000000000000000000000000000000000000000..c40d6363beb2f7096ba90cd768869c488afe3586 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-hr-HR.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 22); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 22: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'hr-HR': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + name: 'Font Family', + strikethrough: 'Precrtano', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Ubaci sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Poravnaj lijevo', + floatRight: 'Poravnaj desno', + floatNone: 'Bez poravnanja', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Povuci sliku ovdje', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izaberi iz datoteke', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Adresa slike', + remove: 'Ukloni sliku', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Veza na video', + insert: 'Ubaci video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Ubaci vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tablica', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Ubaci horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kôd', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerirana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko cijelog ekrana', + codeview: 'Izvorni kôd' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povećaj uvlačenje', + left: 'Poravnaj lijevo', + center: 'Centrirano', + right: 'Poravnaj desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Posljednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Prozirna', + setTransparent: 'Prozirna', + reset: 'Poništi', + resetToDefault: 'Podrazumijevana' + }, + shortcut: { + shortcuts: 'Prečice s tipkovnice', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-hr-HR.min.js b/admin/vendors/summernote/dist/lang/summernote-hr-HR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..749b2e1b9db17d1bc209c468584600f8f781a123 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-hr-HR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-hr-HR.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var a=r();for(var t in a)("object"==typeof exports?exports:e)[t]=a[t]}}(window,(function(){return function(e){var r={};function a(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=e,a.c=r,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)a.d(t,o,function(r){return e[r]}.bind(null,o));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="",a(a.s=22)}({22:function(e,r){var a;(a=jQuery).extend(a.summernote.lang,{"hr-HR":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",name:"Font Family",strikethrough:"Precrtano",subscript:"Subscript",superscript:"Superscript",size:"Veličina fonta"},image:{image:"Slika",insert:"Ubaci sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Poravnaj lijevo",floatRight:"Poravnaj desno",floatNone:"Bez poravnanja",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Povuci sliku ovdje",dropImage:"Drop image or Text",selectFromFiles:"Izaberi iz datoteke",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Adresa slike",remove:"Ukloni sliku",original:"Original"},video:{video:"Video",videoLink:"Veza na video",insert:"Ubaci video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Ubaci vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tablica",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Ubaci horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kôd",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Obična lista",ordered:"Numerirana lista"},options:{help:"Pomoć",fullscreen:"Preko cijelog ekrana",codeview:"Izvorni kôd"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povećaj uvlačenje",left:"Poravnaj lijevo",center:"Centrirano",right:"Poravnaj desno",justify:"Poravnaj obostrano"},color:{recent:"Posljednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Prozirna",setTransparent:"Prozirna",reset:"Poništi",resetToDefault:"Podrazumijevana"},shortcut:{shortcuts:"Prečice s tipkovnice",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Poništi",redo:"Ponovi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-hu-HU.js b/admin/vendors/summernote/dist/lang/summernote-hu-HU.js new file mode 100644 index 0000000000000000000000000000000000000000..0d4d86cb0d5c35236d3c9f235b18c45d9c8ad2f4 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-hu-HU.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 23); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 23: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'hu-HU': { + font: { + bold: 'Félkövér', + italic: 'Dőlt', + underline: 'Aláhúzott', + clear: 'Formázás törlése', + height: 'Sorköz', + name: 'Betűtípus', + strikethrough: 'Áthúzott', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Betűméret' + }, + image: { + image: 'Kép', + insert: 'Kép beszúrása', + resizeFull: 'Átméretezés teljes méretre', + resizeHalf: 'Átméretezés felére', + resizeQuarter: 'Átméretezés negyedére', + floatLeft: 'Igazítás balra', + floatRight: 'Igazítás jobbra', + floatNone: 'Igazítás törlése', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Ide húzhat képet vagy szöveget', + dropImage: 'Engedje el a képet vagy szöveget', + selectFromFiles: 'Fájlok kiválasztása', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Kép URL címe', + remove: 'Kép törlése', + original: 'Original' + }, + video: { + video: 'Videó', + videoLink: 'Videó hivatkozás', + insert: 'Videó beszúrása', + url: 'Videó URL címe', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)' + }, + link: { + link: 'Hivatkozás', + insert: 'Hivatkozás beszúrása', + unlink: 'Hivatkozás megszüntetése', + edit: 'Szerkesztés', + textToDisplay: 'Megjelenítendő szöveg', + url: 'Milyen URL címre hivatkozzon?', + openInNewWindow: 'Megnyitás új ablakban' + }, + table: { + table: 'Táblázat', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Elválasztó vonal beszúrása' + }, + style: { + style: 'Stílus', + p: 'Normál', + blockquote: 'Idézet', + pre: 'Kód', + h1: 'Fejléc 1', + h2: 'Fejléc 2', + h3: 'Fejléc 3', + h4: 'Fejléc 4', + h5: 'Fejléc 5', + h6: 'Fejléc 6' + }, + lists: { + unordered: 'Listajeles lista', + ordered: 'Számozott lista' + }, + options: { + help: 'Súgó', + fullscreen: 'Teljes képernyő', + codeview: 'Kód nézet' + }, + paragraph: { + paragraph: 'Bekezdés', + outdent: 'Behúzás csökkentése', + indent: 'Behúzás növelése', + left: 'Igazítás balra', + center: 'Igazítás középre', + right: 'Igazítás jobbra', + justify: 'Sorkizárt' + }, + color: { + recent: 'Jelenlegi szín', + more: 'További színek', + background: 'Háttérszín', + foreground: 'Betűszín', + transparent: 'Átlátszó', + setTransparent: 'Átlászóság beállítása', + reset: 'Visszaállítás', + resetToDefault: 'Alaphelyzetbe állítás' + }, + shortcut: { + shortcuts: 'Gyorsbillentyű', + close: 'Bezárás', + textFormatting: 'Szöveg formázása', + action: 'Művelet', + paragraphFormatting: 'Bekezdés formázása', + documentStyle: 'Dokumentumstílus', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Új bekezdés', + 'undo': 'Visszavonás', + 'redo': 'Újra', + 'tab': 'Behúzás növelése', + 'untab': 'Behúzás csökkentése', + 'bold': 'Félkövérre állítás', + 'italic': 'Dőltre állítás', + 'underline': 'Aláhúzás', + 'strikethrough': 'Áthúzás', + 'removeFormat': 'Formázás törlése', + 'justifyLeft': 'Balra igazítás', + 'justifyCenter': 'Középre igazítás', + 'justifyRight': 'Jobbra igazítás', + 'justifyFull': 'Sorkizárt', + 'insertUnorderedList': 'Számozatlan lista be/ki', + 'insertOrderedList': 'Számozott lista be/ki', + 'outdent': 'Jelenlegi bekezdés behúzásának megszüntetése', + 'indent': 'Jelenlegi bekezdés behúzása', + 'formatPara': 'Blokk formázása bekezdésként (P tag)', + 'formatH1': 'Blokk formázása, mint Fejléc 1', + 'formatH2': 'Blokk formázása, mint Fejléc 2', + 'formatH3': 'Blokk formázása, mint Fejléc 3', + 'formatH4': 'Blokk formázása, mint Fejléc 4', + 'formatH5': 'Blokk formázása, mint Fejléc 5', + 'formatH6': 'Blokk formázása, mint Fejléc 6', + 'insertHorizontalRule': 'Vízszintes vonal beszúrása', + 'linkDialog.show': 'Link párbeszédablak megjelenítése' + }, + history: { + undo: 'Visszavonás', + redo: 'Újra' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-hu-HU.min.js b/admin/vendors/summernote/dist/lang/summernote-hu-HU.min.js new file mode 100644 index 0000000000000000000000000000000000000000..e88e3abed29fc065addc8883d90b468aa34127b6 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-hu-HU.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-hu-HU.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var s=t[o]={i:o,l:!1,exports:{}};return e[o].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(o,s,function(t){return e[t]}.bind(null,s));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=23)}({23:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"hu-HU":{font:{bold:"Félkövér",italic:"Dőlt",underline:"Aláhúzott",clear:"Formázás törlése",height:"Sorköz",name:"Betűtípus",strikethrough:"Áthúzott",subscript:"Subscript",superscript:"Superscript",size:"Betűméret"},image:{image:"Kép",insert:"Kép beszúrása",resizeFull:"Átméretezés teljes méretre",resizeHalf:"Átméretezés felére",resizeQuarter:"Átméretezés negyedére",floatLeft:"Igazítás balra",floatRight:"Igazítás jobbra",floatNone:"Igazítás törlése",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Ide húzhat képet vagy szöveget",dropImage:"Engedje el a képet vagy szöveget",selectFromFiles:"Fájlok kiválasztása",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Kép URL címe",remove:"Kép törlése",original:"Original"},video:{video:"Videó",videoLink:"Videó hivatkozás",insert:"Videó beszúrása",url:"Videó URL címe",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion vagy Youku)"},link:{link:"Hivatkozás",insert:"Hivatkozás beszúrása",unlink:"Hivatkozás megszüntetése",edit:"Szerkesztés",textToDisplay:"Megjelenítendő szöveg",url:"Milyen URL címre hivatkozzon?",openInNewWindow:"Megnyitás új ablakban"},table:{table:"Táblázat",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Elválasztó vonal beszúrása"},style:{style:"Stílus",p:"Normál",blockquote:"Idézet",pre:"Kód",h1:"Fejléc 1",h2:"Fejléc 2",h3:"Fejléc 3",h4:"Fejléc 4",h5:"Fejléc 5",h6:"Fejléc 6"},lists:{unordered:"Listajeles lista",ordered:"Számozott lista"},options:{help:"Súgó",fullscreen:"Teljes képernyő",codeview:"Kód nézet"},paragraph:{paragraph:"Bekezdés",outdent:"Behúzás csökkentése",indent:"Behúzás növelése",left:"Igazítás balra",center:"Igazítás középre",right:"Igazítás jobbra",justify:"Sorkizárt"},color:{recent:"Jelenlegi szín",more:"További színek",background:"Háttérszín",foreground:"Betűszín",transparent:"Átlátszó",setTransparent:"Átlászóság beállítása",reset:"Visszaállítás",resetToDefault:"Alaphelyzetbe állítás"},shortcut:{shortcuts:"Gyorsbillentyű",close:"Bezárás",textFormatting:"Szöveg formázása",action:"Művelet",paragraphFormatting:"Bekezdés formázása",documentStyle:"Dokumentumstílus",extraKeys:"Extra keys"},help:{insertParagraph:"Új bekezdés",undo:"Visszavonás",redo:"Újra",tab:"Behúzás növelése",untab:"Behúzás csökkentése",bold:"Félkövérre állítás",italic:"Dőltre állítás",underline:"Aláhúzás",strikethrough:"Áthúzás",removeFormat:"Formázás törlése",justifyLeft:"Balra igazítás",justifyCenter:"Középre igazítás",justifyRight:"Jobbra igazítás",justifyFull:"Sorkizárt",insertUnorderedList:"Számozatlan lista be/ki",insertOrderedList:"Számozott lista be/ki",outdent:"Jelenlegi bekezdés behúzásának megszüntetése",indent:"Jelenlegi bekezdés behúzása",formatPara:"Blokk formázása bekezdésként (P tag)",formatH1:"Blokk formázása, mint Fejléc 1",formatH2:"Blokk formázása, mint Fejléc 2",formatH3:"Blokk formázása, mint Fejléc 3",formatH4:"Blokk formázása, mint Fejléc 4",formatH5:"Blokk formázása, mint Fejléc 5",formatH6:"Blokk formázása, mint Fejléc 6",insertHorizontalRule:"Vízszintes vonal beszúrása","linkDialog.show":"Link párbeszédablak megjelenítése"},history:{undo:"Visszavonás",redo:"Újra"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-id-ID.js b/admin/vendors/summernote/dist/lang/summernote-id-ID.js new file mode 100644 index 0000000000000000000000000000000000000000..987f2507b3f712c102f155a03cacd08e6605c9db --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-id-ID.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 24); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 24: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'id-ID': { + font: { + bold: 'Tebal', + italic: 'Miring', + underline: 'Garis bawah', + clear: 'Bersihkan gaya', + height: 'Jarak baris', + name: 'Jenis Tulisan', + strikethrough: 'Coret', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Ukuran font' + }, + image: { + image: 'Gambar', + insert: 'Sisipkan gambar', + resizeFull: 'Ukuran penuh', + resizeHalf: 'Ukuran 50%', + resizeQuarter: 'Ukuran 25%', + floatLeft: 'Rata kiri', + floatRight: 'Rata kanan', + floatNone: 'Tanpa perataan', + shapeRounded: 'Bentuk: Membundar', + shapeCircle: 'Bentuk: Bundar', + shapeThumbnail: 'Bentuk: Thumbnail', + shapeNone: 'Bentuk: Tidak ada', + dragImageHere: 'Tarik gambar ke area ini', + dropImage: 'Letakkan gambar atau teks', + selectFromFiles: 'Pilih gambar dari berkas', + maximumFileSize: 'Ukuran maksimal berkas', + maximumFileSizeError: 'Ukuran maksimal berkas terlampaui.', + url: 'URL gambar', + remove: 'Hapus Gambar', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Sisipkan video', + url: 'Tautan video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)' + }, + link: { + link: 'Tautan', + insert: 'Tambah tautan', + unlink: 'Hapus tautan', + edit: 'Edit', + textToDisplay: 'Tampilan teks', + url: 'Tautan tujuan', + openInNewWindow: 'Buka di jendela baru' + }, + table: { + table: 'Tabel', + addRowAbove: 'Tambahkan baris ke atas', + addRowBelow: 'Tambahkan baris ke bawah', + addColLeft: 'Tambahkan kolom ke kiri', + addColRight: 'Tambahkan kolom ke kanan', + delRow: 'Hapus baris', + delCol: 'Hapus kolom', + delTable: 'Hapus tabel' + }, + hr: { + insert: 'Masukkan garis horizontal' + }, + style: { + style: 'Gaya', + p: 'p', + blockquote: 'Kutipan', + pre: 'Kode', + h1: 'Heading 1', + h2: 'Heading 2', + h3: 'Heading 3', + h4: 'Heading 4', + h5: 'Heading 5', + h6: 'Heading 6' + }, + lists: { + unordered: 'Pencacahan', + ordered: 'Penomoran' + }, + options: { + help: 'Bantuan', + fullscreen: 'Layar penuh', + codeview: 'Kode HTML' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Outdent', + indent: 'Indent', + left: 'Rata kiri', + center: 'Rata tengah', + right: 'Rata kanan', + justify: 'Rata kanan kiri' + }, + color: { + recent: 'Warna sekarang', + more: 'Selengkapnya', + background: 'Warna latar', + foreground: 'Warna font', + transparent: 'Transparan', + setTransparent: 'Atur transparansi', + reset: 'Atur ulang', + resetToDefault: 'Kembalikan kesemula' + }, + shortcut: { + shortcuts: 'Jalan pintas', + close: 'Tutup', + textFormatting: 'Format teks', + action: 'Aksi', + paragraphFormatting: 'Format paragraf', + documentStyle: 'Gaya dokumen', + extraKeys: 'Shortcut tambahan' + }, + help: { + 'insertParagraph': 'Tambahkan paragraf', + 'undo': 'Urungkan perintah terakhir', + 'redo': 'Kembalikan perintah terakhir', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Mengaktifkan gaya tebal', + 'italic': 'Mengaktifkan gaya italic', + 'underline': 'Mengaktifkan gaya underline', + 'strikethrough': 'Mengaktifkan gaya strikethrough', + 'removeFormat': 'Hapus semua gaya', + 'justifyLeft': 'Atur rata kiri', + 'justifyCenter': 'Atur rata tengah', + 'justifyRight': 'Atur rata kanan', + 'justifyFull': 'Atur rata kiri-kanan', + 'insertUnorderedList': 'Nyalakan urutan tanpa nomor', + 'insertOrderedList': 'Nyalakan urutan bernomor', + 'outdent': 'Outdent di paragraf terpilih', + 'indent': 'Indent di paragraf terpilih', + 'formatPara': 'Ubah format gaya tulisan terpilih menjadi paragraf', + 'formatH1': 'Ubah format gaya tulisan terpilih menjadi Heading 1', + 'formatH2': 'Ubah format gaya tulisan terpilih menjadi Heading 2', + 'formatH3': 'Ubah format gaya tulisan terpilih menjadi Heading 3', + 'formatH4': 'Ubah format gaya tulisan terpilih menjadi Heading 4', + 'formatH5': 'Ubah format gaya tulisan terpilih menjadi Heading 5', + 'formatH6': 'Ubah format gaya tulisan terpilih menjadi Heading 6', + 'insertHorizontalRule': 'Masukkan garis horizontal', + 'linkDialog.show': 'Tampilkan Link Dialog' + }, + history: { + undo: 'Kembali', + redo: 'Ulang' + }, + specialChar: { + specialChar: 'KARAKTER KHUSUS', + select: 'Pilih karakter khusus' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-id-ID.min.js b/admin/vendors/summernote/dist/lang/summernote-id-ID.min.js new file mode 100644 index 0000000000000000000000000000000000000000..7947ef9bba1fb0dc28c57ab57afc6302d85a2b99 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-id-ID.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-id-ID.min.js.LICENSE.txt */ +!function(a,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var t in r)("object"==typeof exports?exports:a)[t]=r[t]}}(window,(function(){return function(a){var e={};function r(t){if(e[t])return e[t].exports;var n=e[t]={i:t,l:!1,exports:{}};return a[t].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=a,r.c=e,r.d=function(a,e,t){r.o(a,e)||Object.defineProperty(a,e,{enumerable:!0,get:t})},r.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},r.t=function(a,e){if(1&e&&(a=r(a)),8&e)return a;if(4&e&&"object"==typeof a&&a&&a.__esModule)return a;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:a}),2&e&&"string"!=typeof a)for(var n in a)r.d(t,n,function(e){return a[e]}.bind(null,n));return t},r.n=function(a){var e=a&&a.__esModule?function(){return a.default}:function(){return a};return r.d(e,"a",e),e},r.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},r.p="",r(r.s=24)}({24:function(a,e){var r;(r=jQuery).extend(r.summernote.lang,{"id-ID":{font:{bold:"Tebal",italic:"Miring",underline:"Garis bawah",clear:"Bersihkan gaya",height:"Jarak baris",name:"Jenis Tulisan",strikethrough:"Coret",subscript:"Subscript",superscript:"Superscript",size:"Ukuran font"},image:{image:"Gambar",insert:"Sisipkan gambar",resizeFull:"Ukuran penuh",resizeHalf:"Ukuran 50%",resizeQuarter:"Ukuran 25%",floatLeft:"Rata kiri",floatRight:"Rata kanan",floatNone:"Tanpa perataan",shapeRounded:"Bentuk: Membundar",shapeCircle:"Bentuk: Bundar",shapeThumbnail:"Bentuk: Thumbnail",shapeNone:"Bentuk: Tidak ada",dragImageHere:"Tarik gambar ke area ini",dropImage:"Letakkan gambar atau teks",selectFromFiles:"Pilih gambar dari berkas",maximumFileSize:"Ukuran maksimal berkas",maximumFileSizeError:"Ukuran maksimal berkas terlampaui.",url:"URL gambar",remove:"Hapus Gambar",original:"Original"},video:{video:"Video",videoLink:"Link video",insert:"Sisipkan video",url:"Tautan video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion atau Youku)"},link:{link:"Tautan",insert:"Tambah tautan",unlink:"Hapus tautan",edit:"Edit",textToDisplay:"Tampilan teks",url:"Tautan tujuan",openInNewWindow:"Buka di jendela baru"},table:{table:"Tabel",addRowAbove:"Tambahkan baris ke atas",addRowBelow:"Tambahkan baris ke bawah",addColLeft:"Tambahkan kolom ke kiri",addColRight:"Tambahkan kolom ke kanan",delRow:"Hapus baris",delCol:"Hapus kolom",delTable:"Hapus tabel"},hr:{insert:"Masukkan garis horizontal"},style:{style:"Gaya",p:"p",blockquote:"Kutipan",pre:"Kode",h1:"Heading 1",h2:"Heading 2",h3:"Heading 3",h4:"Heading 4",h5:"Heading 5",h6:"Heading 6"},lists:{unordered:"Pencacahan",ordered:"Penomoran"},options:{help:"Bantuan",fullscreen:"Layar penuh",codeview:"Kode HTML"},paragraph:{paragraph:"Paragraf",outdent:"Outdent",indent:"Indent",left:"Rata kiri",center:"Rata tengah",right:"Rata kanan",justify:"Rata kanan kiri"},color:{recent:"Warna sekarang",more:"Selengkapnya",background:"Warna latar",foreground:"Warna font",transparent:"Transparan",setTransparent:"Atur transparansi",reset:"Atur ulang",resetToDefault:"Kembalikan kesemula"},shortcut:{shortcuts:"Jalan pintas",close:"Tutup",textFormatting:"Format teks",action:"Aksi",paragraphFormatting:"Format paragraf",documentStyle:"Gaya dokumen",extraKeys:"Shortcut tambahan"},help:{insertParagraph:"Tambahkan paragraf",undo:"Urungkan perintah terakhir",redo:"Kembalikan perintah terakhir",tab:"Tab",untab:"Untab",bold:"Mengaktifkan gaya tebal",italic:"Mengaktifkan gaya italic",underline:"Mengaktifkan gaya underline",strikethrough:"Mengaktifkan gaya strikethrough",removeFormat:"Hapus semua gaya",justifyLeft:"Atur rata kiri",justifyCenter:"Atur rata tengah",justifyRight:"Atur rata kanan",justifyFull:"Atur rata kiri-kanan",insertUnorderedList:"Nyalakan urutan tanpa nomor",insertOrderedList:"Nyalakan urutan bernomor",outdent:"Outdent di paragraf terpilih",indent:"Indent di paragraf terpilih",formatPara:"Ubah format gaya tulisan terpilih menjadi paragraf",formatH1:"Ubah format gaya tulisan terpilih menjadi Heading 1",formatH2:"Ubah format gaya tulisan terpilih menjadi Heading 2",formatH3:"Ubah format gaya tulisan terpilih menjadi Heading 3",formatH4:"Ubah format gaya tulisan terpilih menjadi Heading 4",formatH5:"Ubah format gaya tulisan terpilih menjadi Heading 5",formatH6:"Ubah format gaya tulisan terpilih menjadi Heading 6",insertHorizontalRule:"Masukkan garis horizontal","linkDialog.show":"Tampilkan Link Dialog"},history:{undo:"Kembali",redo:"Ulang"},specialChar:{specialChar:"KARAKTER KHUSUS",select:"Pilih karakter khusus"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-it-IT.js b/admin/vendors/summernote/dist/lang/summernote-it-IT.js new file mode 100644 index 0000000000000000000000000000000000000000..4b75a49d5596a7fa70d1583f8757962cdedafa89 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-it-IT.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 25); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 25: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'it-IT': { + font: { + bold: 'Testo in grassetto', + italic: 'Testo in corsivo', + underline: 'Testo sottolineato', + clear: 'Elimina la formattazione del testo', + height: 'Altezza della linea di testo', + name: 'Famiglia Font', + strikethrough: 'Testo barrato', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Dimensione del carattere' + }, + image: { + image: 'Immagine', + insert: 'Inserisci Immagine', + resizeFull: 'Dimensioni originali', + resizeHalf: 'Ridimensiona al 50%', + resizeQuarter: 'Ridimensiona al 25%', + floatLeft: 'Posiziona a sinistra', + floatRight: 'Posiziona a destra', + floatNone: 'Nessun posizionamento', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Trascina qui un\'immagine', + dropImage: 'Drop image or Text', + selectFromFiles: 'Scegli dai Documenti', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL dell\'immagine', + remove: 'Rimuovi immagine', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Collegamento ad un Video', + insert: 'Inserisci Video', + url: 'URL del Video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)' + }, + link: { + link: 'Collegamento', + insert: 'Inserisci Collegamento', + unlink: 'Elimina collegamento', + edit: 'Modifica collegamento', + textToDisplay: 'Testo del collegamento', + url: 'URL del collegamento', + openInNewWindow: 'Apri in una nuova finestra' + }, + table: { + table: 'Tabella', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Inserisce una linea di separazione' + }, + style: { + style: 'Stili', + p: 'pe', + blockquote: 'Citazione', + pre: 'Codice', + h1: 'Titolo 1', + h2: 'Titolo 2', + h3: 'Titolo 3', + h4: 'Titolo 4', + h5: 'Titolo 5', + h6: 'Titolo 6' + }, + lists: { + unordered: 'Elenco non ordinato', + ordered: 'Elenco ordinato' + }, + options: { + help: 'Aiuto', + fullscreen: 'Modalità a tutto schermo', + codeview: 'Visualizza codice' + }, + paragraph: { + paragraph: 'Paragrafo', + outdent: 'Diminuisce il livello di rientro', + indent: 'Aumenta il livello di rientro', + left: 'Allinea a sinistra', + center: 'Centra', + right: 'Allinea a destra', + justify: 'Giustifica (allinea a destra e sinistra)' + }, + color: { + recent: 'Ultimo colore utilizzato', + more: 'Altri colori', + background: 'Colore di sfondo', + foreground: 'Colore', + transparent: 'Trasparente', + setTransparent: 'Trasparente', + reset: 'Reimposta', + resetToDefault: 'Reimposta i colori' + }, + shortcut: { + shortcuts: 'Scorciatoie da tastiera', + close: 'Chiudi', + textFormatting: 'Formattazione testo', + action: 'Azioni', + paragraphFormatting: 'Formattazione paragrafo', + documentStyle: 'Stili', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Annulla', + redo: 'Ripristina' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-it-IT.min.js b/admin/vendors/summernote/dist/lang/summernote-it-IT.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3d416dda58f0821466c991be618c7630663d20df --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-it-IT.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-it-IT.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var o=t();for(var i in o)("object"==typeof exports?exports:e)[i]=o[i]}}(window,(function(){return function(e){var t={};function o(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=t,o.d=function(e,t,i){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(o.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(i,r,function(t){return e[t]}.bind(null,r));return i},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=25)}({25:function(e,t){var o;(o=jQuery).extend(o.summernote.lang,{"it-IT":{font:{bold:"Testo in grassetto",italic:"Testo in corsivo",underline:"Testo sottolineato",clear:"Elimina la formattazione del testo",height:"Altezza della linea di testo",name:"Famiglia Font",strikethrough:"Testo barrato",subscript:"Subscript",superscript:"Superscript",size:"Dimensione del carattere"},image:{image:"Immagine",insert:"Inserisci Immagine",resizeFull:"Dimensioni originali",resizeHalf:"Ridimensiona al 50%",resizeQuarter:"Ridimensiona al 25%",floatLeft:"Posiziona a sinistra",floatRight:"Posiziona a destra",floatNone:"Nessun posizionamento",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Trascina qui un'immagine",dropImage:"Drop image or Text",selectFromFiles:"Scegli dai Documenti",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL dell'immagine",remove:"Rimuovi immagine",original:"Original"},video:{video:"Video",videoLink:"Collegamento ad un Video",insert:"Inserisci Video",url:"URL del Video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion o Youku)"},link:{link:"Collegamento",insert:"Inserisci Collegamento",unlink:"Elimina collegamento",edit:"Modifica collegamento",textToDisplay:"Testo del collegamento",url:"URL del collegamento",openInNewWindow:"Apri in una nuova finestra"},table:{table:"Tabella",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Inserisce una linea di separazione"},style:{style:"Stili",p:"pe",blockquote:"Citazione",pre:"Codice",h1:"Titolo 1",h2:"Titolo 2",h3:"Titolo 3",h4:"Titolo 4",h5:"Titolo 5",h6:"Titolo 6"},lists:{unordered:"Elenco non ordinato",ordered:"Elenco ordinato"},options:{help:"Aiuto",fullscreen:"Modalità a tutto schermo",codeview:"Visualizza codice"},paragraph:{paragraph:"Paragrafo",outdent:"Diminuisce il livello di rientro",indent:"Aumenta il livello di rientro",left:"Allinea a sinistra",center:"Centra",right:"Allinea a destra",justify:"Giustifica (allinea a destra e sinistra)"},color:{recent:"Ultimo colore utilizzato",more:"Altri colori",background:"Colore di sfondo",foreground:"Colore",transparent:"Trasparente",setTransparent:"Trasparente",reset:"Reimposta",resetToDefault:"Reimposta i colori"},shortcut:{shortcuts:"Scorciatoie da tastiera",close:"Chiudi",textFormatting:"Formattazione testo",action:"Azioni",paragraphFormatting:"Formattazione paragrafo",documentStyle:"Stili",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Annulla",redo:"Ripristina"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ja-JP.js b/admin/vendors/summernote/dist/lang/summernote-ja-JP.js new file mode 100644 index 0000000000000000000000000000000000000000..effcc780cf497b5d523dc1f75df8c08412954f54 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ja-JP.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 26); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 26: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ja-JP': { + font: { + bold: '太字', + italic: '斜体', + underline: '下線', + clear: 'クリア', + height: '文字高', + name: 'フォント', + strikethrough: '取り消し線', + subscript: 'Subscript', + superscript: 'Superscript', + size: '大きさ' + }, + image: { + image: '画像', + insert: '画像挿入', + resizeFull: '最大化', + resizeHalf: '1/2', + resizeQuarter: '1/4', + floatLeft: '左寄せ', + floatRight: '右寄せ', + floatNone: '寄せ解除', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'ここに画像をドラッグしてください', + dropImage: 'Drop image or Text', + selectFromFiles: '画像ファイルを選ぶ', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URLから画像を挿入する', + remove: '画像を削除する', + original: 'Original' + }, + video: { + video: '動画', + videoLink: '動画リンク', + insert: '動画挿入', + url: '動画のURL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)' + }, + link: { + link: 'リンク', + insert: 'リンク挿入', + unlink: 'リンク解除', + edit: '編集', + textToDisplay: 'リンク文字列', + url: 'URLを入力してください', + openInNewWindow: '新しいウィンドウで開く' + }, + table: { + table: 'テーブル', + addRowAbove: '行を上に追加', + addRowBelow: '行を下に追加', + addColLeft: '列を左に追加', + addColRight: '列を右に追加', + delRow: '行を削除', + delCol: '列を削除', + delTable: 'テーブルを削除' + }, + hr: { + insert: '水平線の挿入' + }, + style: { + style: 'スタイル', + p: '標準', + blockquote: '引用', + pre: 'コード', + h1: '見出し1', + h2: '見出し2', + h3: '見出し3', + h4: '見出し4', + h5: '見出し5', + h6: '見出し6' + }, + lists: { + unordered: '通常リスト', + ordered: '番号リスト' + }, + options: { + help: 'ヘルプ', + fullscreen: 'フルスクリーン', + codeview: 'コード表示' + }, + paragraph: { + paragraph: '文章', + outdent: '字上げ', + indent: '字下げ', + left: '左寄せ', + center: '中央寄せ', + right: '右寄せ', + justify: '均等割付' + }, + color: { + recent: '現在の色', + more: 'もっと見る', + background: '背景色', + foreground: '文字色', + transparent: '透明', + setTransparent: '透明にする', + reset: '標準', + resetToDefault: '標準に戻す' + }, + shortcut: { + shortcuts: 'ショートカット', + close: '閉じる', + textFormatting: '文字フォーマット', + action: 'アクション', + paragraphFormatting: '文章フォーマット', + documentStyle: 'ドキュメント形式', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': '改行挿入', + 'undo': '一旦、行った操作を戻す', + 'redo': '最後のコマンドをやり直す', + 'tab': 'Tab', + 'untab': 'タブ戻し', + 'bold': '太文字', + 'italic': '斜体', + 'underline': '下線', + 'strikethrough': '取り消し線', + 'removeFormat': '装飾を戻す', + 'justifyLeft': '左寄せ', + 'justifyCenter': '真ん中寄せ', + 'justifyRight': '右寄せ', + 'justifyFull': 'すべてを整列', + 'insertUnorderedList': '行頭に●を挿入', + 'insertOrderedList': '行頭に番号を挿入', + 'outdent': '字下げを戻す(アウトデント)', + 'indent': '字下げする(インデント)', + 'formatPara': '段落(P tag)指定', + 'formatH1': 'H1指定', + 'formatH2': 'H2指定', + 'formatH3': 'H3指定', + 'formatH4': 'H4指定', + 'formatH5': 'H5指定', + 'formatH6': 'H6指定', + 'insertHorizontalRule': '<hr />を挿入', + 'linkDialog.show': 'リンク挿入' + }, + history: { + undo: '元に戻す', + redo: 'やり直す' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ja-JP.min.js b/admin/vendors/summernote/dist/lang/summernote-ja-JP.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9eee37075114104bc6d20faf61429f370d37d0e1 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ja-JP.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ja-JP.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=26)}({26:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"ja-JP":{font:{bold:"太字",italic:"斜体",underline:"下線",clear:"クリア",height:"文字高",name:"フォント",strikethrough:"取り消し線",subscript:"Subscript",superscript:"Superscript",size:"大きさ"},image:{image:"画像",insert:"画像挿入",resizeFull:"最大化",resizeHalf:"1/2",resizeQuarter:"1/4",floatLeft:"左寄せ",floatRight:"右寄せ",floatNone:"寄せ解除",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"ここに画像をドラッグしてください",dropImage:"Drop image or Text",selectFromFiles:"画像ファイルを選ぶ",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URLから画像を挿入する",remove:"画像を削除する",original:"Original"},video:{video:"動画",videoLink:"動画リンク",insert:"動画挿入",url:"動画のURL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku)"},link:{link:"リンク",insert:"リンク挿入",unlink:"リンク解除",edit:"編集",textToDisplay:"リンク文字列",url:"URLを入力してください",openInNewWindow:"新しいウィンドウで開く"},table:{table:"テーブル",addRowAbove:"行を上に追加",addRowBelow:"行を下に追加",addColLeft:"列を左に追加",addColRight:"列を右に追加",delRow:"行を削除",delCol:"列を削除",delTable:"テーブルを削除"},hr:{insert:"水平線の挿入"},style:{style:"スタイル",p:"標準",blockquote:"引用",pre:"コード",h1:"見出し1",h2:"見出し2",h3:"見出し3",h4:"見出し4",h5:"見出し5",h6:"見出し6"},lists:{unordered:"通常リスト",ordered:"番号リスト"},options:{help:"ヘルプ",fullscreen:"フルスクリーン",codeview:"コード表示"},paragraph:{paragraph:"文章",outdent:"字上げ",indent:"字下げ",left:"左寄せ",center:"中央寄せ",right:"右寄せ",justify:"均等割付"},color:{recent:"現在の色",more:"もっと見る",background:"背景色",foreground:"文字色",transparent:"透明",setTransparent:"透明にする",reset:"標準",resetToDefault:"標準に戻す"},shortcut:{shortcuts:"ショートカット",close:"閉じる",textFormatting:"文字フォーマット",action:"アクション",paragraphFormatting:"文章フォーマット",documentStyle:"ドキュメント形式",extraKeys:"Extra keys"},help:{insertParagraph:"改行挿入",undo:"一旦、行った操作を戻す",redo:"最後のコマンドをやり直す",tab:"Tab",untab:"タブ戻し",bold:"太文字",italic:"斜体",underline:"下線",strikethrough:"取り消し線",removeFormat:"装飾を戻す",justifyLeft:"左寄せ",justifyCenter:"真ん中寄せ",justifyRight:"右寄せ",justifyFull:"すべてを整列",insertUnorderedList:"行頭に●を挿入",insertOrderedList:"行頭に番号を挿入",outdent:"字下げを戻す(アウトデント)",indent:"字下げする(インデント)",formatPara:"段落(P tag)指定",formatH1:"H1指定",formatH2:"H2指定",formatH3:"H3指定",formatH4:"H4指定",formatH5:"H5指定",formatH6:"H6指定",insertHorizontalRule:"<hr />を挿入","linkDialog.show":"リンク挿入"},history:{undo:"元に戻す",redo:"やり直す"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ko-KR.js b/admin/vendors/summernote/dist/lang/summernote-ko-KR.js new file mode 100644 index 0000000000000000000000000000000000000000..a1a80feedff2ddf9c18cc9aa9cbbd41c1f586f16 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ko-KR.js @@ -0,0 +1,275 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 27); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 27: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ko-KR': { + font: { + bold: '굵게', + italic: '기울임꼴', + underline: '밑줄', + clear: '서식 지우기', + height: '줄 간격', + name: '글꼴', + superscript: '위 첨자', + subscript: '아래 첨자', + strikethrough: '취소선', + size: '글자 크기' + }, + image: { + image: '그림', + insert: '그림 삽입', + resizeFull: '100% 크기로 변경', + resizeHalf: '50% 크기로 변경', + resizeQuarter: '25% 크기로 변경', + resizeNone: '원본 크기', + floatLeft: '왼쪽 정렬', + floatRight: '오른쪽 정렬', + floatNone: '정렬하지 않음', + shapeRounded: '스타일: 둥근 모서리', + shapeCircle: '스타일: 원형', + shapeThumbnail: '스타일: 액자', + shapeNone: '스타일: 없음', + dragImageHere: '텍스트 혹은 사진을 이곳으로 끌어오세요', + dropImage: '텍스트 혹은 사진을 내려놓으세요', + selectFromFiles: '파일 선택', + maximumFileSize: '최대 파일 크기', + maximumFileSizeError: '최대 파일 크기를 초과했습니다.', + url: '사진 URL', + remove: '사진 삭제', + original: '원본' + }, + video: { + video: '동영상', + videoLink: '동영상 링크', + insert: '동영상 삽입', + url: '동영상 URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)' + }, + link: { + link: '링크', + insert: '링크 삽입', + unlink: '링크 삭제', + edit: '수정', + textToDisplay: '링크에 표시할 내용', + url: '이동할 URL', + openInNewWindow: '새창으로 열기' + }, + table: { + table: '표', + addRowAbove: '위에 행 삽입', + addRowBelow: '아래에 행 삽입', + addColLeft: '왼쪽에 열 삽입', + addColRight: '오른쪽에 열 삽입', + delRow: '행 지우기', + delCol: '열 지우기', + delTable: '표 삭제' + }, + hr: { + insert: '구분선 삽입' + }, + style: { + style: '스타일', + p: '본문', + blockquote: '인용구', + pre: '코드', + h1: '제목 1', + h2: '제목 2', + h3: '제목 3', + h4: '제목 4', + h5: '제목 5', + h6: '제목 6' + }, + lists: { + unordered: '글머리 기호', + ordered: '번호 매기기' + }, + options: { + help: '도움말', + fullscreen: '전체 화면', + codeview: '코드 보기' + }, + paragraph: { + paragraph: '문단 정렬', + outdent: '내어쓰기', + indent: '들여쓰기', + left: '왼쪽 정렬', + center: '가운데 정렬', + right: '오른쪽 정렬', + justify: '양쪽 정렬' + }, + color: { + recent: '마지막으로 사용한 색', + more: '다른 색 선택', + background: '배경색', + foreground: '글자색', + transparent: '투명', + setTransparent: '투명으로 설정', + reset: '취소', + resetToDefault: '기본값으로 설정', + cpSelect: '고르다' + }, + shortcut: { + shortcuts: '키보드 단축키', + close: '닫기', + textFormatting: '글자 스타일 적용', + action: '기능', + paragraphFormatting: '문단 스타일 적용', + documentStyle: '문서 스타일 적용', + extraKeys: '추가 키' + }, + help: { + 'insertParagraph': '문단 삽입', + 'undo': '마지막 명령 취소', + 'redo': '마지막 명령 재실행', + 'tab': '탭', + 'untab': '탭 제거', + 'bold': '굵은 글자로 설정', + 'italic': '기울임꼴 글자로 설정', + 'underline': '밑줄 글자로 설정', + 'strikethrough': '취소선 글자로 설정', + 'removeFormat': '서식 삭제', + 'justifyLeft': '왼쪽 정렬하기', + 'justifyCenter': '가운데 정렬하기', + 'justifyRight': '오른쪽 정렬하기', + 'justifyFull': '좌우채움 정렬하기', + 'insertUnorderedList': '글머리 기호 켜고 끄기', + 'insertOrderedList': '번호 매기기 켜고 끄기', + 'outdent': '현재 문단 내어쓰기', + 'indent': '현재 문단 들여쓰기', + 'formatPara': '현재 블록의 포맷을 문단(P)으로 변경', + 'formatH1': '현재 블록의 포맷을 제목1(H1)로 변경', + 'formatH2': '현재 블록의 포맷을 제목2(H2)로 변경', + 'formatH3': '현재 블록의 포맷을 제목3(H3)로 변경', + 'formatH4': '현재 블록의 포맷을 제목4(H4)로 변경', + 'formatH5': '현재 블록의 포맷을 제목5(H5)로 변경', + 'formatH6': '현재 블록의 포맷을 제목6(H6)로 변경', + 'insertHorizontalRule': '구분선 삽입', + 'linkDialog.show': '링크 대화상자 열기' + }, + history: { + undo: '실행 취소', + redo: '재실행' + }, + specialChar: { + specialChar: '특수문자', + select: '특수문자를 선택하세요' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ko-KR.min.js b/admin/vendors/summernote/dist/lang/summernote-ko-KR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..69ac71f0bd031a89693c1f6ecc03cfdea252178d --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ko-KR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ko-KR.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=27)}({27:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"ko-KR":{font:{bold:"굵게",italic:"기울임꼴",underline:"밑줄",clear:"서식 지우기",height:"줄 간격",name:"글꼴",superscript:"위 첨자",subscript:"아래 첨자",strikethrough:"취소선",size:"글자 크기"},image:{image:"그림",insert:"그림 삽입",resizeFull:"100% 크기로 변경",resizeHalf:"50% 크기로 변경",resizeQuarter:"25% 크기로 변경",resizeNone:"원본 크기",floatLeft:"왼쪽 정렬",floatRight:"오른쪽 정렬",floatNone:"정렬하지 않음",shapeRounded:"스타일: 둥근 모서리",shapeCircle:"스타일: 원형",shapeThumbnail:"스타일: 액자",shapeNone:"스타일: 없음",dragImageHere:"텍스트 혹은 사진을 이곳으로 끌어오세요",dropImage:"텍스트 혹은 사진을 내려놓으세요",selectFromFiles:"파일 선택",maximumFileSize:"최대 파일 크기",maximumFileSizeError:"최대 파일 크기를 초과했습니다.",url:"사진 URL",remove:"사진 삭제",original:"원본"},video:{video:"동영상",videoLink:"동영상 링크",insert:"동영상 삽입",url:"동영상 URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion, Youku 사용 가능)"},link:{link:"링크",insert:"링크 삽입",unlink:"링크 삭제",edit:"수정",textToDisplay:"링크에 표시할 내용",url:"이동할 URL",openInNewWindow:"새창으로 열기"},table:{table:"표",addRowAbove:"위에 행 삽입",addRowBelow:"아래에 행 삽입",addColLeft:"왼쪽에 열 삽입",addColRight:"오른쪽에 열 삽입",delRow:"행 지우기",delCol:"열 지우기",delTable:"표 삭제"},hr:{insert:"구분선 삽입"},style:{style:"스타일",p:"본문",blockquote:"인용구",pre:"코드",h1:"제목 1",h2:"제목 2",h3:"제목 3",h4:"제목 4",h5:"제목 5",h6:"제목 6"},lists:{unordered:"글머리 기호",ordered:"번호 매기기"},options:{help:"도움말",fullscreen:"전체 화면",codeview:"코드 보기"},paragraph:{paragraph:"문단 정렬",outdent:"내어쓰기",indent:"들여쓰기",left:"왼쪽 정렬",center:"가운데 정렬",right:"오른쪽 정렬",justify:"양쪽 정렬"},color:{recent:"마지막으로 사용한 색",more:"다른 색 선택",background:"배경색",foreground:"글자색",transparent:"투명",setTransparent:"투명으로 설정",reset:"취소",resetToDefault:"기본값으로 설정",cpSelect:"고르다"},shortcut:{shortcuts:"키보드 단축키",close:"닫기",textFormatting:"글자 스타일 적용",action:"기능",paragraphFormatting:"문단 스타일 적용",documentStyle:"문서 스타일 적용",extraKeys:"추가 키"},help:{insertParagraph:"문단 삽입",undo:"마지막 명령 취소",redo:"마지막 명령 재실행",tab:"탭",untab:"탭 제거",bold:"굵은 글자로 설정",italic:"기울임꼴 글자로 설정",underline:"밑줄 글자로 설정",strikethrough:"취소선 글자로 설정",removeFormat:"서식 삭제",justifyLeft:"왼쪽 정렬하기",justifyCenter:"가운데 정렬하기",justifyRight:"오른쪽 정렬하기",justifyFull:"좌우채움 정렬하기",insertUnorderedList:"글머리 기호 켜고 끄기",insertOrderedList:"번호 매기기 켜고 끄기",outdent:"현재 문단 내어쓰기",indent:"현재 문단 들여쓰기",formatPara:"현재 블록의 포맷을 문단(P)으로 변경",formatH1:"현재 블록의 포맷을 제목1(H1)로 변경",formatH2:"현재 블록의 포맷을 제목2(H2)로 변경",formatH3:"현재 블록의 포맷을 제목3(H3)로 변경",formatH4:"현재 블록의 포맷을 제목4(H4)로 변경",formatH5:"현재 블록의 포맷을 제목5(H5)로 변경",formatH6:"현재 블록의 포맷을 제목6(H6)로 변경",insertHorizontalRule:"구분선 삽입","linkDialog.show":"링크 대화상자 열기"},history:{undo:"실행 취소",redo:"재실행"},specialChar:{specialChar:"특수문자",select:"특수문자를 선택하세요"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-lt-LT.js b/admin/vendors/summernote/dist/lang/summernote-lt-LT.js new file mode 100644 index 0000000000000000000000000000000000000000..72e60274fb6afacbe5138f61b48e377bc978975b --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-lt-LT.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 28); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 28: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'lt-LT': { + font: { + bold: 'Paryškintas', + italic: 'Kursyvas', + underline: 'Pabrėžtas', + clear: 'Be formatavimo', + height: 'Eilutės aukštis', + name: 'Šrifto pavadinimas', + strikethrough: 'Perbrauktas', + superscript: 'Viršutinis', + subscript: 'Indeksas', + size: 'Šrifto dydis' + }, + image: { + image: 'Paveikslėlis', + insert: 'Įterpti paveikslėlį', + resizeFull: 'Pilnas dydis', + resizeHalf: 'Sumažinti dydį 50%', + resizeQuarter: 'Sumažinti dydį 25%', + floatLeft: 'Kairinis lygiavimas', + floatRight: 'Dešininis lygiavimas', + floatNone: 'Jokio lygiavimo', + shapeRounded: 'Forma: apvalūs kraštai', + shapeCircle: 'Forma: apskritimas', + shapeThumbnail: 'Forma: miniatiūra', + shapeNone: 'Forma: jokia', + dragImageHere: 'Vilkite paveikslėlį čia', + dropImage: 'Drop image or Text', + selectFromFiles: 'Pasirinkite failą', + maximumFileSize: 'Maskimalus failo dydis', + maximumFileSizeError: 'Maskimalus failo dydis viršytas!', + url: 'Paveikslėlio URL adresas', + remove: 'Ištrinti paveikslėlį', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Nuoroda', + insert: 'Įterpti nuorodą', + unlink: 'Pašalinti nuorodą', + edit: 'Redaguoti', + textToDisplay: 'Rodomas tekstas', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atidaryti naujame lange' + }, + table: { + table: 'Lentelė', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Įterpti horizontalią liniją' + }, + style: { + style: 'Stilius', + p: 'pus', + blockquote: 'Citata', + pre: 'Kodas', + h1: 'Antraštė 1', + h2: 'Antraštė 2', + h3: 'Antraštė 3', + h4: 'Antraštė 4', + h5: 'Antraštė 5', + h6: 'Antraštė 6' + }, + lists: { + unordered: 'Suženklintasis sąrašas', + ordered: 'Sunumeruotas sąrašas' + }, + options: { + help: 'Pagalba', + fullscreen: 'Viso ekrano režimas', + codeview: 'HTML kodo peržiūra' + }, + paragraph: { + paragraph: 'Pastraipa', + outdent: 'Sumažinti įtrauką', + indent: 'Padidinti įtrauką', + left: 'Kairinė lygiuotė', + center: 'Centrinė lygiuotė', + right: 'Dešininė lygiuotė', + justify: 'Abipusis išlyginimas' + }, + color: { + recent: 'Paskutinė naudota spalva', + more: 'Daugiau spalvų', + background: 'Fono spalva', + foreground: 'Šrifto spalva', + transparent: 'Permatoma', + setTransparent: 'Nustatyti skaidrumo intensyvumą', + reset: 'Atkurti', + resetToDefault: 'Atstatyti numatytąją spalvą' + }, + shortcut: { + shortcuts: 'Spartieji klavišai', + close: 'Uždaryti', + textFormatting: 'Teksto formatavimas', + action: 'Veiksmas', + paragraphFormatting: 'Pastraipos formatavimas', + documentStyle: 'Dokumento stilius', + extraKeys: 'Papildomi klavišų deriniai' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Anuliuoti veiksmą', + redo: 'Perdaryti veiksmą' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-lt-LT.min.js b/admin/vendors/summernote/dist/lang/summernote-lt-LT.min.js new file mode 100644 index 0000000000000000000000000000000000000000..561deb049ed24418095e67121e55fbf518398fe2 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-lt-LT.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-lt-LT.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var a=t();for(var r in a)("object"==typeof exports?exports:e)[r]=a[r]}}(window,(function(){return function(e){var t={};function a(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)a.d(r,i,function(t){return e[t]}.bind(null,i));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=28)}({28:function(e,t){var a;(a=jQuery).extend(a.summernote.lang,{"lt-LT":{font:{bold:"Paryškintas",italic:"Kursyvas",underline:"Pabrėžtas",clear:"Be formatavimo",height:"Eilutės aukštis",name:"Šrifto pavadinimas",strikethrough:"Perbrauktas",superscript:"Viršutinis",subscript:"Indeksas",size:"Šrifto dydis"},image:{image:"Paveikslėlis",insert:"Įterpti paveikslėlį",resizeFull:"Pilnas dydis",resizeHalf:"Sumažinti dydį 50%",resizeQuarter:"Sumažinti dydį 25%",floatLeft:"Kairinis lygiavimas",floatRight:"Dešininis lygiavimas",floatNone:"Jokio lygiavimo",shapeRounded:"Forma: apvalūs kraštai",shapeCircle:"Forma: apskritimas",shapeThumbnail:"Forma: miniatiūra",shapeNone:"Forma: jokia",dragImageHere:"Vilkite paveikslėlį čia",dropImage:"Drop image or Text",selectFromFiles:"Pasirinkite failą",maximumFileSize:"Maskimalus failo dydis",maximumFileSizeError:"Maskimalus failo dydis viršytas!",url:"Paveikslėlio URL adresas",remove:"Ištrinti paveikslėlį",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Nuoroda",insert:"Įterpti nuorodą",unlink:"Pašalinti nuorodą",edit:"Redaguoti",textToDisplay:"Rodomas tekstas",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atidaryti naujame lange"},table:{table:"Lentelė",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Įterpti horizontalią liniją"},style:{style:"Stilius",p:"pus",blockquote:"Citata",pre:"Kodas",h1:"Antraštė 1",h2:"Antraštė 2",h3:"Antraštė 3",h4:"Antraštė 4",h5:"Antraštė 5",h6:"Antraštė 6"},lists:{unordered:"Suženklintasis sąrašas",ordered:"Sunumeruotas sąrašas"},options:{help:"Pagalba",fullscreen:"Viso ekrano režimas",codeview:"HTML kodo peržiūra"},paragraph:{paragraph:"Pastraipa",outdent:"Sumažinti įtrauką",indent:"Padidinti įtrauką",left:"Kairinė lygiuotė",center:"Centrinė lygiuotė",right:"Dešininė lygiuotė",justify:"Abipusis išlyginimas"},color:{recent:"Paskutinė naudota spalva",more:"Daugiau spalvų",background:"Fono spalva",foreground:"Šrifto spalva",transparent:"Permatoma",setTransparent:"Nustatyti skaidrumo intensyvumą",reset:"Atkurti",resetToDefault:"Atstatyti numatytąją spalvą"},shortcut:{shortcuts:"Spartieji klavišai",close:"Uždaryti",textFormatting:"Teksto formatavimas",action:"Veiksmas",paragraphFormatting:"Pastraipos formatavimas",documentStyle:"Dokumento stilius",extraKeys:"Papildomi klavišų deriniai"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Anuliuoti veiksmą",redo:"Perdaryti veiksmą"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-lt-LV.js b/admin/vendors/summernote/dist/lang/summernote-lt-LV.js new file mode 100644 index 0000000000000000000000000000000000000000..8f68bfdf0bffd56105918c26110bafdd4d3f4e40 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-lt-LV.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 29); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 29: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'lv-LV': { + font: { + bold: 'Treknraksts', + italic: 'Kursīvs', + underline: 'Pasvītrots', + clear: 'Noņemt formatējumu', + height: 'Līnijas augstums', + name: 'Fonts', + strikethrough: 'Nosvītrots', + superscript: 'Augšraksts', + subscript: 'Apakšraksts', + size: 'Fonta lielums' + }, + image: { + image: 'Attēls', + insert: 'Ievietot attēlu', + resizeFull: 'Pilns izmērts', + resizeHalf: 'Samazināt 50%', + resizeQuarter: 'Samazināt 25%', + floatLeft: 'Līdzināt pa kreisi', + floatRight: 'Līdzināt pa labi', + floatNone: 'Nelīdzināt', + shapeRounded: 'Forma: apaļām malām', + shapeCircle: 'Forma: aplis', + shapeThumbnail: 'Forma: rāmītis', + shapeNone: 'Forma: orģināla', + dragImageHere: 'Ievēlciet attēlu šeit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izvēlēties failu', + maximumFileSize: 'Maksimālais faila izmērs', + maximumFileSizeError: 'Faila izmērs pārāk liels!', + url: 'Attēla URL', + remove: 'Dzēst attēlu', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Saite', + insert: 'Ievietot saiti', + unlink: 'Noņemt saiti', + edit: 'Rediģēt', + textToDisplay: 'Saites saturs', + url: 'Koks URL adresas yra susietas?', + openInNewWindow: 'Atvērt jaunā logā' + }, + table: { + table: 'Tabula', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Ievietot līniju' + }, + style: { + style: 'Stils', + p: 'Parasts', + blockquote: 'Citāts', + pre: 'Kods', + h1: 'Virsraksts h1', + h2: 'Virsraksts h2', + h3: 'Virsraksts h3', + h4: 'Virsraksts h4', + h5: 'Virsraksts h5', + h6: 'Virsraksts h6' + }, + lists: { + unordered: 'Nenumurēts saraksts', + ordered: 'Numurēts saraksts' + }, + options: { + help: 'Palīdzība', + fullscreen: 'Pa visu ekrānu', + codeview: 'HTML kods' + }, + paragraph: { + paragraph: 'Paragrāfs', + outdent: 'Samazināt atkāpi', + indent: 'Palielināt atkāpi', + left: 'Līdzināt pa kreisi', + center: 'Centrēt', + right: 'Līdzināt pa labi', + justify: 'Līdzināt gar abām malām' + }, + color: { + recent: 'Nesen izmantotās', + more: 'Citas krāsas', + background: 'Fona krāsa', + foreground: 'Fonta krāsa', + transparent: 'Caurspīdīgs', + setTransparent: 'Iestatīt caurspīdīgumu', + reset: 'Atjaunot', + resetToDefault: 'Atjaunot noklusējumu' + }, + shortcut: { + shortcuts: 'Saīsnes', + close: 'Aizvērt', + textFormatting: 'Teksta formatēšana', + action: 'Darbība', + paragraphFormatting: 'Paragrāfa formatēšana', + documentStyle: 'Dokumenta stils', + extraKeys: 'Citas taustiņu kombinācijas' + }, + help: { + insertParagraph: 'Ievietot Paragrāfu', + undo: 'Atcelt iepriekšējo darbību', + redo: 'Atkārtot atcelto darbību', + tab: 'Atkāpe', + untab: 'Samazināt atkāpi', + bold: 'Pārvērst tekstu treknrakstā', + italic: 'Pārvērst tekstu slīprakstā (kursīvā)', + underline: 'Pasvītrot tekstu', + strikethrough: 'Nosvītrot tekstu', + removeFormat: 'Notīrīt stilu no teksta', + justifyLeft: 'Līdzīnāt saturu pa kreisi', + justifyCenter: 'Centrēt saturu', + justifyRight: 'Līdzīnāt saturu pa labi', + justifyFull: 'Izlīdzināt saturu gar abām malām', + insertUnorderedList: 'Ievietot nenumurētu sarakstu', + insertOrderedList: 'Ievietot numurētu sarakstu', + outdent: 'Samazināt/noņemt atkāpi paragrāfam', + indent: 'Uzlikt atkāpi paragrāfam', + formatPara: 'Mainīt bloka tipu uz (p) Paragrāfu', + formatH1: 'Mainīt bloka tipu uz virsrakstu H1', + formatH2: 'Mainīt bloka tipu uz virsrakstu H2', + formatH3: 'Mainīt bloka tipu uz virsrakstu H3', + formatH4: 'Mainīt bloka tipu uz virsrakstu H4', + formatH5: 'Mainīt bloka tipu uz virsrakstu H5', + formatH6: 'Mainīt bloka tipu uz virsrakstu H6', + insertHorizontalRule: 'Ievietot horizontālu līniju', + 'linkDialog.show': 'Parādīt saites logu' + }, + history: { + undo: 'Atsauks (undo)', + redo: 'Atkārtot (redo)' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-lt-LV.min.js b/admin/vendors/summernote/dist/lang/summernote-lt-LV.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ea333a59269e496a8b5fe9c4ba6dbde8abaa798c --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-lt-LV.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-lt-LV.min.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var a in r)("object"==typeof exports?exports:t)[a]=r[a]}}(window,(function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var i=e[a]={i:a,l:!1,exports:{}};return t[a].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(a,i,function(e){return t[e]}.bind(null,i));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=29)}({29:function(t,e){var r;(r=jQuery).extend(r.summernote.lang,{"lv-LV":{font:{bold:"Treknraksts",italic:"Kursīvs",underline:"Pasvītrots",clear:"Noņemt formatējumu",height:"Līnijas augstums",name:"Fonts",strikethrough:"Nosvītrots",superscript:"Augšraksts",subscript:"Apakšraksts",size:"Fonta lielums"},image:{image:"Attēls",insert:"Ievietot attēlu",resizeFull:"Pilns izmērts",resizeHalf:"Samazināt 50%",resizeQuarter:"Samazināt 25%",floatLeft:"Līdzināt pa kreisi",floatRight:"Līdzināt pa labi",floatNone:"Nelīdzināt",shapeRounded:"Forma: apaļām malām",shapeCircle:"Forma: aplis",shapeThumbnail:"Forma: rāmītis",shapeNone:"Forma: orģināla",dragImageHere:"Ievēlciet attēlu šeit",dropImage:"Drop image or Text",selectFromFiles:"Izvēlēties failu",maximumFileSize:"Maksimālais faila izmērs",maximumFileSizeError:"Faila izmērs pārāk liels!",url:"Attēla URL",remove:"Dzēst attēlu",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Saite",insert:"Ievietot saiti",unlink:"Noņemt saiti",edit:"Rediģēt",textToDisplay:"Saites saturs",url:"Koks URL adresas yra susietas?",openInNewWindow:"Atvērt jaunā logā"},table:{table:"Tabula",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Ievietot līniju"},style:{style:"Stils",p:"Parasts",blockquote:"Citāts",pre:"Kods",h1:"Virsraksts h1",h2:"Virsraksts h2",h3:"Virsraksts h3",h4:"Virsraksts h4",h5:"Virsraksts h5",h6:"Virsraksts h6"},lists:{unordered:"Nenumurēts saraksts",ordered:"Numurēts saraksts"},options:{help:"Palīdzība",fullscreen:"Pa visu ekrānu",codeview:"HTML kods"},paragraph:{paragraph:"Paragrāfs",outdent:"Samazināt atkāpi",indent:"Palielināt atkāpi",left:"Līdzināt pa kreisi",center:"Centrēt",right:"Līdzināt pa labi",justify:"Līdzināt gar abām malām"},color:{recent:"Nesen izmantotās",more:"Citas krāsas",background:"Fona krāsa",foreground:"Fonta krāsa",transparent:"Caurspīdīgs",setTransparent:"Iestatīt caurspīdīgumu",reset:"Atjaunot",resetToDefault:"Atjaunot noklusējumu"},shortcut:{shortcuts:"Saīsnes",close:"Aizvērt",textFormatting:"Teksta formatēšana",action:"Darbība",paragraphFormatting:"Paragrāfa formatēšana",documentStyle:"Dokumenta stils",extraKeys:"Citas taustiņu kombinācijas"},help:{insertParagraph:"Ievietot Paragrāfu",undo:"Atcelt iepriekšējo darbību",redo:"Atkārtot atcelto darbību",tab:"Atkāpe",untab:"Samazināt atkāpi",bold:"Pārvērst tekstu treknrakstā",italic:"Pārvērst tekstu slīprakstā (kursīvā)",underline:"Pasvītrot tekstu",strikethrough:"Nosvītrot tekstu",removeFormat:"Notīrīt stilu no teksta",justifyLeft:"Līdzīnāt saturu pa kreisi",justifyCenter:"Centrēt saturu",justifyRight:"Līdzīnāt saturu pa labi",justifyFull:"Izlīdzināt saturu gar abām malām",insertUnorderedList:"Ievietot nenumurētu sarakstu",insertOrderedList:"Ievietot numurētu sarakstu",outdent:"Samazināt/noņemt atkāpi paragrāfam",indent:"Uzlikt atkāpi paragrāfam",formatPara:"Mainīt bloka tipu uz (p) Paragrāfu",formatH1:"Mainīt bloka tipu uz virsrakstu H1",formatH2:"Mainīt bloka tipu uz virsrakstu H2",formatH3:"Mainīt bloka tipu uz virsrakstu H3",formatH4:"Mainīt bloka tipu uz virsrakstu H4",formatH5:"Mainīt bloka tipu uz virsrakstu H5",formatH6:"Mainīt bloka tipu uz virsrakstu H6",insertHorizontalRule:"Ievietot horizontālu līniju","linkDialog.show":"Parādīt saites logu"},history:{undo:"Atsauks (undo)",redo:"Atkārtot (redo)"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-mn-MN.js b/admin/vendors/summernote/dist/lang/summernote-mn-MN.js new file mode 100644 index 0000000000000000000000000000000000000000..373cfabdd8101626de627012888233e2a2ca0fee --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-mn-MN.js @@ -0,0 +1,274 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 30); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 30: +/***/ (function(module, exports) { + +// Starsoft Mongolia LLC Temuujin Ariunbold +(function ($) { + $.extend($.summernote.lang, { + 'mn-MN': { + font: { + bold: 'Тод', + italic: 'Налуу', + underline: 'Доогуур зураас', + clear: 'Цэвэрлэх', + height: 'Өндөр', + name: 'Фонт', + superscript: 'Дээд илтгэгч', + subscript: 'Доод илтгэгч', + strikethrough: 'Дарах', + size: 'Хэмжээ' + }, + image: { + image: 'Зураг', + insert: 'Оруулах', + resizeFull: 'Хэмжээ бүтэн', + resizeHalf: 'Хэмжээ 1/2', + resizeQuarter: 'Хэмжээ 1/4', + floatLeft: 'Зүүн талд байрлуулах', + floatRight: 'Баруун талд байрлуулах', + floatNone: 'Анхдагч байрлалд аваачих', + shapeRounded: 'Хүрээ: Дугуй', + shapeCircle: 'Хүрээ: Тойрог', + shapeThumbnail: 'Хүрээ: Хураангуй', + shapeNone: 'Хүрээгүй', + dragImageHere: 'Зургийг энд чирч авчирна уу', + dropImage: 'Drop image or Text', + selectFromFiles: 'Файлуудаас сонгоно уу', + maximumFileSize: 'Файлын дээд хэмжээ', + maximumFileSizeError: 'Файлын дээд хэмжээ хэтэрсэн', + url: 'Зургийн URL', + remove: 'Зургийг устгах', + original: 'Original' + }, + video: { + video: 'Видео', + videoLink: 'Видео холбоос', + insert: 'Видео оруулах', + url: 'Видео URL?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)' + }, + link: { + link: 'Холбоос', + insert: 'Холбоос оруулах', + unlink: 'Холбоос арилгах', + edit: 'Засварлах', + textToDisplay: 'Харуулах бичвэр', + url: 'Энэ холбоос хаашаа очих вэ?', + openInNewWindow: 'Шинэ цонхонд нээх' + }, + table: { + table: 'Хүснэгт', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Хэвтээ шугам оруулах' + }, + style: { + style: 'Хэв маяг', + p: 'p', + blockquote: 'Иш татах', + pre: 'Эх сурвалж', + h1: 'Гарчиг 1', + h2: 'Гарчиг 2', + h3: 'Гарчиг 3', + h4: 'Гарчиг 4', + h5: 'Гарчиг 5', + h6: 'Гарчиг 6' + }, + lists: { + unordered: 'Эрэмбэлэгдээгүй', + ordered: 'Эрэмбэлэгдсэн' + }, + options: { + help: 'Тусламж', + fullscreen: 'Дэлгэцийг дүүргэх', + codeview: 'HTML-Code харуулах' + }, + paragraph: { + paragraph: 'Хэсэг', + outdent: 'Догол мөр хасах', + indent: 'Догол мөр нэмэх', + left: 'Зүүн тийш эгнүүлэх', + center: 'Төвд эгнүүлэх', + right: 'Баруун тийш эгнүүлэх', + justify: 'Мөрийг тэгшлэх' + }, + color: { + recent: 'Сүүлд хэрэглэсэн өнгө', + more: 'Өөр өнгөнүүд', + background: 'Дэвсгэр өнгө', + foreground: 'Үсгийн өнгө', + transparent: 'Тунгалаг', + setTransparent: 'Тунгалаг болгох', + reset: 'Анхдагч өнгөөр тохируулах', + resetToDefault: 'Хэвд нь оруулах' + }, + shortcut: { + shortcuts: 'Богино холбоос', + close: 'Хаалт', + textFormatting: 'Бичвэрийг хэлбэржүүлэх', + action: 'Үйлдэл', + paragraphFormatting: 'Догол мөрийг хэлбэржүүлэх', + documentStyle: 'Бичиг баримтын хэв загвар', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Буцаах', + redo: 'Дахин хийх' + }, + specialChar: { + specialChar: 'Тусгай тэмдэгт', + select: 'Тусгай тэмдэгт сонгох' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-mn-MN.min.js b/admin/vendors/summernote/dist/lang/summernote-mn-MN.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5833605175de07142906d7f4fde0f1bc6870b00d --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-mn-MN.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-mn-MN.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=30)}({30:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"mn-MN":{font:{bold:"Тод",italic:"Налуу",underline:"Доогуур зураас",clear:"Цэвэрлэх",height:"Өндөр",name:"Фонт",superscript:"Дээд илтгэгч",subscript:"Доод илтгэгч",strikethrough:"Дарах",size:"Хэмжээ"},image:{image:"Зураг",insert:"Оруулах",resizeFull:"Хэмжээ бүтэн",resizeHalf:"Хэмжээ 1/2",resizeQuarter:"Хэмжээ 1/4",floatLeft:"Зүүн талд байрлуулах",floatRight:"Баруун талд байрлуулах",floatNone:"Анхдагч байрлалд аваачих",shapeRounded:"Хүрээ: Дугуй",shapeCircle:"Хүрээ: Тойрог",shapeThumbnail:"Хүрээ: Хураангуй",shapeNone:"Хүрээгүй",dragImageHere:"Зургийг энд чирч авчирна уу",dropImage:"Drop image or Text",selectFromFiles:"Файлуудаас сонгоно уу",maximumFileSize:"Файлын дээд хэмжээ",maximumFileSizeError:"Файлын дээд хэмжээ хэтэрсэн",url:"Зургийн URL",remove:"Зургийг устгах",original:"Original"},video:{video:"Видео",videoLink:"Видео холбоос",insert:"Видео оруулах",url:"Видео URL?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion болон Youku)"},link:{link:"Холбоос",insert:"Холбоос оруулах",unlink:"Холбоос арилгах",edit:"Засварлах",textToDisplay:"Харуулах бичвэр",url:"Энэ холбоос хаашаа очих вэ?",openInNewWindow:"Шинэ цонхонд нээх"},table:{table:"Хүснэгт",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Хэвтээ шугам оруулах"},style:{style:"Хэв маяг",p:"p",blockquote:"Иш татах",pre:"Эх сурвалж",h1:"Гарчиг 1",h2:"Гарчиг 2",h3:"Гарчиг 3",h4:"Гарчиг 4",h5:"Гарчиг 5",h6:"Гарчиг 6"},lists:{unordered:"Эрэмбэлэгдээгүй",ordered:"Эрэмбэлэгдсэн"},options:{help:"Тусламж",fullscreen:"Дэлгэцийг дүүргэх",codeview:"HTML-Code харуулах"},paragraph:{paragraph:"Хэсэг",outdent:"Догол мөр хасах",indent:"Догол мөр нэмэх",left:"Зүүн тийш эгнүүлэх",center:"Төвд эгнүүлэх",right:"Баруун тийш эгнүүлэх",justify:"Мөрийг тэгшлэх"},color:{recent:"Сүүлд хэрэглэсэн өнгө",more:"Өөр өнгөнүүд",background:"Дэвсгэр өнгө",foreground:"Үсгийн өнгө",transparent:"Тунгалаг",setTransparent:"Тунгалаг болгох",reset:"Анхдагч өнгөөр тохируулах",resetToDefault:"Хэвд нь оруулах"},shortcut:{shortcuts:"Богино холбоос",close:"Хаалт",textFormatting:"Бичвэрийг хэлбэржүүлэх",action:"Үйлдэл",paragraphFormatting:"Догол мөрийг хэлбэржүүлэх",documentStyle:"Бичиг баримтын хэв загвар",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Буцаах",redo:"Дахин хийх"},specialChar:{specialChar:"Тусгай тэмдэгт",select:"Тусгай тэмдэгт сонгох"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-nb-NO.js b/admin/vendors/summernote/dist/lang/summernote-nb-NO.js new file mode 100644 index 0000000000000000000000000000000000000000..8a239f74507b43f763aca826980c496df8e04e23 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-nb-NO.js @@ -0,0 +1,272 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 31); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 31: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'nb-NO': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understrek', + clear: 'Fjern formatering', + height: 'Linjehøyde', + name: 'Skrifttype', + strikethrough: 'Gjennomstrek', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Skriftstørrelse' + }, + image: { + image: 'Bilde', + insert: 'Sett inn bilde', + resizeFull: 'Sett full størrelse', + resizeHalf: 'Sett halv størrelse', + resizeQuarter: 'Sett kvart størrelse', + floatLeft: 'Flyt til venstre', + floatRight: 'Flyt til høyre', + floatNone: 'Fjern flyt', + shapeRounded: 'Form: Rundet', + shapeCircle: 'Form: Sirkel', + shapeThumbnail: 'Form: Miniatyr', + shapeNone: 'Form: Ingen', + dragImageHere: 'Dra et bilde hit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Velg fra filer', + maximumFileSize: 'Max filstørrelse', + maximumFileSizeError: 'Maks filstørrelse overskredet.', + url: 'Bilde-URL', + remove: 'Fjern bilde', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Videolenke', + insert: 'Sett inn video', + url: 'Video-URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Lenke', + insert: 'Sett inn lenke', + unlink: 'Fjern lenke', + edit: 'Rediger', + textToDisplay: 'Visningstekst', + url: 'Til hvilken URL skal denne lenken peke?', + openInNewWindow: 'Åpne i nytt vindu' + }, + table: { + table: 'Tabell', + addRowAbove: 'Legg til rad over', + addRowBelow: 'Legg til rad under', + addColLeft: 'Legg til kolonne på venstre side', + addColRight: 'Legg til kolonne på høyre side', + delRow: 'Slett rad', + delCol: 'Slett kolonne', + delTable: 'Slett tabell' + }, + hr: { + insert: 'Sett inn horisontal linje' + }, + style: { + style: 'Stil', + p: 'Paragraf', + blockquote: 'Sitat', + pre: 'Kode', + h1: 'Overskrift 1', + h2: 'Overskrift 2', + h3: 'Overskrift 3', + h4: 'Overskrift 4', + h5: 'Overskrift 5', + h6: 'Overskrift 6' + }, + lists: { + unordered: 'Punktliste', + ordered: 'Nummerert liste' + }, + options: { + help: 'Hjelp', + fullscreen: 'Fullskjerm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Avsnitt', + outdent: 'Tilbakerykk', + indent: 'Innrykk', + left: 'Venstrejustert', + center: 'Midtstilt', + right: 'Høyrejustert', + justify: 'Blokkjustert' + }, + color: { + recent: 'Nylig valgt farge', + more: 'Flere farger', + background: 'Bakgrunnsfarge', + foreground: 'Skriftfarge', + transparent: 'Gjennomsiktig', + setTransparent: 'Sett gjennomsiktig', + reset: 'Nullstill', + resetToDefault: 'Nullstill til standard' + }, + shortcut: { + shortcuts: 'Hurtigtaster', + close: 'Lukk', + textFormatting: 'Tekstformatering', + action: 'Handling', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil' + }, + help: { + 'insertParagraph': 'Sett inn avsnitt', + 'undo': 'Angre siste handling', + 'redo': 'Gjør om siste handling', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Angi en fet stil', + 'italic': 'Angi en kursiv stil', + 'underline': 'Sett en understreket stil', + 'strikethrough': 'Sett en gjennomgående sti', + 'removeFormat': 'Tøm formattering', + 'justifyLeft': 'Angi venstrejustering', + 'justifyCenter': 'Angi sentrert justering', + 'justifyRight': 'Angi høyre justering', + 'justifyFull': 'Angi full justering', + 'insertUnorderedList': 'Bytt uordnet liste', + 'insertOrderedList': 'Bytt sortert liste', + 'outdent': 'Utrykk på valgt avsnitt', + 'indent': 'Innrykk på valgt avsnitt', + 'formatPara': 'Endre gjeldende blokkformat til et avsnitt (P-kode)', + 'formatH1': 'Endre gjeldende blokkformat til H1', + 'formatH2': 'Endre gjeldende blokkformat til H2', + 'formatH3': 'Endre gjeldende blokkformat til H3', + 'formatH4': 'Endre gjeldende blokkformat til H4', + 'formatH5': 'Endre gjeldende blokkformat til H5', + 'formatH6': 'Endre gjeldende blokkformat til H6', + 'insertHorizontalRule': 'Sett inn horisontal deler', + 'linkDialog.show': 'Vis koblingsdialog' + }, + history: { + undo: 'Angre', + redo: 'Gjør om' + }, + specialChar: { + specialChar: 'SPESIELLE TEGN', + select: 'Velg spesielle tegn' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-nb-NO.min.js b/admin/vendors/summernote/dist/lang/summernote-nb-NO.min.js new file mode 100644 index 0000000000000000000000000000000000000000..2460a82b87b9b50b3092750a95c20852a4637a4a --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-nb-NO.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-nb-NO.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=31)}({31:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"nb-NO":{font:{bold:"Fet",italic:"Kursiv",underline:"Understrek",clear:"Fjern formatering",height:"Linjehøyde",name:"Skrifttype",strikethrough:"Gjennomstrek",subscript:"Subscript",superscript:"Superscript",size:"Skriftstørrelse"},image:{image:"Bilde",insert:"Sett inn bilde",resizeFull:"Sett full størrelse",resizeHalf:"Sett halv størrelse",resizeQuarter:"Sett kvart størrelse",floatLeft:"Flyt til venstre",floatRight:"Flyt til høyre",floatNone:"Fjern flyt",shapeRounded:"Form: Rundet",shapeCircle:"Form: Sirkel",shapeThumbnail:"Form: Miniatyr",shapeNone:"Form: Ingen",dragImageHere:"Dra et bilde hit",dropImage:"Drop image or Text",selectFromFiles:"Velg fra filer",maximumFileSize:"Max filstørrelse",maximumFileSizeError:"Maks filstørrelse overskredet.",url:"Bilde-URL",remove:"Fjern bilde",original:"Original"},video:{video:"Video",videoLink:"Videolenke",insert:"Sett inn video",url:"Video-URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Lenke",insert:"Sett inn lenke",unlink:"Fjern lenke",edit:"Rediger",textToDisplay:"Visningstekst",url:"Til hvilken URL skal denne lenken peke?",openInNewWindow:"Åpne i nytt vindu"},table:{table:"Tabell",addRowAbove:"Legg til rad over",addRowBelow:"Legg til rad under",addColLeft:"Legg til kolonne på venstre side",addColRight:"Legg til kolonne på høyre side",delRow:"Slett rad",delCol:"Slett kolonne",delTable:"Slett tabell"},hr:{insert:"Sett inn horisontal linje"},style:{style:"Stil",p:"Paragraf",blockquote:"Sitat",pre:"Kode",h1:"Overskrift 1",h2:"Overskrift 2",h3:"Overskrift 3",h4:"Overskrift 4",h5:"Overskrift 5",h6:"Overskrift 6"},lists:{unordered:"Punktliste",ordered:"Nummerert liste"},options:{help:"Hjelp",fullscreen:"Fullskjerm",codeview:"HTML-visning"},paragraph:{paragraph:"Avsnitt",outdent:"Tilbakerykk",indent:"Innrykk",left:"Venstrejustert",center:"Midtstilt",right:"Høyrejustert",justify:"Blokkjustert"},color:{recent:"Nylig valgt farge",more:"Flere farger",background:"Bakgrunnsfarge",foreground:"Skriftfarge",transparent:"Gjennomsiktig",setTransparent:"Sett gjennomsiktig",reset:"Nullstill",resetToDefault:"Nullstill til standard"},shortcut:{shortcuts:"Hurtigtaster",close:"Lukk",textFormatting:"Tekstformatering",action:"Handling",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil"},help:{insertParagraph:"Sett inn avsnitt",undo:"Angre siste handling",redo:"Gjør om siste handling",tab:"Tab",untab:"Untab",bold:"Angi en fet stil",italic:"Angi en kursiv stil",underline:"Sett en understreket stil",strikethrough:"Sett en gjennomgående sti",removeFormat:"Tøm formattering",justifyLeft:"Angi venstrejustering",justifyCenter:"Angi sentrert justering",justifyRight:"Angi høyre justering",justifyFull:"Angi full justering",insertUnorderedList:"Bytt uordnet liste",insertOrderedList:"Bytt sortert liste",outdent:"Utrykk på valgt avsnitt",indent:"Innrykk på valgt avsnitt",formatPara:"Endre gjeldende blokkformat til et avsnitt (P-kode)",formatH1:"Endre gjeldende blokkformat til H1",formatH2:"Endre gjeldende blokkformat til H2",formatH3:"Endre gjeldende blokkformat til H3",formatH4:"Endre gjeldende blokkformat til H4",formatH5:"Endre gjeldende blokkformat til H5",formatH6:"Endre gjeldende blokkformat til H6",insertHorizontalRule:"Sett inn horisontal deler","linkDialog.show":"Vis koblingsdialog"},history:{undo:"Angre",redo:"Gjør om"},specialChar:{specialChar:"SPESIELLE TEGN",select:"Velg spesielle tegn"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-nl-NL.js b/admin/vendors/summernote/dist/lang/summernote-nl-NL.js new file mode 100644 index 0000000000000000000000000000000000000000..ec5ab23c1beee6b6b200fc26eea5982c87d9cdd5 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-nl-NL.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 32); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 32: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'nl-NL': { + font: { + bold: 'Vet', + italic: 'Cursief', + underline: 'Onderstrepen', + clear: 'Stijl verwijderen', + height: 'Regelhoogte', + name: 'Lettertype', + strikethrough: 'Doorhalen', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Tekstgrootte' + }, + image: { + image: 'Afbeelding', + insert: 'Afbeelding invoegen', + resizeFull: 'Volledige breedte', + resizeHalf: 'Halve breedte', + resizeQuarter: 'Kwart breedte', + floatLeft: 'Links uitlijnen', + floatRight: 'Rechts uitlijnen', + floatNone: 'Geen uitlijning', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Sleep hier een afbeelding naar toe', + dropImage: 'Drop image or Text', + selectFromFiles: 'Selecteer een bestand', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL van de afbeelding', + remove: 'Verwijder afbeelding', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video link', + insert: 'Video invoegen', + url: 'URL van de video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)' + }, + link: { + link: 'Link', + insert: 'Link invoegen', + unlink: 'Link verwijderen', + edit: 'Wijzigen', + textToDisplay: 'Tekst van link', + url: 'Naar welke URL moet deze link verwijzen?', + openInNewWindow: 'Open in nieuw venster' + }, + table: { + table: 'Tabel', + addRowAbove: 'Rij hierboven invoegen', + addRowBelow: 'Rij hieronder invoegen', + addColLeft: 'Kolom links toevoegen', + addColRight: 'Kolom rechts toevoegen', + delRow: 'Verwijder rij', + delCol: 'Verwijder kolom', + delTable: 'Verwijder tabel' + }, + hr: { + insert: 'Horizontale lijn invoegen' + }, + style: { + style: 'Stijl', + p: 'Normaal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Kop 1', + h2: 'Kop 2', + h3: 'Kop 3', + h4: 'Kop 4', + h5: 'Kop 5', + h6: 'Kop 6' + }, + lists: { + unordered: 'Ongeordende lijst', + ordered: 'Geordende lijst' + }, + options: { + help: 'Help', + fullscreen: 'Volledig scherm', + codeview: 'Bekijk Code' + }, + paragraph: { + paragraph: 'Paragraaf', + outdent: 'Inspringen verkleinen', + indent: 'Inspringen vergroten', + left: 'Links uitlijnen', + center: 'Centreren', + right: 'Rechts uitlijnen', + justify: 'Uitvullen' + }, + color: { + recent: 'Recente kleur', + more: 'Meer kleuren', + background: 'Achtergrond kleur', + foreground: 'Tekst kleur', + transparent: 'Transparant', + setTransparent: 'Transparant', + reset: 'Standaard', + resetToDefault: 'Standaard kleur' + }, + shortcut: { + shortcuts: 'Toetsencombinaties', + close: 'sluiten', + textFormatting: 'Tekststijlen', + action: 'Acties', + paragraphFormatting: 'Paragraafstijlen', + documentStyle: 'Documentstijlen', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Alinea invoegen', + 'undo': 'Laatste handeling ongedaan maken', + 'redo': 'Laatste handeling opnieuw uitvoeren', + 'tab': 'Tab', + 'untab': 'Herstel tab', + 'bold': 'Stel stijl in als vet', + 'italic': 'Stel stijl in als cursief', + 'underline': 'Stel stijl in als onderstreept', + 'strikethrough': 'Stel stijl in als doorgestreept', + 'removeFormat': 'Verwijder stijl', + 'justifyLeft': 'Lijn links uit', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Lijn rechts uit', + 'justifyFull': 'Lijn uit op volledige breedte', + 'insertUnorderedList': 'Zet ongeordende lijstweergave aan', + 'insertOrderedList': 'Zet geordende lijstweergave aan', + 'outdent': 'Verwijder inspringing huidige alinea', + 'indent': 'Inspringen op huidige alinea', + 'formatPara': 'Wijzig formattering huidig blok in alinea(P tag)', + 'formatH1': 'Formatteer huidig blok als H1', + 'formatH2': 'Formatteer huidig blok als H2', + 'formatH3': 'Formatteer huidig blok als H3', + 'formatH4': 'Formatteer huidig blok als H4', + 'formatH5': 'Formatteer huidig blok als H5', + 'formatH6': 'Formatteer huidig blok als H6', + 'insertHorizontalRule': 'Invoegen horizontale lijn', + 'linkDialog.show': 'Toon Link Dialoogvenster' + }, + history: { + undo: 'Ongedaan maken', + redo: 'Opnieuw doorvoeren' + }, + specialChar: { + specialChar: 'SPECIALE TEKENS', + select: 'Selecteer Speciale Tekens' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-nl-NL.min.js b/admin/vendors/summernote/dist/lang/summernote-nl-NL.min.js new file mode 100644 index 0000000000000000000000000000000000000000..2ddfc3a4caf972c9b9c5545b5fd26e10e1a9daf3 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-nl-NL.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-nl-NL.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=32)}({32:function(e,t){var n;(n=jQuery).extend(n.summernote.lang,{"nl-NL":{font:{bold:"Vet",italic:"Cursief",underline:"Onderstrepen",clear:"Stijl verwijderen",height:"Regelhoogte",name:"Lettertype",strikethrough:"Doorhalen",subscript:"Subscript",superscript:"Superscript",size:"Tekstgrootte"},image:{image:"Afbeelding",insert:"Afbeelding invoegen",resizeFull:"Volledige breedte",resizeHalf:"Halve breedte",resizeQuarter:"Kwart breedte",floatLeft:"Links uitlijnen",floatRight:"Rechts uitlijnen",floatNone:"Geen uitlijning",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Sleep hier een afbeelding naar toe",dropImage:"Drop image or Text",selectFromFiles:"Selecteer een bestand",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL van de afbeelding",remove:"Verwijder afbeelding",original:"Original"},video:{video:"Video",videoLink:"Video link",insert:"Video invoegen",url:"URL van de video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion of Youku)"},link:{link:"Link",insert:"Link invoegen",unlink:"Link verwijderen",edit:"Wijzigen",textToDisplay:"Tekst van link",url:"Naar welke URL moet deze link verwijzen?",openInNewWindow:"Open in nieuw venster"},table:{table:"Tabel",addRowAbove:"Rij hierboven invoegen",addRowBelow:"Rij hieronder invoegen",addColLeft:"Kolom links toevoegen",addColRight:"Kolom rechts toevoegen",delRow:"Verwijder rij",delCol:"Verwijder kolom",delTable:"Verwijder tabel"},hr:{insert:"Horizontale lijn invoegen"},style:{style:"Stijl",p:"Normaal",blockquote:"Quote",pre:"Code",h1:"Kop 1",h2:"Kop 2",h3:"Kop 3",h4:"Kop 4",h5:"Kop 5",h6:"Kop 6"},lists:{unordered:"Ongeordende lijst",ordered:"Geordende lijst"},options:{help:"Help",fullscreen:"Volledig scherm",codeview:"Bekijk Code"},paragraph:{paragraph:"Paragraaf",outdent:"Inspringen verkleinen",indent:"Inspringen vergroten",left:"Links uitlijnen",center:"Centreren",right:"Rechts uitlijnen",justify:"Uitvullen"},color:{recent:"Recente kleur",more:"Meer kleuren",background:"Achtergrond kleur",foreground:"Tekst kleur",transparent:"Transparant",setTransparent:"Transparant",reset:"Standaard",resetToDefault:"Standaard kleur"},shortcut:{shortcuts:"Toetsencombinaties",close:"sluiten",textFormatting:"Tekststijlen",action:"Acties",paragraphFormatting:"Paragraafstijlen",documentStyle:"Documentstijlen",extraKeys:"Extra keys"},help:{insertParagraph:"Alinea invoegen",undo:"Laatste handeling ongedaan maken",redo:"Laatste handeling opnieuw uitvoeren",tab:"Tab",untab:"Herstel tab",bold:"Stel stijl in als vet",italic:"Stel stijl in als cursief",underline:"Stel stijl in als onderstreept",strikethrough:"Stel stijl in als doorgestreept",removeFormat:"Verwijder stijl",justifyLeft:"Lijn links uit",justifyCenter:"Set center align",justifyRight:"Lijn rechts uit",justifyFull:"Lijn uit op volledige breedte",insertUnorderedList:"Zet ongeordende lijstweergave aan",insertOrderedList:"Zet geordende lijstweergave aan",outdent:"Verwijder inspringing huidige alinea",indent:"Inspringen op huidige alinea",formatPara:"Wijzig formattering huidig blok in alinea(P tag)",formatH1:"Formatteer huidig blok als H1",formatH2:"Formatteer huidig blok als H2",formatH3:"Formatteer huidig blok als H3",formatH4:"Formatteer huidig blok als H4",formatH5:"Formatteer huidig blok als H5",formatH6:"Formatteer huidig blok als H6",insertHorizontalRule:"Invoegen horizontale lijn","linkDialog.show":"Toon Link Dialoogvenster"},history:{undo:"Ongedaan maken",redo:"Opnieuw doorvoeren"},specialChar:{specialChar:"SPECIALE TEKENS",select:"Selecteer Speciale Tekens"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pl-PL.js b/admin/vendors/summernote/dist/lang/summernote-pl-PL.js new file mode 100644 index 0000000000000000000000000000000000000000..a89941db3ab4d351b5844316bb34f5cd5647c963 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pl-PL.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 33); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 33: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'pl-PL': { + font: { + bold: 'Pogrubienie', + italic: 'Pochylenie', + underline: 'Podkreślenie', + clear: 'Usuń formatowanie', + height: 'Interlinia', + name: 'Czcionka', + strikethrough: 'Przekreślenie', + subscript: 'Indeks dolny', + superscript: 'Indeks górny', + size: 'Rozmiar' + }, + image: { + image: 'Grafika', + insert: 'Wstaw grafikę', + resizeFull: 'Zmień rozmiar na 100%', + resizeHalf: 'Zmień rozmiar na 50%', + resizeQuarter: 'Zmień rozmiar na 25%', + floatLeft: 'Po lewej', + floatRight: 'Po prawej', + floatNone: 'Równo z tekstem', + shapeRounded: 'Kształt: zaokrąglone', + shapeCircle: 'Kształt: okrąg', + shapeThumbnail: 'Kształt: miniatura', + shapeNone: 'Kształt: brak', + dragImageHere: 'Przeciągnij grafikę lub tekst tutaj', + dropImage: 'Przeciągnij grafikę lub tekst', + selectFromFiles: 'Wybierz z dysku', + maximumFileSize: 'Limit wielkości pliku', + maximumFileSizeError: 'Przekroczono limit wielkości pliku.', + url: 'Adres URL grafiki', + remove: 'Usuń grafikę', + original: 'Oryginał' + }, + video: { + video: 'Wideo', + videoLink: 'Adres wideo', + insert: 'Wstaw wideo', + url: 'Adres wideo', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)' + }, + link: { + link: 'Odnośnik', + insert: 'Wstaw odnośnik', + unlink: 'Usuń odnośnik', + edit: 'Edytuj', + textToDisplay: 'Tekst do wyświetlenia', + url: 'Na jaki adres URL powinien przenosić ten odnośnik?', + openInNewWindow: 'Otwórz w nowym oknie' + }, + table: { + table: 'Tabela', + addRowAbove: 'Dodaj wiersz powyżej', + addRowBelow: 'Dodaj wiersz poniżej', + addColLeft: 'Dodaj kolumnę po lewej', + addColRight: 'Dodaj kolumnę po prawej', + delRow: 'Usuń wiersz', + delCol: 'Usuń kolumnę', + delTable: 'Usuń tabelę' + }, + hr: { + insert: 'Wstaw poziomą linię' + }, + style: { + style: 'Styl', + p: 'pny', + blockquote: 'Cytat', + pre: 'Kod', + h1: 'Nagłówek 1', + h2: 'Nagłówek 2', + h3: 'Nagłówek 3', + h4: 'Nagłówek 4', + h5: 'Nagłówek 5', + h6: 'Nagłówek 6' + }, + lists: { + unordered: 'Lista wypunktowana', + ordered: 'Lista numerowana' + }, + options: { + help: 'Pomoc', + fullscreen: 'Pełny ekran', + codeview: 'Źródło' + }, + paragraph: { + paragraph: 'Akapit', + outdent: 'Zmniejsz wcięcie', + indent: 'Zwiększ wcięcie', + left: 'Wyrównaj do lewej', + center: 'Wyrównaj do środka', + right: 'Wyrównaj do prawej', + justify: 'Wyrównaj do lewej i prawej' + }, + color: { + recent: 'Ostani kolor', + more: 'Więcej kolorów', + background: 'Tło', + foreground: 'Czcionka', + transparent: 'Przeźroczysty', + setTransparent: 'Przeźroczyste', + reset: 'Zresetuj', + resetToDefault: 'Domyślne' + }, + shortcut: { + shortcuts: 'Skróty klawiaturowe', + close: 'Zamknij', + textFormatting: 'Formatowanie tekstu', + action: 'Akcja', + paragraphFormatting: 'Formatowanie akapitu', + documentStyle: 'Styl dokumentu', + extraKeys: 'Dodatkowe klawisze' + }, + help: { + 'insertParagraph': 'Wstaw paragraf', + 'undo': 'Cofnij poprzednią operację', + 'redo': 'Przywróć poprzednią operację', + 'tab': 'Tabulacja', + 'untab': 'Usuń tabulację', + 'bold': 'Pogrubienie', + 'italic': 'Kursywa', + 'underline': 'Podkreślenie', + 'strikethrough': 'Przekreślenie', + 'removeFormat': 'Usuń formatowanie', + 'justifyLeft': 'Wyrównaj do lewej', + 'justifyCenter': 'Wyrównaj do środka', + 'justifyRight': 'Wyrównaj do prawej', + 'justifyFull': 'Justyfikacja', + 'insertUnorderedList': 'Nienumerowana lista', + 'insertOrderedList': 'Wypunktowana lista', + 'outdent': 'Zmniejsz wcięcie paragrafu', + 'indent': 'Zwiększ wcięcie paragrafu', + 'formatPara': 'Zamień format bloku na paragraf (tag P)', + 'formatH1': 'Zamień format bloku na H1', + 'formatH2': 'Zamień format bloku na H2', + 'formatH3': 'Zamień format bloku na H3', + 'formatH4': 'Zamień format bloku na H4', + 'formatH5': 'Zamień format bloku na H5', + 'formatH6': 'Zamień format bloku na H6', + 'insertHorizontalRule': 'Wstaw poziomą linię', + 'linkDialog.show': 'Pokaż dialog linkowania' + }, + history: { + undo: 'Cofnij', + redo: 'Ponów' + }, + specialChar: { + specialChar: 'ZNAKI SPECJALNE', + select: 'Wybierz Znak specjalny' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pl-PL.min.js b/admin/vendors/summernote/dist/lang/summernote-pl-PL.min.js new file mode 100644 index 0000000000000000000000000000000000000000..72b0a17a7bde34018929235ffd88e8470c2ce8ab --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pl-PL.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-pl-PL.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var o=r();for(var a in o)("object"==typeof exports?exports:e)[a]=o[a]}}(window,(function(){return function(e){var r={};function o(a){if(r[a])return r[a].exports;var t=r[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=e,o.c=r,o.d=function(e,r,a){o.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,r){if(1&r&&(e=o(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)o.d(a,t,function(r){return e[r]}.bind(null,t));return a},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="",o(o.s=33)}({33:function(e,r){var o;(o=jQuery).extend(o.summernote.lang,{"pl-PL":{font:{bold:"Pogrubienie",italic:"Pochylenie",underline:"Podkreślenie",clear:"Usuń formatowanie",height:"Interlinia",name:"Czcionka",strikethrough:"Przekreślenie",subscript:"Indeks dolny",superscript:"Indeks górny",size:"Rozmiar"},image:{image:"Grafika",insert:"Wstaw grafikę",resizeFull:"Zmień rozmiar na 100%",resizeHalf:"Zmień rozmiar na 50%",resizeQuarter:"Zmień rozmiar na 25%",floatLeft:"Po lewej",floatRight:"Po prawej",floatNone:"Równo z tekstem",shapeRounded:"Kształt: zaokrąglone",shapeCircle:"Kształt: okrąg",shapeThumbnail:"Kształt: miniatura",shapeNone:"Kształt: brak",dragImageHere:"Przeciągnij grafikę lub tekst tutaj",dropImage:"Przeciągnij grafikę lub tekst",selectFromFiles:"Wybierz z dysku",maximumFileSize:"Limit wielkości pliku",maximumFileSizeError:"Przekroczono limit wielkości pliku.",url:"Adres URL grafiki",remove:"Usuń grafikę",original:"Oryginał"},video:{video:"Wideo",videoLink:"Adres wideo",insert:"Wstaw wideo",url:"Adres wideo",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion lub Youku)"},link:{link:"Odnośnik",insert:"Wstaw odnośnik",unlink:"Usuń odnośnik",edit:"Edytuj",textToDisplay:"Tekst do wyświetlenia",url:"Na jaki adres URL powinien przenosić ten odnośnik?",openInNewWindow:"Otwórz w nowym oknie"},table:{table:"Tabela",addRowAbove:"Dodaj wiersz powyżej",addRowBelow:"Dodaj wiersz poniżej",addColLeft:"Dodaj kolumnę po lewej",addColRight:"Dodaj kolumnę po prawej",delRow:"Usuń wiersz",delCol:"Usuń kolumnę",delTable:"Usuń tabelę"},hr:{insert:"Wstaw poziomą linię"},style:{style:"Styl",p:"pny",blockquote:"Cytat",pre:"Kod",h1:"Nagłówek 1",h2:"Nagłówek 2",h3:"Nagłówek 3",h4:"Nagłówek 4",h5:"Nagłówek 5",h6:"Nagłówek 6"},lists:{unordered:"Lista wypunktowana",ordered:"Lista numerowana"},options:{help:"Pomoc",fullscreen:"Pełny ekran",codeview:"Źródło"},paragraph:{paragraph:"Akapit",outdent:"Zmniejsz wcięcie",indent:"Zwiększ wcięcie",left:"Wyrównaj do lewej",center:"Wyrównaj do środka",right:"Wyrównaj do prawej",justify:"Wyrównaj do lewej i prawej"},color:{recent:"Ostani kolor",more:"Więcej kolorów",background:"Tło",foreground:"Czcionka",transparent:"Przeźroczysty",setTransparent:"Przeźroczyste",reset:"Zresetuj",resetToDefault:"Domyślne"},shortcut:{shortcuts:"Skróty klawiaturowe",close:"Zamknij",textFormatting:"Formatowanie tekstu",action:"Akcja",paragraphFormatting:"Formatowanie akapitu",documentStyle:"Styl dokumentu",extraKeys:"Dodatkowe klawisze"},help:{insertParagraph:"Wstaw paragraf",undo:"Cofnij poprzednią operację",redo:"Przywróć poprzednią operację",tab:"Tabulacja",untab:"Usuń tabulację",bold:"Pogrubienie",italic:"Kursywa",underline:"Podkreślenie",strikethrough:"Przekreślenie",removeFormat:"Usuń formatowanie",justifyLeft:"Wyrównaj do lewej",justifyCenter:"Wyrównaj do środka",justifyRight:"Wyrównaj do prawej",justifyFull:"Justyfikacja",insertUnorderedList:"Nienumerowana lista",insertOrderedList:"Wypunktowana lista",outdent:"Zmniejsz wcięcie paragrafu",indent:"Zwiększ wcięcie paragrafu",formatPara:"Zamień format bloku na paragraf (tag P)",formatH1:"Zamień format bloku na H1",formatH2:"Zamień format bloku na H2",formatH3:"Zamień format bloku na H3",formatH4:"Zamień format bloku na H4",formatH5:"Zamień format bloku na H5",formatH6:"Zamień format bloku na H6",insertHorizontalRule:"Wstaw poziomą linię","linkDialog.show":"Pokaż dialog linkowania"},history:{undo:"Cofnij",redo:"Ponów"},specialChar:{specialChar:"ZNAKI SPECJALNE",select:"Wybierz Znak specjalny"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pt-BR.js b/admin/vendors/summernote/dist/lang/summernote-pt-BR.js new file mode 100644 index 0000000000000000000000000000000000000000..380b0f3d4f64a0dd4a2b44bee0aef695e4c0b936 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pt-BR.js @@ -0,0 +1,274 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 34); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 34: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'pt-BR': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + subscript: 'Subscrito', + superscript: 'Sobrescrito', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Redimensionar Completamente', + resizeHalf: 'Redimensionar pela Metade', + resizeQuarter: 'Redimensionar a um Quarto', + floatLeft: 'Flutuar para Esquerda', + floatRight: 'Flutuar para Direita', + floatNone: 'Não Flutuar', + shapeRounded: 'Forma: Arredondado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Miniatura', + shapeNone: 'Forma: Nenhum', + dragImageHere: 'Arraste Imagem ou Texto para cá', + dropImage: 'Solte Imagem ou Texto', + selectFromFiles: 'Selecione a partir dos arquivos', + maximumFileSize: 'Tamanho máximo do arquivo', + maximumFileSizeError: 'Tamanho máximo do arquivo excedido.', + url: 'URL da imagem', + remove: 'Remover Imagem', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir link', + unlink: 'Remover link', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Para qual URL este link leva?', + openInNewWindow: 'Abrir em uma nova janela' + }, + table: { + table: 'Tabela', + addRowAbove: 'Adicionar linha acima', + addRowBelow: 'Adicionar linha abaixo', + addColLeft: 'Adicionar coluna à esquerda', + addColRight: 'Adicionar coluna à direita', + delRow: 'Excluir linha', + delCol: 'Excluir coluna', + delTable: 'Excluir tabela' + }, + hr: { + insert: 'Linha horizontal' + }, + style: { + style: 'Estilo', + p: 'Normal', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Tela cheia', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão', + cpSelect: 'Selecionar' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Inserir Parágrafo', + 'undo': 'Desfazer o último comando', + 'redo': 'Refazer o último comando', + 'tab': 'Tab', + 'untab': 'Desfazer tab', + 'bold': 'Colocar em negrito', + 'italic': 'Colocar em itálico', + 'underline': 'Sublinhado', + 'strikethrough': 'Tachado', + 'removeFormat': 'Remover estilo', + 'justifyLeft': 'Alinhar à esquerda', + 'justifyCenter': 'Centralizar', + 'justifyRight': 'Alinhar à esquerda', + 'justifyFull': 'Justificar', + 'insertUnorderedList': 'Lista não ordenada', + 'insertOrderedList': 'Lista ordenada', + 'outdent': 'Recuar parágrafo atual', + 'indent': 'Avançar parágrafo atual', + 'formatPara': 'Alterar formato do bloco para parágrafo(tag P)', + 'formatH1': 'Alterar formato do bloco para H1', + 'formatH2': 'Alterar formato do bloco para H2', + 'formatH3': 'Alterar formato do bloco para H3', + 'formatH4': 'Alterar formato do bloco para H4', + 'formatH5': 'Alterar formato do bloco para H5', + 'formatH6': 'Alterar formato do bloco para H6', + 'insertHorizontalRule': 'Inserir Régua horizontal', + 'linkDialog.show': 'Inserir um Hiperlink' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + }, + specialChar: { + specialChar: 'CARACTERES ESPECIAIS', + select: 'Selecionar Caracteres Especiais' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pt-BR.min.js b/admin/vendors/summernote/dist/lang/summernote-pt-BR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..55a176eaa28b3a2e09c6df34daaba110d40c0549 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pt-BR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-pt-BR.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var a=r();for(var o in a)("object"==typeof exports?exports:e)[o]=a[o]}}(window,(function(){return function(e){var r={};function a(o){if(r[o])return r[o].exports;var t=r[o]={i:o,l:!1,exports:{}};return e[o].call(t.exports,t,t.exports,a),t.l=!0,t.exports}return a.m=e,a.c=r,a.d=function(e,r,o){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(a.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)a.d(o,t,function(r){return e[r]}.bind(null,t));return o},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="",a(a.s=34)}({34:function(e,r){var a;(a=jQuery).extend(a.summernote.lang,{"pt-BR":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",subscript:"Subscrito",superscript:"Sobrescrito",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Redimensionar Completamente",resizeHalf:"Redimensionar pela Metade",resizeQuarter:"Redimensionar a um Quarto",floatLeft:"Flutuar para Esquerda",floatRight:"Flutuar para Direita",floatNone:"Não Flutuar",shapeRounded:"Forma: Arredondado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Miniatura",shapeNone:"Forma: Nenhum",dragImageHere:"Arraste Imagem ou Texto para cá",dropImage:"Solte Imagem ou Texto",selectFromFiles:"Selecione a partir dos arquivos",maximumFileSize:"Tamanho máximo do arquivo",maximumFileSizeError:"Tamanho máximo do arquivo excedido.",url:"URL da imagem",remove:"Remover Imagem",original:"Original"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Link",insert:"Inserir link",unlink:"Remover link",edit:"Editar",textToDisplay:"Texto para exibir",url:"Para qual URL este link leva?",openInNewWindow:"Abrir em uma nova janela"},table:{table:"Tabela",addRowAbove:"Adicionar linha acima",addRowBelow:"Adicionar linha abaixo",addColLeft:"Adicionar coluna à esquerda",addColRight:"Adicionar coluna à direita",delRow:"Excluir linha",delCol:"Excluir coluna",delTable:"Excluir tabela"},hr:{insert:"Linha horizontal"},style:{style:"Estilo",p:"Normal",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Tela cheia",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão",cpSelect:"Selecionar"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento",extraKeys:"Extra keys"},help:{insertParagraph:"Inserir Parágrafo",undo:"Desfazer o último comando",redo:"Refazer o último comando",tab:"Tab",untab:"Desfazer tab",bold:"Colocar em negrito",italic:"Colocar em itálico",underline:"Sublinhado",strikethrough:"Tachado",removeFormat:"Remover estilo",justifyLeft:"Alinhar à esquerda",justifyCenter:"Centralizar",justifyRight:"Alinhar à esquerda",justifyFull:"Justificar",insertUnorderedList:"Lista não ordenada",insertOrderedList:"Lista ordenada",outdent:"Recuar parágrafo atual",indent:"Avançar parágrafo atual",formatPara:"Alterar formato do bloco para parágrafo(tag P)",formatH1:"Alterar formato do bloco para H1",formatH2:"Alterar formato do bloco para H2",formatH3:"Alterar formato do bloco para H3",formatH4:"Alterar formato do bloco para H4",formatH5:"Alterar formato do bloco para H5",formatH6:"Alterar formato do bloco para H6",insertHorizontalRule:"Inserir Régua horizontal","linkDialog.show":"Inserir um Hiperlink"},history:{undo:"Desfazer",redo:"Refazer"},specialChar:{specialChar:"CARACTERES ESPECIAIS",select:"Selecionar Caracteres Especiais"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pt-PT.js b/admin/vendors/summernote/dist/lang/summernote-pt-PT.js new file mode 100644 index 0000000000000000000000000000000000000000..52667d8daa6916a403d03e1a3767809ac1a39d20 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pt-PT.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 35); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 35: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'pt-PT': { + font: { + bold: 'Negrito', + italic: 'Itálico', + underline: 'Sublinhado', + clear: 'Remover estilo da fonte', + height: 'Altura da linha', + name: 'Fonte', + strikethrough: 'Riscado', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Tamanho da fonte' + }, + image: { + image: 'Imagem', + insert: 'Inserir imagem', + resizeFull: 'Redimensionar Completo', + resizeHalf: 'Redimensionar Metade', + resizeQuarter: 'Redimensionar Um Quarto', + floatLeft: 'Float Esquerda', + floatRight: 'Float Direita', + floatNone: 'Sem Float', + shapeRounded: 'Forma: Arredondado', + shapeCircle: 'Forma: Círculo', + shapeThumbnail: 'Forma: Minhatura', + shapeNone: 'Forma: Nenhum', + dragImageHere: 'Arraste uma imagem para aqui', + dropImage: 'Arraste uma imagem ou texto', + selectFromFiles: 'Selecione a partir dos arquivos', + maximumFileSize: 'Tamanho máximo do fixeiro', + maximumFileSizeError: 'Tamanho máximo do fixeiro é maior que o permitido.', + url: 'Endereço da imagem', + remove: 'Remover Imagem', + original: 'Original' + }, + video: { + video: 'Vídeo', + videoLink: 'Link para vídeo', + insert: 'Inserir vídeo', + url: 'URL do vídeo?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)' + }, + link: { + link: 'Link', + insert: 'Inserir ligação', + unlink: 'Remover ligação', + edit: 'Editar', + textToDisplay: 'Texto para exibir', + url: 'Que endereço esta licação leva?', + openInNewWindow: 'Abrir numa nova janela' + }, + table: { + table: 'Tabela', + addRowAbove: 'Adicionar linha acima', + addRowBelow: 'Adicionar linha abaixo', + addColLeft: 'Adicionar coluna à Esquerda', + addColRight: 'Adicionar coluna à Esquerda', + delRow: 'Excluir linha', + delCol: 'Excluir coluna', + delTable: 'Excluir tabela' + }, + hr: { + insert: 'Inserir linha horizontal' + }, + style: { + style: 'Estilo', + p: 'Parágrafo', + blockquote: 'Citação', + pre: 'Código', + h1: 'Título 1', + h2: 'Título 2', + h3: 'Título 3', + h4: 'Título 4', + h5: 'Título 5', + h6: 'Título 6' + }, + lists: { + unordered: 'Lista com marcadores', + ordered: 'Lista numerada' + }, + options: { + help: 'Ajuda', + fullscreen: 'Janela Completa', + codeview: 'Ver código-fonte' + }, + paragraph: { + paragraph: 'Parágrafo', + outdent: 'Menor tabulação', + indent: 'Maior tabulação', + left: 'Alinhar à esquerda', + center: 'Alinhar ao centro', + right: 'Alinha à direita', + justify: 'Justificado' + }, + color: { + recent: 'Cor recente', + more: 'Mais cores', + background: 'Fundo', + foreground: 'Fonte', + transparent: 'Transparente', + setTransparent: 'Fundo transparente', + reset: 'Restaurar', + resetToDefault: 'Restaurar padrão', + cpSelect: 'Selecionar' + }, + shortcut: { + shortcuts: 'Atalhos do teclado', + close: 'Fechar', + textFormatting: 'Formatação de texto', + action: 'Ação', + paragraphFormatting: 'Formatação de parágrafo', + documentStyle: 'Estilo de documento' + }, + help: { + 'insertParagraph': 'Inserir Parágrafo', + 'undo': 'Desfazer o último comando', + 'redo': 'Refazer o último comando', + 'tab': 'Maior tabulação', + 'untab': 'Menor tabulação', + 'bold': 'Colocar em negrito', + 'italic': 'Colocar em itálico', + 'underline': 'Colocar em sublinhado', + 'strikethrough': 'Colocar em riscado', + 'removeFormat': 'Limpar o estilo', + 'justifyLeft': 'Definir alinhado à esquerda', + 'justifyCenter': 'Definir alinhado ao centro', + 'justifyRight': 'Definir alinhado à direita', + 'justifyFull': 'Definir justificado', + 'insertUnorderedList': 'Alternar lista não ordenada', + 'insertOrderedList': 'Alternar lista ordenada', + 'outdent': 'Recuar parágrafo atual', + 'indent': 'Avançar parágrafo atual', + 'formatPara': 'Alterar formato do bloco para parágrafo', + 'formatH1': 'Alterar formato do bloco para Título 1', + 'formatH2': 'Alterar formato do bloco para Título 2', + 'formatH3': 'Alterar formato do bloco para Título 3', + 'formatH4': 'Alterar formato do bloco para Título 4', + 'formatH5': 'Alterar formato do bloco para Título 5', + 'formatH6': 'Alterar formato do bloco para Título 6', + 'insertHorizontalRule': 'Inserir linha horizontal', + 'linkDialog.show': 'Inserir uma ligração' + }, + history: { + undo: 'Desfazer', + redo: 'Refazer' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-pt-PT.min.js b/admin/vendors/summernote/dist/lang/summernote-pt-PT.min.js new file mode 100644 index 0000000000000000000000000000000000000000..205b6b148a308cf5ef6a932ca4c9324b26298fa2 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-pt-PT.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-pt-PT.min.js.LICENSE.txt */ +!function(e,o){if("object"==typeof exports&&"object"==typeof module)module.exports=o();else if("function"==typeof define&&define.amd)define([],o);else{var r=o();for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(window,(function(){return function(e){var o={};function r(a){if(o[a])return o[a].exports;var t=o[a]={i:a,l:!1,exports:{}};return e[a].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=e,r.c=o,r.d=function(e,o,a){r.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:a})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,o){if(1&o&&(e=r(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var t in e)r.d(a,t,function(o){return e[o]}.bind(null,t));return a},r.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(o,"a",o),o},r.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},r.p="",r(r.s=35)}({35:function(e,o){var r;(r=jQuery).extend(r.summernote.lang,{"pt-PT":{font:{bold:"Negrito",italic:"Itálico",underline:"Sublinhado",clear:"Remover estilo da fonte",height:"Altura da linha",name:"Fonte",strikethrough:"Riscado",subscript:"Subscript",superscript:"Superscript",size:"Tamanho da fonte"},image:{image:"Imagem",insert:"Inserir imagem",resizeFull:"Redimensionar Completo",resizeHalf:"Redimensionar Metade",resizeQuarter:"Redimensionar Um Quarto",floatLeft:"Float Esquerda",floatRight:"Float Direita",floatNone:"Sem Float",shapeRounded:"Forma: Arredondado",shapeCircle:"Forma: Círculo",shapeThumbnail:"Forma: Minhatura",shapeNone:"Forma: Nenhum",dragImageHere:"Arraste uma imagem para aqui",dropImage:"Arraste uma imagem ou texto",selectFromFiles:"Selecione a partir dos arquivos",maximumFileSize:"Tamanho máximo do fixeiro",maximumFileSizeError:"Tamanho máximo do fixeiro é maior que o permitido.",url:"Endereço da imagem",remove:"Remover Imagem",original:"Original"},video:{video:"Vídeo",videoLink:"Link para vídeo",insert:"Inserir vídeo",url:"URL do vídeo?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ou Youku)"},link:{link:"Link",insert:"Inserir ligação",unlink:"Remover ligação",edit:"Editar",textToDisplay:"Texto para exibir",url:"Que endereço esta licação leva?",openInNewWindow:"Abrir numa nova janela"},table:{table:"Tabela",addRowAbove:"Adicionar linha acima",addRowBelow:"Adicionar linha abaixo",addColLeft:"Adicionar coluna à Esquerda",addColRight:"Adicionar coluna à Esquerda",delRow:"Excluir linha",delCol:"Excluir coluna",delTable:"Excluir tabela"},hr:{insert:"Inserir linha horizontal"},style:{style:"Estilo",p:"Parágrafo",blockquote:"Citação",pre:"Código",h1:"Título 1",h2:"Título 2",h3:"Título 3",h4:"Título 4",h5:"Título 5",h6:"Título 6"},lists:{unordered:"Lista com marcadores",ordered:"Lista numerada"},options:{help:"Ajuda",fullscreen:"Janela Completa",codeview:"Ver código-fonte"},paragraph:{paragraph:"Parágrafo",outdent:"Menor tabulação",indent:"Maior tabulação",left:"Alinhar à esquerda",center:"Alinhar ao centro",right:"Alinha à direita",justify:"Justificado"},color:{recent:"Cor recente",more:"Mais cores",background:"Fundo",foreground:"Fonte",transparent:"Transparente",setTransparent:"Fundo transparente",reset:"Restaurar",resetToDefault:"Restaurar padrão",cpSelect:"Selecionar"},shortcut:{shortcuts:"Atalhos do teclado",close:"Fechar",textFormatting:"Formatação de texto",action:"Ação",paragraphFormatting:"Formatação de parágrafo",documentStyle:"Estilo de documento"},help:{insertParagraph:"Inserir Parágrafo",undo:"Desfazer o último comando",redo:"Refazer o último comando",tab:"Maior tabulação",untab:"Menor tabulação",bold:"Colocar em negrito",italic:"Colocar em itálico",underline:"Colocar em sublinhado",strikethrough:"Colocar em riscado",removeFormat:"Limpar o estilo",justifyLeft:"Definir alinhado à esquerda",justifyCenter:"Definir alinhado ao centro",justifyRight:"Definir alinhado à direita",justifyFull:"Definir justificado",insertUnorderedList:"Alternar lista não ordenada",insertOrderedList:"Alternar lista ordenada",outdent:"Recuar parágrafo atual",indent:"Avançar parágrafo atual",formatPara:"Alterar formato do bloco para parágrafo",formatH1:"Alterar formato do bloco para Título 1",formatH2:"Alterar formato do bloco para Título 2",formatH3:"Alterar formato do bloco para Título 3",formatH4:"Alterar formato do bloco para Título 4",formatH5:"Alterar formato do bloco para Título 5",formatH6:"Alterar formato do bloco para Título 6",insertHorizontalRule:"Inserir linha horizontal","linkDialog.show":"Inserir uma ligração"},history:{undo:"Desfazer",redo:"Refazer"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ro-RO.js b/admin/vendors/summernote/dist/lang/summernote-ro-RO.js new file mode 100644 index 0000000000000000000000000000000000000000..2fab1f2236c1c2e7acd9cb75381122797cf0cbde --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ro-RO.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 36); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 36: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ro-RO': { + font: { + bold: 'Îngroșat', + italic: 'Înclinat', + underline: 'Subliniat', + clear: 'Înlătură formatare font', + height: 'Înălțime rând', + name: 'Familie de fonturi', + strikethrough: 'Tăiat', + subscript: 'Indice', + superscript: 'Exponent', + size: 'Dimensiune font' + }, + image: { + image: 'Imagine', + insert: 'Inserează imagine', + resizeFull: 'Redimensionează complet', + resizeHalf: 'Redimensionează 1/2', + resizeQuarter: 'Redimensionează 1/4', + floatLeft: 'Aliniere la stânga', + floatRight: 'Aliniere la dreapta', + floatNone: 'Fară aliniere', + shapeRounded: 'Formă: Rotund', + shapeCircle: 'Formă: Cerc', + shapeThumbnail: 'Formă: Pictogramă', + shapeNone: 'Formă: Nici una', + dragImageHere: 'Trage o imagine sau un text aici', + dropImage: 'Eliberează imaginea sau textul', + selectFromFiles: 'Alege din fişiere', + maximumFileSize: 'Dimensiune maximă fișier', + maximumFileSizeError: 'Dimensiune maximă fișier depășită.', + url: 'URL imagine', + remove: 'Șterge imagine', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link video', + insert: 'Inserează video', + url: 'URL video?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)' + }, + link: { + link: 'Link', + insert: 'Inserează link', + unlink: 'Înlătură link', + edit: 'Editează', + textToDisplay: 'Text ce va fi afişat', + url: 'La ce adresă URL trebuie să conducă acest link?', + openInNewWindow: 'Deschidere în fereastră nouă' + }, + table: { + table: 'Tabel', + addRowAbove: 'Adaugă rând deasupra', + addRowBelow: 'Adaugă rând dedesubt', + addColLeft: 'Adaugă coloană stânga', + addColRight: 'Adaugă coloană dreapta', + delRow: 'Șterge rând', + delCol: 'Șterge coloană', + delTable: 'Șterge tabel' + }, + hr: { + insert: 'Inserează o linie orizontală' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Preformatat', + h1: 'Titlu 1', + h2: 'Titlu 2', + h3: 'Titlu 3', + h4: 'Titlu 4', + h5: 'Titlu 5', + h6: 'Titlu 6' + }, + lists: { + unordered: 'Listă neordonată', + ordered: 'Listă ordonată' + }, + options: { + help: 'Ajutor', + fullscreen: 'Măreşte', + codeview: 'Sursă' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Creşte identarea', + indent: 'Scade identarea', + left: 'Aliniere la stânga', + center: 'Aliniere centrală', + right: 'Aliniere la dreapta', + justify: 'Aliniere în bloc' + }, + color: { + recent: 'Culoare recentă', + more: 'Mai multe culori', + background: 'Culoarea fundalului', + foreground: 'Culoarea textului', + transparent: 'Transparent', + setTransparent: 'Setează transparent', + reset: 'Resetează', + resetToDefault: 'Revino la iniţial' + }, + shortcut: { + shortcuts: 'Scurtături tastatură', + close: 'Închide', + textFormatting: 'Formatare text', + action: 'Acţiuni', + paragraphFormatting: 'Formatare paragraf', + documentStyle: 'Stil paragraf', + extraKeys: 'Taste extra' + }, + help: { + 'insertParagraph': 'Inserează paragraf', + 'undo': 'Revine la starea anterioară', + 'redo': 'Revine la starea ulterioară', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Setează stil îngroșat', + 'italic': 'Setează stil înclinat', + 'underline': 'Setează stil subliniat', + 'strikethrough': 'Setează stil tăiat', + 'removeFormat': 'Înlătură formatare', + 'justifyLeft': 'Setează aliniere stânga', + 'justifyCenter': 'Setează aliniere centru', + 'justifyRight': 'Setează aliniere dreapta', + 'justifyFull': 'Setează aliniere bloc', + 'insertUnorderedList': 'Comutare listă neordinată', + 'insertOrderedList': 'Comutare listă ordonată', + 'outdent': 'Înlătură indentare paragraf curent', + 'indent': 'Adaugă indentare paragraf curent', + 'formatPara': 'Schimbă formatarea selecției în paragraf', + 'formatH1': 'Schimbă formatarea selecției în H1', + 'formatH2': 'Schimbă formatarea selecției în H2', + 'formatH3': 'Schimbă formatarea selecției în H3', + 'formatH4': 'Schimbă formatarea selecției în H4', + 'formatH5': 'Schimbă formatarea selecției în H5', + 'formatH6': 'Schimbă formatarea selecției în H6', + 'insertHorizontalRule': 'Adaugă linie orizontală', + 'linkDialog.show': 'Inserează link' + }, + history: { + undo: 'Starea anterioară', + redo: 'Starea ulterioară' + }, + specialChar: { + specialChar: 'CARACTERE SPECIALE', + select: 'Alege caractere speciale' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ro-RO.min.js b/admin/vendors/summernote/dist/lang/summernote-ro-RO.min.js new file mode 100644 index 0000000000000000000000000000000000000000..24653030efcf9ac78e77a17ce729a5d60ae1e8b9 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ro-RO.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ro-RO.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var a in t)("object"==typeof exports?exports:e)[a]=t[a]}}(window,(function(){return function(e){var r={};function t(a){if(r[a])return r[a].exports;var i=r[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,t),i.l=!0,i.exports}return t.m=e,t.c=r,t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:a})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(t.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var i in e)t.d(a,i,function(r){return e[r]}.bind(null,i));return a},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=36)}({36:function(e,r){var t;(t=jQuery).extend(t.summernote.lang,{"ro-RO":{font:{bold:"Îngroșat",italic:"Înclinat",underline:"Subliniat",clear:"Înlătură formatare font",height:"Înălțime rând",name:"Familie de fonturi",strikethrough:"Tăiat",subscript:"Indice",superscript:"Exponent",size:"Dimensiune font"},image:{image:"Imagine",insert:"Inserează imagine",resizeFull:"Redimensionează complet",resizeHalf:"Redimensionează 1/2",resizeQuarter:"Redimensionează 1/4",floatLeft:"Aliniere la stânga",floatRight:"Aliniere la dreapta",floatNone:"Fară aliniere",shapeRounded:"Formă: Rotund",shapeCircle:"Formă: Cerc",shapeThumbnail:"Formă: Pictogramă",shapeNone:"Formă: Nici una",dragImageHere:"Trage o imagine sau un text aici",dropImage:"Eliberează imaginea sau textul",selectFromFiles:"Alege din fişiere",maximumFileSize:"Dimensiune maximă fișier",maximumFileSizeError:"Dimensiune maximă fișier depășită.",url:"URL imagine",remove:"Șterge imagine",original:"Original"},video:{video:"Video",videoLink:"Link video",insert:"Inserează video",url:"URL video?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion sau Youku)"},link:{link:"Link",insert:"Inserează link",unlink:"Înlătură link",edit:"Editează",textToDisplay:"Text ce va fi afişat",url:"La ce adresă URL trebuie să conducă acest link?",openInNewWindow:"Deschidere în fereastră nouă"},table:{table:"Tabel",addRowAbove:"Adaugă rând deasupra",addRowBelow:"Adaugă rând dedesubt",addColLeft:"Adaugă coloană stânga",addColRight:"Adaugă coloană dreapta",delRow:"Șterge rând",delCol:"Șterge coloană",delTable:"Șterge tabel"},hr:{insert:"Inserează o linie orizontală"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Preformatat",h1:"Titlu 1",h2:"Titlu 2",h3:"Titlu 3",h4:"Titlu 4",h5:"Titlu 5",h6:"Titlu 6"},lists:{unordered:"Listă neordonată",ordered:"Listă ordonată"},options:{help:"Ajutor",fullscreen:"Măreşte",codeview:"Sursă"},paragraph:{paragraph:"Paragraf",outdent:"Creşte identarea",indent:"Scade identarea",left:"Aliniere la stânga",center:"Aliniere centrală",right:"Aliniere la dreapta",justify:"Aliniere în bloc"},color:{recent:"Culoare recentă",more:"Mai multe culori",background:"Culoarea fundalului",foreground:"Culoarea textului",transparent:"Transparent",setTransparent:"Setează transparent",reset:"Resetează",resetToDefault:"Revino la iniţial"},shortcut:{shortcuts:"Scurtături tastatură",close:"Închide",textFormatting:"Formatare text",action:"Acţiuni",paragraphFormatting:"Formatare paragraf",documentStyle:"Stil paragraf",extraKeys:"Taste extra"},help:{insertParagraph:"Inserează paragraf",undo:"Revine la starea anterioară",redo:"Revine la starea ulterioară",tab:"Tab",untab:"Untab",bold:"Setează stil îngroșat",italic:"Setează stil înclinat",underline:"Setează stil subliniat",strikethrough:"Setează stil tăiat",removeFormat:"Înlătură formatare",justifyLeft:"Setează aliniere stânga",justifyCenter:"Setează aliniere centru",justifyRight:"Setează aliniere dreapta",justifyFull:"Setează aliniere bloc",insertUnorderedList:"Comutare listă neordinată",insertOrderedList:"Comutare listă ordonată",outdent:"Înlătură indentare paragraf curent",indent:"Adaugă indentare paragraf curent",formatPara:"Schimbă formatarea selecției în paragraf",formatH1:"Schimbă formatarea selecției în H1",formatH2:"Schimbă formatarea selecției în H2",formatH3:"Schimbă formatarea selecției în H3",formatH4:"Schimbă formatarea selecției în H4",formatH5:"Schimbă formatarea selecției în H5",formatH6:"Schimbă formatarea selecției în H6",insertHorizontalRule:"Adaugă linie orizontală","linkDialog.show":"Inserează link"},history:{undo:"Starea anterioară",redo:"Starea ulterioară"},specialChar:{specialChar:"CARACTERE SPECIALE",select:"Alege caractere speciale"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ru-RU.js b/admin/vendors/summernote/dist/lang/summernote-ru-RU.js new file mode 100644 index 0000000000000000000000000000000000000000..3dad9afa64dcb67c7c7fe82fe30414d9bcdd3639 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ru-RU.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 37); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 37: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ru-RU': { + font: { + bold: 'Полужирный', + italic: 'Курсив', + underline: 'Подчёркнутый', + clear: 'Убрать стили шрифта', + height: 'Высота линии', + name: 'Шрифт', + strikethrough: 'Зачёркнутый', + subscript: 'Нижний индекс', + superscript: 'Верхний индекс', + size: 'Размер шрифта' + }, + image: { + image: 'Картинка', + insert: 'Вставить картинку', + resizeFull: 'Восстановить размер', + resizeHalf: 'Уменьшить до 50%', + resizeQuarter: 'Уменьшить до 25%', + floatLeft: 'Расположить слева', + floatRight: 'Расположить справа', + floatNone: 'Расположение по-умолчанию', + shapeRounded: 'Форма: Закругленная', + shapeCircle: 'Форма: Круг', + shapeThumbnail: 'Форма: Миниатюра', + shapeNone: 'Форма: Нет', + dragImageHere: 'Перетащите сюда картинку', + dropImage: 'Перетащите картинку', + selectFromFiles: 'Выбрать из файлов', + maximumFileSize: 'Максимальный размер файла', + maximumFileSizeError: 'Превышен максимальный размер файла', + url: 'URL картинки', + remove: 'Удалить картинку', + original: 'Оригинал' + }, + video: { + video: 'Видео', + videoLink: 'Ссылка на видео', + insert: 'Вставить видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Ссылка', + insert: 'Вставить ссылку', + unlink: 'Убрать ссылку', + edit: 'Редактировать', + textToDisplay: 'Отображаемый текст', + url: 'URL для перехода', + openInNewWindow: 'Открывать в новом окне' + }, + table: { + table: 'Таблица', + addRowAbove: 'Добавить строку выше', + addRowBelow: 'Добавить строку ниже', + addColLeft: 'Добавить столбец слева', + addColRight: 'Добавить столбец справа', + delRow: 'Удалить строку', + delCol: 'Удалить столбец', + delTable: 'Удалить таблицу' + }, + hr: { + insert: 'Вставить горизонтальную линию' + }, + style: { + style: 'Стиль', + p: 'Нормальный', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркированный список', + ordered: 'Нумерованный список' + }, + options: { + help: 'Помощь', + fullscreen: 'На весь экран', + codeview: 'Исходный код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Уменьшить отступ', + indent: 'Увеличить отступ', + left: 'Выровнять по левому краю', + center: 'Выровнять по центру', + right: 'Выровнять по правому краю', + justify: 'Растянуть по ширине' + }, + color: { + recent: 'Последний цвет', + more: 'Еще цвета', + background: 'Цвет фона', + foreground: 'Цвет шрифта', + transparent: 'Прозрачный', + setTransparent: 'Сделать прозрачным', + reset: 'Сброс', + resetToDefault: 'Восстановить умолчания' + }, + shortcut: { + shortcuts: 'Сочетания клавиш', + close: 'Закрыть', + textFormatting: 'Форматирование текста', + action: 'Действие', + paragraphFormatting: 'Форматирование параграфа', + documentStyle: 'Стиль документа', + extraKeys: 'Дополнительные комбинации' + }, + help: { + 'insertParagraph': 'Новый параграф', + 'undo': 'Отменить последнюю команду', + 'redo': 'Повторить последнюю команду', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Установить стиль "Жирный"', + 'italic': 'Установить стиль "Наклонный"', + 'underline': 'Установить стиль "Подчеркнутый"', + 'strikethrough': 'Установить стиль "Зачеркнутый"', + 'removeFormat': 'Сборсить стили', + 'justifyLeft': 'Выровнять по левому краю', + 'justifyCenter': 'Выровнять по центру', + 'justifyRight': 'Выровнять по правому краю', + 'justifyFull': 'Растянуть на всю ширину', + 'insertUnorderedList': 'Включить/отключить маркированный список', + 'insertOrderedList': 'Включить/отключить нумерованный список', + 'outdent': 'Убрать отступ в текущем параграфе', + 'indent': 'Вставить отступ в текущем параграфе', + 'formatPara': 'Форматировать текущий блок как параграф (тег P)', + 'formatH1': 'Форматировать текущий блок как H1', + 'formatH2': 'Форматировать текущий блок как H2', + 'formatH3': 'Форматировать текущий блок как H3', + 'formatH4': 'Форматировать текущий блок как H4', + 'formatH5': 'Форматировать текущий блок как H5', + 'formatH6': 'Форматировать текущий блок как H6', + 'insertHorizontalRule': 'Вставить горизонтальную черту', + 'linkDialog.show': 'Показать диалог "Ссылка"' + }, + history: { + undo: 'Отменить', + redo: 'Повтор' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ru-RU.min.js b/admin/vendors/summernote/dist/lang/summernote-ru-RU.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a9dfa8fe2555b3ae2cb7e5e1ea9615f222d3f8fe --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ru-RU.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ru-RU.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=37)}({37:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"ru-RU":{font:{bold:"Полужирный",italic:"Курсив",underline:"Подчёркнутый",clear:"Убрать стили шрифта",height:"Высота линии",name:"Шрифт",strikethrough:"Зачёркнутый",subscript:"Нижний индекс",superscript:"Верхний индекс",size:"Размер шрифта"},image:{image:"Картинка",insert:"Вставить картинку",resizeFull:"Восстановить размер",resizeHalf:"Уменьшить до 50%",resizeQuarter:"Уменьшить до 25%",floatLeft:"Расположить слева",floatRight:"Расположить справа",floatNone:"Расположение по-умолчанию",shapeRounded:"Форма: Закругленная",shapeCircle:"Форма: Круг",shapeThumbnail:"Форма: Миниатюра",shapeNone:"Форма: Нет",dragImageHere:"Перетащите сюда картинку",dropImage:"Перетащите картинку",selectFromFiles:"Выбрать из файлов",maximumFileSize:"Максимальный размер файла",maximumFileSizeError:"Превышен максимальный размер файла",url:"URL картинки",remove:"Удалить картинку",original:"Оригинал"},video:{video:"Видео",videoLink:"Ссылка на видео",insert:"Вставить видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Ссылка",insert:"Вставить ссылку",unlink:"Убрать ссылку",edit:"Редактировать",textToDisplay:"Отображаемый текст",url:"URL для перехода",openInNewWindow:"Открывать в новом окне"},table:{table:"Таблица",addRowAbove:"Добавить строку выше",addRowBelow:"Добавить строку ниже",addColLeft:"Добавить столбец слева",addColRight:"Добавить столбец справа",delRow:"Удалить строку",delCol:"Удалить столбец",delTable:"Удалить таблицу"},hr:{insert:"Вставить горизонтальную линию"},style:{style:"Стиль",p:"Нормальный",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркированный список",ordered:"Нумерованный список"},options:{help:"Помощь",fullscreen:"На весь экран",codeview:"Исходный код"},paragraph:{paragraph:"Параграф",outdent:"Уменьшить отступ",indent:"Увеличить отступ",left:"Выровнять по левому краю",center:"Выровнять по центру",right:"Выровнять по правому краю",justify:"Растянуть по ширине"},color:{recent:"Последний цвет",more:"Еще цвета",background:"Цвет фона",foreground:"Цвет шрифта",transparent:"Прозрачный",setTransparent:"Сделать прозрачным",reset:"Сброс",resetToDefault:"Восстановить умолчания"},shortcut:{shortcuts:"Сочетания клавиш",close:"Закрыть",textFormatting:"Форматирование текста",action:"Действие",paragraphFormatting:"Форматирование параграфа",documentStyle:"Стиль документа",extraKeys:"Дополнительные комбинации"},help:{insertParagraph:"Новый параграф",undo:"Отменить последнюю команду",redo:"Повторить последнюю команду",tab:"Tab",untab:"Untab",bold:'Установить стиль "Жирный"',italic:'Установить стиль "Наклонный"',underline:'Установить стиль "Подчеркнутый"',strikethrough:'Установить стиль "Зачеркнутый"',removeFormat:"Сборсить стили",justifyLeft:"Выровнять по левому краю",justifyCenter:"Выровнять по центру",justifyRight:"Выровнять по правому краю",justifyFull:"Растянуть на всю ширину",insertUnorderedList:"Включить/отключить маркированный список",insertOrderedList:"Включить/отключить нумерованный список",outdent:"Убрать отступ в текущем параграфе",indent:"Вставить отступ в текущем параграфе",formatPara:"Форматировать текущий блок как параграф (тег P)",formatH1:"Форматировать текущий блок как H1",formatH2:"Форматировать текущий блок как H2",formatH3:"Форматировать текущий блок как H3",formatH4:"Форматировать текущий блок как H4",formatH5:"Форматировать текущий блок как H5",formatH6:"Форматировать текущий блок как H6",insertHorizontalRule:"Вставить горизонтальную черту","linkDialog.show":'Показать диалог "Ссылка"'},history:{undo:"Отменить",redo:"Повтор"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sk-SK.js b/admin/vendors/summernote/dist/lang/summernote-sk-SK.js new file mode 100644 index 0000000000000000000000000000000000000000..d8444e7273ee46080eba9b9109ccbcffb39c57e9 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sk-SK.js @@ -0,0 +1,271 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 38); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 38: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'sk-SK': { + font: { + bold: 'Tučné', + italic: 'Kurzíva', + underline: 'Podčiarknutie', + clear: 'Odstrániť štýl písma', + height: 'Výška riadku', + strikethrough: 'Prečiarknuté', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veľkosť písma' + }, + image: { + image: 'Obrázok', + insert: 'Vložiť obrázok', + resizeFull: 'Pôvodná veľkosť', + resizeHalf: 'Polovičná veľkosť', + resizeQuarter: 'Štvrtinová veľkosť', + floatLeft: 'Umiestniť doľava', + floatRight: 'Umiestniť doprava', + floatNone: 'Bez zarovnania', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Pretiahnuť sem obrázok', + dropImage: 'Drop image or Text', + selectFromFiles: 'Vybrať súbor', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL obrázku', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Odkaz videa', + insert: 'Vložiť video', + url: 'URL videa?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)' + }, + link: { + link: 'Odkaz', + insert: 'Vytvoriť odkaz', + unlink: 'Zrušiť odkaz', + edit: 'Upraviť', + textToDisplay: 'Zobrazovaný text', + url: 'Na akú URL adresu má tento odkaz viesť?', + openInNewWindow: 'Otvoriť v novom okne' + }, + table: { + table: 'Tabuľka', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Vložit vodorovnú čiaru' + }, + style: { + style: 'Štýl', + p: 'Normálny', + blockquote: 'Citácia', + pre: 'Kód', + h1: 'Nadpis 1', + h2: 'Nadpis 2', + h3: 'Nadpis 3', + h4: 'Nadpis 4', + h5: 'Nadpis 5', + h6: 'Nadpis 6' + }, + lists: { + unordered: 'Odrážkový zoznam', + ordered: 'Číselný zoznam' + }, + options: { + help: 'Pomoc', + fullscreen: 'Celá obrazovka', + codeview: 'HTML kód' + }, + paragraph: { + paragraph: 'Odsek', + outdent: 'Zväčšiť odsadenie', + indent: 'Zmenšiť odsadenie', + left: 'Zarovnať doľava', + center: 'Zarovnať na stred', + right: 'Zarovnať doprava', + justify: 'Zarovnať obojstranne' + }, + color: { + recent: 'Aktuálna farba', + more: 'Dalšie farby', + background: 'Farba pozadia', + foreground: 'Farba písma', + transparent: 'Priehľadnosť', + setTransparent: 'Nastaviť priehľadnosť', + reset: 'Obnoviť', + resetToDefault: 'Obnoviť prednastavené' + }, + shortcut: { + shortcuts: 'Klávesové skratky', + close: 'Zavrieť', + textFormatting: 'Formátovanie textu', + action: 'Akcia', + paragraphFormatting: 'Formátovanie odseku', + documentStyle: 'Štýl dokumentu' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Krok vzad', + redo: 'Krok dopredu' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sk-SK.min.js b/admin/vendors/summernote/dist/lang/summernote-sk-SK.min.js new file mode 100644 index 0000000000000000000000000000000000000000..cb2bf2fd3b71bd50949071ce9722ca9b232d05d9 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sk-SK.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-sk-SK.min.js.LICENSE.txt */ +!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var t=r();for(var o in t)("object"==typeof exports?exports:e)[o]=t[o]}}(window,(function(){return function(e){var r={};function t(o){if(r[o])return r[o].exports;var a=r[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=r,t.d=function(e,r,o){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:o})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(t.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var a in e)t.d(o,a,function(r){return e[r]}.bind(null,a));return o},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=38)}({38:function(e,r){var t;(t=jQuery).extend(t.summernote.lang,{"sk-SK":{font:{bold:"Tučné",italic:"Kurzíva",underline:"Podčiarknutie",clear:"Odstrániť štýl písma",height:"Výška riadku",strikethrough:"Prečiarknuté",subscript:"Subscript",superscript:"Superscript",size:"Veľkosť písma"},image:{image:"Obrázok",insert:"Vložiť obrázok",resizeFull:"Pôvodná veľkosť",resizeHalf:"Polovičná veľkosť",resizeQuarter:"Štvrtinová veľkosť",floatLeft:"Umiestniť doľava",floatRight:"Umiestniť doprava",floatNone:"Bez zarovnania",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Pretiahnuť sem obrázok",dropImage:"Drop image or Text",selectFromFiles:"Vybrať súbor",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL obrázku",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Odkaz videa",insert:"Vložiť video",url:"URL videa?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion alebo Youku)"},link:{link:"Odkaz",insert:"Vytvoriť odkaz",unlink:"Zrušiť odkaz",edit:"Upraviť",textToDisplay:"Zobrazovaný text",url:"Na akú URL adresu má tento odkaz viesť?",openInNewWindow:"Otvoriť v novom okne"},table:{table:"Tabuľka",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Vložit vodorovnú čiaru"},style:{style:"Štýl",p:"Normálny",blockquote:"Citácia",pre:"Kód",h1:"Nadpis 1",h2:"Nadpis 2",h3:"Nadpis 3",h4:"Nadpis 4",h5:"Nadpis 5",h6:"Nadpis 6"},lists:{unordered:"Odrážkový zoznam",ordered:"Číselný zoznam"},options:{help:"Pomoc",fullscreen:"Celá obrazovka",codeview:"HTML kód"},paragraph:{paragraph:"Odsek",outdent:"Zväčšiť odsadenie",indent:"Zmenšiť odsadenie",left:"Zarovnať doľava",center:"Zarovnať na stred",right:"Zarovnať doprava",justify:"Zarovnať obojstranne"},color:{recent:"Aktuálna farba",more:"Dalšie farby",background:"Farba pozadia",foreground:"Farba písma",transparent:"Priehľadnosť",setTransparent:"Nastaviť priehľadnosť",reset:"Obnoviť",resetToDefault:"Obnoviť prednastavené"},shortcut:{shortcuts:"Klávesové skratky",close:"Zavrieť",textFormatting:"Formátovanie textu",action:"Akcia",paragraphFormatting:"Formátovanie odseku",documentStyle:"Štýl dokumentu"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Krok vzad",redo:"Krok dopredu"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sl-SI.js b/admin/vendors/summernote/dist/lang/summernote-sl-SI.js new file mode 100644 index 0000000000000000000000000000000000000000..806e27fe02eb38c54af5640d678b56eb9704c215 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sl-SI.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 39); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 39: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'sl-SI': { + font: { + bold: 'Krepko', + italic: 'Ležeče', + underline: 'Podčrtano', + clear: 'Počisti oblikovanje izbire', + height: 'Razmik med vrsticami', + name: 'Pisava', + strikethrough: 'Prečrtano', + subscript: 'Podpisano', + superscript: 'Nadpisano', + size: 'Velikost pisave' + }, + image: { + image: 'Slika', + insert: 'Vstavi sliko', + resizeFull: 'Razširi na polno velikost', + resizeHalf: 'Razširi na polovico velikosti', + resizeQuarter: 'Razširi na četrtino velikosti', + floatLeft: 'Leva poravnava', + floatRight: 'Desna poravnava', + floatNone: 'Brez poravnave', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Sem povlecite sliko', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izberi sliko za nalaganje', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL naslov slike', + remove: 'Odstrani sliko', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video povezava', + insert: 'Vstavi video', + url: 'Povezava do videa', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)' + }, + link: { + link: 'Povezava', + insert: 'Vstavi povezavo', + unlink: 'Odstrani povezavo', + edit: 'Uredi', + textToDisplay: 'Prikazano besedilo', + url: 'Povezava', + openInNewWindow: 'Odpri v novem oknu' + }, + table: { + table: 'Tabela', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Vstavi horizontalno črto' + }, + style: { + style: 'Slogi', + p: 'Navadno besedilo', + blockquote: 'Citat', + pre: 'Koda', + h1: 'Naslov 1', + h2: 'Naslov 2', + h3: 'Naslov 3', + h4: 'Naslov 4', + h5: 'Naslov 5', + h6: 'Naslov 6' + }, + lists: { + unordered: 'Označen seznam', + ordered: 'Oštevilčen seznam' + }, + options: { + help: 'Pomoč', + fullscreen: 'Celozaslonski način', + codeview: 'Pregled HTML kode' + }, + paragraph: { + paragraph: 'Slogi odstavka', + outdent: 'Zmanjšaj odmik', + indent: 'Povečaj odmik', + left: 'Leva poravnava', + center: 'Desna poravnava', + right: 'Sredinska poravnava', + justify: 'Obojestranska poravnava' + }, + color: { + recent: 'Uporabi zadnjo barvo', + more: 'Več barv', + background: 'Barva ozadja', + foreground: 'Barva besedila', + transparent: 'Brez barve', + setTransparent: 'Brez barve', + reset: 'Ponastavi', + resetToDefault: 'Ponastavi na privzeto' + }, + shortcut: { + shortcuts: 'Bljižnice', + close: 'Zapri', + textFormatting: 'Oblikovanje besedila', + action: 'Dejanja', + paragraphFormatting: 'Oblikovanje odstavka', + documentStyle: 'Oblikovanje naslova', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Razveljavi', + redo: 'Uveljavi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sl-SI.min.js b/admin/vendors/summernote/dist/lang/summernote-sl-SI.min.js new file mode 100644 index 0000000000000000000000000000000000000000..63488aae0280e3b754bfc5a5702b1eec752790a0 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sl-SI.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-sl-SI.min.js.LICENSE.txt */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var o=a();for(var r in o)("object"==typeof exports?exports:e)[r]=o[r]}}(window,(function(){return function(e){var a={};function o(r){if(a[r])return a[r].exports;var t=a[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=e,o.c=a,o.d=function(e,a,r){o.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,a){if(1&a&&(e=o(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var t in e)o.d(r,t,function(a){return e[a]}.bind(null,t));return r},o.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(a,"a",a),a},o.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},o.p="",o(o.s=39)}({39:function(e,a){var o;(o=jQuery).extend(o.summernote.lang,{"sl-SI":{font:{bold:"Krepko",italic:"Ležeče",underline:"Podčrtano",clear:"Počisti oblikovanje izbire",height:"Razmik med vrsticami",name:"Pisava",strikethrough:"Prečrtano",subscript:"Podpisano",superscript:"Nadpisano",size:"Velikost pisave"},image:{image:"Slika",insert:"Vstavi sliko",resizeFull:"Razširi na polno velikost",resizeHalf:"Razširi na polovico velikosti",resizeQuarter:"Razširi na četrtino velikosti",floatLeft:"Leva poravnava",floatRight:"Desna poravnava",floatNone:"Brez poravnave",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Sem povlecite sliko",dropImage:"Drop image or Text",selectFromFiles:"Izberi sliko za nalaganje",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL naslov slike",remove:"Odstrani sliko",original:"Original"},video:{video:"Video",videoLink:"Video povezava",insert:"Vstavi video",url:"Povezava do videa",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ali Youku)"},link:{link:"Povezava",insert:"Vstavi povezavo",unlink:"Odstrani povezavo",edit:"Uredi",textToDisplay:"Prikazano besedilo",url:"Povezava",openInNewWindow:"Odpri v novem oknu"},table:{table:"Tabela",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Vstavi horizontalno črto"},style:{style:"Slogi",p:"Navadno besedilo",blockquote:"Citat",pre:"Koda",h1:"Naslov 1",h2:"Naslov 2",h3:"Naslov 3",h4:"Naslov 4",h5:"Naslov 5",h6:"Naslov 6"},lists:{unordered:"Označen seznam",ordered:"Oštevilčen seznam"},options:{help:"Pomoč",fullscreen:"Celozaslonski način",codeview:"Pregled HTML kode"},paragraph:{paragraph:"Slogi odstavka",outdent:"Zmanjšaj odmik",indent:"Povečaj odmik",left:"Leva poravnava",center:"Desna poravnava",right:"Sredinska poravnava",justify:"Obojestranska poravnava"},color:{recent:"Uporabi zadnjo barvo",more:"Več barv",background:"Barva ozadja",foreground:"Barva besedila",transparent:"Brez barve",setTransparent:"Brez barve",reset:"Ponastavi",resetToDefault:"Ponastavi na privzeto"},shortcut:{shortcuts:"Bljižnice",close:"Zapri",textFormatting:"Oblikovanje besedila",action:"Dejanja",paragraphFormatting:"Oblikovanje odstavka",documentStyle:"Oblikovanje naslova",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Razveljavi",redo:"Uveljavi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.js b/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.js new file mode 100644 index 0000000000000000000000000000000000000000..9f887d2bdc4996b9dbfd91546b418cfffaf08aad --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 40); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 40: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Podebljano', + italic: 'Kurziv', + underline: 'Podvučeno', + clear: 'Ukloni stilove fonta', + height: 'Visina linije', + name: 'Font Family', + strikethrough: 'Precrtano', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Veličina fonta' + }, + image: { + image: 'Slika', + insert: 'Umetni sliku', + resizeFull: 'Puna veličina', + resizeHalf: 'Umanji na 50%', + resizeQuarter: 'Umanji na 25%', + floatLeft: 'Uz levu ivicu', + floatRight: 'Uz desnu ivicu', + floatNone: 'Bez ravnanja', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Prevuci sliku ovde', + dropImage: 'Drop image or Text', + selectFromFiles: 'Izaberi iz datoteke', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Adresa slike', + remove: 'Ukloni sliku', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Veza ka videu', + insert: 'Umetni video', + url: 'URL video', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)' + }, + link: { + link: 'Veza', + insert: 'Umetni vezu', + unlink: 'Ukloni vezu', + edit: 'Uredi', + textToDisplay: 'Tekst za prikaz', + url: 'Internet adresa', + openInNewWindow: 'Otvori u novom prozoru' + }, + table: { + table: 'Tabela', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Umetni horizontalnu liniju' + }, + style: { + style: 'Stil', + p: 'pni', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Zaglavlje 1', + h2: 'Zaglavlje 2', + h3: 'Zaglavlje 3', + h4: 'Zaglavlje 4', + h5: 'Zaglavlje 5', + h6: 'Zaglavlje 6' + }, + lists: { + unordered: 'Obična lista', + ordered: 'Numerisana lista' + }, + options: { + help: 'Pomoć', + fullscreen: 'Preko celog ekrana', + codeview: 'Izvorni kod' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Smanji uvlačenje', + indent: 'Povečaj uvlačenje', + left: 'Poravnaj u levo', + center: 'Centrirano', + right: 'Poravnaj u desno', + justify: 'Poravnaj obostrano' + }, + color: { + recent: 'Poslednja boja', + more: 'Više boja', + background: 'Boja pozadine', + foreground: 'Boja teksta', + transparent: 'Providna', + setTransparent: 'Providna', + reset: 'Opoziv', + resetToDefault: 'Podrazumevana' + }, + shortcut: { + shortcuts: 'Prečice sa tastature', + close: 'Zatvori', + textFormatting: 'Formatiranje teksta', + action: 'Akcija', + paragraphFormatting: 'Formatiranje paragrafa', + documentStyle: 'Stil dokumenta', + extraKeys: 'Dodatne kombinacije' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Poništi', + redo: 'Ponovi' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.min.js b/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5ae0a7cdc5a042920472e136fb9c6d7e97fb96e5 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sr-RS-Latin.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-sr-RS-Latin.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var a=t();for(var r in a)("object"==typeof exports?exports:e)[r]=a[r]}}(window,(function(){return function(e){var t={};function a(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,a),o.l=!0,o.exports}return a.m=e,a.c=t,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)a.d(r,o,function(t){return e[t]}.bind(null,o));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=40)}({40:function(e,t){var a;(a=jQuery).extend(a.summernote.lang,{"sr-RS":{font:{bold:"Podebljano",italic:"Kurziv",underline:"Podvučeno",clear:"Ukloni stilove fonta",height:"Visina linije",name:"Font Family",strikethrough:"Precrtano",subscript:"Subscript",superscript:"Superscript",size:"Veličina fonta"},image:{image:"Slika",insert:"Umetni sliku",resizeFull:"Puna veličina",resizeHalf:"Umanji na 50%",resizeQuarter:"Umanji na 25%",floatLeft:"Uz levu ivicu",floatRight:"Uz desnu ivicu",floatNone:"Bez ravnanja",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Prevuci sliku ovde",dropImage:"Drop image or Text",selectFromFiles:"Izaberi iz datoteke",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Adresa slike",remove:"Ukloni sliku",original:"Original"},video:{video:"Video",videoLink:"Veza ka videu",insert:"Umetni video",url:"URL video",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion ili Youku)"},link:{link:"Veza",insert:"Umetni vezu",unlink:"Ukloni vezu",edit:"Uredi",textToDisplay:"Tekst za prikaz",url:"Internet adresa",openInNewWindow:"Otvori u novom prozoru"},table:{table:"Tabela",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Umetni horizontalnu liniju"},style:{style:"Stil",p:"pni",blockquote:"Citat",pre:"Kod",h1:"Zaglavlje 1",h2:"Zaglavlje 2",h3:"Zaglavlje 3",h4:"Zaglavlje 4",h5:"Zaglavlje 5",h6:"Zaglavlje 6"},lists:{unordered:"Obična lista",ordered:"Numerisana lista"},options:{help:"Pomoć",fullscreen:"Preko celog ekrana",codeview:"Izvorni kod"},paragraph:{paragraph:"Paragraf",outdent:"Smanji uvlačenje",indent:"Povečaj uvlačenje",left:"Poravnaj u levo",center:"Centrirano",right:"Poravnaj u desno",justify:"Poravnaj obostrano"},color:{recent:"Poslednja boja",more:"Više boja",background:"Boja pozadine",foreground:"Boja teksta",transparent:"Providna",setTransparent:"Providna",reset:"Opoziv",resetToDefault:"Podrazumevana"},shortcut:{shortcuts:"Prečice sa tastature",close:"Zatvori",textFormatting:"Formatiranje teksta",action:"Akcija",paragraphFormatting:"Formatiranje paragrafa",documentStyle:"Stil dokumenta",extraKeys:"Dodatne kombinacije"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Poništi",redo:"Ponovi"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sr-RS.js b/admin/vendors/summernote/dist/lang/summernote-sr-RS.js new file mode 100644 index 0000000000000000000000000000000000000000..f77ee786b6c89051b58c597449cc79b53d1dcd0d --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sr-RS.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 41); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 41: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'sr-RS': { + font: { + bold: 'Подебљано', + italic: 'Курзив', + underline: 'Подвучено', + clear: 'Уклони стилове фонта', + height: 'Висина линије', + name: 'Font Family', + strikethrough: 'Прецртано', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Величина фонта' + }, + image: { + image: 'Слика', + insert: 'Уметни слику', + resizeFull: 'Пуна величина', + resizeHalf: 'Умањи на 50%', + resizeQuarter: 'Умањи на 25%', + floatLeft: 'Уз леву ивицу', + floatRight: 'Уз десну ивицу', + floatNone: 'Без равнања', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Превуци слику овде', + dropImage: 'Drop image or Text', + selectFromFiles: 'Изабери из датотеке', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Адреса слике', + remove: 'Уклони слику', + original: 'Original' + }, + video: { + video: 'Видео', + videoLink: 'Веза ка видеу', + insert: 'Уметни видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Веза', + insert: 'Уметни везу', + unlink: 'Уклони везу', + edit: 'Уреди', + textToDisplay: 'Текст за приказ', + url: 'Интернет адреса', + openInNewWindow: 'Отвори у новом прозору' + }, + table: { + table: 'Табела', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Уметни хоризонталну линију' + }, + style: { + style: 'Стил', + p: 'Нормални', + blockquote: 'Цитат', + pre: 'Код', + h1: 'Заглавље 1', + h2: 'Заглавље 2', + h3: 'Заглавље 3', + h4: 'Заглавље 4', + h5: 'Заглавље 5', + h6: 'Заглавље 6' + }, + lists: { + unordered: 'Обична листа', + ordered: 'Нумерисана листа' + }, + options: { + help: 'Помоћ', + fullscreen: 'Преко целог екрана', + codeview: 'Изворни код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Смањи увлачење', + indent: 'Повечај увлачење', + left: 'Поравнај у лево', + center: 'Центрирано', + right: 'Поравнај у десно', + justify: 'Поравнај обострано' + }, + color: { + recent: 'Последња боја', + more: 'Више боја', + background: 'Боја позадине', + foreground: 'Боја текста', + transparent: 'Провидна', + setTransparent: 'Провидна', + reset: 'Опозив', + resetToDefault: 'Подразумевана' + }, + shortcut: { + shortcuts: 'Пречице са тастатуре', + close: 'Затвори', + textFormatting: 'Форматирање текста', + action: 'Акција', + paragraphFormatting: 'Форматирање параграфа', + documentStyle: 'Стил документа', + extraKeys: 'Додатне комбинације' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Поништи', + redo: 'Понови' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sr-RS.min.js b/admin/vendors/summernote/dist/lang/summernote-sr-RS.min.js new file mode 100644 index 0000000000000000000000000000000000000000..242b9d1f8b7c10ed35b17a2e937965b3919efd30 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sr-RS.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-sr-RS.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=41)}({41:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"sr-RS":{font:{bold:"Подебљано",italic:"Курзив",underline:"Подвучено",clear:"Уклони стилове фонта",height:"Висина линије",name:"Font Family",strikethrough:"Прецртано",subscript:"Subscript",superscript:"Superscript",size:"Величина фонта"},image:{image:"Слика",insert:"Уметни слику",resizeFull:"Пуна величина",resizeHalf:"Умањи на 50%",resizeQuarter:"Умањи на 25%",floatLeft:"Уз леву ивицу",floatRight:"Уз десну ивицу",floatNone:"Без равнања",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Превуци слику овде",dropImage:"Drop image or Text",selectFromFiles:"Изабери из датотеке",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Адреса слике",remove:"Уклони слику",original:"Original"},video:{video:"Видео",videoLink:"Веза ка видеу",insert:"Уметни видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Веза",insert:"Уметни везу",unlink:"Уклони везу",edit:"Уреди",textToDisplay:"Текст за приказ",url:"Интернет адреса",openInNewWindow:"Отвори у новом прозору"},table:{table:"Табела",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Уметни хоризонталну линију"},style:{style:"Стил",p:"Нормални",blockquote:"Цитат",pre:"Код",h1:"Заглавље 1",h2:"Заглавље 2",h3:"Заглавље 3",h4:"Заглавље 4",h5:"Заглавље 5",h6:"Заглавље 6"},lists:{unordered:"Обична листа",ordered:"Нумерисана листа"},options:{help:"Помоћ",fullscreen:"Преко целог екрана",codeview:"Изворни код"},paragraph:{paragraph:"Параграф",outdent:"Смањи увлачење",indent:"Повечај увлачење",left:"Поравнај у лево",center:"Центрирано",right:"Поравнај у десно",justify:"Поравнај обострано"},color:{recent:"Последња боја",more:"Више боја",background:"Боја позадине",foreground:"Боја текста",transparent:"Провидна",setTransparent:"Провидна",reset:"Опозив",resetToDefault:"Подразумевана"},shortcut:{shortcuts:"Пречице са тастатуре",close:"Затвори",textFormatting:"Форматирање текста",action:"Акција",paragraphFormatting:"Форматирање параграфа",documentStyle:"Стил документа",extraKeys:"Додатне комбинације"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Поништи",redo:"Понови"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sv-SE.js b/admin/vendors/summernote/dist/lang/summernote-sv-SE.js new file mode 100644 index 0000000000000000000000000000000000000000..74ae36ad43f5847f78b9f8b14454f8df905db5c1 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sv-SE.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 42); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 42: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'sv-SE': { + font: { + bold: 'Fet', + italic: 'Kursiv', + underline: 'Understruken', + clear: 'Radera formatering', + height: 'Radavstånd', + name: 'Teckensnitt', + strikethrough: 'Genomstruken', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Teckenstorlek' + }, + image: { + image: 'Bild', + insert: 'Infoga bild', + resizeFull: 'Full storlek', + resizeHalf: 'Halv storlek', + resizeQuarter: 'En fjärdedel i storlek', + floatLeft: 'Vänsterjusterad', + floatRight: 'Högerjusterad', + floatNone: 'Ingen justering', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Dra en bild hit', + dropImage: 'Drop image or Text', + selectFromFiles: 'Välj från filer', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Länk till bild', + remove: 'Ta bort bild', + original: 'Original' + }, + video: { + video: 'Filmklipp', + videoLink: 'Länk till filmklipp', + insert: 'Infoga filmklipp', + url: 'Länk till filmklipp', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)' + }, + link: { + link: 'Länk', + insert: 'Infoga länk', + unlink: 'Ta bort länk', + edit: 'Redigera', + textToDisplay: 'Visningstext', + url: 'Till vilken URL ska denna länk peka?', + openInNewWindow: 'Öppna i ett nytt fönster' + }, + table: { + table: 'Tabell', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Infoga horisontell linje' + }, + style: { + style: 'Stil', + p: 'p', + blockquote: 'Citat', + pre: 'Kod', + h1: 'Rubrik 1', + h2: 'Rubrik 2', + h3: 'Rubrik 3', + h4: 'Rubrik 4', + h5: 'Rubrik 5', + h6: 'Rubrik 6' + }, + lists: { + unordered: 'Punktlista', + ordered: 'Numrerad lista' + }, + options: { + help: 'Hjälp', + fullscreen: 'Fullskärm', + codeview: 'HTML-visning' + }, + paragraph: { + paragraph: 'Justera text', + outdent: 'Minska indrag', + indent: 'Öka indrag', + left: 'Vänsterjusterad', + center: 'Centrerad', + right: 'Högerjusterad', + justify: 'Justera text' + }, + color: { + recent: 'Senast använda färg', + more: 'Fler färger', + background: 'Bakgrundsfärg', + foreground: 'Teckenfärg', + transparent: 'Genomskinlig', + setTransparent: 'Gör genomskinlig', + reset: 'Nollställ', + resetToDefault: 'Återställ till standard' + }, + shortcut: { + shortcuts: 'Kortkommandon', + close: 'Stäng', + textFormatting: 'Textformatering', + action: 'Funktion', + paragraphFormatting: 'Avsnittsformatering', + documentStyle: 'Dokumentstil', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Ångra', + redo: 'Gör om' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-sv-SE.min.js b/admin/vendors/summernote/dist/lang/summernote-sv-SE.min.js new file mode 100644 index 0000000000000000000000000000000000000000..be7313ce4255b68e0d41d6e5980d07f1b64b1996 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-sv-SE.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-sv-SE.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=42)}({42:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"sv-SE":{font:{bold:"Fet",italic:"Kursiv",underline:"Understruken",clear:"Radera formatering",height:"Radavstånd",name:"Teckensnitt",strikethrough:"Genomstruken",subscript:"Subscript",superscript:"Superscript",size:"Teckenstorlek"},image:{image:"Bild",insert:"Infoga bild",resizeFull:"Full storlek",resizeHalf:"Halv storlek",resizeQuarter:"En fjärdedel i storlek",floatLeft:"Vänsterjusterad",floatRight:"Högerjusterad",floatNone:"Ingen justering",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Dra en bild hit",dropImage:"Drop image or Text",selectFromFiles:"Välj från filer",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Länk till bild",remove:"Ta bort bild",original:"Original"},video:{video:"Filmklipp",videoLink:"Länk till filmklipp",insert:"Infoga filmklipp",url:"Länk till filmklipp",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion eller Youku)"},link:{link:"Länk",insert:"Infoga länk",unlink:"Ta bort länk",edit:"Redigera",textToDisplay:"Visningstext",url:"Till vilken URL ska denna länk peka?",openInNewWindow:"Öppna i ett nytt fönster"},table:{table:"Tabell",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Infoga horisontell linje"},style:{style:"Stil",p:"p",blockquote:"Citat",pre:"Kod",h1:"Rubrik 1",h2:"Rubrik 2",h3:"Rubrik 3",h4:"Rubrik 4",h5:"Rubrik 5",h6:"Rubrik 6"},lists:{unordered:"Punktlista",ordered:"Numrerad lista"},options:{help:"Hjälp",fullscreen:"Fullskärm",codeview:"HTML-visning"},paragraph:{paragraph:"Justera text",outdent:"Minska indrag",indent:"Öka indrag",left:"Vänsterjusterad",center:"Centrerad",right:"Högerjusterad",justify:"Justera text"},color:{recent:"Senast använda färg",more:"Fler färger",background:"Bakgrundsfärg",foreground:"Teckenfärg",transparent:"Genomskinlig",setTransparent:"Gör genomskinlig",reset:"Nollställ",resetToDefault:"Återställ till standard"},shortcut:{shortcuts:"Kortkommandon",close:"Stäng",textFormatting:"Textformatering",action:"Funktion",paragraphFormatting:"Avsnittsformatering",documentStyle:"Dokumentstil",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Ångra",redo:"Gör om"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ta-IN.js b/admin/vendors/summernote/dist/lang/summernote-ta-IN.js new file mode 100644 index 0000000000000000000000000000000000000000..014ccebaa6cbcddcd1731b646a99699eeae42f7c --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ta-IN.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 43); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 43: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'ta-IN': { + font: { + bold: 'தடித்த', + italic: 'சாய்வு', + underline: 'அடிக்கோடு', + clear: 'நீக்கு', + height: 'வரி உயரம்', + name: 'எழுத்துரு பெயர்', + strikethrough: 'குறுக்குக் கோடு', + size: 'எழுத்துரு அளவு', + superscript: 'மேல் ஒட்டு', + subscript: 'கீழ் ஒட்டு' + }, + image: { + image: 'படம்', + insert: 'படத்தை செருகு', + resizeFull: 'முழு அளவை', + resizeHalf: 'அரை அளவை', + resizeQuarter: 'கால் அளவை', + floatLeft: 'இடப்பக்கமாக வை', + floatRight: 'வலப்பக்கமாக வை', + floatNone: 'இயல்புநிலையில் வை', + shapeRounded: 'வட்டமான வடிவம்', + shapeCircle: 'வட்ட வடிவம்', + shapeThumbnail: 'சிறு வடிவம்', + shapeNone: 'வடிவத்தை நீக்கு', + dragImageHere: 'படத்தை இங்கே இழுத்துவை', + dropImage: 'படத்தை விடு', + selectFromFiles: 'கோப்புகளை தேர்வு செய்', + maximumFileSize: 'அதிகபட்ச கோப்பு அளவு', + maximumFileSizeError: 'கோப்பு அதிகபட்ச அளவை மீறிவிட்டது', + url: 'இணையதள முகவரி', + remove: 'படத்தை நீக்கு', + original: 'Original' + }, + video: { + video: 'காணொளி', + videoLink: 'காணொளி இணைப்பு', + insert: 'காணொளியை செருகு', + url: 'இணையதள முகவரி', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'இணைப்பு', + insert: 'இணைப்பை செருகு', + unlink: 'இணைப்பை நீக்கு', + edit: 'இணைப்பை தொகு', + textToDisplay: 'காட்சி வாசகம்', + url: 'இணையதள முகவரி', + openInNewWindow: 'புதிய சாளரத்தில் திறக்க' + }, + table: { + table: 'அட்டவணை', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'கிடைமட்ட கோடு' + }, + style: { + style: 'தொகுப்பு', + p: 'பத்தி', + blockquote: 'மேற்கோள்', + pre: 'குறியீடு', + h1: 'தலைப்பு 1', + h2: 'தலைப்பு 2', + h3: 'தலைப்பு 3', + h4: 'தலைப்பு 4', + h5: 'தலைப்பு 5', + h6: 'தலைப்பு 6' + }, + lists: { + unordered: 'வரிசையிடாத', + ordered: 'வரிசையிட்ட' + }, + options: { + help: 'உதவி', + fullscreen: 'முழுத்திரை', + codeview: 'நிரலாக்க காட்சி' + }, + paragraph: { + paragraph: 'பத்தி', + outdent: 'வெளித்தள்ளு', + indent: 'உள்ளே தள்ளு', + left: 'இடது சீரமைப்பு', + center: 'நடு சீரமைப்பு', + right: 'வலது சீரமைப்பு', + justify: 'இருபுற சீரமைப்பு' + }, + color: { + recent: 'அண்மை நிறம்', + more: 'மேலும்', + background: 'பின்புல நிறம்', + foreground: 'முன்புற நிறம்', + transparent: 'தெளிமையான', + setTransparent: 'தெளிமையாக்கு', + reset: 'மீட்டமைக்க', + resetToDefault: 'இயல்புநிலைக்கு மீட்டமை' + }, + shortcut: { + shortcuts: 'குறுக்குவழி', + close: 'மூடு', + textFormatting: 'எழுத்து வடிவமைப்பு', + action: 'செயல்படுத்து', + paragraphFormatting: 'பத்தி வடிவமைப்பு', + documentStyle: 'ஆவண பாணி', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'மீளமை', + redo: 'மீண்டும்' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-ta-IN.min.js b/admin/vendors/summernote/dist/lang/summernote-ta-IN.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a5055fe101ad319a118f10126f38c8fd7ccbf152 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-ta-IN.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-ta-IN.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=43)}({43:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"ta-IN":{font:{bold:"தடித்த",italic:"சாய்வு",underline:"அடிக்கோடு",clear:"நீக்கு",height:"வரி உயரம்",name:"எழுத்துரு பெயர்",strikethrough:"குறுக்குக் கோடு",size:"எழுத்துரு அளவு",superscript:"மேல் ஒட்டு",subscript:"கீழ் ஒட்டு"},image:{image:"படம்",insert:"படத்தை செருகு",resizeFull:"முழு அளவை",resizeHalf:"அரை அளவை",resizeQuarter:"கால் அளவை",floatLeft:"இடப்பக்கமாக வை",floatRight:"வலப்பக்கமாக வை",floatNone:"இயல்புநிலையில் வை",shapeRounded:"வட்டமான வடிவம்",shapeCircle:"வட்ட வடிவம்",shapeThumbnail:"சிறு வடிவம்",shapeNone:"வடிவத்தை நீக்கு",dragImageHere:"படத்தை இங்கே இழுத்துவை",dropImage:"படத்தை விடு",selectFromFiles:"கோப்புகளை தேர்வு செய்",maximumFileSize:"அதிகபட்ச கோப்பு அளவு",maximumFileSizeError:"கோப்பு அதிகபட்ச அளவை மீறிவிட்டது",url:"இணையதள முகவரி",remove:"படத்தை நீக்கு",original:"Original"},video:{video:"காணொளி",videoLink:"காணொளி இணைப்பு",insert:"காணொளியை செருகு",url:"இணையதள முகவரி",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"இணைப்பு",insert:"இணைப்பை செருகு",unlink:"இணைப்பை நீக்கு",edit:"இணைப்பை தொகு",textToDisplay:"காட்சி வாசகம்",url:"இணையதள முகவரி",openInNewWindow:"புதிய சாளரத்தில் திறக்க"},table:{table:"அட்டவணை",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"கிடைமட்ட கோடு"},style:{style:"தொகுப்பு",p:"பத்தி",blockquote:"மேற்கோள்",pre:"குறியீடு",h1:"தலைப்பு 1",h2:"தலைப்பு 2",h3:"தலைப்பு 3",h4:"தலைப்பு 4",h5:"தலைப்பு 5",h6:"தலைப்பு 6"},lists:{unordered:"வரிசையிடாத",ordered:"வரிசையிட்ட"},options:{help:"உதவி",fullscreen:"முழுத்திரை",codeview:"நிரலாக்க காட்சி"},paragraph:{paragraph:"பத்தி",outdent:"வெளித்தள்ளு",indent:"உள்ளே தள்ளு",left:"இடது சீரமைப்பு",center:"நடு சீரமைப்பு",right:"வலது சீரமைப்பு",justify:"இருபுற சீரமைப்பு"},color:{recent:"அண்மை நிறம்",more:"மேலும்",background:"பின்புல நிறம்",foreground:"முன்புற நிறம்",transparent:"தெளிமையான",setTransparent:"தெளிமையாக்கு",reset:"மீட்டமைக்க",resetToDefault:"இயல்புநிலைக்கு மீட்டமை"},shortcut:{shortcuts:"குறுக்குவழி",close:"மூடு",textFormatting:"எழுத்து வடிவமைப்பு",action:"செயல்படுத்து",paragraphFormatting:"பத்தி வடிவமைப்பு",documentStyle:"ஆவண பாணி",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"மீளமை",redo:"மீண்டும்"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-th-TH.js b/admin/vendors/summernote/dist/lang/summernote-th-TH.js new file mode 100644 index 0000000000000000000000000000000000000000..024b582f5c21fd35b90790bfeb7c70c935cbbfce --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-th-TH.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 44); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 44: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'th-TH': { + font: { + bold: 'ตัวหนา', + italic: 'ตัวเอียง', + underline: 'ขีดเส้นใต้', + clear: 'ล้างรูปแบบตัวอักษร', + height: 'ความสูงบรรทัด', + name: 'แบบตัวอักษร', + strikethrough: 'ขีดฆ่า', + subscript: 'ตัวห้อย', + superscript: 'ตัวยก', + size: 'ขนาดตัวอักษร' + }, + image: { + image: 'รูปภาพ', + insert: 'แทรกรูปภาพ', + resizeFull: 'ปรับขนาดเท่าจริง', + resizeHalf: 'ปรับขนาดลง 50%', + resizeQuarter: 'ปรับขนาดลง 25%', + floatLeft: 'ชิดซ้าย', + floatRight: 'ชิดขวา', + floatNone: 'ไม่จัดตำแหน่ง', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'ลากรูปภาพที่ต้องการไว้ที่นี่', + dropImage: 'วางรูปภาพหรือข้อความ', + selectFromFiles: 'เลือกไฟล์รูปภาพ', + maximumFileSize: 'ขนาดไฟล์ใหญ่สุด', + maximumFileSizeError: 'ไฟล์เกินขนาดที่กำหนด', + url: 'ที่อยู่ URL ของรูปภาพ', + remove: 'ลบรูปภาพ', + original: 'Original' + }, + video: { + video: 'วีดีโอ', + videoLink: 'ลิงก์ของวีดีโอ', + insert: 'แทรกวีดีโอ', + url: 'ที่อยู่ URL ของวีดีโอ', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)' + }, + link: { + link: 'ตัวเชื่อมโยง', + insert: 'แทรกตัวเชื่อมโยง', + unlink: 'ยกเลิกตัวเชื่อมโยง', + edit: 'แก้ไข', + textToDisplay: 'ข้อความที่ให้แสดง', + url: 'ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?', + openInNewWindow: 'เปิดในหน้าต่างใหม่' + }, + table: { + table: 'ตาราง', + addRowAbove: 'เพิ่มแถวด้านบน', + addRowBelow: 'เพิ่มแถวด้านล่าง', + addColLeft: 'เพิ่มคอลัมน์ด้านซ้าย', + addColRight: 'เพิ่มคอลัมน์ด้านขวา', + delRow: 'ลบแถว', + delCol: 'ลบคอลัมน์', + delTable: 'ลบตาราง' + }, + hr: { + insert: 'แทรกเส้นคั่น' + }, + style: { + style: 'รูปแบบ', + p: 'ปกติ', + blockquote: 'ข้อความ', + pre: 'โค้ด', + h1: 'หัวข้อ 1', + h2: 'หัวข้อ 2', + h3: 'หัวข้อ 3', + h4: 'หัวข้อ 4', + h5: 'หัวข้อ 5', + h6: 'หัวข้อ 6' + }, + lists: { + unordered: 'รายการแบบไม่มีลำดับ', + ordered: 'รายการแบบมีลำดับ' + }, + options: { + help: 'ช่วยเหลือ', + fullscreen: 'ขยายเต็มหน้าจอ', + codeview: 'ซอร์สโค้ด' + }, + paragraph: { + paragraph: 'ย่อหน้า', + outdent: 'เยื้องซ้าย', + indent: 'เยื้องขวา', + left: 'จัดหน้าชิดซ้าย', + center: 'จัดหน้ากึ่งกลาง', + right: 'จัดหน้าชิดขวา', + justify: 'จัดบรรทัดเสมอกัน' + }, + color: { + recent: 'สีที่ใช้ล่าสุด', + more: 'สีอื่นๆ', + background: 'สีพื้นหลัง', + foreground: 'สีพื้นหน้า', + transparent: 'โปร่งแสง', + setTransparent: 'ตั้งค่าความโปร่งแสง', + reset: 'คืนค่า', + resetToDefault: 'คืนค่ามาตรฐาน' + }, + shortcut: { + shortcuts: 'แป้นลัด', + close: 'ปิด', + textFormatting: 'การจัดรูปแบบข้อความ', + action: 'การกระทำ', + paragraphFormatting: 'การจัดรูปแบบย่อหน้า', + documentStyle: 'รูปแบบของเอกสาร', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'ทำตัวหนา', + 'italic': 'ทำตัวเอียง', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1', + 'formatH2': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2', + 'formatH3': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3', + 'formatH4': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4', + 'formatH5': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5', + 'formatH6': 'เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'เปิดหน้าแก้ไข Link' + }, + history: { + undo: 'ยกเลิกการกระทำ', + redo: 'ทำซ้ำการกระทำ' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-th-TH.min.js b/admin/vendors/summernote/dist/lang/summernote-th-TH.min.js new file mode 100644 index 0000000000000000000000000000000000000000..569b721b1bbd38a8695cbc4e37d7092d91828439 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-th-TH.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-th-TH.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=44)}({44:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"th-TH":{font:{bold:"ตัวหนา",italic:"ตัวเอียง",underline:"ขีดเส้นใต้",clear:"ล้างรูปแบบตัวอักษร",height:"ความสูงบรรทัด",name:"แบบตัวอักษร",strikethrough:"ขีดฆ่า",subscript:"ตัวห้อย",superscript:"ตัวยก",size:"ขนาดตัวอักษร"},image:{image:"รูปภาพ",insert:"แทรกรูปภาพ",resizeFull:"ปรับขนาดเท่าจริง",resizeHalf:"ปรับขนาดลง 50%",resizeQuarter:"ปรับขนาดลง 25%",floatLeft:"ชิดซ้าย",floatRight:"ชิดขวา",floatNone:"ไม่จัดตำแหน่ง",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"ลากรูปภาพที่ต้องการไว้ที่นี่",dropImage:"วางรูปภาพหรือข้อความ",selectFromFiles:"เลือกไฟล์รูปภาพ",maximumFileSize:"ขนาดไฟล์ใหญ่สุด",maximumFileSizeError:"ไฟล์เกินขนาดที่กำหนด",url:"ที่อยู่ URL ของรูปภาพ",remove:"ลบรูปภาพ",original:"Original"},video:{video:"วีดีโอ",videoLink:"ลิงก์ของวีดีโอ",insert:"แทรกวีดีโอ",url:"ที่อยู่ URL ของวีดีโอ",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion หรือ Youku)"},link:{link:"ตัวเชื่อมโยง",insert:"แทรกตัวเชื่อมโยง",unlink:"ยกเลิกตัวเชื่อมโยง",edit:"แก้ไข",textToDisplay:"ข้อความที่ให้แสดง",url:"ที่อยู่เว็บไซต์ที่ต้องการให้เชื่อมโยงไปถึง?",openInNewWindow:"เปิดในหน้าต่างใหม่"},table:{table:"ตาราง",addRowAbove:"เพิ่มแถวด้านบน",addRowBelow:"เพิ่มแถวด้านล่าง",addColLeft:"เพิ่มคอลัมน์ด้านซ้าย",addColRight:"เพิ่มคอลัมน์ด้านขวา",delRow:"ลบแถว",delCol:"ลบคอลัมน์",delTable:"ลบตาราง"},hr:{insert:"แทรกเส้นคั่น"},style:{style:"รูปแบบ",p:"ปกติ",blockquote:"ข้อความ",pre:"โค้ด",h1:"หัวข้อ 1",h2:"หัวข้อ 2",h3:"หัวข้อ 3",h4:"หัวข้อ 4",h5:"หัวข้อ 5",h6:"หัวข้อ 6"},lists:{unordered:"รายการแบบไม่มีลำดับ",ordered:"รายการแบบมีลำดับ"},options:{help:"ช่วยเหลือ",fullscreen:"ขยายเต็มหน้าจอ",codeview:"ซอร์สโค้ด"},paragraph:{paragraph:"ย่อหน้า",outdent:"เยื้องซ้าย",indent:"เยื้องขวา",left:"จัดหน้าชิดซ้าย",center:"จัดหน้ากึ่งกลาง",right:"จัดหน้าชิดขวา",justify:"จัดบรรทัดเสมอกัน"},color:{recent:"สีที่ใช้ล่าสุด",more:"สีอื่นๆ",background:"สีพื้นหลัง",foreground:"สีพื้นหน้า",transparent:"โปร่งแสง",setTransparent:"ตั้งค่าความโปร่งแสง",reset:"คืนค่า",resetToDefault:"คืนค่ามาตรฐาน"},shortcut:{shortcuts:"แป้นลัด",close:"ปิด",textFormatting:"การจัดรูปแบบข้อความ",action:"การกระทำ",paragraphFormatting:"การจัดรูปแบบย่อหน้า",documentStyle:"รูปแบบของเอกสาร",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"ทำตัวหนา",italic:"ทำตัวเอียง",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H1",formatH2:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H2",formatH3:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H3",formatH4:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H4",formatH5:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H5",formatH6:"เปลี่ยนรูปแบบบล็อคปัจจุบันเป็น H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"เปิดหน้าแก้ไข Link"},history:{undo:"ยกเลิกการกระทำ",redo:"ทำซ้ำการกระทำ"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-tr-TR.js b/admin/vendors/summernote/dist/lang/summernote-tr-TR.js new file mode 100644 index 0000000000000000000000000000000000000000..edffb7bb5acb8ec8663e7fd0fb6e3aa9b0bf8b94 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-tr-TR.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 45); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 45: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'tr-TR': { + font: { + bold: 'Kalın', + italic: 'İtalik', + underline: 'Altı çizili', + clear: 'Temizle', + height: 'Satır yüksekliği', + name: 'Yazı Tipi', + strikethrough: 'Üstü çizili', + subscript: 'Alt Simge', + superscript: 'Üst Simge', + size: 'Yazı tipi boyutu' + }, + image: { + image: 'Resim', + insert: 'Resim ekle', + resizeFull: 'Orjinal boyut', + resizeHalf: '1/2 boyut', + resizeQuarter: '1/4 boyut', + floatLeft: 'Sola hizala', + floatRight: 'Sağa hizala', + floatNone: 'Hizalamayı kaldır', + shapeRounded: 'Şekil: Yuvarlatılmış Köşe', + shapeCircle: 'Şekil: Daire', + shapeThumbnail: 'Şekil: K.Resim', + shapeNone: 'Şekil: Yok', + dragImageHere: 'Buraya sürükleyin', + dropImage: 'Resim veya metni bırakın', + selectFromFiles: 'Dosya seçin', + maximumFileSize: 'Maksimum dosya boyutu', + maximumFileSizeError: 'Maksimum dosya boyutu aşıldı.', + url: 'Resim bağlantısı', + remove: 'Resimi Kaldır', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video bağlantısı', + insert: 'Video ekle', + url: 'Video bağlantısı?', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)' + }, + link: { + link: 'Bağlantı', + insert: 'Bağlantı ekle', + unlink: 'Bağlantıyı kaldır', + edit: 'Bağlantıyı düzenle', + textToDisplay: 'Görüntülemek için', + url: 'Bağlantı adresi?', + openInNewWindow: 'Yeni pencerede aç' + }, + table: { + table: 'Tablo', + addRowAbove: 'Yukarı satır ekle', + addRowBelow: 'Aşağı satır ekle', + addColLeft: 'Sola sütun ekle', + addColRight: 'Sağa sütun ekle', + delRow: 'Satırı sil', + delCol: 'Sütunu sil', + delTable: 'Tabloyu sil' + }, + hr: { + insert: 'Yatay çizgi ekle' + }, + style: { + style: 'Biçim', + p: 'p', + blockquote: 'Alıntı', + pre: 'Önbiçimli', + h1: 'Başlık 1', + h2: 'Başlık 2', + h3: 'Başlık 3', + h4: 'Başlık 4', + h5: 'Başlık 5', + h6: 'Başlık 6' + }, + lists: { + unordered: 'Madde işaretli liste', + ordered: 'Numaralı liste' + }, + options: { + help: 'Yardım', + fullscreen: 'Tam ekran', + codeview: 'HTML Kodu' + }, + paragraph: { + paragraph: 'Paragraf', + outdent: 'Girintiyi artır', + indent: 'Girintiyi azalt', + left: 'Sola hizala', + center: 'Ortaya hizala', + right: 'Sağa hizala', + justify: 'Yasla' + }, + color: { + recent: 'Son renk', + more: 'Daha fazla renk', + background: 'Arka plan rengi', + foreground: 'Yazı rengi', + transparent: 'Seffaflık', + setTransparent: 'Şeffaflığı ayarla', + reset: 'Sıfırla', + resetToDefault: 'Varsayılanlara sıfırla' + }, + shortcut: { + shortcuts: 'Kısayollar', + close: 'Kapat', + textFormatting: 'Yazı biçimlendirme', + action: 'Eylem', + paragraphFormatting: 'Paragraf biçimlendirme', + documentStyle: 'Biçim', + extraKeys: 'İlave anahtarlar' + }, + help: { + 'insertParagraph': 'Paragraf ekler', + 'undo': 'Son komudu geri alır', + 'redo': 'Son komudu yineler', + 'tab': 'Girintiyi artırır', + 'untab': 'Girintiyi azaltır', + 'bold': 'Kalın yazma stilini ayarlar', + 'italic': 'İtalik yazma stilini ayarlar', + 'underline': 'Altı çizgili yazma stilini ayarlar', + 'strikethrough': 'Üstü çizgili yazma stilini ayarlar', + 'removeFormat': 'Biçimlendirmeyi temizler', + 'justifyLeft': 'Yazıyı sola hizalar', + 'justifyCenter': 'Yazıyı ortalar', + 'justifyRight': 'Yazıyı sağa hizalar', + 'justifyFull': 'Yazıyı her iki tarafa yazlar', + 'insertUnorderedList': 'Madde işaretli liste ekler', + 'insertOrderedList': 'Numaralı liste ekler', + 'outdent': 'Aktif paragrafın girintisini azaltır', + 'indent': 'Aktif paragrafın girintisini artırır', + 'formatPara': 'Aktif bloğun biçimini paragraf (p) olarak değiştirir', + 'formatH1': 'Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir', + 'formatH2': 'Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir', + 'formatH3': 'Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir', + 'formatH4': 'Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir', + 'formatH5': 'Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir', + 'formatH6': 'Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir', + 'insertHorizontalRule': 'Yatay çizgi ekler', + 'linkDialog.show': 'Bağlantı ayar kutusunu gösterir' + }, + history: { + undo: 'Geri al', + redo: 'Yinele' + }, + specialChar: { + specialChar: 'ÖZEL KARAKTERLER', + select: 'Özel Karakterleri seçin' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-tr-TR.min.js b/admin/vendors/summernote/dist/lang/summernote-tr-TR.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d123ee95a637b28119a07cbbbc26cb3ea3051874 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-tr-TR.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-tr-TR.min.js.LICENSE.txt */ +!function(e,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var i=a();for(var r in i)("object"==typeof exports?exports:e)[r]=i[r]}}(window,(function(){return function(e){var a={};function i(r){if(a[r])return a[r].exports;var t=a[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=e,i.c=a,i.d=function(e,a,r){i.o(e,a)||Object.defineProperty(e,a,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,a){if(1&a&&(e=i(e)),8&a)return e;if(4&a&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&a&&"string"!=typeof e)for(var t in e)i.d(r,t,function(a){return e[a]}.bind(null,t));return r},i.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(a,"a",a),a},i.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},i.p="",i(i.s=45)}({45:function(e,a){var i;(i=jQuery).extend(i.summernote.lang,{"tr-TR":{font:{bold:"Kalın",italic:"İtalik",underline:"Altı çizili",clear:"Temizle",height:"Satır yüksekliği",name:"Yazı Tipi",strikethrough:"Üstü çizili",subscript:"Alt Simge",superscript:"Üst Simge",size:"Yazı tipi boyutu"},image:{image:"Resim",insert:"Resim ekle",resizeFull:"Orjinal boyut",resizeHalf:"1/2 boyut",resizeQuarter:"1/4 boyut",floatLeft:"Sola hizala",floatRight:"Sağa hizala",floatNone:"Hizalamayı kaldır",shapeRounded:"Şekil: Yuvarlatılmış Köşe",shapeCircle:"Şekil: Daire",shapeThumbnail:"Şekil: K.Resim",shapeNone:"Şekil: Yok",dragImageHere:"Buraya sürükleyin",dropImage:"Resim veya metni bırakın",selectFromFiles:"Dosya seçin",maximumFileSize:"Maksimum dosya boyutu",maximumFileSizeError:"Maksimum dosya boyutu aşıldı.",url:"Resim bağlantısı",remove:"Resimi Kaldır",original:"Original"},video:{video:"Video",videoLink:"Video bağlantısı",insert:"Video ekle",url:"Video bağlantısı?",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion veya Youku)"},link:{link:"Bağlantı",insert:"Bağlantı ekle",unlink:"Bağlantıyı kaldır",edit:"Bağlantıyı düzenle",textToDisplay:"Görüntülemek için",url:"Bağlantı adresi?",openInNewWindow:"Yeni pencerede aç"},table:{table:"Tablo",addRowAbove:"Yukarı satır ekle",addRowBelow:"Aşağı satır ekle",addColLeft:"Sola sütun ekle",addColRight:"Sağa sütun ekle",delRow:"Satırı sil",delCol:"Sütunu sil",delTable:"Tabloyu sil"},hr:{insert:"Yatay çizgi ekle"},style:{style:"Biçim",p:"p",blockquote:"Alıntı",pre:"Önbiçimli",h1:"Başlık 1",h2:"Başlık 2",h3:"Başlık 3",h4:"Başlık 4",h5:"Başlık 5",h6:"Başlık 6"},lists:{unordered:"Madde işaretli liste",ordered:"Numaralı liste"},options:{help:"Yardım",fullscreen:"Tam ekran",codeview:"HTML Kodu"},paragraph:{paragraph:"Paragraf",outdent:"Girintiyi artır",indent:"Girintiyi azalt",left:"Sola hizala",center:"Ortaya hizala",right:"Sağa hizala",justify:"Yasla"},color:{recent:"Son renk",more:"Daha fazla renk",background:"Arka plan rengi",foreground:"Yazı rengi",transparent:"Seffaflık",setTransparent:"Şeffaflığı ayarla",reset:"Sıfırla",resetToDefault:"Varsayılanlara sıfırla"},shortcut:{shortcuts:"Kısayollar",close:"Kapat",textFormatting:"Yazı biçimlendirme",action:"Eylem",paragraphFormatting:"Paragraf biçimlendirme",documentStyle:"Biçim",extraKeys:"İlave anahtarlar"},help:{insertParagraph:"Paragraf ekler",undo:"Son komudu geri alır",redo:"Son komudu yineler",tab:"Girintiyi artırır",untab:"Girintiyi azaltır",bold:"Kalın yazma stilini ayarlar",italic:"İtalik yazma stilini ayarlar",underline:"Altı çizgili yazma stilini ayarlar",strikethrough:"Üstü çizgili yazma stilini ayarlar",removeFormat:"Biçimlendirmeyi temizler",justifyLeft:"Yazıyı sola hizalar",justifyCenter:"Yazıyı ortalar",justifyRight:"Yazıyı sağa hizalar",justifyFull:"Yazıyı her iki tarafa yazlar",insertUnorderedList:"Madde işaretli liste ekler",insertOrderedList:"Numaralı liste ekler",outdent:"Aktif paragrafın girintisini azaltır",indent:"Aktif paragrafın girintisini artırır",formatPara:"Aktif bloğun biçimini paragraf (p) olarak değiştirir",formatH1:"Aktif bloğun biçimini başlık 1 (h1) olarak değiştirir",formatH2:"Aktif bloğun biçimini başlık 2 (h2) olarak değiştirir",formatH3:"Aktif bloğun biçimini başlık 3 (h3) olarak değiştirir",formatH4:"Aktif bloğun biçimini başlık 4 (h4) olarak değiştirir",formatH5:"Aktif bloğun biçimini başlık 5 (h5) olarak değiştirir",formatH6:"Aktif bloğun biçimini başlık 6 (h6) olarak değiştirir",insertHorizontalRule:"Yatay çizgi ekler","linkDialog.show":"Bağlantı ayar kutusunu gösterir"},history:{undo:"Geri al",redo:"Yinele"},specialChar:{specialChar:"ÖZEL KARAKTERLER",select:"Özel Karakterleri seçin"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-uk-UA.js b/admin/vendors/summernote/dist/lang/summernote-uk-UA.js new file mode 100644 index 0000000000000000000000000000000000000000..e89f469a34a9dae71ffc368fdf89fcacddc4beca --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-uk-UA.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 46); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 46: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'uk-UA': { + font: { + bold: 'Напівжирний', + italic: 'Курсив', + underline: 'Підкреслений', + clear: 'Прибрати стилі шрифту', + height: 'Висота лінії', + name: 'Шрифт', + strikethrough: 'Закреслений', + subscript: 'Нижній індекс', + superscript: 'Верхній індекс', + size: 'Розмір шрифту' + }, + image: { + image: 'Картинка', + insert: 'Вставити картинку', + resizeFull: 'Відновити розмір', + resizeHalf: 'Зменшити до 50%', + resizeQuarter: 'Зменшити до 25%', + floatLeft: 'Розташувати ліворуч', + floatRight: 'Розташувати праворуч', + floatNone: 'Початкове розташування', + shapeRounded: 'Форма: Заокруглена', + shapeCircle: 'Форма: Коло', + shapeThumbnail: 'Форма: Мініатюра', + shapeNone: 'Форма: Немає', + dragImageHere: 'Перетягніть сюди картинку', + dropImage: 'Перетягніть картинку', + selectFromFiles: 'Вибрати з файлів', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL картинки', + remove: 'Видалити картинку', + original: 'Original' + }, + video: { + video: 'Відео', + videoLink: 'Посилання на відео', + insert: 'Вставити відео', + url: 'URL відео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)' + }, + link: { + link: 'Посилання', + insert: 'Вставити посилання', + unlink: 'Прибрати посилання', + edit: 'Редагувати', + textToDisplay: 'Текст, що відображається', + url: 'URL для переходу', + openInNewWindow: 'Відкривати у новому вікні' + }, + table: { + table: 'Таблиця', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Вставити горизонтальну лінію' + }, + style: { + style: 'Стиль', + p: 'Нормальний', + blockquote: 'Цитата', + pre: 'Код', + h1: 'Заголовок 1', + h2: 'Заголовок 2', + h3: 'Заголовок 3', + h4: 'Заголовок 4', + h5: 'Заголовок 5', + h6: 'Заголовок 6' + }, + lists: { + unordered: 'Маркований список', + ordered: 'Нумерований список' + }, + options: { + help: 'Допомога', + fullscreen: 'На весь екран', + codeview: 'Початковий код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Зменшити відступ', + indent: 'Збільшити відступ', + left: 'Вирівняти по лівому краю', + center: 'Вирівняти по центру', + right: 'Вирівняти по правому краю', + justify: 'Розтягнути по ширині' + }, + color: { + recent: 'Останній колір', + more: 'Ще кольори', + background: 'Колір фону', + foreground: 'Колір шрифту', + transparent: 'Прозорий', + setTransparent: 'Зробити прозорим', + reset: 'Відновити', + resetToDefault: 'Відновити початкові' + }, + shortcut: { + shortcuts: 'Комбінації клавіш', + close: 'Закрити', + textFormatting: 'Форматування тексту', + action: 'Дія', + paragraphFormatting: 'Форматування параграфу', + documentStyle: 'Стиль документу', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Відмінити', + redo: 'Повторити' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-uk-UA.min.js b/admin/vendors/summernote/dist/lang/summernote-uk-UA.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b567e1878c99b22abfc2ef747a264eb658d1049f --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-uk-UA.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-uk-UA.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=46)}({46:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"uk-UA":{font:{bold:"Напівжирний",italic:"Курсив",underline:"Підкреслений",clear:"Прибрати стилі шрифту",height:"Висота лінії",name:"Шрифт",strikethrough:"Закреслений",subscript:"Нижній індекс",superscript:"Верхній індекс",size:"Розмір шрифту"},image:{image:"Картинка",insert:"Вставити картинку",resizeFull:"Відновити розмір",resizeHalf:"Зменшити до 50%",resizeQuarter:"Зменшити до 25%",floatLeft:"Розташувати ліворуч",floatRight:"Розташувати праворуч",floatNone:"Початкове розташування",shapeRounded:"Форма: Заокруглена",shapeCircle:"Форма: Коло",shapeThumbnail:"Форма: Мініатюра",shapeNone:"Форма: Немає",dragImageHere:"Перетягніть сюди картинку",dropImage:"Перетягніть картинку",selectFromFiles:"Вибрати з файлів",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL картинки",remove:"Видалити картинку",original:"Original"},video:{video:"Відео",videoLink:"Посилання на відео",insert:"Вставити відео",url:"URL відео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion чи Youku)"},link:{link:"Посилання",insert:"Вставити посилання",unlink:"Прибрати посилання",edit:"Редагувати",textToDisplay:"Текст, що відображається",url:"URL для переходу",openInNewWindow:"Відкривати у новому вікні"},table:{table:"Таблиця",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Вставити горизонтальну лінію"},style:{style:"Стиль",p:"Нормальний",blockquote:"Цитата",pre:"Код",h1:"Заголовок 1",h2:"Заголовок 2",h3:"Заголовок 3",h4:"Заголовок 4",h5:"Заголовок 5",h6:"Заголовок 6"},lists:{unordered:"Маркований список",ordered:"Нумерований список"},options:{help:"Допомога",fullscreen:"На весь екран",codeview:"Початковий код"},paragraph:{paragraph:"Параграф",outdent:"Зменшити відступ",indent:"Збільшити відступ",left:"Вирівняти по лівому краю",center:"Вирівняти по центру",right:"Вирівняти по правому краю",justify:"Розтягнути по ширині"},color:{recent:"Останній колір",more:"Ще кольори",background:"Колір фону",foreground:"Колір шрифту",transparent:"Прозорий",setTransparent:"Зробити прозорим",reset:"Відновити",resetToDefault:"Відновити початкові"},shortcut:{shortcuts:"Комбінації клавіш",close:"Закрити",textFormatting:"Форматування тексту",action:"Дія",paragraphFormatting:"Форматування параграфу",documentStyle:"Стиль документу",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Відмінити",redo:"Повторити"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-uz-UZ.js b/admin/vendors/summernote/dist/lang/summernote-uz-UZ.js new file mode 100644 index 0000000000000000000000000000000000000000..a6709c02bd6d5e4e27aca02630e69de92bff642e --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-uz-UZ.js @@ -0,0 +1,230 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 47); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 47: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'uz-UZ': { + font: { + bold: 'қалин', + italic: 'Курсив', + underline: 'Белгиланган', + clear: 'Ҳарф турларини олиб ташлаш', + height: 'Чизиқ баландлиги', + name: 'Ҳарф', + strikethrough: 'Ўчирилган', + subscript: 'Пастки индекс', + superscript: 'Юқори индекс', + size: 'ҳарф ҳажми' + }, + image: { + image: 'Расм', + insert: 'расмни қўйиш', + resizeFull: 'Ҳажмни тиклаш', + resizeHalf: '50% гача кичрайтириш', + resizeQuarter: '25% гача кичрайтириш', + floatLeft: 'Чапда жойлаштириш', + floatRight: 'Ўнгда жойлаштириш', + floatNone: 'Стандарт бўйича жойлашув', + shapeRounded: 'Шакли: Юмалоқ', + shapeCircle: 'Шакли: Доира', + shapeThumbnail: 'Шакли: Миниатюра', + shapeNone: 'Шакли: Йўқ', + dragImageHere: 'Суратни кўчириб ўтинг', + dropImage: 'Суратни кўчириб ўтинг', + selectFromFiles: 'Файллардан бирини танлаш', + url: 'суратлар URL и', + remove: 'Суратни ўчириш' + }, + video: { + video: 'Видео', + videoLink: 'Видеога ҳавола', + insert: 'Видео', + url: 'URL видео', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)' + }, + link: { + link: 'Ҳавола', + insert: 'Ҳаволани қўйиш', + unlink: 'Ҳаволани олиб ташлаш', + edit: 'Таҳрир қилиш', + textToDisplay: 'Кўринадиган матн', + url: 'URL ўтиш учун', + openInNewWindow: 'Янги дарчада очиш' + }, + table: { + table: 'Жадвал' + }, + hr: { + insert: 'Горизонтал чизиқни қўйиш' + }, + style: { + style: 'Услуб', + p: 'Яхши', + blockquote: 'Жумла', + pre: 'Код', + h1: 'Сарлавҳа 1', + h2: 'Сарлавҳа 2', + h3: 'Сарлавҳа 3', + h4: 'Сарлавҳа 4', + h5: 'Сарлавҳа 5', + h6: 'Сарлавҳа 6' + }, + lists: { + unordered: 'Белгиланган рўйҳат', + ordered: 'Рақамланган рўйҳат' + }, + options: { + help: 'Ёрдам', + fullscreen: 'Бутун экран бўйича', + codeview: 'Бошланғич код' + }, + paragraph: { + paragraph: 'Параграф', + outdent: 'Орқага қайтишни камайтириш', + indent: 'Орқага қайтишни кўпайтириш', + left: 'Чап қирғоққа тўғрилаш', + center: 'Марказга тўғрилаш', + right: 'Ўнг қирғоққа тўғрилаш', + justify: 'Эни бўйлаб чўзиш' + }, + color: { + recent: 'Охирги ранг', + more: 'Яна ранглар', + background: 'Фон ранги', + foreground: 'Ҳарф ранги', + transparent: 'Шаффоф', + setTransparent: 'Шаффофдай қилиш', + reset: 'Бекор қилиш', + resetToDefault: 'Стандартга оид тиклаш' + }, + shortcut: { + shortcuts: 'Клавишларнинг ҳамохҳанглиги', + close: 'Ёпиқ', + textFormatting: 'Матнни ', + action: 'Ҳаркат', + paragraphFormatting: 'Параграфни форматлаш', + documentStyle: 'Ҳужжатнинг тури', + extraKeys: 'Қўшимча имкониятлар' + }, + history: { + undo: 'Бекор қилиш', + redo: 'Қайтариш' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-uz-UZ.min.js b/admin/vendors/summernote/dist/lang/summernote-uz-UZ.min.js new file mode 100644 index 0000000000000000000000000000000000000000..741685317b06503630c1a0201d3c735e055d5e23 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-uz-UZ.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-uz-UZ.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=47)}({47:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"uz-UZ":{font:{bold:"қалин",italic:"Курсив",underline:"Белгиланган",clear:"Ҳарф турларини олиб ташлаш",height:"Чизиқ баландлиги",name:"Ҳарф",strikethrough:"Ўчирилган",subscript:"Пастки индекс",superscript:"Юқори индекс",size:"ҳарф ҳажми"},image:{image:"Расм",insert:"расмни қўйиш",resizeFull:"Ҳажмни тиклаш",resizeHalf:"50% гача кичрайтириш",resizeQuarter:"25% гача кичрайтириш",floatLeft:"Чапда жойлаштириш",floatRight:"Ўнгда жойлаштириш",floatNone:"Стандарт бўйича жойлашув",shapeRounded:"Шакли: Юмалоқ",shapeCircle:"Шакли: Доира",shapeThumbnail:"Шакли: Миниатюра",shapeNone:"Шакли: Йўқ",dragImageHere:"Суратни кўчириб ўтинг",dropImage:"Суратни кўчириб ўтинг",selectFromFiles:"Файллардан бирини танлаш",url:"суратлар URL и",remove:"Суратни ўчириш"},video:{video:"Видео",videoLink:"Видеога ҳавола",insert:"Видео",url:"URL видео",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion или Youku)"},link:{link:"Ҳавола",insert:"Ҳаволани қўйиш",unlink:"Ҳаволани олиб ташлаш",edit:"Таҳрир қилиш",textToDisplay:"Кўринадиган матн",url:"URL ўтиш учун",openInNewWindow:"Янги дарчада очиш"},table:{table:"Жадвал"},hr:{insert:"Горизонтал чизиқни қўйиш"},style:{style:"Услуб",p:"Яхши",blockquote:"Жумла",pre:"Код",h1:"Сарлавҳа 1",h2:"Сарлавҳа 2",h3:"Сарлавҳа 3",h4:"Сарлавҳа 4",h5:"Сарлавҳа 5",h6:"Сарлавҳа 6"},lists:{unordered:"Белгиланган рўйҳат",ordered:"Рақамланган рўйҳат"},options:{help:"Ёрдам",fullscreen:"Бутун экран бўйича",codeview:"Бошланғич код"},paragraph:{paragraph:"Параграф",outdent:"Орқага қайтишни камайтириш",indent:"Орқага қайтишни кўпайтириш",left:"Чап қирғоққа тўғрилаш",center:"Марказга тўғрилаш",right:"Ўнг қирғоққа тўғрилаш",justify:"Эни бўйлаб чўзиш"},color:{recent:"Охирги ранг",more:"Яна ранглар",background:"Фон ранги",foreground:"Ҳарф ранги",transparent:"Шаффоф",setTransparent:"Шаффофдай қилиш",reset:"Бекор қилиш",resetToDefault:"Стандартга оид тиклаш"},shortcut:{shortcuts:"Клавишларнинг ҳамохҳанглиги",close:"Ёпиқ",textFormatting:"Матнни ",action:"Ҳаркат",paragraphFormatting:"Параграфни форматлаш",documentStyle:"Ҳужжатнинг тури",extraKeys:"Қўшимча имкониятлар"},history:{undo:"Бекор қилиш",redo:"Қайтариш"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-vi-VN.js b/admin/vendors/summernote/dist/lang/summernote-vi-VN.js new file mode 100644 index 0000000000000000000000000000000000000000..2c5e494e111fbea4f3af0a207d6d26bb2504009d --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-vi-VN.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 48); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 48: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'vi-VN': { + font: { + bold: 'In Đậm', + italic: 'In Nghiêng', + underline: 'Gạch dưới', + clear: 'Bỏ định dạng', + height: 'Chiều cao dòng', + name: 'Phông chữ', + strikethrough: 'Gạch ngang', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Cỡ chữ' + }, + image: { + image: 'Hình ảnh', + insert: 'Chèn', + resizeFull: '100%', + resizeHalf: '50%', + resizeQuarter: '25%', + floatLeft: 'Trôi về trái', + floatRight: 'Trôi về phải', + floatNone: 'Không trôi', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Thả Ảnh ở vùng này', + dropImage: 'Drop image or Text', + selectFromFiles: 'Chọn từ File', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'URL', + remove: 'Xóa', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Link đến Video', + insert: 'Chèn Video', + url: 'URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)' + }, + link: { + link: 'Link', + insert: 'Chèn Link', + unlink: 'Gỡ Link', + edit: 'Sửa', + textToDisplay: 'Văn bản hiển thị', + url: 'URL', + openInNewWindow: 'Mở ở Cửa sổ mới' + }, + table: { + table: 'Bảng', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Chèn' + }, + style: { + style: 'Kiểu chữ', + p: 'Chữ thường', + blockquote: 'Đoạn trích', + pre: 'Mã Code', + h1: 'H1', + h2: 'H2', + h3: 'H3', + h4: 'H4', + h5: 'H5', + h6: 'H6' + }, + lists: { + unordered: 'Liệt kê danh sách', + ordered: 'Liệt kê theo thứ tự' + }, + options: { + help: 'Trợ giúp', + fullscreen: 'Toàn Màn hình', + codeview: 'Xem Code' + }, + paragraph: { + paragraph: 'Canh lề', + outdent: 'Dịch sang trái', + indent: 'Dịch sang phải', + left: 'Canh trái', + center: 'Canh giữa', + right: 'Canh phải', + justify: 'Canh đều' + }, + color: { + recent: 'Màu chữ', + more: 'Mở rộng', + background: 'Màu nền', + foreground: 'Màu chữ', + transparent: 'trong suốt', + setTransparent: 'Nền trong suốt', + reset: 'Thiết lập lại', + resetToDefault: 'Trở lại ban đầu' + }, + shortcut: { + shortcuts: 'Phím tắt', + close: 'Đóng', + textFormatting: 'Định dạng Văn bản', + action: 'Hành động', + paragraphFormatting: 'Định dạng', + documentStyle: 'Kiểu văn bản', + extraKeys: 'Extra keys' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Lùi lại', + redo: 'Làm lại' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-vi-VN.min.js b/admin/vendors/summernote/dist/lang/summernote-vi-VN.min.js new file mode 100644 index 0000000000000000000000000000000000000000..76e7182eb9aeec2063622023cd1b0bb231736a83 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-vi-VN.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-vi-VN.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=48)}({48:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"vi-VN":{font:{bold:"In Đậm",italic:"In Nghiêng",underline:"Gạch dưới",clear:"Bỏ định dạng",height:"Chiều cao dòng",name:"Phông chữ",strikethrough:"Gạch ngang",subscript:"Subscript",superscript:"Superscript",size:"Cỡ chữ"},image:{image:"Hình ảnh",insert:"Chèn",resizeFull:"100%",resizeHalf:"50%",resizeQuarter:"25%",floatLeft:"Trôi về trái",floatRight:"Trôi về phải",floatNone:"Không trôi",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Thả Ảnh ở vùng này",dropImage:"Drop image or Text",selectFromFiles:"Chọn từ File",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"URL",remove:"Xóa",original:"Original"},video:{video:"Video",videoLink:"Link đến Video",insert:"Chèn Video",url:"URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion và Youku)"},link:{link:"Link",insert:"Chèn Link",unlink:"Gỡ Link",edit:"Sửa",textToDisplay:"Văn bản hiển thị",url:"URL",openInNewWindow:"Mở ở Cửa sổ mới"},table:{table:"Bảng",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Chèn"},style:{style:"Kiểu chữ",p:"Chữ thường",blockquote:"Đoạn trích",pre:"Mã Code",h1:"H1",h2:"H2",h3:"H3",h4:"H4",h5:"H5",h6:"H6"},lists:{unordered:"Liệt kê danh sách",ordered:"Liệt kê theo thứ tự"},options:{help:"Trợ giúp",fullscreen:"Toàn Màn hình",codeview:"Xem Code"},paragraph:{paragraph:"Canh lề",outdent:"Dịch sang trái",indent:"Dịch sang phải",left:"Canh trái",center:"Canh giữa",right:"Canh phải",justify:"Canh đều"},color:{recent:"Màu chữ",more:"Mở rộng",background:"Màu nền",foreground:"Màu chữ",transparent:"trong suốt",setTransparent:"Nền trong suốt",reset:"Thiết lập lại",resetToDefault:"Trở lại ban đầu"},shortcut:{shortcuts:"Phím tắt",close:"Đóng",textFormatting:"Định dạng Văn bản",action:"Hành động",paragraphFormatting:"Định dạng",documentStyle:"Kiểu văn bản",extraKeys:"Extra keys"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Lùi lại",redo:"Làm lại"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-zh-CN.js b/admin/vendors/summernote/dist/lang/summernote-zh-CN.js new file mode 100644 index 0000000000000000000000000000000000000000..f3aedd94434a14c04bad483193ef632d1c492540 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-zh-CN.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 49); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 49: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'zh-CN': { + font: { + bold: '粗体', + italic: '斜体', + underline: '下划线', + clear: '清除格式', + height: '行高', + name: '字体', + strikethrough: '删除线', + subscript: '下标', + superscript: '上标', + size: '字号' + }, + image: { + image: '图片', + insert: '插入图片', + resizeFull: '缩放至 100%', + resizeHalf: '缩放至 50%', + resizeQuarter: '缩放至 25%', + floatLeft: '靠左浮动', + floatRight: '靠右浮动', + floatNone: '取消浮动', + shapeRounded: '形状: 圆角', + shapeCircle: '形状: 圆', + shapeThumbnail: '形状: 缩略图', + shapeNone: '形状: 无', + dragImageHere: '将图片拖拽至此处', + dropImage: '拖拽图片或文本', + selectFromFiles: '从本地上传', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '图片地址', + remove: '移除图片', + original: '原始图片' + }, + video: { + video: '视频', + videoLink: '视频链接', + insert: '插入视频', + url: '视频地址', + providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '链接', + insert: '插入链接', + unlink: '去除链接', + edit: '编辑链接', + textToDisplay: '显示文本', + url: '链接地址', + openInNewWindow: '在新窗口打开' + }, + table: { + table: '表格', + addRowAbove: '在上方插入行', + addRowBelow: '在下方插入行', + addColLeft: '在左侧插入列', + addColRight: '在右侧插入列', + delRow: '删除行', + delCol: '删除列', + delTable: '删除表格' + }, + hr: { + insert: '水平线' + }, + style: { + style: '样式', + p: '普通', + blockquote: '引用', + pre: '代码', + h1: '标题 1', + h2: '标题 2', + h3: '标题 3', + h4: '标题 4', + h5: '标题 5', + h6: '标题 6' + }, + lists: { + unordered: '无序列表', + ordered: '有序列表' + }, + options: { + help: '帮助', + fullscreen: '全屏', + codeview: '源代码' + }, + paragraph: { + paragraph: '段落', + outdent: '减少缩进', + indent: '增加缩进', + left: '左对齐', + center: '居中对齐', + right: '右对齐', + justify: '两端对齐' + }, + color: { + recent: '最近使用', + more: '更多', + background: '背景', + foreground: '前景', + transparent: '透明', + setTransparent: '透明', + reset: '重置', + resetToDefault: '默认' + }, + shortcut: { + shortcuts: '快捷键', + close: '关闭', + textFormatting: '文本格式', + action: '动作', + paragraphFormatting: '段落格式', + documentStyle: '文档样式', + extraKeys: '额外按键' + }, + help: { + insertParagraph: '插入段落', + undo: '撤销', + redo: '重做', + tab: '增加缩进', + untab: '减少缩进', + bold: '粗体', + italic: '斜体', + underline: '下划线', + strikethrough: '删除线', + removeFormat: '清除格式', + justifyLeft: '左对齐', + justifyCenter: '居中对齐', + justifyRight: '右对齐', + justifyFull: '两端对齐', + insertUnorderedList: '无序列表', + insertOrderedList: '有序列表', + outdent: '减少缩进', + indent: '增加缩进', + formatPara: '设置选中内容样式为 普通', + formatH1: '设置选中内容样式为 标题1', + formatH2: '设置选中内容样式为 标题2', + formatH3: '设置选中内容样式为 标题3', + formatH4: '设置选中内容样式为 标题4', + formatH5: '设置选中内容样式为 标题5', + formatH6: '设置选中内容样式为 标题6', + insertHorizontalRule: '插入水平线', + 'linkDialog.show': '显示链接对话框' + }, + history: { + undo: '撤销', + redo: '重做' + }, + specialChar: { + specialChar: '特殊字符', + select: '选取特殊字符' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-zh-CN.min.js b/admin/vendors/summernote/dist/lang/summernote-zh-CN.min.js new file mode 100644 index 0000000000000000000000000000000000000000..45bb6a8f1668d106ddef1e165fd1acd8be12a1e3 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-zh-CN.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-zh-CN.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=49)}({49:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",dropImage:"拖拽图片或文本",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片",original:"原始图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格",addRowAbove:"在上方插入行",addRowBelow:"在下方插入行",addColLeft:"在左侧插入列",addColRight:"在右侧插入列",delRow:"删除行",delCol:"删除列",delTable:"删除表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"},history:{undo:"撤销",redo:"重做"},specialChar:{specialChar:"特殊字符",select:"选取特殊字符"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-zh-TW.js b/admin/vendors/summernote/dist/lang/summernote-zh-TW.js new file mode 100644 index 0000000000000000000000000000000000000000..39ac389f08ad0b9a4e7b0e2340a0ada699c15a71 --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-zh-TW.js @@ -0,0 +1,273 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 50); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 50: +/***/ (function(module, exports) { + +(function ($) { + $.extend($.summernote.lang, { + 'zh-TW': { + font: { + bold: '粗體', + italic: '斜體', + underline: '底線', + clear: '清除格式', + height: '行高', + name: '字體', + strikethrough: '刪除線', + subscript: '下標', + superscript: '上標', + size: '字號' + }, + image: { + image: '圖片', + insert: '插入圖片', + resizeFull: '縮放至100%', + resizeHalf: '縮放至 50%', + resizeQuarter: '縮放至 25%', + floatLeft: '靠左浮動', + floatRight: '靠右浮動', + floatNone: '取消浮動', + shapeRounded: '形狀: 圓角', + shapeCircle: '形狀: 圓', + shapeThumbnail: '形狀: 縮略圖', + shapeNone: '形狀: 無', + dragImageHere: '將圖片拖曳至此處', + dropImage: 'Drop image or Text', + selectFromFiles: '從本機上傳', + maximumFileSize: '文件大小最大值', + maximumFileSizeError: '文件大小超出最大值。', + url: '圖片網址', + remove: '移除圖片', + original: 'Original' + }, + video: { + video: '影片', + videoLink: '影片連結', + insert: '插入影片', + url: '影片網址', + providers: '(優酷, Instagram, DailyMotion, Youtube等)' + }, + link: { + link: '連結', + insert: '插入連結', + unlink: '取消連結', + edit: '編輯連結', + textToDisplay: '顯示文字', + url: '連結網址', + openInNewWindow: '在新視窗開啟' + }, + table: { + table: '表格', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: '水平線' + }, + style: { + style: '樣式', + p: '一般', + blockquote: '引用區塊', + pre: '程式碼區塊', + h1: '標題 1', + h2: '標題 2', + h3: '標題 3', + h4: '標題 4', + h5: '標題 5', + h6: '標題 6' + }, + lists: { + unordered: '項目清單', + ordered: '編號清單' + }, + options: { + help: '幫助', + fullscreen: '全螢幕', + codeview: '原始碼' + }, + paragraph: { + paragraph: '段落', + outdent: '取消縮排', + indent: '增加縮排', + left: '靠右對齊', + center: '靠中對齊', + right: '靠右對齊', + justify: '左右對齊' + }, + color: { + recent: '字型顏色', + more: '更多', + background: '背景', + foreground: '前景', + transparent: '透明', + setTransparent: '透明', + reset: '重設', + resetToDefault: '默認' + }, + shortcut: { + shortcuts: '快捷鍵', + close: '關閉', + textFormatting: '文字格式', + action: '動作', + paragraphFormatting: '段落格式', + documentStyle: '文件格式', + extraKeys: '額外按鍵' + }, + help: { + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undoes the last command', + 'redo': 'Redoes the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: '復原', + redo: '取消復原' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + } + } + }); +})(jQuery); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/lang/summernote-zh-TW.min.js b/admin/vendors/summernote/dist/lang/summernote-zh-TW.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3c111abfdd3e8bb3cf12e88ab1d9d881cf217d3f --- /dev/null +++ b/admin/vendors/summernote/dist/lang/summernote-zh-TW.min.js @@ -0,0 +1,2 @@ +/*! For license information please see summernote-zh-TW.min.js.LICENSE.txt */ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=50)}({50:function(e,t){var r;(r=jQuery).extend(r.summernote.lang,{"zh-TW":{font:{bold:"粗體",italic:"斜體",underline:"底線",clear:"清除格式",height:"行高",name:"字體",strikethrough:"刪除線",subscript:"下標",superscript:"上標",size:"字號"},image:{image:"圖片",insert:"插入圖片",resizeFull:"縮放至100%",resizeHalf:"縮放至 50%",resizeQuarter:"縮放至 25%",floatLeft:"靠左浮動",floatRight:"靠右浮動",floatNone:"取消浮動",shapeRounded:"形狀: 圓角",shapeCircle:"形狀: 圓",shapeThumbnail:"形狀: 縮略圖",shapeNone:"形狀: 無",dragImageHere:"將圖片拖曳至此處",dropImage:"Drop image or Text",selectFromFiles:"從本機上傳",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"圖片網址",remove:"移除圖片",original:"Original"},video:{video:"影片",videoLink:"影片連結",insert:"插入影片",url:"影片網址",providers:"(優酷, Instagram, DailyMotion, Youtube等)"},link:{link:"連結",insert:"插入連結",unlink:"取消連結",edit:"編輯連結",textToDisplay:"顯示文字",url:"連結網址",openInNewWindow:"在新視窗開啟"},table:{table:"表格",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"水平線"},style:{style:"樣式",p:"一般",blockquote:"引用區塊",pre:"程式碼區塊",h1:"標題 1",h2:"標題 2",h3:"標題 3",h4:"標題 4",h5:"標題 5",h6:"標題 6"},lists:{unordered:"項目清單",ordered:"編號清單"},options:{help:"幫助",fullscreen:"全螢幕",codeview:"原始碼"},paragraph:{paragraph:"段落",outdent:"取消縮排",indent:"增加縮排",left:"靠右對齊",center:"靠中對齊",right:"靠右對齊",justify:"左右對齊"},color:{recent:"字型顏色",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重設",resetToDefault:"默認"},shortcut:{shortcuts:"快捷鍵",close:"關閉",textFormatting:"文字格式",action:"動作",paragraphFormatting:"段落格式",documentStyle:"文件格式",extraKeys:"額外按鍵"},help:{insertParagraph:"Insert Paragraph",undo:"Undoes the last command",redo:"Redoes the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"復原",redo:"取消復原"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"}}})}})})); \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-bs4.css b/admin/vendors/summernote/dist/summernote-bs4.css new file mode 100644 index 0000000000000000000000000000000000000000..224cec382f6d154a68a5e234f4f5e05abe129d50 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.css @@ -0,0 +1,13 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +@font-face{font-family:"summernote";font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class^=note-icon]:before,[class*=" note-icon"]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align::before{content:""}.note-icon-align-center::before{content:""}.note-icon-align-indent::before{content:""}.note-icon-align-justify::before{content:""}.note-icon-align-left::before{content:""}.note-icon-align-outdent::before{content:""}.note-icon-align-right::before{content:""}.note-icon-arrow-circle-down::before{content:""}.note-icon-arrow-circle-left::before{content:""}.note-icon-arrow-circle-right::before{content:""}.note-icon-arrow-circle-up::before{content:""}.note-icon-arrows-alt::before{content:""}.note-icon-arrows-h::before{content:""}.note-icon-arrows-v::before{content:""}.note-icon-bold::before{content:""}.note-icon-caret::before{content:""}.note-icon-chain-broken::before{content:""}.note-icon-circle::before{content:""}.note-icon-close::before{content:""}.note-icon-code::before{content:""}.note-icon-col-after::before{content:""}.note-icon-col-before::before{content:""}.note-icon-col-remove::before{content:""}.note-icon-eraser::before{content:""}.note-icon-float-left::before{content:""}.note-icon-float-none::before{content:""}.note-icon-float-right::before{content:""}.note-icon-font::before{content:""}.note-icon-frame::before{content:""}.note-icon-italic::before{content:""}.note-icon-link::before{content:""}.note-icon-magic::before{content:""}.note-icon-menu-check::before{content:""}.note-icon-minus::before{content:""}.note-icon-orderedlist::before{content:""}.note-icon-pencil::before{content:""}.note-icon-picture::before{content:""}.note-icon-question::before{content:""}.note-icon-redo::before{content:""}.note-icon-rollback::before{content:""}.note-icon-row-above::before{content:""}.note-icon-row-below::before{content:""}.note-icon-row-remove::before{content:""}.note-icon-special-character::before{content:""}.note-icon-square::before{content:""}.note-icon-strikethrough::before{content:""}.note-icon-subscript::before{content:""}.note-icon-summernote::before{content:""}.note-icon-superscript::before{content:""}.note-icon-table::before{content:""}.note-icon-text-height::before{content:""}.note-icon-trash::before{content:""}.note-icon-underline::before{content:""}.note-icon-undo::before{content:""}.note-icon-unorderedlist::before{content:""}.note-icon-video::before{content:""}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-frame,.note-editor.note-airframe{border:1px solid #00000032}.note-editor.note-frame.codeview .note-editing-area .note-editable,.note-editor.note-airframe.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable,.note-editor.note-airframe.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area,.note-editor.note-airframe .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable,.note-editor.note-airframe .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-frame .note-editing-area .note-codable,.note-editor.note-airframe .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-frame.fullscreen,.note-editor.note-airframe.fullscreen{position:fixed;top:0;left:0;width:100% !important;z-index:1050}.note-editor.note-frame.fullscreen .note-resizebar,.note-editor.note-airframe.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output,.note-editor.note-airframe .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-frame .note-status-output:empty,.note-editor.note-airframe .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-frame .note-status-output .pull-right,.note-editor.note-airframe .note-status-output .pull-right{float:right !important}.note-editor.note-frame .note-status-output .text-muted,.note-editor.note-airframe .note-status-output .text-muted{color:#777}.note-editor.note-frame .note-status-output .text-primary,.note-editor.note-airframe .note-status-output .text-primary{color:#286090}.note-editor.note-frame .note-status-output .text-success,.note-editor.note-airframe .note-status-output .text-success{color:#3c763d}.note-editor.note-frame .note-status-output .text-info,.note-editor.note-airframe .note-status-output .text-info{color:#31708f}.note-editor.note-frame .note-status-output .text-warning,.note-editor.note-airframe .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-frame .note-status-output .text-danger,.note-editor.note-airframe .note-status-output .text-danger{color:#a94442}.note-editor.note-frame .note-status-output .alert,.note-editor.note-airframe .note-status-output .alert{margin:-7px 0 0 0;padding:7px 10px 2px 10px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-frame .note-status-output .alert .note-icon,.note-editor.note-airframe .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success,.note-editor.note-airframe .note-status-output .alert-success{color:#3c763d !important;background-color:#dff0d8 !important}.note-editor.note-frame .note-status-output .alert-info,.note-editor.note-airframe .note-status-output .alert-info{color:#31708f !important;background-color:#d9edf7 !important}.note-editor.note-frame .note-status-output .alert-warning,.note-editor.note-airframe .note-status-output .alert-warning{color:#8a6d3b !important;background-color:#fcf8e3 !important}.note-editor.note-frame .note-status-output .alert-danger,.note-editor.note-airframe .note-status-output .alert-danger{color:#a94442 !important;background-color:#f2dede !important}.note-editor.note-frame .note-statusbar,.note-editor.note-airframe .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar .note-resizebar,.note-editor.note-airframe .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar.locked .note-resizebar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder,.note-editor.note-airframe .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px !important}.note-toolbar{position:relative}.note-popover .popover-content,.note-editor .note-toolbar{margin:0;padding:0 0 5px 5px}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-popover .popover-content .note-btn-group .note-table,.note-editor .note-toolbar .note-btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute !important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative !important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute !important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p{margin:0;padding:0}.note-popover .popover-content .note-color-all .note-dropdown-menu,.note-editor .note-toolbar .note-color-all .note-dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-toggle,.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .note-dropdown-menu,.note-editor .note-toolbar .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-popover .popover-content .note-para .note-dropdown-menu>div+div,.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-popover .popover-content .note-dropdown-menu,.note-editor .note-toolbar .note-dropdown-menu{min-width:160px}.note-popover .popover-content .note-dropdown-menu.right,.note-editor .note-toolbar .note-dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .note-dropdown-menu.right::before,.note-editor .note-toolbar .note-dropdown-menu.right::before{right:9px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.right::after,.note-editor .note-toolbar .note-dropdown-menu.right::after{right:10px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.note-check a i,.note-editor .note-toolbar .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-popover .popover-content .note-dropdown-menu.note-check a.checked i,.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.note-editor .note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.note-editor .note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.note-editor .note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-sizing,.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block !important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}.note-toolbar{background:#8080801d}.note-btn-group .note-btn{border-color:#00000032;padding:.28rem .65rem;font-size:13px} diff --git a/admin/vendors/summernote/dist/summernote-bs4.js b/admin/vendors/summernote/dist/summernote-bs4.js new file mode 100644 index 0000000000000000000000000000000000000000..bca767803c3bfbfd79e8fb4fdda6ad3ea03ca799 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.js @@ -0,0 +1,10234 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("jquery")); + else if(typeof define === 'function' && define.amd) + define(["jquery"], factory); + else { + var a = typeof exports === 'object' ? factory(require("jquery")) : factory(root["jQuery"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 53); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 0: +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__0__; + +/***/ }), + +/***/ 1: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + +var Renderer = /*#__PURE__*/function () { + function Renderer(markup, children, options, callback) { + _classCallCheck(this, Renderer); + + this.markup = markup; + this.children = children; + this.options = options; + this.callback = callback; + } + + _createClass(Renderer, [{ + key: "render", + value: function render($parent) { + var $node = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.markup); + + if (this.options && this.options.contents) { + $node.html(this.options.contents); + } + + if (this.options && this.options.className) { + $node.addClass(this.options.className); + } + + if (this.options && this.options.data) { + jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.options.data, function (k, v) { + $node.attr('data-' + k, v); + }); + } + + if (this.options && this.options.click) { + $node.on('click', this.options.click); + } + + if (this.children) { + var $container = $node.find('.note-children-container'); + this.children.forEach(function (child) { + child.render($container.length ? $container : $node); + }); + } + + if (this.callback) { + this.callback($node, this.options); + } + + if (this.options && this.options.callback) { + this.options.callback($node); + } + + if ($parent) { + $parent.append($node); + } + + return $node; + } + }]); + + return Renderer; +}(); + +/* harmony default export */ __webpack_exports__["a"] = ({ + create: function create(markup, callback) { + return function () { + var options = _typeof(arguments[1]) === 'object' ? arguments[1] : arguments[0]; + var children = Array.isArray(arguments[0]) ? arguments[0] : []; + + if (options && options.children) { + children = options.children; + } + + return new Renderer(markup, children, options, callback); + }; + } +}); + +/***/ }), + +/***/ 2: +/***/ (function(module, exports) { + +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; + +/* WEBPACK VAR INJECTION */}.call(this, {})) + +/***/ }), + +/***/ 3: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// CONCATENATED MODULE: ./src/js/base/summernote-en-US.js + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote || { + lang: {} +}; +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang, { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size', + sizeunit: 'Font Size Unit' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize full', + resizeHalf: 'Resize half', + resizeQuarter: 'Resize quarter', + resizeNone: 'Original size', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Remove float', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window', + useProtocol: 'Use default protocol' + }, + table: { + table: 'Table', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Text Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default', + cpSelect: 'Select' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + help: { + 'escape': 'Escape', + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undo the last command', + 'redo': 'Redo the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Undo', + redo: 'Redo' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + }, + output: { + noSelection: 'No Selection Made!' + } + } +}); +// CONCATENATED MODULE: ./src/js/base/core/env.js + +var isSupportAmd = typeof define === 'function' && __webpack_require__(2); // eslint-disable-line + +/** + * returns whether font is installed or not. + * + * @param {String} fontName + * @return {Boolean} + */ + +var genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy']; + +function validFontName(fontName) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.inArray(fontName.toLowerCase(), genericFontFamilies) === -1 ? "'".concat(fontName, "'") : fontName; +} + +function env_isFontInstalled(fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var testText = 'mmmmmmmmmmwwwww'; + var testSize = '200px'; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + context.font = testSize + " '" + testFontName + "'"; + var originalWidth = context.measureText(testText).width; + context.font = testSize + ' ' + validFontName(fontName) + ', "' + testFontName + '"'; + var width = context.measureText(testText).width; + return originalWidth !== width; +} + +var userAgent = navigator.userAgent; +var isMSIE = /MSIE|Trident/i.test(userAgent); +var browserVersion; + +if (isMSIE) { + var matches = /MSIE (\d+[.]\d+)/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } + + matches = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } +} + +var isEdge = /Edge\/\d+/.test(userAgent); +var isSupportTouch = 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; // [workaround] IE doesn't have input events for contentEditable +// - see: https://goo.gl/4bfIvA + +var inputEventName = isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; +/** + * @class core.env + * + * Object which check platform and agent + * + * @singleton + * @alternateClassName env + */ + +/* harmony default export */ var env = ({ + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: isMSIE, + isEdge: isEdge, + isFF: !isEdge && /firefox/i.test(userAgent), + isPhantom: /PhantomJS/i.test(userAgent), + isWebkit: !isEdge && /webkit/i.test(userAgent), + isChrome: !isEdge && /chrome/i.test(userAgent), + isSafari: !isEdge && /safari/i.test(userAgent) && !/chrome/i.test(userAgent), + browserVersion: browserVersion, + jqueryVersion: parseFloat(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.jquery), + isSupportAmd: isSupportAmd, + isSupportTouch: isSupportTouch, + isFontInstalled: env_isFontInstalled, + isW3CRangeSupport: !!document.createRange, + inputEventName: inputEventName, + genericFontFamilies: genericFontFamilies, + validFontName: validFontName +}); +// CONCATENATED MODULE: ./src/js/base/core/func.js + +/** + * @class core.func + * + * func utils (for high-order func's arg) + * + * @singleton + * @alternateClassName func + */ + +function eq(itemA) { + return function (itemB) { + return itemA === itemB; + }; +} + +function eq2(itemA, itemB) { + return itemA === itemB; +} + +function peq2(propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; +} + +function ok() { + return true; +} + +function fail() { + return false; +} + +function not(f) { + return function () { + return !f.apply(f, arguments); + }; +} + +function and(fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; +} + +function func_self(a) { + return a; +} + +function func_invoke(obj, method) { + return function () { + return obj[method].apply(obj, arguments); + }; +} + +var idCounter = 0; +/** + * reset globally-unique id + * + */ + +function resetUniqueId() { + idCounter = 0; +} +/** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + + +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} +/** + * returns bnd (bounds) from rect + * + * - IE Compatibility Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + + +function rect2bnd(rect) { + var $document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; +} +/** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + + +function invertObject(obj) { + var inverted = {}; + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + inverted[obj[key]] = key; + } + } + + return inverted; +} +/** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + + +function namespaceToCamel(namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function (name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); +} +/** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. + * @param {Function} func + * @param {Number} wait + * @param {Boolean} immediate + * @return {Function} + */ + + +function debounce(func, wait, immediate) { + var timeout; + return function () { + var context = this; + var args = arguments; + + var later = function later() { + timeout = null; + + if (!immediate) { + func.apply(context, args); + } + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + + if (callNow) { + func.apply(context, args); + } + }; +} +/** + * + * @param {String} url + * @return {Boolean} + */ + + +function isValidUrl(url) { + var expression = /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi; + return expression.test(url); +} + +/* harmony default export */ var func = ({ + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: func_self, + not: not, + and: and, + invoke: func_invoke, + resetUniqueId: resetUniqueId, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel, + debounce: debounce, + isValidUrl: isValidUrl +}); +// CONCATENATED MODULE: ./src/js/base/core/lists.js + +/** + * returns the first item of an array. + * + * @param {Array} array + */ + +function lists_head(array) { + return array[0]; +} +/** + * returns the last item of an array. + * + * @param {Array} array + */ + + +function lists_last(array) { + return array[array.length - 1]; +} +/** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + + +function initial(array) { + return array.slice(0, array.length - 1); +} +/** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + + +function tail(array) { + return array.slice(1); +} +/** + * returns item of array + */ + + +function find(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + var item = array[idx]; + + if (pred(item)) { + return item; + } + } +} +/** + * returns true if all of the values in the array pass the predicate truth test. + */ + + +function lists_all(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!pred(array[idx])) { + return false; + } + } + + return true; +} +/** + * returns true if the value is present in the list. + */ + + +function contains(array, item) { + if (array && array.length && item) { + if (array.indexOf) { + return array.indexOf(item) !== -1; + } else if (array.contains) { + // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains` + return array.contains(item); + } + } + + return false; +} +/** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + + +function sum(array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); +} +/** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + + +function from(collection) { + var result = []; + var length = collection.length; + var idx = -1; + + while (++idx < length) { + result[idx] = collection[idx]; + } + + return result; +} +/** + * returns whether list is empty or not + */ + + +function lists_isEmpty(array) { + return !array || !array.length; +} +/** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + + +function clusterBy(array, fn) { + if (!array.length) { + return []; + } + + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = lists_last(memo); + + if (fn(lists_last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + + return memo; + }, [[lists_head(array)]]); +} +/** + * returns a copy of the array with all false values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + + +function compact(array) { + var aResult = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (array[idx]) { + aResult.push(array[idx]); + } + } + + return aResult; +} +/** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + + +function unique(array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; +} +/** + * returns next item. + * @param {Array} array + */ + + +function lists_next(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx + 1]; + } + + return null; +} +/** + * returns prev item. + * @param {Array} array + */ + + +function prev(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx - 1]; + } + + return null; +} +/** + * @class core.list + * + * list utils + * + * @singleton + * @alternateClassName list + */ + + +/* harmony default export */ var lists = ({ + head: lists_head, + last: lists_last, + initial: initial, + tail: tail, + prev: prev, + next: lists_next, + find: find, + contains: contains, + all: lists_all, + sum: sum, + from: from, + isEmpty: lists_isEmpty, + clusterBy: clusterBy, + compact: compact, + unique: unique +}); +// CONCATENATED MODULE: ./src/js/base/core/dom.js + + + + +var NBSP_CHAR = String.fromCharCode(160); +var ZERO_WIDTH_NBSP_CHAR = "\uFEFF"; +/** + * @method isEditable + * + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + +function isEditable(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-editable'); +} +/** + * @method isControlSizing + * + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function isControlSizing(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-control-sizing'); +} +/** + * @method makePredByNodeName + * + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {Function} + */ + + +function makePredByNodeName(nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; +} +/** + * @method isText + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + + +function isText(node) { + return node && node.nodeType === 3; +} +/** + * @method isElement + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is element(1) + */ + + +function isElement(node) { + return node && node.nodeType === 1; +} +/** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + + +function isVoid(node) { + return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase()); +} + +function isPara(node) { + if (isEditable(node)) { + return false; + } // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + + + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +function isHeading(node) { + return node && /^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +var isPre = makePredByNodeName('PRE'); +var isLi = makePredByNodeName('LI'); + +function isPurePara(node) { + return isPara(node) && !isLi(node); +} + +var isTable = makePredByNodeName('TABLE'); +var isData = makePredByNodeName('DATA'); + +function dom_isInline(node) { + return !isBodyContainer(node) && !isList(node) && !isHr(node) && !isPara(node) && !isTable(node) && !isBlockquote(node) && !isData(node); +} + +function isList(node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); +} + +var isHr = makePredByNodeName('HR'); + +function dom_isCell(node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); +} + +var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + +function isBodyContainer(node) { + return dom_isCell(node) || isBlockquote(node) || isEditable(node); +} + +var isAnchor = makePredByNodeName('A'); + +function isParaInline(node) { + return dom_isInline(node) && !!dom_ancestor(node, isPara); +} + +function isBodyInline(node) { + return dom_isInline(node) && !dom_ancestor(node, isPara); +} + +var isBody = makePredByNodeName('BODY'); +/** + * returns whether nodeB is closest sibling of nodeA + * + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + +function isClosestSibling(nodeA, nodeB) { + return nodeA.nextSibling === nodeB || nodeA.previousSibling === nodeB; +} +/** + * returns array of closest siblings with node + * + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + + +function withClosestSiblings(node, pred) { + pred = pred || func.ok; + var siblings = []; + + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + + siblings.push(node); + + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + + return siblings; +} +/** + * blank HTML for cursor position + * - [workaround] old IE only works with + * - [workaround] IE11 and other browser works with bogus br + */ + + +var blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>'; +/** + * @method nodeLength + * + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + +function nodeLength(node) { + if (isText(node)) { + return node.nodeValue.length; + } + + if (node) { + return node.childNodes.length; + } + + return 0; +} +/** + * returns whether deepest child node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function deepestChildIsEmpty(node) { + do { + if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break; + } while (node = node.firstElementChild); + + return dom_isEmpty(node); +} +/** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function dom_isEmpty(node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex) <p><br></p>, <span><br></span> + return true; + } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') { + // ex) <p></p>, <span></span> + return true; + } + + return false; +} +/** + * padding blankHTML if node is empty (for cursor position) + */ + + +function paddingBlankHTML(node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } +} +/** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function dom_ancestor(node, pred) { + while (node) { + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function singleChildAncestor(node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { + break; + } + + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listAncestor(node, pred) { + pred = pred || func.fail; + var ancestors = []; + dom_ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; +} +/** + * find farthest ancestor predicate hit + */ + + +function lastAncestor(node, pred) { + var ancestors = listAncestor(node); + return lists.last(ancestors.filter(pred)); +} +/** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + + +function dom_commonAncestor(nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + + for (var n = nodeB; n; n = n.parentNode) { + if (ancestors.indexOf(n) > -1) return n; + } + + return null; // difference document area +} +/** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listPrev(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.previousSibling; + } + + return nodes; +} +/** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listNext(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.nextSibling; + } + + return nodes; +} +/** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listDescendant(node, pred) { + var descendants = []; + pred = pred || func.ok; // start DFS(depth first search) with node + + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendants.push(current); + } + + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendants; +} +/** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + + +function wrap(node, wrapperName) { + var parent = node.parentNode; + var wrapper = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<' + wrapperName + '>')[0]; + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; +} +/** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + + +function insertAfter(node, preceding) { + var next = preceding.nextSibling; + var parent = preceding.parentNode; + + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + + return node; +} +/** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + + +function appendChildNodes(node, aChild) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; +} +/** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isLeftEdgePoint(point) { + return point.offset === 0; +} +/** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isRightEdgePoint(point) { + return point.offset === nodeLength(point.node); +} +/** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isEdgePoint(point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); +} +/** + * returns whether node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function dom_isLeftEdgeOf(node, ancestor) { + while (node && node !== ancestor) { + if (dom_position(node) !== 0) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgeOf(node, ancestor) { + if (!ancestor) { + return false; + } + + while (node && node !== ancestor) { + if (dom_position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether point is left edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isLeftEdgePointOf(point, ancestor) { + return isLeftEdgePoint(point) && dom_isLeftEdgeOf(point.node, ancestor); +} +/** + * returns whether point is right edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgePointOf(point, ancestor) { + return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor); +} +/** + * returns offset from parent. + * + * @param {Node} node + */ + + +function dom_position(node) { + var offset = 0; + + while (node = node.previousSibling) { + offset += 1; + } + + return offset; +} + +function hasChildren(node) { + return !!(node && node.childNodes && node.childNodes.length); +} +/** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_prevPoint(point, isSkipInnerOffset) { + var node; + var offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = dom_position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_nextPoint(point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint with empty node + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function nextPointWithEmptyNode(point, isSkipInnerOffset) { + var node, offset; // if node is empty string node, return current node's sibling. + + if (dom_isEmpty(point.node)) { + node = point.node.nextSibling; + offset = 0; + return { + node: node, + offset: offset + }; + } + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } // if next node is editable, return current node's sibling node. + + + if (isEditable(node)) { + node = point.node.nextSibling; + offset = 0; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + + if (dom_isEmpty(node)) { + return null; + } + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + + if (dom_isEmpty(node)) { + return null; + } + } + + return { + node: node, + offset: offset + }; +} +/* +* returns the next Text node index or 0 if not found. +*/ + + +function getNextTextNode(actual) { + if (!actual.nextSibling) return undefined; + if (actual.parent !== actual.nextSibling.parent) return undefined; + if (isText(actual.nextSibling)) return actual.nextSibling; + return getNextTextNode(actual.nextSibling); +} +/** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + + +function isSamePoint(pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; +} +/** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isVisiblePoint(point) { + if (isText(point.node) || !hasChildren(point.node) || dom_isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; +} +/** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function prevPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_prevPoint(point); + } + + return null; +} +/** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function nextPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_nextPoint(point); + } + + return null; +} +/** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isCharPoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && ch !== ' ' && ch !== NBSP_CHAR; +} +/** + * returns whether point has space or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isSpacePoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch === ' ' || ch === NBSP_CHAR; +} +/** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + + +function walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && startPoint.node !== point.node && endPoint.node !== point.node; + point = nextPointWithEmptyNode(point, isSkipOffset); + } +} +/** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + + +function makeOffsetPath(ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return ancestors.map(dom_position).reverse(); +} +/** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + + +function fromOffsetPath(ancestor, offsets) { + var current = ancestor; + + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + + return current; +} +/** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @param {Boolean} [options.isDiscardEmptySplits] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitNode(point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + var isDiscardEmptySplits = options && options.isDiscardEmptySplits; + + if (isDiscardEmptySplits) { + isSkipPaddingBlankHTML = true; + } // edge case + + + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } // split #text + + + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + if (isDiscardEmptySplits) { + if (dom_isEmpty(point.node)) { + remove(point.node); + } + + if (dom_isEmpty(clone)) { + remove(clone); + return point.node.nextSibling; + } + } + + return clone; + } +} +/** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitTree(root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function (node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom_position(node) : nodeLength(parent) + }, options); + }); +} +/** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + + +function splitPoint(point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = lists.last(ancestors) || point.node; + var splitRoot, container; + + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } // if splitRoot is exists, split with splitTree + + + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); // if container is point.node, find pivot with point.offset + + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; +} + +function dom_create(nodeName) { + return document.createElement(nodeName); +} + +function createText(text) { + return document.createTextNode(text); +} +/** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + + +function remove(node, isRemoveChild) { + if (!node || !node.parentNode) { + return; + } + + if (node.removeNode) { + return node.removeNode(isRemoveChild); + } + + var parent = node.parentNode; + + if (!isRemoveChild) { + var nodes = []; + + for (var i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (var _i = 0, _len = nodes.length; _i < _len; _i++) { + parent.insertBefore(nodes[_i], node); + } + } + + parent.removeChild(node); +} +/** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + + +function removeWhile(node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } +} +/** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + + +function dom_replace(node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = dom_create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, lists.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + return newNode; +} + +var isTextarea = makePredByNodeName('TEXTAREA'); +/** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + +function dom_value($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + + return val; +} +/** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + + +function dom_html($node, isNewlineOnBlock) { + var markup = dom_value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + return match + (isEndOfInlineContainer || isBlockNode ? '\n' : ''); + }); + markup = markup.trim(); + } + + return markup; +} + +function posFromPlaceholder(placeholder) { + var $placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(placeholder); + var pos = $placeholder.offset(); + var height = $placeholder.outerHeight(true); // include margin + + return { + left: pos.left, + top: pos.top + height + }; +} + +function attachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.on(key, events[key]); + }); +} + +function detachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.off(key, events[key]); + }); +} +/** + * @method isCustomStyleTag + * + * assert if a node contains a "note-styletag" class, + * which implies that's a custom-made style tag node + * + * @param {Node} an HTML DOM node + */ + + +function isCustomStyleTag(node) { + return node && !isText(node) && lists.contains(node.classList, 'note-styletag'); +} + +/* harmony default export */ var dom = ({ + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + + /** @property {String} blank */ + blank: blankHTML, + + /** @property {String} emptyPara */ + emptyPara: "<p>".concat(blankHTML, "</p>"), + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + isText: isText, + isElement: isElement, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isHeading: isHeading, + isInline: dom_isInline, + isBlock: func.not(dom_isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isPre: isPre, + isList: isList, + isTable: isTable, + isData: isData, + isCell: dom_isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + deepestChildIsEmpty: deepestChildIsEmpty, + isEmpty: dom_isEmpty, + isEmptyAnchor: func.and(isAnchor, dom_isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: dom_isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + isLeftEdgePointOf: isLeftEdgePointOf, + isRightEdgePointOf: isRightEdgePointOf, + prevPoint: dom_prevPoint, + nextPoint: dom_nextPoint, + nextPointWithEmptyNode: nextPointWithEmptyNode, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + isSpacePoint: isSpacePoint, + walkPoint: walkPoint, + ancestor: dom_ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: dom_commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: dom_position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: dom_create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: dom_replace, + html: dom_html, + value: dom_value, + posFromPlaceholder: posFromPlaceholder, + attachEvents: attachEvents, + detachEvents: detachEvents, + isCustomStyleTag: isCustomStyleTag +}); +// CONCATENATED MODULE: ./src/js/base/Context.js +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Context_Context = /*#__PURE__*/function () { + /** + * @param {jQuery} $note + * @param {Object} options + */ + function Context($note, options) { + _classCallCheck(this, Context); + + this.$note = $note; + this.memos = {}; + this.modules = {}; + this.layoutInfo = {}; + this.options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, options); // init ui with options + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui_template(this.options); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.initialize(); + } + /** + * create layout and initialize modules and other resources + */ + + + _createClass(Context, [{ + key: "initialize", + value: function initialize() { + this.layoutInfo = this.ui.createLayout(this.$note); + + this._initialize(); + + this.$note.hide(); + return this; + } + /** + * destroy modules and other resources and remove layout + */ + + }, { + key: "destroy", + value: function destroy() { + this._destroy(); + + this.$note.removeData('summernote'); + this.ui.removeLayout(this.$note, this.layoutInfo); + } + /** + * destory modules and other resources and initialize it again + */ + + }, { + key: "reset", + value: function reset() { + var disabled = this.isDisabled(); + this.code(dom.emptyPara); + + this._destroy(); + + this._initialize(); + + if (disabled) { + this.disable(); + } + } + }, { + key: "_initialize", + value: function _initialize() { + var _this = this; + + // set own id + this.options.id = func.uniqueId(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now()); // set default container for tooltips, popovers, and dialogs + + this.options.container = this.options.container || this.layoutInfo.editor; // add optional buttons + + var buttons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.buttons); + Object.keys(buttons).forEach(function (key) { + _this.memo('button.' + key, buttons[key]); + }); + var modules = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.modules, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.plugins || {}); // add and initialize modules + + Object.keys(modules).forEach(function (key) { + _this.module(key, modules[key], true); + }); + Object.keys(this.modules).forEach(function (key) { + _this.initializeModule(key); + }); + } + }, { + key: "_destroy", + value: function _destroy() { + var _this2 = this; + + // destroy modules with reversed order + Object.keys(this.modules).reverse().forEach(function (key) { + _this2.removeModule(key); + }); + Object.keys(this.memos).forEach(function (key) { + _this2.removeMemo(key); + }); // trigger custom onDestroy callback + + this.triggerEvent('destroy', this); + } + }, { + key: "code", + value: function code(html) { + var isActivated = this.invoke('codeview.isActivated'); + + if (html === undefined) { + this.invoke('codeview.sync'); + return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + } else { + if (isActivated) { + this.invoke('codeview.sync', html); + } else { + this.layoutInfo.editable.html(html); + } + + this.$note.val(html); + this.triggerEvent('change', html, this.layoutInfo.editable); + } + } + }, { + key: "isDisabled", + value: function isDisabled() { + return this.layoutInfo.editable.attr('contenteditable') === 'false'; + } + }, { + key: "enable", + value: function enable() { + this.layoutInfo.editable.attr('contenteditable', true); + this.invoke('toolbar.activate', true); + this.triggerEvent('disable', false); + this.options.editing = true; + } + }, { + key: "disable", + value: function disable() { + // close codeview if codeview is opend + if (this.invoke('codeview.isActivated')) { + this.invoke('codeview.deactivate'); + } + + this.layoutInfo.editable.attr('contenteditable', false); + this.options.editing = false; + this.invoke('toolbar.deactivate', true); + this.triggerEvent('disable', true); + } + }, { + key: "triggerEvent", + value: function triggerEvent() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')]; + + if (callback) { + callback.apply(this.$note[0], args); + } + + this.$note.trigger('summernote.' + namespace, args); + } + }, { + key: "initializeModule", + value: function initializeModule(key) { + var module = this.modules[key]; + module.shouldInitialize = module.shouldInitialize || func.ok; + + if (!module.shouldInitialize()) { + return; + } // initialize module + + + if (module.initialize) { + module.initialize(); + } // attach events + + + if (module.events) { + dom.attachEvents(this.$note, module.events); + } + } + }, { + key: "module", + value: function module(key, ModuleClass, withoutIntialize) { + if (arguments.length === 1) { + return this.modules[key]; + } + + this.modules[key] = new ModuleClass(this); + + if (!withoutIntialize) { + this.initializeModule(key); + } + } + }, { + key: "removeModule", + value: function removeModule(key) { + var module = this.modules[key]; + + if (module.shouldInitialize()) { + if (module.events) { + dom.detachEvents(this.$note, module.events); + } + + if (module.destroy) { + module.destroy(); + } + } + + delete this.modules[key]; + } + }, { + key: "memo", + value: function memo(key, obj) { + if (arguments.length === 1) { + return this.memos[key]; + } + + this.memos[key] = obj; + } + }, { + key: "removeMemo", + value: function removeMemo(key) { + if (this.memos[key] && this.memos[key].destroy) { + this.memos[key].destroy(); + } + + delete this.memos[key]; + } + /** + * Some buttons need to change their visual style immediately once they get pressed + */ + + }, { + key: "createInvokeHandlerAndUpdateState", + value: function createInvokeHandlerAndUpdateState(namespace, value) { + var _this3 = this; + + return function (event) { + _this3.createInvokeHandler(namespace, value)(event); + + _this3.invoke('buttons.updateCurrentStyle'); + }; + } + }, { + key: "createInvokeHandler", + value: function createInvokeHandler(namespace, value) { + var _this4 = this; + + return function (event) { + event.preventDefault(); + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + + _this4.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target); + }; + } + }, { + key: "invoke", + value: function invoke() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var splits = namespace.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && lists.head(splits); + var methodName = hasSeparator ? lists.last(splits) : lists.head(splits); + var module = this.modules[moduleName || 'editor']; + + if (!moduleName && this[methodName]) { + return this[methodName].apply(this, args); + } else if (module && module[methodName] && module.shouldInitialize()) { + return module[methodName].apply(module, args); + } + } + }]); + + return Context; +}(); + + +// CONCATENATED MODULE: ./src/js/summernote.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.extend({ + /** + * Summernote API + * + * @param {Object|String} + * @return {this} + */ + summernote: function summernote() { + var type = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.type(lists.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + var options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options, hasInitOptions ? lists.head(arguments) : {}); // Update options + + options.langInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang[options.lang]); + options.icons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options.icons, options.icons); + options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip; + this.each(function (idx, note) { + var $note = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(note); + + if (!$note.data('summernote')) { + var context = new Context_Context($note, options); + $note.data('summernote', context); + $note.data('summernote').triggerEvent('init', context.layoutInfo); + } + }); + var $note = this.first(); + + if ($note.length) { + var context = $note.data('summernote'); + + if (isExternalAPICalled) { + return context.invoke.apply(context, lists.from(arguments)); + } else if (options.focus) { + context.invoke('editor.focus'); + } + } + + return this; + } +}); +// CONCATENATED MODULE: ./src/js/base/core/range.js +function range_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function range_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function range_createClass(Constructor, protoProps, staticProps) { if (protoProps) range_defineProperties(Constructor.prototype, protoProps); if (staticProps) range_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +/** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + +function textRangeToPoint(textRange, isStart) { + var container = textRange.parentElement(); + var offset; + var tester = document.body.createTextRange(); + var prevContainer; + var childNodes = lists.from(container.childNodes); + + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + + tester.moveToElementText(childNodes[offset]); + + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(); + var curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } // [workaround] enforce IE to re-reference curTextNode, hack + + + var dummy = curTextNode.nodeValue; // eslint-disable-line + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; +} +/** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + + +function pointToTextRange(point) { + var textRangeInfo = function textRangeInfo(container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = lists.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; +} +/** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + + +var range_WrappedRange = /*#__PURE__*/function () { + function WrappedRange(sc, so, ec, eo) { + range_classCallCheck(this, WrappedRange); + + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; // isOnEditable: judge whether range is on editable or not + + this.isOnEditable = this.makeIsOn(dom.isEditable); // isOnList: judge whether range is on list node or not + + this.isOnList = this.makeIsOn(dom.isList); // isOnAnchor: judge whether range is on anchor node or not + + this.isOnAnchor = this.makeIsOn(dom.isAnchor); // isOnCell: judge whether range is on cell node or not + + this.isOnCell = this.makeIsOn(dom.isCell); // isOnData: judge whether range is on data node or not + + this.isOnData = this.makeIsOn(dom.isData); + } // nativeRange: get nativeRange from sc, so, ec, eo + + + range_createClass(WrappedRange, [{ + key: "nativeRange", + value: function nativeRange() { + if (env.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(this.sc, this.so); + w3cRange.setEnd(this.ec, this.eo); + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: this.sc, + offset: this.so + }); + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: this.ec, + offset: this.eo + })); + return textRange; + } + } + }, { + key: "getPoints", + value: function getPoints() { + return { + sc: this.sc, + so: this.so, + ec: this.ec, + eo: this.eo + }; + } + }, { + key: "getStartPoint", + value: function getStartPoint() { + return { + node: this.sc, + offset: this.so + }; + } + }, { + key: "getEndPoint", + value: function getEndPoint() { + return { + node: this.ec, + offset: this.eo + }; + } + /** + * select update visible range + */ + + }, { + key: "select", + value: function select() { + var nativeRng = this.nativeRange(); + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + } + /** + * Moves the scrollbar to start container(sc) of current range + * + * @return {WrappedRange} + */ + + }, { + key: "scrollIntoView", + value: function scrollIntoView(container) { + var height = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(container).height(); + + if (container.scrollTop + height < this.sc.offsetTop) { + container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop); + } + + return this; + } + /** + * @return {WrappedRange} + */ + + }, { + key: "normalize", + value: function normalize() { + /** + * @param {BoundaryPoint} point + * @param {Boolean} isLeftToRight - true: prefer to choose right node + * - false: prefer to choose left node + * @return {BoundaryPoint} + */ + var getVisiblePoint = function getVisiblePoint(point, isLeftToRight) { + if (!point) { + return point; + } // Just use the given point [XXX:Adhoc] + // - case 01. if the point is on the middle of the node + // - case 02. if the point is on the right edge and prefer to choose left node + // - case 03. if the point is on the left edge and prefer to choose right node + // - case 04. if the point is on the right edge and prefer to choose right node but the node is void + // - case 05. if the point is on the left edge and prefer to choose left node but the node is void + // - case 06. if the point is on the block node and there is no children + + + if (dom.isVisiblePoint(point)) { + if (!dom.isEdgePoint(point) || dom.isRightEdgePoint(point) && !isLeftToRight || dom.isLeftEdgePoint(point) && isLeftToRight || dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling) || dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling) || dom.isBlock(point.node) && dom.isEmpty(point.node)) { + return point; + } + } // point on block's edge + + + var block = dom.ancestor(point.node, dom.isBlock); + var hasRightNode = false; + + if (!hasRightNode) { + var prevPoint = dom.prevPoint(point) || { + node: null + }; + hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight; + } + + var hasLeftNode = false; + + if (!hasLeftNode) { + var _nextPoint = dom.nextPoint(point) || { + node: null + }; + + hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(_nextPoint.node)) && isLeftToRight; + } + + if (hasRightNode || hasLeftNode) { + // returns point already on visible point + if (dom.isVisiblePoint(point)) { + return point; + } // reverse direction + + + isLeftToRight = !isLeftToRight; + } + + var nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint) : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint); + return nextPoint || point; + }; + + var endPoint = getVisiblePoint(this.getEndPoint(), false); + var startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true); + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + + }, { + key: "nodes", + value: function nodes(pred, options) { + pred = pred || func.ok; + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; // TODO compare points and sort + + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + var nodes = []; + var leftEdgeNodes = []; + dom.walkPoint(startPoint, endPoint, function (point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + + if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + return lists.unique(nodes); + } + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + + }, { + key: "commonAncestor", + value: function commonAncestor() { + return dom.commonAncestor(this.sc, this.ec); + } + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + + }, { + key: "expand", + value: function expand(pred) { + var startAncestor = dom.ancestor(this.sc, pred); + var endAncestor = dom.ancestor(this.ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(this.sc, this.so, this.ec, this.eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + + }, { + key: "collapse", + value: function collapse(isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(this.sc, this.so, this.sc, this.so); + } else { + return new WrappedRange(this.ec, this.eo, this.ec, this.eo); + } + } + /** + * splitText on range + */ + + }, { + key: "splitText", + value: function splitText() { + var isSameContainer = this.sc === this.ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) { + this.ec.splitText(this.eo); + } + + if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = this.sc.splitText(this.so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = this.eo - this.so; + } + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * delete contents on range + * @return {WrappedRange} + */ + + }, { + key: "deleteContents", + value: function deleteContents() { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); // find new cursor point + + var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + return !lists.contains(nodes, point.node); + }); + var emptyParents = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(nodes, function (idx, node) { + // find empty parents + var parent = node.parentNode; + + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + + dom.remove(node, false); + }); // remove empty parents + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyParents, function (idx, node) { + dom.remove(node, false); + }); + return new WrappedRange(point.node, point.offset, point.node, point.offset).normalize(); + } + /** + * makeIsOn: return isOn(pred) function + */ + + }, { + key: "makeIsOn", + value: function makeIsOn(pred) { + return function () { + var ancestor = dom.ancestor(this.sc, pred); + return !!ancestor && ancestor === dom.ancestor(this.ec, pred); + }; + } + /** + * @param {Function} pred + * @return {Boolean} + */ + + }, { + key: "isLeftEdgeOf", + value: function isLeftEdgeOf(pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + } + /** + * returns whether range was collapsed or not + */ + + }, { + key: "isCollapsed", + value: function isCollapsed() { + return this.sc === this.ec && this.so === this.eo; + } + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + + }, { + key: "wrapBodyInlineWithPara", + value: function wrapBodyInlineWithPara() { + if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) { + this.sc.innerHTML = dom.emptyPara; + return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0); + } + /** + * [workaround] firefox often create range on not visible point. so normalize here. + * - firefox: |<p>text</p>| + * - chrome: <p>|text|</p> + */ + + + var rng = this.normalize(); + + if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) { + return rng; + } // find inline top ancestor + + + var topAncestor; + + if (dom.isInline(rng.sc)) { + var ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline)); + topAncestor = lists.last(ancestors); + + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so]; + } + } else { + topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0]; + } + + if (topAncestor) { + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); // wrap with paragraph + + if (inlineSiblings.length) { + var para = dom.wrap(lists.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, lists.tail(inlineSiblings)); + } + } + + return this.normalize(); + } + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + + }, { + key: "insertNode", + value: function insertNode(node) { + var rng = this; + + if (dom.isText(node) || dom.isInline(node)) { + rng = this.wrapBodyInlineWithPara().deleteContents(); + } + + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + + if (dom.isEmpty(info.rightNode) && dom.isPara(node)) { + info.rightNode.parentNode.removeChild(info.rightNode); + } + } else { + info.container.appendChild(node); + } + + return node; + } + /** + * insert html at current cursor + */ + + }, { + key: "pasteHTML", + value: function pasteHTML(markup) { + markup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.trim(markup); + var contentsContainer = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').html(markup)[0]; + var childNodes = lists.from(contentsContainer.childNodes); // const rng = this.wrapBodyInlineWithPara().deleteContents(); + + var rng = this; + var reversed = false; + + if (rng.so >= 0) { + childNodes = childNodes.reverse(); + reversed = true; + } + + childNodes = childNodes.map(function (childNode) { + return rng.insertNode(childNode); + }); + + if (reversed) { + childNodes = childNodes.reverse(); + } + + return childNodes; + } + /** + * returns text in range + * + * @return {String} + */ + + }, { + key: "toString", + value: function toString() { + var nativeRng = this.nativeRange(); + return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + } + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordRange", + value: function getWordRange(findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordsRange", + value: function getWordsRange(findAfter) { + var endPoint = this.getEndPoint(); + + var isNotTextPoint = function isNotTextPoint(point) { + return !dom.isCharPoint(point) && !dom.isSpacePoint(point); + }; + + if (isNotTextPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, isNotTextPoint); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor that match with a Regex + * + * example: + * range: 'hi @Peter Pan' + * regex: '/@[a-z ]+/i' + * return range: '@Peter Pan' + * + * @param {RegExp} [regex] + * @return {WrappedRange|null} + */ + + }, { + key: "getWordsMatchRange", + value: function getWordsMatchRange(regex) { + var endPoint = this.getEndPoint(); + var startPoint = dom.prevPointUntil(endPoint, function (point) { + if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) { + return true; + } + + var rng = new WrappedRange(point.node, point.offset, endPoint.node, endPoint.offset); + var result = regex.exec(rng.toString()); + return result && result.index === 0; + }); + var rng = new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + var text = rng.toString(); + var result = regex.exec(text); + + if (result && result[0].length === text.length) { + return rng; + } else { + return null; + } + } + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + + }, { + key: "bookmark", + value: function bookmark(editable) { + return { + s: { + path: dom.makeOffsetPath(editable, this.sc), + offset: this.so + }, + e: { + path: dom.makeOffsetPath(editable, this.ec), + offset: this.eo + } + }; + } + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + + }, { + key: "paraBookmark", + value: function paraBookmark(paras) { + return { + s: { + path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)), + offset: this.so + }, + e: { + path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)), + offset: this.eo + } + }; + } + /** + * getClientRects + * @return {Rect[]} + */ + + }, { + key: "getClientRects", + value: function getClientRects() { + var nativeRng = this.nativeRange(); + return nativeRng.getClientRects(); + } + }]); + + return WrappedRange; +}(); +/** + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + */ + + +/* harmony default export */ var range = ({ + /** + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create: function create(sc, so, ec, eo) { + if (arguments.length === 4) { + return new range_WrappedRange(sc, so, ec, eo); + } else if (arguments.length === 2) { + // collapsed + ec = sc; + eo = so; + return new range_WrappedRange(sc, so, ec, eo); + } else { + var wrappedRange = this.createFromSelection(); + + if (!wrappedRange && arguments.length === 1) { + var bodyElement = arguments[0]; + + if (dom.isEditable(bodyElement)) { + bodyElement = bodyElement.lastChild; + } + + return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML); + } + + return wrappedRange; + } + }, + createFromBodyElement: function createFromBodyElement(bodyElement) { + var isCollapseToStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var wrappedRange = this.createFromNode(bodyElement); + return wrappedRange.collapse(isCollapseToStart); + }, + createFromSelection: function createFromSelection() { + var sc, so, ec, eo; + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. + // We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { + // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + var startPoint = textRangeToPoint(textRangeStart, true); + var endPoint = textRangeToPoint(textRangeEnd, false); // same visible point case: range was collapsed. + + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function createFromNode(node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); // browsers can't target a picture or void node + + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function createFromNodeBefore(node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function createFromNodeAfter(node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark: function createFromBookmark(editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function createFromParaBookmark(bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path); + return new range_WrappedRange(sc, so, ec, eo); + } +}); +// CONCATENATED MODULE: ./src/js/base/core/key.js + + +var KEY_MAP = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'ESCAPE': 27, + 'SPACE': 32, + 'DELETE': 46, + // Arrow + 'LEFT': 37, + 'UP': 38, + 'RIGHT': 39, + 'DOWN': 40, + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'V': 86, + 'Y': 89, + 'Z': 90, + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221, + // Navigation + 'HOME': 36, + 'END': 35, + 'PAGEUP': 33, + 'PAGEDOWN': 34 +}; +/** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + +/* harmony default export */ var core_key = ({ + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function isEdit(keyCode) { + return lists.contains([KEY_MAP.BACKSPACE, KEY_MAP.TAB, KEY_MAP.ENTER, KEY_MAP.SPACE, KEY_MAP.DELETE], keyCode); + }, + + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function isMove(keyCode) { + return lists.contains([KEY_MAP.LEFT, KEY_MAP.UP, KEY_MAP.RIGHT, KEY_MAP.DOWN], keyCode); + }, + + /** + * @method isNavigation + * + * @param {Number} keyCode + * @return {Boolean} + */ + isNavigation: function isNavigation(keyCode) { + return lists.contains([KEY_MAP.HOME, KEY_MAP.END, KEY_MAP.PAGEUP, KEY_MAP.PAGEDOWN], keyCode); + }, + + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(KEY_MAP), + code: KEY_MAP +}); +// CONCATENATED MODULE: ./src/js/base/core/async.js + +/** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: dataUrl + */ + +function readFileAsDataURL(file) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(new FileReader(), { + onload: function onload(e) { + var dataURL = e.target.result; + deferred.resolve(dataURL); + }, + onerror: function onerror(err) { + deferred.reject(err); + } + }).readAsDataURL(file); + }).promise(); +} +/** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} url + * @return {Promise} - then: $image + */ + +function createImage(url) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $img = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<img>'); + $img.one('load', function () { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function () { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr('src', url); + }).promise(); +} +// CONCATENATED MODULE: ./src/js/base/editing/History.js +function History_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function History_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function History_createClass(Constructor, protoProps, staticProps) { if (protoProps) History_defineProperties(Constructor.prototype, protoProps); if (staticProps) History_defineProperties(Constructor, staticProps); return Constructor; } + + + +var History_History = /*#__PURE__*/function () { + function History(context) { + History_classCallCheck(this, History); + + this.stack = []; + this.stackOffset = -1; + this.context = context; + this.$editable = context.layoutInfo.editable; + this.editable = this.$editable[0]; + } + + History_createClass(History, [{ + key: "makeSnapshot", + value: function makeSnapshot() { + var rng = range.create(this.editable); + var emptyBookmark = { + s: { + path: [], + offset: 0 + }, + e: { + path: [], + offset: 0 + } + }; + return { + contents: this.$editable.html(), + bookmark: rng && rng.isOnEditable() ? rng.bookmark(this.editable) : emptyBookmark + }; + } + }, { + key: "applySnapshot", + value: function applySnapshot(snapshot) { + if (snapshot.contents !== null) { + this.$editable.html(snapshot.contents); + } + + if (snapshot.bookmark !== null) { + range.createFromBookmark(this.editable, snapshot.bookmark).select(); + } + } + /** + * @method rewind + * Rewinds the history stack back to the first snapshot taken. + * Leaves the stack intact, so that "Redo" can still be used. + */ + + }, { + key: "rewind", + value: function rewind() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } // Return to the first available snapshot. + + + this.stackOffset = 0; // Apply that snapshot. + + this.applySnapshot(this.stack[this.stackOffset]); + } + /** + * @method commit + * Resets history stack, but keeps current editor's content. + */ + + }, { + key: "commit", + value: function commit() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * @method reset + * Resets the history stack completely; reverting to an empty editor. + */ + + }, { + key: "reset", + value: function reset() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Clear the editable area. + + this.$editable.html(''); // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } + + if (this.stackOffset > 0) { + this.stackOffset--; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + if (this.stack.length - 1 > this.stackOffset) { + this.stackOffset++; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * recorded undo + */ + + }, { + key: "recordUndo", + value: function recordUndo() { + this.stackOffset++; // Wash out stack after stackOffset + + if (this.stack.length > this.stackOffset) { + this.stack = this.stack.slice(0, this.stackOffset); + } // Create new snapshot and push it to the end + + + this.stack.push(this.makeSnapshot()); // If the stack size reachs to the limit, then slice it + + if (this.stack.length > this.context.options.historyLimit) { + this.stack.shift(); + this.stackOffset -= 1; + } + } + }]); + + return History; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Style.js +function Style_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Style_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Style_createClass(Constructor, protoProps, staticProps) { if (protoProps) Style_defineProperties(Constructor.prototype, protoProps); if (staticProps) Style_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Style_Style = /*#__PURE__*/function () { + function Style() { + Style_classCallCheck(this, Style); + } + + Style_createClass(Style, [{ + key: "jQueryCSS", + + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + value: function jQueryCSS($obj, propertyNames) { + if (env.jqueryVersion < 1.9) { + var result = {}; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(propertyNames, function (idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + + return $obj.css(propertyNames); + } + /** + * returns style object from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "fromNode", + value: function fromNode($node) { + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = this.jQueryCSS($node, properties) || {}; + var fontSize = $node[0].style.fontSize || styleInfo['font-size']; + styleInfo['font-size'] = parseInt(fontSize, 10); + styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/); + return styleInfo; + } + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + + }, { + key: "stylePara", + value: function stylePara(rng, styleInfo) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css(styleInfo); + }); + } + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + + }, { + key: "styleNodes", + value: function styleNodes(rng, options) { + rng = rng.splitText(); + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = rng.nodes(dom.isText, { + fullyContains: true + }).map(function (text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); // compose with partial contains predication + + pred = func.and(pred, function (node) { + return lists.contains(nodesInRange, node); + }); + } + + return nodes.map(function (node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = lists.head(siblings); + var tails = lists.tail(siblings); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(tails, function (idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return lists.head(siblings); + }); + } else { + return nodes; + } + } + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @return {Object} - object contains style properties. + */ + + }, { + key: "current", + value: function current(rng) { + var $cont = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc); + var styleInfo = this.fromNode($cont); // document.queryCommandState for toggle state + // [workaround] prevent Firefox nsresult: "0x80004005 (NS_ERROR_FAILURE)" + + try { + styleInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(styleInfo, { + 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal', + 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal', + 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal', + 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal', + 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal', + 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal', + 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'] + }); + } catch (e) {} // eslint-disable-next-line + // list-style-type to list-style(unordered, ordered) + + + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + return styleInfo; + } + }]); + + return Style; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Bullet.js +function Bullet_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Bullet_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Bullet_createClass(Constructor, protoProps, staticProps) { if (protoProps) Bullet_defineProperties(Constructor.prototype, protoProps); if (staticProps) Bullet_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Bullet_Bullet = /*#__PURE__*/function () { + function Bullet() { + Bullet_classCallCheck(this, Bullet); + } + + Bullet_createClass(Bullet, [{ + key: "insertOrderedList", + + /** + * toggle ordered list + */ + value: function insertOrderedList(editable) { + this.toggleList('OL', editable); + } + /** + * toggle unordered list + */ + + }, { + key: "insertUnorderedList", + value: function insertUnorderedList(editable) { + this.toggleList('UL', editable); + } + /** + * indent + */ + + }, { + key: "indent", + value: function indent(editable) { + var _this = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + var previousList = _this.findList(head.previousSibling); + + if (previousList) { + paras.map(function (para) { + return previousList.appendChild(para); + }); + } else { + _this.wrapList(paras, head.parentNode.nodeName); + + paras.map(function (para) { + return para.parentNode; + }).map(function (para) { + return _this.appendToPrevious(para); + }); + } + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + rng.select(); + } + /** + * outdent + */ + + }, { + key: "outdent", + value: function outdent(editable) { + var _this2 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + _this2.releaseList([paras]); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + val = parseInt(val, 10) || 0; + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + rng.select(); + } + /** + * toggle list + * + * @param {String} listName - OL or UL + */ + + }, { + key: "toggleList", + value: function toggleList(listName, editable) { + var _this3 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var bookmark = rng.paraBookmark(paras); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); // paragraph to list + + if (lists.find(paras, dom.isPurePara)) { + var wrappedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + wrappedParas = wrappedParas.concat(_this3.wrapList(paras, listName)); + }); + paras = wrappedParas; // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function (listNode) { + return !external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.nodeName(listNode, listName); + }); + + if (diffLists.length) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(diffLists, function (idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + } + /** + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + + }, { + key: "wrapList", + value: function wrapList(paras, listName) { + var head = lists.head(paras); + var last = lists.last(paras); + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); // P to LI + + paras = paras.map(function (para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); // append to list(<ul>, <ol>) + + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, lists.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + } + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + + }, { + key: "releaseList", + value: function releaseList(clustereds, isEscapseToBody) { + var _this4 = this; + + var releasedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + var last = lists.last(paras); + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode; + var parentItem = headList.parentNode; + + if (headList.parentNode.nodeName === 'LI') { + paras.map(function (para) { + var newList = _this4.findNextSiblings(para); + + if (parentItem.nextSibling) { + parentItem.parentNode.insertBefore(para, parentItem.nextSibling); + } else { + parentItem.parentNode.appendChild(para); + } + + if (newList.length) { + _this4.wrapList(newList, headList.nodeName); + + para.appendChild(newList[0].parentNode); + } + }); + + if (headList.children.length === 0) { + parentItem.removeChild(headList); + } + + if (parentItem.childNodes.length === 0) { + parentItem.parentNode.removeChild(parentItem); + } + } else { + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : lists.from(middleList.childNodes).filter(dom.isLi); // LI to P + + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = paras.map(function (para) { + return dom.replace(para, 'P'); + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(lists.from(paras).reverse(), function (idx, para) { + dom.insertAfter(para, headList); + }); // remove empty lists + + var rootLists = lists.compact([headList, middleList, lastList]); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rootLists, function (idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(listNodes.reverse(), function (idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + } + + releasedParas = releasedParas.concat(paras); + }); + return releasedParas; + } + /** + * @method appendToPrevious + * + * Appends list to previous list item, if + * none exist it wraps the list in a new list item. + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "appendToPrevious", + value: function appendToPrevious(node) { + return node.previousSibling ? dom.appendChildNodes(node.previousSibling, [node]) : this.wrapList([node], 'LI'); + } + /** + * @method findList + * + * Finds an existing list in list item + * + * @param {HTMLNode} ListItem + * @return {Array[]} + */ + + }, { + key: "findList", + value: function findList(node) { + return node ? lists.find(node.children, function (child) { + return ['OL', 'UL'].indexOf(child.nodeName) > -1; + }) : null; + } + /** + * @method findNextSiblings + * + * Finds all list item siblings that follow it + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "findNextSiblings", + value: function findNextSiblings(node) { + var siblings = []; + + while (node.nextSibling) { + siblings.push(node.nextSibling); + node = node.nextSibling; + } + + return siblings; + } + }]); + + return Bullet; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Typing.js +function Typing_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Typing_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Typing_createClass(Constructor, protoProps, staticProps) { if (protoProps) Typing_defineProperties(Constructor.prototype, protoProps); if (staticProps) Typing_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class editing.Typing + * + * Typing + * + */ + +var Typing_Typing = /*#__PURE__*/function () { + function Typing(context) { + Typing_classCallCheck(this, Typing); + + // a Bullet instance to toggle lists off + this.bullet = new Bullet_Bullet(); + this.options = context.options; + } + /** + * insert tab + * + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + + + Typing_createClass(Typing, [{ + key: "insertTab", + value: function insertTab(rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + rng = range.create(tab, tabsize); + rng.select(); + } + /** + * insert paragraph + * + * @param {jQuery} $editable + * @param {WrappedRange} rng Can be used in unit tests to "mock" the range + * + * blockquoteBreakingLevel + * 0 - No break, the new paragraph remains inside the quote + * 1 - Break the first blockquote in the ancestors list + * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default) + */ + + }, { + key: "insertParagraph", + value: function insertParagraph(editable, rng) { + rng = rng || range.create(editable); // deleteContents on range. + + rng = rng.deleteContents(); // Wrap range if it needs to be wrapped by paragraph + + rng = rng.wrapBodyInlineWithPara(); // finding paragraph + + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + var nextPara; // on paragraph: split paragraph + + if (splitRoot) { + // if it is an empty line with li + if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) { + // toggle UL/OL and escape + this.bullet.toggleList(splitRoot.parentNode.nodeName); + return; + } else { + var blockquote = null; + + if (this.options.blockquoteBreakingLevel === 1) { + blockquote = dom.ancestor(splitRoot, dom.isBlockquote); + } else if (this.options.blockquoteBreakingLevel === 2) { + blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote); + } + + if (blockquote) { + // We're inside a blockquote and options ask us to break it + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; // If the split is right before a <br>, remove it so that there's no "empty line" + // after the split in the new blockquote created + + if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(rng.sc.nextSibling).remove(); + } + + var split = dom.splitTree(blockquote, rng.getStartPoint(), { + isDiscardEmptySplits: true + }); + + if (split) { + split.parentNode.insertBefore(nextPara, split); + } else { + dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote + } + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); // not a blockquote, just insert the paragraph + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyAnchors, function (idx, anchor) { + dom.remove(anchor); + }); // replace empty heading, pre or custom-made styleTag with P tag + + if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) { + nextPara = dom.replace(nextPara, 'p'); + } + } + } // no paragraph: insert empty paragraph + + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; + + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select().scrollIntoView(editable); + } + }]); + + return Typing; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Table.js +function Table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Table_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Table_createClass(Constructor, protoProps, staticProps) { if (protoProps) Table_defineProperties(Constructor.prototype, protoProps); if (staticProps) Table_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class Create a virtual table to create what actions to do in change. + * @param {object} startPoint Cell selected to apply change. + * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where + * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction + * @param {object} domTable Dom element of table to make changes. + */ + +var TableResultAction = function TableResultAction(startPoint, where, action, domTable) { + var _startPoint = { + 'colPos': 0, + 'rowPos': 0 + }; + var _virtualTable = []; + var _actionCellList = []; /// /////////////////////////////////////////// + // Private functions + /// /////////////////////////////////////////// + + /** + * Set the startPoint of action. + */ + + function setStartPoint() { + if (!startPoint || !startPoint.tagName || startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th') { + // Impossible to identify start Cell point + return; + } + + _startPoint.colPos = startPoint.cellIndex; + + if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') { + // Impossible to identify start Row point + return; + } + + _startPoint.rowPos = startPoint.parentElement.rowIndex; + } + /** + * Define virtual table position info object. + * + * @param {int} rowIndex Index position in line of virtual table. + * @param {int} cellIndex Index position in column of virtual table. + * @param {object} baseRow Row affected by this position. + * @param {object} baseCell Cell affected by this position. + * @param {bool} isSpan Inform if it is an span cell/row. + */ + + + function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) { + var objPosition = { + 'baseRow': baseRow, + 'baseCell': baseCell, + 'isRowSpan': isRowSpan, + 'isColSpan': isColSpan, + 'isVirtual': isVirtualCell + }; + + if (!_virtualTable[rowIndex]) { + _virtualTable[rowIndex] = []; + } + + _virtualTable[rowIndex][cellIndex] = objPosition; + } + /** + * Create action cell object. + * + * @param {object} virtualTableCellObj Object of specific position on virtual table. + * @param {enum} resultAction Action to be applied in that item. + */ + + + function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) { + return { + 'baseCell': virtualTableCellObj.baseCell, + 'action': resultAction, + 'virtualTable': { + 'rowIndex': virtualRowPosition, + 'cellIndex': virtualColPosition + } + }; + } + /** + * Recover free index of row to append Cell. + * + * @param {int} rowIndex Index of row to find free space. + * @param {int} cellIndex Index of cell to find free space in table. + */ + + + function recoverCellIndex(rowIndex, cellIndex) { + if (!_virtualTable[rowIndex]) { + return cellIndex; + } + + if (!_virtualTable[rowIndex][cellIndex]) { + return cellIndex; + } + + var newCellIndex = cellIndex; + + while (_virtualTable[rowIndex][newCellIndex]) { + newCellIndex++; + + if (!_virtualTable[rowIndex][newCellIndex]) { + return newCellIndex; + } + } + } + /** + * Recover info about row and cell and add information to virtual table. + * + * @param {object} row Row to recover information. + * @param {object} cell Cell to recover information. + */ + + + function addCellInfoToVirtual(row, cell) { + var cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex); + var cellHasColspan = cell.colSpan > 1; + var cellHasRowspan = cell.rowSpan > 1; + var isThisSelectedCell = row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos; + setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false); // Add span rows to virtual Table. + + var rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0; + + if (rowspanNumber > 1) { + for (var rp = 1; rp < rowspanNumber; rp++) { + var rowspanIndex = row.rowIndex + rp; + adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell); + setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true); + } + } // Add span cols to virtual table. + + + var colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0; + + if (colspanNumber > 1) { + for (var cp = 1; cp < colspanNumber; cp++) { + var cellspanIndex = recoverCellIndex(row.rowIndex, cellIndex + cp); + adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell); + setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true); + } + } + } + /** + * Process validation and adjust of start point if needed + * + * @param {int} rowIndex + * @param {int} cellIndex + * @param {object} cell + * @param {bool} isSelectedCell + */ + + + function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) { + if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) { + _startPoint.colPos++; + } + } + /** + * Create virtual table of cells with all cells, including span cells. + */ + + + function createVirtualTable() { + var rows = domTable.rows; + + for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) { + var cells = rows[rowIndex].cells; + + for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) { + addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]); + } + } + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getDeleteResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + + case TableResultAction.where.Row: + if (!cell.isVirtual && cell.isRowSpan) { + return TableResultAction.resultAction.AddCell; + } else if (cell.isRowSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + } + + return TableResultAction.resultAction.RemoveCell; + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getAddResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isRowSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + + case TableResultAction.where.Row: + if (cell.isRowSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isColSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + } + + return TableResultAction.resultAction.AddCell; + } + + function init() { + setStartPoint(); + createVirtualTable(); + } /// /////////////////////////////////////////// + // Public functions + /// /////////////////////////////////////////// + + /** + * Recover array os what to do in table. + */ + + + this.getActionList = function () { + var fixedRow = where === TableResultAction.where.Row ? _startPoint.rowPos : -1; + var fixedCol = where === TableResultAction.where.Column ? _startPoint.colPos : -1; + var actualPosition = 0; + var canContinue = true; + + while (canContinue) { + var rowPosition = fixedRow >= 0 ? fixedRow : actualPosition; + var colPosition = fixedCol >= 0 ? fixedCol : actualPosition; + var row = _virtualTable[rowPosition]; + + if (!row) { + canContinue = false; + return _actionCellList; + } + + var cell = row[colPosition]; + + if (!cell) { + canContinue = false; + return _actionCellList; + } // Define action to be applied in this cell + + + var resultAction = TableResultAction.resultAction.Ignore; + + switch (action) { + case TableResultAction.requestAction.Add: + resultAction = getAddResultActionToCell(cell); + break; + + case TableResultAction.requestAction.Delete: + resultAction = getDeleteResultActionToCell(cell); + break; + } + + _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition)); + + actualPosition++; + } + + return _actionCellList; + }; + + init(); +}; +/** +* +* Where action occours enum. +*/ + + +TableResultAction.where = { + 'Row': 0, + 'Column': 1 +}; +/** +* +* Requested action to apply enum. +*/ + +TableResultAction.requestAction = { + 'Add': 0, + 'Delete': 1 +}; +/** +* +* Result action to be executed enum. +*/ + +TableResultAction.resultAction = { + 'Ignore': 0, + 'SubtractSpanCount': 1, + 'RemoveCell': 2, + 'AddCell': 3, + 'SumSpanCount': 4 +}; +/** + * + * @class editing.Table + * + * Table + * + */ + +var Table_Table = /*#__PURE__*/function () { + function Table() { + Table_classCallCheck(this, Table); + } + + Table_createClass(Table, [{ + key: "tab", + + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + value: function tab(rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + var nextCell = lists[isShift ? 'prev' : 'next'](cells, cell); + + if (nextCell) { + range.create(nextCell, 0).select(); + } + } + /** + * Add a new row + * + * @param {WrappedRange} rng + * @param {String} position (top/bottom) + * @return {Node} + */ + + }, { + key: "addRow", + value: function addRow(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var currentTr = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var trAttributes = this.recoverAttributes(currentTr); + var html = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<tr' + trAttributes + '></tr>'); + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var idCell = 0; idCell < actions.length; idCell++) { + var currentCell = actions[idCell]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + html.append('<td' + tdAttributes + '>' + dom.blank + '</td>'); + break; + + case TableResultAction.resultAction.SumSpanCount: + { + if (position === 'top') { + var baseCellTr = currentCell.baseCell.parent; + var isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex; + + if (isTopFromRowSpan) { + var newTd = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html(); + html.append(newTd); + break; + } + } + + var rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10); + rowspanNumber++; + currentCell.baseCell.setAttribute('rowSpan', rowspanNumber); + } + break; + } + } + + if (position === 'top') { + currentTr.before(html); + } else { + var cellHasRowspan = cell.rowSpan > 1; + + if (cellHasRowspan) { + var lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).parent().find('tr')[lastTrIndex]).after(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(html)); + return; + } + + currentTr.after(html); + } + } + /** + * Add a new col + * + * @param {WrappedRange} rng + * @param {String} position (left/right) + * @return {Node} + */ + + }, { + key: "addCol", + value: function addCol(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var rowsGroup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).siblings(); + rowsGroup.push(row); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + var currentCell = actions[actionIndex]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + if (position === 'right') { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + + case TableResultAction.resultAction.SumSpanCount: + if (position === 'right') { + var colspanNumber = parseInt(currentCell.baseCell.colSpan, 10); + colspanNumber++; + currentCell.baseCell.setAttribute('colSpan', colspanNumber); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + } + } + } + /* + * Copy attributes from element. + * + * @param {object} Element to recover attributes. + * @return {string} Copied string elements. + */ + + }, { + key: "recoverAttributes", + value: function recoverAttributes(el) { + var resultStr = ''; + + if (!el) { + return resultStr; + } + + var attrList = el.attributes || []; + + for (var i = 0; i < attrList.length; i++) { + if (attrList[i].name.toLowerCase() === 'id') { + continue; + } + + if (attrList[i].specified) { + resultStr += ' ' + attrList[i].name + '=\'' + attrList[i].value + '\''; + } + } + + return resultStr; + } + /** + * Delete current row + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteRow", + value: function deleteRow(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var rowPos = row[0].rowIndex; + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + var baseCell = actions[actionIndex].baseCell; + var virtualPosition = actions[actionIndex].virtualTable; + var hasRowspan = baseCell.rowSpan && baseCell.rowSpan > 1; + var rowspanNumber = hasRowspan ? parseInt(baseCell.rowSpan, 10) : 0; + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.AddCell: + { + var nextRow = row.next('tr')[0]; + + if (!nextRow) { + continue; + } + + var cloneRow = row[0].cells[cellPos]; + + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber); + nextRow.cells[cellPos].innerHTML = ''; + } else if (rowspanNumber === 2) { + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].removeAttribute('rowSpan'); + nextRow.cells[cellPos].innerHTML = ''; + } + } + } + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + baseCell.setAttribute('rowSpan', rowspanNumber); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (rowspanNumber === 2) { + baseCell.removeAttribute('rowSpan'); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + + continue; + + case TableResultAction.resultAction.RemoveCell: + // Do not need remove cell because row will be deleted. + continue; + } + } + + row.remove(); + } + /** + * Delete current col + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteCol", + value: function deleteCol(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + { + var baseCell = actions[actionIndex].baseCell; + var hasColspan = baseCell.colSpan && baseCell.colSpan > 1; + + if (hasColspan) { + var colspanNumber = baseCell.colSpan ? parseInt(baseCell.colSpan, 10) : 0; + + if (colspanNumber > 2) { + colspanNumber--; + baseCell.setAttribute('colSpan', colspanNumber); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (colspanNumber === 2) { + baseCell.removeAttribute('colSpan'); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + } + continue; + + case TableResultAction.resultAction.RemoveCell: + dom.remove(actions[actionIndex].baseCell, true); + continue; + } + } + } + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + + }, { + key: "createTable", + value: function createTable(colCount, rowCount, options) { + var tds = []; + var tdHTML; + + for (var idxCol = 0; idxCol < colCount; idxCol++) { + tds.push('<td>' + dom.blank + '</td>'); + } + + tdHTML = tds.join(''); + var trs = []; + var trHTML; + + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + + trHTML = trs.join(''); + var $table = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<table>' + trHTML + '</table>'); + + if (options && options.tableClassName) { + $table.addClass(options.tableClassName); + } + + return $table[0]; + } + /** + * Delete current table + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteTable", + value: function deleteTable(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('table').remove(); + } + }]); + + return Table; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Editor.js +function Editor_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Editor_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Editor_createClass(Constructor, protoProps, staticProps) { if (protoProps) Editor_defineProperties(Constructor.prototype, protoProps); if (staticProps) Editor_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + + + + + + + + +var KEY_BOGUS = 'bogus'; +/** + * @class Editor + */ + +var Editor_Editor = /*#__PURE__*/function () { + function Editor(context) { + var _this = this; + + Editor_classCallCheck(this, Editor); + + this.context = context; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.editable = this.$editable[0]; + this.lastRange = null; + this.snapshot = null; + this.style = new Style_Style(); + this.table = new Table_Table(); + this.typing = new Typing_Typing(context); + this.bullet = new Bullet_Bullet(); + this.history = new History_History(context); + this.context.memo('help.escape', this.lang.help.escape); + this.context.memo('help.undo', this.lang.help.undo); + this.context.memo('help.redo', this.lang.help.redo); + this.context.memo('help.tab', this.lang.help.tab); + this.context.memo('help.untab', this.lang.help.untab); + this.context.memo('help.insertParagraph', this.lang.help.insertParagraph); + this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList); + this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList); + this.context.memo('help.indent', this.lang.help.indent); + this.context.memo('help.outdent', this.lang.help.outdent); + this.context.memo('help.formatPara', this.lang.help.formatPara); + this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule); + this.context.memo('help.fontName', this.lang.help.fontName); // native commands(with execCommand), generate function for execCommand + + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'formatBlock', 'removeFormat', 'backColor']; + + for (var idx = 0, len = commands.length; idx < len; idx++) { + this[commands[idx]] = function (sCmd) { + return function (value) { + _this.beforeCommand(); + + document.execCommand(sCmd, false, value); + + _this.afterCommand(true); + }; + }(commands[idx]); + + this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]); + } + + this.fontName = this.wrapCommand(function (value) { + return _this.fontStyling('font-family', env.validFontName(value)); + }); + this.fontSize = this.wrapCommand(function (value) { + var unit = _this.currentStyle()['font-size-unit']; + + return _this.fontStyling('font-size', value + unit); + }); + this.fontSizeUnit = this.wrapCommand(function (value) { + var size = _this.currentStyle()['font-size']; + + return _this.fontStyling('font-size', size + value); + }); + + for (var _idx = 1; _idx <= 6; _idx++) { + this['formatH' + _idx] = function (idx) { + return function () { + _this.formatBlock('H' + idx); + }; + }(_idx); + + this.context.memo('help.formatH' + _idx, this.lang.help['formatH' + _idx]); + } + + this.insertParagraph = this.wrapCommand(function () { + _this.typing.insertParagraph(_this.editable); + }); + this.insertOrderedList = this.wrapCommand(function () { + _this.bullet.insertOrderedList(_this.editable); + }); + this.insertUnorderedList = this.wrapCommand(function () { + _this.bullet.insertUnorderedList(_this.editable); + }); + this.indent = this.wrapCommand(function () { + _this.bullet.indent(_this.editable); + }); + this.outdent = this.wrapCommand(function () { + _this.bullet.outdent(_this.editable); + }); + /** + * insertNode + * insert node + * @param {Node} node + */ + + this.insertNode = this.wrapCommand(function (node) { + if (_this.isLimited(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).text().length)) { + return; + } + + var rng = _this.getLastRange(); + + rng.insertNode(node); + + _this.setLastRange(range.createFromNodeAfter(node).select()); + }); + /** + * insert text + * @param {String} text + */ + + this.insertText = this.wrapCommand(function (text) { + if (_this.isLimited(text.length)) { + return; + } + + var rng = _this.getLastRange(); + + var textNode = rng.insertNode(dom.createText(text)); + + _this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select()); + }); + /** + * paste HTML + * @param {String} markup + */ + + this.pasteHTML = this.wrapCommand(function (markup) { + if (_this.isLimited(markup.length)) { + return; + } + + markup = _this.context.invoke('codeview.purify', markup); + + var contents = _this.getLastRange().pasteHTML(markup); + + _this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select()); + }); + /** + * formatBlock + * + * @param {String} tagName + */ + + this.formatBlock = this.wrapCommand(function (tagName, $target) { + var onApplyCustomStyle = _this.options.callbacks.onApplyCustomStyle; + + if (onApplyCustomStyle) { + onApplyCustomStyle.call(_this, $target, _this.context, _this.onFormatBlock); + } else { + _this.onFormatBlock(tagName, $target); + } + }); + /** + * insert horizontal rule + */ + + this.insertHorizontalRule = this.wrapCommand(function () { + var hrNode = _this.getLastRange().insertNode(dom.create('HR')); + + if (hrNode.nextSibling) { + _this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select()); + } + }); + /** + * lineHeight + * @param {String} value + */ + + this.lineHeight = this.wrapCommand(function (value) { + _this.style.stylePara(_this.getLastRange(), { + lineHeight: value + }); + }); + /** + * create link (command) + * + * @param {Object} linkInfo + */ + + this.createLink = this.wrapCommand(function (linkInfo) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.isNewWindow; + var checkProtocol = linkInfo.checkProtocol; + + var rng = linkInfo.range || _this.getLastRange(); + + var additionalTextLength = linkText.length - rng.toString().length; + + if (additionalTextLength > 0 && _this.isLimited(additionalTextLength)) { + return; + } + + var isTextChanged = rng.toString() !== linkText; // handle spaced urls from input + + if (typeof linkUrl === 'string') { + linkUrl = linkUrl.trim(); + } + + if (_this.options.onCreateLink) { + linkUrl = _this.options.onCreateLink(linkUrl); + } else if (checkProtocol) { + // if url doesn't have any protocol and not even a relative or a label, use http:// as default + linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(linkUrl) ? linkUrl : _this.options.defaultProtocol + linkUrl; + } + + var anchors = []; + + if (isTextChanged) { + rng = rng.deleteContents(); + var anchor = rng.insertNode(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = _this.style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(anchors, function (idx, anchor) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href', linkUrl); + + if (isNewWindow) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('target', '_blank'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).removeAttr('target'); + } + }); + + _this.setLastRange(_this.createRangeFromList(anchors).select()); + }); + /** + * setting color + * + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + + this.color = this.wrapCommand(function (colorInfo) { + var foreColor = colorInfo.foreColor; + var backColor = colorInfo.backColor; + + if (foreColor) { + document.execCommand('foreColor', false, foreColor); + } + + if (backColor) { + document.execCommand('backColor', false, backColor); + } + }); + /** + * Set foreground color + * + * @param {String} colorCode foreground color code + */ + + this.foreColor = this.wrapCommand(function (colorInfo) { + document.execCommand('foreColor', false, colorInfo); + }); + /** + * insert Table + * + * @param {String} dimension of table (ex : "5x5") + */ + + this.insertTable = this.wrapCommand(function (dim) { + var dimension = dim.split('x'); + + var rng = _this.getLastRange().deleteContents(); + + rng.insertNode(_this.table.createTable(dimension[0], dimension[1], _this.options)); + }); + /** + * remove media object and Figure Elements if media object is img with Figure. + */ + + this.removeMedia = this.wrapCommand(function () { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).parent(); + + if ($target.closest('figure').length) { + $target.closest('figure').remove(); + } else { + $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).detach(); + } + + _this.context.triggerEvent('media.delete', $target, _this.$editable); + }); + /** + * float me + * + * @param {String} value + */ + + this.floatMe = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + $target.toggleClass('note-float-left', value === 'left'); + $target.toggleClass('note-float-right', value === 'right'); + $target.css('float', value === 'none' ? '' : value); + }); + /** + * resize overlay element + * @param {String} value + */ + + this.resize = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + value = parseFloat(value); + + if (value === 0) { + $target.css('width', ''); + } else { + $target.css({ + width: value * 100 + '%', + height: '' + }); + } + }); + } + + Editor_createClass(Editor, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + // bind custom events + this.$editable.on('keydown', function (event) { + if (event.keyCode === core_key.code.ENTER) { + _this2.context.triggerEvent('enter', event); + } + + _this2.context.triggerEvent('keydown', event); // keep a snapshot to limit text on input event + + + _this2.snapshot = _this2.history.makeSnapshot(); + _this2.hasKeyShortCut = false; + + if (!event.isDefaultPrevented()) { + if (_this2.options.shortcuts) { + _this2.hasKeyShortCut = _this2.handleKeyMap(event); + } else { + _this2.preventDefaultEditableShortCuts(event); + } + } + + if (_this2.isLimited(1, event)) { + var lastRange = _this2.getLastRange(); + + if (lastRange.eo - lastRange.so === 0) { + return false; + } + } + + _this2.setLastRange(); // record undo in the key event except keyMap. + + + if (_this2.options.recordEveryKeystroke) { + if (_this2.hasKeyShortCut === false) { + _this2.history.recordUndo(); + } + } + }).on('keyup', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('keyup', event); + }).on('focus', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('focus', event); + }).on('blur', function (event) { + _this2.context.triggerEvent('blur', event); + }).on('mousedown', function (event) { + _this2.context.triggerEvent('mousedown', event); + }).on('mouseup', function (event) { + _this2.setLastRange(); + + _this2.history.recordUndo(); + + _this2.context.triggerEvent('mouseup', event); + }).on('scroll', function (event) { + _this2.context.triggerEvent('scroll', event); + }).on('paste', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('paste', event); + }).on('input', function () { + // To limit composition characters (e.g. Korean) + if (_this2.isLimited(0) && _this2.snapshot) { + _this2.history.applySnapshot(_this2.snapshot); + } + }); + this.$editable.attr('spellcheck', this.options.spellCheck); + this.$editable.attr('autocorrect', this.options.spellCheck); + + if (this.options.disableGrammar) { + this.$editable.attr('data-gramm', false); + } // init content before set event + + + this.$editable.html(dom.html(this.$note) || dom.emptyPara); + this.$editable.on(env.inputEventName, func.debounce(function () { + _this2.context.triggerEvent('change', _this2.$editable.html(), _this2.$editable); + }, 10)); + this.$editable.on('focusin', function (event) { + _this2.context.triggerEvent('focusin', event); + }).on('focusout', function (event) { + _this2.context.triggerEvent('focusout', event); + }); + + if (this.options.airMode) { + if (this.options.overrideContextMenu) { + this.$editor.on('contextmenu', function (event) { + _this2.context.triggerEvent('contextmenu', event); + + return false; + }); + } + } else { + if (this.options.width) { + this.$editor.outerWidth(this.options.width); + } + + if (this.options.height) { + this.$editable.outerHeight(this.options.height); + } + + if (this.options.maxHeight) { + this.$editable.css('max-height', this.options.maxHeight); + } + + if (this.options.minHeight) { + this.$editable.css('min-height', this.options.minHeight); + } + } + + this.history.recordUndo(); + this.setLastRange(); + } + }, { + key: "destroy", + value: function destroy() { + this.$editable.off(); + } + }, { + key: "handleKeyMap", + value: function handleKeyMap(event) { + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + var keys = []; + + if (event.metaKey) { + keys.push('CMD'); + } + + if (event.ctrlKey && !event.altKey) { + keys.push('CTRL'); + } + + if (event.shiftKey) { + keys.push('SHIFT'); + } + + var keyName = core_key.nameFromCode[event.keyCode]; + + if (keyName) { + keys.push(keyName); + } + + var eventName = keyMap[keys.join('+')]; + + if (keyName === 'TAB' && !this.options.tabDisable) { + this.afterCommand(); + } else if (eventName) { + if (this.context.invoke(eventName) !== false) { + event.preventDefault(); // if keyMap action was invoked + + return true; + } + } else if (core_key.isEdit(event.keyCode)) { + this.afterCommand(); + } + + return false; + } + }, { + key: "preventDefaultEditableShortCuts", + value: function preventDefaultEditableShortCuts(event) { + // B(Bold, 66) / I(Italic, 73) / U(Underline, 85) + if ((event.ctrlKey || event.metaKey) && lists.contains([66, 73, 85], event.keyCode)) { + event.preventDefault(); + } + } + }, { + key: "isLimited", + value: function isLimited(pad, event) { + pad = pad || 0; + + if (typeof event !== 'undefined') { + if (core_key.isMove(event.keyCode) || core_key.isNavigation(event.keyCode) || event.ctrlKey || event.metaKey || lists.contains([core_key.code.BACKSPACE, core_key.code.DELETE], event.keyCode)) { + return false; + } + } + + if (this.options.maxTextLength > 0) { + if (this.$editable.text().length + pad > this.options.maxTextLength) { + return true; + } + } + + return false; + } + /** + * create range + * @return {WrappedRange} + */ + + }, { + key: "createRange", + value: function createRange() { + this.focus(); + this.setLastRange(); + return this.getLastRange(); + } + /** + * create a new range from the list of elements + * + * @param {list} dom element list + * @return {WrappedRange} + */ + + }, { + key: "createRangeFromList", + value: function createRangeFromList(lst) { + var startRange = range.createFromNodeBefore(lists.head(lst)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(lists.last(lst)); + var endPoint = endRange.getEndPoint(); + return range.create(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * set the last range + * + * if given rng is exist, set rng as the last range + * or create a new range at the end of the document + * + * @param {WrappedRange} rng + */ + + }, { + key: "setLastRange", + value: function setLastRange(rng) { + if (rng) { + this.lastRange = rng; + } else { + this.lastRange = range.create(this.editable); + + if (external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.lastRange.sc).closest('.note-editable').length === 0) { + this.lastRange = range.createFromBodyElement(this.editable); + } + } + } + /** + * get the last range + * + * if there is a saved last range, return it + * or create a new range and return it + * + * @return {WrappedRange} + */ + + }, { + key: "getLastRange", + value: function getLastRange() { + if (!this.lastRange) { + this.setLastRange(); + } + + return this.lastRange; + } + /** + * saveRange + * + * save current range + * + * @param {Boolean} [thenCollapse=false] + */ + + }, { + key: "saveRange", + value: function saveRange(thenCollapse) { + if (thenCollapse) { + this.getLastRange().collapse().select(); + } + } + /** + * restoreRange + * + * restore lately range + */ + + }, { + key: "restoreRange", + value: function restoreRange() { + if (this.lastRange) { + this.lastRange.select(); + this.focus(); + } + } + }, { + key: "saveTarget", + value: function saveTarget(node) { + this.$editable.data('target', node); + } + }, { + key: "clearTarget", + value: function clearTarget() { + this.$editable.removeData('target'); + } + }, { + key: "restoreTarget", + value: function restoreTarget() { + return this.$editable.data('target'); + } + /** + * currentStyle + * + * current style + * @return {Object|Boolean} unfocus + */ + + }, { + key: "currentStyle", + value: function currentStyle() { + var rng = range.create(); + + if (rng) { + rng = rng.normalize(); + } + + return rng ? this.style.current(rng) : this.style.fromNode(this.$editable); + } + /** + * style from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "styleFromNode", + value: function styleFromNode($node) { + return this.style.fromNode($node); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.undo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /* + * commit + */ + + }, { + key: "commit", + value: function commit() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.commit(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.redo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * before command + */ + + }, { + key: "beforeCommand", + value: function beforeCommand() { + this.context.triggerEvent('before.command', this.$editable.html()); // Set styleWithCSS before run a command + + document.execCommand('styleWithCSS', false, this.options.styleWithCSS); // keep focus on editable before command execution + + this.focus(); + } + /** + * after command + * @param {Boolean} isPreventTrigger + */ + + }, { + key: "afterCommand", + value: function afterCommand(isPreventTrigger) { + this.normalizeContent(); + this.history.recordUndo(); + + if (!isPreventTrigger) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + } + /** + * handle tab key + */ + + }, { + key: "tab", + value: function tab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng); + } else { + if (this.options.tabSize === 0) { + return false; + } + + if (!this.isLimited(this.options.tabSize)) { + this.beforeCommand(); + this.typing.insertTab(rng, this.options.tabSize); + this.afterCommand(); + } + } + } + /** + * handle shift+tab key + */ + + }, { + key: "untab", + value: function untab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng, true); + } else { + if (this.options.tabSize === 0) { + return false; + } + } + } + /** + * run given function between beforeCommand and afterCommand + */ + + }, { + key: "wrapCommand", + value: function wrapCommand(fn) { + return function () { + this.beforeCommand(); + fn.apply(this, arguments); + this.afterCommand(); + }; + } + /** + * insert image + * + * @param {String} src + * @param {String|Function} param + * @return {Promise} + */ + + }, { + key: "insertImage", + value: function insertImage(src, param) { + var _this3 = this; + + return createImage(src, param).then(function ($image) { + _this3.beforeCommand(); + + if (typeof param === 'function') { + param($image); + } else { + if (typeof param === 'string') { + $image.attr('data-filename', param); + } + + $image.css('width', Math.min(_this3.$editable.width(), $image.width())); + } + + $image.show(); + + _this3.getLastRange().insertNode($image[0]); + + _this3.setLastRange(range.createFromNodeAfter($image[0]).select()); + + _this3.afterCommand(); + }).fail(function (e) { + _this3.context.triggerEvent('image.upload.error', e); + }); + } + /** + * insertImages + * @param {File[]} files + */ + + }, { + key: "insertImagesAsDataURL", + value: function insertImagesAsDataURL(files) { + var _this4 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(files, function (idx, file) { + var filename = file.name; + + if (_this4.options.maximumImageFileSize && _this4.options.maximumImageFileSize < file.size) { + _this4.context.triggerEvent('image.upload.error', _this4.lang.image.maximumFileSizeError); + } else { + readFileAsDataURL(file).then(function (dataURL) { + return _this4.insertImage(dataURL, filename); + }).fail(function () { + _this4.context.triggerEvent('image.upload.error'); + }); + } + }); + } + /** + * insertImagesOrCallback + * @param {File[]} files + */ + + }, { + key: "insertImagesOrCallback", + value: function insertImagesOrCallback(files) { + var callbacks = this.options.callbacks; // If onImageUpload set, + + if (callbacks.onImageUpload) { + this.context.triggerEvent('image.upload', files); // else insert Image as dataURL + } else { + this.insertImagesAsDataURL(files); + } + } + /** + * return selected plain text + * @return {String} text + */ + + }, { + key: "getSelectedText", + value: function getSelectedText() { + var rng = this.getLastRange(); // if range on anchor, expand range with anchor + + if (rng.isOnAnchor()) { + rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor)); + } + + return rng.toString(); + } + }, { + key: "onFormatBlock", + value: function onFormatBlock(tagName, $target) { + // [workaround] for MSIE, IE need `<` + document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName); // support custom class + + if ($target && $target.length) { + // find the exact element has given tagName + if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) { + $target = $target.find(tagName); + } + + if ($target && $target.length) { + var className = $target[0].className || ''; + + if (className) { + var currentRange = this.createRange(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()([currentRange.sc, currentRange.ec]).closest(tagName); + $parent.addClass(className); + } + } + } + } + }, { + key: "formatPara", + value: function formatPara() { + this.formatBlock('P'); + } + }, { + key: "fontStyling", + value: function fontStyling(target, value) { + var rng = this.getLastRange(); + + if (rng !== '') { + var spans = this.style.styleNodes(rng); + this.$editor.find('.note-status-output').html(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(spans).css(target, value); // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + + if (rng.isCollapsed()) { + var firstSpan = lists.head(spans); + + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNode(firstSpan.firstChild).select(); + this.setLastRange(); + this.$editable.data(KEY_BOGUS, firstSpan); + } + } else { + this.setLastRange(this.createRangeFromList(spans).select()); + } + } else { + var noteStatusOutput = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now(); + this.$editor.find('.note-status-output').html('<div id="note-status-output-' + noteStatusOutput + '" class="alert alert-info">' + this.lang.output.noSelection + '</div>'); + setTimeout(function () { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('#note-status-output-' + noteStatusOutput).remove(); + }, 5000); + } + } + /** + * unlink + * + * @type command + */ + + }, { + key: "unlink", + value: function unlink() { + var rng = this.getLastRange(); + + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + this.setLastRange(); + this.beforeCommand(); + document.execCommand('unlink'); + this.afterCommand(); + } + } + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=""] + */ + + }, { + key: "getLinkInfo", + value: function getLinkInfo() { + var rng = this.getLastRange().expand(dom.isAnchor); // Get the first anchor on range(for edit). + + var $anchor = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(lists.head(rng.nodes(dom.isAnchor))); + var linkInfo = { + range: rng, + text: rng.toString(), + url: $anchor.length ? $anchor.attr('href') : '' + }; // When anchor exists, + + if ($anchor.length) { + // Set isNewWindow by checking its target. + linkInfo.isNewWindow = $anchor.attr('target') === '_blank'; + } + + return linkInfo; + } + }, { + key: "addRow", + value: function addRow(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addRow(rng, position); + this.afterCommand(); + } + } + }, { + key: "addCol", + value: function addCol(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addCol(rng, position); + this.afterCommand(); + } + } + }, { + key: "deleteRow", + value: function deleteRow() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteRow(rng); + this.afterCommand(); + } + } + }, { + key: "deleteCol", + value: function deleteCol() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteCol(rng); + this.afterCommand(); + } + } + }, { + key: "deleteTable", + value: function deleteTable() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteTable(rng); + this.afterCommand(); + } + } + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + + }, { + key: "resizeTo", + value: function resizeTo(pos, $target, bKeepRatio) { + var imageSize; + + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + } + /** + * returns whether editable area has focus or not. + */ + + }, { + key: "hasFocus", + value: function hasFocus() { + return this.$editable.is(':focus'); + } + /** + * set focus + */ + + }, { + key: "focus", + value: function focus() { + // [workaround] Screen will move when page is scolled in IE. + // - do focus when not focused + if (!this.hasFocus()) { + this.$editable.focus(); + } + } + /** + * returns whether contents is empty or not. + * @return {Boolean} + */ + + }, { + key: "isEmpty", + value: function isEmpty() { + return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html(); + } + /** + * Removes all contents and restores the editable instance to an _emptyPara_. + */ + + }, { + key: "empty", + value: function empty() { + this.context.invoke('code', dom.emptyPara); + } + /** + * normalize content + */ + + }, { + key: "normalizeContent", + value: function normalizeContent() { + this.$editable[0].normalize(); + } + }]); + + return Editor; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Clipboard.js +function Clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) Clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) Clipboard_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Clipboard_Clipboard = /*#__PURE__*/function () { + function Clipboard(context) { + Clipboard_classCallCheck(this, Clipboard); + + this.context = context; + this.$editable = context.layoutInfo.editable; + } + + Clipboard_createClass(Clipboard, [{ + key: "initialize", + value: function initialize() { + this.$editable.on('paste', this.pasteByEvent.bind(this)); + } + /** + * paste by clipboard event + * + * @param {Event} event + */ + + }, { + key: "pasteByEvent", + value: function pasteByEvent(event) { + var _this = this; + + var clipboardData = event.originalEvent.clipboardData; + + if (clipboardData && clipboardData.items && clipboardData.items.length) { + var item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items); + + if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { + // paste img file + this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]); + event.preventDefault(); + } else if (item.kind === 'string') { + // paste text with maxTextLength check + if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) { + event.preventDefault(); + } + } + } else if (window.clipboardData) { + // for IE + var text = window.clipboardData.getData('text'); + + if (this.context.invoke('editor.isLimited', text.length)) { + event.preventDefault(); + } + } // Call editor.afterCommand after proceeding default event handler + + + setTimeout(function () { + _this.context.invoke('editor.afterCommand'); + }, 10); + } + }]); + + return Clipboard; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Dropzone.js +function Dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) Dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) Dropzone_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Dropzone_Dropzone = /*#__PURE__*/function () { + function Dropzone(context) { + Dropzone_classCallCheck(this, Dropzone); + + this.context = context; + this.$eventListener = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.documentEventHandlers = {}; + this.$dropzone = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-dropzone">', '<div class="note-dropzone-message"></div>', '</div>'].join('')).prependTo(this.$editor); + } + /** + * attach Drag and Drop Events + */ + + + Dropzone_createClass(Dropzone, [{ + key: "initialize", + value: function initialize() { + if (this.options.disableDragAndDrop) { + // prevent default drop event + this.documentEventHandlers.onDrop = function (e) { + e.preventDefault(); + }; // do not consider outside of dropzone + + + this.$eventListener = this.$dropzone; + this.$eventListener.on('drop', this.documentEventHandlers.onDrop); + } else { + this.attachDragAndDropEvent(); + } + } + /** + * attach Drag and Drop Events + */ + + }, { + key: "attachDragAndDropEvent", + value: function attachDragAndDropEvent() { + var _this = this; + + var collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + var $dropzoneMessage = this.$dropzone.find('.note-dropzone-message'); + + this.documentEventHandlers.onDragenter = function (e) { + var isCodeview = _this.context.invoke('codeview.isActivated'); + + var hasEditorSize = _this.$editor.width() > 0 && _this.$editor.height() > 0; + + if (!isCodeview && !collection.length && hasEditorSize) { + _this.$editor.addClass('dragover'); + + _this.$dropzone.width(_this.$editor.width()); + + _this.$dropzone.height(_this.$editor.height()); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + } + + collection = collection.add(e.target); + }; + + this.documentEventHandlers.onDragleave = function (e) { + collection = collection.not(e.target); // If nodeName is BODY, then just make it over (fix for IE) + + if (!collection.length || e.target.nodeName === 'BODY') { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + } + }; + + this.documentEventHandlers.onDrop = function () { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + }; // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + + + this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter).on('dragleave', this.documentEventHandlers.onDragleave).on('drop', this.documentEventHandlers.onDrop); // change dropzone's message on hover. + + this.$dropzone.on('dragenter', function () { + _this.$dropzone.addClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dropImage); + }).on('dragleave', function () { + _this.$dropzone.removeClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + }); // attach dropImage + + this.$dropzone.on('drop', function (event) { + var dataTransfer = event.originalEvent.dataTransfer; // stop the browser from opening the dropped content + + event.preventDefault(); + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + _this.$editable.focus(); + + _this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(dataTransfer.types, function (idx, type) { + // skip moz-specific types + if (type.toLowerCase().indexOf('_moz_') > -1) { + return; + } + + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + _this.context.invoke('editor.pasteHTML', content); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(content).each(function (idx, item) { + _this.context.invoke('editor.insertNode', item); + }); + } + }); + } + }).on('dragover', false); // prevent default dragover event + } + }, { + key: "destroy", + value: function destroy() { + var _this2 = this; + + Object.keys(this.documentEventHandlers).forEach(function (key) { + _this2.$eventListener.off(key.substr(2).toLowerCase(), _this2.documentEventHandlers[key]); + }); + this.documentEventHandlers = {}; + } + }]); + + return Dropzone; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Codeview.js +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function Codeview_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Codeview_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Codeview_createClass(Constructor, protoProps, staticProps) { if (protoProps) Codeview_defineProperties(Constructor.prototype, protoProps); if (staticProps) Codeview_defineProperties(Constructor, staticProps); return Constructor; } + + + +/** + * @class Codeview + */ + +var Codeview_CodeView = /*#__PURE__*/function () { + function CodeView(context) { + Codeview_classCallCheck(this, CodeView); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.options = context.options; + this.CodeMirrorConstructor = window.CodeMirror; + + if (this.options.codemirror.CodeMirrorConstructor) { + this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor; + } + } + + Codeview_createClass(CodeView, [{ + key: "sync", + value: function sync(html) { + var isCodeview = this.isActivated(); + var CodeMirror = this.CodeMirrorConstructor; + + if (isCodeview) { + if (html) { + if (CodeMirror) { + this.$codable.data('cmEditor').getDoc().setValue(html); + } else { + this.$codable.val(html); + } + } else { + if (CodeMirror) { + this.$codable.data('cmEditor').save(); + } + } + } + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.$codable.on('keyup', function (event) { + if (event.keyCode === core_key.code.ESCAPE) { + _this.deactivate(); + } + }); + } + /** + * @return {Boolean} + */ + + }, { + key: "isActivated", + value: function isActivated() { + return this.$editor.hasClass('codeview'); + } + /** + * toggle codeview + */ + + }, { + key: "toggle", + value: function toggle() { + if (this.isActivated()) { + this.deactivate(); + } else { + this.activate(); + } + + this.context.triggerEvent('codeview.toggled'); + } + /** + * purify input value + * @param value + * @returns {*} + */ + + }, { + key: "purify", + value: function purify(value) { + if (this.options.codeviewFilter) { + // filter code view regex + value = value.replace(this.options.codeviewFilterRegex, ''); // allow specific iframe tag + + if (this.options.codeviewIframeFilter) { + var whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase); + value = value.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi, function (tag) { + // remove if src attribute is duplicated + if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(tag)) { + return ''; + } + + var _iterator = _createForOfIteratorHelper(whitelist), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var src = _step.value; + + // pass if src is trusted + if (new RegExp('src="(https?:)?\/\/' + src.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '\/(.+)"').test(tag)) { + return tag; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return ''; + }); + } + } + + return value; + } + /** + * activate code view + */ + + }, { + key: "activate", + value: function activate() { + var _this2 = this; + + var CodeMirror = this.CodeMirrorConstructor; + this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml)); + this.$codable.height(this.$editable.height()); + this.context.invoke('toolbar.updateCodeview', true); + this.context.invoke('airPopover.updateCodeview', true); + this.$editor.addClass('codeview'); + this.$codable.focus(); // activate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror); // CodeMirror TernServer + + if (this.options.codemirror.tern) { + var server = new CodeMirror.TernServer(this.options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function (cm) { + server.updateArgHints(cm); + }); + } + + cmEditor.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', cmEditor.getValue(), event); + }); + cmEditor.on('change', function () { + _this2.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor); + }); // CodeMirror hasn't Padding. + + cmEditor.setSize(null, this.$editable.outerHeight()); + this.$codable.data('cmEditor', cmEditor); + } else { + this.$codable.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', _this2.$codable.val(), event); + }); + this.$codable.on('input', function () { + _this2.context.triggerEvent('change.codeview', _this2.$codable.val(), _this2.$codable); + }); + } + } + /** + * deactivate code view + */ + + }, { + key: "deactivate", + value: function deactivate() { + var CodeMirror = this.CodeMirrorConstructor; // deactivate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = this.$codable.data('cmEditor'); + this.$codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara); + var isChange = this.$editable.html() !== value; + this.$editable.html(value); + this.$editable.height(this.options.height ? this.$codable.height() : 'auto'); + this.$editor.removeClass('codeview'); + + if (isChange) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + + this.$editable.focus(); + this.context.invoke('toolbar.updateCodeview', false); + this.context.invoke('airPopover.updateCodeview', false); + } + }, { + key: "destroy", + value: function destroy() { + if (this.isActivated()) { + this.deactivate(); + } + } + }]); + + return CodeView; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Statusbar.js +function Statusbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Statusbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Statusbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Statusbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Statusbar_defineProperties(Constructor, staticProps); return Constructor; } + + +var EDITABLE_PADDING = 24; + +var Statusbar_Statusbar = /*#__PURE__*/function () { + function Statusbar(context) { + Statusbar_classCallCheck(this, Statusbar); + + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$statusbar = context.layoutInfo.statusbar; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + } + + Statusbar_createClass(Statusbar, [{ + key: "initialize", + value: function initialize() { + var _this = this; + + if (this.options.airMode || this.options.disableResizeEditor) { + this.destroy(); + return; + } + + this.$statusbar.on('mousedown', function (event) { + event.preventDefault(); + event.stopPropagation(); + + var editableTop = _this.$editable.offset().top - _this.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + var height = event.clientY - (editableTop + EDITABLE_PADDING); + height = _this.options.minheight > 0 ? Math.max(height, _this.options.minheight) : height; + height = _this.options.maxHeight > 0 ? Math.min(height, _this.options.maxHeight) : height; + + _this.$editable.height(height); + }; + + _this.$document.on('mousemove', onMouseMove).one('mouseup', function () { + _this.$document.off('mousemove', onMouseMove); + }); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$statusbar.off(); + this.$statusbar.addClass('locked'); + } + }]); + + return Statusbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Fullscreen.js +function Fullscreen_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Fullscreen_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Fullscreen_createClass(Constructor, protoProps, staticProps) { if (protoProps) Fullscreen_defineProperties(Constructor.prototype, protoProps); if (staticProps) Fullscreen_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Fullscreen_Fullscreen = /*#__PURE__*/function () { + function Fullscreen(context) { + var _this = this; + + Fullscreen_classCallCheck(this, Fullscreen); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$scrollbar = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('html, body'); + + this.onResize = function () { + _this.resizeTo({ + h: _this.$window.height() - _this.$toolbar.outerHeight() + }); + }; + } + + Fullscreen_createClass(Fullscreen, [{ + key: "resizeTo", + value: function resizeTo(size) { + this.$editable.css('height', size.h); + this.$codable.css('height', size.h); + + if (this.$codable.data('cmeditor')) { + this.$codable.data('cmeditor').setsize(null, size.h); + } + } + /** + * toggle fullscreen + */ + + }, { + key: "toggle", + value: function toggle() { + this.$editor.toggleClass('fullscreen'); + + if (this.isFullscreen()) { + this.$editable.data('orgHeight', this.$editable.css('height')); + this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight')); + this.$editable.css('maxHeight', ''); + this.$window.on('resize', this.onResize).trigger('resize'); + this.$scrollbar.css('overflow', 'hidden'); + } else { + this.$window.off('resize', this.onResize); + this.resizeTo({ + h: this.$editable.data('orgHeight') + }); + this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight')); + this.$scrollbar.css('overflow', 'visible'); + } + + this.context.invoke('toolbar.updateFullscreen', this.isFullscreen()); + } + }, { + key: "isFullscreen", + value: function isFullscreen() { + return this.$editor.hasClass('fullscreen'); + } + }]); + + return Fullscreen; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Handle.js +function Handle_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Handle_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Handle_createClass(Constructor, protoProps, staticProps) { if (protoProps) Handle_defineProperties(Constructor.prototype, protoProps); if (staticProps) Handle_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var Handle_Handle = /*#__PURE__*/function () { + function Handle(context) { + var _this = this; + + Handle_classCallCheck(this, Handle); + + this.context = context; + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + this.lang = this.options.langInfo; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + if (_this.update(e.target, e)) { + e.preventDefault(); + } + }, + 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': function summernoteKeyupSummernoteScrollSummernoteChangeSummernoteDialogShown() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Handle_createClass(Handle, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$handle = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-handle">', '<div class="note-control-selection">', '<div class="note-control-selection-bg"></div>', '<div class="note-control-holder note-control-nw"></div>', '<div class="note-control-holder note-control-ne"></div>', '<div class="note-control-holder note-control-sw"></div>', '<div class="', this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing', ' note-control-se"></div>', this.options.disableResizeImage ? '' : '<div class="note-control-selection-info"></div>', '</div>', '</div>'].join('')).prependTo(this.$editingArea); + this.$handle.on('mousedown', function (event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var $target = _this2.$handle.find('.note-control-selection').data('target'); + + var posStart = $target.offset(); + + var scrollTop = _this2.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + _this2.context.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + _this2.update($target[0], event); + }; + + _this2.$document.on('mousemove', onMouseMove).one('mouseup', function (e) { + e.preventDefault(); + + _this2.$document.off('mousemove', onMouseMove); + + _this2.context.invoke('editor.afterCommand'); + }); + + if (!$target.data('ratio')) { + // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }); // Listen for scrolling on the handle overlay. + + this.$handle.on('wheel', function (e) { + e.preventDefault(); + + _this2.update(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$handle.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (this.context.isDisabled()) { + return false; + } + + var isImage = dom.isImg(target); + var $selection = this.$handle.find('.note-control-selection'); + this.context.invoke('imagePopover.update', target, event); + + if (isImage) { + var $image = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target); + var position = $image.position(); + var pos = { + left: position.left + parseInt($image.css('marginLeft'), 10), + top: position.top + parseInt($image.css('marginTop'), 10) + }; // exclude margin + + var imageSize = { + w: $image.outerWidth(false), + h: $image.outerHeight(false) + }; + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', $image); // save current image element. + + var origImageObj = new Image(); + origImageObj.src = $image.attr('src'); + var sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')'; + $selection.find('.note-control-selection-info').text(sizingText); + this.context.invoke('editor.saveTarget', target); + } else { + this.hide(); + } + + return isImage; + } + /** + * hide + * + * @param {jQuery} $handle + */ + + }, { + key: "hide", + value: function hide() { + this.context.invoke('editor.clearTarget'); + this.$handle.children().hide(); + } + }]); + + return Handle; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoLink.js +function AutoLink_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoLink_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoLink_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoLink_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoLink_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var defaultScheme = 'http://'; +var linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i; + +var AutoLink_AutoLink = /*#__PURE__*/function () { + function AutoLink(context) { + var _this = this; + + AutoLink_classCallCheck(this, AutoLink); + + this.context = context; + this.options = context.options; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoLink_createClass(AutoLink, [{ + key: "initialize", + value: function initialize() { + this.lastWordRange = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWordRange = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWordRange) { + return; + } + + var keyword = this.lastWordRange.toString(); + var match = keyword.match(linkPattern); + + if (match && (match[1] || match[2])) { + var link = match[1] ? keyword : defaultScheme + keyword; + var urlText = this.options.showDomainOnlyForAutolink ? keyword.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, '').split('/')[0] : keyword; + var node = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<a />').html(urlText).attr('href', link)[0]; + + if (this.context.options.linkTargetBlank) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).attr('target', '_blank'); + } + + this.lastWordRange.insertNode(node); + this.lastWordRange = null; + this.context.invoke('editor.focus'); + } + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWordRange = wordRange; + } + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoLink; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoSync.js +function AutoSync_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoSync_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoSync_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoSync_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoSync_defineProperties(Constructor, staticProps); return Constructor; } + + +/** + * textarea auto sync. + */ + +var AutoSync_AutoSync = /*#__PURE__*/function () { + function AutoSync(context) { + var _this = this; + + AutoSync_classCallCheck(this, AutoSync); + + this.$note = context.layoutInfo.note; + this.events = { + 'summernote.change': function summernoteChange() { + _this.$note.val(context.invoke('code')); + } + }; + } + + AutoSync_createClass(AutoSync, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return dom.isTextarea(this.$note[0]); + } + }]); + + return AutoSync; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoReplace.js +function AutoReplace_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoReplace_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoReplace_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoReplace_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoReplace_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var AutoReplace_AutoReplace = /*#__PURE__*/function () { + function AutoReplace(context) { + var _this = this; + + AutoReplace_classCallCheck(this, AutoReplace); + + this.context = context; + this.options = context.options.replace || {}; + this.keys = [core_key.code.ENTER, core_key.code.SPACE, core_key.code.PERIOD, core_key.code.COMMA, core_key.code.SEMICOLON, core_key.code.SLASH]; + this.previousKeydownCode = null; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoReplace_createClass(AutoReplace, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.match; + } + }, { + key: "initialize", + value: function initialize() { + this.lastWord = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWord = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWord) { + return; + } + + var self = this; + var keyword = this.lastWord.toString(); + this.options.match(keyword, function (match) { + if (match) { + var node = ''; + + if (typeof match === 'string') { + node = dom.createText(match); + } else if (match instanceof jQuery) { + node = match[0]; + } else if (match instanceof Node) { + node = match; + } + + if (!node) return; + self.lastWord.insertNode(node); + self.lastWord = null; + self.context.invoke('editor.focus'); + } + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + // this forces it to remember the last whole word, even if multiple termination keys are pressed + // before the previous key is let go. + if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) { + this.previousKeydownCode = e.keyCode; + return; + } + + if (lists.contains(this.keys, e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWord = wordRange; + } + + this.previousKeydownCode = e.keyCode; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains(this.keys, e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoReplace; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Placeholder.js +function Placeholder_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Placeholder_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Placeholder_createClass(Constructor, protoProps, staticProps) { if (protoProps) Placeholder_defineProperties(Constructor.prototype, protoProps); if (staticProps) Placeholder_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Placeholder_Placeholder = /*#__PURE__*/function () { + function Placeholder(context) { + var _this = this; + + Placeholder_classCallCheck(this, Placeholder); + + this.context = context; + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + + if (this.options.inheritPlaceholder === true) { + // get placeholder value from the original element + this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder; + } + + this.events = { + 'summernote.init summernote.change': function summernoteInitSummernoteChange() { + _this.update(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Placeholder_createClass(Placeholder, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.placeholder; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-placeholder">'); + this.$placeholder.on('click', function () { + _this2.context.invoke('focus'); + }).html(this.options.placeholder).prependTo(this.$editingArea); + this.update(); + } + }, { + key: "destroy", + value: function destroy() { + this.$placeholder.remove(); + } + }, { + key: "update", + value: function update() { + var isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty'); + this.$placeholder.toggle(isShow); + } + }]); + + return Placeholder; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Buttons.js +function Buttons_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Buttons_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Buttons_createClass(Constructor, protoProps, staticProps) { if (protoProps) Buttons_defineProperties(Constructor.prototype, protoProps); if (staticProps) Buttons_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Buttons_Buttons = /*#__PURE__*/function () { + function Buttons(context) { + Buttons_classCallCheck(this, Buttons); + + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.context = context; + this.$toolbar = context.layoutInfo.toolbar; + this.options = context.options; + this.lang = this.options.langInfo; + this.invertedKeyMap = func.invertObject(this.options.keyMap[env.isMac ? 'mac' : 'pc']); + } + + Buttons_createClass(Buttons, [{ + key: "representShortcut", + value: function representShortcut(editorMethod) { + var shortcut = this.invertedKeyMap[editorMethod]; + + if (!this.options.shortcuts || !shortcut) { + return ''; + } + + if (env.isMac) { + shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + shortcut = shortcut.replace('BACKSLASH', '\\').replace('SLASH', '/').replace('LEFTBRACKET', '[').replace('RIGHTBRACKET', ']'); + return ' (' + shortcut + ')'; + } + }, { + key: "button", + value: function button(o) { + if (!this.options.tooltip && o.tooltip) { + delete o.tooltip; + } + + o.container = this.options.container; + return this.ui.button(o); + } + }, { + key: "initialize", + value: function initialize() { + this.addToolbarButtons(); + this.addImagePopoverButtons(); + this.addLinkPopoverButtons(); + this.addTablePopoverButtons(); + this.fontInstalledMap = {}; + } + }, { + key: "destroy", + value: function destroy() { + delete this.fontInstalledMap; + } + }, { + key: "isFontInstalled", + value: function isFontInstalled(name) { + if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) { + this.fontInstalledMap[name] = env.isFontInstalled(name) || lists.contains(this.options.fontNamesIgnoreCheck, name); + } + + return this.fontInstalledMap[name]; + } + }, { + key: "isFontDeservedToAdd", + value: function isFontDeservedToAdd(name) { + name = name.toLowerCase(); + return name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1; + } + }, { + key: "colorPalette", + value: function colorPalette(className, tooltip, backColor, foreColor) { + var _this = this; + + return this.ui.buttonGroup({ + className: 'note-color ' + className, + children: [this.button({ + className: 'note-current-color-button', + contents: this.ui.icon(this.options.icons.font + ' note-recent-color'), + tooltip: tooltip, + click: function click(e) { + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget); + + if (backColor && foreColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor'), + foreColor: $button.attr('data-foreColor') + }); + } else if (backColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor') + }); + } else if (foreColor) { + _this.context.invoke('editor.color', { + foreColor: $button.attr('data-foreColor') + }); + } + }, + callback: function callback($button) { + var $recentColor = $button.find('.note-recent-color'); + + if (backColor) { + $recentColor.css('background-color', _this.options.colorButton.backColor); + $button.attr('data-backColor', _this.options.colorButton.backColor); + } + + if (foreColor) { + $recentColor.css('color', _this.options.colorButton.foreColor); + $button.attr('data-foreColor', _this.options.colorButton.foreColor); + } else { + $recentColor.css('color', 'transparent'); + } + } + }), this.button({ + className: 'dropdown-toggle', + contents: this.ui.dropdownButtonContents('', this.options), + tooltip: this.lang.color.more, + data: { + toggle: 'dropdown' + } + }), this.ui.dropdown({ + items: (backColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.background + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">', this.lang.color.transparent, '</button>', '</div>', '<div class="note-holder" data-event="backColor"><!-- back colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.backColor + '" data-event="backColorPalette">', '</div>', '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>', '</div>'].join('') : '') + (foreColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.foreground + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">', this.lang.color.resetToDefault, '</button>', '</div>', '<div class="note-holder" data-event="foreColor"><!-- fore colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.foreColor + '" data-event="foreColorPalette">', '</div>', // Fix missing Div, Commented to find easily if it's wrong + '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>', '</div>'].join('') : ''), + callback: function callback($dropdown) { + $dropdown.find('.note-holder').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: _this.options.colors, + colorsName: _this.options.colorsName, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + /* TODO: do we have to record recent custom colors within cookies? */ + + var customColors = [['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF']]; + $dropdown.find('.note-holder-custom').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: customColors, + colorsName: customColors, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + $dropdown.find('input[type=color]').each(function (idx, item) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).change(function () { + var $chip = $dropdown.find('#' + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this).data('event')).find('.note-color-btn').first(); + var color = this.value.toUpperCase(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $chip.click(); + }); + }); + }, + click: function click(event) { + event.stopPropagation(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.' + className).find('.note-dropdown-menu'); + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + var eventName = $button.data('event'); + var value = $button.attr('data-value'); + + if (eventName === 'openPalette') { + var $picker = $parent.find('#' + value); + var $palette = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]); // Shift palette chips + + var $chip = $palette.find('.note-color-btn').last().detach(); // Set chip attributes + + var color = $picker.val(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $palette.prepend($chip); + $picker.click(); + } else { + if (lists.contains(['backColor', 'foreColor'], eventName)) { + var key = eventName === 'backColor' ? 'background-color' : 'color'; + var $color = $button.closest('.note-color').find('.note-recent-color'); + var $currentButton = $button.closest('.note-color').find('.note-current-color-button'); + $color.css(key, value); + $currentButton.attr('data-' + eventName, value); + } + + _this.context.invoke('editor.' + eventName, value); + } + } + })] + }).render(); + } + }, { + key: "addToolbarButtons", + value: function addToolbarButtons() { + var _this2 = this; + + this.context.memo('button.style', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.magic), _this2.options), + tooltip: _this2.lang.style.style, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + className: 'dropdown-style', + items: _this2.options.styleTags, + title: _this2.lang.style.style, + template: function template(item) { + // TBD: need to be simplified + if (typeof item === 'string') { + item = { + tag: item, + title: Object.prototype.hasOwnProperty.call(_this2.lang.style, item) ? _this2.lang.style[item] : item + }; + } + + var tag = item.tag; + var title = item.title; + var style = item.style ? ' style="' + item.style + '" ' : ''; + var className = item.className ? ' class="' + item.className + '"' : ''; + return '<' + tag + style + className + '>' + title + '</' + tag + '>'; + }, + click: _this2.context.createInvokeHandler('editor.formatBlock') + })]).render(); + }); + + var _loop = function _loop(styleIdx, styleLen) { + var item = _this2.options.styleTags[styleIdx]; + + _this2.context.memo('button.style.' + item, function () { + return _this2.button({ + className: 'note-btn-style-' + item, + contents: '<div data-value="' + item + '">' + item.toUpperCase() + '</div>', + tooltip: _this2.lang.style[item], + click: _this2.context.createInvokeHandler('editor.formatBlock') + }).render(); + }); + }; + + for (var styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) { + _loop(styleIdx, styleLen); + } + + this.context.memo('button.bold', function () { + return _this2.button({ + className: 'note-btn-bold', + contents: _this2.ui.icon(_this2.options.icons.bold), + tooltip: _this2.lang.font.bold + _this2.representShortcut('bold'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.bold') + }).render(); + }); + this.context.memo('button.italic', function () { + return _this2.button({ + className: 'note-btn-italic', + contents: _this2.ui.icon(_this2.options.icons.italic), + tooltip: _this2.lang.font.italic + _this2.representShortcut('italic'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.italic') + }).render(); + }); + this.context.memo('button.underline', function () { + return _this2.button({ + className: 'note-btn-underline', + contents: _this2.ui.icon(_this2.options.icons.underline), + tooltip: _this2.lang.font.underline + _this2.representShortcut('underline'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.underline') + }).render(); + }); + this.context.memo('button.clear', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.eraser), + tooltip: _this2.lang.font.clear + _this2.representShortcut('removeFormat'), + click: _this2.context.createInvokeHandler('editor.removeFormat') + }).render(); + }); + this.context.memo('button.strikethrough', function () { + return _this2.button({ + className: 'note-btn-strikethrough', + contents: _this2.ui.icon(_this2.options.icons.strikethrough), + tooltip: _this2.lang.font.strikethrough + _this2.representShortcut('strikethrough'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.strikethrough') + }).render(); + }); + this.context.memo('button.superscript', function () { + return _this2.button({ + className: 'note-btn-superscript', + contents: _this2.ui.icon(_this2.options.icons.superscript), + tooltip: _this2.lang.font.superscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.superscript') + }).render(); + }); + this.context.memo('button.subscript', function () { + return _this2.button({ + className: 'note-btn-subscript', + contents: _this2.ui.icon(_this2.options.icons.subscript), + tooltip: _this2.lang.font.subscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.subscript') + }).render(); + }); + this.context.memo('button.fontname', function () { + var styleInfo = _this2.context.invoke('editor.currentStyle'); + + if (_this2.options.addDefaultFonts) { + // Add 'default' fonts into the fontnames array if not exist + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(styleInfo['font-family'].split(','), function (idx, fontname) { + fontname = fontname.trim().replace(/['"]+/g, ''); + + if (_this2.isFontDeservedToAdd(fontname)) { + if (_this2.options.fontNames.indexOf(fontname) === -1) { + _this2.options.fontNames.push(fontname); + } + } + }); + } + + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontname"></span>', _this2.options), + tooltip: _this2.lang.font.name, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontname', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontNames.filter(_this2.isFontInstalled.bind(_this2)), + title: _this2.lang.font.name, + template: function template(item) { + return '<span style="font-family: ' + env.validFontName(item) + '">' + item + '</span>'; + }, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontName') + })]).render(); + }); + this.context.memo('button.fontsize', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>', _this2.options), + tooltip: _this2.lang.font.size, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsize', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizes, + title: _this2.lang.font.size, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSize') + })]).render(); + }); + this.context.memo('button.fontsizeunit', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>', _this2.options), + tooltip: _this2.lang.font.sizeunit, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsizeunit', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizeUnits, + title: _this2.lang.font.sizeunit, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit') + })]).render(); + }); + this.context.memo('button.color', function () { + return _this2.colorPalette('note-color-all', _this2.lang.color.recent, true, true); + }); + this.context.memo('button.forecolor', function () { + return _this2.colorPalette('note-color-fore', _this2.lang.color.foreground, false, true); + }); + this.context.memo('button.backcolor', function () { + return _this2.colorPalette('note-color-back', _this2.lang.color.background, true, false); + }); + this.context.memo('button.ul', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.unorderedlist), + tooltip: _this2.lang.lists.unordered + _this2.representShortcut('insertUnorderedList'), + click: _this2.context.createInvokeHandler('editor.insertUnorderedList') + }).render(); + }); + this.context.memo('button.ol', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.orderedlist), + tooltip: _this2.lang.lists.ordered + _this2.representShortcut('insertOrderedList'), + click: _this2.context.createInvokeHandler('editor.insertOrderedList') + }).render(); + }); + var justifyLeft = this.button({ + contents: this.ui.icon(this.options.icons.alignLeft), + tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'), + click: this.context.createInvokeHandler('editor.justifyLeft') + }); + var justifyCenter = this.button({ + contents: this.ui.icon(this.options.icons.alignCenter), + tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'), + click: this.context.createInvokeHandler('editor.justifyCenter') + }); + var justifyRight = this.button({ + contents: this.ui.icon(this.options.icons.alignRight), + tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'), + click: this.context.createInvokeHandler('editor.justifyRight') + }); + var justifyFull = this.button({ + contents: this.ui.icon(this.options.icons.alignJustify), + tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'), + click: this.context.createInvokeHandler('editor.justifyFull') + }); + var outdent = this.button({ + contents: this.ui.icon(this.options.icons.outdent), + tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'), + click: this.context.createInvokeHandler('editor.outdent') + }); + var indent = this.button({ + contents: this.ui.icon(this.options.icons.indent), + tooltip: this.lang.paragraph.indent + this.representShortcut('indent'), + click: this.context.createInvokeHandler('editor.indent') + }); + this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render')); + this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render')); + this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render')); + this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render')); + this.context.memo('button.outdent', func.invoke(outdent, 'render')); + this.context.memo('button.indent', func.invoke(indent, 'render')); + this.context.memo('button.paragraph', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.alignLeft), _this2.options), + tooltip: _this2.lang.paragraph.paragraph, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown([_this2.ui.buttonGroup({ + className: 'note-align', + children: [justifyLeft, justifyCenter, justifyRight, justifyFull] + }), _this2.ui.buttonGroup({ + className: 'note-list', + children: [outdent, indent] + })])]).render(); + }); + this.context.memo('button.height', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.textHeight), _this2.options), + tooltip: _this2.lang.font.height, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + items: _this2.options.lineHeights, + checkClassName: _this2.options.icons.menuCheck, + className: 'dropdown-line-height', + title: _this2.lang.font.height, + click: _this2.context.createInvokeHandler('editor.lineHeight') + })]).render(); + }); + this.context.memo('button.table', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.table), _this2.options), + tooltip: _this2.lang.table.table, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + title: _this2.lang.table.table, + className: 'note-table', + items: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>', '<div class="note-dimension-picker-highlighted"></div>', '<div class="note-dimension-picker-unhighlighted"></div>', '</div>', '<div class="note-dimension-display">1 x 1</div>'].join('') + })], { + callback: function callback($node) { + var $catcher = $node.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: _this2.options.insertTableMaxSize.col + 'em', + height: _this2.options.insertTableMaxSize.row + 'em' + }).mousedown(_this2.context.createInvokeHandler('editor.insertTable')).on('mousemove', _this2.tableMoveHandler.bind(_this2)); + } + }).render(); + }); + this.context.memo('button.link', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.link), + tooltip: _this2.lang.link.link + _this2.representShortcut('linkDialog.show'), + click: _this2.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.picture', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.picture), + tooltip: _this2.lang.image.image, + click: _this2.context.createInvokeHandler('imageDialog.show') + }).render(); + }); + this.context.memo('button.video', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.video), + tooltip: _this2.lang.video.video, + click: _this2.context.createInvokeHandler('videoDialog.show') + }).render(); + }); + this.context.memo('button.hr', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.minus), + tooltip: _this2.lang.hr.insert + _this2.representShortcut('insertHorizontalRule'), + click: _this2.context.createInvokeHandler('editor.insertHorizontalRule') + }).render(); + }); + this.context.memo('button.fullscreen', function () { + return _this2.button({ + className: 'btn-fullscreen note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.arrowsAlt), + tooltip: _this2.lang.options.fullscreen, + click: _this2.context.createInvokeHandler('fullscreen.toggle') + }).render(); + }); + this.context.memo('button.codeview', function () { + return _this2.button({ + className: 'btn-codeview note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.code), + tooltip: _this2.lang.options.codeview, + click: _this2.context.createInvokeHandler('codeview.toggle') + }).render(); + }); + this.context.memo('button.redo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.redo), + tooltip: _this2.lang.history.redo + _this2.representShortcut('redo'), + click: _this2.context.createInvokeHandler('editor.redo') + }).render(); + }); + this.context.memo('button.undo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.undo), + tooltip: _this2.lang.history.undo + _this2.representShortcut('undo'), + click: _this2.context.createInvokeHandler('editor.undo') + }).render(); + }); + this.context.memo('button.help', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.question), + tooltip: _this2.lang.options.help, + click: _this2.context.createInvokeHandler('helpDialog.show') + }).render(); + }); + } + /** + * image: [ + * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], + * ['float', ['floatLeft', 'floatRight', 'floatNone']], + * ['remove', ['removeMedia']], + * ], + */ + + }, { + key: "addImagePopoverButtons", + value: function addImagePopoverButtons() { + var _this3 = this; + + // Image Size Buttons + this.context.memo('button.resizeFull', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">100%</span>', + tooltip: _this3.lang.image.resizeFull, + click: _this3.context.createInvokeHandler('editor.resize', '1') + }).render(); + }); + this.context.memo('button.resizeHalf', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">50%</span>', + tooltip: _this3.lang.image.resizeHalf, + click: _this3.context.createInvokeHandler('editor.resize', '0.5') + }).render(); + }); + this.context.memo('button.resizeQuarter', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">25%</span>', + tooltip: _this3.lang.image.resizeQuarter, + click: _this3.context.createInvokeHandler('editor.resize', '0.25') + }).render(); + }); + this.context.memo('button.resizeNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.resizeNone, + click: _this3.context.createInvokeHandler('editor.resize', '0') + }).render(); + }); // Float Buttons + + this.context.memo('button.floatLeft', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatLeft), + tooltip: _this3.lang.image.floatLeft, + click: _this3.context.createInvokeHandler('editor.floatMe', 'left') + }).render(); + }); + this.context.memo('button.floatRight', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatRight), + tooltip: _this3.lang.image.floatRight, + click: _this3.context.createInvokeHandler('editor.floatMe', 'right') + }).render(); + }); + this.context.memo('button.floatNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.floatNone, + click: _this3.context.createInvokeHandler('editor.floatMe', 'none') + }).render(); + }); // Remove Buttons + + this.context.memo('button.removeMedia', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.trash), + tooltip: _this3.lang.image.remove, + click: _this3.context.createInvokeHandler('editor.removeMedia') + }).render(); + }); + } + }, { + key: "addLinkPopoverButtons", + value: function addLinkPopoverButtons() { + var _this4 = this; + + this.context.memo('button.linkDialogShow', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.link), + tooltip: _this4.lang.link.edit, + click: _this4.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.unlink', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.unlink), + tooltip: _this4.lang.link.unlink, + click: _this4.context.createInvokeHandler('editor.unlink') + }).render(); + }); + } + /** + * table : [ + * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], + * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']] + * ], + */ + + }, { + key: "addTablePopoverButtons", + value: function addTablePopoverButtons() { + var _this5 = this; + + this.context.memo('button.addRowUp', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowAbove), + tooltip: _this5.lang.table.addRowAbove, + click: _this5.context.createInvokeHandler('editor.addRow', 'top') + }).render(); + }); + this.context.memo('button.addRowDown', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowBelow), + tooltip: _this5.lang.table.addRowBelow, + click: _this5.context.createInvokeHandler('editor.addRow', 'bottom') + }).render(); + }); + this.context.memo('button.addColLeft', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colBefore), + tooltip: _this5.lang.table.addColLeft, + click: _this5.context.createInvokeHandler('editor.addCol', 'left') + }).render(); + }); + this.context.memo('button.addColRight', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colAfter), + tooltip: _this5.lang.table.addColRight, + click: _this5.context.createInvokeHandler('editor.addCol', 'right') + }).render(); + }); + this.context.memo('button.deleteRow', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowRemove), + tooltip: _this5.lang.table.delRow, + click: _this5.context.createInvokeHandler('editor.deleteRow') + }).render(); + }); + this.context.memo('button.deleteCol', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colRemove), + tooltip: _this5.lang.table.delCol, + click: _this5.context.createInvokeHandler('editor.deleteCol') + }).render(); + }); + this.context.memo('button.deleteTable', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.trash), + tooltip: _this5.lang.table.delTable, + click: _this5.context.createInvokeHandler('editor.deleteTable') + }).render(); + }); + } + }, { + key: "build", + value: function build($container, groups) { + for (var groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) { + var group = groups[groupIdx]; + var groupName = Array.isArray(group) ? group[0] : group; + var buttons = Array.isArray(group) ? group.length === 1 ? [group[0]] : group[1] : [group]; + var $group = this.ui.buttonGroup({ + className: 'note-' + groupName + }).render(); + + for (var idx = 0, len = buttons.length; idx < len; idx++) { + var btn = this.context.memo('button.' + buttons[idx]); + + if (btn) { + $group.append(typeof btn === 'function' ? btn(this.context) : btn); + } + } + + $group.appendTo($container); + } + } + /** + * @param {jQuery} [$container] + */ + + }, { + key: "updateCurrentStyle", + value: function updateCurrentStyle($container) { + var _this6 = this; + + var $cont = $container || this.$toolbar; + var styleInfo = this.context.invoke('editor.currentStyle'); + this.updateBtnStates($cont, { + '.note-btn-bold': function noteBtnBold() { + return styleInfo['font-bold'] === 'bold'; + }, + '.note-btn-italic': function noteBtnItalic() { + return styleInfo['font-italic'] === 'italic'; + }, + '.note-btn-underline': function noteBtnUnderline() { + return styleInfo['font-underline'] === 'underline'; + }, + '.note-btn-subscript': function noteBtnSubscript() { + return styleInfo['font-subscript'] === 'subscript'; + }, + '.note-btn-superscript': function noteBtnSuperscript() { + return styleInfo['font-superscript'] === 'superscript'; + }, + '.note-btn-strikethrough': function noteBtnStrikethrough() { + return styleInfo['font-strikethrough'] === 'strikethrough'; + } + }); + + if (styleInfo['font-family']) { + var fontNames = styleInfo['font-family'].split(',').map(function (name) { + return name.replace(/[\'\"]/g, '').replace(/\s+$/, '').replace(/^\s+/, ''); + }); + var fontName = lists.find(fontNames, this.isFontInstalled.bind(this)); + $cont.find('.dropdown-fontname a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontName + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName); + } + + if (styleInfo['font-size']) { + var fontSize = styleInfo['font-size']; + $cont.find('.dropdown-fontsize a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare with string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontSize + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsize').text(fontSize); + var fontSizeUnit = styleInfo['font-size-unit']; + $cont.find('.dropdown-fontsizeunit a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + var isChecked = $item.data('value') + '' === fontSizeUnit + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsizeunit').text(fontSizeUnit); + } + + if (styleInfo['line-height']) { + var lineHeight = styleInfo['line-height']; + $cont.find('.dropdown-line-height li a').each(function (idx, item) { + // always compare with string to avoid creating another func. + var isChecked = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).data('value') + '' === lineHeight + ''; + _this6.className = isChecked ? 'checked' : ''; + }); + } + } + }, { + key: "updateBtnStates", + value: function updateBtnStates($container, infos) { + var _this7 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(infos, function (selector, pred) { + _this7.ui.toggleBtnActive($container.find(selector), pred()); + }); + } + }, { + key: "tableMoveHandler", + value: function tableMoveHandler(event) { + var PX_PER_EM = 18; + var $picker = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target.parentNode); // target is mousecatcher + + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var posOffset; // HTML5 with jQuery - e.offsetX is undefined in Firefox + + if (event.offsetX === undefined) { + var posCatcher = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + $highlighted.css({ + width: dim.c + 'em', + height: dim.r + 'em' + }); + $catcher.data('value', dim.c + 'x' + dim.r); + + if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) { + $unhighlighted.css({ + width: dim.c + 1 + 'em' + }); + } + + if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) { + $unhighlighted.css({ + height: dim.r + 1 + 'em' + }); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + } + }]); + + return Buttons; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Toolbar.js +function Toolbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Toolbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Toolbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Toolbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Toolbar_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Toolbar_Toolbar = /*#__PURE__*/function () { + function Toolbar(context) { + Toolbar_classCallCheck(this, Toolbar); + + this.context = context; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$statusbar = context.layoutInfo.statusbar; + this.options = context.options; + this.isFollowing = false; + this.followScroll = this.followScroll.bind(this); + } + + Toolbar_createClass(Toolbar, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !this.options.airMode; + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.options.toolbar = this.options.toolbar || []; + + if (!this.options.toolbar.length) { + this.$toolbar.hide(); + } else { + this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar); + } + + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + + this.changeContainer(false); + this.$note.on('summernote.keyup summernote.mouseup summernote.change', function () { + _this.context.invoke('buttons.updateCurrentStyle'); + }); + this.context.invoke('buttons.updateCurrentStyle'); + + if (this.options.followingToolbar) { + this.$window.on('scroll resize', this.followScroll); + } + } + }, { + key: "destroy", + value: function destroy() { + this.$toolbar.children().remove(); + + if (this.options.followingToolbar) { + this.$window.off('scroll resize', this.followScroll); + } + } + }, { + key: "followScroll", + value: function followScroll() { + if (this.$editor.hasClass('fullscreen')) { + return false; + } + + var editorHeight = this.$editor.outerHeight(); + var editorWidth = this.$editor.width(); + var toolbarHeight = this.$toolbar.height(); + var statusbarHeight = this.$statusbar.height(); // check if the web app is currently using another static bar + + var otherBarHeight = 0; + + if (this.options.otherStaticBar) { + otherBarHeight = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.otherStaticBar).outerHeight(); + } + + var currentOffset = this.$document.scrollTop(); + var editorOffsetTop = this.$editor.offset().top; + var editorOffsetBottom = editorOffsetTop + editorHeight; + var activateOffset = editorOffsetTop - otherBarHeight; + var deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight; + + if (!this.isFollowing && currentOffset > activateOffset && currentOffset < deactivateOffsetBottom - toolbarHeight) { + this.isFollowing = true; + this.$editable.css({ + marginTop: this.$toolbar.outerHeight() + }); + this.$toolbar.css({ + position: 'fixed', + top: otherBarHeight, + width: editorWidth, + zIndex: 1000 + }); + } else if (this.isFollowing && (currentOffset < activateOffset || currentOffset > deactivateOffsetBottom)) { + this.isFollowing = false; + this.$toolbar.css({ + position: 'relative', + top: 0, + width: '100%', + zIndex: 'auto' + }); + this.$editable.css({ + marginTop: '' + }); + } + } + }, { + key: "changeContainer", + value: function changeContainer(isFullscreen) { + if (isFullscreen) { + this.$toolbar.prependTo(this.$editor); + } else { + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + } + + if (this.options.followingToolbar) { + this.followScroll(); + } + } + }, { + key: "updateFullscreen", + value: function updateFullscreen(isFullscreen) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen); + this.changeContainer(isFullscreen); + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.deactivate(); + } else { + this.activate(); + } + } + }, { + key: "activate", + value: function activate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, true); + } + }, { + key: "deactivate", + value: function deactivate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, false); + } + }]); + + return Toolbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkDialog.js +function LinkDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var LinkDialog_LinkDialog = /*#__PURE__*/function () { + function LinkDialog(context) { + LinkDialog_classCallCheck(this, LinkDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']); + } + + LinkDialog_createClass(LinkDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group">', "<label for=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.textToDisplay, "</label>"), "<input id=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>"), '</div>', '<div class="form-group note-form-group">', "<label for=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.url, "</label>"), "<input id=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>"), '</div>', !this.options.disableLinkTarget ? external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-open-in-new-window', + text: this.lang.link.openInNewWindow, + checked: true + }).render()).html() : '', external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-use-protocol', + text: this.lang.link.useProtocol, + checked: true + }).render()).html()].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.link.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + className: 'link-dialog', + title: this.lang.link.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + /** + * toggle update button + */ + + }, { + key: "toggleLinkBtn", + value: function toggleLinkBtn($linkBtn, $linkText, $linkUrl) { + this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + } + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {Object} linkInfo + * @return {Promise} + */ + + }, { + key: "showLinkDialog", + value: function showLinkDialog(linkInfo) { + var _this = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $linkText = _this.$dialog.find('.note-link-text'); + + var $linkUrl = _this.$dialog.find('.note-link-url'); + + var $linkBtn = _this.$dialog.find('.note-link-btn'); + + var $openInNewWindow = _this.$dialog.find('.sn-checkbox-open-in-new-window input[type=checkbox]'); + + var $useProtocol = _this.$dialog.find('.sn-checkbox-use-protocol input[type=checkbox]'); + + _this.ui.onDialogShown(_this.$dialog, function () { + _this.context.triggerEvent('dialog.shown'); // If no url was given and given text is valid URL then copy that into URL Field + + + if (!linkInfo.url && func.isValidUrl(linkInfo.text)) { + linkInfo.url = linkInfo.text; + } + + $linkText.on('input paste propertychange', function () { + // If linktext was modified by input events, + // cloning text from linkUrl will be stopped. + linkInfo.text = $linkText.val(); + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.text); + $linkUrl.on('input paste propertychange', function () { + // Display same text on `Text to display` as default + // when linktext has no text + if (!linkInfo.text) { + $linkText.val($linkUrl.val()); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.url); + + if (!env.isSupportTouch) { + $linkUrl.trigger('focus'); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + + _this.bindEnterKey($linkUrl, $linkBtn); + + _this.bindEnterKey($linkText, $linkBtn); + + var isNewWindowChecked = linkInfo.isNewWindow !== undefined ? linkInfo.isNewWindow : _this.context.options.linkTargetBlank; + $openInNewWindow.prop('checked', isNewWindowChecked); + var useProtocolChecked = linkInfo.url ? false : _this.context.options.useProtocol; + $useProtocol.prop('checked', useProtocolChecked); + $linkBtn.one('click', function (event) { + event.preventDefault(); + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + isNewWindow: $openInNewWindow.is(':checked'), + checkProtocol: $useProtocol.is(':checked') + }); + + _this.ui.hideDialog(_this.$dialog); + }); + }); + + _this.ui.onDialogHidden(_this.$dialog, function () { + // detach events + $linkText.off(); + $linkUrl.off(); + $linkBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this.ui.showDialog(_this.$dialog); + }).promise(); + } + /** + * @param {Object} layoutInfo + */ + + }, { + key: "show", + value: function show() { + var _this2 = this; + + var linkInfo = this.context.invoke('editor.getLinkInfo'); + this.context.invoke('editor.saveRange'); + this.showLinkDialog(linkInfo).then(function (linkInfo) { + _this2.context.invoke('editor.restoreRange'); + + _this2.context.invoke('editor.createLink', linkInfo); + }).fail(function () { + _this2.context.invoke('editor.restoreRange'); + }); + } + }]); + + return LinkDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkPopover.js +function LinkPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var LinkPopover_LinkPopover = /*#__PURE__*/function () { + function LinkPopover(context) { + var _this = this; + + LinkPopover_classCallCheck(this, LinkPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteChangeSummernoteScroll() { + _this.update(); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + LinkPopover_createClass(LinkPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.link); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-link-popover', + callback: function callback($node) { + var $content = $node.find('.popover-content,.note-popover-content'); + $content.prepend('<span><a target="_blank"></a> </span>'); + } + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.link); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update() { + // Prevent focusing on editable when invoke('code') is executed + if (!this.context.invoke('editor.hasFocus')) { + this.hide(); + return; + } + + var rng = this.context.invoke('editor.getLastRange'); + + if (rng.isCollapsed() && rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + var href = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href'); + this.$popover.find('a').attr('href', href).text(href); + var pos = dom.posFromPlaceholder(anchor); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return LinkPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImageDialog.js +function ImageDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImageDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImageDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImageDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImageDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var ImageDialog_ImageDialog = /*#__PURE__*/function () { + function ImageDialog(context) { + ImageDialog_classCallCheck(this, ImageDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + ImageDialog_createClass(ImageDialog, [{ + key: "initialize", + value: function initialize() { + var imageLimitation = ''; + + if (this.options.maximumImageFileSize) { + var unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + ' ' + ' KMGTP'[unit] + 'B'; + imageLimitation = "<small>".concat(this.lang.image.maximumFileSize + ' : ' + readableSize, "</small>"); + } + + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group note-group-select-from-files">', '<label for="note-dialog-image-file-' + this.options.id + '" class="note-form-label">' + this.lang.image.selectFromFiles + '</label>', '<input id="note-dialog-image-file-' + this.options.id + '" class="note-image-input form-control-file note-form-control note-input" ', ' type="file" name="files" accept="image/*" multiple="multiple"/>', imageLimitation, '</div>', '<div class="form-group note-group-image-url">', '<label for="note-dialog-image-url-' + this.options.id + '" class="note-form-label">' + this.lang.image.url + '</label>', '<input id="note-dialog-image-url-' + this.options.id + '" class="note-image-url form-control note-form-control note-input" type="text"/>', '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.image.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.image.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "show", + value: function show() { + var _this = this; + + this.context.invoke('editor.saveRange'); + this.showImageDialog().then(function (data) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); + + if (typeof data === 'string') { + // image url + // If onImageLinkInsert set, + if (_this.options.callbacks.onImageLinkInsert) { + _this.context.triggerEvent('image.link.insert', data); + } else { + _this.context.invoke('editor.insertImage', data); + } + } else { + // array of files + _this.context.invoke('editor.insertImagesOrCallback', data); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showImageDialog", + value: function showImageDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $imageInput = _this2.$dialog.find('.note-image-input'); + + var $imageUrl = _this2.$dialog.find('.note-image-url'); + + var $imageBtn = _this2.$dialog.find('.note-image-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); // Cloning imageInput to clear element. + + + $imageInput.replaceWith($imageInput.clone().on('change', function (event) { + deferred.resolve(event.target.files || event.target.value); + }).val('')); + $imageUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($imageBtn, $imageUrl.val()); + }).val(''); + + if (!env.isSupportTouch) { + $imageUrl.trigger('focus'); + } + + $imageBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($imageUrl.val()); + }); + + _this2.bindEnterKey($imageUrl, $imageBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $imageInput.off(); + $imageUrl.off(); + $imageBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return ImageDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImagePopover.js +function ImagePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImagePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImagePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImagePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImagePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + +/** + * Image popover module + * mouse events that show/hide popover will be handled by Handle.js. + * Handle.js will receive the events and invoke 'imagePopover.update'. + */ + +var ImagePopover_ImagePopover = /*#__PURE__*/function () { + function ImagePopover(context) { + var _this = this; + + ImagePopover_classCallCheck(this, ImagePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.editable = context.layoutInfo.editable[0]; + this.options = context.options; + this.events = { + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + ImagePopover_createClass(ImagePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.image); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-image-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.image); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (dom.isImg(target)) { + var position = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target).offset(); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + var pos = {}; + + if (this.options.popatmouse) { + pos.left = event.pageX - 20; + pos.top = event.pageY; + } else { + pos = position; + } + + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return ImagePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/TablePopover.js +function TablePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TablePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function TablePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) TablePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) TablePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var TablePopover_TablePopover = /*#__PURE__*/function () { + function TablePopover(context) { + var _this = this; + + TablePopover_classCallCheck(this, TablePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.update(e.target); + }, + 'summernote.keyup summernote.scroll summernote.change': function summernoteKeyupSummernoteScrollSummernoteChange() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + TablePopover_createClass(TablePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.table); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-table-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.table); // [workaround] Disable Firefox's default table editor + + if (env.isFF) { + document.execCommand('enableInlineTableEditing', false, false); + } + + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target) { + if (this.context.isDisabled()) { + return false; + } + + var isCell = dom.isCell(target); + + if (isCell) { + var pos = dom.posFromPlaceholder(target); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + + return isCell; + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return TablePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/VideoDialog.js +function VideoDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function VideoDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function VideoDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) VideoDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) VideoDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var VideoDialog_VideoDialog = /*#__PURE__*/function () { + function VideoDialog(context) { + VideoDialog_classCallCheck(this, VideoDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + VideoDialog_createClass(VideoDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group row-fluid">', "<label for=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.video.url, " <small class=\"text-muted\">").concat(this.lang.video.providers, "</small></label>"), "<input id=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>"), '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.video.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.video.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "createVideoNode", + value: function createVideoNode(url) { + // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm) + var ytRegExp = /\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/; + var ytRegExpForStart = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/; + var ytMatch = url.match(ytRegExp); + var igRegExp = /(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/; + var igMatch = url.match(igRegExp); + var vRegExp = /\/\/vine\.co\/v\/([a-zA-Z0-9]+)/; + var vMatch = url.match(vRegExp); + var vimRegExp = /\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/; + var vimMatch = url.match(vimRegExp); + var dmRegExp = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/; + var dmMatch = url.match(dmRegExp); + var youkuRegExp = /\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/; + var youkuMatch = url.match(youkuRegExp); + var qqRegExp = /\/\/v\.qq\.com.*?vid=(.+)/; + var qqMatch = url.match(qqRegExp); + var qqRegExp2 = /\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/; + var qqMatch2 = url.match(qqRegExp2); + var mp4RegExp = /^.+.(mp4|m4v)$/; + var mp4Match = url.match(mp4RegExp); + var oggRegExp = /^.+.(ogg|ogv)$/; + var oggMatch = url.match(oggRegExp); + var webmRegExp = /^.+.(webm)$/; + var webmMatch = url.match(webmRegExp); + var fbRegExp = /(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/; + var fbMatch = url.match(fbRegExp); + var $video; + + if (ytMatch && ytMatch[1].length === 11) { + var youtubeId = ytMatch[1]; + var start = 0; + + if (typeof ytMatch[2] !== 'undefined') { + var ytMatchForStart = ytMatch[2].match(ytRegExpForStart); + + if (ytMatchForStart) { + for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) { + start += typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0; + } + } + } + + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : '')).attr('width', '640').attr('height', '360'); + } else if (igMatch && igMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/').attr('width', '612').attr('height', '710').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else if (vMatch && vMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', vMatch[0] + '/embed/simple').attr('width', '600').attr('height', '600').attr('class', 'vine-embed'); + } else if (vimMatch && vimMatch[3].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('src', '//player.vimeo.com/video/' + vimMatch[3]).attr('width', '640').attr('height', '360'); + } else if (dmMatch && dmMatch[2].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2]).attr('width', '640').attr('height', '360'); + } else if (youkuMatch && youkuMatch[1].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '498').attr('width', '510').attr('src', '//player.youku.com/embed/' + youkuMatch[1]); + } else if (qqMatch && qqMatch[1].length || qqMatch2 && qqMatch2[2].length) { + var vid = qqMatch && qqMatch[1].length ? qqMatch[1] : qqMatch2[2]; + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '310').attr('width', '500').attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0'); + } else if (mp4Match || oggMatch || webmMatch) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<video controls>').attr('src', url).attr('width', '640').attr('height', '360'); + } else if (fbMatch && fbMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560').attr('width', '560').attr('height', '301').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else { + // this is not a known video link. Now what, Cat? Now what? + return false; + } + + $video.addClass('note-video-clip'); + return $video[0]; + } + }, { + key: "show", + value: function show() { + var _this = this; + + var text = this.context.invoke('editor.getSelectedText'); + this.context.invoke('editor.saveRange'); + this.showVideoDialog(text).then(function (url) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); // build node + + + var $node = _this.createVideoNode(url); + + if ($node) { + // insert video node + _this.context.invoke('editor.insertNode', $node); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show video dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showVideoDialog", + value: function showVideoDialog() + /* text */ + { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $videoUrl = _this2.$dialog.find('.note-video-url'); + + var $videoBtn = _this2.$dialog.find('.note-video-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + $videoUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($videoBtn, $videoUrl.val()); + }); + + if (!env.isSupportTouch) { + $videoUrl.trigger('focus'); + } + + $videoBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($videoUrl.val()); + }); + + _this2.bindEnterKey($videoUrl, $videoBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $videoUrl.off(); + $videoBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return VideoDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HelpDialog.js +function HelpDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HelpDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HelpDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) HelpDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) HelpDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var HelpDialog_HelpDialog = /*#__PURE__*/function () { + function HelpDialog(context) { + HelpDialog_classCallCheck(this, HelpDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + HelpDialog_createClass(HelpDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<p class="text-center">', '<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ', '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', '</p>'].join(''); + this.$dialog = this.ui.dialog({ + title: this.lang.options.help, + fade: this.options.dialogsFade, + body: this.createShortcutList(), + footer: body, + callback: function callback($node) { + $node.find('.modal-body,.note-modal-body').css({ + 'max-height': 300, + 'overflow': 'scroll' + }); + } + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "createShortcutList", + value: function createShortcutList() { + var _this = this; + + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + return Object.keys(keyMap).map(function (key) { + var command = keyMap[key]; + var $row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div><div class="help-list-item"></div></div>'); + $row.append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<label><kbd>' + key + '</kdb></label>').css({ + 'width': 180, + 'margin-right': 10 + })).append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<span/>').html(_this.context.memo('help.' + command) || command)); + return $row.html(); + }).join(''); + } + /** + * show help dialog + * + * @return {Promise} + */ + + }, { + key: "showHelpDialog", + value: function showHelpDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + deferred.resolve(); + }); + + _this2.ui.showDialog(_this2.$dialog); + }).promise(); + } + }, { + key: "show", + value: function show() { + var _this3 = this; + + this.context.invoke('editor.saveRange'); + this.showHelpDialog().then(function () { + _this3.context.invoke('editor.restoreRange'); + }); + } + }]); + + return HelpDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AirPopover.js +function AirPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AirPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AirPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) AirPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) AirPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + +var AIRMODE_POPOVER_X_OFFSET = -5; +var AIRMODE_POPOVER_Y_OFFSET = 5; + +var AirPopover_AirPopover = /*#__PURE__*/function () { + function AirPopover(context) { + var _this = this; + + AirPopover_classCallCheck(this, AirPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.hidable = true; + this.onContextmenu = false; + this.pageX = null; + this.pageY = null; + this.events = { + 'summernote.contextmenu': function summernoteContextmenu(e) { + if (_this.options.editing) { + e.preventDefault(); + e.stopPropagation(); + _this.onContextmenu = true; + + _this.update(true); + } + }, + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + }, + 'summernote.keyup summernote.mouseup summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteScroll(we, e) { + if (_this.options.editing && !_this.onContextmenu) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + + _this.update(); + } + + _this.onContextmenu = false; + }, + 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteChangeSummernoteDialogShownSummernoteBlur() { + _this.hide(); + }, + 'summernote.focusout': function summernoteFocusout() { + if (!_this.$popover.is(':active,:focus')) { + _this.hide(); + } + } + }; + } + + AirPopover_createClass(AirPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.options.airMode && !lists.isEmpty(this.options.popover.air); + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$popover = this.ui.popover({ + className: 'note-air-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.air); // disable hiding this popover preemptively by 'summernote.blur' event. + + this.$popover.on('mousedown', function () { + _this2.hidable = false; + }); // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored). + + this.$popover.on('mouseup', function () { + _this2.hidable = true; + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(forcelyOpen) { + var styleInfo = this.context.invoke('editor.currentStyle'); + + if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) { + var rect = { + left: this.pageX, + top: this.pageY + }; + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + rect.top -= containerOffset.top; + rect.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET, + top: rect.top + AIRMODE_POPOVER_Y_OFFSET + }); + this.context.invoke('buttons.updateCurrentStyle', this.$popover); + } else { + this.hide(); + } + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + if (this.hidable) { + this.$popover.hide(); + } + } + }]); + + return AirPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HintPopover.js +function HintPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HintPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HintPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) HintPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) HintPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var POPOVER_DIST = 5; + +var HintPopover_HintPopover = /*#__PURE__*/function () { + function HintPopover(context) { + var _this = this; + + HintPopover_classCallCheck(this, HintPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.hint = this.options.hint || []; + this.direction = this.options.hintDirection || 'bottom'; + this.hints = Array.isArray(this.hint) ? this.hint : [this.hint]; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + HintPopover_createClass(HintPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.hints.length > 0; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.lastWordRange = null; + this.matchingWord = null; + this.$popover = this.ui.popover({ + className: 'note-hint-popover', + hideArrow: true, + direction: '' + }).render().appendTo(this.options.container); + this.$popover.hide(); + this.$content = this.$popover.find('.popover-content,.note-popover-content'); + this.$content.on('click', '.note-hint-item', function (e) { + _this2.$content.find('.active').removeClass('active'); + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).addClass('active'); + + _this2.replace(); + }); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "selectItem", + value: function selectItem($item) { + this.$content.find('.active').removeClass('active'); + $item.addClass('active'); + this.$content[0].scrollTop = $item[0].offsetTop - this.$content.innerHeight() / 2; + } + }, { + key: "moveDown", + value: function moveDown() { + var $current = this.$content.find('.note-hint-item.active'); + var $next = $current.next(); + + if ($next.length) { + this.selectItem($next); + } else { + var $nextGroup = $current.parent().next(); + + if (!$nextGroup.length) { + $nextGroup = this.$content.find('.note-hint-group').first(); + } + + this.selectItem($nextGroup.find('.note-hint-item').first()); + } + } + }, { + key: "moveUp", + value: function moveUp() { + var $current = this.$content.find('.note-hint-item.active'); + var $prev = $current.prev(); + + if ($prev.length) { + this.selectItem($prev); + } else { + var $prevGroup = $current.parent().prev(); + + if (!$prevGroup.length) { + $prevGroup = this.$content.find('.note-hint-group').last(); + } + + this.selectItem($prevGroup.find('.note-hint-item').last()); + } + } + }, { + key: "replace", + value: function replace() { + var $item = this.$content.find('.note-hint-item.active'); + + if ($item.length) { + var node = this.nodeFromItem($item); // If matchingWord length = 0 -> capture OK / open hint / but as mention capture "" (\w*) + + if (this.matchingWord !== null && this.matchingWord.length === 0) { + this.lastWordRange.so = this.lastWordRange.eo; // Else si > 0 and normal case -> adjust range "before" for correct position of insertion + } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) { + var rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length; + + if (rangeCompute > 0) { + this.lastWordRange.so += rangeCompute; + } + } + + this.lastWordRange.insertNode(node); + + if (this.options.hintSelect === 'next') { + var blank = document.createTextNode(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).after(blank); + range.createFromNodeBefore(blank).select(); + } else { + range.createFromNodeAfter(node).select(); + } + + this.lastWordRange = null; + this.hide(); + this.context.invoke('editor.focus'); + } + } + }, { + key: "nodeFromItem", + value: function nodeFromItem($item) { + var hint = this.hints[$item.data('index')]; + var item = $item.data('item'); + var node = hint.content ? hint.content(item) : item; + + if (typeof node === 'string') { + node = dom.createText(node); + } + + return node; + } + }, { + key: "createItemTemplates", + value: function createItemTemplates(hintIdx, items) { + var hint = this.hints[hintIdx]; + return items.map(function (item + /*, idx */ + ) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-item"/>'); + $item.append(hint.template ? hint.template(item) : item + ''); + $item.data({ + 'index': hintIdx, + 'item': item + }); + return $item; + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (!this.$popover.is(':visible')) { + return; + } + + if (e.keyCode === core_key.code.ENTER) { + e.preventDefault(); + this.replace(); + } else if (e.keyCode === core_key.code.UP) { + e.preventDefault(); + this.moveUp(); + } else if (e.keyCode === core_key.code.DOWN) { + e.preventDefault(); + this.moveDown(); + } + } + }, { + key: "searchKeyword", + value: function searchKeyword(index, keyword, callback) { + var hint = this.hints[index]; + + if (hint && hint.match.test(keyword) && hint.search) { + var matches = hint.match.exec(keyword); + this.matchingWord = matches[0]; + hint.search(matches[1], callback); + } else { + callback(); + } + } + }, { + key: "createGroup", + value: function createGroup(idx, keyword) { + var _this3 = this; + + var $group = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-group note-hint-group-' + idx + '"></div>'); + this.searchKeyword(idx, keyword, function (items) { + items = items || []; + + if (items.length) { + $group.html(_this3.createItemTemplates(idx, items)); + + _this3.show(); + } + }); + return $group; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + var _this4 = this; + + if (!lists.contains([core_key.code.ENTER, core_key.code.UP, core_key.code.DOWN], e.keyCode)) { + var _range = this.context.invoke('editor.getLastRange'); + + var wordRange, keyword; + + if (this.options.hintMode === 'words') { + wordRange = _range.getWordsRange(_range); + keyword = wordRange.toString(); + this.hints.forEach(function (hint) { + if (hint.match.test(keyword)) { + wordRange = _range.getWordsMatchRange(hint.match); + return false; + } + }); + + if (!wordRange) { + this.hide(); + return; + } + + keyword = wordRange.toString(); + } else { + wordRange = _range.getWordRange(); + keyword = wordRange.toString(); + } + + if (this.hints.length && keyword) { + this.$content.empty(); + var bnd = func.rect2bnd(lists.last(wordRange.getClientRects())); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + + if (bnd) { + bnd.top -= containerOffset.top; + bnd.left -= containerOffset.left; + this.$popover.hide(); + this.lastWordRange = wordRange; + this.hints.forEach(function (hint, idx) { + if (hint.match.test(keyword)) { + _this4.createGroup(idx, keyword).appendTo(_this4.$content); + } + }); // select first .note-hint-item + + this.$content.find('.note-hint-item:first').addClass('active'); // set position for popover after group is created + + if (this.direction === 'top') { + this.$popover.css({ + left: bnd.left, + top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST + }); + } else { + this.$popover.css({ + left: bnd.left, + top: bnd.top + bnd.height + POPOVER_DIST + }); + } + } + } else { + this.hide(); + } + } + } + }, { + key: "show", + value: function show() { + this.$popover.show(); + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return HintPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/settings.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + version: '0.8.18', + plugins: {}, + dom: dom, + range: range, + lists: lists, + options: { + langInfo: external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], + editing: true, + modules: { + 'editor': Editor_Editor, + 'clipboard': Clipboard_Clipboard, + 'dropzone': Dropzone_Dropzone, + 'codeview': Codeview_CodeView, + 'statusbar': Statusbar_Statusbar, + 'fullscreen': Fullscreen_Fullscreen, + 'handle': Handle_Handle, + // FIXME: HintPopover must be front of autolink + // - Script error about range when Enter key is pressed on hint popover + 'hintPopover': HintPopover_HintPopover, + 'autoLink': AutoLink_AutoLink, + 'autoSync': AutoSync_AutoSync, + 'autoReplace': AutoReplace_AutoReplace, + 'placeholder': Placeholder_Placeholder, + 'buttons': Buttons_Buttons, + 'toolbar': Toolbar_Toolbar, + 'linkDialog': LinkDialog_LinkDialog, + 'linkPopover': LinkPopover_LinkPopover, + 'imageDialog': ImageDialog_ImageDialog, + 'imagePopover': ImagePopover_ImagePopover, + 'tablePopover': TablePopover_TablePopover, + 'videoDialog': VideoDialog_VideoDialog, + 'helpDialog': HelpDialog_HelpDialog, + 'airPopover': AirPopover_AirPopover + }, + buttons: {}, + lang: 'en-US', + followingToolbar: false, + toolbarPosition: 'top', + otherStaticBar: '', + // toolbar + codeviewKeepButton: false, + toolbar: [['style', ['style']], ['font', ['bold', 'underline', 'clear']], ['fontname', ['fontname']], ['color', ['color']], ['para', ['ul', 'ol', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture', 'video']], ['view', ['fullscreen', 'codeview', 'help']]], + // popover + popatmouse: true, + popover: { + image: [['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], ['float', ['floatLeft', 'floatRight', 'floatNone']], ['remove', ['removeMedia']]], + link: [['link', ['linkDialogShow', 'unlink']]], + table: [['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]], + air: [['color', ['color']], ['font', ['bold', 'underline', 'clear']], ['para', ['ul', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture']], ['view', ['fullscreen', 'codeview']]] + }, + // air mode: inline editor + airMode: false, + overrideContextMenu: false, + // TBD + width: null, + height: null, + linkTargetBlank: true, + useProtocol: true, + defaultProtocol: 'http://', + focus: false, + tabDisabled: false, + tabSize: 4, + styleWithCSS: false, + shortcuts: true, + textareaAutoSync: true, + tooltip: 'auto', + container: null, + maxTextLength: 0, + blockquoteBreakingLevel: 2, + spellCheck: true, + disableGrammar: false, + placeholder: null, + inheritPlaceholder: false, + // TODO: need to be documented + recordEveryKeystroke: false, + historyLimit: 200, + // TODO: need to be documented + showDomainOnlyForAutolink: false, + // TODO: need to be documented + hintMode: 'word', + hintSelect: 'after', + hintDirection: 'bottom', + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande', 'Tahoma', 'Times New Roman', 'Verdana'], + fontNamesIgnoreCheck: [], + addDefaultFonts: true, + fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'], + fontSizeUnits: ['px', 'pt'], + // pallete colors(n x n) + colors: [['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'], ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'], ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'], ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'], ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'], ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'], ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'], ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031']], + // http://chir.ag/projects/name-that-color/ + colorsName: [['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'], ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'], ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'], ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'], ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'], ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'], ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'], ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou']], + colorButton: { + foreColor: '#000000', + backColor: '#FFFF00' + }, + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + tableClassName: 'table table-bordered', + insertTableMaxSize: { + col: 10, + row: 10 + }, + // By default, dialogs are attached in container. + dialogsInBody: false, + dialogsFade: false, + maximumImageFileSize: null, + callbacks: { + onBeforeCommand: null, + onBlur: null, + onBlurCodeview: null, + onChange: null, + onChangeCodeview: null, + onDialogShown: null, + onEnter: null, + onFocus: null, + onImageLinkInsert: null, + onImageUpload: null, + onImageUploadError: null, + onInit: null, + onKeydown: null, + onKeyup: null, + onMousedown: null, + onMouseup: null, + onPaste: null, + onScroll: null + }, + codemirror: { + mode: 'text/html', + htmlMode: true, + lineNumbers: true + }, + codeviewFilter: false, + codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi, + codeviewIframeFilter: true, + codeviewIframeWhitelistSrc: [], + codeviewIframeWhitelistSrcBase: ['www.youtube.com', 'www.youtube-nocookie.com', 'www.facebook.com', 'vine.co', 'instagram.com', 'player.vimeo.com', 'www.dailymotion.com', 'player.youku.com', 'v.qq.com'], + keyMap: { + pc: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'linkDialog.show' + }, + mac: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'linkDialog.show' + } + }, + icons: { + 'align': 'note-icon-align', + 'alignCenter': 'note-icon-align-center', + 'alignJustify': 'note-icon-align-justify', + 'alignLeft': 'note-icon-align-left', + 'alignRight': 'note-icon-align-right', + 'rowBelow': 'note-icon-row-below', + 'colBefore': 'note-icon-col-before', + 'colAfter': 'note-icon-col-after', + 'rowAbove': 'note-icon-row-above', + 'rowRemove': 'note-icon-row-remove', + 'colRemove': 'note-icon-col-remove', + 'indent': 'note-icon-align-indent', + 'outdent': 'note-icon-align-outdent', + 'arrowsAlt': 'note-icon-arrows-alt', + 'bold': 'note-icon-bold', + 'caret': 'note-icon-caret', + 'circle': 'note-icon-circle', + 'close': 'note-icon-close', + 'code': 'note-icon-code', + 'eraser': 'note-icon-eraser', + 'floatLeft': 'note-icon-float-left', + 'floatRight': 'note-icon-float-right', + 'font': 'note-icon-font', + 'frame': 'note-icon-frame', + 'italic': 'note-icon-italic', + 'link': 'note-icon-link', + 'unlink': 'note-icon-chain-broken', + 'magic': 'note-icon-magic', + 'menuCheck': 'note-icon-menu-check', + 'minus': 'note-icon-minus', + 'orderedlist': 'note-icon-orderedlist', + 'pencil': 'note-icon-pencil', + 'picture': 'note-icon-picture', + 'question': 'note-icon-question', + 'redo': 'note-icon-redo', + 'rollback': 'note-icon-rollback', + 'square': 'note-icon-square', + 'strikethrough': 'note-icon-strikethrough', + 'subscript': 'note-icon-subscript', + 'superscript': 'note-icon-superscript', + 'table': 'note-icon-table', + 'textHeight': 'note-icon-text-height', + 'trash': 'note-icon-trash', + 'underline': 'note-icon-underline', + 'undo': 'note-icon-undo', + 'unorderedlist': 'note-icon-unorderedlist', + 'video': 'note-icon-video' + } + } +}); + +/***/ }), + +/***/ 5: +/***/ (function(module, exports, __webpack_require__) { + +// extracted by mini-css-extract-plugin + +/***/ }), + +/***/ 53: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// EXTERNAL MODULE: ./src/js/base/renderer.js +var renderer = __webpack_require__(1); + +// CONCATENATED MODULE: ./src/js/bs4/ui.js +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + +var editor = renderer["a" /* default */].create('<div class="note-editor note-frame card"/>'); +var toolbar = renderer["a" /* default */].create('<div class="note-toolbar card-header" role="toolbar"/>'); +var editingArea = renderer["a" /* default */].create('<div class="note-editing-area"/>'); +var codable = renderer["a" /* default */].create('<textarea class="note-codable" aria-multiline="true"/>'); +var editable = renderer["a" /* default */].create('<div class="note-editable card-block" contentEditable="true" role="textbox" aria-multiline="true"/>'); +var statusbar = renderer["a" /* default */].create(['<output class="note-status-output" role="status" aria-live="polite"></output>', '<div class="note-statusbar" role="status">', '<div class="note-resizebar" aria-label="Resize">', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '</div>', '</div>'].join('')); +var airEditor = renderer["a" /* default */].create('<div class="note-editor note-airframe"/>'); +var airEditable = renderer["a" /* default */].create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>', '<output class="note-status-output" role="status" aria-live="polite"></output>'].join('')); +var buttonGroup = renderer["a" /* default */].create('<div class="note-btn-group btn-group">'); +var dropdown = renderer["a" /* default */].create('<div class="note-dropdown-menu dropdown-menu" role="list">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + var option = _typeof(item) === 'object' ? item.option : undefined; + var dataValue = 'data-value="' + value + '"'; + var dataOption = option !== undefined ? ' data-option="' + option + '"' : ''; + return '<a class="dropdown-item" href="#" ' + (dataValue + dataOption) + ' role="listitem" aria-label="' + value + '">' + content + '</a>'; + }).join('') : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); + +var dropdownButtonContents = function dropdownButtonContents(contents) { + return contents; +}; + +var dropdownCheck = renderer["a" /* default */].create('<div class="note-dropdown-menu dropdown-menu note-check" role="list">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + return '<a class="dropdown-item" href="#" data-value="' + value + '" role="listitem" aria-label="' + item + '">' + icon(options.checkClassName) + ' ' + content + '</a>'; + }).join('') : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); +var dialog = renderer["a" /* default */].create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>', function ($node, options) { + if (options.fade) { + $node.addClass('fade'); + } + + $node.attr({ + 'aria-label': options.title + }); + $node.html(['<div class="modal-dialog">', '<div class="modal-content">', options.title ? '<div class="modal-header">' + '<h4 class="modal-title">' + options.title + '</h4>' + '<button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>' + '</div>' : '', '<div class="modal-body">' + options.body + '</div>', options.footer ? '<div class="modal-footer">' + options.footer + '</div>' : '', '</div>', '</div>'].join('')); +}); +var popover = renderer["a" /* default */].create(['<div class="note-popover popover in">', '<div class="arrow"></div>', '<div class="popover-content note-children-container"></div>', '</div>'].join(''), function ($node, options) { + var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom'; + $node.addClass(direction); + + if (options.hideArrow) { + $node.find('.arrow').hide(); + } +}); +var ui_checkbox = renderer["a" /* default */].create('<div class="form-check"></div>', function ($node, options) { + $node.html(['<label class="form-check-label"' + (options.id ? ' for="note-' + options.id + '"' : '') + '>', '<input type="checkbox" class="form-check-input"' + (options.id ? ' id="note-' + options.id + '"' : ''), options.checked ? ' checked' : '', ' aria-label="' + (options.text ? options.text : '') + '"', ' aria-checked="' + (options.checked ? 'true' : 'false') + '"/>', ' ' + (options.text ? options.text : '') + '</label>'].join('')); +}); + +var icon = function icon(iconClassName, tagName) { + tagName = tagName || 'i'; + return '<' + tagName + ' class="' + iconClassName + '"></' + tagName + '>'; +}; + +var ui_ui = function ui(editorOptions) { + return { + editor: editor, + toolbar: toolbar, + editingArea: editingArea, + codable: codable, + editable: editable, + statusbar: statusbar, + airEditor: airEditor, + airEditable: airEditable, + buttonGroup: buttonGroup, + dropdown: dropdown, + dropdownButtonContents: dropdownButtonContents, + dropdownCheck: dropdownCheck, + dialog: dialog, + popover: popover, + icon: icon, + checkbox: ui_checkbox, + options: editorOptions, + palette: function palette($node, options) { + return renderer["a" /* default */].create('<div class="note-color-palette"/>', function ($node, options) { + var contents = []; + + for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) { + var eventName = options.eventName; + var colors = options.colors[row]; + var colorsName = options.colorsName[row]; + var buttons = []; + + for (var col = 0, colSize = colors.length; col < colSize; col++) { + var color = colors[col]; + var colorName = colorsName[col]; + buttons.push(['<button type="button" class="note-color-btn"', 'style="background-color:', color, '" ', 'data-event="', eventName, '" ', 'data-value="', color, '" ', 'title="', colorName, '" ', 'aria-label="', colorName, '" ', 'data-toggle="button" tabindex="-1"></button>'].join('')); + } + + contents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + + $node.html(contents.join('')); + + if (options.tooltip) { + $node.find('.note-color-btn').tooltip({ + container: options.container || editorOptions.container, + trigger: 'hover', + placement: 'bottom' + }); + } + })($node, options); + }, + button: function button($node, options) { + return renderer["a" /* default */].create('<button type="button" class="note-btn btn btn-light btn-sm" tabindex="-1">', function ($node, options) { + if (options && options.tooltip) { + $node.attr({ + title: options.tooltip, + 'aria-label': options.tooltip + }).tooltip({ + container: options.container || editorOptions.container, + trigger: 'hover', + placement: 'bottom' + }).on('click', function (e) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).tooltip('hide'); + }); + } + + if (options && options.codeviewButton) { + $node.addClass('note-codeview-keep'); + } + })($node, options); + }, + toggleBtn: function toggleBtn($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }, + toggleBtnActive: function toggleBtnActive($btn, isActive) { + $btn.toggleClass('active', isActive); + }, + onDialogShown: function onDialogShown($dialog, handler) { + $dialog.one('shown.bs.modal', handler); + }, + onDialogHidden: function onDialogHidden($dialog, handler) { + $dialog.one('hidden.bs.modal', handler); + }, + showDialog: function showDialog($dialog) { + $dialog.modal('show'); + }, + hideDialog: function hideDialog($dialog) { + $dialog.modal('hide'); + }, + createLayout: function createLayout($note) { + var $editor = (editorOptions.airMode ? airEditor([editingArea([codable(), airEditable()])]) : editorOptions.toolbarPosition === 'bottom' ? editor([editingArea([codable(), editable()]), toolbar(), statusbar()]) : editor([toolbar(), editingArea([codable(), editable()]), statusbar()])).render(); + $editor.insertAfter($note); + return { + note: $note, + editor: $editor, + toolbar: $editor.find('.note-toolbar'), + editingArea: $editor.find('.note-editing-area'), + editable: $editor.find('.note-editable'), + codable: $editor.find('.note-codable'), + statusbar: $editor.find('.note-statusbar') + }; + }, + removeLayout: function removeLayout($note, layoutInfo) { + $note.html(layoutInfo.editable.html()); + layoutInfo.editor.remove(); + $note.show(); + } + }; +}; + +/* harmony default export */ var bs4_ui = (ui_ui); +// EXTERNAL MODULE: ./src/js/base/settings.js + 37 modules +var settings = __webpack_require__(3); + +// EXTERNAL MODULE: ./src/styles/summernote-bs4.scss +var summernote_bs4 = __webpack_require__(5); + +// CONCATENATED MODULE: ./src/js/bs4/settings.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + ui_template: bs4_ui, + "interface": 'bs4' +}); +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options.styleTags = ['p', { + title: 'Blockquote', + tag: 'blockquote', + className: 'blockquote', + value: 'blockquote' +}, 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=summernote-bs4.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-bs4.js.map b/admin/vendors/summernote/dist/summernote-bs4.js.map new file mode 100644 index 0000000000000000000000000000000000000000..e445493d441a3b4b0dd315979e6eb26575db1923 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/styles/summernote-bs4.scss","webpack:///./src/js/bs4/ui.js","webpack:///./src/js/bs4/settings.js"],"names":["Renderer","markup","children","options","callback","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","create","arguments","Array","isArray","summernote","lang","extend","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","define","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","isFontInstalled","testFontName","testText","testSize","canvas","document","createElement","context","getContext","originalWidth","measureText","width","userAgent","navigator","isMSIE","test","browserVersion","matches","exec","parseFloat","isEdge","isSupportTouch","window","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isW3CRangeSupport","createRange","eq","itemA","itemB","eq2","peq2","propName","ok","fail","not","f","apply","and","fA","fB","item","self","a","invoke","obj","method","idCounter","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","key","Object","prototype","hasOwnProperty","call","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","expression","head","array","last","initial","slice","tail","pred","idx","len","all","contains","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aTail","aLast","compact","aResult","push","unique","results","next","prev","NBSP_CHAR","String","fromCharCode","ZERO_WIDTH_NBSP_CHAR","isEditable","node","hasClass","isControlSizing","makePredByNodeName","nodeName","isText","nodeType","isElement","isVoid","isPara","isHeading","isPre","isLi","isPurePara","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isParaInline","ancestor","isBodyInline","isBody","isClosestSibling","nodeA","nodeB","nextSibling","previousSibling","withClosestSiblings","siblings","blankHTML","env","nodeLength","nodeValue","childNodes","deepestChildIsEmpty","firstElementChild","innerHTML","paddingBlankHTML","parentNode","singleChildAncestor","listAncestor","ancestors","el","lastAncestor","filter","commonAncestor","n","listPrev","nodes","listNext","listDescendant","descendants","fnWalk","current","wrap","wrapperName","parent","wrapper","insertBefore","appendChild","insertAfter","preceding","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","isLeftEdgePointOf","isRightEdgePointOf","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","undefined","isSamePoint","pointA","pointB","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","isSkipOffset","makeOffsetPath","reverse","fromOffsetPath","offsets","i","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","root","splitPoint","topAncestor","splitRoot","container","pivot","createText","text","createTextNode","isRemoveChild","removeNode","removeChild","removeWhile","replace","newNode","cssText","isTextarea","value","stripLinebreaks","val","isNewlineOnBlock","regexTag","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","blank","emptyPara","isBlock","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","isEmptyAnchor","Context","$note","memos","modules","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","module","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","textRangeToPoint","textRange","isStart","parentElement","tester","body","createTextRange","prevContainer","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","dummy","cont","pointToTextRange","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","info","moveStart","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","s","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","readFileAsDataURL","file","Deferred","deferred","FileReader","onload","dataURL","resolve","onerror","err","reject","readAsDataURL","promise","createImage","$img","one","detach","css","display","appendTo","History","stack","stackOffset","$editable","range","emptyBookmark","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","properties","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","orderedTypes","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setStartPoint","tagName","colPos","cellIndex","rowPos","rowIndex","setVirtualTablePosition","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","createVirtualTable","rows","cells","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","init","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","vTable","actions","idCell","currentCell","tdAttributes","baseCellTr","isTopFromRowSpan","newTd","removeAttr","setAttribute","before","lastTrIndex","after","rowsGroup","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","hasColspan","colCount","rowCount","tds","tdHTML","idxCol","trs","trHTML","idxRow","$table","tableClassName","KEY_BOGUS","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","startRange","endRange","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","then","$image","min","show","files","filename","maximumImageFileSize","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","bind","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","EDITABLE_PADDING","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","defaultScheme","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","o","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","$catcher","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","PX_PER_EM","$dimensionDisplay","$highlighted","$unhighlighted","posOffset","offsetX","posCatcher","pageX","pageY","offsetY","c","ceil","r","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","editorOffsetBottom","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","buttonClass","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","ytRegExp","ytRegExpForStart","ytMatch","igRegExp","igMatch","vRegExp","vMatch","vimRegExp","vimMatch","dmRegExp","dmMatch","youkuRegExp","youkuMatch","qqRegExp","qqMatch","qqRegExp2","qqMatch2","mp4RegExp","mp4Match","oggRegExp","oggMatch","webmRegExp","webmMatch","fbRegExp","fbMatch","$video","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AIRMODE_POPOVER_X_OFFSET","AIRMODE_POPOVER_Y_OFFSET","AirPopover","hidable","onContextmenu","air","forcelyOpen","POPOVER_DIST","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","mode","htmlMode","lineNumbers","pc","mac","renderer","airEditor","airEditable","option","dataValue","dataOption","iconClassName","editorOptions","rowSize","colSize","colorName","placement","codeviewButton","isEnable","isActive","modal"],"mappings":"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","file":"summernote-bs4.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 53);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","// extracted by mini-css-extract-plugin","import $ from 'jquery';\nimport renderer from '../base/renderer';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame card\"/>');\nconst toolbar = renderer.create('<div class=\"note-toolbar card-header\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable card-block\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"Resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group btn-group\">');\n\nconst dropdown = renderer.create('<div class=\"note-dropdown-menu dropdown-menu\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const option = (typeof item === 'object') ? item.option : undefined;\n\n const dataValue = 'data-value=\"' + value + '\"';\n const dataOption = (option !== undefined) ? ' data-option=\"' + option + '\"' : '';\n return '<a class=\"dropdown-item\" href=\"#\" ' + (dataValue + dataOption) + ' role=\"listitem\" aria-label=\"' + value + '\">' + content + '</a>';\n }).join('') : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents) {\n return contents;\n};\n\nconst dropdownCheck = renderer.create('<div class=\"note-dropdown-menu dropdown-menu note-check\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n return '<a class=\"dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + item + '\">' + icon(options.checkClassName) + ' ' + content + '</a>';\n }).join('') : options.items;\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dialog = renderer.create('<div class=\"modal note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"modal-dialog\">',\n '<div class=\"modal-content\">',\n (options.title ? '<div class=\"modal-header\">' +\n '<h4 class=\"modal-title\">' + options.title + '</h4>' +\n '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" aria-hidden=\"true\">×</button>' +\n '</div>' : ''),\n '<div class=\"modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n '</div>',\n ].join(''));\n});\n\nconst popover = renderer.create([\n '<div class=\"note-popover popover in\">',\n '<div class=\"arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction);\n\n if (options.hideArrow) {\n $node.find('.arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"form-check\"></div>', function($node, options) {\n $node.html([\n '<label class=\"form-check-label\"' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input type=\"checkbox\" class=\"form-check-input\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-label=\"' + (options.text ? options.text : '') + '\"',\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n ' ' + (options.text ? options.text : '') +\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"></' + tagName+'>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n dropdown: dropdown,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheck: dropdownCheck,\n dialog: dialog,\n popover: popover,\n icon: icon,\n checkbox: checkbox,\n options: editorOptions,\n\n palette: function($node, options) {\n return renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n if (options.tooltip) {\n $node.find('.note-color-btn').tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n });\n }\n })($node, options);\n },\n\n button: function($node, options) {\n return renderer.create('<button type=\"button\" class=\"note-btn btn btn-light btn-sm\" tabindex=\"-1\">', function($node, options) {\n if (options && options.tooltip) {\n $node.attr({\n title: options.tooltip,\n 'aria-label': options.tooltip,\n }).tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n }).on('click', (e) => {\n $(e.currentTarget).tooltip('hide');\n });\n }\n if (options && options.codeviewButton) {\n $node.addClass('note-codeview-keep');\n }\n })($node, options);\n },\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('shown.bs.modal', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('hidden.bs.modal', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.modal('show');\n },\n\n hideDialog: function($dialog) {\n $dialog.modal('hide');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-bs4.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'bs4',\n});\n\n$.summernote.options.styleTags = [\n 'p',\n { title: 'Blockquote', tag: 'blockquote', className: 'blockquote', value: 'blockquote' },\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n];\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-bs4.min.css b/admin/vendors/summernote/dist/summernote-bs4.min.css new file mode 100644 index 0000000000000000000000000000000000000000..a17467d21c042c430a90c2520475605cb6abc070 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.min.css @@ -0,0 +1 @@ +@font-face{font-family:summernote;font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class*=" note-icon"]:before,[class^=note-icon]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:""}.note-icon-align-center:before{content:""}.note-icon-align-indent:before{content:""}.note-icon-align-justify:before{content:""}.note-icon-align-left:before{content:""}.note-icon-align-outdent:before{content:""}.note-icon-align-right:before{content:""}.note-icon-arrow-circle-down:before{content:""}.note-icon-arrow-circle-left:before{content:""}.note-icon-arrow-circle-right:before{content:""}.note-icon-arrow-circle-up:before{content:""}.note-icon-arrows-alt:before{content:""}.note-icon-arrows-h:before{content:""}.note-icon-arrows-v:before{content:""}.note-icon-bold:before{content:""}.note-icon-caret:before{content:""}.note-icon-chain-broken:before{content:""}.note-icon-circle:before{content:""}.note-icon-close:before{content:""}.note-icon-code:before{content:""}.note-icon-col-after:before{content:""}.note-icon-col-before:before{content:""}.note-icon-col-remove:before{content:""}.note-icon-eraser:before{content:""}.note-icon-float-left:before{content:""}.note-icon-float-none:before{content:""}.note-icon-float-right:before{content:""}.note-icon-font:before{content:""}.note-icon-frame:before{content:""}.note-icon-italic:before{content:""}.note-icon-link:before{content:""}.note-icon-magic:before{content:""}.note-icon-menu-check:before{content:""}.note-icon-minus:before{content:""}.note-icon-orderedlist:before{content:""}.note-icon-pencil:before{content:""}.note-icon-picture:before{content:""}.note-icon-question:before{content:""}.note-icon-redo:before{content:""}.note-icon-rollback:before{content:""}.note-icon-row-above:before{content:""}.note-icon-row-below:before{content:""}.note-icon-row-remove:before{content:""}.note-icon-special-character:before{content:""}.note-icon-square:before{content:""}.note-icon-strikethrough:before{content:""}.note-icon-subscript:before{content:""}.note-icon-summernote:before{content:""}.note-icon-superscript:before{content:""}.note-icon-table:before{content:""}.note-icon-text-height:before{content:""}.note-icon-trash:before{content:""}.note-icon-underline:before{content:""}.note-icon-undo:before{content:""}.note-icon-unorderedlist:before{content:""}.note-icon-video:before{content:""}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:hsla(0,0%,50.2%,.11)}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{margin:-7px 0 0;padding:7px 10px 2px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{color:#3c763d!important;background-color:#dff0d8!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{color:#31708f!important;background-color:#d9edf7!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{color:#8a6d3b!important;background-color:#fcf8e3!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{color:#a94442!important;background-color:#f2dede!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:hsla(0,0%,50.2%,.11);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{right:0;left:auto}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{right:9px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{right:10px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:grey}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}.note-toolbar{background:hsla(0,0%,50.2%,.11)}.note-btn-group .note-btn{border-color:rgba(0,0,0,.2);padding:.28rem .65rem;font-size:13px} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-bs4.min.js b/admin/vendors/summernote/dist/summernote-bs4.min.js new file mode 100644 index 0000000000000000000000000000000000000000..8e1c4cf62f4fc238d90882b55d26f96ca5169813 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.min.js @@ -0,0 +1,3 @@ +/*! For license information please see summernote-bs4.min.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(window,(function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=53)}({0:function(e,n){e.exports=t},1:function(t,e,n){"use strict";var o=n(0),i=n.n(o);function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var s=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.markup=e,this.children=n,this.options=o,this.callback=i}var e,n,o;return e=t,(n=[{key:"render",value:function(t){var e=i()(this.markup);if(this.options&&this.options.contents&&e.html(this.options.contents),this.options&&this.options.className&&e.addClass(this.options.className),this.options&&this.options.data&&i.a.each(this.options.data,(function(t,n){e.attr("data-"+t,n)})),this.options&&this.options.click&&e.on("click",this.options.click),this.children){var n=e.find(".note-children-container");this.children.forEach((function(t){t.render(n.length?n:e)}))}return this.callback&&this.callback(e,this.options),this.options&&this.options.callback&&this.options.callback(e),t&&t.append(e),e}}])&&a(e.prototype,n),o&&a(e,o),t}();e.a={create:function(t,e){return function(){var n="object"===r(arguments[1])?arguments[1]:arguments[0],o=Array.isArray(arguments[0])?arguments[0]:[];return n&&n.children&&(o=n.children),new s(t,o,n,e)}}}},2:function(t,e){(function(e){t.exports=e}).call(this,{})},3:function(t,e,n){"use strict";var o=n(0),i=n.n(o);i.a.summernote=i.a.summernote||{lang:{}},i.a.extend(i.a.summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window",useProtocol:"Use default protocol"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}});var r="function"==typeof define&&n(2),a=["sans-serif","serif","monospace","cursive","fantasy"];function s(t){return-1===i.a.inArray(t.toLowerCase(),a)?"'".concat(t,"'"):t}var l,c=navigator.userAgent,u=/MSIE|Trident/i.test(c);if(u){var d=/MSIE (\d+[.]\d+)/.exec(c);d&&(l=parseFloat(d[1])),(d=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c))&&(l=parseFloat(d[1]))}var h=/Edge\/\d+/.test(c),f="ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,p=u?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input",m={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:u,isEdge:h,isFF:!h&&/firefox/i.test(c),isPhantom:/PhantomJS/i.test(c),isWebkit:!h&&/webkit/i.test(c),isChrome:!h&&/chrome/i.test(c),isSafari:!h&&/safari/i.test(c)&&!/chrome/i.test(c),browserVersion:l,jqueryVersion:parseFloat(i.a.fn.jquery),isSupportAmd:r,isSupportTouch:f,isFontInstalled:function(t){var e="Comic Sans MS"===t?"Courier New":"Comic Sans MS",n=document.createElement("canvas").getContext("2d");n.font="200px '"+e+"'";var o=n.measureText("mmmmmmmmmmwwwww").width;return n.font="200px "+s(t)+', "'+e+'"',o!==n.measureText("mmmmmmmmmmwwwww").width},isW3CRangeSupport:!!document.createRange,inputEventName:p,genericFontFamilies:a,validFontName:s};var v=0;var g={eq:function(t){return function(e){return t===e}},eq2:function(t,e){return t===e},peq2:function(t){return function(e,n){return e[t]===n[t]}},ok:function(){return!0},fail:function(){return!1},self:function(t){return t},not:function(t){return function(){return!t.apply(t,arguments)}},and:function(t,e){return function(n){return t(n)&&e(n)}},invoke:function(t,e){return function(){return t[e].apply(t,arguments)}},resetUniqueId:function(){v=0},uniqueId:function(t){var e=++v+"";return t?t+e:e},rect2bnd:function(t){var e=i()(document);return{top:t.top+e.scrollTop(),left:t.left+e.scrollLeft(),width:t.right-t.left,height:t.bottom-t.top}},invertObject:function(t){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[t[n]]=n);return e},namespaceToCamel:function(t,e){return(e=e||"")+t.split(".").map((function(t){return t.substring(0,1).toUpperCase()+t.substring(1)})).join("")},debounce:function(t,e,n){var o;return function(){var i=this,r=arguments,a=function(){o=null,n||t.apply(i,r)},s=n&&!o;clearTimeout(o),o=setTimeout(a,e),s&&t.apply(i,r)}},isValidUrl:function(t){return/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t)}};function b(t){return t[0]}function y(t){return t[t.length-1]}function k(t){return t.slice(1)}function w(t,e){if(t&&t.length&&e){if(t.indexOf)return-1!==t.indexOf(e);if(t.contains)return t.contains(e)}return!1}var C={head:b,last:y,initial:function(t){return t.slice(0,t.length-1)},tail:k,prev:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n-1]}return null},next:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n+1]}return null},find:function(t,e){for(var n=0,o=t.length;n<o;n++){var i=t[n];if(e(i))return i}},contains:w,all:function(t,e){for(var n=0,o=t.length;n<o;n++)if(!e(t[n]))return!1;return!0},sum:function(t,e){return e=e||g.self,t.reduce((function(t,n){return t+e(n)}),0)},from:function(t){for(var e=[],n=t.length,o=-1;++o<n;)e[o]=t[o];return e},isEmpty:function(t){return!t||!t.length},clusterBy:function(t,e){return t.length?k(t).reduce((function(t,n){var o=y(t);return e(y(o),n)?o[o.length]=n:t[t.length]=[n],t}),[[b(t)]]):[]},compact:function(t){for(var e=[],n=0,o=t.length;n<o;n++)t[n]&&e.push(t[n]);return e},unique:function(t){for(var e=[],n=0,o=t.length;n<o;n++)w(e,t[n])||e.push(t[n]);return e}},x=String.fromCharCode(160);function S(t){return t&&i()(t).hasClass("note-editable")}function T(t){return t=t.toUpperCase(),function(e){return e&&e.nodeName.toUpperCase()===t}}function E(t){return t&&3===t.nodeType}function I(t){return t&&/^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase())}function $(t){return!S(t)&&(t&&/^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase()))}var N=T("PRE"),P=T("LI");var R=T("TABLE"),L=T("DATA");function A(t){return!(B(t)||F(t)||D(t)||$(t)||R(t)||z(t)||L(t))}function F(t){return t&&/^UL|^OL/.test(t.nodeName.toUpperCase())}var D=T("HR");function H(t){return t&&/^TD|^TH/.test(t.nodeName.toUpperCase())}var z=T("BLOCKQUOTE");function B(t){return H(t)||z(t)||S(t)}var M=T("A");var O=T("BODY");var j=m.isMSIE&&m.browserVersion<11?" ":"<br>";function U(t){return E(t)?t.nodeValue.length:t?t.childNodes.length:0}function W(t){var e=U(t);return 0===e||(!E(t)&&1===e&&t.innerHTML===j||!(!C.all(t.childNodes,E)||""!==t.innerHTML))}function K(t){I(t)||U(t)||(t.innerHTML=j)}function q(t,e){for(;t;){if(e(t))return t;if(S(t))break;t=t.parentNode}return null}function V(t,e){e=e||g.fail;var n=[];return q(t,(function(t){return S(t)||n.push(t),e(t)})),n}function _(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.nextSibling;return n}function G(t,e){var n=e.nextSibling,o=e.parentNode;return n?o.insertBefore(t,n):o.appendChild(t),t}function Y(t,e){return i.a.each(e,(function(e,n){t.appendChild(n)})),t}function Z(t){return 0===t.offset}function X(t){return t.offset===U(t.node)}function Q(t){return Z(t)||X(t)}function J(t,e){for(;t&&t!==e;){if(0!==et(t))return!1;t=t.parentNode}return!0}function tt(t,e){if(!e)return!1;for(;t&&t!==e;){if(et(t)!==U(t.parentNode)-1)return!1;t=t.parentNode}return!0}function et(t){for(var e=0;t=t.previousSibling;)e+=1;return e}function nt(t){return!!(t&&t.childNodes&&t.childNodes.length)}function ot(t,e){var n,o;if(0===t.offset){if(S(t.node))return null;n=t.node.parentNode,o=et(t.node)}else nt(t.node)?o=U(n=t.node.childNodes[t.offset-1]):(n=t.node,o=e?0:t.offset-1);return{node:n,offset:o}}function it(t,e){var n,o;if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1)}else nt(t.node)?(n=t.node.childNodes[t.offset],o=0):(n=t.node,o=e?U(t.node):t.offset+1);return{node:n,offset:o}}function rt(t,e){var n,o;if(W(t.node))return{node:n=t.node.nextSibling,offset:o=0};if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1),S(n)&&(n=t.node.nextSibling,o=0)}else if(nt(t.node)){if(o=0,W(n=t.node.childNodes[t.offset]))return null}else if(n=t.node,o=e?U(t.node):t.offset+1,W(n))return null;return{node:n,offset:o}}function at(t){if(t.nextSibling&&t.parent===t.nextSibling.parent)return E(t.nextSibling)?t.nextSibling:at(t.nextSibling)}function st(t,e){return t.node===e.node&&t.offset===e.offset}function lt(t,e){var n=e&&e.isSkipPaddingBlankHTML,o=e&&e.isNotSplitEdgePoint,i=e&&e.isDiscardEmptySplits;if(i&&(n=!0),Q(t)&&(E(t.node)||o)){if(Z(t))return t.node;if(X(t))return t.node.nextSibling}if(E(t.node))return t.node.splitText(t.offset);var r=t.node.childNodes[t.offset],a=G(t.node.cloneNode(!1),t.node);return Y(a,_(r)),n||(K(t.node),K(a)),i&&(W(t.node)&&dt(t.node),W(a))?(dt(a),t.node.nextSibling):a}function ct(t,e,n){var o=V(e.node,g.eq(t));return o.length?1===o.length?lt(e,n):o.reduce((function(t,o){return t===e.node&&(t=lt(e,n)),lt({node:o,offset:t?et(t):U(o)},n)})):null}function ut(t){return document.createElement(t)}function dt(t,e){if(t&&t.parentNode){if(t.removeNode)return t.removeNode(e);var n=t.parentNode;if(!e){for(var o=[],i=0,r=t.childNodes.length;i<r;i++)o.push(t.childNodes[i]);for(var a=0,s=o.length;a<s;a++)n.insertBefore(o[a],t)}n.removeChild(t)}}var ht=T("TEXTAREA");function ft(t,e){var n=ht(t[0])?t.val():t.html();return e?n.replace(/[\n\r]/g,""):n}var pt={NBSP_CHAR:x,ZERO_WIDTH_NBSP_CHAR:"\ufeff",blank:j,emptyPara:"<p>".concat(j,"</p>"),makePredByNodeName:T,isEditable:S,isControlSizing:function(t){return t&&i()(t).hasClass("note-control-sizing")},isText:E,isElement:function(t){return t&&1===t.nodeType},isVoid:I,isPara:$,isPurePara:function(t){return $(t)&&!P(t)},isHeading:function(t){return t&&/^H[1-7]/.test(t.nodeName.toUpperCase())},isInline:A,isBlock:g.not(A),isBodyInline:function(t){return A(t)&&!q(t,$)},isBody:O,isParaInline:function(t){return A(t)&&!!q(t,$)},isPre:N,isList:F,isTable:R,isData:L,isCell:H,isBlockquote:z,isBodyContainer:B,isAnchor:M,isDiv:T("DIV"),isLi:P,isBR:T("BR"),isSpan:T("SPAN"),isB:T("B"),isU:T("U"),isS:T("S"),isI:T("I"),isImg:T("IMG"),isTextarea:ht,deepestChildIsEmpty:function(t){do{if(null===t.firstElementChild||""===t.firstElementChild.innerHTML)break}while(t=t.firstElementChild);return W(t)},isEmpty:W,isEmptyAnchor:g.and(M,W),isClosestSibling:function(t,e){return t.nextSibling===e||t.previousSibling===e},withClosestSiblings:function(t,e){e=e||g.ok;var n=[];return t.previousSibling&&e(t.previousSibling)&&n.push(t.previousSibling),n.push(t),t.nextSibling&&e(t.nextSibling)&&n.push(t.nextSibling),n},nodeLength:U,isLeftEdgePoint:Z,isRightEdgePoint:X,isEdgePoint:Q,isLeftEdgeOf:J,isRightEdgeOf:tt,isLeftEdgePointOf:function(t,e){return Z(t)&&J(t.node,e)},isRightEdgePointOf:function(t,e){return X(t)&&tt(t.node,e)},prevPoint:ot,nextPoint:it,nextPointWithEmptyNode:rt,isSamePoint:st,isVisiblePoint:function(t){if(E(t.node)||!nt(t.node)||W(t.node))return!0;var e=t.node.childNodes[t.offset-1],n=t.node.childNodes[t.offset];return!(e&&!I(e)||n&&!I(n))},prevPointUntil:function(t,e){for(;t;){if(e(t))return t;t=ot(t)}return null},nextPointUntil:function(t,e){for(;t;){if(e(t))return t;t=it(t)}return null},isCharPoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return e&&" "!==e&&e!==x},isSpacePoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return" "===e||e===x},walkPoint:function(t,e,n,o){for(var i=t;i&&(n(i),!st(i,e));){i=rt(i,o&&t.node!==i.node&&e.node!==i.node)}},ancestor:q,singleChildAncestor:function(t,e){for(t=t.parentNode;t&&1===U(t);){if(e(t))return t;if(S(t))break;t=t.parentNode}return null},listAncestor:V,lastAncestor:function(t,e){var n=V(t);return C.last(n.filter(e))},listNext:_,listPrev:function(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.previousSibling;return n},listDescendant:function(t,e){var n=[];return e=e||g.ok,function o(i){t!==i&&e(i)&&n.push(i);for(var r=0,a=i.childNodes.length;r<a;r++)o(i.childNodes[r])}(t),n},commonAncestor:function(t,e){for(var n=V(t),o=e;o;o=o.parentNode)if(n.indexOf(o)>-1)return o;return null},wrap:function(t,e){var n=t.parentNode,o=i()("<"+e+">")[0];return n.insertBefore(o,t),o.appendChild(t),o},insertAfter:G,appendChildNodes:Y,position:et,hasChildren:nt,makeOffsetPath:function(t,e){return V(e,g.eq(t)).map(et).reverse()},fromOffsetPath:function(t,e){for(var n=t,o=0,i=e.length;o<i;o++)n=n.childNodes.length<=e[o]?n.childNodes[n.childNodes.length-1]:n.childNodes[e[o]];return n},splitTree:ct,splitPoint:function(t,e){var n,o,i=e?$:B,r=V(t.node,i),a=C.last(r)||t.node;i(a)?(n=r[r.length-2],o=a):o=(n=a).parentNode;var s=n&&ct(n,t,{isSkipPaddingBlankHTML:e,isNotSplitEdgePoint:e});return s||o!==t.node||(s=t.node.childNodes[t.offset]),{rightNode:s,container:o}},create:ut,createText:function(t){return document.createTextNode(t)},remove:dt,removeWhile:function(t,e){for(;t&&!S(t)&&e(t);){var n=t.parentNode;dt(t),t=n}},replace:function(t,e){if(t.nodeName.toUpperCase()===e.toUpperCase())return t;var n=ut(e);return t.style.cssText&&(n.style.cssText=t.style.cssText),Y(n,C.from(t.childNodes)),G(n,t),dt(t),n},html:function(t,e){var n=ft(t);if(e){n=(n=n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g,(function(t,e,n){n=n.toUpperCase();var o=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n)&&!!e,i=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);return t+(o||i?"\n":"")}))).trim()}return n},value:ft,posFromPlaceholder:function(t){var e=i()(t),n=e.offset(),o=e.outerHeight(!0);return{left:n.left,top:n.top+o}},attachEvents:function(t,e){Object.keys(e).forEach((function(n){t.on(n,e[n])}))},detachEvents:function(t,e){Object.keys(e).forEach((function(n){t.off(n,e[n])}))},isCustomStyleTag:function(t){return t&&!E(t)&&C.contains(t.classList,"note-styletag")}};function mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var vt=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e,this.memos={},this.modules={},this.layoutInfo={},this.options=i.a.extend(!0,{},n),i.a.summernote.ui=i.a.summernote.ui_template(this.options),this.ui=i.a.summernote.ui,this.initialize()}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){return this.layoutInfo=this.ui.createLayout(this.$note),this._initialize(),this.$note.hide(),this}},{key:"destroy",value:function(){this._destroy(),this.$note.removeData("summernote"),this.ui.removeLayout(this.$note,this.layoutInfo)}},{key:"reset",value:function(){var t=this.isDisabled();this.code(pt.emptyPara),this._destroy(),this._initialize(),t&&this.disable()}},{key:"_initialize",value:function(){var t=this;this.options.id=g.uniqueId(i.a.now()),this.options.container=this.options.container||this.layoutInfo.editor;var e=i.a.extend({},this.options.buttons);Object.keys(e).forEach((function(n){t.memo("button."+n,e[n])}));var n=i.a.extend({},this.options.modules,i.a.summernote.plugins||{});Object.keys(n).forEach((function(e){t.module(e,n[e],!0)})),Object.keys(this.modules).forEach((function(e){t.initializeModule(e)}))}},{key:"_destroy",value:function(){var t=this;Object.keys(this.modules).reverse().forEach((function(e){t.removeModule(e)})),Object.keys(this.memos).forEach((function(e){t.removeMemo(e)})),this.triggerEvent("destroy",this)}},{key:"code",value:function(t){var e=this.invoke("codeview.isActivated");if(void 0===t)return this.invoke("codeview.sync"),e?this.layoutInfo.codable.val():this.layoutInfo.editable.html();e?this.invoke("codeview.sync",t):this.layoutInfo.editable.html(t),this.$note.val(t),this.triggerEvent("change",t,this.layoutInfo.editable)}},{key:"isDisabled",value:function(){return"false"===this.layoutInfo.editable.attr("contenteditable")}},{key:"enable",value:function(){this.layoutInfo.editable.attr("contenteditable",!0),this.invoke("toolbar.activate",!0),this.triggerEvent("disable",!1),this.options.editing=!0}},{key:"disable",value:function(){this.invoke("codeview.isActivated")&&this.invoke("codeview.deactivate"),this.layoutInfo.editable.attr("contenteditable",!1),this.options.editing=!1,this.invoke("toolbar.deactivate",!0),this.triggerEvent("disable",!0)}},{key:"triggerEvent",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=this.options.callbacks[g.namespaceToCamel(t,"on")];n&&n.apply(this.$note[0],e),this.$note.trigger("summernote."+t,e)}},{key:"initializeModule",value:function(t){var e=this.modules[t];e.shouldInitialize=e.shouldInitialize||g.ok,e.shouldInitialize()&&(e.initialize&&e.initialize(),e.events&&pt.attachEvents(this.$note,e.events))}},{key:"module",value:function(t,e,n){if(1===arguments.length)return this.modules[t];this.modules[t]=new e(this),n||this.initializeModule(t)}},{key:"removeModule",value:function(t){var e=this.modules[t];e.shouldInitialize()&&(e.events&&pt.detachEvents(this.$note,e.events),e.destroy&&e.destroy()),delete this.modules[t]}},{key:"memo",value:function(t,e){if(1===arguments.length)return this.memos[t];this.memos[t]=e}},{key:"removeMemo",value:function(t){this.memos[t]&&this.memos[t].destroy&&this.memos[t].destroy(),delete this.memos[t]}},{key:"createInvokeHandlerAndUpdateState",value:function(t,e){var n=this;return function(o){n.createInvokeHandler(t,e)(o),n.invoke("buttons.updateCurrentStyle")}}},{key:"createInvokeHandler",value:function(t,e){var n=this;return function(o){o.preventDefault();var r=i()(o.target);n.invoke(t,e||r.closest("[data-value]").data("value"),r)}}},{key:"invoke",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=t.split("."),o=n.length>1,i=o&&C.head(n),r=o?C.last(n):C.head(n),a=this.modules[i||"editor"];return!i&&this[r]?this[r].apply(this,e):a&&a[r]&&a.shouldInitialize()?a[r].apply(a,e):void 0}}])&&mt(e.prototype,n),o&&mt(e,o),t}();function gt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function bt(t,e){var n,o,i=t.parentElement(),r=document.body.createTextRange(),a=C.from(i.childNodes);for(n=0;n<a.length;n++)if(!pt.isText(a[n])){if(r.moveToElementText(a[n]),r.compareEndPoints("StartToStart",t)>=0)break;o=a[n]}if(0!==n&&pt.isText(a[n-1])){var s=document.body.createTextRange(),l=null;s.moveToElementText(o||i),s.collapse(!o),l=o?o.nextSibling:i.firstChild;var c=t.duplicate();c.setEndPoint("StartToStart",s);for(var u=c.text.replace(/[\r\n]/g,"").length;u>l.nodeValue.length&&l.nextSibling;)u-=l.nodeValue.length,l=l.nextSibling;l.nodeValue;e&&l.nextSibling&&pt.isText(l.nextSibling)&&u===l.nodeValue.length&&(u-=l.nodeValue.length,l=l.nextSibling),i=l,n=u}return{cont:i,offset:n}}function yt(t){var e=document.body.createTextRange(),n=function t(e,n){var o,i;if(pt.isText(e)){var r=pt.listPrev(e,g.not(pt.isText)),a=C.last(r).previousSibling;o=a||e.parentNode,n+=C.sum(C.tail(r),pt.nodeLength),i=!a}else{if(o=e.childNodes[n]||e,pt.isText(o))return t(o,0);n=0,i=!1}return{node:o,collapseToStart:i,offset:n}}(t.node,t.offset);return e.moveToElementText(n.node),e.collapse(n.collapseToStart),e.moveStart("character",n.offset),e}i.a.fn.extend({summernote:function(){var t=i.a.type(C.head(arguments)),e="string"===t,n="object"===t,o=i.a.extend({},i.a.summernote.options,n?C.head(arguments):{});o.langInfo=i.a.extend(!0,{},i.a.summernote.lang["en-US"],i.a.summernote.lang[o.lang]),o.icons=i.a.extend(!0,{},i.a.summernote.options.icons,o.icons),o.tooltip="auto"===o.tooltip?!m.isSupportTouch:o.tooltip,this.each((function(t,e){var n=i()(e);if(!n.data("summernote")){var r=new vt(n,o);n.data("summernote",r),n.data("summernote").triggerEvent("init",r.layoutInfo)}}));var r=this.first();if(r.length){var a=r.data("summernote");if(e)return a.invoke.apply(a,C.from(arguments));o.focus&&a.invoke("editor.focus")}return this}});var kt=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sc=e,this.so=n,this.ec=o,this.eo=i,this.isOnEditable=this.makeIsOn(pt.isEditable),this.isOnList=this.makeIsOn(pt.isList),this.isOnAnchor=this.makeIsOn(pt.isAnchor),this.isOnCell=this.makeIsOn(pt.isCell),this.isOnData=this.makeIsOn(pt.isData)}var e,n,o;return e=t,(n=[{key:"nativeRange",value:function(){if(m.isW3CRangeSupport){var t=document.createRange();return t.setStart(this.sc,this.so),t.setEnd(this.ec,this.eo),t}var e=yt({node:this.sc,offset:this.so});return e.setEndPoint("EndToEnd",yt({node:this.ec,offset:this.eo})),e}},{key:"getPoints",value:function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}}},{key:"getStartPoint",value:function(){return{node:this.sc,offset:this.so}}},{key:"getEndPoint",value:function(){return{node:this.ec,offset:this.eo}}},{key:"select",value:function(){var t=this.nativeRange();if(m.isW3CRangeSupport){var e=document.getSelection();e.rangeCount>0&&e.removeAllRanges(),e.addRange(t)}else t.select();return this}},{key:"scrollIntoView",value:function(t){var e=i()(t).height();return t.scrollTop+e<this.sc.offsetTop&&(t.scrollTop+=Math.abs(t.scrollTop+e-this.sc.offsetTop)),this}},{key:"normalize",value:function(){var e=function(t,e){if(!t)return t;if(pt.isVisiblePoint(t)&&(!pt.isEdgePoint(t)||pt.isRightEdgePoint(t)&&!e||pt.isLeftEdgePoint(t)&&e||pt.isRightEdgePoint(t)&&e&&pt.isVoid(t.node.nextSibling)||pt.isLeftEdgePoint(t)&&!e&&pt.isVoid(t.node.previousSibling)||pt.isBlock(t.node)&&pt.isEmpty(t.node)))return t;var n=pt.ancestor(t.node,pt.isBlock),o=!1;if(!o){var i=pt.prevPoint(t)||{node:null};o=(pt.isLeftEdgePointOf(t,n)||pt.isVoid(i.node))&&!e}var r=!1;if(!r){var a=pt.nextPoint(t)||{node:null};r=(pt.isRightEdgePointOf(t,n)||pt.isVoid(a.node))&&e}if(o||r){if(pt.isVisiblePoint(t))return t;e=!e}return(e?pt.nextPointUntil(pt.nextPoint(t),pt.isVisiblePoint):pt.prevPointUntil(pt.prevPoint(t),pt.isVisiblePoint))||t},n=e(this.getEndPoint(),!1),o=this.isCollapsed()?n:e(this.getStartPoint(),!0);return new t(o.node,o.offset,n.node,n.offset)}},{key:"nodes",value:function(t,e){t=t||g.ok;var n=e&&e.includeAncestor,o=e&&e.fullyContains,i=this.getStartPoint(),r=this.getEndPoint(),a=[],s=[];return pt.walkPoint(i,r,(function(e){var i;pt.isEditable(e.node)||(o?(pt.isLeftEdgePoint(e)&&s.push(e.node),pt.isRightEdgePoint(e)&&C.contains(s,e.node)&&(i=e.node)):i=n?pt.ancestor(e.node,t):e.node,i&&t(i)&&a.push(i))}),!0),C.unique(a)}},{key:"commonAncestor",value:function(){return pt.commonAncestor(this.sc,this.ec)}},{key:"expand",value:function(e){var n=pt.ancestor(this.sc,e),o=pt.ancestor(this.ec,e);if(!n&&!o)return new t(this.sc,this.so,this.ec,this.eo);var i=this.getPoints();return n&&(i.sc=n,i.so=0),o&&(i.ec=o,i.eo=pt.nodeLength(o)),new t(i.sc,i.so,i.ec,i.eo)}},{key:"collapse",value:function(e){return e?new t(this.sc,this.so,this.sc,this.so):new t(this.ec,this.eo,this.ec,this.eo)}},{key:"splitText",value:function(){var e=this.sc===this.ec,n=this.getPoints();return pt.isText(this.ec)&&!pt.isEdgePoint(this.getEndPoint())&&this.ec.splitText(this.eo),pt.isText(this.sc)&&!pt.isEdgePoint(this.getStartPoint())&&(n.sc=this.sc.splitText(this.so),n.so=0,e&&(n.ec=n.sc,n.eo=this.eo-this.so)),new t(n.sc,n.so,n.ec,n.eo)}},{key:"deleteContents",value:function(){if(this.isCollapsed())return this;var e=this.splitText(),n=e.nodes(null,{fullyContains:!0}),o=pt.prevPointUntil(e.getStartPoint(),(function(t){return!C.contains(n,t.node)})),r=[];return i.a.each(n,(function(t,e){var n=e.parentNode;o.node!==n&&1===pt.nodeLength(n)&&r.push(n),pt.remove(e,!1)})),i.a.each(r,(function(t,e){pt.remove(e,!1)})),new t(o.node,o.offset,o.node,o.offset).normalize()}},{key:"makeIsOn",value:function(t){return function(){var e=pt.ancestor(this.sc,t);return!!e&&e===pt.ancestor(this.ec,t)}}},{key:"isLeftEdgeOf",value:function(t){if(!pt.isLeftEdgePoint(this.getStartPoint()))return!1;var e=pt.ancestor(this.sc,t);return e&&pt.isLeftEdgeOf(this.sc,e)}},{key:"isCollapsed",value:function(){return this.sc===this.ec&&this.so===this.eo}},{key:"wrapBodyInlineWithPara",value:function(){if(pt.isBodyContainer(this.sc)&&pt.isEmpty(this.sc))return this.sc.innerHTML=pt.emptyPara,new t(this.sc.firstChild,0,this.sc.firstChild,0);var e,n=this.normalize();if(pt.isParaInline(this.sc)||pt.isPara(this.sc))return n;if(pt.isInline(n.sc)){var o=pt.listAncestor(n.sc,g.not(pt.isInline));e=C.last(o),pt.isInline(e)||(e=o[o.length-2]||n.sc.childNodes[n.so])}else e=n.sc.childNodes[n.so>0?n.so-1:0];if(e){var i=pt.listPrev(e,pt.isParaInline).reverse();if((i=i.concat(pt.listNext(e.nextSibling,pt.isParaInline))).length){var r=pt.wrap(C.head(i),"p");pt.appendChildNodes(r,C.tail(i))}}return this.normalize()}},{key:"insertNode",value:function(t){var e=this;(pt.isText(t)||pt.isInline(t))&&(e=this.wrapBodyInlineWithPara().deleteContents());var n=pt.splitPoint(e.getStartPoint(),pt.isInline(t));return n.rightNode?(n.rightNode.parentNode.insertBefore(t,n.rightNode),pt.isEmpty(n.rightNode)&&pt.isPara(t)&&n.rightNode.parentNode.removeChild(n.rightNode)):n.container.appendChild(t),t}},{key:"pasteHTML",value:function(t){t=i.a.trim(t);var e=i()("<div></div>").html(t)[0],n=C.from(e.childNodes),o=this,r=!1;return o.so>=0&&(n=n.reverse(),r=!0),n=n.map((function(t){return o.insertNode(t)})),r&&(n=n.reverse()),n}},{key:"toString",value:function(){var t=this.nativeRange();return m.isW3CRangeSupport?t.toString():t.text}},{key:"getWordRange",value:function(e){var n=this.getEndPoint();if(!pt.isCharPoint(n))return this;var o=pt.prevPointUntil(n,(function(t){return!pt.isCharPoint(t)}));return e&&(n=pt.nextPointUntil(n,(function(t){return!pt.isCharPoint(t)}))),new t(o.node,o.offset,n.node,n.offset)}},{key:"getWordsRange",value:function(e){var n=this.getEndPoint(),o=function(t){return!pt.isCharPoint(t)&&!pt.isSpacePoint(t)};if(o(n))return this;var i=pt.prevPointUntil(n,o);return e&&(n=pt.nextPointUntil(n,o)),new t(i.node,i.offset,n.node,n.offset)}},{key:"getWordsMatchRange",value:function(e){var n=this.getEndPoint(),o=pt.prevPointUntil(n,(function(o){if(!pt.isCharPoint(o)&&!pt.isSpacePoint(o))return!0;var i=new t(o.node,o.offset,n.node,n.offset),r=e.exec(i.toString());return r&&0===r.index})),i=new t(o.node,o.offset,n.node,n.offset),r=i.toString(),a=e.exec(r);return a&&a[0].length===r.length?i:null}},{key:"bookmark",value:function(t){return{s:{path:pt.makeOffsetPath(t,this.sc),offset:this.so},e:{path:pt.makeOffsetPath(t,this.ec),offset:this.eo}}}},{key:"paraBookmark",value:function(t){return{s:{path:C.tail(pt.makeOffsetPath(C.head(t),this.sc)),offset:this.so},e:{path:C.tail(pt.makeOffsetPath(C.last(t),this.ec)),offset:this.eo}}}},{key:"getClientRects",value:function(){return this.nativeRange().getClientRects()}}])&>(e.prototype,n),o&>(e,o),t}(),wt={create:function(t,e,n,o){if(4===arguments.length)return new kt(t,e,n,o);if(2===arguments.length)return new kt(t,e,n=t,o=e);var i=this.createFromSelection();if(!i&&1===arguments.length){var r=arguments[0];return pt.isEditable(r)&&(r=r.lastChild),this.createFromBodyElement(r,pt.emptyPara===arguments[0].innerHTML)}return i},createFromBodyElement:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.createFromNode(t);return n.collapse(e)},createFromSelection:function(){var t,e,n,o;if(m.isW3CRangeSupport){var i=document.getSelection();if(!i||0===i.rangeCount)return null;if(pt.isBody(i.anchorNode))return null;var r=i.getRangeAt(0);t=r.startContainer,e=r.startOffset,n=r.endContainer,o=r.endOffset}else{var a=document.selection.createRange(),s=a.duplicate();s.collapse(!1);var l=a;l.collapse(!0);var c=bt(l,!0),u=bt(s,!1);pt.isText(c.node)&&pt.isLeftEdgePoint(c)&&pt.isTextNode(u.node)&&pt.isRightEdgePoint(u)&&u.node.nextSibling===c.node&&(c=u),t=c.cont,e=c.offset,n=u.cont,o=u.offset}return new kt(t,e,n,o)},createFromNode:function(t){var e=t,n=0,o=t,i=pt.nodeLength(o);return pt.isVoid(e)&&(n=pt.listPrev(e).length-1,e=e.parentNode),pt.isBR(o)?(i=pt.listPrev(o).length-1,o=o.parentNode):pt.isVoid(o)&&(i=pt.listPrev(o).length,o=o.parentNode),this.create(e,n,o,i)},createFromNodeBefore:function(t){return this.createFromNode(t).collapse(!0)},createFromNodeAfter:function(t){return this.createFromNode(t).collapse()},createFromBookmark:function(t,e){var n=pt.fromOffsetPath(t,e.s.path),o=e.s.offset,i=pt.fromOffsetPath(t,e.e.path),r=e.e.offset;return new kt(n,o,i,r)},createFromParaBookmark:function(t,e){var n=t.s.offset,o=t.e.offset,i=pt.fromOffsetPath(C.head(e),t.s.path),r=pt.fromOffsetPath(C.last(e),t.e.path);return new kt(i,n,r,o)}},Ct={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221,HOME:36,END:35,PAGEUP:33,PAGEDOWN:34},xt={isEdit:function(t){return C.contains([Ct.BACKSPACE,Ct.TAB,Ct.ENTER,Ct.SPACE,Ct.DELETE],t)},isMove:function(t){return C.contains([Ct.LEFT,Ct.UP,Ct.RIGHT,Ct.DOWN],t)},isNavigation:function(t){return C.contains([Ct.HOME,Ct.END,Ct.PAGEUP,Ct.PAGEDOWN],t)},nameFromCode:g.invertObject(Ct),code:Ct};function St(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Tt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.stack=[],this.stackOffset=-1,this.context=e,this.$editable=e.layoutInfo.editable,this.editable=this.$editable[0]}var e,n,o;return e=t,(n=[{key:"makeSnapshot",value:function(){var t=wt.create(this.editable);return{contents:this.$editable.html(),bookmark:t&&t.isOnEditable()?t.bookmark(this.editable):{s:{path:[],offset:0},e:{path:[],offset:0}}}}},{key:"applySnapshot",value:function(t){null!==t.contents&&this.$editable.html(t.contents),null!==t.bookmark&&wt.createFromBookmark(this.editable,t.bookmark).select()}},{key:"rewind",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset=0,this.applySnapshot(this.stack[this.stackOffset])}},{key:"commit",value:function(){this.stack=[],this.stackOffset=-1,this.recordUndo()}},{key:"reset",value:function(){this.stack=[],this.stackOffset=-1,this.$editable.html(""),this.recordUndo()}},{key:"undo",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset>0&&(this.stackOffset--,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"redo",value:function(){this.stack.length-1>this.stackOffset&&(this.stackOffset++,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"recordUndo",value:function(){this.stackOffset++,this.stack.length>this.stackOffset&&(this.stack=this.stack.slice(0,this.stackOffset)),this.stack.push(this.makeSnapshot()),this.stack.length>this.context.options.historyLimit&&(this.stack.shift(),this.stackOffset-=1)}}])&&St(e.prototype,n),o&&St(e,o),t}();function Et(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var It=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"jQueryCSS",value:function(t,e){if(m.jqueryVersion<1.9){var n={};return i.a.each(e,(function(e,o){n[o]=t.css(o)})),n}return t.css(e)}},{key:"fromNode",value:function(t){var e=this.jQueryCSS(t,["font-family","font-size","text-align","list-style-type","line-height"])||{},n=t[0].style.fontSize||e["font-size"];return e["font-size"]=parseInt(n,10),e["font-size-unit"]=n.match(/[a-z%]+$/),e}},{key:"stylePara",value:function(t,e){i.a.each(t.nodes(pt.isPara,{includeAncestor:!0}),(function(t,n){i()(n).css(e)}))}},{key:"styleNodes",value:function(t,e){t=t.splitText();var n=e&&e.nodeName||"SPAN",o=!(!e||!e.expandClosestSibling),r=!(!e||!e.onlyPartialContains);if(t.isCollapsed())return[t.insertNode(pt.create(n))];var a=pt.makePredByNodeName(n),s=t.nodes(pt.isText,{fullyContains:!0}).map((function(t){return pt.singleChildAncestor(t,a)||pt.wrap(t,n)}));if(o){if(r){var l=t.nodes();a=g.and(a,(function(t){return C.contains(l,t)}))}return s.map((function(t){var e=pt.withClosestSiblings(t,a),n=C.head(e),o=C.tail(e);return i.a.each(o,(function(t,e){pt.appendChildNodes(n,e.childNodes),pt.remove(e)})),C.head(e)}))}return s}},{key:"current",value:function(t){var e=i()(pt.isElement(t.sc)?t.sc:t.sc.parentNode),n=this.fromNode(e);try{n=i.a.extend(n,{"font-bold":document.queryCommandState("bold")?"bold":"normal","font-italic":document.queryCommandState("italic")?"italic":"normal","font-underline":document.queryCommandState("underline")?"underline":"normal","font-subscript":document.queryCommandState("subscript")?"subscript":"normal","font-superscript":document.queryCommandState("superscript")?"superscript":"normal","font-strikethrough":document.queryCommandState("strikethrough")?"strikethrough":"normal","font-family":document.queryCommandValue("fontname")||n["font-family"]})}catch(t){}if(t.isOnList()){var o=["circle","disc","disc-leading-zero","square"].indexOf(n["list-style-type"])>-1;n["list-style"]=o?"unordered":"ordered"}else n["list-style"]="none";var r=pt.ancestor(t.sc,pt.isPara);if(r&&r.style["line-height"])n["line-height"]=r.style.lineHeight;else{var a=parseInt(n["line-height"],10)/parseInt(n["font-size"],10);n["line-height"]=a.toFixed(1)}return n.anchor=t.isOnAnchor()&&pt.ancestor(t.sc,pt.isAnchor),n.ancestors=pt.listAncestor(t.sc,pt.isEditable),n.range=t,n}}])&&Et(e.prototype,n),o&&Et(e,o),t}();function $t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Nt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"insertOrderedList",value:function(t){this.toggleList("OL",t)}},{key:"insertUnorderedList",value:function(t){this.toggleList("UL",t)}},{key:"indent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);if(pt.isLi(o)){var r=e.findList(o.previousSibling);r?n.map((function(t){return r.appendChild(t)})):(e.wrapList(n,o.parentNode.nodeName),n.map((function(t){return t.parentNode})).map((function(t){return e.appendToPrevious(t)})))}else i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(parseInt(e,10)||0)+25}))}))})),n.select()}},{key:"outdent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);pt.isLi(o)?e.releaseList([n]):i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(e=parseInt(e,10)||0)>25?e-25:""}))}))})),n.select()}},{key:"toggleList",value:function(t,e){var n=this,o=wt.create(e).wrapBodyInlineWithPara(),r=o.nodes(pt.isPara,{includeAncestor:!0}),a=o.paraBookmark(r),s=C.clusterBy(r,g.peq2("parentNode"));if(C.find(r,pt.isPurePara)){var l=[];i.a.each(s,(function(e,o){l=l.concat(n.wrapList(o,t))})),r=l}else{var c=o.nodes(pt.isList,{includeAncestor:!0}).filter((function(e){return!i.a.nodeName(e,t)}));c.length?i.a.each(c,(function(e,n){pt.replace(n,t)})):r=this.releaseList(s,!0)}wt.createFromParaBookmark(a,r).select()}},{key:"wrapList",value:function(t,e){var n=C.head(t),o=C.last(t),i=pt.isList(n.previousSibling)&&n.previousSibling,r=pt.isList(o.nextSibling)&&o.nextSibling,a=i||pt.insertAfter(pt.create(e||"UL"),o);return t=t.map((function(t){return pt.isPurePara(t)?pt.replace(t,"LI"):t})),pt.appendChildNodes(a,t),r&&(pt.appendChildNodes(a,C.from(r.childNodes)),pt.remove(r)),t}},{key:"releaseList",value:function(t,e){var n=this,o=[];return i.a.each(t,(function(t,r){var a=C.head(r),s=C.last(r),l=e?pt.lastAncestor(a,pt.isList):a.parentNode,c=l.parentNode;if("LI"===l.parentNode.nodeName)r.map((function(t){var e=n.findNextSiblings(t);c.nextSibling?c.parentNode.insertBefore(t,c.nextSibling):c.parentNode.appendChild(t),e.length&&(n.wrapList(e,l.nodeName),t.appendChild(e[0].parentNode))})),0===l.children.length&&c.removeChild(l),0===c.childNodes.length&&c.parentNode.removeChild(c);else{var u=l.childNodes.length>1?pt.splitTree(l,{node:s.parentNode,offset:pt.position(s)+1},{isSkipPaddingBlankHTML:!0}):null,d=pt.splitTree(l,{node:a.parentNode,offset:pt.position(a)},{isSkipPaddingBlankHTML:!0});r=e?pt.listDescendant(d,pt.isLi):C.from(d.childNodes).filter(pt.isLi),!e&&pt.isList(l.parentNode)||(r=r.map((function(t){return pt.replace(t,"P")}))),i.a.each(C.from(r).reverse(),(function(t,e){pt.insertAfter(e,l)}));var h=C.compact([l,d,u]);i.a.each(h,(function(t,e){var n=[e].concat(pt.listDescendant(e,pt.isList));i.a.each(n.reverse(),(function(t,e){pt.nodeLength(e)||pt.remove(e,!0)}))}))}o=o.concat(r)})),o}},{key:"appendToPrevious",value:function(t){return t.previousSibling?pt.appendChildNodes(t.previousSibling,[t]):this.wrapList([t],"LI")}},{key:"findList",value:function(t){return t?C.find(t.children,(function(t){return["OL","UL"].indexOf(t.nodeName)>-1})):null}},{key:"findNextSiblings",value:function(t){for(var e=[];t.nextSibling;)e.push(t.nextSibling),t=t.nextSibling;return e}}])&&$t(e.prototype,n),o&&$t(e,o),t}();function Pt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Rt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.bullet=new Nt,this.options=e.options}var e,n,o;return e=t,(n=[{key:"insertTab",value:function(t,e){var n=pt.createText(new Array(e+1).join(pt.NBSP_CHAR));(t=t.deleteContents()).insertNode(n,!0),(t=wt.create(n,e)).select()}},{key:"insertParagraph",value:function(t,e){e=(e=(e=e||wt.create(t)).deleteContents()).wrapBodyInlineWithPara();var n,o=pt.ancestor(e.sc,pt.isPara);if(o){if(pt.isLi(o)&&(pt.isEmpty(o)||pt.deepestChildIsEmpty(o)))return void this.bullet.toggleList(o.parentNode.nodeName);var r=null;if(1===this.options.blockquoteBreakingLevel?r=pt.ancestor(o,pt.isBlockquote):2===this.options.blockquoteBreakingLevel&&(r=pt.lastAncestor(o,pt.isBlockquote)),r){n=i()(pt.emptyPara)[0],pt.isRightEdgePoint(e.getStartPoint())&&pt.isBR(e.sc.nextSibling)&&i()(e.sc.nextSibling).remove();var a=pt.splitTree(r,e.getStartPoint(),{isDiscardEmptySplits:!0});a?a.parentNode.insertBefore(n,a):pt.insertAfter(n,r)}else{n=pt.splitTree(o,e.getStartPoint());var s=pt.listDescendant(o,pt.isEmptyAnchor);s=s.concat(pt.listDescendant(n,pt.isEmptyAnchor)),i.a.each(s,(function(t,e){pt.remove(e)})),(pt.isHeading(n)||pt.isPre(n)||pt.isCustomStyleTag(n))&&pt.isEmpty(n)&&(n=pt.replace(n,"p"))}}else{var l=e.sc.childNodes[e.so];n=i()(pt.emptyPara)[0],l?e.sc.insertBefore(n,l):e.sc.appendChild(n)}wt.create(n,0).normalize().select().scrollIntoView(t)}}])&&Pt(e.prototype,n),o&&Pt(e,o),t}();function Lt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var At=function t(e,n,o,i){var r={colPos:0,rowPos:0},a=[],s=[];function l(t,e,n,o,i,r,s){var l={baseRow:n,baseCell:o,isRowSpan:i,isColSpan:r,isVirtual:s};a[t]||(a[t]=[]),a[t][e]=l}function c(t,e,n,o){return{baseCell:t.baseCell,action:e,virtualTable:{rowIndex:n,cellIndex:o}}}function u(t,e){if(!a[t])return e;if(!a[t][e])return e;for(var n=e;a[t][n];)if(n++,!a[t][n])return n}function d(t,e){var n=u(t.rowIndex,e.cellIndex),o=e.colSpan>1,i=e.rowSpan>1,a=t.rowIndex===r.rowPos&&e.cellIndex===r.colPos;l(t.rowIndex,n,t,e,i,o,!1);var s=e.attributes.rowSpan?parseInt(e.attributes.rowSpan.value,10):0;if(s>1)for(var c=1;c<s;c++){var d=t.rowIndex+c;h(d,n,e,a),l(d,n,t,e,!0,o,!0)}var f=e.attributes.colSpan?parseInt(e.attributes.colSpan.value,10):0;if(f>1)for(var p=1;p<f;p++){var m=u(t.rowIndex,n+p);h(t.rowIndex,m,e,a),l(t.rowIndex,m,t,e,i,!0,!0)}}function h(t,e,n,o){t===r.rowPos&&r.colPos>=n.cellIndex&&n.cellIndex<=e&&!o&&r.colPos++}function f(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SubtractSpanCount;break;case t.where.Row:if(!e.isVirtual&&e.isRowSpan)return t.resultAction.AddCell;if(e.isRowSpan)return t.resultAction.SubtractSpanCount}return t.resultAction.RemoveCell}function p(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SumSpanCount;if(e.isRowSpan&&e.isVirtual)return t.resultAction.Ignore;break;case t.where.Row:if(e.isRowSpan)return t.resultAction.SumSpanCount;if(e.isColSpan&&e.isVirtual)return t.resultAction.Ignore}return t.resultAction.AddCell}this.getActionList=function(){for(var e=n===t.where.Row?r.rowPos:-1,i=n===t.where.Column?r.colPos:-1,l=0,u=!0;u;){var d=e>=0?e:l,h=i>=0?i:l,m=a[d];if(!m)return u=!1,s;var v=m[h];if(!v)return u=!1,s;var g=t.resultAction.Ignore;switch(o){case t.requestAction.Add:g=p(v);break;case t.requestAction.Delete:g=f(v)}s.push(c(v,g,d,h)),l++}return s},e&&e.tagName&&("td"===e.tagName.toLowerCase()||"th"===e.tagName.toLowerCase())&&(r.colPos=e.cellIndex,e.parentElement&&e.parentElement.tagName&&"tr"===e.parentElement.tagName.toLowerCase()&&(r.rowPos=e.parentElement.rowIndex)),function(){for(var t=i.rows,e=0;e<t.length;e++)for(var n=t[e].cells,o=0;o<n.length;o++)d(t[e],n[o])}()};At.where={Row:0,Column:1},At.requestAction={Add:0,Delete:1},At.resultAction={Ignore:0,SubtractSpanCount:1,RemoveCell:2,AddCell:3,SumSpanCount:4};var Ft=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"tab",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=pt.ancestor(n,pt.isTable),i=pt.listDescendant(o,pt.isCell),r=C[e?"prev":"next"](i,n);r&&wt.create(r,0).select()}},{key:"addRow",value:function(t,e){for(var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr"),r=this.recoverAttributes(o),a=i()("<tr"+r+"></tr>"),s=new At(n,At.where.Row,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),l=0;l<s.length;l++){var c=s[l],u=this.recoverAttributes(c.baseCell);switch(c.action){case At.resultAction.AddCell:a.append("<td"+u+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("top"===e&&(c.baseCell.parent?c.baseCell.closest("tr").rowIndex:0)<=o[0].rowIndex){var d=i()("<div></div>").append(i()("<td"+u+">"+pt.blank+"</td>").removeAttr("rowspan")).html();a.append(d);break}var h=parseInt(c.baseCell.rowSpan,10);h++,c.baseCell.setAttribute("rowSpan",h)}}if("top"===e)o.before(a);else{if(n.rowSpan>1){var f=o[0].rowIndex+(n.rowSpan-2);return void i()(i()(o).parent().find("tr")[f]).after(i()(a))}o.after(a)}}},{key:"addCol",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr");i()(o).siblings().push(o);for(var r=new At(n,At.where.Column,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),a=0;a<r.length;a++){var s=r[a],l=this.recoverAttributes(s.baseCell);switch(s.action){case At.resultAction.AddCell:"right"===e?i()(s.baseCell).after("<td"+l+">"+pt.blank+"</td>"):i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("right"===e){var c=parseInt(s.baseCell.colSpan,10);c++,s.baseCell.setAttribute("colSpan",c)}else i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>")}}}},{key:"recoverAttributes",value:function(t){var e="";if(!t)return e;for(var n=t.attributes||[],o=0;o<n.length;o++)"id"!==n[o].name.toLowerCase()&&n[o].specified&&(e+=" "+n[o].name+"='"+n[o].value+"'");return e}},{key:"deleteRow",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=n[0].rowIndex,a=new At(e,At.where.Row,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),s=0;s<a.length;s++)if(a[s]){var l=a[s].baseCell,c=a[s].virtualTable,u=l.rowSpan&&l.rowSpan>1,d=u?parseInt(l.rowSpan,10):0;switch(a[s].action){case At.resultAction.Ignore:continue;case At.resultAction.AddCell:var h=n.next("tr")[0];if(!h)continue;var f=n[0].cells[o];u&&(d>2?(d--,h.insertBefore(f,h.cells[o]),h.cells[o].setAttribute("rowSpan",d),h.cells[o].innerHTML=""):2===d&&(h.insertBefore(f,h.cells[o]),h.cells[o].removeAttribute("rowSpan"),h.cells[o].innerHTML=""));continue;case At.resultAction.SubtractSpanCount:u&&(d>2?(d--,l.setAttribute("rowSpan",d),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")):2===d&&(l.removeAttribute("rowSpan"),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")));continue;case At.resultAction.RemoveCell:continue}}n.remove()}},{key:"deleteCol",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=new At(e,At.where.Column,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),a=0;a<r.length;a++)if(r[a])switch(r[a].action){case At.resultAction.Ignore:continue;case At.resultAction.SubtractSpanCount:var s=r[a].baseCell;if(s.colSpan&&s.colSpan>1){var l=s.colSpan?parseInt(s.colSpan,10):0;l>2?(l--,s.setAttribute("colSpan",l),s.cellIndex===o&&(s.innerHTML="")):2===l&&(s.removeAttribute("colSpan"),s.cellIndex===o&&(s.innerHTML=""))}continue;case At.resultAction.RemoveCell:pt.remove(r[a].baseCell,!0);continue}}},{key:"createTable",value:function(t,e,n){for(var o,r=[],a=0;a<t;a++)r.push("<td>"+pt.blank+"</td>");o=r.join("");for(var s,l=[],c=0;c<e;c++)l.push("<tr>"+o+"</tr>");s=l.join("");var u=i()("<table>"+s+"</table>");return n&&n.tableClassName&&u.addClass(n.tableClassName),u[0]}},{key:"deleteTable",value:function(t){var e=pt.ancestor(t.commonAncestor(),pt.isCell);i()(e).closest("table").remove()}}])&&Lt(e.prototype,n),o&&Lt(e,o),t}();function Dt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ht=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.editable=this.$editable[0],this.lastRange=null,this.snapshot=null,this.style=new It,this.table=new Ft,this.typing=new Rt(e),this.bullet=new Nt,this.history=new Tt(e),this.context.memo("help.escape",this.lang.help.escape),this.context.memo("help.undo",this.lang.help.undo),this.context.memo("help.redo",this.lang.help.redo),this.context.memo("help.tab",this.lang.help.tab),this.context.memo("help.untab",this.lang.help.untab),this.context.memo("help.insertParagraph",this.lang.help.insertParagraph),this.context.memo("help.insertOrderedList",this.lang.help.insertOrderedList),this.context.memo("help.insertUnorderedList",this.lang.help.insertUnorderedList),this.context.memo("help.indent",this.lang.help.indent),this.context.memo("help.outdent",this.lang.help.outdent),this.context.memo("help.formatPara",this.lang.help.formatPara),this.context.memo("help.insertHorizontalRule",this.lang.help.insertHorizontalRule),this.context.memo("help.fontName",this.lang.help.fontName);for(var o=["bold","italic","underline","strikethrough","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","formatBlock","removeFormat","backColor"],r=0,a=o.length;r<a;r++)this[o[r]]=function(t){return function(e){n.beforeCommand(),document.execCommand(t,!1,e),n.afterCommand(!0)}}(o[r]),this.context.memo("help."+o[r],this.lang.help[o[r]]);this.fontName=this.wrapCommand((function(t){return n.fontStyling("font-family",m.validFontName(t))})),this.fontSize=this.wrapCommand((function(t){var e=n.currentStyle()["font-size-unit"];return n.fontStyling("font-size",t+e)})),this.fontSizeUnit=this.wrapCommand((function(t){var e=n.currentStyle()["font-size"];return n.fontStyling("font-size",e+t)}));for(var s=1;s<=6;s++)this["formatH"+s]=function(t){return function(){n.formatBlock("H"+t)}}(s),this.context.memo("help.formatH"+s,this.lang.help["formatH"+s]);this.insertParagraph=this.wrapCommand((function(){n.typing.insertParagraph(n.editable)})),this.insertOrderedList=this.wrapCommand((function(){n.bullet.insertOrderedList(n.editable)})),this.insertUnorderedList=this.wrapCommand((function(){n.bullet.insertUnorderedList(n.editable)})),this.indent=this.wrapCommand((function(){n.bullet.indent(n.editable)})),this.outdent=this.wrapCommand((function(){n.bullet.outdent(n.editable)})),this.insertNode=this.wrapCommand((function(t){n.isLimited(i()(t).text().length)||(n.getLastRange().insertNode(t),n.setLastRange(wt.createFromNodeAfter(t).select()))})),this.insertText=this.wrapCommand((function(t){if(!n.isLimited(t.length)){var e=n.getLastRange().insertNode(pt.createText(t));n.setLastRange(wt.create(e,pt.nodeLength(e)).select())}})),this.pasteHTML=this.wrapCommand((function(t){if(!n.isLimited(t.length)){t=n.context.invoke("codeview.purify",t);var e=n.getLastRange().pasteHTML(t);n.setLastRange(wt.createFromNodeAfter(C.last(e)).select())}})),this.formatBlock=this.wrapCommand((function(t,e){var o=n.options.callbacks.onApplyCustomStyle;o?o.call(n,e,n.context,n.onFormatBlock):n.onFormatBlock(t,e)})),this.insertHorizontalRule=this.wrapCommand((function(){var t=n.getLastRange().insertNode(pt.create("HR"));t.nextSibling&&n.setLastRange(wt.create(t.nextSibling,0).normalize().select())})),this.lineHeight=this.wrapCommand((function(t){n.style.stylePara(n.getLastRange(),{lineHeight:t})})),this.createLink=this.wrapCommand((function(t){var e=t.url,o=t.text,r=t.isNewWindow,a=t.checkProtocol,s=t.range||n.getLastRange(),l=o.length-s.toString().length;if(!(l>0&&n.isLimited(l))){var c=s.toString()!==o;"string"==typeof e&&(e=e.trim()),n.options.onCreateLink?e=n.options.onCreateLink(e):a&&(e=/^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e)?e:n.options.defaultProtocol+e);var u=[];if(c){var d=(s=s.deleteContents()).insertNode(i()("<A>"+o+"</A>")[0]);u.push(d)}else u=n.style.styleNodes(s,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});i.a.each(u,(function(t,n){i()(n).attr("href",e),r?i()(n).attr("target","_blank"):i()(n).removeAttr("target")})),n.setLastRange(n.createRangeFromList(u).select())}})),this.color=this.wrapCommand((function(t){var e=t.foreColor,n=t.backColor;e&&document.execCommand("foreColor",!1,e),n&&document.execCommand("backColor",!1,n)})),this.foreColor=this.wrapCommand((function(t){document.execCommand("foreColor",!1,t)})),this.insertTable=this.wrapCommand((function(t){var e=t.split("x");n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0],e[1],n.options))})),this.removeMedia=this.wrapCommand((function(){var t=i()(n.restoreTarget()).parent();t.closest("figure").length?t.closest("figure").remove():t=i()(n.restoreTarget()).detach(),n.context.triggerEvent("media.delete",t,n.$editable)})),this.floatMe=this.wrapCommand((function(t){var e=i()(n.restoreTarget());e.toggleClass("note-float-left","left"===t),e.toggleClass("note-float-right","right"===t),e.css("float","none"===t?"":t)})),this.resize=this.wrapCommand((function(t){var e=i()(n.restoreTarget());0===(t=parseFloat(t))?e.css("width",""):e.css({width:100*t+"%",height:""})}))}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$editable.on("keydown",(function(e){if(e.keyCode===xt.code.ENTER&&t.context.triggerEvent("enter",e),t.context.triggerEvent("keydown",e),t.snapshot=t.history.makeSnapshot(),t.hasKeyShortCut=!1,e.isDefaultPrevented()||(t.options.shortcuts?t.hasKeyShortCut=t.handleKeyMap(e):t.preventDefaultEditableShortCuts(e)),t.isLimited(1,e)){var n=t.getLastRange();if(n.eo-n.so==0)return!1}t.setLastRange(),t.options.recordEveryKeystroke&&!1===t.hasKeyShortCut&&t.history.recordUndo()})).on("keyup",(function(e){t.setLastRange(),t.context.triggerEvent("keyup",e)})).on("focus",(function(e){t.setLastRange(),t.context.triggerEvent("focus",e)})).on("blur",(function(e){t.context.triggerEvent("blur",e)})).on("mousedown",(function(e){t.context.triggerEvent("mousedown",e)})).on("mouseup",(function(e){t.setLastRange(),t.history.recordUndo(),t.context.triggerEvent("mouseup",e)})).on("scroll",(function(e){t.context.triggerEvent("scroll",e)})).on("paste",(function(e){t.setLastRange(),t.context.triggerEvent("paste",e)})).on("input",(function(){t.isLimited(0)&&t.snapshot&&t.history.applySnapshot(t.snapshot)})),this.$editable.attr("spellcheck",this.options.spellCheck),this.$editable.attr("autocorrect",this.options.spellCheck),this.options.disableGrammar&&this.$editable.attr("data-gramm",!1),this.$editable.html(pt.html(this.$note)||pt.emptyPara),this.$editable.on(m.inputEventName,g.debounce((function(){t.context.triggerEvent("change",t.$editable.html(),t.$editable)}),10)),this.$editable.on("focusin",(function(e){t.context.triggerEvent("focusin",e)})).on("focusout",(function(e){t.context.triggerEvent("focusout",e)})),this.options.airMode?this.options.overrideContextMenu&&this.$editor.on("contextmenu",(function(e){return t.context.triggerEvent("contextmenu",e),!1})):(this.options.width&&this.$editor.outerWidth(this.options.width),this.options.height&&this.$editable.outerHeight(this.options.height),this.options.maxHeight&&this.$editable.css("max-height",this.options.maxHeight),this.options.minHeight&&this.$editable.css("min-height",this.options.minHeight)),this.history.recordUndo(),this.setLastRange()}},{key:"destroy",value:function(){this.$editable.off()}},{key:"handleKeyMap",value:function(t){var e=this.options.keyMap[m.isMac?"mac":"pc"],n=[];t.metaKey&&n.push("CMD"),t.ctrlKey&&!t.altKey&&n.push("CTRL"),t.shiftKey&&n.push("SHIFT");var o=xt.nameFromCode[t.keyCode];o&&n.push(o);var i=e[n.join("+")];if("TAB"!==o||this.options.tabDisable)if(i){if(!1!==this.context.invoke(i))return t.preventDefault(),!0}else xt.isEdit(t.keyCode)&&this.afterCommand();else this.afterCommand();return!1}},{key:"preventDefaultEditableShortCuts",value:function(t){(t.ctrlKey||t.metaKey)&&C.contains([66,73,85],t.keyCode)&&t.preventDefault()}},{key:"isLimited",value:function(t,e){return t=t||0,(void 0===e||!(xt.isMove(e.keyCode)||xt.isNavigation(e.keyCode)||e.ctrlKey||e.metaKey||C.contains([xt.code.BACKSPACE,xt.code.DELETE],e.keyCode)))&&this.options.maxTextLength>0&&this.$editable.text().length+t>this.options.maxTextLength}},{key:"createRange",value:function(){return this.focus(),this.setLastRange(),this.getLastRange()}},{key:"createRangeFromList",value:function(t){var e=wt.createFromNodeBefore(C.head(t)).getStartPoint(),n=wt.createFromNodeAfter(C.last(t)).getEndPoint();return wt.create(e.node,e.offset,n.node,n.offset)}},{key:"setLastRange",value:function(t){t?this.lastRange=t:(this.lastRange=wt.create(this.editable),0===i()(this.lastRange.sc).closest(".note-editable").length&&(this.lastRange=wt.createFromBodyElement(this.editable)))}},{key:"getLastRange",value:function(){return this.lastRange||this.setLastRange(),this.lastRange}},{key:"saveRange",value:function(t){t&&this.getLastRange().collapse().select()}},{key:"restoreRange",value:function(){this.lastRange&&(this.lastRange.select(),this.focus())}},{key:"saveTarget",value:function(t){this.$editable.data("target",t)}},{key:"clearTarget",value:function(){this.$editable.removeData("target")}},{key:"restoreTarget",value:function(){return this.$editable.data("target")}},{key:"currentStyle",value:function(){var t=wt.create();return t&&(t=t.normalize()),t?this.style.current(t):this.style.fromNode(this.$editable)}},{key:"styleFromNode",value:function(t){return this.style.fromNode(t)}},{key:"undo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.undo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"commit",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.commit(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"redo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.redo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"beforeCommand",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),document.execCommand("styleWithCSS",!1,this.options.styleWithCSS),this.focus()}},{key:"afterCommand",value:function(t){this.normalizeContent(),this.history.recordUndo(),t||this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"tab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t);else{if(0===this.options.tabSize)return!1;this.isLimited(this.options.tabSize)||(this.beforeCommand(),this.typing.insertTab(t,this.options.tabSize),this.afterCommand())}}},{key:"untab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t,!0);else if(0===this.options.tabSize)return!1}},{key:"wrapCommand",value:function(t){return function(){this.beforeCommand(),t.apply(this,arguments),this.afterCommand()}}},{key:"insertImage",value:function(t,e){var n,o=this;return(n=t,i.a.Deferred((function(t){var e=i()("<img>");e.one("load",(function(){e.off("error abort"),t.resolve(e)})).one("error abort",(function(){e.off("load").detach(),t.reject(e)})).css({display:"none"}).appendTo(document.body).attr("src",n)})).promise()).then((function(t){o.beforeCommand(),"function"==typeof e?e(t):("string"==typeof e&&t.attr("data-filename",e),t.css("width",Math.min(o.$editable.width(),t.width()))),t.show(),o.getLastRange().insertNode(t[0]),o.setLastRange(wt.createFromNodeAfter(t[0]).select()),o.afterCommand()})).fail((function(t){o.context.triggerEvent("image.upload.error",t)}))}},{key:"insertImagesAsDataURL",value:function(t){var e=this;i.a.each(t,(function(t,n){var o=n.name;e.options.maximumImageFileSize&&e.options.maximumImageFileSize<n.size?e.context.triggerEvent("image.upload.error",e.lang.image.maximumFileSizeError):function(t){return i.a.Deferred((function(e){i.a.extend(new FileReader,{onload:function(t){var n=t.target.result;e.resolve(n)},onerror:function(t){e.reject(t)}}).readAsDataURL(t)})).promise()}(n).then((function(t){return e.insertImage(t,o)})).fail((function(){e.context.triggerEvent("image.upload.error")}))}))}},{key:"insertImagesOrCallback",value:function(t){this.options.callbacks.onImageUpload?this.context.triggerEvent("image.upload",t):this.insertImagesAsDataURL(t)}},{key:"getSelectedText",value:function(){var t=this.getLastRange();return t.isOnAnchor()&&(t=wt.createFromNode(pt.ancestor(t.sc,pt.isAnchor))),t.toString()}},{key:"onFormatBlock",value:function(t,e){if(document.execCommand("FormatBlock",!1,m.isMSIE?"<"+t+">":t),e&&e.length&&(e[0].tagName.toUpperCase()!==t.toUpperCase()&&(e=e.find(t)),e&&e.length)){var n=e[0].className||"";if(n){var o=this.createRange();i()([o.sc,o.ec]).closest(t).addClass(n)}}}},{key:"formatPara",value:function(){this.formatBlock("P")}},{key:"fontStyling",value:function(t,e){var n=this.getLastRange();if(""!==n){var o=this.style.styleNodes(n);if(this.$editor.find(".note-status-output").html(""),i()(o).css(t,e),n.isCollapsed()){var r=C.head(o);r&&!pt.nodeLength(r)&&(r.innerHTML=pt.ZERO_WIDTH_NBSP_CHAR,wt.createFromNode(r.firstChild).select(),this.setLastRange(),this.$editable.data("bogus",r))}else this.setLastRange(this.createRangeFromList(o).select())}else{var a=i.a.now();this.$editor.find(".note-status-output").html('<div id="note-status-output-'+a+'" class="alert alert-info">'+this.lang.output.noSelection+"</div>"),setTimeout((function(){i()("#note-status-output-"+a).remove()}),5e3)}}},{key:"unlink",value:function(){var t=this.getLastRange();if(t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor);(t=wt.createFromNode(e)).select(),this.setLastRange(),this.beforeCommand(),document.execCommand("unlink"),this.afterCommand()}}},{key:"getLinkInfo",value:function(){var t=this.getLastRange().expand(pt.isAnchor),e=i()(C.head(t.nodes(pt.isAnchor))),n={range:t,text:t.toString(),url:e.length?e.attr("href"):""};return e.length&&(n.isNewWindow="_blank"===e.attr("target")),n}},{key:"addRow",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addRow(e,t),this.afterCommand())}},{key:"addCol",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addCol(e,t),this.afterCommand())}},{key:"deleteRow",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteRow(t),this.afterCommand())}},{key:"deleteCol",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteCol(t),this.afterCommand())}},{key:"deleteTable",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteTable(t),this.afterCommand())}},{key:"resizeTo",value:function(t,e,n){var o;if(n){var i=t.y/t.x,r=e.data("ratio");o={width:r>i?t.x:t.y/r,height:r>i?t.x*r:t.y}}else o={width:t.x,height:t.y};e.css(o)}},{key:"hasFocus",value:function(){return this.$editable.is(":focus")}},{key:"focus",value:function(){this.hasFocus()||this.$editable.focus()}},{key:"isEmpty",value:function(){return pt.isEmpty(this.$editable[0])||pt.emptyPara===this.$editable.html()}},{key:"empty",value:function(){this.context.invoke("code",pt.emptyPara)}},{key:"normalizeContent",value:function(){this.$editable[0].normalize()}}])&&Dt(e.prototype,n),o&&Dt(e,o),t}();function zt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Bt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editable=e.layoutInfo.editable}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.$editable.on("paste",this.pasteByEvent.bind(this))}},{key:"pasteByEvent",value:function(t){var e=this,n=t.originalEvent.clipboardData;if(n&&n.items&&n.items.length){var o=n.items.length>1?n.items[1]:C.head(n.items);"file"===o.kind&&-1!==o.type.indexOf("image/")?(this.context.invoke("editor.insertImagesOrCallback",[o.getAsFile()]),t.preventDefault()):"string"===o.kind&&this.context.invoke("editor.isLimited",n.getData("Text").length)&&t.preventDefault()}else if(window.clipboardData){var i=window.clipboardData.getData("text");this.context.invoke("editor.isLimited",i.length)&&t.preventDefault()}setTimeout((function(){e.context.invoke("editor.afterCommand")}),10)}}])&&zt(e.prototype,n),o&&zt(e,o),t}();function Mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ot=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$eventListener=i()(document),this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.documentEventHandlers={},this.$dropzone=i()(['<div class="note-dropzone">','<div class="note-dropzone-message"></div>',"</div>"].join("")).prependTo(this.$editor)}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.options.disableDragAndDrop?(this.documentEventHandlers.onDrop=function(t){t.preventDefault()},this.$eventListener=this.$dropzone,this.$eventListener.on("drop",this.documentEventHandlers.onDrop)):this.attachDragAndDropEvent()}},{key:"attachDragAndDropEvent",value:function(){var t=this,e=i()(),n=this.$dropzone.find(".note-dropzone-message");this.documentEventHandlers.onDragenter=function(o){var i=t.context.invoke("codeview.isActivated"),r=t.$editor.width()>0&&t.$editor.height()>0;i||e.length||!r||(t.$editor.addClass("dragover"),t.$dropzone.width(t.$editor.width()),t.$dropzone.height(t.$editor.height()),n.text(t.lang.image.dragImageHere)),e=e.add(o.target)},this.documentEventHandlers.onDragleave=function(n){(e=e.not(n.target)).length&&"BODY"!==n.target.nodeName||(e=i()(),t.$editor.removeClass("dragover"))},this.documentEventHandlers.onDrop=function(){e=i()(),t.$editor.removeClass("dragover")},this.$eventListener.on("dragenter",this.documentEventHandlers.onDragenter).on("dragleave",this.documentEventHandlers.onDragleave).on("drop",this.documentEventHandlers.onDrop),this.$dropzone.on("dragenter",(function(){t.$dropzone.addClass("hover"),n.text(t.lang.image.dropImage)})).on("dragleave",(function(){t.$dropzone.removeClass("hover"),n.text(t.lang.image.dragImageHere)})),this.$dropzone.on("drop",(function(e){var n=e.originalEvent.dataTransfer;e.preventDefault(),n&&n.files&&n.files.length?(t.$editable.focus(),t.context.invoke("editor.insertImagesOrCallback",n.files)):i.a.each(n.types,(function(e,o){if(!(o.toLowerCase().indexOf("_moz_")>-1)){var r=n.getData(o);o.toLowerCase().indexOf("text")>-1?t.context.invoke("editor.pasteHTML",r):i()(r).each((function(e,n){t.context.invoke("editor.insertNode",n)}))}}))})).on("dragover",!1)}},{key:"destroy",value:function(){var t=this;Object.keys(this.documentEventHandlers).forEach((function(e){t.$eventListener.off(e.substr(2).toLowerCase(),t.documentEventHandlers[e])})),this.documentEventHandlers={}}}])&&Mt(e.prototype,n),o&&Mt(e,o),t}();function jt(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return Ut(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ut(t,e)}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,r=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return r=t.done,t},e:function(t){a=!0,i=t},f:function(){try{r||null==o.return||o.return()}finally{if(a)throw i}}}}function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Wt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Kt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.options=e.options,this.CodeMirrorConstructor=window.CodeMirror,this.options.codemirror.CodeMirrorConstructor&&(this.CodeMirrorConstructor=this.options.codemirror.CodeMirrorConstructor)}var e,n,o;return e=t,(n=[{key:"sync",value:function(t){var e=this.isActivated(),n=this.CodeMirrorConstructor;e&&(t?n?this.$codable.data("cmEditor").getDoc().setValue(t):this.$codable.val(t):n&&this.$codable.data("cmEditor").save())}},{key:"initialize",value:function(){var t=this;this.$codable.on("keyup",(function(e){e.keyCode===xt.code.ESCAPE&&t.deactivate()}))}},{key:"isActivated",value:function(){return this.$editor.hasClass("codeview")}},{key:"toggle",value:function(){this.isActivated()?this.deactivate():this.activate(),this.context.triggerEvent("codeview.toggled")}},{key:"purify",value:function(t){if(this.options.codeviewFilter&&(t=t.replace(this.options.codeviewFilterRegex,""),this.options.codeviewIframeFilter)){var e=this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);t=t.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi,(function(t){if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t))return"";var n,o=jt(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if(new RegExp('src="(https?:)?//'+i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+'/(.+)"').test(t))return t}}catch(t){o.e(t)}finally{o.f()}return""}))}return t}},{key:"activate",value:function(){var t=this,e=this.CodeMirrorConstructor;if(this.$codable.val(pt.html(this.$editable,this.options.prettifyHtml)),this.$codable.height(this.$editable.height()),this.context.invoke("toolbar.updateCodeview",!0),this.context.invoke("airPopover.updateCodeview",!0),this.$editor.addClass("codeview"),this.$codable.focus(),e){var n=e.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var o=new e.TernServer(this.options.codemirror.tern);n.ternServer=o,n.on("cursorActivity",(function(t){o.updateArgHints(t)}))}n.on("blur",(function(e){t.context.triggerEvent("blur.codeview",n.getValue(),e)})),n.on("change",(function(){t.context.triggerEvent("change.codeview",n.getValue(),n)})),n.setSize(null,this.$editable.outerHeight()),this.$codable.data("cmEditor",n)}else this.$codable.on("blur",(function(e){t.context.triggerEvent("blur.codeview",t.$codable.val(),e)})),this.$codable.on("input",(function(){t.context.triggerEvent("change.codeview",t.$codable.val(),t.$codable)}))}},{key:"deactivate",value:function(){if(this.CodeMirrorConstructor){var t=this.$codable.data("cmEditor");this.$codable.val(t.getValue()),t.toTextArea()}var e=this.purify(pt.value(this.$codable,this.options.prettifyHtml)||pt.emptyPara),n=this.$editable.html()!==e;this.$editable.html(e),this.$editable.height(this.options.height?this.$codable.height():"auto"),this.$editor.removeClass("codeview"),n&&this.context.triggerEvent("change",this.$editable.html(),this.$editable),this.$editable.focus(),this.context.invoke("toolbar.updateCodeview",!1),this.context.invoke("airPopover.updateCodeview",!1)}},{key:"destroy",value:function(){this.isActivated()&&this.deactivate()}}])&&Wt(e.prototype,n),o&&Wt(e,o),t}();function qt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Vt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$document=i()(document),this.$statusbar=e.layoutInfo.statusbar,this.$editable=e.layoutInfo.editable,this.options=e.options}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.options.airMode||this.options.disableResizeEditor?this.destroy():this.$statusbar.on("mousedown",(function(e){e.preventDefault(),e.stopPropagation();var n=t.$editable.offset().top-t.$document.scrollTop(),o=function(e){var o=e.clientY-(n+24);o=t.options.minheight>0?Math.max(o,t.options.minheight):o,o=t.options.maxHeight>0?Math.min(o,t.options.maxHeight):o,t.$editable.height(o)};t.$document.on("mousemove",o).one("mouseup",(function(){t.$document.off("mousemove",o)}))}))}},{key:"destroy",value:function(){this.$statusbar.off(),this.$statusbar.addClass("locked")}}])&&qt(e.prototype,n),o&&qt(e,o),t}();function _t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Gt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.$window=i()(window),this.$scrollbar=i()("html, body"),this.onResize=function(){n.resizeTo({h:n.$window.height()-n.$toolbar.outerHeight()})}}var e,n,o;return e=t,(n=[{key:"resizeTo",value:function(t){this.$editable.css("height",t.h),this.$codable.css("height",t.h),this.$codable.data("cmeditor")&&this.$codable.data("cmeditor").setsize(null,t.h)}},{key:"toggle",value:function(){this.$editor.toggleClass("fullscreen"),this.isFullscreen()?(this.$editable.data("orgHeight",this.$editable.css("height")),this.$editable.data("orgMaxHeight",this.$editable.css("maxHeight")),this.$editable.css("maxHeight",""),this.$window.on("resize",this.onResize).trigger("resize"),this.$scrollbar.css("overflow","hidden")):(this.$window.off("resize",this.onResize),this.resizeTo({h:this.$editable.data("orgHeight")}),this.$editable.css("maxHeight",this.$editable.css("orgMaxHeight")),this.$scrollbar.css("overflow","visible")),this.context.invoke("toolbar.updateFullscreen",this.isFullscreen())}},{key:"isFullscreen",value:function(){return this.$editor.hasClass("fullscreen")}}])&&_t(e.prototype,n),o&&_t(e,o),t}();function Yt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Zt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$document=i()(document),this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,this.lang=this.options.langInfo,this.events={"summernote.mousedown":function(t,e){n.update(e.target,e)&&e.preventDefault()},"summernote.keyup summernote.scroll summernote.change summernote.dialog.shown":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$handle=i()(['<div class="note-handle">','<div class="note-control-selection">','<div class="note-control-selection-bg"></div>','<div class="note-control-holder note-control-nw"></div>','<div class="note-control-holder note-control-ne"></div>','<div class="note-control-holder note-control-sw"></div>','<div class="',this.options.disableResizeImage?"note-control-holder":"note-control-sizing",' note-control-se"></div>',this.options.disableResizeImage?"":'<div class="note-control-selection-info"></div>',"</div>","</div>"].join("")).prependTo(this.$editingArea),this.$handle.on("mousedown",(function(e){if(pt.isControlSizing(e.target)){e.preventDefault(),e.stopPropagation();var n=t.$handle.find(".note-control-selection").data("target"),o=n.offset(),i=t.$document.scrollTop(),r=function(e){t.context.invoke("editor.resizeTo",{x:e.clientX-o.left,y:e.clientY-(o.top-i)},n,!e.shiftKey),t.update(n[0],e)};t.$document.on("mousemove",r).one("mouseup",(function(e){e.preventDefault(),t.$document.off("mousemove",r),t.context.invoke("editor.afterCommand")})),n.data("ratio")||n.data("ratio",n.height()/n.width())}})),this.$handle.on("wheel",(function(e){e.preventDefault(),t.update()}))}},{key:"destroy",value:function(){this.$handle.remove()}},{key:"update",value:function(t,e){if(this.context.isDisabled())return!1;var n=pt.isImg(t),o=this.$handle.find(".note-control-selection");if(this.context.invoke("imagePopover.update",t,e),n){var r=i()(t),a=r.position(),s={left:a.left+parseInt(r.css("marginLeft"),10),top:a.top+parseInt(r.css("marginTop"),10)},l={w:r.outerWidth(!1),h:r.outerHeight(!1)};o.css({display:"block",left:s.left,top:s.top,width:l.w,height:l.h}).data("target",r);var c=new Image;c.src=r.attr("src");var u=l.w+"x"+l.h+" ("+this.lang.image.original+": "+c.width+"x"+c.height+")";o.find(".note-control-selection-info").text(u),this.context.invoke("editor.saveTarget",t)}else this.hide();return n}},{key:"hide",value:function(){this.context.invoke("editor.clearTarget"),this.$handle.children().hide()}}])&&Yt(e.prototype,n),o&&Yt(e,o),t}();function Xt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Qt=/^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i,Jt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.lastWordRange=null}},{key:"destroy",value:function(){this.lastWordRange=null}},{key:"replace",value:function(){if(this.lastWordRange){var t=this.lastWordRange.toString(),e=t.match(Qt);if(e&&(e[1]||e[2])){var n=e[1]?t:"http://"+t,o=this.options.showDomainOnlyForAutolink?t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i,"").split("/")[0]:t,r=i()("<a />").html(o).attr("href",n)[0];this.context.options.linkTargetBlank&&i()(r).attr("target","_blank"),this.lastWordRange.insertNode(r),this.lastWordRange=null,this.context.invoke("editor.focus")}}}},{key:"handleKeydown",value:function(t){if(C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWordRange=e}}},{key:"handleKeyup",value:function(t){C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)&&this.replace()}}])&&Xt(e.prototype,n),o&&Xt(e,o),t}();function te(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ee=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e.layoutInfo.note,this.events={"summernote.change":function(){n.$note.val(e.invoke("code"))}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return pt.isTextarea(this.$note[0])}}])&&te(e.prototype,n),o&&te(e,o),t}();function ne(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var oe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options.replace||{},this.keys=[xt.code.ENTER,xt.code.SPACE,xt.code.PERIOD,xt.code.COMMA,xt.code.SEMICOLON,xt.code.SLASH],this.previousKeydownCode=null,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.match}},{key:"initialize",value:function(){this.lastWord=null}},{key:"destroy",value:function(){this.lastWord=null}},{key:"replace",value:function(){if(this.lastWord){var t=this,e=this.lastWord.toString();this.options.match(e,(function(e){if(e){var n="";if("string"==typeof e?n=pt.createText(e):e instanceof jQuery?n=e[0]:e instanceof Node&&(n=e),!n)return;t.lastWord.insertNode(n),t.lastWord=null,t.context.invoke("editor.focus")}}))}}},{key:"handleKeydown",value:function(t){if(this.previousKeydownCode&&C.contains(this.keys,this.previousKeydownCode))this.previousKeydownCode=t.keyCode;else{if(C.contains(this.keys,t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWord=e}this.previousKeydownCode=t.keyCode}}},{key:"handleKeyup",value:function(t){C.contains(this.keys,t.keyCode)&&this.replace()}}])&&ne(e.prototype,n),o&&ne(e,o),t}();function ie(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var re=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,!0===this.options.inheritPlaceholder&&(this.options.placeholder=this.context.$note.attr("placeholder")||this.options.placeholder),this.events={"summernote.init summernote.change":function(){n.update()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.placeholder}},{key:"initialize",value:function(){var t=this;this.$placeholder=i()('<div class="note-placeholder">'),this.$placeholder.on("click",(function(){t.context.invoke("focus")})).html(this.options.placeholder).prependTo(this.$editingArea),this.update()}},{key:"destroy",value:function(){this.$placeholder.remove()}},{key:"update",value:function(){var t=!this.context.invoke("codeview.isActivated")&&this.context.invoke("editor.isEmpty");this.$placeholder.toggle(t)}}])&&ie(e.prototype,n),o&&ie(e,o),t}();function ae(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var se=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ui=i.a.summernote.ui,this.context=e,this.$toolbar=e.layoutInfo.toolbar,this.options=e.options,this.lang=this.options.langInfo,this.invertedKeyMap=g.invertObject(this.options.keyMap[m.isMac?"mac":"pc"])}var e,n,o;return e=t,(n=[{key:"representShortcut",value:function(t){var e=this.invertedKeyMap[t];return this.options.shortcuts&&e?(m.isMac&&(e=e.replace("CMD","⌘").replace("SHIFT","⇧"))," ("+(e=e.replace("BACKSLASH","\\").replace("SLASH","/").replace("LEFTBRACKET","[").replace("RIGHTBRACKET","]"))+")"):""}},{key:"button",value:function(t){return!this.options.tooltip&&t.tooltip&&delete t.tooltip,t.container=this.options.container,this.ui.button(t)}},{key:"initialize",value:function(){this.addToolbarButtons(),this.addImagePopoverButtons(),this.addLinkPopoverButtons(),this.addTablePopoverButtons(),this.fontInstalledMap={}}},{key:"destroy",value:function(){delete this.fontInstalledMap}},{key:"isFontInstalled",value:function(t){return Object.prototype.hasOwnProperty.call(this.fontInstalledMap,t)||(this.fontInstalledMap[t]=m.isFontInstalled(t)||C.contains(this.options.fontNamesIgnoreCheck,t)),this.fontInstalledMap[t]}},{key:"isFontDeservedToAdd",value:function(t){return""!==(t=t.toLowerCase())&&this.isFontInstalled(t)&&-1===m.genericFontFamilies.indexOf(t)}},{key:"colorPalette",value:function(t,e,n,o){var r=this;return this.ui.buttonGroup({className:"note-color "+t,children:[this.button({className:"note-current-color-button",contents:this.ui.icon(this.options.icons.font+" note-recent-color"),tooltip:e,click:function(t){var e=i()(t.currentTarget);n&&o?r.context.invoke("editor.color",{backColor:e.attr("data-backColor"),foreColor:e.attr("data-foreColor")}):n?r.context.invoke("editor.color",{backColor:e.attr("data-backColor")}):o&&r.context.invoke("editor.color",{foreColor:e.attr("data-foreColor")})},callback:function(t){var e=t.find(".note-recent-color");n&&(e.css("background-color",r.options.colorButton.backColor),t.attr("data-backColor",r.options.colorButton.backColor)),o?(e.css("color",r.options.colorButton.foreColor),t.attr("data-foreColor",r.options.colorButton.foreColor)):e.css("color","transparent")}}),this.button({className:"dropdown-toggle",contents:this.ui.dropdownButtonContents("",this.options),tooltip:this.lang.color.more,data:{toggle:"dropdown"}}),this.ui.dropdown({items:(n?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.background+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">',this.lang.color.transparent,"</button>","</div>",'<div class="note-holder" data-event="backColor">\x3c!-- back colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.backColor+'" data-event="backColorPalette">',"</div>",'<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>',"</div>"].join(""):"")+(o?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.foreground+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">',this.lang.color.resetToDefault,"</button>","</div>",'<div class="note-holder" data-event="foreColor">\x3c!-- fore colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.foreColor+'" data-event="foreColorPalette">',"</div>",'<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>',"</div>"].join(""):""),callback:function(t){t.find(".note-holder").each((function(t,e){var n=i()(e);n.append(r.ui.palette({colors:r.options.colors,colorsName:r.options.colorsName,eventName:n.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())}));var e=[["#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]];t.find(".note-holder-custom").each((function(t,n){var o=i()(n);o.append(r.ui.palette({colors:e,colorsName:e,eventName:o.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())})),t.find("input[type=color]").each((function(e,n){i()(n).change((function(){var e=t.find("#"+i()(this).data("event")).find(".note-color-btn").first(),n=this.value.toUpperCase();e.css("background-color",n).attr("aria-label",n).attr("data-value",n).attr("data-original-title",n),e.click()}))}))},click:function(e){e.stopPropagation();var n=i()("."+t).find(".note-dropdown-menu"),o=i()(e.target),a=o.data("event"),s=o.attr("data-value");if("openPalette"===a){var l=n.find("#"+s),c=i()(n.find("#"+l.data("event")).find(".note-color-row")[0]),u=c.find(".note-color-btn").last().detach(),d=l.val();u.css("background-color",d).attr("aria-label",d).attr("data-value",d).attr("data-original-title",d),c.prepend(u),l.click()}else{if(C.contains(["backColor","foreColor"],a)){var h="backColor"===a?"background-color":"color",f=o.closest(".note-color").find(".note-recent-color"),p=o.closest(".note-color").find(".note-current-color-button");f.css(h,s),p.attr("data-"+a,s)}r.context.invoke("editor."+a,s)}}})]}).render()}},{key:"addToolbarButtons",value:function(){var t=this;this.context.memo("button.style",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic),t.options),tooltip:t.lang.style.style,data:{toggle:"dropdown"}}),t.ui.dropdown({className:"dropdown-style",items:t.options.styleTags,title:t.lang.style.style,template:function(e){"string"==typeof e&&(e={tag:e,title:Object.prototype.hasOwnProperty.call(t.lang.style,e)?t.lang.style[e]:e});var n=e.tag,o=e.title;return"<"+n+(e.style?' style="'+e.style+'" ':"")+(e.className?' class="'+e.className+'"':"")+">"+o+"</"+n+">"},click:t.context.createInvokeHandler("editor.formatBlock")})]).render()}));for(var e=function(e,n){var o=t.options.styleTags[e];t.context.memo("button.style."+o,(function(){return t.button({className:"note-btn-style-"+o,contents:'<div data-value="'+o+'">'+o.toUpperCase()+"</div>",tooltip:t.lang.style[o],click:t.context.createInvokeHandler("editor.formatBlock")}).render()}))},n=0,o=this.options.styleTags.length;n<o;n++)e(n);this.context.memo("button.bold",(function(){return t.button({className:"note-btn-bold",contents:t.ui.icon(t.options.icons.bold),tooltip:t.lang.font.bold+t.representShortcut("bold"),click:t.context.createInvokeHandlerAndUpdateState("editor.bold")}).render()})),this.context.memo("button.italic",(function(){return t.button({className:"note-btn-italic",contents:t.ui.icon(t.options.icons.italic),tooltip:t.lang.font.italic+t.representShortcut("italic"),click:t.context.createInvokeHandlerAndUpdateState("editor.italic")}).render()})),this.context.memo("button.underline",(function(){return t.button({className:"note-btn-underline",contents:t.ui.icon(t.options.icons.underline),tooltip:t.lang.font.underline+t.representShortcut("underline"),click:t.context.createInvokeHandlerAndUpdateState("editor.underline")}).render()})),this.context.memo("button.clear",(function(){return t.button({contents:t.ui.icon(t.options.icons.eraser),tooltip:t.lang.font.clear+t.representShortcut("removeFormat"),click:t.context.createInvokeHandler("editor.removeFormat")}).render()})),this.context.memo("button.strikethrough",(function(){return t.button({className:"note-btn-strikethrough",contents:t.ui.icon(t.options.icons.strikethrough),tooltip:t.lang.font.strikethrough+t.representShortcut("strikethrough"),click:t.context.createInvokeHandlerAndUpdateState("editor.strikethrough")}).render()})),this.context.memo("button.superscript",(function(){return t.button({className:"note-btn-superscript",contents:t.ui.icon(t.options.icons.superscript),tooltip:t.lang.font.superscript,click:t.context.createInvokeHandlerAndUpdateState("editor.superscript")}).render()})),this.context.memo("button.subscript",(function(){return t.button({className:"note-btn-subscript",contents:t.ui.icon(t.options.icons.subscript),tooltip:t.lang.font.subscript,click:t.context.createInvokeHandlerAndUpdateState("editor.subscript")}).render()})),this.context.memo("button.fontname",(function(){var e=t.context.invoke("editor.currentStyle");return t.options.addDefaultFonts&&i.a.each(e["font-family"].split(","),(function(e,n){n=n.trim().replace(/['"]+/g,""),t.isFontDeservedToAdd(n)&&-1===t.options.fontNames.indexOf(n)&&t.options.fontNames.push(n)})),t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontname"></span>',t.options),tooltip:t.lang.font.name,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontname",checkClassName:t.options.icons.menuCheck,items:t.options.fontNames.filter(t.isFontInstalled.bind(t)),title:t.lang.font.name,template:function(t){return'<span style="font-family: '+m.validFontName(t)+'">'+t+"</span>"},click:t.context.createInvokeHandlerAndUpdateState("editor.fontName")})]).render()})),this.context.memo("button.fontsize",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>',t.options),tooltip:t.lang.font.size,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsize",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizes,title:t.lang.font.size,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSize")})]).render()})),this.context.memo("button.fontsizeunit",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>',t.options),tooltip:t.lang.font.sizeunit,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsizeunit",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizeUnits,title:t.lang.font.sizeunit,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit")})]).render()})),this.context.memo("button.color",(function(){return t.colorPalette("note-color-all",t.lang.color.recent,!0,!0)})),this.context.memo("button.forecolor",(function(){return t.colorPalette("note-color-fore",t.lang.color.foreground,!1,!0)})),this.context.memo("button.backcolor",(function(){return t.colorPalette("note-color-back",t.lang.color.background,!0,!1)})),this.context.memo("button.ul",(function(){return t.button({contents:t.ui.icon(t.options.icons.unorderedlist),tooltip:t.lang.lists.unordered+t.representShortcut("insertUnorderedList"),click:t.context.createInvokeHandler("editor.insertUnorderedList")}).render()})),this.context.memo("button.ol",(function(){return t.button({contents:t.ui.icon(t.options.icons.orderedlist),tooltip:t.lang.lists.ordered+t.representShortcut("insertOrderedList"),click:t.context.createInvokeHandler("editor.insertOrderedList")}).render()}));var r=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut("justifyLeft"),click:this.context.createInvokeHandler("editor.justifyLeft")}),a=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut("justifyCenter"),click:this.context.createInvokeHandler("editor.justifyCenter")}),s=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut("justifyRight"),click:this.context.createInvokeHandler("editor.justifyRight")}),l=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut("justifyFull"),click:this.context.createInvokeHandler("editor.justifyFull")}),c=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut("outdent"),click:this.context.createInvokeHandler("editor.outdent")}),u=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut("indent"),click:this.context.createInvokeHandler("editor.indent")});this.context.memo("button.justifyLeft",g.invoke(r,"render")),this.context.memo("button.justifyCenter",g.invoke(a,"render")),this.context.memo("button.justifyRight",g.invoke(s,"render")),this.context.memo("button.justifyFull",g.invoke(l,"render")),this.context.memo("button.outdent",g.invoke(c,"render")),this.context.memo("button.indent",g.invoke(u,"render")),this.context.memo("button.paragraph",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft),t.options),tooltip:t.lang.paragraph.paragraph,data:{toggle:"dropdown"}}),t.ui.dropdown([t.ui.buttonGroup({className:"note-align",children:[r,a,s,l]}),t.ui.buttonGroup({className:"note-list",children:[c,u]})])]).render()})),this.context.memo("button.height",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight),t.options),tooltip:t.lang.font.height,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({items:t.options.lineHeights,checkClassName:t.options.icons.menuCheck,className:"dropdown-line-height",title:t.lang.font.height,click:t.context.createInvokeHandler("editor.lineHeight")})]).render()})),this.context.memo("button.table",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table),t.options),tooltip:t.lang.table.table,data:{toggle:"dropdown"}}),t.ui.dropdown({title:t.lang.table.table,className:"note-table",items:['<div class="note-dimension-picker">','<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>','<div class="note-dimension-picker-highlighted"></div>','<div class="note-dimension-picker-unhighlighted"></div>',"</div>",'<div class="note-dimension-display">1 x 1</div>'].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.options.insertTableMaxSize.col+"em",height:t.options.insertTableMaxSize.row+"em"}).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove",t.tableMoveHandler.bind(t))}}).render()})),this.context.memo("button.link",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.link+t.representShortcut("linkDialog.show"),click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.picture",(function(){return t.button({contents:t.ui.icon(t.options.icons.picture),tooltip:t.lang.image.image,click:t.context.createInvokeHandler("imageDialog.show")}).render()})),this.context.memo("button.video",(function(){return t.button({contents:t.ui.icon(t.options.icons.video),tooltip:t.lang.video.video,click:t.context.createInvokeHandler("videoDialog.show")}).render()})),this.context.memo("button.hr",(function(){return t.button({contents:t.ui.icon(t.options.icons.minus),tooltip:t.lang.hr.insert+t.representShortcut("insertHorizontalRule"),click:t.context.createInvokeHandler("editor.insertHorizontalRule")}).render()})),this.context.memo("button.fullscreen",(function(){return t.button({className:"btn-fullscreen note-codeview-keep",contents:t.ui.icon(t.options.icons.arrowsAlt),tooltip:t.lang.options.fullscreen,click:t.context.createInvokeHandler("fullscreen.toggle")}).render()})),this.context.memo("button.codeview",(function(){return t.button({className:"btn-codeview note-codeview-keep",contents:t.ui.icon(t.options.icons.code),tooltip:t.lang.options.codeview,click:t.context.createInvokeHandler("codeview.toggle")}).render()})),this.context.memo("button.redo",(function(){return t.button({contents:t.ui.icon(t.options.icons.redo),tooltip:t.lang.history.redo+t.representShortcut("redo"),click:t.context.createInvokeHandler("editor.redo")}).render()})),this.context.memo("button.undo",(function(){return t.button({contents:t.ui.icon(t.options.icons.undo),tooltip:t.lang.history.undo+t.representShortcut("undo"),click:t.context.createInvokeHandler("editor.undo")}).render()})),this.context.memo("button.help",(function(){return t.button({contents:t.ui.icon(t.options.icons.question),tooltip:t.lang.options.help,click:t.context.createInvokeHandler("helpDialog.show")}).render()}))}},{key:"addImagePopoverButtons",value:function(){var t=this;this.context.memo("button.resizeFull",(function(){return t.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:t.lang.image.resizeFull,click:t.context.createInvokeHandler("editor.resize","1")}).render()})),this.context.memo("button.resizeHalf",(function(){return t.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:t.lang.image.resizeHalf,click:t.context.createInvokeHandler("editor.resize","0.5")}).render()})),this.context.memo("button.resizeQuarter",(function(){return t.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:t.lang.image.resizeQuarter,click:t.context.createInvokeHandler("editor.resize","0.25")}).render()})),this.context.memo("button.resizeNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.resizeNone,click:t.context.createInvokeHandler("editor.resize","0")}).render()})),this.context.memo("button.floatLeft",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatLeft),tooltip:t.lang.image.floatLeft,click:t.context.createInvokeHandler("editor.floatMe","left")}).render()})),this.context.memo("button.floatRight",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatRight),tooltip:t.lang.image.floatRight,click:t.context.createInvokeHandler("editor.floatMe","right")}).render()})),this.context.memo("button.floatNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.floatNone,click:t.context.createInvokeHandler("editor.floatMe","none")}).render()})),this.context.memo("button.removeMedia",(function(){return t.button({contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.image.remove,click:t.context.createInvokeHandler("editor.removeMedia")}).render()}))}},{key:"addLinkPopoverButtons",value:function(){var t=this;this.context.memo("button.linkDialogShow",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.edit,click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.unlink",(function(){return t.button({contents:t.ui.icon(t.options.icons.unlink),tooltip:t.lang.link.unlink,click:t.context.createInvokeHandler("editor.unlink")}).render()}))}},{key:"addTablePopoverButtons",value:function(){var t=this;this.context.memo("button.addRowUp",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowAbove),tooltip:t.lang.table.addRowAbove,click:t.context.createInvokeHandler("editor.addRow","top")}).render()})),this.context.memo("button.addRowDown",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowBelow),tooltip:t.lang.table.addRowBelow,click:t.context.createInvokeHandler("editor.addRow","bottom")}).render()})),this.context.memo("button.addColLeft",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colBefore),tooltip:t.lang.table.addColLeft,click:t.context.createInvokeHandler("editor.addCol","left")}).render()})),this.context.memo("button.addColRight",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colAfter),tooltip:t.lang.table.addColRight,click:t.context.createInvokeHandler("editor.addCol","right")}).render()})),this.context.memo("button.deleteRow",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowRemove),tooltip:t.lang.table.delRow,click:t.context.createInvokeHandler("editor.deleteRow")}).render()})),this.context.memo("button.deleteCol",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colRemove),tooltip:t.lang.table.delCol,click:t.context.createInvokeHandler("editor.deleteCol")}).render()})),this.context.memo("button.deleteTable",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.table.delTable,click:t.context.createInvokeHandler("editor.deleteTable")}).render()}))}},{key:"build",value:function(t,e){for(var n=0,o=e.length;n<o;n++){for(var i=e[n],r=Array.isArray(i)?i[0]:i,a=Array.isArray(i)?1===i.length?[i[0]]:i[1]:[i],s=this.ui.buttonGroup({className:"note-"+r}).render(),l=0,c=a.length;l<c;l++){var u=this.context.memo("button."+a[l]);u&&s.append("function"==typeof u?u(this.context):u)}s.appendTo(t)}}},{key:"updateCurrentStyle",value:function(t){var e=this,n=t||this.$toolbar,o=this.context.invoke("editor.currentStyle");if(this.updateBtnStates(n,{".note-btn-bold":function(){return"bold"===o["font-bold"]},".note-btn-italic":function(){return"italic"===o["font-italic"]},".note-btn-underline":function(){return"underline"===o["font-underline"]},".note-btn-subscript":function(){return"subscript"===o["font-subscript"]},".note-btn-superscript":function(){return"superscript"===o["font-superscript"]},".note-btn-strikethrough":function(){return"strikethrough"===o["font-strikethrough"]}}),o["font-family"]){var r=o["font-family"].split(",").map((function(t){return t.replace(/[\'\"]/g,"").replace(/\s+$/,"").replace(/^\s+/,"")})),a=C.find(r,this.isFontInstalled.bind(this));n.find(".dropdown-fontname a").each((function(t,e){var n=i()(e),o=n.data("value")+""==a+"";n.toggleClass("checked",o)})),n.find(".note-current-fontname").text(a).css("font-family",a)}if(o["font-size"]){var s=o["font-size"];n.find(".dropdown-fontsize a").each((function(t,e){var n=i()(e),o=n.data("value")+""==s+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsize").text(s);var l=o["font-size-unit"];n.find(".dropdown-fontsizeunit a").each((function(t,e){var n=i()(e),o=n.data("value")+""==l+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsizeunit").text(l)}if(o["line-height"]){var c=o["line-height"];n.find(".dropdown-line-height li a").each((function(t,n){var o=i()(n).data("value")+""==c+"";e.className=o?"checked":""}))}}},{key:"updateBtnStates",value:function(t,e){var n=this;i.a.each(e,(function(e,o){n.ui.toggleBtnActive(t.find(e),o())}))}},{key:"tableMoveHandler",value:function(t){var e,n=i()(t.target.parentNode),o=n.next(),r=n.find(".note-dimension-picker-mousecatcher"),a=n.find(".note-dimension-picker-highlighted"),s=n.find(".note-dimension-picker-unhighlighted");if(void 0===t.offsetX){var l=i()(t.target).offset();e={x:t.pageX-l.left,y:t.pageY-l.top}}else e={x:t.offsetX,y:t.offsetY};var c=Math.ceil(e.x/18)||1,u=Math.ceil(e.y/18)||1;a.css({width:c+"em",height:u+"em"}),r.data("value",c+"x"+u),c>3&&c<this.options.insertTableMaxSize.col&&s.css({width:c+1+"em"}),u>3&&u<this.options.insertTableMaxSize.row&&s.css({height:u+1+"em"}),o.html(c+" x "+u)}}])&&ae(e.prototype,n),o&&ae(e,o),t}();function le(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ce=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$window=i()(window),this.$document=i()(document),this.ui=i.a.summernote.ui,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$statusbar=e.layoutInfo.statusbar,this.options=e.options,this.isFollowing=!1,this.followScroll=this.followScroll.bind(this)}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!this.options.airMode}},{key:"initialize",value:function(){var t=this;this.options.toolbar=this.options.toolbar||[],this.options.toolbar.length?this.context.invoke("buttons.build",this.$toolbar,this.options.toolbar):this.$toolbar.hide(),this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.changeContainer(!1),this.$note.on("summernote.keyup summernote.mouseup summernote.change",(function(){t.context.invoke("buttons.updateCurrentStyle")})),this.context.invoke("buttons.updateCurrentStyle"),this.options.followingToolbar&&this.$window.on("scroll resize",this.followScroll)}},{key:"destroy",value:function(){this.$toolbar.children().remove(),this.options.followingToolbar&&this.$window.off("scroll resize",this.followScroll)}},{key:"followScroll",value:function(){if(this.$editor.hasClass("fullscreen"))return!1;var t=this.$editor.outerHeight(),e=this.$editor.width(),n=this.$toolbar.height(),o=this.$statusbar.height(),r=0;this.options.otherStaticBar&&(r=i()(this.options.otherStaticBar).outerHeight());var a=this.$document.scrollTop(),s=this.$editor.offset().top,l=s-r,c=s+t-r-n-o;!this.isFollowing&&a>l&&a<c-n?(this.isFollowing=!0,this.$editable.css({marginTop:this.$toolbar.outerHeight()}),this.$toolbar.css({position:"fixed",top:r,width:e,zIndex:1e3})):this.isFollowing&&(a<l||a>c)&&(this.isFollowing=!1,this.$toolbar.css({position:"relative",top:0,width:"100%",zIndex:"auto"}),this.$editable.css({marginTop:""}))}},{key:"changeContainer",value:function(t){t?this.$toolbar.prependTo(this.$editor):this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.options.followingToolbar&&this.followScroll()}},{key:"updateFullscreen",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"),t),this.changeContainer(t)}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"),t),t?this.deactivate():this.activate()}},{key:"activate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!0)}},{key:"deactivate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!1)}}])&&le(e.prototype,n),o&&le(e,o),t}();function ue(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var de=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo,e.memo("help.linkDialog.show",this.options.langInfo.help["linkDialog.show"])}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group">','<label for="note-dialog-link-txt-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.textToDisplay,"</label>"),'<input id="note-dialog-link-txt-'.concat(this.options.id,'" class="note-link-text form-control note-form-control note-input" type="text"/>'),"</div>",'<div class="form-group note-form-group">','<label for="note-dialog-link-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.url,"</label>"),'<input id="note-dialog-link-url-'.concat(this.options.id,'" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'),"</div>",this.options.disableLinkTarget?"":i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-open-in-new-window",text:this.lang.link.openInNewWindow,checked:!0}).render()).html(),i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-use-protocol",text:this.lang.link.useProtocol,checked:!0}).render()).html()].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-link-btn",'" value="').concat(this.lang.link.insert,'" disabled>');this.$dialog=this.ui.dialog({className:"link-dialog",title:this.lang.link.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"toggleLinkBtn",value:function(t,e,n){this.ui.toggleBtn(t,e.val()&&n.val())}},{key:"showLinkDialog",value:function(t){var e=this;return i.a.Deferred((function(n){var o=e.$dialog.find(".note-link-text"),i=e.$dialog.find(".note-link-url"),r=e.$dialog.find(".note-link-btn"),a=e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),s=e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");e.ui.onDialogShown(e.$dialog,(function(){e.context.triggerEvent("dialog.shown"),!t.url&&g.isValidUrl(t.text)&&(t.url=t.text),o.on("input paste propertychange",(function(){t.text=o.val(),e.toggleLinkBtn(r,o,i)})).val(t.text),i.on("input paste propertychange",(function(){t.text||o.val(i.val()),e.toggleLinkBtn(r,o,i)})).val(t.url),m.isSupportTouch||i.trigger("focus"),e.toggleLinkBtn(r,o,i),e.bindEnterKey(i,r),e.bindEnterKey(o,r);var l=void 0!==t.isNewWindow?t.isNewWindow:e.context.options.linkTargetBlank;a.prop("checked",l);var c=!t.url&&e.context.options.useProtocol;s.prop("checked",c),r.one("click",(function(r){r.preventDefault(),n.resolve({range:t.range,url:i.val(),text:o.val(),isNewWindow:a.is(":checked"),checkProtocol:s.is(":checked")}),e.ui.hideDialog(e.$dialog)}))})),e.ui.onDialogHidden(e.$dialog,(function(){o.off(),i.off(),r.off(),"pending"===n.state()&&n.reject()})),e.ui.showDialog(e.$dialog)})).promise()}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getLinkInfo");this.context.invoke("editor.saveRange"),this.showLinkDialog(e).then((function(e){t.context.invoke("editor.restoreRange"),t.context.invoke("editor.createLink",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}}])&&ue(e.prototype,n),o&&ue(e,o),t}();function he(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var fe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.keyup summernote.mouseup summernote.change summernote.scroll":function(){n.update()},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.link)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-link-popover",callback:function(t){t.find(".popover-content,.note-popover-content").prepend('<span><a target="_blank"></a> </span>')}}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.link),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(){if(this.context.invoke("editor.hasFocus")){var t=this.context.invoke("editor.getLastRange");if(t.isCollapsed()&&t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor),n=i()(e).attr("href");this.$popover.find("a").attr("href",n).text(n);var o=pt.posFromPlaceholder(e),r=i()(this.options.container).offset();o.top-=r.top,o.left-=r.left,this.$popover.css({display:"block",left:o.left,top:o.top})}else this.hide()}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&he(e.prototype,n),o&&he(e,o),t}();function pe(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var me=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t="";if(this.options.maximumImageFileSize){var e=Math.floor(Math.log(this.options.maximumImageFileSize)/Math.log(1024)),n=1*(this.options.maximumImageFileSize/Math.pow(1024,e)).toFixed(2)+" "+" KMGTP"[e]+"B";t="<small>".concat(this.lang.image.maximumFileSize+" : "+n,"</small>")}var o=this.options.dialogsInBody?this.$body:this.options.container,i=['<div class="form-group note-form-group note-group-select-from-files">','<label for="note-dialog-image-file-'+this.options.id+'" class="note-form-label">'+this.lang.image.selectFromFiles+"</label>",'<input id="note-dialog-image-file-'+this.options.id+'" class="note-image-input form-control-file note-form-control note-input" ',' type="file" name="files" accept="image/*" multiple="multiple"/>',t,"</div>",'<div class="form-group note-group-image-url">','<label for="note-dialog-image-url-'+this.options.id+'" class="note-form-label">'+this.lang.image.url+"</label>",'<input id="note-dialog-image-url-'+this.options.id+'" class="note-image-url form-control note-form-control note-input" type="text"/>',"</div>"].join(""),r='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-image-btn",'" value="').concat(this.lang.image.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:i,footer:r}).render().appendTo(o)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showImageDialog().then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange"),"string"==typeof e?t.options.callbacks.onImageLinkInsert?t.context.triggerEvent("image.link.insert",e):t.context.invoke("editor.insertImage",e):t.context.invoke("editor.insertImagesOrCallback",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showImageDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-image-input"),o=t.$dialog.find(".note-image-url"),i=t.$dialog.find(".note-image-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.replaceWith(n.clone().on("change",(function(t){e.resolve(t.target.files||t.target.value)})).val("")),o.on("input paste propertychange",(function(){t.ui.toggleBtn(i,o.val())})).val(""),m.isSupportTouch||o.trigger("focus"),i.click((function(t){t.preventDefault(),e.resolve(o.val())})),t.bindEnterKey(o,i)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),i.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&pe(e.prototype,n),o&&pe(e,o),t}();function ve(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ge=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.editable=e.layoutInfo.editable[0],this.options=e.options,this.events={"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.image)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-image-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.image),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t,e){if(pt.isImg(t)){var n=i()(t).offset(),o=i()(this.options.container).offset(),r={};this.options.popatmouse?(r.left=e.pageX-20,r.top=e.pageY):r=n,r.top-=o.top,r.left-=o.left,this.$popover.css({display:"block",left:r.left,top:r.top})}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&ve(e.prototype,n),o&&ve(e,o),t}();function be(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ye=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.mousedown":function(t,e){n.update(e.target)},"summernote.keyup summernote.scroll summernote.change":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.table)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-table-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.table),m.isFF&&document.execCommand("enableInlineTableEditing",!1,!1),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){if(this.context.isDisabled())return!1;var e=pt.isCell(t);if(e){var n=pt.posFromPlaceholder(t),o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:n.left,top:n.top})}else this.hide();return e}},{key:"hide",value:function(){this.$popover.hide()}}])&&be(e.prototype,n),o&&be(e,o),t}();function ke(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var we=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group row-fluid">','<label for="note-dialog-video-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.video.url,' <small class="text-muted">').concat(this.lang.video.providers,"</small></label>"),'<input id="note-dialog-video-url-'.concat(this.options.id,'" class="note-video-url form-control note-form-control note-input" type="text"/>'),"</div>"].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-video-btn",'" value="').concat(this.lang.video.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"createVideoNode",value:function(t){var e,n=t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),o=t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),r=t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),a=t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),s=t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),l=t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),c=t.match(/\/\/v\.qq\.com.*?vid=(.+)/),u=t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),d=t.match(/^.+.(mp4|m4v)$/),h=t.match(/^.+.(ogg|ogv)$/),f=t.match(/^.+.(webm)$/),p=t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);if(n&&11===n[1].length){var m=n[1],v=0;if(void 0!==n[2]){var g=n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);if(g)for(var b=[3600,60,1],y=0,k=b.length;y<k;y++)v+=void 0!==g[y+1]?b[y]*parseInt(g[y+1],10):0}e=i()("<iframe>").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+m+(v>0?"?start="+v:"")).attr("width","640").attr("height","360")}else if(o&&o[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src","https://instagram.com/p/"+o[1]+"/embed/").attr("width","612").attr("height","710").attr("scrolling","no").attr("allowtransparency","true");else if(r&&r[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src",r[0]+"/embed/simple").attr("width","600").attr("height","600").attr("class","vine-embed");else if(a&&a[3].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("src","//player.vimeo.com/video/"+a[3]).attr("width","640").attr("height","360");else if(s&&s[2].length)e=i()("<iframe>").attr("frameborder",0).attr("src","//www.dailymotion.com/embed/video/"+s[2]).attr("width","640").attr("height","360");else if(l&&l[1].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","498").attr("width","510").attr("src","//player.youku.com/embed/"+l[1]);else if(c&&c[1].length||u&&u[2].length){var w=c&&c[1].length?c[1]:u[2];e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","310").attr("width","500").attr("src","https://v.qq.com/txp/iframe/player.html?vid="+w+"&auto=0")}else if(d||h||f)e=i()("<video controls>").attr("src",t).attr("width","640").attr("height","360");else{if(!p||!p[0].length)return!1;e=i()("<iframe>").attr("frameborder",0).attr("src","https://www.facebook.com/plugins/video.php?href="+encodeURIComponent(p[0])+"&show_text=0&width=560").attr("width","560").attr("height","301").attr("scrolling","no").attr("allowtransparency","true")}return e.addClass("note-video-clip"),e[0]}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getSelectedText");this.context.invoke("editor.saveRange"),this.showVideoDialog(e).then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange");var n=t.createVideoNode(e);n&&t.context.invoke("editor.insertNode",n)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showVideoDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-video-url"),o=t.$dialog.find(".note-video-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.on("input paste propertychange",(function(){t.ui.toggleBtn(o,n.val())})),m.isSupportTouch||n.trigger("focus"),o.click((function(t){t.preventDefault(),e.resolve(n.val())})),t.bindEnterKey(n,o)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&ke(e.prototype,n),o&&ke(e,o),t}();function Ce(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var xe=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<p class="text-center">','<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ','<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ','<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>',"</p>"].join("");this.$dialog=this.ui.dialog({title:this.lang.options.help,fade:this.options.dialogsFade,body:this.createShortcutList(),footer:e,callback:function(t){t.find(".modal-body,.note-modal-body").css({"max-height":300,overflow:"scroll"})}}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"createShortcutList",value:function(){var t=this,e=this.options.keyMap[m.isMac?"mac":"pc"];return Object.keys(e).map((function(n){var o=e[n],r=i()('<div><div class="help-list-item"></div></div>');return r.append(i()("<label><kbd>"+n+"</kdb></label>").css({width:180,"margin-right":10})).append(i()("<span/>").html(t.context.memo("help."+o)||o)),r.html()})).join("")}},{key:"showHelpDialog",value:function(){var t=this;return i.a.Deferred((function(e){t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),e.resolve()})),t.ui.showDialog(t.$dialog)})).promise()}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showHelpDialog().then((function(){t.context.invoke("editor.restoreRange")}))}}])&&Ce(e.prototype,n),o&&Ce(e,o),t}();function Se(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Te=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.hidable=!0,this.onContextmenu=!1,this.pageX=null,this.pageY=null,this.events={"summernote.contextmenu":function(t){n.options.editing&&(t.preventDefault(),t.stopPropagation(),n.onContextmenu=!0,n.update(!0))},"summernote.mousedown":function(t,e){n.pageX=e.pageX,n.pageY=e.pageY},"summernote.keyup summernote.mouseup summernote.scroll":function(t,e){n.options.editing&&!n.onContextmenu&&(n.pageX=e.pageX,n.pageY=e.pageY,n.update()),n.onContextmenu=!1},"summernote.disable summernote.change summernote.dialog.shown summernote.blur":function(){n.hide()},"summernote.focusout":function(){n.$popover.is(":active,:focus")||n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.options.airMode&&!C.isEmpty(this.options.popover.air)}},{key:"initialize",value:function(){var t=this;this.$popover=this.ui.popover({className:"note-air-popover"}).render().appendTo(this.options.container);var e=this.$popover.find(".popover-content");this.context.invoke("buttons.build",e,this.options.popover.air),this.$popover.on("mousedown",(function(){t.hidable=!1})),this.$popover.on("mouseup",(function(){t.hidable=!0}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){var e=this.context.invoke("editor.currentStyle");if(!e.range||e.range.isCollapsed()&&!t)this.hide();else{var n={left:this.pageX,top:this.pageY},o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:Math.max(n.left,0)+-5,top:n.top+5}),this.context.invoke("buttons.updateCurrentStyle",this.$popover)}}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$popover.find(".btn-codeview"),t),t&&this.hide()}},{key:"hide",value:function(){this.hidable&&this.$popover.hide()}}])&&Se(e.prototype,n),o&&Se(e,o),t}();function Ee(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ie=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$editable=e.layoutInfo.editable,this.options=e.options,this.hint=this.options.hint||[],this.direction=this.options.hintDirection||"bottom",this.hints=Array.isArray(this.hint)?this.hint:[this.hint],this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.hints.length>0}},{key:"initialize",value:function(){var t=this;this.lastWordRange=null,this.matchingWord=null,this.$popover=this.ui.popover({className:"note-hint-popover",hideArrow:!0,direction:""}).render().appendTo(this.options.container),this.$popover.hide(),this.$content=this.$popover.find(".popover-content,.note-popover-content"),this.$content.on("click",".note-hint-item",(function(e){t.$content.find(".active").removeClass("active"),i()(e.currentTarget).addClass("active"),t.replace()})),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"selectItem",value:function(t){this.$content.find(".active").removeClass("active"),t.addClass("active"),this.$content[0].scrollTop=t[0].offsetTop-this.$content.innerHeight()/2}},{key:"moveDown",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.next();if(e.length)this.selectItem(e);else{var n=t.parent().next();n.length||(n=this.$content.find(".note-hint-group").first()),this.selectItem(n.find(".note-hint-item").first())}}},{key:"moveUp",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.prev();if(e.length)this.selectItem(e);else{var n=t.parent().prev();n.length||(n=this.$content.find(".note-hint-group").last()),this.selectItem(n.find(".note-hint-item").last())}}},{key:"replace",value:function(){var t=this.$content.find(".note-hint-item.active");if(t.length){var e=this.nodeFromItem(t);if(null!==this.matchingWord&&0===this.matchingWord.length)this.lastWordRange.so=this.lastWordRange.eo;else if(null!==this.matchingWord&&this.matchingWord.length>0&&!this.lastWordRange.isCollapsed()){var n=this.lastWordRange.eo-this.lastWordRange.so-this.matchingWord.length;n>0&&(this.lastWordRange.so+=n)}if(this.lastWordRange.insertNode(e),"next"===this.options.hintSelect){var o=document.createTextNode("");i()(e).after(o),wt.createFromNodeBefore(o).select()}else wt.createFromNodeAfter(e).select();this.lastWordRange=null,this.hide(),this.context.invoke("editor.focus")}}},{key:"nodeFromItem",value:function(t){var e=this.hints[t.data("index")],n=t.data("item"),o=e.content?e.content(n):n;return"string"==typeof o&&(o=pt.createText(o)),o}},{key:"createItemTemplates",value:function(t,e){var n=this.hints[t];return e.map((function(e){var o=i()('<div class="note-hint-item"/>');return o.append(n.template?n.template(e):e+""),o.data({index:t,item:e}),o}))}},{key:"handleKeydown",value:function(t){this.$popover.is(":visible")&&(t.keyCode===xt.code.ENTER?(t.preventDefault(),this.replace()):t.keyCode===xt.code.UP?(t.preventDefault(),this.moveUp()):t.keyCode===xt.code.DOWN&&(t.preventDefault(),this.moveDown()))}},{key:"searchKeyword",value:function(t,e,n){var o=this.hints[t];if(o&&o.match.test(e)&&o.search){var i=o.match.exec(e);this.matchingWord=i[0],o.search(i[1],n)}else n()}},{key:"createGroup",value:function(t,e){var n=this,o=i()('<div class="note-hint-group note-hint-group-'+t+'"></div>');return this.searchKeyword(t,e,(function(e){(e=e||[]).length&&(o.html(n.createItemTemplates(t,e)),n.show())})),o}},{key:"handleKeyup",value:function(t){var e=this;if(!C.contains([xt.code.ENTER,xt.code.UP,xt.code.DOWN],t.keyCode)){var n,o,r=this.context.invoke("editor.getLastRange");if("words"===this.options.hintMode){if(n=r.getWordsRange(r),o=n.toString(),this.hints.forEach((function(t){if(t.match.test(o))return n=r.getWordsMatchRange(t.match),!1})),!n)return void this.hide();o=n.toString()}else n=r.getWordRange(),o=n.toString();if(this.hints.length&&o){this.$content.empty();var a=g.rect2bnd(C.last(n.getClientRects())),s=i()(this.options.container).offset();a&&(a.top-=s.top,a.left-=s.left,this.$popover.hide(),this.lastWordRange=n,this.hints.forEach((function(t,n){t.match.test(o)&&e.createGroup(n,o).appendTo(e.$content)})),this.$content.find(".note-hint-item:first").addClass("active"),"top"===this.direction?this.$popover.css({left:a.left,top:a.top-this.$popover.outerHeight()-5}):this.$popover.css({left:a.left,top:a.top+a.height+5}))}else this.hide()}}},{key:"show",value:function(){this.$popover.show()}},{key:"hide",value:function(){this.$popover.hide()}}])&&Ee(e.prototype,n),o&&Ee(e,o),t}();i.a.summernote=i.a.extend(i.a.summernote,{version:"0.8.18",plugins:{},dom:pt,range:wt,lists:C,options:{langInfo:i.a.summernote.lang["en-US"],editing:!0,modules:{editor:Ht,clipboard:Bt,dropzone:Ot,codeview:Kt,statusbar:Vt,fullscreen:Gt,handle:Zt,hintPopover:Ie,autoLink:Jt,autoSync:ee,autoReplace:oe,placeholder:re,buttons:se,toolbar:ce,linkDialog:de,linkPopover:fe,imageDialog:me,imagePopover:ge,tablePopover:ye,videoDialog:we,helpDialog:xe,airPopover:Te},buttons:{},lang:"en-US",followingToolbar:!1,toolbarPosition:"top",otherStaticBar:"",codeviewKeepButton:!1,toolbar:[["style",["style"]],["font",["bold","underline","clear"]],["fontname",["fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["table",["table"]],["insert",["link","picture","video"]],["view",["fullscreen","codeview","help"]]],popatmouse:!0,popover:{image:[["resize",["resizeFull","resizeHalf","resizeQuarter","resizeNone"]],["float",["floatLeft","floatRight","floatNone"]],["remove",["removeMedia"]]],link:[["link",["linkDialogShow","unlink"]]],table:[["add",["addRowDown","addRowUp","addColLeft","addColRight"]],["delete",["deleteRow","deleteCol","deleteTable"]]],air:[["color",["color"]],["font",["bold","underline","clear"]],["para",["ul","paragraph"]],["table",["table"]],["insert",["link","picture"]],["view",["fullscreen","codeview"]]]},airMode:!1,overrideContextMenu:!1,width:null,height:null,linkTargetBlank:!0,useProtocol:!0,defaultProtocol:"http://",focus:!1,tabDisabled:!1,tabSize:4,styleWithCSS:!1,shortcuts:!0,textareaAutoSync:!0,tooltip:"auto",container:null,maxTextLength:0,blockquoteBreakingLevel:2,spellCheck:!0,disableGrammar:!1,placeholder:null,inheritPlaceholder:!1,recordEveryKeystroke:!1,historyLimit:200,showDomainOnlyForAutolink:!1,hintMode:"word",hintSelect:"after",hintDirection:"bottom",styleTags:["p","blockquote","pre","h1","h2","h3","h4","h5","h6"],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Tahoma","Times New Roman","Verdana"],fontNamesIgnoreCheck:[],addDefaultFonts:!0,fontSizes:["8","9","10","11","12","14","18","24","36"],fontSizeUnits:["px","pt"],colors:[["#000000","#424242","#636363","#9C9C94","#CEC6CE","#EFEFEF","#F7F7F7","#FFFFFF"],["#FF0000","#FF9C00","#FFFF00","#00FF00","#00FFFF","#0000FF","#9C00FF","#FF00FF"],["#F7C6CE","#FFE7CE","#FFEFC6","#D6EFD6","#CEDEE7","#CEE7F7","#D6D6E7","#E7D6DE"],["#E79C9C","#FFC69C","#FFE79C","#B5D6A5","#A5C6CE","#9CC6EF","#B5A5D6","#D6A5BD"],["#E76363","#F7AD6B","#FFD663","#94BD7B","#73A5AD","#6BADDE","#8C7BC6","#C67BA5"],["#CE0000","#E79439","#EFC631","#6BA54A","#4A7B8C","#3984C6","#634AA5","#A54A7B"],["#9C0000","#B56308","#BD9400","#397B21","#104A5A","#085294","#311873","#731842"],["#630000","#7B3900","#846300","#295218","#083139","#003163","#21104A","#4A1031"]],colorsName:[["Black","Tundora","Dove Gray","Star Dust","Pale Slate","Gallery","Alabaster","White"],["Red","Orange Peel","Yellow","Green","Cyan","Blue","Electric Violet","Magenta"],["Azalea","Karry","Egg White","Zanah","Botticelli","Tropical Blue","Mischka","Twilight"],["Tonys Pink","Peach Orange","Cream Brulee","Sprout","Casper","Perano","Cold Purple","Careys Pink"],["Mandy","Rajah","Dandelion","Olivine","Gulf Stream","Viking","Blue Marguerite","Puce"],["Guardsman Red","Fire Bush","Golden Dream","Chelsea Cucumber","Smalt Blue","Boston Blue","Butterfly Bush","Cadillac"],["Sangria","Mai Tai","Buddha Gold","Forest Green","Eden","Venice Blue","Meteorite","Claret"],["Rosewood","Cinnamon","Olive","Parsley","Tiber","Midnight Blue","Valentino","Loulou"]],colorButton:{foreColor:"#000000",backColor:"#FFFF00"},lineHeights:["1.0","1.2","1.4","1.5","1.6","1.8","2.0","3.0"],tableClassName:"table table-bordered",insertTableMaxSize:{col:10,row:10},dialogsInBody:!1,dialogsFade:!1,maximumImageFileSize:null,callbacks:{onBeforeCommand:null,onBlur:null,onBlurCodeview:null,onChange:null,onChangeCodeview:null,onDialogShown:null,onEnter:null,onFocus:null,onImageLinkInsert:null,onImageUpload:null,onImageUploadError:null,onInit:null,onKeydown:null,onKeyup:null,onMousedown:null,onMouseup:null,onPaste:null,onScroll:null},codemirror:{mode:"text/html",htmlMode:!0,lineNumbers:!0},codeviewFilter:!1,codeviewFilterRegex:/<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,codeviewIframeFilter:!0,codeviewIframeWhitelistSrc:[],codeviewIframeWhitelistSrcBase:["www.youtube.com","www.youtube-nocookie.com","www.facebook.com","vine.co","instagram.com","player.vimeo.com","www.dailymotion.com","player.youku.com","v.qq.com"],keyMap:{pc:{ESC:"escape",ENTER:"insertParagraph","CTRL+Z":"undo","CTRL+Y":"redo",TAB:"tab","SHIFT+TAB":"untab","CTRL+B":"bold","CTRL+I":"italic","CTRL+U":"underline","CTRL+SHIFT+S":"strikethrough","CTRL+BACKSLASH":"removeFormat","CTRL+SHIFT+L":"justifyLeft","CTRL+SHIFT+E":"justifyCenter","CTRL+SHIFT+R":"justifyRight","CTRL+SHIFT+J":"justifyFull","CTRL+SHIFT+NUM7":"insertUnorderedList","CTRL+SHIFT+NUM8":"insertOrderedList","CTRL+LEFTBRACKET":"outdent","CTRL+RIGHTBRACKET":"indent","CTRL+NUM0":"formatPara","CTRL+NUM1":"formatH1","CTRL+NUM2":"formatH2","CTRL+NUM3":"formatH3","CTRL+NUM4":"formatH4","CTRL+NUM5":"formatH5","CTRL+NUM6":"formatH6","CTRL+ENTER":"insertHorizontalRule","CTRL+K":"linkDialog.show"},mac:{ESC:"escape",ENTER:"insertParagraph","CMD+Z":"undo","CMD+SHIFT+Z":"redo",TAB:"tab","SHIFT+TAB":"untab","CMD+B":"bold","CMD+I":"italic","CMD+U":"underline","CMD+SHIFT+S":"strikethrough","CMD+BACKSLASH":"removeFormat","CMD+SHIFT+L":"justifyLeft","CMD+SHIFT+E":"justifyCenter","CMD+SHIFT+R":"justifyRight","CMD+SHIFT+J":"justifyFull","CMD+SHIFT+NUM7":"insertUnorderedList","CMD+SHIFT+NUM8":"insertOrderedList","CMD+LEFTBRACKET":"outdent","CMD+RIGHTBRACKET":"indent","CMD+NUM0":"formatPara","CMD+NUM1":"formatH1","CMD+NUM2":"formatH2","CMD+NUM3":"formatH3","CMD+NUM4":"formatH4","CMD+NUM5":"formatH5","CMD+NUM6":"formatH6","CMD+ENTER":"insertHorizontalRule","CMD+K":"linkDialog.show"}},icons:{align:"note-icon-align",alignCenter:"note-icon-align-center",alignJustify:"note-icon-align-justify",alignLeft:"note-icon-align-left",alignRight:"note-icon-align-right",rowBelow:"note-icon-row-below",colBefore:"note-icon-col-before",colAfter:"note-icon-col-after",rowAbove:"note-icon-row-above",rowRemove:"note-icon-row-remove",colRemove:"note-icon-col-remove",indent:"note-icon-align-indent",outdent:"note-icon-align-outdent",arrowsAlt:"note-icon-arrows-alt",bold:"note-icon-bold",caret:"note-icon-caret",circle:"note-icon-circle",close:"note-icon-close",code:"note-icon-code",eraser:"note-icon-eraser",floatLeft:"note-icon-float-left",floatRight:"note-icon-float-right",font:"note-icon-font",frame:"note-icon-frame",italic:"note-icon-italic",link:"note-icon-link",unlink:"note-icon-chain-broken",magic:"note-icon-magic",menuCheck:"note-icon-menu-check",minus:"note-icon-minus",orderedlist:"note-icon-orderedlist",pencil:"note-icon-pencil",picture:"note-icon-picture",question:"note-icon-question",redo:"note-icon-redo",rollback:"note-icon-rollback",square:"note-icon-square",strikethrough:"note-icon-strikethrough",subscript:"note-icon-subscript",superscript:"note-icon-superscript",table:"note-icon-table",textHeight:"note-icon-text-height",trash:"note-icon-trash",underline:"note-icon-underline",undo:"note-icon-undo",unorderedlist:"note-icon-unorderedlist",video:"note-icon-video"}}})},5:function(t,e,n){},53:function(t,e,n){"use strict";n.r(e);var o=n(0),i=n.n(o),r=n(1);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=r.a.create('<div class="note-editor note-frame card"/>'),l=r.a.create('<div class="note-toolbar card-header" role="toolbar"/>'),c=r.a.create('<div class="note-editing-area"/>'),u=r.a.create('<textarea class="note-codable" aria-multiline="true"/>'),d=r.a.create('<div class="note-editable card-block" contentEditable="true" role="textbox" aria-multiline="true"/>'),h=r.a.create(['<output class="note-status-output" role="status" aria-live="polite"></output>','<div class="note-statusbar" role="status">','<div class="note-resizebar" aria-label="Resize">','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>',"</div>","</div>"].join("")),f=r.a.create('<div class="note-editor note-airframe"/>'),p=r.a.create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>','<output class="note-status-output" role="status" aria-live="polite"></output>'].join("")),m=r.a.create('<div class="note-btn-group btn-group">'),v=r.a.create('<div class="note-dropdown-menu dropdown-menu" role="list">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t,i="object"===a(t)?t.option:void 0;return'<a class="dropdown-item" href="#" '+('data-value="'+n+'"'+(void 0!==i?' data-option="'+i+'"':""))+' role="listitem" aria-label="'+n+'">'+o+"</a>"})).join(""):e.items;t.html(n).attr({"aria-label":e.title}),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),g=function(t){return t},b=r.a.create('<div class="note-dropdown-menu dropdown-menu note-check" role="list">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t;return'<a class="dropdown-item" href="#" data-value="'+n+'" role="listitem" aria-label="'+t+'">'+C(e.checkClassName)+" "+o+"</a>"})).join(""):e.items;t.html(n).attr({"aria-label":e.title}),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),y=r.a.create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>',(function(t,e){e.fade&&t.addClass("fade"),t.attr({"aria-label":e.title}),t.html(['<div class="modal-dialog">','<div class="modal-content">',e.title?'<div class="modal-header"><h4 class="modal-title">'+e.title+'</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button></div>':"",'<div class="modal-body">'+e.body+"</div>",e.footer?'<div class="modal-footer">'+e.footer+"</div>":"","</div>","</div>"].join(""))})),k=r.a.create(['<div class="note-popover popover in">','<div class="arrow"></div>','<div class="popover-content note-children-container"></div>',"</div>"].join(""),(function(t,e){var n=void 0!==e.direction?e.direction:"bottom";t.addClass(n),e.hideArrow&&t.find(".arrow").hide()})),w=r.a.create('<div class="form-check"></div>',(function(t,e){t.html(['<label class="form-check-label"'+(e.id?' for="note-'+e.id+'"':"")+">",'<input type="checkbox" class="form-check-input"'+(e.id?' id="note-'+e.id+'"':""),e.checked?" checked":"",' aria-label="'+(e.text?e.text:"")+'"',' aria-checked="'+(e.checked?"true":"false")+'"/>'," "+(e.text?e.text:"")+"</label>"].join(""))})),C=function(t,e){return"<"+(e=e||"i")+' class="'+t+'"></'+e+">"},x=function(t){return{editor:s,toolbar:l,editingArea:c,codable:u,editable:d,statusbar:h,airEditor:f,airEditable:p,buttonGroup:m,dropdown:v,dropdownButtonContents:g,dropdownCheck:b,dialog:y,popover:k,icon:C,checkbox:w,options:t,palette:function(e,n){return r.a.create('<div class="note-color-palette"/>',(function(e,n){for(var o=[],i=0,r=n.colors.length;i<r;i++){for(var a=n.eventName,s=n.colors[i],l=n.colorsName[i],c=[],u=0,d=s.length;u<d;u++){var h=s[u],f=l[u];c.push(['<button type="button" class="note-color-btn"','style="background-color:',h,'" ','data-event="',a,'" ','data-value="',h,'" ','title="',f,'" ','aria-label="',f,'" ','data-toggle="button" tabindex="-1"></button>'].join(""))}o.push('<div class="note-color-row">'+c.join("")+"</div>")}e.html(o.join("")),n.tooltip&&e.find(".note-color-btn").tooltip({container:n.container||t.container,trigger:"hover",placement:"bottom"})}))(e,n)},button:function(e,n){return r.a.create('<button type="button" class="note-btn btn btn-light btn-sm" tabindex="-1">',(function(e,n){n&&n.tooltip&&e.attr({title:n.tooltip,"aria-label":n.tooltip}).tooltip({container:n.container||t.container,trigger:"hover",placement:"bottom"}).on("click",(function(t){i()(t.currentTarget).tooltip("hide")})),n&&n.codeviewButton&&e.addClass("note-codeview-keep")}))(e,n)},toggleBtn:function(t,e){t.toggleClass("disabled",!e),t.attr("disabled",!e)},toggleBtnActive:function(t,e){t.toggleClass("active",e)},onDialogShown:function(t,e){t.one("shown.bs.modal",e)},onDialogHidden:function(t,e){t.one("hidden.bs.modal",e)},showDialog:function(t){t.modal("show")},hideDialog:function(t){t.modal("hide")},createLayout:function(e){var n=(t.airMode?f([c([u(),p()])]):"bottom"===t.toolbarPosition?s([c([u(),d()]),l(),h()]):s([l(),c([u(),d()]),h()])).render();return n.insertAfter(e),{note:e,editor:n,toolbar:n.find(".note-toolbar"),editingArea:n.find(".note-editing-area"),editable:n.find(".note-editable"),codable:n.find(".note-codable"),statusbar:n.find(".note-statusbar")}},removeLayout:function(t,e){t.html(e.editable.html()),e.editor.remove(),t.show()}}};n(3),n(5);i.a.summernote=i.a.extend(i.a.summernote,{ui_template:x,interface:"bs4"}),i.a.summernote.options.styleTags=["p",{title:"Blockquote",tag:"blockquote",className:"blockquote",value:"blockquote"},"pre","h1","h2","h3","h4","h5","h6"]}})})); +//# sourceMappingURL=summernote-bs4.min.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-bs4.min.js.map b/admin/vendors/summernote/dist/summernote-bs4.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..36a804013eb855a70ae5025579f4915ccd4301ef --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-bs4.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/js/bs4/ui.js","webpack:///./src/js/bs4/settings.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Renderer","markup","children","options","callback","this","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","arguments","Array","isArray","__webpack_amd_options__","summernote","lang","extend","font","bold","italic","underline","clear","height","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","browserVersion","userAgent","navigator","isMSIE","test","matches","exec","parseFloat","isEdge","isSupportTouch","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isFontInstalled","testFontName","context","document","createElement","getContext","testSize","originalWidth","measureText","width","isW3CRangeSupport","createRange","idCounter","eq","itemA","itemB","eq2","peq2","propName","ok","fail","self","not","f","apply","and","fA","fB","item","invoke","obj","method","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","head","array","last","tail","slice","contains","initial","prev","idx","next","pred","len","all","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aLast","compact","aResult","push","unique","results","NBSP_CHAR","String","fromCharCode","isEditable","node","hasClass","makePredByNodeName","nodeName","isText","nodeType","isVoid","isPara","isPre","isLi","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isBody","blankHTML","env","nodeLength","nodeValue","childNodes","innerHTML","paddingBlankHTML","ancestor","parentNode","listAncestor","ancestors","el","listNext","nodes","nextSibling","insertAfter","preceding","parent","insertBefore","appendChild","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","previousSibling","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","isSamePoint","pointA","pointB","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","isRemoveChild","removeNode","removeChild","isTextarea","stripLinebreaks","val","replace","ZERO_WIDTH_NBSP_CHAR","blank","emptyPara","isControlSizing","isElement","isPurePara","isHeading","isBlock","isBodyInline","isParaInline","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","deepestChildIsEmpty","firstElementChild","isEmptyAnchor","isClosestSibling","nodeA","nodeB","withClosestSiblings","siblings","isLeftEdgePointOf","isRightEdgePointOf","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","singleChildAncestor","lastAncestor","filter","listPrev","listDescendant","descendants","fnWalk","current","commonAncestor","wrap","wrapperName","wrapper","makeOffsetPath","reverse","fromOffsetPath","offsets","splitPoint","splitRoot","container","topAncestor","pivot","createText","text","createTextNode","removeWhile","newNode","cssText","isNewlineOnBlock","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","Context","$note","memos","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","undefined","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","textRangeToPoint","textRange","isStart","prevContainer","parentElement","tester","body","createTextRange","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","cont","pointToTextRange","info","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","moveStart","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","History","stack","stackOffset","$editable","range","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","css","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setVirtualTablePosition","rowIndex","cellIndex","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowPos","colPos","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","tagName","rows","cells","createVirtualTable","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","actions","idCell","currentCell","tdAttributes","newTd","removeAttr","setAttribute","before","lastTrIndex","after","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","colCount","rowCount","tdHTML","tds","idxCol","trHTML","trs","idxRow","$table","tableClassName","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","detach","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","Deferred","deferred","$img","one","resolve","reject","display","appendTo","promise","then","$image","min","show","files","file","filename","maximumImageFileSize","FileReader","onload","dataURL","onerror","err","readAsDataURL","readFileAsDataURL","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","posOffset","$dimensionDisplay","$catcher","$highlighted","$unhighlighted","offsetX","posCatcher","pageX","pageY","offsetY","ceil","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","$video","ytMatch","igMatch","vMatch","vimMatch","dmMatch","youkuMatch","qqMatch","qqMatch2","mp4Match","oggMatch","webmMatch","fbMatch","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AirPopover","hidable","onContextmenu","air","forcelyOpen","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","htmlMode","lineNumbers","pc","mac","renderer","airEditor","airEditable","option","iconClassName","editorOptions","rowSize","colSize","colorName","placement","codeviewButton","isEnable","isActive","modal","interface"],"mappings":";CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,gBAC7B,GAAqB,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,CAAC,UAAWJ,OACf,CACJ,IAAIM,EAAuB,iBAAZL,QAAuBD,EAAQG,QAAQ,WAAaH,EAAQD,EAAa,QACxF,IAAI,IAAIQ,KAAKD,GAAuB,iBAAZL,QAAuBA,QAAUF,GAAMQ,GAAKD,EAAEC,IAPxE,CASGC,QAAQ,SAASC,GACpB,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUX,QAGnC,IAAIC,EAASQ,EAAiBE,GAAY,CACzCL,EAAGK,EACHC,GAAG,EACHZ,QAAS,IAUV,OANAa,EAAQF,GAAUG,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASU,GAG/DT,EAAOW,GAAI,EAGJX,EAAOD,QA0Df,OArDAU,EAAoBK,EAAIF,EAGxBH,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,SAASjB,EAASkB,EAAMC,GAC3CT,EAAoBU,EAAEpB,EAASkB,IAClCG,OAAOC,eAAetB,EAASkB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhET,EAAoBe,EAAI,SAASzB,GACX,oBAAX0B,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAetB,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAetB,EAAS,aAAc,CAAE4B,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBO,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAASnC,GAChC,IAAIkB,EAASlB,GAAUA,EAAO8B,WAC7B,WAAwB,OAAO9B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAS,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRT,EAAoBU,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG5B,EAAoB+B,EAAI,GAIjB/B,EAAoBA,EAAoBgC,EAAI,I,kBClFrDzC,EAAOD,QAAUQ,G,kcCEXmC,E,WACJ,WAAYC,EAAQC,EAAUC,EAASC,I,4FAAU,SAC/CC,KAAKJ,OAASA,EACdI,KAAKH,SAAWA,EAChBG,KAAKF,QAAUA,EACfE,KAAKD,SAAWA,E,sDAGXE,GACL,IAAMC,EAAQC,IAAEH,KAAKJ,QAoBrB,GAlBII,KAAKF,SAAWE,KAAKF,QAAQM,UAC/BF,EAAMG,KAAKL,KAAKF,QAAQM,UAGtBJ,KAAKF,SAAWE,KAAKF,QAAQQ,WAC/BJ,EAAMK,SAASP,KAAKF,QAAQQ,WAG1BN,KAAKF,SAAWE,KAAKF,QAAQU,MAC/BL,IAAEM,KAAKT,KAAKF,QAAQU,MAAM,SAACE,EAAGC,GAC5BT,EAAMU,KAAK,QAAUF,EAAGC,MAIxBX,KAAKF,SAAWE,KAAKF,QAAQe,OAC/BX,EAAMY,GAAG,QAASd,KAAKF,QAAQe,OAG7Bb,KAAKH,SAAU,CACjB,IAAMkB,EAAab,EAAMc,KAAK,4BAC9BhB,KAAKH,SAASoB,SAAQ,SAACC,GACrBA,EAAMC,OAAOJ,EAAWK,OAASL,EAAab,MAgBlD,OAZIF,KAAKD,UACPC,KAAKD,SAASG,EAAOF,KAAKF,SAGxBE,KAAKF,SAAWE,KAAKF,QAAQC,UAC/BC,KAAKF,QAAQC,SAASG,GAGpBD,GACFA,EAAQoB,OAAOnB,GAGVA,O,gCAII,KACbjB,OAAQ,SAACW,EAAQG,GACf,OAAO,WACL,IAAMD,EAAkC,WAAxB,EAAOwB,UAAU,IAAkBA,UAAU,GAAKA,UAAU,GACxEzB,EAAW0B,MAAMC,QAAQF,UAAU,IAAMA,UAAU,GAAK,GAI5D,OAHIxB,GAAWA,EAAQD,WACrBA,EAAWC,EAAQD,UAEd,IAAIF,EAASC,EAAQC,EAAUC,EAASC,O,iBC9DrD,YACA9C,EAAOD,QAAUyE,I,kECCjBtB,IAAEuB,WAAavB,IAAEuB,YAAc,CAC7BC,KAAM,IAGRxB,IAAEyB,OAAOzB,IAAEuB,WAAWC,KAAM,CAC1B,QAAS,CACPE,KAAM,CACJC,KAAM,OACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,oBACPC,OAAQ,cACRhE,KAAM,cACNiE,cAAe,gBACfC,UAAW,YACXC,YAAa,cACbC,KAAM,YACNC,SAAU,kBAEZC,MAAO,CACLA,MAAO,UACPC,OAAQ,eACRC,WAAY,cACZC,WAAY,cACZC,cAAe,iBACfC,WAAY,gBACZC,UAAW,aACXC,WAAY,cACZC,UAAW,eACXC,aAAc,iBACdC,YAAa,gBACbC,eAAgB,mBAChBC,UAAW,cACXC,cAAe,0BACfC,UAAW,qBACXC,gBAAiB,oBACjBC,gBAAiB,oBACjBC,qBAAsB,8BACtBC,IAAK,YACLC,OAAQ,eACRC,SAAU,YAEZC,MAAO,CACLA,MAAO,QACPC,UAAW,aACXrB,OAAQ,eACRiB,IAAK,YACLK,UAAW,2DAEbC,KAAM,CACJA,KAAM,OACNvB,OAAQ,cACRwB,OAAQ,SACRC,KAAM,OACNC,cAAe,kBACfT,IAAK,mCACLU,gBAAiB,qBACjBC,YAAa,wBAEfC,MAAO,CACLA,MAAO,QACPC,YAAa,gBACbC,YAAa,gBACbC,WAAY,kBACZC,YAAa,mBACbC,OAAQ,aACRC,OAAQ,gBACRC,SAAU,gBAEZC,GAAI,CACFrC,OAAQ,0BAEVsC,MAAO,CACLA,MAAO,QACPtF,EAAG,SACHuF,WAAY,QACZC,IAAK,OACLC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YAENC,MAAO,CACLC,UAAW,iBACXC,QAAS,gBAEX5F,QAAS,CACP6F,KAAM,OACNC,WAAY,cACZC,SAAU,aAEZC,UAAW,CACTA,UAAW,YACXC,QAAS,UACTC,OAAQ,SACRC,KAAM,aACNC,OAAQ,eACRC,MAAO,cACPC,QAAS,gBAEXC,MAAO,CACLC,OAAQ,eACRC,KAAM,aACNC,WAAY,mBACZC,WAAY,aACZC,YAAa,cACbC,eAAgB,kBAChBC,MAAO,QACPC,eAAgB,mBAChBC,SAAU,UAEZC,SAAU,CACRC,UAAW,qBACXC,MAAO,QACPC,eAAgB,kBAChBC,OAAQ,SACRC,oBAAqB,uBACrBC,cAAe,iBACfC,UAAW,cAEb3B,KAAM,CACJ,OAAU,SACV,gBAAmB,mBACnB,KAAQ,wBACR,KAAQ,wBACR,IAAO,MACP,MAAS,QACT,KAAQ,mBACR,OAAU,qBACV,UAAa,wBACb,cAAiB,4BACjB,aAAgB,gBAChB,YAAe,iBACf,cAAiB,mBACjB,aAAgB,kBAChB,YAAe,iBACf,oBAAuB,wBACvB,kBAAqB,sBACrB,QAAW,+BACX,OAAU,8BACV,WAAc,sDACd,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,SAAY,sCACZ,qBAAwB,yBACxB,kBAAmB,oBAErB4B,QAAS,CACPC,KAAM,OACNC,KAAM,QAERC,YAAa,CACXA,YAAa,qBACbC,OAAQ,6BAEVC,OAAQ,CACNC,YAAa,yBClKnB,IAAMC,EAAiC,mBAAX3K,QAAyBA,KAQ/C4K,EAAsB,CAAC,aAAc,QAAS,YAAa,UAAW,WAE5E,SAASC,EAAcC,GACrB,OAAoE,IAA5D9H,IAAE+H,QAAQD,EAASE,cAAeJ,GAAnC,WAAsEE,EAAtE,KAAoFA,EAoB7F,IAEIG,EAFEC,EAAYC,UAAUD,UACtBE,EAAS,gBAAgBC,KAAKH,GAEpC,GAAIE,EAAQ,CACV,IAAIE,EAAU,mBAAmBC,KAAKL,GAClCI,IACFL,EAAiBO,WAAWF,EAAQ,MAEtCA,EAAU,sCAAsCC,KAAKL,MAEnDD,EAAiBO,WAAWF,EAAQ,KAIxC,IAAMG,EAAS,YAAYJ,KAAKH,GAE1BQ,EACF,iBAAkBtL,QAClB+K,UAAUQ,eAAiB,GAC3BR,UAAUS,iBAAmB,EAI3BC,EAAkBT,EAAU,8DAAgE,QAUnF,GACbU,MAAOX,UAAUY,WAAWC,QAAQ,QAAU,EAC9CZ,SACAK,SACAQ,MAAOR,GAAU,WAAWJ,KAAKH,GACjCgB,UAAW,aAAab,KAAKH,GAC7BiB,UAAWV,GAAU,UAAUJ,KAAKH,GACpCkB,UAAWX,GAAU,UAAUJ,KAAKH,GACpCmB,UAAWZ,GAAU,UAAUJ,KAAKH,KAAgB,UAAUG,KAAKH,GACnED,iBACAqB,cAAed,WAAWxI,IAAEuJ,GAAGC,QAC/B7B,eACAe,iBACAe,gBA/DF,SAAyB3B,GACvB,IAAM4B,EAA4B,kBAAb5B,EAA+B,cAAgB,gBAKhE6B,EADSC,SAASC,cAAc,UACfC,WAAW,MAEhCH,EAAQjI,KAAOqI,UAAkBL,EAAe,IAChD,IAAMM,EAAgBL,EAAQM,YAPb,mBAOmCC,MAKpD,OAHAP,EAAQjI,KAAOqI,SAAiBlC,EAAcC,GAAY,MAAQ4B,EAAe,IAG1EM,IAFOL,EAAQM,YAVL,mBAU2BC,OAoD5CC,oBAAqBP,SAASQ,YAC9BvB,iBACAjB,sBACAC,iBC1BF,IAAIwC,EAAY,EA8GD,OACbC,GA7JF,SAAYC,GACV,OAAO,SAASC,GACd,OAAOD,IAAUC,IA4JnBC,IAxJF,SAAaF,EAAOC,GAClB,OAAOD,IAAUC,GAwJjBE,KArJF,SAAcC,GACZ,OAAO,SAASJ,EAAOC,GACrB,OAAOD,EAAMI,KAAcH,EAAMG,KAoJnCC,GAhJF,WACE,OAAO,GAgJPC,KA7IF,WACE,OAAO,GA6IPC,KA9HF,SAAc5N,GACZ,OAAOA,GA8HP6N,IA3IF,SAAaC,GACX,OAAO,WACL,OAAQA,EAAEC,MAAMD,EAAG7J,aA0IrB+J,IAtIF,SAAaC,EAAIC,GACf,OAAO,SAASC,GACd,OAAOF,EAAGE,IAASD,EAAGC,KAqIxBC,OA7HF,SAAgBC,EAAKC,GACnB,OAAO,WACL,OAAOD,EAAIC,GAAQP,MAAMM,EAAKpK,aA4HhCsK,cAlHF,WACEpB,EAAY,GAkHZqB,SA1GF,SAAkBC,GAChB,IAAMC,IAAOvB,EAAY,GACzB,OAAOsB,EAASA,EAASC,EAAKA,GAyG9BC,SAzFF,SAAkBC,GAChB,IAAMC,EAAY/L,IAAE4J,UACpB,MAAO,CACLoC,IAAKF,EAAKE,IAAMD,EAAUE,YAC1BnG,KAAMgG,EAAKhG,KAAOiG,EAAUG,aAC5BhC,MAAO4B,EAAK9F,MAAQ8F,EAAKhG,KACzB/D,OAAQ+J,EAAKK,OAASL,EAAKE,MAoF7BI,aA3EF,SAAsBb,GACpB,IAAMc,EAAW,GACjB,IAAK,IAAMtN,KAAOwM,EACZrN,OAAOkB,UAAUC,eAAe1B,KAAK4N,EAAKxM,KAC5CsN,EAASd,EAAIxM,IAAQA,GAGzB,OAAOsN,GAqEPC,iBA7DF,SAA0BC,EAAWZ,GAEnC,OADAA,EAASA,GAAU,IACHY,EAAUC,MAAM,KAAKC,KAAI,SAAS1O,GAChD,OAAOA,EAAK2O,UAAU,EAAG,GAAGC,cAAgB5O,EAAK2O,UAAU,MAC1DE,KAAK,KA0DRC,SA7CF,SAAkBC,EAAMC,EAAMC,GAC5B,IAAIC,EACJ,OAAO,WACL,IAAMtD,EAAU9J,KACVqN,EAAO/L,UACPgM,EAAQ,WACZF,EAAU,KACLD,GACHF,EAAK7B,MAAMtB,EAASuD,IAGlBE,EAAUJ,IAAcC,EAC9BI,aAAaJ,GACbA,EAAUK,WAAWH,EAAOJ,GACxBK,GACFN,EAAK7B,MAAMtB,EAASuD,KA+BxBK,WArBF,SAAoBhK,GAElB,MADmB,6EACD8E,KAAK9E,KC5JzB,SAASiK,EAAKC,GACZ,OAAOA,EAAM,GAQf,SAASC,EAAKD,GACZ,OAAOA,EAAMA,EAAMxM,OAAS,GAiB9B,SAAS0M,EAAKF,GACZ,OAAOA,EAAMG,MAAM,GA8BrB,SAASC,EAASJ,EAAOpC,GACvB,GAAIoC,GAASA,EAAMxM,QAAUoK,EAAM,CACjC,GAAIoC,EAAMzE,QACR,OAAgC,IAAzByE,EAAMzE,QAAQqC,GAChB,GAAIoC,EAAMI,SAEf,OAAOJ,EAAMI,SAASxC,GAG1B,OAAO,EAyHM,OACbmC,OACAE,OACAI,QA7KF,SAAiBL,GACf,OAAOA,EAAMG,MAAM,EAAGH,EAAMxM,OAAS,IA6KrC0M,OACAI,KArBF,SAAcN,EAAOpC,GACnB,GAAIoC,GAASA,EAAMxM,QAAUoK,EAAM,CACjC,IAAM2C,EAAMP,EAAMzE,QAAQqC,GAC1B,OAAgB,IAAT2C,EAAa,KAAOP,EAAMO,EAAM,GAEzC,OAAO,MAiBPC,KAlCF,SAAcR,EAAOpC,GACnB,GAAIoC,GAASA,EAAMxM,QAAUoK,EAAM,CACjC,IAAM2C,EAAMP,EAAMzE,QAAQqC,GAC1B,OAAgB,IAAT2C,EAAa,KAAOP,EAAMO,EAAM,GAEzC,OAAO,MA8BPnN,KAjKF,SAAc4M,EAAOS,GACnB,IAAK,IAAIF,EAAM,EAAGG,EAAMV,EAAMxM,OAAQ+M,EAAMG,EAAKH,IAAO,CACtD,IAAM3C,EAAOoC,EAAMO,GACnB,GAAIE,EAAK7C,GACP,OAAOA,IA8JXwC,WACAO,IAvJF,SAAaX,EAAOS,GAClB,IAAK,IAAIF,EAAM,EAAGG,EAAMV,EAAMxM,OAAQ+M,EAAMG,EAAKH,IAC/C,IAAKE,EAAKT,EAAMO,IACd,OAAO,EAGX,OAAO,GAkJPK,IA1HF,SAAaZ,EAAOlE,GAElB,OADAA,EAAKA,GAAMuD,EAAKhC,KACT2C,EAAMa,QAAO,SAASC,EAAM/N,GACjC,OAAO+N,EAAOhF,EAAG/I,KAChB,IAuHHgO,KAhHF,SAAcC,GAIZ,IAHA,IAAMC,EAAS,GACTzN,EAASwN,EAAWxN,OACtB+M,GAAO,IACFA,EAAM/M,GACbyN,EAAOV,GAAOS,EAAWT,GAE3B,OAAOU,GA0GPC,QApGF,SAAiBlB,GACf,OAAQA,IAAUA,EAAMxM,QAoGxB2N,UA1FF,SAAmBnB,EAAOlE,GACxB,OAAKkE,EAAMxM,OACG0M,EAAKF,GACNa,QAAO,SAASC,EAAM/N,GACjC,IAAMqO,EAAQnB,EAAKa,GAMnB,OALIhF,EAAGmE,EAAKmB,GAAQrO,GAClBqO,EAAMA,EAAM5N,QAAUT,EAEtB+N,EAAKA,EAAKtN,QAAU,CAACT,GAEhB+N,IACN,CAAC,CAACf,EAAKC,MAVkB,IA0F5BqB,QAvEF,SAAiBrB,GAEf,IADA,IAAMsB,EAAU,GACPf,EAAM,EAAGG,EAAMV,EAAMxM,OAAQ+M,EAAMG,EAAKH,IAC3CP,EAAMO,IAAQe,EAAQC,KAAKvB,EAAMO,IAEvC,OAAOe,GAmEPE,OA3DF,SAAgBxB,GAGd,IAFA,IAAMyB,EAAU,GAEPlB,EAAM,EAAGG,EAAMV,EAAMxM,OAAQ+M,EAAMG,EAAKH,IAC1CH,EAASqB,EAASzB,EAAMO,KAC3BkB,EAAQF,KAAKvB,EAAMO,IAIvB,OAAOkB,IC3JHC,EAAYC,OAAOC,aAAa,KAWtC,SAASC,EAAWC,GAClB,OAAOA,GAAQvP,IAAEuP,GAAMC,SAAS,iBAuBlC,SAASC,EAAmBC,GAE1B,OADAA,EAAWA,EAAS/C,cACb,SAAS4C,GACd,OAAOA,GAAQA,EAAKG,SAAS/C,gBAAkB+C,GAYnD,SAASC,EAAOJ,GACd,OAAOA,GAA0B,IAAlBA,EAAKK,SAmBtB,SAASC,EAAON,GACd,OAAOA,GAAQ,2DAA2DlH,KAAKkH,EAAKG,SAAS/C,eAG/F,SAASmD,EAAOP,GACd,OAAID,EAAWC,KAKRA,GAAQ,sBAAsBlH,KAAKkH,EAAKG,SAAS/C,gBAO1D,IAAMoD,EAAQN,EAAmB,OAE3BO,EAAOP,EAAmB,MAMhC,IAAMQ,EAAUR,EAAmB,SAE7BS,EAAST,EAAmB,QAElC,SAASU,EAASZ,GAChB,QAAQa,EAAgBb,IAChBc,EAAOd,IACPe,EAAKf,IACLO,EAAOP,IACPU,EAAQV,IACRgB,EAAahB,IACbW,EAAOX,IAGjB,SAASc,EAAOd,GACd,OAAOA,GAAQ,UAAUlH,KAAKkH,EAAKG,SAAS/C,eAG9C,IAAM2D,EAAOb,EAAmB,MAEhC,SAASe,EAAOjB,GACd,OAAOA,GAAQ,UAAUlH,KAAKkH,EAAKG,SAAS/C,eAG9C,IAAM4D,EAAed,EAAmB,cAExC,SAASW,EAAgBb,GACvB,OAAOiB,EAAOjB,IAASgB,EAAahB,IAASD,EAAWC,GAG1D,IAAMkB,EAAWhB,EAAmB,KAUpC,IAAMiB,EAASjB,EAAmB,QAwClC,IAAMkB,EAAYC,EAAIxI,QAAUwI,EAAI3I,eAAiB,GAAK,SAAW,OASrE,SAAS4I,EAAWtB,GAClB,OAAII,EAAOJ,GACFA,EAAKuB,UAAU7P,OAGpBsO,EACKA,EAAKwB,WAAW9P,OAGlB,EAuBT,SAAS0N,EAAQY,GACf,IAAMpB,EAAM0C,EAAWtB,GAEvB,OAAY,IAARpB,KAEQwB,EAAOJ,IAAiB,IAARpB,GAAaoB,EAAKyB,YAAcL,MAGjDtL,EAAM+I,IAAImB,EAAKwB,WAAYpB,IAA8B,KAAnBJ,EAAKyB,YAWxD,SAASC,EAAiB1B,GACnBM,EAAON,IAAUsB,EAAWtB,KAC/BA,EAAKyB,UAAYL,GAUrB,SAASO,EAAS3B,EAAMrB,GACtB,KAAOqB,GAAM,CACX,GAAIrB,EAAKqB,GAAS,OAAOA,EACzB,GAAID,EAAWC,GAAS,MAExBA,EAAOA,EAAK4B,WAEd,OAAO,KA4BT,SAASC,EAAa7B,EAAMrB,GAC1BA,EAAOA,GAAQpB,EAAKjC,KAEpB,IAAMwG,EAAY,GAQlB,OAPAH,EAAS3B,GAAM,SAAS+B,GAKtB,OAJKhC,EAAWgC,IACdD,EAAUrC,KAAKsC,GAGVpD,EAAKoD,MAEPD,EAiDT,SAASE,EAAShC,EAAMrB,GACtBA,EAAOA,GAAQpB,EAAKjC,KAGpB,IADA,IAAM2G,EAAQ,GACPjC,IACDrB,EAAKqB,IACTiC,EAAMxC,KAAKO,GACXA,EAAOA,EAAKkC,YAEd,OAAOD,EAiDT,SAASE,EAAYnC,EAAMoC,GACzB,IAAM1D,EAAO0D,EAAUF,YACnBG,EAASD,EAAUR,WAMvB,OALIlD,EACF2D,EAAOC,aAAatC,EAAMtB,GAE1B2D,EAAOE,YAAYvC,GAEdA,EAST,SAASwC,EAAiBxC,EAAMyC,GAI9B,OAHAhS,IAAEM,KAAK0R,GAAQ,SAAShE,EAAKjN,GAC3BwO,EAAKuC,YAAY/Q,MAEZwO,EAST,SAAS0C,EAAgBC,GACvB,OAAwB,IAAjBA,EAAMC,OASf,SAASC,EAAiBF,GACxB,OAAOA,EAAMC,SAAWtB,EAAWqB,EAAM3C,MAS3C,SAAS8C,EAAYH,GACnB,OAAOD,EAAgBC,IAAUE,EAAiBF,GAUpD,SAASI,EAAa/C,EAAM2B,GAC1B,KAAO3B,GAAQA,IAAS2B,GAAU,CAChC,GAAuB,IAAnBqB,GAAShD,GACX,OAAO,EAETA,EAAOA,EAAK4B,WAGd,OAAO,EAUT,SAASqB,GAAcjD,EAAM2B,GAC3B,IAAKA,EACH,OAAO,EAET,KAAO3B,GAAQA,IAAS2B,GAAU,CAChC,GAAIqB,GAAShD,KAAUsB,EAAWtB,EAAK4B,YAAc,EACnD,OAAO,EAET5B,EAAOA,EAAK4B,WAGd,OAAO,EA4BT,SAASoB,GAAShD,GAEhB,IADA,IAAI4C,EAAS,EACL5C,EAAOA,EAAKkD,iBAClBN,GAAU,EAEZ,OAAOA,EAGT,SAASO,GAAYnD,GACnB,SAAUA,GAAQA,EAAKwB,YAAcxB,EAAKwB,WAAW9P,QAUvD,SAAS0R,GAAUT,EAAOU,GACxB,IAAIrD,EACA4C,EAEJ,GAAqB,IAAjBD,EAAMC,OAAc,CACtB,GAAI7C,EAAW4C,EAAM3C,MACnB,OAAO,KAGTA,EAAO2C,EAAM3C,KAAK4B,WAClBgB,EAASI,GAASL,EAAM3C,WACfmD,GAAYR,EAAM3C,MAE3B4C,EAAStB,EADTtB,EAAO2C,EAAM3C,KAAKwB,WAAWmB,EAAMC,OAAS,KAG5C5C,EAAO2C,EAAM3C,KACb4C,EAASS,EAAoB,EAAIV,EAAMC,OAAS,GAGlD,MAAO,CACL5C,KAAMA,EACN4C,OAAQA,GAWZ,SAASU,GAAUX,EAAOU,GACxB,IAAIrD,EAAM4C,EAEV,GAAItB,EAAWqB,EAAM3C,QAAU2C,EAAMC,OAAQ,CAC3C,GAAI7C,EAAW4C,EAAM3C,MACnB,OAAO,KAGT,IAAIuD,EAAeC,GAAgBb,EAAM3C,MACrCuD,GACFvD,EAAOuD,EACPX,EAAS,IAET5C,EAAO2C,EAAM3C,KAAK4B,WAClBgB,EAASI,GAASL,EAAM3C,MAAQ,QAEzBmD,GAAYR,EAAM3C,OAC3BA,EAAO2C,EAAM3C,KAAKwB,WAAWmB,EAAMC,QACnCA,EAAS,IAET5C,EAAO2C,EAAM3C,KACb4C,EAASS,EAAoB/B,EAAWqB,EAAM3C,MAAQ2C,EAAMC,OAAS,GAGvE,MAAO,CACL5C,KAAMA,EACN4C,OAAQA,GAWZ,SAASa,GAAuBd,EAAOU,GACrC,IAAIrD,EAAM4C,EAGV,GAAIxD,EAAQuD,EAAM3C,MAIhB,MAAO,CACLA,KAJFA,EAAO2C,EAAM3C,KAAKkC,YAKhBU,OAJFA,EAAS,GAQX,GAAItB,EAAWqB,EAAM3C,QAAU2C,EAAMC,OAAQ,CAC3C,GAAI7C,EAAW4C,EAAM3C,MACnB,OAAO,KAGT,IAAIuD,EAAeC,GAAgBb,EAAM3C,MACrCuD,GACFvD,EAAOuD,EACPX,EAAS,IAET5C,EAAO2C,EAAM3C,KAAK4B,WAClBgB,EAASI,GAASL,EAAM3C,MAAQ,GAI9BD,EAAWC,KACbA,EAAO2C,EAAM3C,KAAKkC,YAClBU,EAAS,QAEN,GAAIO,GAAYR,EAAM3C,OAG3B,GADA4C,EAAS,EACLxD,EAFJY,EAAO2C,EAAM3C,KAAKwB,WAAWmB,EAAMC,SAGjC,OAAO,UAMT,GAHA5C,EAAO2C,EAAM3C,KACb4C,EAASS,EAAoB/B,EAAWqB,EAAM3C,MAAQ2C,EAAMC,OAAS,EAEjExD,EAAQY,GACV,OAAO,KAIX,MAAO,CACLA,KAAMA,EACN4C,OAAQA,GAOZ,SAASY,GAAgBE,GACvB,GAAKA,EAAOxB,aACRwB,EAAOrB,SAAWqB,EAAOxB,YAAYG,OACzC,OAAIjC,EAAOsD,EAAOxB,aAAqBwB,EAAOxB,YACvCsB,GAAgBE,EAAOxB,aAUhC,SAASyB,GAAYC,EAAQC,GAC3B,OAAOD,EAAO5D,OAAS6D,EAAO7D,MAAQ4D,EAAOhB,SAAWiB,EAAOjB,OAiKjE,SAASkB,GAAUnB,EAAOvS,GACxB,IAAI2T,EAAyB3T,GAAWA,EAAQ2T,uBAC1CC,EAAsB5T,GAAWA,EAAQ4T,oBACzCC,EAAuB7T,GAAWA,EAAQ6T,qBAOhD,GALIA,IACFF,GAAyB,GAIvBjB,EAAYH,KAAWvC,EAAOuC,EAAM3C,OAASgE,GAAsB,CACrE,GAAItB,EAAgBC,GAClB,OAAOA,EAAM3C,KACR,GAAI6C,EAAiBF,GAC1B,OAAOA,EAAM3C,KAAKkC,YAKtB,GAAI9B,EAAOuC,EAAM3C,MACf,OAAO2C,EAAM3C,KAAKkE,UAAUvB,EAAMC,QAElC,IAAMuB,EAAYxB,EAAM3C,KAAKwB,WAAWmB,EAAMC,QACxCwB,EAAQjC,EAAYQ,EAAM3C,KAAKqE,WAAU,GAAQ1B,EAAM3C,MAQ7D,OAPAwC,EAAiB4B,EAAOpC,EAASmC,IAE5BJ,IACHrC,EAAiBiB,EAAM3C,MACvB0B,EAAiB0C,IAGfH,IACE7E,EAAQuD,EAAM3C,OAChB/L,GAAO0O,EAAM3C,MAEXZ,EAAQgF,KACVnQ,GAAOmQ,GACAzB,EAAM3C,KAAKkC,aAIfkC,EAgBX,SAASE,GAAUlX,EAAMuV,EAAOvS,GAE9B,IAAM0R,EAAYD,EAAac,EAAM3C,KAAMzC,EAAKxC,GAAG3N,IAEnD,OAAK0U,EAAUpQ,OAEiB,IAArBoQ,EAAUpQ,OACZoS,GAAUnB,EAAOvS,GAGnB0R,EAAU/C,QAAO,SAASiB,EAAMqC,GAKrC,OAJIrC,IAAS2C,EAAM3C,OACjBA,EAAO8D,GAAUnB,EAAOvS,IAGnB0T,GAAU,CACf9D,KAAMqC,EACNO,OAAQ5C,EAAOgD,GAAShD,GAAQsB,EAAWe,IAC1CjS,MAbI,KA0DX,SAASb,GAAO4Q,GACd,OAAO9F,SAASC,cAAc6F,GAehC,SAASlM,GAAO+L,EAAMuE,GACpB,GAAKvE,GAASA,EAAK4B,WAAnB,CACA,GAAI5B,EAAKwE,WAAc,OAAOxE,EAAKwE,WAAWD,GAE9C,IAAMlC,EAASrC,EAAK4B,WACpB,IAAK2C,EAAe,CAElB,IADA,IAAMtC,EAAQ,GACLrU,EAAI,EAAGgR,EAAMoB,EAAKwB,WAAW9P,OAAQ9D,EAAIgR,EAAKhR,IACrDqU,EAAMxC,KAAKO,EAAKwB,WAAW5T,IAG7B,IAAK,IAAIA,EAAI,EAAGgR,EAAMqD,EAAMvQ,OAAQ9D,EAAIgR,EAAKhR,IAC3CyU,EAAOC,aAAaL,EAAMrU,GAAIoS,GAIlCqC,EAAOoC,YAAYzE,IAgDrB,IAAM0E,GAAaxE,EAAmB,YAMtC,SAAShR,GAAMsB,EAAOmU,GACpB,IAAMC,EAAMF,GAAWlU,EAAM,IAAMA,EAAMoU,MAAQpU,EAAMG,OACvD,OAAIgU,EACKC,EAAIC,QAAQ,UAAW,IAEzBD,EAiEM,QAEbhF,YAEAkF,qBA9lC2B,SAgmC3BC,MAAO3D,EAEP4D,UAAW,MAAF,OAAQ5D,EAAR,QACTlB,qBACAH,aACAkF,gBA/kCF,SAAyBjF,GACvB,OAAOA,GAAQvP,IAAEuP,GAAMC,SAAS,wBA+kChCG,SACA8E,UA1iCF,SAAmBlF,GACjB,OAAOA,GAA0B,IAAlBA,EAAKK,UA0iCpBC,SACAC,SACA4E,WAhhCF,SAAoBnF,GAClB,OAAOO,EAAOP,KAAUS,EAAKT,IAghC7BoF,UAzhCF,SAAmBpF,GACjB,OAAOA,GAAQ,UAAUlH,KAAKkH,EAAKG,SAAS/C,gBAyhC5CwD,WACAyE,QAAS9H,EAAK/B,IAAIoF,GAClB0E,aA5+BF,SAAsBtF,GACpB,OAAOY,EAASZ,KAAU2B,EAAS3B,EAAMO,IA4+BzCY,SACAoE,aAl/BF,SAAsBvF,GACpB,OAAOY,EAASZ,MAAW2B,EAAS3B,EAAMO,IAk/B1CC,QACAM,SACAJ,UACAC,SACAM,SACAD,eACAH,kBACAK,WACAsE,MAAOtF,EAAmB,OAC1BO,OACAgF,KAAMvF,EAAmB,MACzBwF,OAAQxF,EAAmB,QAC3ByF,IAAKzF,EAAmB,KACxB0F,IAAK1F,EAAmB,KACxB2F,IAAK3F,EAAmB,KACxB4F,IAAK5F,EAAmB,KACxB6F,MAAO7F,EAAmB,OAC1BwE,cACAsB,oBA17BF,SAA6BhG,GAC3B,GACE,GAA+B,OAA3BA,EAAKiG,mBAAmE,KAArCjG,EAAKiG,kBAAkBxE,UAAkB,YACxEzB,EAAOA,EAAKiG,mBAEtB,OAAO7G,EAAQY,IAs7BfZ,UACA8G,cAAe3I,EAAK5B,IAAIuF,EAAU9B,GAClC+G,iBAv/BF,SAA0BC,EAAOC,GAC/B,OAAOD,EAAMlE,cAAgBmE,GACtBD,EAAMlD,kBAAoBmD,GAs/BjCC,oBA5+BF,SAA6BtG,EAAMrB,GACjCA,EAAOA,GAAQpB,EAAKlC,GAEpB,IAAMkL,EAAW,GAQjB,OAPIvG,EAAKkD,iBAAmBvE,EAAKqB,EAAKkD,kBACpCqD,EAAS9G,KAAKO,EAAKkD,iBAErBqD,EAAS9G,KAAKO,GACVA,EAAKkC,aAAevD,EAAKqB,EAAKkC,cAChCqE,EAAS9G,KAAKO,EAAKkC,aAEdqE,GAk+BPjF,aACAoB,kBACAG,mBACAC,cACAC,eACAE,iBACAuD,kBA5pBF,SAA2B7D,EAAOhB,GAChC,OAAOe,EAAgBC,IAAUI,EAAaJ,EAAM3C,KAAM2B,IA4pB1D8E,mBAnpBF,SAA4B9D,EAAOhB,GACjC,OAAOkB,EAAiBF,IAAUM,GAAcN,EAAM3C,KAAM2B,IAmpB5DyB,aACAE,aACAG,0BACAE,eACA+C,eAteF,SAAwB/D,GACtB,GAAIvC,EAAOuC,EAAM3C,QAAUmD,GAAYR,EAAM3C,OAASZ,EAAQuD,EAAM3C,MAClE,OAAO,EAGT,IAAM2G,EAAWhE,EAAM3C,KAAKwB,WAAWmB,EAAMC,OAAS,GAChDgE,EAAYjE,EAAM3C,KAAKwB,WAAWmB,EAAMC,QAC9C,QAAM+D,IAAYrG,EAAOqG,IAAgBC,IAAatG,EAAOsG,KAge7DC,eAldF,SAAwBlE,EAAOhE,GAC7B,KAAOgE,GAAO,CACZ,GAAIhE,EAAKgE,GACP,OAAOA,EAGTA,EAAQS,GAAUT,GAGpB,OAAO,MA0cPmE,eAhcF,SAAwBnE,EAAOhE,GAC7B,KAAOgE,GAAO,CACZ,GAAIhE,EAAKgE,GACP,OAAOA,EAGTA,EAAQW,GAAUX,GAGpB,OAAO,MAwbPoE,YA/aF,SAAqBpE,GACnB,IAAKvC,EAAOuC,EAAM3C,MAChB,OAAO,EAGT,IAAMgH,EAAKrE,EAAM3C,KAAKuB,UAAU0F,OAAOtE,EAAMC,OAAS,GACtD,OAAOoE,GAAc,MAAPA,GAAcA,IAAOpH,GA0anCsH,aAjaF,SAAsBvE,GACpB,IAAKvC,EAAOuC,EAAM3C,MAChB,OAAO,EAGT,IAAMgH,EAAKrE,EAAM3C,KAAKuB,UAAU0F,OAAOtE,EAAMC,OAAS,GACtD,MAAc,MAAPoE,GAAcA,IAAOpH,GA4Z5BuH,UAjZF,SAAmBC,EAAYC,EAAUC,EAASjE,GAGhD,IAFA,IAAIV,EAAQyE,EAELzE,IACL2E,EAAQ3E,IAEJgB,GAAYhB,EAAO0E,KAHX,CAUZ1E,EAAQc,GAAuBd,EAHVU,GACF+D,EAAWpH,OAAS2C,EAAM3C,MAC1BqH,EAASrH,OAAS2C,EAAM3C,QAsY7C2B,WACA4F,oBAr5BF,SAA6BvH,EAAMrB,GAGjC,IAFAqB,EAAOA,EAAK4B,WAEL5B,GACoB,IAArBsB,EAAWtB,IADJ,CAEX,GAAIrB,EAAKqB,GAAS,OAAOA,EACzB,GAAID,EAAWC,GAAS,MAExBA,EAAOA,EAAK4B,WAEd,OAAO,MA44BPC,eACA2F,aAn3BF,SAAsBxH,EAAMrB,GAC1B,IAAMmD,EAAYD,EAAa7B,GAC/B,OAAOlK,EAAMqI,KAAK2D,EAAU2F,OAAO9I,KAk3BnCqD,WACA0F,SA51BF,SAAkB1H,EAAMrB,GACtBA,EAAOA,GAAQpB,EAAKjC,KAGpB,IADA,IAAM2G,EAAQ,GACPjC,IACDrB,EAAKqB,IACTiC,EAAMxC,KAAKO,GACXA,EAAOA,EAAKkD,gBAEd,OAAOjB,GAo1BP0F,eAzzBF,SAAwB3H,EAAMrB,GAC5B,IAAMiJ,EAAc,GAapB,OAZAjJ,EAAOA,GAAQpB,EAAKlC,GAGpB,SAAUwM,EAAOC,GACX9H,IAAS8H,GAAWnJ,EAAKmJ,IAC3BF,EAAYnI,KAAKqI,GAEnB,IAAK,IAAIrJ,EAAM,EAAGG,EAAMkJ,EAAQtG,WAAW9P,OAAQ+M,EAAMG,EAAKH,IAC5DoJ,EAAOC,EAAQtG,WAAW/C,IAL9B,CAOGuB,GAEI4H,GA4yBPG,eA52BF,SAAwB3B,EAAOC,GAE7B,IADA,IAAMvE,EAAYD,EAAauE,GACtB1W,EAAI2W,EAAO3W,EAAGA,EAAIA,EAAEkS,WAC3B,GAAIE,EAAUrI,QAAQ/J,IAAM,EAAG,OAAOA,EAExC,OAAO,MAw2BPsY,KAnyBF,SAAchI,EAAMiI,GAClB,IAAM5F,EAASrC,EAAK4B,WACdsG,EAAUzX,IAAE,IAAMwX,EAAc,KAAK,GAK3C,OAHA5F,EAAOC,aAAa4F,EAASlI,GAC7BkI,EAAQ3F,YAAYvC,GAEbkI,GA6xBP/F,cACAK,mBACAQ,YACAG,eACAgF,eAtYF,SAAwBxG,EAAU3B,GAEhC,OADkB6B,EAAa7B,EAAMzC,EAAKxC,GAAG4G,IAC5BzE,IAAI8F,IAAUoF,WAqY/BC,eA1XF,SAAwB1G,EAAU2G,GAEhC,IADA,IAAIR,EAAUnG,EACL/T,EAAI,EAAGgR,EAAM0J,EAAQ5W,OAAQ9D,EAAIgR,EAAKhR,IAE3Cka,EADEA,EAAQtG,WAAW9P,QAAU4W,EAAQ1a,GAC7Bka,EAAQtG,WAAWsG,EAAQtG,WAAW9P,OAAS,GAE/CoW,EAAQtG,WAAW8G,EAAQ1a,IAGzC,OAAOka,GAkXPxD,aACAiE,WA9QF,SAAoB5F,EAAO/B,GAIzB,IAII4H,EAAWC,EAJT9J,EAAOiC,EAAWL,EAASM,EAC3BiB,EAAYD,EAAac,EAAM3C,KAAMrB,GACrC+J,EAAc5S,EAAMqI,KAAK2D,IAAca,EAAM3C,KAG/CrB,EAAK+J,IACPF,EAAY1G,EAAUA,EAAUpQ,OAAS,GACzC+W,EAAYC,GAGZD,GADAD,EAAYE,GACU9G,WAIxB,IAAI+G,EAAQH,GAAalE,GAAUkE,EAAW7F,EAAO,CACnDoB,uBAAwBnD,EACxBoD,oBAAqBpD,IAQvB,OAJK+H,GAASF,IAAc9F,EAAM3C,OAChC2I,EAAQhG,EAAM3C,KAAKwB,WAAWmB,EAAMC,SAG/B,CACLgE,UAAW+B,EACXF,UAAWA,IAiPblZ,UACAqZ,WA1OF,SAAoBC,GAClB,OAAOxO,SAASyO,eAAeD,IA0O/B5U,UACA8U,YAvMF,SAAqB/I,EAAMrB,GACzB,KAAOqB,IACDD,EAAWC,IAAUrB,EAAKqB,IADnB,CAKX,IAAMqC,EAASrC,EAAK4B,WACpB3N,GAAO+L,GACPA,EAAOqC,IAgMTwC,QAnLF,SAAiB7E,EAAMG,GACrB,GAAIH,EAAKG,SAAS/C,gBAAkB+C,EAAS/C,cAC3C,OAAO4C,EAGT,IAAMgJ,EAAUzZ,GAAO4Q,GAUvB,OARIH,EAAK3K,MAAM4T,UACbD,EAAQ3T,MAAM4T,QAAUjJ,EAAK3K,MAAM4T,SAGrCzG,EAAiBwG,EAASlT,EAAMmJ,KAAKe,EAAKwB,aAC1CW,EAAY6G,EAAShJ,GACrB/L,GAAO+L,GAEAgJ,GAqKPrY,KA5IF,SAAcH,EAAO0Y,GACnB,IAAIhZ,EAAShB,GAAMsB,GAEnB,GAAI0Y,EAAkB,CAUpBhZ,GARAA,EAASA,EAAO2U,QADC,yCACiB,SAASsE,EAAOC,EAAU5a,GAC1DA,EAAOA,EAAK4O,cACZ,IAAMiM,EAAyB,8BAA8BvQ,KAAKtK,MACnC4a,EACzBE,EAAc,4CAA4CxQ,KAAKtK,GAErE,OAAO2a,GAAUE,GAA0BC,EAAe,KAAO,QAEnDC,OAGlB,OAAOrZ,GA6HPhB,SACAsa,mBA3HF,SAA4BC,GAC1B,IAAMC,EAAejZ,IAAEgZ,GACjBE,EAAMD,EAAa9G,SACnBpQ,EAASkX,EAAaE,aAAY,GAExC,MAAO,CACLrT,KAAMoT,EAAIpT,KACVkG,IAAKkN,EAAIlN,IAAMjK,IAqHjBqX,aAjHF,SAAsBrZ,EAAOsZ,GAC3Bnb,OAAOob,KAAKD,GAAQvY,SAAQ,SAAS/B,GACnCgB,EAAMY,GAAG5B,EAAKsa,EAAOta,QAgHvBwa,aA5GF,SAAsBxZ,EAAOsZ,GAC3Bnb,OAAOob,KAAKD,GAAQvY,SAAQ,SAAS/B,GACnCgB,EAAMyZ,IAAIza,EAAKsa,EAAOta,QA2GxB0a,iBA/FF,SAA0BlK,GACxB,OAAOA,IAASI,EAAOJ,IAASlK,EAAMwI,SAAS0B,EAAKmK,UAAW,mB,2KCxlC5CC,G,WAKnB,WAAYC,EAAOja,I,4FAAS,SAC1BE,KAAK+Z,MAAQA,EAEb/Z,KAAKga,MAAQ,GACbha,KAAKnC,QAAU,GACfmC,KAAKia,WAAa,GAClBja,KAAKF,QAAUK,IAAEyB,QAAO,EAAM,GAAI9B,GAGlCK,IAAEuB,WAAWwY,GAAK/Z,IAAEuB,WAAWyY,YAAYna,KAAKF,SAChDE,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GAEvBla,KAAKoa,a,4DAUL,OAHApa,KAAKia,WAAaja,KAAKka,GAAGG,aAAara,KAAK+Z,OAC5C/Z,KAAKsa,cACLta,KAAK+Z,MAAMQ,OACJva,O,gCAOPA,KAAKwa,WACLxa,KAAK+Z,MAAMU,WAAW,cACtBza,KAAKka,GAAGQ,aAAa1a,KAAK+Z,MAAO/Z,KAAKia,c,8BAOtC,IAAMU,EAAW3a,KAAK4a,aACtB5a,KAAK6a,KAAKC,GAAIpG,WACd1U,KAAKwa,WACLxa,KAAKsa,cAEDK,GACF3a,KAAK+a,Y,oCAIK,WAEZ/a,KAAKF,QAAQiM,GAAKkB,EAAKpB,SAAS1L,IAAE6a,OAElChb,KAAKF,QAAQqY,UAAYnY,KAAKF,QAAQqY,WAAanY,KAAKia,WAAWgB,OAGnE,IAAMC,EAAU/a,IAAEyB,OAAO,GAAI5B,KAAKF,QAAQob,SAC1C7c,OAAOob,KAAKyB,GAASja,SAAQ,SAAC/B,GAC5B,EAAKwP,KAAK,UAAYxP,EAAKgc,EAAQhc,OAGrC,IAAMrB,EAAUsC,IAAEyB,OAAO,GAAI5B,KAAKF,QAAQjC,QAASsC,IAAEuB,WAAWyZ,SAAW,IAG3E9c,OAAOob,KAAK5b,GAASoD,SAAQ,SAAC/B,GAC5B,EAAKjC,OAAOiC,EAAKrB,EAAQqB,IAAM,MAGjCb,OAAOob,KAAKzZ,KAAKnC,SAASoD,SAAQ,SAAC/B,GACjC,EAAKkc,iBAAiBlc,Q,iCAIf,WAETb,OAAOob,KAAKzZ,KAAKnC,SAASia,UAAU7W,SAAQ,SAAC/B,GAC3C,EAAKmc,aAAanc,MAGpBb,OAAOob,KAAKzZ,KAAKga,OAAO/Y,SAAQ,SAAC/B,GAC/B,EAAKoc,WAAWpc,MAGlBc,KAAKub,aAAa,UAAWvb,Q,2BAG1BK,GACH,IAAMmb,EAAcxb,KAAKyL,OAAO,wBAEhC,QAAagQ,IAATpb,EAEF,OADAL,KAAKyL,OAAO,iBACL+P,EAAcxb,KAAKia,WAAWyB,QAAQpH,MAAQtU,KAAKia,WAAW0B,SAAStb,OAE1Emb,EACFxb,KAAKyL,OAAO,gBAAiBpL,GAE7BL,KAAKia,WAAW0B,SAAStb,KAAKA,GAEhCL,KAAK+Z,MAAMzF,IAAIjU,GACfL,KAAKub,aAAa,SAAUlb,EAAML,KAAKia,WAAW0B,Y,mCAKpD,MAA4D,UAArD3b,KAAKia,WAAW0B,SAAS/a,KAAK,qB,+BAIrCZ,KAAKia,WAAW0B,SAAS/a,KAAK,mBAAmB,GACjDZ,KAAKyL,OAAO,oBAAoB,GAChCzL,KAAKub,aAAa,WAAW,GAC7Bvb,KAAKF,QAAQ8b,SAAU,I,gCAKnB5b,KAAKyL,OAAO,yBACdzL,KAAKyL,OAAO,uBAEdzL,KAAKia,WAAW0B,SAAS/a,KAAK,mBAAmB,GACjDZ,KAAKF,QAAQ8b,SAAU,EACvB5b,KAAKyL,OAAO,sBAAsB,GAElCzL,KAAKub,aAAa,WAAW,K,qCAI7B,IAAM7O,EAAYlH,EAAMmI,KAAKrM,WACvB+L,EAAO7H,EAAMsI,KAAKtI,EAAMmJ,KAAKrN,YAE7BvB,EAAWC,KAAKF,QAAQ+b,UAAU5O,EAAKR,iBAAiBC,EAAW,OACrE3M,GACFA,EAASqL,MAAMpL,KAAK+Z,MAAM,GAAI1M,GAEhCrN,KAAK+Z,MAAM+B,QAAQ,cAAgBpP,EAAWW,K,uCAG/BnO,GACf,IAAMjC,EAAS+C,KAAKnC,QAAQqB,GAC5BjC,EAAO8e,iBAAmB9e,EAAO8e,kBAAoB9O,EAAKlC,GACrD9N,EAAO8e,qBAKR9e,EAAOmd,YACTnd,EAAOmd,aAILnd,EAAOuc,QACTsB,GAAIvB,aAAavZ,KAAK+Z,MAAO9c,EAAOuc,W,6BAIjCta,EAAK8c,EAAaC,GACvB,GAAyB,IAArB3a,UAAUF,OACZ,OAAOpB,KAAKnC,QAAQqB,GAGtBc,KAAKnC,QAAQqB,GAAO,IAAI8c,EAAYhc,MAE/Bic,GACHjc,KAAKob,iBAAiBlc,K,mCAIbA,GACX,IAAMjC,EAAS+C,KAAKnC,QAAQqB,GACxBjC,EAAO8e,qBACL9e,EAAOuc,QACTsB,GAAIpB,aAAa1Z,KAAK+Z,MAAO9c,EAAOuc,QAGlCvc,EAAOif,SACTjf,EAAOif,kBAIJlc,KAAKnC,QAAQqB,K,2BAGjBA,EAAKwM,GACR,GAAyB,IAArBpK,UAAUF,OACZ,OAAOpB,KAAKga,MAAM9a,GAEpBc,KAAKga,MAAM9a,GAAOwM,I,iCAGTxM,GACLc,KAAKga,MAAM9a,IAAQc,KAAKga,MAAM9a,GAAKgd,SACrClc,KAAKga,MAAM9a,GAAKgd,iBAGXlc,KAAKga,MAAM9a,K,wDAMcwN,EAAW9N,GAAO,WAClD,OAAO,SAACud,GACN,EAAKC,oBAAoB1P,EAAW9N,EAApC,CAA2Cud,GAC3C,EAAK1Q,OAAO,iC,0CAIIiB,EAAW9N,GAAO,WACpC,OAAO,SAACud,GACNA,EAAME,iBACN,IAAMC,EAAUnc,IAAEgc,EAAMI,QACxB,EAAK9Q,OAAOiB,EAAW9N,GAAS0d,EAAQE,QAAQ,gBAAgBhc,KAAK,SAAU8b,M,+BAKjF,IAAM5P,EAAYlH,EAAMmI,KAAKrM,WACvB+L,EAAO7H,EAAMsI,KAAKtI,EAAMmJ,KAAKrN,YAE7Bmb,EAAS/P,EAAUC,MAAM,KACzB+P,EAAeD,EAAOrb,OAAS,EAC/Bub,EAAaD,GAAgBlX,EAAMmI,KAAK8O,GACxCG,EAAaF,EAAelX,EAAMqI,KAAK4O,GAAUjX,EAAMmI,KAAK8O,GAE5Dxf,EAAS+C,KAAKnC,QAAQ8e,GAAc,UAC1C,OAAKA,GAAc3c,KAAK4c,GACf5c,KAAK4c,GAAYxR,MAAMpL,KAAMqN,GAC3BpQ,GAAUA,EAAO2f,IAAe3f,EAAO8e,mBACzC9e,EAAO2f,GAAYxR,MAAMnO,EAAQoQ,QADnC,O,yMC7NX,SAASwP,GAAiBC,EAAWC,GACnC,IACIzK,EAGA0K,EAJA7E,EAAY2E,EAAUG,gBAGpBC,EAASnT,SAASoT,KAAKC,kBAEvBlM,EAAa1L,EAAMmJ,KAAKwJ,EAAUjH,YACxC,IAAKoB,EAAS,EAAGA,EAASpB,EAAW9P,OAAQkR,IAC3C,IAAIwI,GAAIhL,OAAOoB,EAAWoB,IAA1B,CAIA,GADA4K,EAAOG,kBAAkBnM,EAAWoB,IAChC4K,EAAOI,iBAAiB,eAAgBR,IAAc,EACxD,MAEFE,EAAgB9L,EAAWoB,GAG7B,GAAe,IAAXA,GAAgBwI,GAAIhL,OAAOoB,EAAWoB,EAAS,IAAK,CACtD,IAAMiL,EAAiBxT,SAASoT,KAAKC,kBACjCI,EAAc,KAClBD,EAAeF,kBAAkBL,GAAiB7E,GAClDoF,EAAeE,UAAUT,GACzBQ,EAAcR,EAAgBA,EAAcpL,YAAcuG,EAAUuF,WAEpE,IAAMC,EAAcb,EAAUc,YAC9BD,EAAYE,YAAY,eAAgBN,GAGxC,IAFA,IAAIO,EAAYH,EAAYpF,KAAKhE,QAAQ,UAAW,IAAInT,OAEjD0c,EAAYN,EAAYvM,UAAU7P,QAAUoc,EAAY5L,aAC7DkM,GAAaN,EAAYvM,UAAU7P,OACnCoc,EAAcA,EAAY5L,YAId4L,EAAYvM,UAEtB8L,GAAWS,EAAY5L,aAAekJ,GAAIhL,OAAO0N,EAAY5L,cAC/DkM,IAAcN,EAAYvM,UAAU7P,SACpC0c,GAAaN,EAAYvM,UAAU7P,OACnCoc,EAAcA,EAAY5L,aAG5BuG,EAAYqF,EACZlL,EAASwL,EAGX,MAAO,CACLC,KAAM5F,EACN7F,OAAQA,GASZ,SAAS0L,GAAiB3L,GACxB,IA0BMyK,EAAY/S,SAASoT,KAAKC,kBAC1Ba,EA3BgB,SAAhBC,EAAyB/F,EAAW7F,GACxC,IAAI5C,EAAMyO,EAEV,GAAIrD,GAAIhL,OAAOqI,GAAY,CACzB,IAAMiG,EAAgBtD,GAAI1D,SAASe,EAAWlL,EAAK/B,IAAI4P,GAAIhL,SACrDkN,EAAgBxX,EAAMqI,KAAKuQ,GAAexL,gBAChDlD,EAAOsN,GAAiB7E,EAAU7G,WAClCgB,GAAU9M,EAAMgJ,IAAIhJ,EAAMsI,KAAKsQ,GAAgBtD,GAAI9J,YACnDmN,GAAqBnB,MAChB,CAEL,GADAtN,EAAOyI,EAAUjH,WAAWoB,IAAW6F,EACnC2C,GAAIhL,OAAOJ,GACb,OAAOwO,EAAcxO,EAAM,GAG7B4C,EAAS,EACT6L,GAAoB,EAGtB,MAAO,CACLzO,KAAMA,EACN2O,gBAAiBF,EACjB7L,OAAQA,GAKC4L,CAAc7L,EAAM3C,KAAM2C,EAAMC,QAK7C,OAHAwK,EAAUO,kBAAkBY,EAAKvO,MACjCoN,EAAUW,SAASQ,EAAKI,iBACxBvB,EAAUwB,UAAU,YAAaL,EAAK3L,QAC/BwK,ECrGT3c,IAAEuJ,GAAG9H,OAAO,CAOVF,WAAY,WACV,IAAM6c,EAAOpe,IAAEoe,KAAK/Y,EAAMmI,KAAKrM,YACzBkd,EAA+B,WAATD,EACtBE,EAA0B,WAATF,EAEjBze,EAAUK,IAAEyB,OAAO,GAAIzB,IAAEuB,WAAW5B,QAAS2e,EAAiBjZ,EAAMmI,KAAKrM,WAAa,IAG5FxB,EAAQ4e,SAAWve,IAAEyB,QAAO,EAAM,GAAIzB,IAAEuB,WAAWC,KAAK,SAAUxB,IAAEuB,WAAWC,KAAK7B,EAAQ6B,OAC5F7B,EAAQ6e,MAAQxe,IAAEyB,QAAO,EAAM,GAAIzB,IAAEuB,WAAW5B,QAAQ6e,MAAO7e,EAAQ6e,OACvE7e,EAAQ8e,QAA8B,SAApB9e,EAAQ8e,SAAsB7N,EAAIlI,eAAiB/I,EAAQ8e,QAE7E5e,KAAKS,MAAK,SAAC0N,EAAK0Q,GACd,IAAM9E,EAAQ5Z,IAAE0e,GAChB,IAAK9E,EAAMvZ,KAAK,cAAe,CAC7B,IAAMsJ,EAAU,IAAIgQ,GAAQC,EAAOja,GACnCia,EAAMvZ,KAAK,aAAcsJ,GACzBiQ,EAAMvZ,KAAK,cAAc+a,aAAa,OAAQzR,EAAQmQ,gBAI1D,IAAMF,EAAQ/Z,KAAK8e,QACnB,GAAI/E,EAAM3Y,OAAQ,CAChB,IAAM0I,EAAUiQ,EAAMvZ,KAAK,cAC3B,GAAIge,EACF,OAAO1U,EAAQ2B,OAAOL,MAAMtB,EAAStE,EAAMmJ,KAAKrN,YACvCxB,EAAQif,OACjBjV,EAAQ2B,OAAO,gBAInB,OAAOzL,Q,ID2ELgf,G,WACJ,WAAYC,EAAIC,EAAIC,EAAIC,I,4FAAI,SAC1Bpf,KAAKif,GAAKA,EACVjf,KAAKkf,GAAKA,EACVlf,KAAKmf,GAAKA,EACVnf,KAAKof,GAAKA,EAGVpf,KAAKqf,aAAerf,KAAKsf,SAASxE,GAAIrL,YAEtCzP,KAAKuf,SAAWvf,KAAKsf,SAASxE,GAAItK,QAElCxQ,KAAKwf,WAAaxf,KAAKsf,SAASxE,GAAIlK,UAEpC5Q,KAAKyf,SAAWzf,KAAKsf,SAASxE,GAAInK,QAElC3Q,KAAK0f,SAAW1f,KAAKsf,SAASxE,GAAIzK,Q,6DAKlC,GAAIU,EAAIzG,kBAAmB,CACzB,IAAMqV,EAAW5V,SAASQ,cAI1B,OAHAoV,EAASC,SAAS5f,KAAKif,GAAIjf,KAAKkf,IAChCS,EAASE,OAAO7f,KAAKmf,GAAInf,KAAKof,IAEvBO,EAEP,IAAM7C,EAAYkB,GAAiB,CACjCtO,KAAM1P,KAAKif,GACX3M,OAAQtS,KAAKkf,KAQf,OALApC,EAAUe,YAAY,WAAYG,GAAiB,CACjDtO,KAAM1P,KAAKmf,GACX7M,OAAQtS,KAAKof,MAGRtC,I,kCAKT,MAAO,CACLmC,GAAIjf,KAAKif,GACTC,GAAIlf,KAAKkf,GACTC,GAAInf,KAAKmf,GACTC,GAAIpf,KAAKof,M,sCAKX,MAAO,CACL1P,KAAM1P,KAAKif,GACX3M,OAAQtS,KAAKkf,M,oCAKf,MAAO,CACLxP,KAAM1P,KAAKmf,GACX7M,OAAQtS,KAAKof,M,+BAQf,IAAMU,EAAY9f,KAAK+f,cACvB,GAAIhP,EAAIzG,kBAAmB,CACzB,IAAM0V,EAAYjW,SAASkW,eACvBD,EAAUE,WAAa,GACzBF,EAAUG,kBAEZH,EAAUI,SAASN,QAEnBA,EAAUnY,SAGZ,OAAO3H,O,qCAQMmY,GACb,IAAMjW,EAAS/B,IAAEgY,GAAWjW,SAK5B,OAJIiW,EAAU/L,UAAYlK,EAASlC,KAAKif,GAAGoB,YACzClI,EAAU/L,WAAakU,KAAKC,IAAIpI,EAAU/L,UAAYlK,EAASlC,KAAKif,GAAGoB,YAGlErgB,O,kCAaP,IAAMwgB,EAAkB,SAASnO,EAAOoO,GACtC,IAAKpO,EACH,OAAOA,EAUT,GAAIyI,GAAI1E,eAAe/D,MAChByI,GAAItI,YAAYH,IAChByI,GAAIvI,iBAAiBF,KAAWoO,GAChC3F,GAAI1I,gBAAgBC,IAAUoO,GAC9B3F,GAAIvI,iBAAiBF,IAAUoO,GAAiB3F,GAAI9K,OAAOqC,EAAM3C,KAAKkC,cACtEkJ,GAAI1I,gBAAgBC,KAAWoO,GAAiB3F,GAAI9K,OAAOqC,EAAM3C,KAAKkD,kBACtEkI,GAAI/F,QAAQ1C,EAAM3C,OAASoL,GAAIhM,QAAQuD,EAAM3C,OAChD,OAAO2C,EAKX,IAAMqO,EAAQ5F,GAAIzJ,SAASgB,EAAM3C,KAAMoL,GAAI/F,SACvC4L,GAAe,EAEnB,IAAKA,EAAc,CACjB,IAAM7N,EAAYgI,GAAIhI,UAAUT,IAAU,CAAE3C,KAAM,MAClDiR,GAAgB7F,GAAI5E,kBAAkB7D,EAAOqO,IAAU5F,GAAI9K,OAAO8C,EAAUpD,SAAW+Q,EAGzF,IAAIG,GAAc,EAClB,IAAKA,EAAa,CAChB,IAAM5N,EAAY8H,GAAI9H,UAAUX,IAAU,CAAE3C,KAAM,MAClDkR,GAAe9F,GAAI3E,mBAAmB9D,EAAOqO,IAAU5F,GAAI9K,OAAOgD,EAAUtD,QAAU+Q,EAGxF,GAAIE,GAAgBC,EAAa,CAE/B,GAAI9F,GAAI1E,eAAe/D,GACrB,OAAOA,EAGToO,GAAiBA,EAKnB,OAFkBA,EAAgB3F,GAAItE,eAAesE,GAAI9H,UAAUX,GAAQyI,GAAI1E,gBAC3E0E,GAAIvE,eAAeuE,GAAIhI,UAAUT,GAAQyI,GAAI1E,kBAC7B/D,GAGhB0E,EAAWyJ,EAAgBxgB,KAAK6gB,eAAe,GAC/C/J,EAAa9W,KAAK8gB,cAAgB/J,EAAWyJ,EAAgBxgB,KAAK+gB,iBAAiB,GAEzF,OAAO,IAAI/B,EACTlI,EAAWpH,KACXoH,EAAWxE,OACXyE,EAASrH,KACTqH,EAASzE,U,4BAaPjE,EAAMvO,GACVuO,EAAOA,GAAQpB,EAAKlC,GAEpB,IAAMiW,EAAkBlhB,GAAWA,EAAQkhB,gBACrCC,EAAgBnhB,GAAWA,EAAQmhB,cAGnCnK,EAAa9W,KAAK+gB,gBAClBhK,EAAW/W,KAAK6gB,cAEhBlP,EAAQ,GACRuP,EAAgB,GA0BtB,OAxBApG,GAAIjE,UAAUC,EAAYC,GAAU,SAAS1E,GAK3C,IAAI3C,EAJAoL,GAAIrL,WAAW4C,EAAM3C,QAKrBuR,GACEnG,GAAI1I,gBAAgBC,IACtB6O,EAAc/R,KAAKkD,EAAM3C,MAEvBoL,GAAIvI,iBAAiBF,IAAU7M,EAAMwI,SAASkT,EAAe7O,EAAM3C,QACrEA,EAAO2C,EAAM3C,OAGfA,EADSsR,EACFlG,GAAIzJ,SAASgB,EAAM3C,KAAMrB,GAEzBgE,EAAM3C,KAGXA,GAAQrB,EAAKqB,IACfiC,EAAMxC,KAAKO,OAEZ,GAEIlK,EAAM4J,OAAOuC,K,uCAQpB,OAAOmJ,GAAIrD,eAAezX,KAAKif,GAAIjf,KAAKmf,M,6BASnC9Q,GACL,IAAM8S,EAAgBrG,GAAIzJ,SAASrR,KAAKif,GAAI5Q,GACtC+S,EAActG,GAAIzJ,SAASrR,KAAKmf,GAAI9Q,GAE1C,IAAK8S,IAAkBC,EACrB,OAAO,IAAIpC,EAAahf,KAAKif,GAAIjf,KAAKkf,GAAIlf,KAAKmf,GAAInf,KAAKof,IAG1D,IAAMiC,EAAiBrhB,KAAKshB,YAY5B,OAVIH,IACFE,EAAepC,GAAKkC,EACpBE,EAAenC,GAAK,GAGlBkC,IACFC,EAAelC,GAAKiC,EACpBC,EAAejC,GAAKtE,GAAI9J,WAAWoQ,IAG9B,IAAIpC,EACTqC,EAAepC,GACfoC,EAAenC,GACfmC,EAAelC,GACfkC,EAAejC,M,+BAQVjB,GACP,OAAIA,EACK,IAAIa,EAAahf,KAAKif,GAAIjf,KAAKkf,GAAIlf,KAAKif,GAAIjf,KAAKkf,IAEjD,IAAIF,EAAahf,KAAKmf,GAAInf,KAAKof,GAAIpf,KAAKmf,GAAInf,KAAKof,M,kCAQ1D,IAAMmC,EAAkBvhB,KAAKif,KAAOjf,KAAKmf,GACnCkC,EAAiBrhB,KAAKshB,YAgB5B,OAdIxG,GAAIhL,OAAO9P,KAAKmf,MAAQrE,GAAItI,YAAYxS,KAAK6gB,gBAC/C7gB,KAAKmf,GAAGvL,UAAU5T,KAAKof,IAGrBtE,GAAIhL,OAAO9P,KAAKif,MAAQnE,GAAItI,YAAYxS,KAAK+gB,mBAC/CM,EAAepC,GAAKjf,KAAKif,GAAGrL,UAAU5T,KAAKkf,IAC3CmC,EAAenC,GAAK,EAEhBqC,IACFF,EAAelC,GAAKkC,EAAepC,GACnCoC,EAAejC,GAAKpf,KAAKof,GAAKpf,KAAKkf,KAIhC,IAAIF,EACTqC,EAAepC,GACfoC,EAAenC,GACfmC,EAAelC,GACfkC,EAAejC,M,uCASjB,GAAIpf,KAAK8gB,cACP,OAAO9gB,KAGT,IAAMwhB,EAAMxhB,KAAK4T,YACXjC,EAAQ6P,EAAI7P,MAAM,KAAM,CAC5BsP,eAAe,IAIX5O,EAAQyI,GAAIvE,eAAeiL,EAAIT,iBAAiB,SAAS1O,GAC7D,OAAQ7M,EAAMwI,SAAS2D,EAAOU,EAAM3C,SAGhC+R,EAAe,GAerB,OAdAthB,IAAEM,KAAKkR,GAAO,SAASxD,EAAKuB,GAE1B,IAAMqC,EAASrC,EAAK4B,WAChBe,EAAM3C,OAASqC,GAAqC,IAA3B+I,GAAI9J,WAAWe,IAC1C0P,EAAatS,KAAK4C,GAEpB+I,GAAInX,OAAO+L,GAAM,MAInBvP,IAAEM,KAAKghB,GAAc,SAAStT,EAAKuB,GACjCoL,GAAInX,OAAO+L,GAAM,MAGZ,IAAIsP,EACT3M,EAAM3C,KACN2C,EAAMC,OACND,EAAM3C,KACN2C,EAAMC,QACNoP,c,+BAMKrT,GACP,OAAO,WACL,IAAMgD,EAAWyJ,GAAIzJ,SAASrR,KAAKif,GAAI5Q,GACvC,QAASgD,GAAaA,IAAayJ,GAAIzJ,SAASrR,KAAKmf,GAAI9Q,M,mCAQhDA,GACX,IAAKyM,GAAI1I,gBAAgBpS,KAAK+gB,iBAC5B,OAAO,EAGT,IAAMrR,EAAOoL,GAAIzJ,SAASrR,KAAKif,GAAI5Q,GACnC,OAAOqB,GAAQoL,GAAIrI,aAAazS,KAAKif,GAAIvP,K,oCAOzC,OAAO1P,KAAKif,KAAOjf,KAAKmf,IAAMnf,KAAKkf,KAAOlf,KAAKof,K,+CAS/C,GAAItE,GAAIvK,gBAAgBvQ,KAAKif,KAAOnE,GAAIhM,QAAQ9O,KAAKif,IAEnD,OADAjf,KAAKif,GAAG9N,UAAY2J,GAAIpG,UACjB,IAAIsK,EAAahf,KAAKif,GAAGvB,WAAY,EAAG1d,KAAKif,GAAGvB,WAAY,GAQrE,IAMItF,EANEoJ,EAAMxhB,KAAK0hB,YACjB,GAAI5G,GAAI7F,aAAajV,KAAKif,KAAOnE,GAAI7K,OAAOjQ,KAAKif,IAC/C,OAAOuC,EAKT,GAAI1G,GAAIxK,SAASkR,EAAIvC,IAAK,CACxB,IAAMzN,EAAYsJ,GAAIvJ,aAAaiQ,EAAIvC,GAAIhS,EAAK/B,IAAI4P,GAAIxK,WACxD8H,EAAc5S,EAAMqI,KAAK2D,GACpBsJ,GAAIxK,SAAS8H,KAChBA,EAAc5G,EAAUA,EAAUpQ,OAAS,IAAMogB,EAAIvC,GAAG/N,WAAWsQ,EAAItC,UAGzE9G,EAAcoJ,EAAIvC,GAAG/N,WAAWsQ,EAAItC,GAAK,EAAIsC,EAAItC,GAAK,EAAI,GAG5D,GAAI9G,EAAa,CAEf,IAAIuJ,EAAiB7G,GAAI1D,SAASgB,EAAa0C,GAAI7F,cAAc6C,UAIjE,IAHA6J,EAAiBA,EAAeC,OAAO9G,GAAIpJ,SAAS0G,EAAYxG,YAAakJ,GAAI7F,gBAG9D7T,OAAQ,CACzB,IAAMygB,EAAO/G,GAAIpD,KAAKlS,EAAMmI,KAAKgU,GAAiB,KAClD7G,GAAI5I,iBAAiB2P,EAAMrc,EAAMsI,KAAK6T,KAI1C,OAAO3hB,KAAK0hB,c,iCASHhS,GACT,IAAI8R,EAAMxhB,MAEN8a,GAAIhL,OAAOJ,IAASoL,GAAIxK,SAASZ,MACnC8R,EAAMxhB,KAAK8hB,yBAAyBC,kBAGtC,IAAM9D,EAAOnD,GAAI7C,WAAWuJ,EAAIT,gBAAiBjG,GAAIxK,SAASZ,IAU9D,OATIuO,EAAK3H,WACP2H,EAAK3H,UAAUhF,WAAWU,aAAatC,EAAMuO,EAAK3H,WAC9CwE,GAAIhM,QAAQmP,EAAK3H,YAAcwE,GAAI7K,OAAOP,IAC5CuO,EAAK3H,UAAUhF,WAAW6C,YAAY8J,EAAK3H,YAG7C2H,EAAK9F,UAAUlG,YAAYvC,GAGtBA,I,gCAMC9P,GACRA,EAASO,IAAE8Y,KAAKrZ,GAEhB,IAAMoiB,EAAoB7hB,IAAE,eAAeE,KAAKT,GAAQ,GACpDsR,EAAa1L,EAAMmJ,KAAKqT,EAAkB9Q,YAGxCsQ,EAAMxhB,KACRiiB,GAAW,EAcf,OAZIT,EAAItC,IAAM,IACZhO,EAAaA,EAAW4G,UACxBmK,GAAW,GAGb/Q,EAAaA,EAAWtE,KAAI,SAASiH,GACnC,OAAO2N,EAAIU,WAAWrO,MAGpBoO,IACF/Q,EAAaA,EAAW4G,WAEnB5G,I,iCASP,IAAM4O,EAAY9f,KAAK+f,cACvB,OAAOhP,EAAIzG,kBAAoBwV,EAAUqC,WAAarC,EAAUvH,O,mCASrD6J,GACX,IAAIrL,EAAW/W,KAAK6gB,cAEpB,IAAK/F,GAAIrE,YAAYM,GACnB,OAAO/W,KAGT,IAAM8W,EAAagE,GAAIvE,eAAeQ,GAAU,SAAS1E,GACvD,OAAQyI,GAAIrE,YAAYpE,MAS1B,OANI+P,IACFrL,EAAW+D,GAAItE,eAAeO,GAAU,SAAS1E,GAC/C,OAAQyI,GAAIrE,YAAYpE,OAIrB,IAAI2M,EACTlI,EAAWpH,KACXoH,EAAWxE,OACXyE,EAASrH,KACTqH,EAASzE,U,oCAUC8P,GACZ,IAAIrL,EAAW/W,KAAK6gB,cAEhBwB,EAAiB,SAAShQ,GAC5B,OAAQyI,GAAIrE,YAAYpE,KAAWyI,GAAIlE,aAAavE,IAGtD,GAAIgQ,EAAetL,GACjB,OAAO/W,KAGT,IAAI8W,EAAagE,GAAIvE,eAAeQ,EAAUsL,GAM9C,OAJID,IACFrL,EAAW+D,GAAItE,eAAeO,EAAUsL,IAGnC,IAAIrD,EACTlI,EAAWpH,KACXoH,EAAWxE,OACXyE,EAASrH,KACTqH,EAASzE,U,yCAeMgQ,GACjB,IAAIvL,EAAW/W,KAAK6gB,cAEhB/J,EAAagE,GAAIvE,eAAeQ,GAAU,SAAS1E,GACrD,IAAKyI,GAAIrE,YAAYpE,KAAWyI,GAAIlE,aAAavE,GAC/C,OAAO,EAET,IAAImP,EAAM,IAAIxC,EACZ3M,EAAM3C,KACN2C,EAAMC,OACNyE,EAASrH,KACTqH,EAASzE,QAEPzD,EAASyT,EAAM5Z,KAAK8Y,EAAIW,YAC5B,OAAOtT,GAA2B,IAAjBA,EAAO0T,SAGtBf,EAAM,IAAIxC,EACZlI,EAAWpH,KACXoH,EAAWxE,OACXyE,EAASrH,KACTqH,EAASzE,QAGPiG,EAAOiJ,EAAIW,WACXtT,EAASyT,EAAM5Z,KAAK6P,GAExB,OAAI1J,GAAUA,EAAO,GAAGzN,SAAWmX,EAAKnX,OAC/BogB,EAEA,O,+BASF7F,GACP,MAAO,CACLjc,EAAG,CACD8iB,KAAM1H,GAAIjD,eAAe8D,EAAU3b,KAAKif,IACxC3M,OAAQtS,KAAKkf,IAEfuD,EAAG,CACDD,KAAM1H,GAAIjD,eAAe8D,EAAU3b,KAAKmf,IACxC7M,OAAQtS,KAAKof,O,mCAUNsD,GACX,MAAO,CACLhjB,EAAG,CACD8iB,KAAMhd,EAAMsI,KAAKgN,GAAIjD,eAAerS,EAAMmI,KAAK+U,GAAQ1iB,KAAKif,KAC5D3M,OAAQtS,KAAKkf,IAEfuD,EAAG,CACDD,KAAMhd,EAAMsI,KAAKgN,GAAIjD,eAAerS,EAAMqI,KAAK6U,GAAQ1iB,KAAKmf,KAC5D7M,OAAQtS,KAAKof,O,uCAWjB,OADkBpf,KAAK+f,cACN4C,sB,kCAWN,IAUb1jB,OAAQ,SAASggB,EAAIC,EAAIC,EAAIC,GAC3B,GAAyB,IAArB9d,UAAUF,OACZ,OAAO,IAAI4d,GAAaC,EAAIC,EAAIC,EAAIC,GAC/B,GAAyB,IAArB9d,UAAUF,OAGnB,OAAO,IAAI4d,GAAaC,EAAIC,EAF5BC,EAAKF,EACLG,EAAKF,GAGL,IAAI0D,EAAe5iB,KAAK6iB,sBAExB,IAAKD,GAAqC,IAArBthB,UAAUF,OAAc,CAC3C,IAAI0hB,EAAcxhB,UAAU,GAI5B,OAHIwZ,GAAIrL,WAAWqT,KACjBA,EAAcA,EAAYC,WAErB/iB,KAAKgjB,sBAAsBF,EAAahI,GAAIpG,YAAcpT,UAAU,GAAG6P,WAEhF,OAAOyR,GAIXI,sBAAuB,SAASF,GAAwC,IAA3B3E,EAA2B,wDAClEyE,EAAe5iB,KAAKijB,eAAeH,GACvC,OAAOF,EAAanF,SAASU,IAG/B0E,oBAAqB,WACnB,IAAI5D,EAAIC,EAAIC,EAAIC,EAChB,GAAIrO,EAAIzG,kBAAmB,CACzB,IAAM0V,EAAYjW,SAASkW,eAC3B,IAAKD,GAAsC,IAAzBA,EAAUE,WAC1B,OAAO,KACF,GAAIpF,GAAIjK,OAAOmP,EAAUkD,YAG9B,OAAO,KAGT,IAAMpD,EAAYE,EAAUmD,WAAW,GACvClE,EAAKa,EAAUsD,eACflE,EAAKY,EAAUuD,YACflE,EAAKW,EAAUwD,aACflE,EAAKU,EAAUyD,cACV,CACL,IAAMzG,EAAY/S,SAASiW,UAAUzV,cAC/BiZ,EAAe1G,EAAUc,YAC/B4F,EAAa/F,UAAS,GACtB,IAAMF,EAAiBT,EACvBS,EAAeE,UAAS,GAExB,IAAI3G,EAAa+F,GAAiBU,GAAgB,GAC9CxG,EAAW8F,GAAiB2G,GAAc,GAG1C1I,GAAIhL,OAAOgH,EAAWpH,OAASoL,GAAI1I,gBAAgB0E,IACrDgE,GAAI2I,WAAW1M,EAASrH,OAASoL,GAAIvI,iBAAiBwE,IACtDA,EAASrH,KAAKkC,cAAgBkF,EAAWpH,OACzCoH,EAAaC,GAGfkI,EAAKnI,EAAWiH,KAChBmB,EAAKpI,EAAWxE,OAChB6M,EAAKpI,EAASgH,KACdqB,EAAKrI,EAASzE,OAGhB,OAAO,IAAI0M,GAAaC,EAAIC,EAAIC,EAAIC,IAWtC6D,eAAgB,SAASvT,GACvB,IAAIuP,EAAKvP,EACLwP,EAAK,EACLC,EAAKzP,EACL0P,EAAKtE,GAAI9J,WAAWmO,GAexB,OAZIrE,GAAI9K,OAAOiP,KACbC,EAAKpE,GAAI1D,SAAS6H,GAAI7d,OAAS,EAC/B6d,EAAKA,EAAG3N,YAENwJ,GAAI3F,KAAKgK,IACXC,EAAKtE,GAAI1D,SAAS+H,GAAI/d,OAAS,EAC/B+d,EAAKA,EAAG7N,YACCwJ,GAAI9K,OAAOmP,KACpBC,EAAKtE,GAAI1D,SAAS+H,GAAI/d,OACtB+d,EAAKA,EAAG7N,YAGHtR,KAAKf,OAAOggB,EAAIC,EAAIC,EAAIC,IASjCsE,qBAAsB,SAAShU,GAC7B,OAAO1P,KAAKijB,eAAevT,GAAM+N,UAAS,IAS5CkG,oBAAqB,SAASjU,GAC5B,OAAO1P,KAAKijB,eAAevT,GAAM+N,YAYnCmG,mBAAoB,SAASjI,EAAUkI,GACrC,IAAM5E,EAAKnE,GAAI/C,eAAe4D,EAAUkI,EAASnkB,EAAE8iB,MAC7CtD,EAAK2E,EAASnkB,EAAE4S,OAChB6M,EAAKrE,GAAI/C,eAAe4D,EAAUkI,EAASpB,EAAED,MAC7CpD,EAAKyE,EAASpB,EAAEnQ,OACtB,OAAO,IAAI0M,GAAaC,EAAIC,EAAIC,EAAIC,IAYtC0E,uBAAwB,SAASD,EAAUnB,GACzC,IAAMxD,EAAK2E,EAASnkB,EAAE4S,OAChB8M,EAAKyE,EAASpB,EAAEnQ,OAChB2M,EAAKnE,GAAI/C,eAAevS,EAAMmI,KAAK+U,GAAQmB,EAASnkB,EAAE8iB,MACtDrD,EAAKrE,GAAI/C,eAAevS,EAAMqI,KAAK6U,GAAQmB,EAASpB,EAAED,MAE5D,OAAO,IAAIxD,GAAaC,EAAIC,EAAIC,EAAIC,KE15BlC2E,GAAU,CACd,UAAa,EACb,IAAO,EACP,MAAS,GACT,OAAU,GACV,MAAS,GACT,OAAU,GAGV,KAAQ,GACR,GAAM,GACN,MAAS,GACT,KAAQ,GAGR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GACR,KAAQ,GAGR,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GAEL,MAAS,IACT,YAAe,IACf,UAAa,IACb,aAAgB,IAGhB,KAAQ,GACR,IAAO,GACP,OAAU,GACV,SAAY,IAWC,IAObC,OAAQ,SAACC,GACP,OAAOze,EAAMwI,SAAS,CACpB+V,GAAQG,UACRH,GAAQI,IACRJ,GAAQK,MACRL,GAAQM,MACRN,GAAQO,QACPL,IAQLM,OAAQ,SAACN,GACP,OAAOze,EAAMwI,SAAS,CACpB+V,GAAQS,KACRT,GAAQU,GACRV,GAAQW,MACRX,GAAQY,MACPV,IAQLW,aAAc,SAACX,GACb,OAAOze,EAAMwI,SAAS,CACpB+V,GAAQc,KACRd,GAAQe,IACRf,GAAQgB,OACRhB,GAAQiB,UACPf,IAMLgB,aAAchY,EAAKV,aAAawX,IAChClJ,KAAMkJ,I,2KC7GamB,G,WACnB,WAAYpb,I,4FAAS,SACnB9J,KAAKmlB,MAAQ,GACbnlB,KAAKolB,aAAe,EACpBplB,KAAK8J,QAAUA,EACf9J,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAK2b,SAAW3b,KAAKqlB,UAAU,G,8DAI/B,IAAM7D,EAAM8D,GAAMrmB,OAAOe,KAAK2b,UAG9B,MAAO,CACLvb,SAAUJ,KAAKqlB,UAAUhlB,OACzBwjB,SAAYrC,GAAOA,EAAInC,eAAkBmC,EAAIqC,SAAS7jB,KAAK2b,UAJvC,CAAEjc,EAAG,CAAE8iB,KAAM,GAAIlQ,OAAQ,GAAKmQ,EAAG,CAAED,KAAM,GAAIlQ,OAAQ,O,oCAQ/DiT,GACc,OAAtBA,EAASnlB,UACXJ,KAAKqlB,UAAUhlB,KAAKklB,EAASnlB,UAEL,OAAtBmlB,EAAS1B,UACXyB,GAAM1B,mBAAmB5jB,KAAK2b,SAAU4J,EAAS1B,UAAUlc,W,+BAWzD3H,KAAKqlB,UAAUhlB,SAAWL,KAAKmlB,MAAMnlB,KAAKolB,aAAahlB,UACzDJ,KAAKwlB,aAIPxlB,KAAKolB,YAAc,EAGnBplB,KAAKylB,cAAczlB,KAAKmlB,MAAMnlB,KAAKolB,gB,+BASnCplB,KAAKmlB,MAAQ,GAGbnlB,KAAKolB,aAAe,EAGpBplB,KAAKwlB,e,8BASLxlB,KAAKmlB,MAAQ,GAGbnlB,KAAKolB,aAAe,EAGpBplB,KAAKqlB,UAAUhlB,KAAK,IAGpBL,KAAKwlB,e,6BAQDxlB,KAAKqlB,UAAUhlB,SAAWL,KAAKmlB,MAAMnlB,KAAKolB,aAAahlB,UACzDJ,KAAKwlB,aAGHxlB,KAAKolB,YAAc,IACrBplB,KAAKolB,cACLplB,KAAKylB,cAAczlB,KAAKmlB,MAAMnlB,KAAKolB,iB,6BAQjCplB,KAAKmlB,MAAM/jB,OAAS,EAAIpB,KAAKolB,cAC/BplB,KAAKolB,cACLplB,KAAKylB,cAAczlB,KAAKmlB,MAAMnlB,KAAKolB,iB,mCAQrCplB,KAAKolB,cAGDplB,KAAKmlB,MAAM/jB,OAASpB,KAAKolB,cAC3BplB,KAAKmlB,MAAQnlB,KAAKmlB,MAAMpX,MAAM,EAAG/N,KAAKolB,cAIxCplB,KAAKmlB,MAAMhW,KAAKnP,KAAK0lB,gBAGjB1lB,KAAKmlB,MAAM/jB,OAASpB,KAAK8J,QAAQhK,QAAQ6lB,eAC3C3lB,KAAKmlB,MAAMS,QACX5lB,KAAKolB,aAAe,Q,6MCrHLS,G,uLAcTC,EAAMC,GACd,GAAIhV,EAAItH,cAAgB,IAAK,CAC3B,IAAMoF,EAAS,GAIf,OAHA1O,IAAEM,KAAKslB,GAAe,SAAC5X,EAAK6X,GAC1BnX,EAAOmX,GAAgBF,EAAKG,IAAID,MAE3BnX,EAET,OAAOiX,EAAKG,IAAIF,K,+BAST7lB,GACP,IACMgmB,EAAYlmB,KAAKmmB,UAAUjmB,EADd,CAAC,cAAe,YAAa,aAAc,kBAAmB,iBAC1B,GAEjDkmB,EAAWlmB,EAAM,GAAG6E,MAAMqhB,UAAYF,EAAU,aAKtD,OAHAA,EAAU,aAAeG,SAASD,EAAU,IAC5CF,EAAU,kBAAoBE,EAASvN,MAAM,YAEtCqN,I,gCASC1E,EAAK0E,GACb/lB,IAAEM,KAAK+gB,EAAI7P,MAAMmJ,GAAI7K,OAAQ,CAC3B+Q,iBAAiB,KACf,SAAC7S,EAAK0T,GACR1hB,IAAE0hB,GAAMoE,IAAIC,Q,iCAcL1E,EAAK1hB,GACd0hB,EAAMA,EAAI5N,YAEV,IAAM/D,EAAY/P,GAAWA,EAAQ+P,UAAa,OAC5CyW,KAA0BxmB,IAAWA,EAAQwmB,sBAC7CC,KAAyBzmB,IAAWA,EAAQymB,qBAElD,GAAI/E,EAAIV,cACN,MAAO,CAACU,EAAIU,WAAWpH,GAAI7b,OAAO4Q,KAGpC,IAAIxB,EAAOyM,GAAIlL,mBAAmBC,GAC5B8B,EAAQ6P,EAAI7P,MAAMmJ,GAAIhL,OAAQ,CAClCmR,eAAe,IACdrU,KAAI,SAAC2L,GACN,OAAOuC,GAAI7D,oBAAoBsB,EAAMlK,IAASyM,GAAIpD,KAAKa,EAAM1I,MAG/D,GAAIyW,EAAsB,CACxB,GAAIC,EAAqB,CACvB,IAAMC,EAAehF,EAAI7P,QAEzBtD,EAAOpB,EAAK5B,IAAIgD,GAAM,SAACqB,GACrB,OAAOlK,EAAMwI,SAASwY,EAAc9W,MAIxC,OAAOiC,EAAM/E,KAAI,SAAC8C,GAChB,IAAMuG,EAAW6E,GAAI9E,oBAAoBtG,EAAMrB,GACzCV,EAAOnI,EAAMmI,KAAKsI,GAClBwQ,EAAQjhB,EAAMsI,KAAKmI,GAKzB,OAJA9V,IAAEM,KAAKgmB,GAAO,SAACtY,EAAKuY,GAClB5L,GAAI5I,iBAAiBvE,EAAM+Y,EAAKxV,YAChC4J,GAAInX,OAAO+iB,MAENlhB,EAAMmI,KAAKsI,MAGpB,OAAOtE,I,8BAUH6P,GACN,IAAMmF,EAAQxmB,IAAG2a,GAAIlG,UAAU4M,EAAIvC,IAA0BuC,EAAIvC,GAAxBuC,EAAIvC,GAAG3N,YAC5C4U,EAAYlmB,KAAK4mB,SAASD,GAI9B,IACET,EAAY/lB,IAAEyB,OAAOskB,EAAW,CAC9B,YAAanc,SAAS8c,kBAAkB,QAAU,OAAS,SAC3D,cAAe9c,SAAS8c,kBAAkB,UAAY,SAAW,SACjE,iBAAkB9c,SAAS8c,kBAAkB,aAAe,YAAc,SAC1E,iBAAkB9c,SAAS8c,kBAAkB,aAAe,YAAc,SAC1E,mBAAoB9c,SAAS8c,kBAAkB,eAAiB,cAAgB,SAChF,qBAAsB9c,SAAS8c,kBAAkB,iBAAmB,gBAAkB,SACtF,cAAe9c,SAAS+c,kBAAkB,aAAeZ,EAAU,iBAErE,MAAOzD,IAKT,GAAKjB,EAAIjC,WAEF,CACL,IACMwH,EADe,CAAC,SAAU,OAAQ,oBAAqB,UAC5B5d,QAAQ+c,EAAU,qBAAuB,EAC1EA,EAAU,cAAgBa,EAAc,YAAc,eAJtDb,EAAU,cAAgB,OAO5B,IAAMrE,EAAO/G,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAI7K,QACtC,GAAI4R,GAAQA,EAAK9c,MAAM,eACrBmhB,EAAU,eAAiBrE,EAAK9c,MAAMiiB,eACjC,CACL,IAAMA,EAAaX,SAASH,EAAU,eAAgB,IAAMG,SAASH,EAAU,aAAc,IAC7FA,EAAU,eAAiBc,EAAWC,QAAQ,GAOhD,OAJAf,EAAUgB,OAAS1F,EAAIhC,cAAgB1E,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAIlK,UAChEsV,EAAU1U,UAAYsJ,GAAIvJ,aAAaiQ,EAAIvC,GAAInE,GAAIrL,YACnDyW,EAAUZ,MAAQ9D,EAEX0E,O,6MC5JUiB,G,+LAIDxL,GAChB3b,KAAKonB,WAAW,KAAMzL,K,0CAMJA,GAClB3b,KAAKonB,WAAW,KAAMzL,K,6BAMjBA,GAAU,WACT6F,EAAM8D,GAAMrmB,OAAO0c,GAAUmG,yBAE7BY,EAAQlB,EAAI7P,MAAMmJ,GAAI7K,OAAQ,CAAE+Q,iBAAiB,IACjDqG,EAAa7hB,EAAMuJ,UAAU2T,EAAOzV,EAAKpC,KAAK,eAEpD1K,IAAEM,KAAK4mB,GAAY,SAAClZ,EAAKuU,GACvB,IAAM/U,EAAOnI,EAAMmI,KAAK+U,GACxB,GAAI5H,GAAI3K,KAAKxC,GAAO,CAClB,IAAM2Z,EAAe,EAAKC,SAAS5Z,EAAKiF,iBACpC0U,EACF5E,EACG9V,KAAI,SAAAiV,GAAI,OAAIyF,EAAarV,YAAY4P,OAExC,EAAK2F,SAAS9E,EAAO/U,EAAK2D,WAAWzB,UACrC6S,EACG9V,KAAI,SAACiV,GAAD,OAAUA,EAAKvQ,cACnB1E,KAAI,SAACiV,GAAD,OAAU,EAAK4F,iBAAiB5F,YAGzC1hB,IAAEM,KAAKiiB,GAAO,SAACvU,EAAK0T,GAClB1hB,IAAE0hB,GAAMoE,IAAI,cAAc,SAAC9X,EAAKmG,GAC9B,OAAQ+R,SAAS/R,EAAK,KAAO,GAAK,YAM1CkN,EAAI7Z,W,8BAMEgU,GAAU,WACV6F,EAAM8D,GAAMrmB,OAAO0c,GAAUmG,yBAE7BY,EAAQlB,EAAI7P,MAAMmJ,GAAI7K,OAAQ,CAAE+Q,iBAAiB,IACjDqG,EAAa7hB,EAAMuJ,UAAU2T,EAAOzV,EAAKpC,KAAK,eAEpD1K,IAAEM,KAAK4mB,GAAY,SAAClZ,EAAKuU,GACvB,IAAM/U,EAAOnI,EAAMmI,KAAK+U,GACpB5H,GAAI3K,KAAKxC,GACX,EAAK+Z,YAAY,CAAChF,IAElBviB,IAAEM,KAAKiiB,GAAO,SAACvU,EAAK0T,GAClB1hB,IAAE0hB,GAAMoE,IAAI,cAAc,SAAC9X,EAAKmG,GAE9B,OADAA,EAAO+R,SAAS/R,EAAK,KAAO,GACf,GAAKA,EAAM,GAAK,YAMrCkN,EAAI7Z,W,iCAQKggB,EAAUhM,GAAU,WACvB6F,EAAM8D,GAAMrmB,OAAO0c,GAAUmG,yBAE/BY,EAAQlB,EAAI7P,MAAMmJ,GAAI7K,OAAQ,CAAE+Q,iBAAiB,IAC/C6C,EAAWrC,EAAIoG,aAAalF,GAC5B2E,EAAa7hB,EAAMuJ,UAAU2T,EAAOzV,EAAKpC,KAAK,eAGpD,GAAIrF,EAAMxE,KAAK0hB,EAAO5H,GAAIjG,YAAa,CACrC,IAAIgT,EAAe,GACnB1nB,IAAEM,KAAK4mB,GAAY,SAAClZ,EAAKuU,GACvBmF,EAAeA,EAAajG,OAAO,EAAK4F,SAAS9E,EAAOiF,OAE1DjF,EAAQmF,MAEH,CACL,IAAMC,EAAYtG,EAAI7P,MAAMmJ,GAAItK,OAAQ,CACtCwQ,iBAAiB,IAChB7J,QAAO,SAAC4Q,GACT,OAAQ5nB,IAAE0P,SAASkY,EAAUJ,MAG3BG,EAAU1mB,OACZjB,IAAEM,KAAKqnB,GAAW,SAAC3Z,EAAK4Z,GACtBjN,GAAIvG,QAAQwT,EAAUJ,MAGxBjF,EAAQ1iB,KAAK0nB,YAAYL,GAAY,GAIzC/B,GAAMxB,uBAAuBD,EAAUnB,GAAO/a,W,+BAQvC+a,EAAOiF,GACd,IAAMha,EAAOnI,EAAMmI,KAAK+U,GAClB7U,EAAOrI,EAAMqI,KAAK6U,GAElBsF,EAAWlN,GAAItK,OAAO7C,EAAKiF,kBAAoBjF,EAAKiF,gBACpDqV,EAAWnN,GAAItK,OAAO3C,EAAK+D,cAAgB/D,EAAK+D,YAEhDmW,EAAWC,GAAYlN,GAAIjJ,YAAYiJ,GAAI7b,OAAO0oB,GAAY,MAAO9Z,GAe3E,OAZA6U,EAAQA,EAAM9V,KAAI,SAACiV,GACjB,OAAO/G,GAAIjG,WAAWgN,GAAQ/G,GAAIvG,QAAQsN,EAAM,MAAQA,KAI1D/G,GAAI5I,iBAAiB6V,EAAUrF,GAE3BuF,IACFnN,GAAI5I,iBAAiB6V,EAAUviB,EAAMmJ,KAAKsZ,EAAS/W,aACnD4J,GAAInX,OAAOskB,IAGNvF,I,kCAUG2E,EAAYa,GAAiB,WACnCC,EAAgB,GA+EpB,OA7EAhoB,IAAEM,KAAK4mB,GAAY,SAAClZ,EAAKuU,GACvB,IAAM/U,EAAOnI,EAAMmI,KAAK+U,GAClB7U,EAAOrI,EAAMqI,KAAK6U,GAElB0F,EAAWF,EAAkBpN,GAAI5D,aAAavJ,EAAMmN,GAAItK,QAAU7C,EAAK2D,WACvE+W,EAAaD,EAAS9W,WAE5B,GAAqC,OAAjC8W,EAAS9W,WAAWzB,SACtB6S,EAAM9V,KAAI,SAAAiV,GACR,IAAMyG,EAAU,EAAKC,iBAAiB1G,GAElCwG,EAAWzW,YACbyW,EAAW/W,WAAWU,aACpB6P,EACAwG,EAAWzW,aAGbyW,EAAW/W,WAAWW,YAAY4P,GAGhCyG,EAAQlnB,SACV,EAAKomB,SAASc,EAASF,EAASvY,UAChCgS,EAAK5P,YAAYqW,EAAQ,GAAGhX,gBAIC,IAA7B8W,EAASvoB,SAASuB,QACpBinB,EAAWlU,YAAYiU,GAGY,IAAjCC,EAAWnX,WAAW9P,QACxBinB,EAAW/W,WAAW6C,YAAYkU,OAE/B,CACL,IAAMG,EAAWJ,EAASlX,WAAW9P,OAAS,EAAI0Z,GAAI9G,UAAUoU,EAAU,CACxE1Y,KAAM7B,EAAKyD,WACXgB,OAAQwI,GAAIpI,SAAS7E,GAAQ,GAC5B,CACD4F,wBAAwB,IACrB,KAECgV,EAAa3N,GAAI9G,UAAUoU,EAAU,CACzC1Y,KAAM/B,EAAK2D,WACXgB,OAAQwI,GAAIpI,SAAS/E,IACpB,CACD8F,wBAAwB,IAG1BiP,EAAQwF,EAAkBpN,GAAIzD,eAAeoR,EAAY3N,GAAI3K,MACzD3K,EAAMmJ,KAAK8Z,EAAWvX,YAAYiG,OAAO2D,GAAI3K,OAG7C+X,GAAoBpN,GAAItK,OAAO4X,EAAS9W,cAC1CoR,EAAQA,EAAM9V,KAAI,SAACiV,GACjB,OAAO/G,GAAIvG,QAAQsN,EAAM,SAI7B1hB,IAAEM,KAAK+E,EAAMmJ,KAAK+T,GAAO5K,WAAW,SAAC3J,EAAK0T,GACxC/G,GAAIjJ,YAAYgQ,EAAMuG,MAIxB,IAAMM,EAAYljB,EAAMyJ,QAAQ,CAACmZ,EAAUK,EAAYD,IACvDroB,IAAEM,KAAKioB,GAAW,SAACva,EAAKwa,GACtB,IAAMC,EAAY,CAACD,GAAU/G,OAAO9G,GAAIzD,eAAesR,EAAU7N,GAAItK,SACrErQ,IAAEM,KAAKmoB,EAAU9Q,WAAW,SAAC3J,EAAK4Z,GAC3BjN,GAAI9J,WAAW+W,IAClBjN,GAAInX,OAAOokB,GAAU,SAM7BI,EAAgBA,EAAcvG,OAAOc,MAGhCyF,I,uCAYQzY,GACf,OAAOA,EAAKkD,gBACRkI,GAAI5I,iBAAiBxC,EAAKkD,gBAAiB,CAAClD,IAC5C1P,KAAKwnB,SAAS,CAAC9X,GAAO,Q,+BAWnBA,GACP,OAAOA,EACHlK,EAAMxE,KAAK0O,EAAK7P,UAAU,SAAAqB,GAAK,MAAI,CAAC,KAAM,MAAMiI,QAAQjI,EAAM2O,WAAa,KAC3E,O,uCAWWH,GAEf,IADA,IAAMuG,EAAW,GACVvG,EAAKkC,aACVqE,EAAS9G,KAAKO,EAAKkC,aACnBlC,EAAOA,EAAKkC,YAEd,OAAOqE,O,6MChRU4S,G,WACnB,WAAY/e,I,4FAAS,SAEnB9J,KAAK8oB,OAAS,IAAI3B,GAClBnnB,KAAKF,QAAUgK,EAAQhK,Q,yDASf0hB,EAAKuH,GACb,IAAMC,EAAMlO,GAAIxC,WAAW,IAAI/W,MAAMwnB,EAAU,GAAGhc,KAAK+N,GAAIxL,aAC3DkS,EAAMA,EAAIO,kBACNG,WAAW8G,GAAK,IAEpBxH,EAAM8D,GAAMrmB,OAAO+pB,EAAKD,IACpBphB,W,sCAcUgU,EAAU6F,GAOxBA,GAHAA,GAHAA,EAAMA,GAAO8D,GAAMrmB,OAAO0c,IAGhBoG,kBAGAD,yBAGV,IAEImH,EAFE/Q,EAAY4C,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAI7K,QAI3C,GAAIiI,EAAW,CAEb,GAAI4C,GAAI3K,KAAK+H,KAAe4C,GAAIhM,QAAQoJ,IAAc4C,GAAIpF,oBAAoBwC,IAG5E,YADAlY,KAAK8oB,OAAO1B,WAAWlP,EAAU5G,WAAWzB,UAG5C,IAAI7K,EAAa,KAOjB,GAN6C,IAAzChF,KAAKF,QAAQopB,wBACflkB,EAAa8V,GAAIzJ,SAAS6G,EAAW4C,GAAIpK,cACS,IAAzC1Q,KAAKF,QAAQopB,0BACtBlkB,EAAa8V,GAAI5D,aAAagB,EAAW4C,GAAIpK,eAG3C1L,EAAY,CAEdikB,EAAW9oB,IAAE2a,GAAIpG,WAAW,GAGxBoG,GAAIvI,iBAAiBiP,EAAIT,kBAAoBjG,GAAI3F,KAAKqM,EAAIvC,GAAGrN,cAC/DzR,IAAEqhB,EAAIvC,GAAGrN,aAAajO,SAExB,IAAMgJ,EAAQmO,GAAI9G,UAAUhP,EAAYwc,EAAIT,gBAAiB,CAAEpN,sBAAsB,IACjFhH,EACFA,EAAM2E,WAAWU,aAAaiX,EAAUtc,GAExCmO,GAAIjJ,YAAYoX,EAAUjkB,OAEvB,CACLikB,EAAWnO,GAAI9G,UAAUkE,EAAWsJ,EAAIT,iBAGxC,IAAIoI,EAAerO,GAAIzD,eAAea,EAAW4C,GAAIlF,eACrDuT,EAAeA,EAAavH,OAAO9G,GAAIzD,eAAe4R,EAAUnO,GAAIlF,gBAEpEzV,IAAEM,KAAK0oB,GAAc,SAAChb,EAAK+Y,GACzBpM,GAAInX,OAAOujB,OAIRpM,GAAIhG,UAAUmU,IAAanO,GAAI5K,MAAM+Y,IAAanO,GAAIlB,iBAAiBqP,KAAcnO,GAAIhM,QAAQma,KACpGA,EAAWnO,GAAIvG,QAAQ0U,EAAU,WAKlC,CACL,IAAM7a,EAAOoT,EAAIvC,GAAG/N,WAAWsQ,EAAItC,IACnC+J,EAAW9oB,IAAE2a,GAAIpG,WAAW,GACxBtG,EACFoT,EAAIvC,GAAGjN,aAAaiX,EAAU7a,GAE9BoT,EAAIvC,GAAGhN,YAAYgX,GAIvB3D,GAAMrmB,OAAOgqB,EAAU,GAAGvH,YAAY/Z,SAASyhB,eAAezN,Q,yMCtGlE,IAAM0N,GAAoB,SAApBA,EAA6BvS,EAAYwS,EAAOniB,EAAQoiB,GAC5D,IAAMC,EAAc,CAAE,OAAU,EAAG,OAAU,GACvCC,EAAgB,GAChBC,EAAkB,GA+BxB,SAASC,EAAwBC,EAAUC,EAAWC,EAASC,EAAUC,EAAWC,EAAWC,GAC7F,IAAMC,EAAc,CAClB,QAAWL,EACX,SAAYC,EACZ,UAAaC,EACb,UAAaC,EACb,UAAaC,GAEVT,EAAcG,KACjBH,EAAcG,GAAY,IAE5BH,EAAcG,GAAUC,GAAaM,EASvC,SAASC,EAAcC,EAAqBC,EAAcC,EAAoBC,GAC5E,MAAO,CACL,SAAYH,EAAoBN,SAChC,OAAUO,EACV,aAAgB,CACd,SAAYC,EACZ,UAAaC,IAWnB,SAASC,EAAiBb,EAAUC,GAClC,IAAKJ,EAAcG,GACjB,OAAOC,EAET,IAAKJ,EAAcG,GAAUC,GAC3B,OAAOA,EAIT,IADA,IAAIa,EAAeb,EACZJ,EAAcG,GAAUc,IAE7B,GADAA,KACKjB,EAAcG,GAAUc,GAC3B,OAAOA,EAWb,SAASC,EAAqBC,EAAKC,GACjC,IAAMhB,EAAYY,EAAiBG,EAAIhB,SAAUiB,EAAKhB,WAChDiB,EAAkBD,EAAKE,QAAU,EACjCC,EAAkBH,EAAKI,QAAU,EACjCC,EAAsBN,EAAIhB,WAAaJ,EAAY2B,QAAUN,EAAKhB,YAAcL,EAAY4B,OAClGzB,EAAwBiB,EAAIhB,SAAUC,EAAWe,EAAKC,EAAMG,EAAgBF,GAAgB,GAG5F,IAAMO,EAAgBR,EAAKS,WAAWL,QAAU5E,SAASwE,EAAKS,WAAWL,QAAQrsB,MAAO,IAAM,EAC9F,GAAIysB,EAAgB,EAClB,IAAK,IAAIE,EAAK,EAAGA,EAAKF,EAAeE,IAAM,CACzC,IAAMC,EAAeZ,EAAIhB,SAAW2B,EACpCE,EAAiBD,EAAc3B,EAAWgB,EAAMK,GAChDvB,EAAwB6B,EAAc3B,EAAWe,EAAKC,GAAM,EAAMC,GAAgB,GAKtF,IAAMY,EAAgBb,EAAKS,WAAWP,QAAU1E,SAASwE,EAAKS,WAAWP,QAAQnsB,MAAO,IAAM,EAC9F,GAAI8sB,EAAgB,EAClB,IAAK,IAAIC,EAAK,EAAGA,EAAKD,EAAeC,IAAM,CACzC,IAAMC,EAAgBnB,EAAiBG,EAAIhB,SAAWC,EAAY8B,GAClEF,EAAiBb,EAAIhB,SAAUgC,EAAef,EAAMK,GACpDvB,EAAwBiB,EAAIhB,SAAUgC,EAAehB,EAAKC,EAAMG,GAAgB,GAAM,IAa5F,SAASS,EAAiB7B,EAAUC,EAAWgB,EAAMgB,GAC/CjC,IAAaJ,EAAY2B,QAAU3B,EAAY4B,QAAUP,EAAKhB,WAAagB,EAAKhB,WAAaA,IAAcgC,GAC7GrC,EAAY4B,SAsBhB,SAASU,EAA4BjB,GACnC,OAAQvB,GACN,KAAKD,EAAkBC,MAAMyC,OAC3B,GAAIlB,EAAKZ,UACP,OAAOZ,EAAkBiB,aAAa0B,kBAExC,MACF,KAAK3C,EAAkBC,MAAM2C,IAC3B,IAAKpB,EAAKqB,WAAarB,EAAKb,UAC1B,OAAOX,EAAkBiB,aAAa6B,QACjC,GAAItB,EAAKb,UACd,OAAOX,EAAkBiB,aAAa0B,kBAI5C,OAAO3C,EAAkBiB,aAAa8B,WAQxC,SAASC,EAAyBxB,GAChC,OAAQvB,GACN,KAAKD,EAAkBC,MAAMyC,OAC3B,GAAIlB,EAAKZ,UACP,OAAOZ,EAAkBiB,aAAagC,aACjC,GAAIzB,EAAKb,WAAaa,EAAKqB,UAChC,OAAO7C,EAAkBiB,aAAaiC,OAExC,MACF,KAAKlD,EAAkBC,MAAM2C,IAC3B,GAAIpB,EAAKb,UACP,OAAOX,EAAkBiB,aAAagC,aACjC,GAAIzB,EAAKZ,WAAaY,EAAKqB,UAChC,OAAO7C,EAAkBiB,aAAaiC,OAI5C,OAAOlD,EAAkBiB,aAAa6B,QAexCnsB,KAAKwsB,cAAgB,WAMnB,IALA,IAAMC,EAAYnD,IAAUD,EAAkBC,MAAM2C,IAAOzC,EAAY2B,QAAU,EAC3EuB,EAAYpD,IAAUD,EAAkBC,MAAMyC,OAAUvC,EAAY4B,QAAU,EAEhFuB,EAAiB,EACjBC,GAAc,EACXA,GAAa,CAClB,IAAMC,EAAeJ,GAAY,EAAKA,EAAWE,EAC3CG,EAAeJ,GAAY,EAAKA,EAAWC,EAC3C/B,EAAMnB,EAAcoD,GAC1B,IAAKjC,EAEH,OADAgC,GAAc,EACPlD,EAET,IAAMmB,EAAOD,EAAIkC,GACjB,IAAKjC,EAEH,OADA+B,GAAc,EACPlD,EAIT,IAAIY,EAAejB,EAAkBiB,aAAaiC,OAClD,OAAQplB,GACN,KAAKkiB,EAAkB0D,cAAcC,IACnC1C,EAAe+B,EAAyBxB,GACxC,MACF,KAAKxB,EAAkB0D,cAAcE,OACnC3C,EAAewB,EAA4BjB,GAG/CnB,EAAgBva,KAAKib,EAAcS,EAAMP,EAAcuC,EAAaC,IACpEH,IAGF,OAAOjD,GAtOF5S,GAAeA,EAAWoW,UAAiD,OAArCpW,EAAWoW,QAAQ/kB,eAA+D,OAArC2O,EAAWoW,QAAQ/kB,iBAI3GqhB,EAAY4B,OAAStU,EAAW+S,UAC3B/S,EAAWmG,eAAkBnG,EAAWmG,cAAciQ,SAA8D,OAAnDpW,EAAWmG,cAAciQ,QAAQ/kB,gBAIvGqhB,EAAY2B,OAASrU,EAAWmG,cAAc2M,WAqHhD,WAEE,IADA,IAAMuD,EAAO5D,EAAS4D,KACbvD,EAAW,EAAGA,EAAWuD,EAAK/rB,OAAQwoB,IAE7C,IADA,IAAMwD,EAAQD,EAAKvD,GAAUwD,MACpBvD,EAAY,EAAGA,EAAYuD,EAAMhsB,OAAQyoB,IAChDc,EAAqBwC,EAAKvD,GAAWwD,EAAMvD,IAuD/CwD,IAqDJhE,GAAkBC,MAAQ,CAAE,IAAO,EAAG,OAAU,GAKhDD,GAAkB0D,cAAgB,CAAE,IAAO,EAAG,OAAU,GAKxD1D,GAAkBiB,aAAe,CAAE,OAAU,EAAG,kBAAqB,EAAG,WAAc,EAAG,QAAW,EAAG,aAAgB,G,IASlGgD,G,iLAOf9L,EAAK+L,GACP,IAAM1C,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QAC9CrM,EAAQwW,GAAIzJ,SAASwZ,EAAM/P,GAAI1K,SAC/Bgd,EAAQtS,GAAIzD,eAAe/S,EAAOwW,GAAInK,QAEtC6c,EAAWhoB,EAAM+nB,EAAU,OAAS,QAAQH,EAAOvC,GACrD2C,GACFlI,GAAMrmB,OAAOuuB,EAAU,GAAG7lB,W,6BAWvB6Z,EAAK9O,GAWV,IAVA,IAAMmY,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QAE9C8c,EAAYttB,IAAE0qB,GAAMrO,QAAQ,MAC5BkR,EAAe1tB,KAAK2tB,kBAAkBF,GACtCptB,EAAOF,IAAE,MAAQutB,EAAe,UAIhCE,EAFS,IAAIvE,GAAkBwB,EAAMxB,GAAkBC,MAAM2C,IACjE5C,GAAkB0D,cAAcC,IAAK7sB,IAAEstB,GAAWjR,QAAQ,SAAS,IAC9CgQ,gBAEdqB,EAAS,EAAGA,EAASD,EAAQxsB,OAAQysB,IAAU,CACtD,IAAMC,EAAcF,EAAQC,GACtBE,EAAe/tB,KAAK2tB,kBAAkBG,EAAY/D,UACxD,OAAQ+D,EAAY3mB,QAClB,KAAKkiB,GAAkBiB,aAAa6B,QAClC9rB,EAAKgB,OAAO,MAAQ0sB,EAAe,IAAMjT,GAAIrG,MAAQ,SACrD,MACF,KAAK4U,GAAkBiB,aAAagC,aAEhC,GAAiB,QAAb5Z,IACiBob,EAAY/D,SAAShY,OACI+b,EAAY/D,SAASvN,QAAQ,MAAMoN,SAAvC,IAAoD6D,EAAU,GAAG7D,SACnF,CACpB,IAAMoE,EAAQ7tB,IAAE,eAAekB,OAAOlB,IAAE,MAAQ4tB,EAAe,IAAMjT,GAAIrG,MAAQ,SAASwZ,WAAW,YAAY5tB,OACjHA,EAAKgB,OAAO2sB,GACZ,MAGJ,IAAI3C,EAAgBhF,SAASyH,EAAY/D,SAASkB,QAAS,IAC3DI,IACAyC,EAAY/D,SAASmE,aAAa,UAAW7C,IAMrD,GAAiB,QAAb3Y,EACF+a,EAAUU,OAAO9tB,OACZ,CAEL,GADwBwqB,EAAKI,QAAU,EACnB,CAClB,IAAMmD,EAAcX,EAAU,GAAG7D,UAAYiB,EAAKI,QAAU,GAE5D,YADA9qB,IAAEA,IAAEstB,GAAW1b,SAAS/Q,KAAK,MAAMotB,IAAcC,MAAMluB,IAAEE,IAG3DotB,EAAUY,MAAMhuB,M,6BAWbmhB,EAAK9O,GACV,IAAMmY,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QAC9Cia,EAAMzqB,IAAE0qB,GAAMrO,QAAQ,MACVrc,IAAEyqB,GAAK3U,WACf9G,KAAKyb,GAMf,IAJA,IAEMgD,EAFS,IAAIvE,GAAkBwB,EAAMxB,GAAkBC,MAAMyC,OACjE1C,GAAkB0D,cAAcC,IAAK7sB,IAAEyqB,GAAKpO,QAAQ,SAAS,IACxCgQ,gBAEd8B,EAAc,EAAGA,EAAcV,EAAQxsB,OAAQktB,IAAe,CACrE,IAAMR,EAAcF,EAAQU,GACtBP,EAAe/tB,KAAK2tB,kBAAkBG,EAAY/D,UACxD,OAAQ+D,EAAY3mB,QAClB,KAAKkiB,GAAkBiB,aAAa6B,QACjB,UAAbzZ,EACFvS,IAAE2tB,EAAY/D,UAAUsE,MAAM,MAAQN,EAAe,IAAMjT,GAAIrG,MAAQ,SAEvEtU,IAAE2tB,EAAY/D,UAAUoE,OAAO,MAAQJ,EAAe,IAAMjT,GAAIrG,MAAQ,SAE1E,MACF,KAAK4U,GAAkBiB,aAAagC,aAClC,GAAiB,UAAb5Z,EAAsB,CACxB,IAAIgZ,EAAgBrF,SAASyH,EAAY/D,SAASgB,QAAS,IAC3DW,IACAoC,EAAY/D,SAASmE,aAAa,UAAWxC,QAE7CvrB,IAAE2tB,EAAY/D,UAAUoE,OAAO,MAAQJ,EAAe,IAAMjT,GAAIrG,MAAQ,a,wCAahEhD,GAChB,IAAI8c,EAAY,GAEhB,IAAK9c,EACH,OAAO8c,EAKT,IAFA,IAAMC,EAAW/c,EAAG6Z,YAAc,GAEzBhuB,EAAI,EAAGA,EAAIkxB,EAASptB,OAAQ9D,IACI,OAAnCkxB,EAASlxB,GAAGY,KAAKiK,eAIjBqmB,EAASlxB,GAAGmxB,YACdF,GAAa,IAAMC,EAASlxB,GAAGY,KAAO,KAAQswB,EAASlxB,GAAGsB,MAAQ,KAItE,OAAO2vB,I,gCASC/M,GAUR,IATA,IAAMqJ,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QAC9Cia,EAAMzqB,IAAE0qB,GAAMrO,QAAQ,MACtBkS,EAAU9D,EAAI/qB,SAAS,UAAU0iB,MAAMpiB,IAAE0qB,IACzCM,EAASP,EAAI,GAAGhB,SAIhBgE,EAFS,IAAIvE,GAAkBwB,EAAMxB,GAAkBC,MAAM2C,IACjE5C,GAAkB0D,cAAcE,OAAQ9sB,IAAEyqB,GAAKpO,QAAQ,SAAS,IAC3CgQ,gBAEd8B,EAAc,EAAGA,EAAcV,EAAQxsB,OAAQktB,IACtD,GAAKV,EAAQU,GAAb,CAIA,IAAMvE,EAAW6D,EAAQU,GAAavE,SAChC4E,EAAkBf,EAAQU,GAAaM,aACvCC,EAAc9E,EAASkB,SAAWlB,EAASkB,QAAU,EACvDI,EAAiBwD,EAAcxI,SAAS0D,EAASkB,QAAS,IAAM,EACpE,OAAQ2C,EAAQU,GAAannB,QAC3B,KAAKkiB,GAAkBiB,aAAaiC,OAClC,SACF,KAAKlD,GAAkBiB,aAAa6B,QAEhC,IAAM2C,EAAUlE,EAAIxc,KAAK,MAAM,GAC/B,IAAK0gB,EAAW,SAChB,IAAMC,EAAWnE,EAAI,GAAGwC,MAAMsB,GAC1BG,IACExD,EAAgB,GAClBA,IACAyD,EAAQ9c,aAAa+c,EAAUD,EAAQ1B,MAAMsB,IAC7CI,EAAQ1B,MAAMsB,GAASR,aAAa,UAAW7C,GAC/CyD,EAAQ1B,MAAMsB,GAASvd,UAAY,IACR,IAAlBka,IACTyD,EAAQ9c,aAAa+c,EAAUD,EAAQ1B,MAAMsB,IAC7CI,EAAQ1B,MAAMsB,GAASM,gBAAgB,WACvCF,EAAQ1B,MAAMsB,GAASvd,UAAY,KAIzC,SACF,KAAKkY,GAAkBiB,aAAa0B,kBAC9B6C,IACExD,EAAgB,GAClBA,IACAtB,EAASmE,aAAa,UAAW7C,GAC7BsD,EAAgB/E,WAAauB,GAAUpB,EAASF,YAAc6E,IAAW3E,EAAS5Y,UAAY,KACvE,IAAlBka,IACTtB,EAASiF,gBAAgB,WACrBL,EAAgB/E,WAAauB,GAAUpB,EAASF,YAAc6E,IAAW3E,EAAS5Y,UAAY,MAGtG,SACF,KAAKkY,GAAkBiB,aAAa8B,WAElC,UAGNxB,EAAIjnB,W,gCASI6d,GASR,IARA,IAAMqJ,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QAC9Cia,EAAMzqB,IAAE0qB,GAAMrO,QAAQ,MACtBkS,EAAU9D,EAAI/qB,SAAS,UAAU0iB,MAAMpiB,IAAE0qB,IAIzC+C,EAFS,IAAIvE,GAAkBwB,EAAMxB,GAAkBC,MAAMyC,OACjE1C,GAAkB0D,cAAcE,OAAQ9sB,IAAEyqB,GAAKpO,QAAQ,SAAS,IAC3CgQ,gBAEd8B,EAAc,EAAGA,EAAcV,EAAQxsB,OAAQktB,IACtD,GAAKV,EAAQU,GAGb,OAAQV,EAAQU,GAAannB,QAC3B,KAAKkiB,GAAkBiB,aAAaiC,OAClC,SACF,KAAKlD,GAAkBiB,aAAa0B,kBAEhC,IAAMjC,EAAW6D,EAAQU,GAAavE,SAEtC,GADoBA,EAASgB,SAAWhB,EAASgB,QAAU,EAC3C,CACd,IAAIW,EAAiB3B,EAASgB,QAAW1E,SAAS0D,EAASgB,QAAS,IAAM,EACtEW,EAAgB,GAClBA,IACA3B,EAASmE,aAAa,UAAWxC,GAC7B3B,EAASF,YAAc6E,IAAW3E,EAAS5Y,UAAY,KAChC,IAAlBua,IACT3B,EAASiF,gBAAgB,WACrBjF,EAASF,YAAc6E,IAAW3E,EAAS5Y,UAAY,KAIjE,SACF,KAAKkY,GAAkBiB,aAAa8B,WAClCtR,GAAInX,OAAOiqB,EAAQU,GAAavE,UAAU,GAC1C,Y,kCAYIkF,EAAUC,EAAUpvB,GAG9B,IAFA,IACIqvB,EADEC,EAAM,GAEHC,EAAS,EAAGA,EAASJ,EAAUI,IACtCD,EAAIjgB,KAAK,OAAS2L,GAAIrG,MAAQ,SAEhC0a,EAASC,EAAIriB,KAAK,IAIlB,IAFA,IACIuiB,EADEC,EAAM,GAEHC,EAAS,EAAGA,EAASN,EAAUM,IACtCD,EAAIpgB,KAAK,OAASggB,EAAS,SAE7BG,EAASC,EAAIxiB,KAAK,IAClB,IAAM0iB,EAAStvB,IAAE,UAAYmvB,EAAS,YAKtC,OAJIxvB,GAAWA,EAAQ4vB,gBACrBD,EAAOlvB,SAAST,EAAQ4vB,gBAGnBD,EAAO,K,kCASJjO,GACV,IAAMqJ,EAAO/P,GAAIzJ,SAASmQ,EAAI/J,iBAAkBqD,GAAInK,QACpDxQ,IAAE0qB,GAAMrO,QAAQ,SAAS7Y,c,yMCnjB7B,IAKqBgsB,G,WACnB,WAAY7lB,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAK+Z,MAAQjQ,EAAQmQ,WAAW4E,KAChC7e,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,SAEzB1e,KAAK2b,SAAW3b,KAAKqlB,UAAU,GAC/BrlB,KAAK6vB,UAAY,KACjB7vB,KAAKulB,SAAW,KAEhBvlB,KAAK+E,MAAQ,IAAI8gB,GACjB7lB,KAAKsE,MAAQ,IAAIgpB,GACjBttB,KAAK8vB,OAAS,IAAIjH,GAAO/e,GACzB9J,KAAK8oB,OAAS,IAAI3B,GAClBnnB,KAAKuH,QAAU,IAAI2d,GAAQpb,GAE3B9J,KAAK8J,QAAQ4E,KAAK,cAAe1O,KAAK2B,KAAKgE,KAAKoqB,QAChD/vB,KAAK8J,QAAQ4E,KAAK,YAAa1O,KAAK2B,KAAKgE,KAAK6B,MAC9CxH,KAAK8J,QAAQ4E,KAAK,YAAa1O,KAAK2B,KAAKgE,KAAK8B,MAC9CzH,KAAK8J,QAAQ4E,KAAK,WAAY1O,KAAK2B,KAAKgE,KAAKqjB,KAC7ChpB,KAAK8J,QAAQ4E,KAAK,aAAc1O,KAAK2B,KAAKgE,KAAKqqB,OAC/ChwB,KAAK8J,QAAQ4E,KAAK,uBAAwB1O,KAAK2B,KAAKgE,KAAKsqB,iBACzDjwB,KAAK8J,QAAQ4E,KAAK,yBAA0B1O,KAAK2B,KAAKgE,KAAKuqB,mBAC3DlwB,KAAK8J,QAAQ4E,KAAK,2BAA4B1O,KAAK2B,KAAKgE,KAAKwqB,qBAC7DnwB,KAAK8J,QAAQ4E,KAAK,cAAe1O,KAAK2B,KAAKgE,KAAKK,QAChDhG,KAAK8J,QAAQ4E,KAAK,eAAgB1O,KAAK2B,KAAKgE,KAAKI,SACjD/F,KAAK8J,QAAQ4E,KAAK,kBAAmB1O,KAAK2B,KAAKgE,KAAKyqB,YACpDpwB,KAAK8J,QAAQ4E,KAAK,4BAA6B1O,KAAK2B,KAAKgE,KAAK0qB,sBAC9DrwB,KAAK8J,QAAQ4E,KAAK,gBAAiB1O,KAAK2B,KAAKgE,KAAKsC,UASlD,IANA,IAAMqoB,EAAW,CACf,OAAQ,SAAU,YAAa,gBAAiB,cAAe,YAC/D,cAAe,gBAAiB,eAAgB,cAChD,cAAe,eAAgB,aAGxBniB,EAAM,EAAGG,EAAMgiB,EAASlvB,OAAQ+M,EAAMG,EAAKH,IAClDnO,KAAKswB,EAASniB,IAAS,SAACoiB,GACtB,OAAO,SAAC3xB,GACN,EAAK4xB,gBACLzmB,SAAS0mB,YAAYF,GAAM,EAAO3xB,GAClC,EAAK8xB,cAAa,IAJC,CAMpBJ,EAASniB,IACZnO,KAAK8J,QAAQ4E,KAAK,QAAU4hB,EAASniB,GAAMnO,KAAK2B,KAAKgE,KAAK2qB,EAASniB,KAGrEnO,KAAKiI,SAAWjI,KAAK2wB,aAAY,SAAC/xB,GAChC,OAAO,EAAKgyB,YAAY,cAAe7f,EAAI/I,cAAcpJ,OAG3DoB,KAAKomB,SAAWpmB,KAAK2wB,aAAY,SAAC/xB,GAChC,IAAMiyB,EAAO,EAAKC,eAAe,kBACjC,OAAO,EAAKF,YAAY,YAAahyB,EAAQiyB,MAG/C7wB,KAAK+wB,aAAe/wB,KAAK2wB,aAAY,SAAC/xB,GACpC,IAAM0D,EAAO,EAAKwuB,eAAe,aACjC,OAAO,EAAKF,YAAY,YAAatuB,EAAO1D,MAG9C,IAAK,IAAIuP,EAAM,EAAGA,GAAO,EAAGA,IAC1BnO,KAAK,UAAYmO,GAAQ,SAACA,GACxB,OAAO,WACL,EAAK6iB,YAAY,IAAM7iB,IAFF,CAItBA,GACHnO,KAAK8J,QAAQ4E,KAAK,eAAiBP,EAAKnO,KAAK2B,KAAKgE,KAAK,UAAYwI,IAGrEnO,KAAKiwB,gBAAkBjwB,KAAK2wB,aAAY,WACtC,EAAKb,OAAOG,gBAAgB,EAAKtU,aAGnC3b,KAAKkwB,kBAAoBlwB,KAAK2wB,aAAY,WACxC,EAAK7H,OAAOoH,kBAAkB,EAAKvU,aAGrC3b,KAAKmwB,oBAAsBnwB,KAAK2wB,aAAY,WAC1C,EAAK7H,OAAOqH,oBAAoB,EAAKxU,aAGvC3b,KAAKgG,OAAShG,KAAK2wB,aAAY,WAC7B,EAAK7H,OAAO9iB,OAAO,EAAK2V,aAG1B3b,KAAK+F,QAAU/F,KAAK2wB,aAAY,WAC9B,EAAK7H,OAAO/iB,QAAQ,EAAK4V,aAQ3B3b,KAAKkiB,WAAaliB,KAAK2wB,aAAY,SAACjhB,GAC9B,EAAKuhB,UAAU9wB,IAAEuP,GAAM6I,OAAOnX,UAGtB,EAAK8vB,eACbhP,WAAWxS,GACf,EAAKyhB,aAAa7L,GAAM3B,oBAAoBjU,GAAM/H,cAOpD3H,KAAKoxB,WAAapxB,KAAK2wB,aAAY,SAACpY,GAClC,IAAI,EAAK0Y,UAAU1Y,EAAKnX,QAAxB,CAGA,IACMiwB,EADM,EAAKH,eACIhP,WAAWpH,GAAIxC,WAAWC,IAC/C,EAAK4Y,aAAa7L,GAAMrmB,OAAOoyB,EAAUvW,GAAI9J,WAAWqgB,IAAW1pB,cAOrE3H,KAAKsxB,UAAYtxB,KAAK2wB,aAAY,SAAC/wB,GACjC,IAAI,EAAKqxB,UAAUrxB,EAAOwB,QAA1B,CAGAxB,EAAS,EAAKkK,QAAQ2B,OAAO,kBAAmB7L,GAChD,IAAMQ,EAAW,EAAK8wB,eAAeI,UAAU1xB,GAC/C,EAAKuxB,aAAa7L,GAAM3B,oBAAoBne,EAAMqI,KAAKzN,IAAWuH,cAQpE3H,KAAKgxB,YAAchxB,KAAK2wB,aAAY,SAACzD,EAAS5Q,GAC5C,IAAMiV,EAAqB,EAAKzxB,QAAQ+b,UAAU0V,mBAC9CA,EACFA,EAAmBzzB,KAAK,EAAMwe,EAAS,EAAKxS,QAAS,EAAK0nB,eAE1D,EAAKA,cAActE,EAAS5Q,MAOhCtc,KAAKqwB,qBAAuBrwB,KAAK2wB,aAAY,WAC3C,IAAMc,EAAS,EAAKP,eAAehP,WAAWpH,GAAI7b,OAAO,OACrDwyB,EAAO7f,aACT,EAAKuf,aAAa7L,GAAMrmB,OAAOwyB,EAAO7f,YAAa,GAAG8P,YAAY/Z,aAQtE3H,KAAKgnB,WAAahnB,KAAK2wB,aAAY,SAAC/xB,GAClC,EAAKmG,MAAM2sB,UAAU,EAAKR,eAAgB,CACxClK,WAAYpoB,OAShBoB,KAAK2xB,WAAa3xB,KAAK2wB,aAAY,SAACiB,GAClC,IAAIC,EAAUD,EAASluB,IACjBouB,EAAWF,EAASrZ,KACpBwZ,EAAcH,EAASG,YACvBC,EAAgBJ,EAASI,cAC3BxQ,EAAMoQ,EAAStM,OAAS,EAAK4L,eAC3Be,EAAuBH,EAAS1wB,OAASogB,EAAIW,WAAW/gB,OAC9D,KAAI6wB,EAAuB,GAAK,EAAKhB,UAAUgB,IAA/C,CAGA,IAAMC,EAAgB1Q,EAAIW,aAAe2P,EAGlB,iBAAZD,IACTA,EAAUA,EAAQ5Y,QAGhB,EAAKnZ,QAAQqyB,aACfN,EAAU,EAAK/xB,QAAQqyB,aAAaN,GAC3BG,IAETH,EAAU,oCAAoCrpB,KAAKqpB,GAC/CA,EAAU,EAAK/xB,QAAQsyB,gBAAkBP,GAG/C,IAAIQ,EAAU,GACd,GAAIH,EAAe,CAEjB,IAAMhL,GADN1F,EAAMA,EAAIO,kBACSG,WAAW/hB,IAAE,MAAQ2xB,EAAW,QAAQ,IAC3DO,EAAQljB,KAAK+X,QAEbmL,EAAU,EAAKttB,MAAMutB,WAAW9Q,EAAK,CACnC3R,SAAU,IACVyW,sBAAsB,EACtBC,qBAAqB,IAIzBpmB,IAAEM,KAAK4xB,GAAS,SAAClkB,EAAK+Y,GACpB/mB,IAAE+mB,GAAQtmB,KAAK,OAAQixB,GACnBE,EACF5xB,IAAE+mB,GAAQtmB,KAAK,SAAU,UAEzBT,IAAE+mB,GAAQ+G,WAAW,aAIzB,EAAKkD,aACH,EAAKoB,oBAAoBF,GAAS1qB,cAWtC3H,KAAKqG,MAAQrG,KAAK2wB,aAAY,SAAC6B,GAC7B,IAAMC,EAAYD,EAAUC,UACtBC,EAAYF,EAAUE,UAExBD,GAAa1oB,SAAS0mB,YAAY,aAAa,EAAOgC,GACtDC,GAAa3oB,SAAS0mB,YAAY,aAAa,EAAOiC,MAQ5D1yB,KAAKyyB,UAAYzyB,KAAK2wB,aAAY,SAAC6B,GACjCzoB,SAAS0mB,YAAY,aAAa,EAAO+B,MAQ3CxyB,KAAK2yB,YAAc3yB,KAAK2wB,aAAY,SAACiC,GACnC,IAAMC,EAAYD,EAAIjmB,MAAM,KAEhB,EAAKukB,eAAenP,iBAC5BG,WAAW,EAAK5d,MAAMwuB,YAAYD,EAAU,GAAIA,EAAU,GAAI,EAAK/yB,aAMzEE,KAAK+yB,YAAc/yB,KAAK2wB,aAAY,WAClC,IAAIrU,EAAUnc,IAAE,EAAK6yB,iBAAiBjhB,SAClCuK,EAAQE,QAAQ,UAAUpb,OAC5Bkb,EAAQE,QAAQ,UAAU7Y,SAE1B2Y,EAAUnc,IAAE,EAAK6yB,iBAAiBC,SAEpC,EAAKnpB,QAAQyR,aAAa,eAAgBe,EAAS,EAAK+I,cAQ1DrlB,KAAKkzB,QAAUlzB,KAAK2wB,aAAY,SAAC/xB,GAC/B,IAAM0d,EAAUnc,IAAE,EAAK6yB,iBACvB1W,EAAQ6W,YAAY,kBAA6B,SAAVv0B,GACvC0d,EAAQ6W,YAAY,mBAA8B,UAAVv0B,GACxC0d,EAAQ2J,IAAI,QAAoB,SAAVrnB,EAAmB,GAAKA,MAOhDoB,KAAKozB,OAASpzB,KAAK2wB,aAAY,SAAC/xB,GAC9B,IAAM0d,EAAUnc,IAAE,EAAK6yB,iBAET,KADdp0B,EAAQ+J,WAAW/J,IAEjB0d,EAAQ2J,IAAI,QAAS,IAErB3J,EAAQ2J,IAAI,CACV5b,MAAe,IAARzL,EAAc,IACrBsD,OAAQ,Q,4DAMH,WAEXlC,KAAKqlB,UAAUvkB,GAAG,WAAW,SAACqb,GAgB5B,GAfIA,EAAM8H,UAAY/kB,GAAI2b,KAAKuJ,OAC7B,EAAKta,QAAQyR,aAAa,QAASY,GAErC,EAAKrS,QAAQyR,aAAa,UAAWY,GAGrC,EAAKoJ,SAAW,EAAKhe,QAAQme,eAC7B,EAAK2N,gBAAiB,EACjBlX,EAAMmX,uBACL,EAAKxzB,QAAQkH,UACf,EAAKqsB,eAAiB,EAAKE,aAAapX,GAExC,EAAKqX,gCAAgCrX,IAGrC,EAAK8U,UAAU,EAAG9U,GAAQ,CAC5B,IAAM0T,EAAY,EAAKqB,eACvB,GAAIrB,EAAUzQ,GAAKyQ,EAAU3Q,IAAO,EAClC,OAAO,EAGX,EAAKiS,eAGD,EAAKrxB,QAAQ2zB,uBACa,IAAxB,EAAKJ,gBACP,EAAK9rB,QAAQie,gBAGhB1kB,GAAG,SAAS,SAACqb,GACd,EAAKgV,eACL,EAAKrnB,QAAQyR,aAAa,QAASY,MAClCrb,GAAG,SAAS,SAACqb,GACd,EAAKgV,eACL,EAAKrnB,QAAQyR,aAAa,QAASY,MAClCrb,GAAG,QAAQ,SAACqb,GACb,EAAKrS,QAAQyR,aAAa,OAAQY,MACjCrb,GAAG,aAAa,SAACqb,GAClB,EAAKrS,QAAQyR,aAAa,YAAaY,MACtCrb,GAAG,WAAW,SAACqb,GAChB,EAAKgV,eACL,EAAK5pB,QAAQie,aACb,EAAK1b,QAAQyR,aAAa,UAAWY,MACpCrb,GAAG,UAAU,SAACqb,GACf,EAAKrS,QAAQyR,aAAa,SAAUY,MACnCrb,GAAG,SAAS,SAACqb,GACd,EAAKgV,eACL,EAAKrnB,QAAQyR,aAAa,QAASY,MAClCrb,GAAG,SAAS,WAET,EAAKmwB,UAAU,IAAM,EAAK1L,UAC5B,EAAKhe,QAAQke,cAAc,EAAKF,aAIpCvlB,KAAKqlB,UAAUzkB,KAAK,aAAcZ,KAAKF,QAAQ4zB,YAE/C1zB,KAAKqlB,UAAUzkB,KAAK,cAAeZ,KAAKF,QAAQ4zB,YAE5C1zB,KAAKF,QAAQ6zB,gBACf3zB,KAAKqlB,UAAUzkB,KAAK,cAAc,GAIpCZ,KAAKqlB,UAAUhlB,KAAKya,GAAIza,KAAKL,KAAK+Z,QAAUe,GAAIpG,WAEhD1U,KAAKqlB,UAAUvkB,GAAGiQ,EAAI/H,eAAgBiE,EAAKD,UAAS,WAClD,EAAKlD,QAAQyR,aAAa,SAAU,EAAK8J,UAAUhlB,OAAQ,EAAKglB,aAC/D,KAEHrlB,KAAKqlB,UAAUvkB,GAAG,WAAW,SAACqb,GAC5B,EAAKrS,QAAQyR,aAAa,UAAWY,MACpCrb,GAAG,YAAY,SAACqb,GACjB,EAAKrS,QAAQyR,aAAa,WAAYY,MAGpCnc,KAAKF,QAAQ8zB,QACX5zB,KAAKF,QAAQ+zB,qBACf7zB,KAAK4vB,QAAQ9uB,GAAG,eAAe,SAACqb,GAE9B,OADA,EAAKrS,QAAQyR,aAAa,cAAeY,IAClC,MAIPnc,KAAKF,QAAQuK,OACfrK,KAAK4vB,QAAQkE,WAAW9zB,KAAKF,QAAQuK,OAEnCrK,KAAKF,QAAQoC,QACflC,KAAKqlB,UAAU/L,YAAYtZ,KAAKF,QAAQoC,QAEtClC,KAAKF,QAAQi0B,WACf/zB,KAAKqlB,UAAUY,IAAI,aAAcjmB,KAAKF,QAAQi0B,WAE5C/zB,KAAKF,QAAQk0B,WACfh0B,KAAKqlB,UAAUY,IAAI,aAAcjmB,KAAKF,QAAQk0B,YAIlDh0B,KAAKuH,QAAQie,aACbxlB,KAAKmxB,iB,gCAILnxB,KAAKqlB,UAAU1L,Q,mCAGJwC,GACX,IAAM8X,EAASj0B,KAAKF,QAAQm0B,OAAOljB,EAAI9H,MAAQ,MAAQ,MACjDwQ,EAAO,GAET0C,EAAM+X,SAAWza,EAAKtK,KAAK,OAC3BgN,EAAMgY,UAAYhY,EAAMiY,QAAU3a,EAAKtK,KAAK,QAC5CgN,EAAMkY,UAAY5a,EAAKtK,KAAK,SAEhC,IAAMmlB,EAAUp1B,GAAI+lB,aAAa9I,EAAM8H,SACnCqQ,GACF7a,EAAKtK,KAAKmlB,GAGZ,IAAMC,EAAYN,EAAOxa,EAAK1M,KAAK,MAEnC,GAAgB,QAAZunB,GAAsBt0B,KAAKF,QAAQ00B,WAEhC,GAAID,GACT,IAAuC,IAAnCv0B,KAAK8J,QAAQ2B,OAAO8oB,GAGtB,OAFApY,EAAME,kBAEC,OAEAnd,GAAI8kB,OAAO7H,EAAM8H,UAC1BjkB,KAAK0wB,oBARL1wB,KAAK0wB,eAUP,OAAO,I,sDAGuBvU,IAEzBA,EAAMgY,SAAWhY,EAAM+X,UAC1B1uB,EAAMwI,SAAS,CAAC,GAAI,GAAI,IAAKmO,EAAM8H,UACnC9H,EAAME,mB,gCAIAoY,EAAKtY,GAGb,OAFAsY,EAAMA,GAAO,QAEQ,IAAVtY,KACLjd,GAAIqlB,OAAOpI,EAAM8H,UACjB/kB,GAAI0lB,aAAazI,EAAM8H,UACtB9H,EAAMgY,SAAWhY,EAAM+X,SACxB1uB,EAAMwI,SAAS,CAAC9O,GAAI2b,KAAKqJ,UAAWhlB,GAAI2b,KAAKyJ,QAASnI,EAAM8H,YAK9DjkB,KAAKF,QAAQ40B,cAAgB,GAC1B10B,KAAKqlB,UAAU9M,OAAOnX,OAASqzB,EAAOz0B,KAAKF,QAAQ40B,gB,oCAc1D,OAFA10B,KAAK+e,QACL/e,KAAKmxB,eACEnxB,KAAKkxB,iB,0CASMyD,GAClB,IACM7d,EADawO,GAAM5B,qBAAqBle,EAAMmI,KAAKgnB,IAC3B5T,gBAExBhK,EADWuO,GAAM3B,oBAAoBne,EAAMqI,KAAK8mB,IAC5B9T,cAE1B,OAAOyE,GAAMrmB,OACX6X,EAAWpH,KACXoH,EAAWxE,OACXyE,EAASrH,KACTqH,EAASzE,U,mCAYAkP,GACPA,EACFxhB,KAAK6vB,UAAYrO,GAEjBxhB,KAAK6vB,UAAYvK,GAAMrmB,OAAOe,KAAK2b,UAE2B,IAA1Dxb,IAAEH,KAAK6vB,UAAU5Q,IAAIzC,QAAQ,kBAAkBpb,SACjDpB,KAAK6vB,UAAYvK,GAAMtC,sBAAsBhjB,KAAK2b,c,qCAiBtD,OAHK3b,KAAK6vB,WACR7vB,KAAKmxB,eAEAnxB,KAAK6vB,Y,gCAUJ+E,GACJA,GACF50B,KAAKkxB,eAAezT,WAAW9V,W,qCAU7B3H,KAAK6vB,YACP7vB,KAAK6vB,UAAUloB,SACf3H,KAAK+e,W,iCAIErP,GACT1P,KAAKqlB,UAAU7kB,KAAK,SAAUkP,K,oCAI9B1P,KAAKqlB,UAAU5K,WAAW,Y,sCAI1B,OAAOza,KAAKqlB,UAAU7kB,KAAK,Y,qCAU3B,IAAIghB,EAAM8D,GAAMrmB,SAIhB,OAHIuiB,IACFA,EAAMA,EAAIE,aAELF,EAAMxhB,KAAK+E,MAAMyS,QAAQgK,GAAOxhB,KAAK+E,MAAM6hB,SAAS5mB,KAAKqlB,a,oCASpDnlB,GACZ,OAAOF,KAAK+E,MAAM6hB,SAAS1mB,K,6BAO3BF,KAAK8J,QAAQyR,aAAa,iBAAkBvb,KAAKqlB,UAAUhlB,QAC3DL,KAAKuH,QAAQC,OACbxH,KAAK8J,QAAQyR,aAAa,SAAUvb,KAAKqlB,UAAUhlB,OAAQL,KAAKqlB,a,+BAOhErlB,KAAK8J,QAAQyR,aAAa,iBAAkBvb,KAAKqlB,UAAUhlB,QAC3DL,KAAKuH,QAAQstB,SACb70B,KAAK8J,QAAQyR,aAAa,SAAUvb,KAAKqlB,UAAUhlB,OAAQL,KAAKqlB,a,6BAOhErlB,KAAK8J,QAAQyR,aAAa,iBAAkBvb,KAAKqlB,UAAUhlB,QAC3DL,KAAKuH,QAAQE,OACbzH,KAAK8J,QAAQyR,aAAa,SAAUvb,KAAKqlB,UAAUhlB,OAAQL,KAAKqlB,a,sCAOhErlB,KAAK8J,QAAQyR,aAAa,iBAAkBvb,KAAKqlB,UAAUhlB,QAG3D0J,SAAS0mB,YAAY,gBAAgB,EAAOzwB,KAAKF,QAAQg1B,cAGzD90B,KAAK+e,U,mCAOMgW,GACX/0B,KAAKg1B,mBACLh1B,KAAKuH,QAAQie,aACRuP,GACH/0B,KAAK8J,QAAQyR,aAAa,SAAUvb,KAAKqlB,UAAUhlB,OAAQL,KAAKqlB,a,4BAQlE,IAAM7D,EAAMxhB,KAAKkxB,eACjB,GAAI1P,EAAIV,eAAiBU,EAAI/B,WAC3Bzf,KAAKsE,MAAM0kB,IAAIxH,OACV,CACL,GAA6B,IAAzBxhB,KAAKF,QAAQm1B,QACf,OAAO,EAGJj1B,KAAKixB,UAAUjxB,KAAKF,QAAQm1B,WAC/Bj1B,KAAKwwB,gBACLxwB,KAAK8vB,OAAOoF,UAAU1T,EAAKxhB,KAAKF,QAAQm1B,SACxCj1B,KAAK0wB,mB,8BAST,IAAMlP,EAAMxhB,KAAKkxB,eACjB,GAAI1P,EAAIV,eAAiBU,EAAI/B,WAC3Bzf,KAAKsE,MAAM0kB,IAAIxH,GAAK,QAEpB,GAA6B,IAAzBxhB,KAAKF,QAAQm1B,QACf,OAAO,I,kCAQDvrB,GACV,OAAO,WACL1J,KAAKwwB,gBACL9mB,EAAG0B,MAAMpL,KAAMsB,WACftB,KAAK0wB,kB,kCAWGyE,EAAKC,GAAO,IChrBE1xB,EDgrBF,OACtB,OCjrBwBA,EDirBLyxB,EChrBdh1B,IAAEk1B,UAAS,SAACC,GACjB,IAAMC,EAAOp1B,IAAE,SAEfo1B,EAAKC,IAAI,QAAQ,WACfD,EAAK5b,IAAI,eACT2b,EAASG,QAAQF,MAChBC,IAAI,eAAe,WACpBD,EAAK5b,IAAI,QAAQsZ,SACjBqC,EAASI,OAAOH,MACftP,IAAI,CACL0P,QAAS,SACRC,SAAS7rB,SAASoT,MAAMvc,KAAK,MAAO8C,MACtCmyB,WDoqB8BC,MAAK,SAACC,GACnC,EAAKvF,gBAEgB,mBAAV4E,EACTA,EAAMW,IAEe,iBAAVX,GACTW,EAAOn1B,KAAK,gBAAiBw0B,GAE/BW,EAAO9P,IAAI,QAAS3F,KAAK0V,IAAI,EAAK3Q,UAAUhb,QAAS0rB,EAAO1rB,WAG9D0rB,EAAOE,OACP,EAAK/E,eAAehP,WAAW6T,EAAO,IACtC,EAAK5E,aAAa7L,GAAM3B,oBAAoBoS,EAAO,IAAIpuB,UACvD,EAAK+oB,kBACJ1lB,MAAK,SAACyX,GACP,EAAK3Y,QAAQyR,aAAa,qBAAsBkH,Q,4CAQ9ByT,GAAO,WAC3B/1B,IAAEM,KAAKy1B,GAAO,SAAC/nB,EAAKgoB,GAClB,IAAMC,EAAWD,EAAKj4B,KAClB,EAAK4B,QAAQu2B,sBAAwB,EAAKv2B,QAAQu2B,qBAAuBF,EAAK7zB,KAChF,EAAKwH,QAAQyR,aAAa,qBAAsB,EAAK5Z,KAAKa,MAAMiB,sBCpuBjE,SAA2B0yB,GAChC,OAAOh2B,IAAEk1B,UAAS,SAACC,GACjBn1B,IAAEyB,OAAO,IAAI00B,WAAc,CACzBC,OAAQ,SAAC9T,GACP,IAAM+T,EAAU/T,EAAElG,OAAO1N,OACzBymB,EAASG,QAAQe,IAEnBC,QAAS,SAACC,GACRpB,EAASI,OAAOgB,MAEjBC,cAAcR,MAChBN,UD2tBGe,CAAkBT,GAAML,MAAK,SAACU,GAC5B,OAAO,EAAKK,YAAYL,EAASJ,MAChCprB,MAAK,WACN,EAAKlB,QAAQyR,aAAa,8B,6CAUX2a,GACHl2B,KAAKF,QAAQ+b,UAEjBib,cACZ92B,KAAK8J,QAAQyR,aAAa,eAAgB2a,GAG1Cl2B,KAAK+2B,sBAAsBb,K,wCAS7B,IAAI1U,EAAMxhB,KAAKkxB,eAOf,OAJI1P,EAAIhC,eACNgC,EAAM8D,GAAMrC,eAAenI,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAIlK,YAG/C4Q,EAAIW,a,oCAGC+K,EAAS5Q,GAKrB,GAHAvS,SAAS0mB,YAAY,eAAe,EAAO1f,EAAIxI,OAAS,IAAM2kB,EAAU,IAAMA,GAG1E5Q,GAAWA,EAAQlb,SAEjBkb,EAAQ,GAAG4Q,QAAQpgB,gBAAkBogB,EAAQpgB,gBAC/CwP,EAAUA,EAAQtb,KAAKksB,IAGrB5Q,GAAWA,EAAQlb,QAAQ,CAC7B,IAAMd,EAAYgc,EAAQ,GAAGhc,WAAa,GAC1C,GAAIA,EAAW,CACb,IAAM02B,EAAeh3B,KAAKuK,cAEVpK,IAAE,CAAC62B,EAAa/X,GAAI+X,EAAa7X,KAAK3C,QAAQ0Q,GACtD3sB,SAASD,O,mCAOvBN,KAAKgxB,YAAY,O,kCAGPzU,EAAQ3d,GAClB,IAAM4iB,EAAMxhB,KAAKkxB,eAEjB,GAAY,KAAR1P,EAAY,CACd,IAAMyV,EAAQj3B,KAAK+E,MAAMutB,WAAW9Q,GAMpC,GALAxhB,KAAK4vB,QAAQ5uB,KAAK,uBAAuBX,KAAK,IAC9CF,IAAE82B,GAAOhR,IAAI1J,EAAQ3d,GAIjB4iB,EAAIV,cAAe,CACrB,IAAMoW,EAAY1xB,EAAMmI,KAAKspB,GACzBC,IAAcpc,GAAI9J,WAAWkmB,KAC/BA,EAAU/lB,UAAY2J,GAAItG,qBAC1B8Q,GAAMrC,eAAeiU,EAAUxZ,YAAY/V,SAC3C3H,KAAKmxB,eACLnxB,KAAKqlB,UAAU7kB,KApzBP,QAozBuB02B,SAGjCl3B,KAAKmxB,aACHnxB,KAAKuyB,oBAAoB0E,GAAOtvB,cAG/B,CACL,IAAMwvB,EAAmBh3B,IAAE6a,MAC3Bhb,KAAK4vB,QAAQ5uB,KAAK,uBAAuBX,KAAK,+BAAiC82B,EAAmB,8BAAgCn3B,KAAK2B,KAAKiG,OAAOC,YAAc,UACjK4F,YAAW,WAAatN,IAAE,uBAAyBg3B,GAAkBxzB,WAAa,Q,+BAUpF,IAAI6d,EAAMxhB,KAAKkxB,eACf,GAAI1P,EAAIhC,aAAc,CACpB,IAAM0H,EAASpM,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAIlK,WACxC4Q,EAAM8D,GAAMrC,eAAeiE,IACvBvf,SACJ3H,KAAKmxB,eAELnxB,KAAKwwB,gBACLzmB,SAAS0mB,YAAY,UACrBzwB,KAAK0wB,kB,oCAcP,IAAMlP,EAAMxhB,KAAKkxB,eAAekG,OAAOtc,GAAIlK,UAErCymB,EAAUl3B,IAAEqF,EAAMmI,KAAK6T,EAAI7P,MAAMmJ,GAAIlK,YACrCghB,EAAW,CACftM,MAAO9D,EACPjJ,KAAMiJ,EAAIW,WACVze,IAAK2zB,EAAQj2B,OAASi2B,EAAQz2B,KAAK,QAAU,IAS/C,OALIy2B,EAAQj2B,SAEVwwB,EAASG,YAAyC,WAA3BsF,EAAQz2B,KAAK,WAG/BgxB,I,6BAGFlf,GACL,IAAM8O,EAAMxhB,KAAKkxB,aAAalxB,KAAKqlB,WAC/B7D,EAAIV,eAAiBU,EAAI/B,aAC3Bzf,KAAKwwB,gBACLxwB,KAAKsE,MAAMgzB,OAAO9V,EAAK9O,GACvB1S,KAAK0wB,kB,6BAIFhe,GACL,IAAM8O,EAAMxhB,KAAKkxB,aAAalxB,KAAKqlB,WAC/B7D,EAAIV,eAAiBU,EAAI/B,aAC3Bzf,KAAKwwB,gBACLxwB,KAAKsE,MAAMizB,OAAO/V,EAAK9O,GACvB1S,KAAK0wB,kB,kCAKP,IAAMlP,EAAMxhB,KAAKkxB,aAAalxB,KAAKqlB,WAC/B7D,EAAIV,eAAiBU,EAAI/B,aAC3Bzf,KAAKwwB,gBACLxwB,KAAKsE,MAAMkzB,UAAUhW,GACrBxhB,KAAK0wB,kB,kCAKP,IAAMlP,EAAMxhB,KAAKkxB,aAAalxB,KAAKqlB,WAC/B7D,EAAIV,eAAiBU,EAAI/B,aAC3Bzf,KAAKwwB,gBACLxwB,KAAKsE,MAAMmzB,UAAUjW,GACrBxhB,KAAK0wB,kB,oCAKP,IAAMlP,EAAMxhB,KAAKkxB,aAAalxB,KAAKqlB,WAC/B7D,EAAIV,eAAiBU,EAAI/B,aAC3Bzf,KAAKwwB,gBACLxwB,KAAKsE,MAAMozB,YAAYlW,GACvBxhB,KAAK0wB,kB,+BASArX,EAAKiD,EAASqb,GACrB,IAAIC,EACJ,GAAID,EAAY,CACd,IAAME,EAAWxe,EAAIye,EAAIze,EAAI0e,EACvBC,EAAQ1b,EAAQ9b,KAAK,SAC3Bo3B,EAAY,CACVvtB,MAAO2tB,EAAQH,EAAWxe,EAAI0e,EAAI1e,EAAIye,EAAIE,EAC1C91B,OAAQ81B,EAAQH,EAAWxe,EAAI0e,EAAIC,EAAQ3e,EAAIye,QAGjDF,EAAY,CACVvtB,MAAOgP,EAAI0e,EACX71B,OAAQmX,EAAIye,GAIhBxb,EAAQ2J,IAAI2R,K,iCAOZ,OAAO53B,KAAKqlB,UAAU4S,GAAG,Y,8BASpBj4B,KAAKk4B,YACRl4B,KAAKqlB,UAAUtG,U,gCASjB,OAAOjE,GAAIhM,QAAQ9O,KAAKqlB,UAAU,KAAOvK,GAAIpG,YAAc1U,KAAKqlB,UAAUhlB,S,8BAO1EL,KAAK8J,QAAQ2B,OAAO,OAAQqP,GAAIpG,a,yCAOhC1U,KAAKqlB,UAAU,GAAG3D,iB,6MEv+BDyW,G,WACnB,WAAYruB,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,S,4DAIpC3b,KAAKqlB,UAAUvkB,GAAG,QAASd,KAAKo4B,aAAaj5B,KAAKa,S,mCAQvCmc,GAAO,WACZkc,EAAgBlc,EAAMmc,cAAcD,cAE1C,GAAIA,GAAiBA,EAAcE,OAASF,EAAcE,MAAMn3B,OAAQ,CACtE,IAAMoK,EAAO6sB,EAAcE,MAAMn3B,OAAS,EAAIi3B,EAAcE,MAAM,GAAK/yB,EAAMmI,KAAK0qB,EAAcE,OAC9E,SAAd/sB,EAAKgtB,OAAoD,IAAjChtB,EAAK+S,KAAKpV,QAAQ,WAE5CnJ,KAAK8J,QAAQ2B,OAAO,gCAAiC,CAACD,EAAKitB,cAC3Dtc,EAAME,kBACiB,WAAd7Q,EAAKgtB,MAEVx4B,KAAK8J,QAAQ2B,OAAO,mBAAoB4sB,EAAcK,QAAQ,QAAQt3B,SACxE+a,EAAME,sBAGL,GAAI9e,OAAO86B,cAAe,CAE/B,IAAI9f,EAAOhb,OAAO86B,cAAcK,QAAQ,QACpC14B,KAAK8J,QAAQ2B,OAAO,mBAAoB8M,EAAKnX,SAC/C+a,EAAME,iBAIV5O,YAAW,WACT,EAAK3D,QAAQ2B,OAAO,yBACnB,S,6MCxCcktB,G,WACnB,WAAY7uB,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAK44B,eAAiBz4B,IAAE4J,UACxB/J,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,SACzB1e,KAAK64B,sBAAwB,GAE7B74B,KAAK84B,UAAY34B,IAAE,CACjB,8BACE,4CACF,UACA4M,KAAK,KAAKgsB,UAAU/4B,KAAK4vB,S,4DAOvB5vB,KAAKF,QAAQk5B,oBAEfh5B,KAAK64B,sBAAsBI,OAAS,SAACxW,GACnCA,EAAEpG,kBAGJrc,KAAK44B,eAAiB54B,KAAK84B,UAC3B94B,KAAK44B,eAAe93B,GAAG,OAAQd,KAAK64B,sBAAsBI,SAE1Dj5B,KAAKk5B,2B,+CAOgB,WACnBtqB,EAAazO,MACXg5B,EAAmBn5B,KAAK84B,UAAU93B,KAAK,0BAE7ChB,KAAK64B,sBAAsBO,YAAc,SAAC3W,GACxC,IAAM4W,EAAa,EAAKvvB,QAAQ2B,OAAO,wBACjC6tB,EAAgB,EAAK1J,QAAQvlB,QAAU,GAAK,EAAKulB,QAAQ1tB,SAAW,EACrEm3B,GAAezqB,EAAWxN,SAAUk4B,IACvC,EAAK1J,QAAQrvB,SAAS,YACtB,EAAKu4B,UAAUzuB,MAAM,EAAKulB,QAAQvlB,SAClC,EAAKyuB,UAAU52B,OAAO,EAAK0tB,QAAQ1tB,UACnCi3B,EAAiB5gB,KAAK,EAAK5W,KAAKa,MAAMa,gBAExCuL,EAAaA,EAAW2qB,IAAI9W,EAAElG,SAGhCvc,KAAK64B,sBAAsBW,YAAc,SAAC/W,IACxC7T,EAAaA,EAAW1D,IAAIuX,EAAElG,SAGdnb,QAAgC,SAAtBqhB,EAAElG,OAAO1M,WACjCjB,EAAazO,MACb,EAAKyvB,QAAQ6J,YAAY,cAI7Bz5B,KAAK64B,sBAAsBI,OAAS,WAClCrqB,EAAazO,MACb,EAAKyvB,QAAQ6J,YAAY,aAK3Bz5B,KAAK44B,eAAe93B,GAAG,YAAad,KAAK64B,sBAAsBO,aAC5Dt4B,GAAG,YAAad,KAAK64B,sBAAsBW,aAC3C14B,GAAG,OAAQd,KAAK64B,sBAAsBI,QAGzCj5B,KAAK84B,UAAUh4B,GAAG,aAAa,WAC7B,EAAKg4B,UAAUv4B,SAAS,SACxB44B,EAAiB5gB,KAAK,EAAK5W,KAAKa,MAAMc,cACrCxC,GAAG,aAAa,WACjB,EAAKg4B,UAAUW,YAAY,SAC3BN,EAAiB5gB,KAAK,EAAK5W,KAAKa,MAAMa,kBAIxCrD,KAAK84B,UAAUh4B,GAAG,QAAQ,SAACqb,GACzB,IAAMud,EAAevd,EAAMmc,cAAcoB,aAGzCvd,EAAME,iBAEFqd,GAAgBA,EAAaxD,OAASwD,EAAaxD,MAAM90B,QAC3D,EAAKikB,UAAUtG,QACf,EAAKjV,QAAQ2B,OAAO,gCAAiCiuB,EAAaxD,QAElE/1B,IAAEM,KAAKi5B,EAAaC,OAAO,SAACxrB,EAAKoQ,GAE/B,KAAIA,EAAKpW,cAAcgB,QAAQ,UAAY,GAA3C,CAGA,IAAMywB,EAAUF,EAAahB,QAAQna,GAEjCA,EAAKpW,cAAcgB,QAAQ,SAAW,EACxC,EAAKW,QAAQ2B,OAAO,mBAAoBmuB,GAExCz5B,IAAEy5B,GAASn5B,MAAK,SAAC0N,EAAK3C,GACpB,EAAK1B,QAAQ2B,OAAO,oBAAqBD,aAKhD1K,GAAG,YAAY,K,gCAGV,WACRzC,OAAOob,KAAKzZ,KAAK64B,uBAAuB53B,SAAQ,SAAC/B,GAC/C,EAAK05B,eAAejf,IAAIza,EAAI26B,OAAO,GAAG1xB,cAAe,EAAK0wB,sBAAsB35B,OAElFc,KAAK64B,sBAAwB,Q,krCCjHZiB,G,WACnB,WAAYhwB,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAK+5B,SAAWjwB,EAAQmQ,WAAWyB,QACnC1b,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAKg6B,sBAAwBz8B,OAAO08B,WAEhCj6B,KAAKF,QAAQo6B,WAAWF,wBAC1Bh6B,KAAKg6B,sBAAwBh6B,KAAKF,QAAQo6B,WAAWF,uB,oDAIpD35B,GACH,IAAMg5B,EAAar5B,KAAKwb,cAClBye,EAAaj6B,KAAKg6B,sBAEpBX,IACEh5B,EACE45B,EACFj6B,KAAK+5B,SAASv5B,KAAK,YAAY25B,SAASC,SAAS/5B,GAEjDL,KAAK+5B,SAASzlB,IAAIjU,GAGhB45B,GACFj6B,KAAK+5B,SAASv5B,KAAK,YAAY65B,U,mCAM1B,WACXr6B,KAAK+5B,SAASj5B,GAAG,SAAS,SAACqb,GACrBA,EAAM8H,UAAY/kB,GAAI2b,KAAKyf,QAC7B,EAAKC,kB,oCAST,OAAOv6B,KAAK4vB,QAAQjgB,SAAS,c,+BAOzB3P,KAAKwb,cACPxb,KAAKu6B,aAELv6B,KAAKw6B,WAEPx6B,KAAK8J,QAAQyR,aAAa,sB,6BAQrB3c,GACL,GAAIoB,KAAKF,QAAQ26B,iBAEf77B,EAAQA,EAAM2V,QAAQvU,KAAKF,QAAQ46B,oBAAqB,IAEpD16B,KAAKF,QAAQ66B,sBAAsB,CACrC,IAAMC,EAAY56B,KAAKF,QAAQ+6B,2BAA2BjZ,OAAO5hB,KAAKF,QAAQg7B,gCAC9El8B,EAAQA,EAAM2V,QAAQ,qCAAqC,SAASwmB,GAElE,GAAI,uDAAuDvyB,KAAKuyB,GAC9D,MAAO,GAH8D,WAKrDH,GALqD,IAKvE,2BAA6B,KAAlBzF,EAAkB,QAE3B,GAAK,IAAI6F,OAAO,oBAAwB7F,EAAI5gB,QAAQ,yBAA0B,QAAU,UAAY/L,KAAKuyB,GACvG,OAAOA,GAR4D,8BAWvE,MAAO,MAIb,OAAOn8B,I,iCAME,WACHq7B,EAAaj6B,KAAKg6B,sBAWxB,GAVAh6B,KAAK+5B,SAASzlB,IAAIwG,GAAIza,KAAKL,KAAKqlB,UAAWrlB,KAAKF,QAAQm7B,eACxDj7B,KAAK+5B,SAAS73B,OAAOlC,KAAKqlB,UAAUnjB,UAEpClC,KAAK8J,QAAQ2B,OAAO,0BAA0B,GAC9CzL,KAAK8J,QAAQ2B,OAAO,6BAA6B,GAEjDzL,KAAK4vB,QAAQrvB,SAAS,YACtBP,KAAK+5B,SAAShb,QAGVkb,EAAY,CACd,IAAMiB,EAAWjB,EAAWkB,aAAan7B,KAAK+5B,SAAS,GAAI/5B,KAAKF,QAAQo6B,YAGxE,GAAIl6B,KAAKF,QAAQo6B,WAAWkB,KAAM,CAChC,IAAMC,EAAS,IAAIpB,EAAWqB,WAAWt7B,KAAKF,QAAQo6B,WAAWkB,MACjEF,EAASK,WAAaF,EACtBH,EAASp6B,GAAG,kBAAkB,SAAC06B,GAC7BH,EAAOI,eAAeD,MAI1BN,EAASp6B,GAAG,QAAQ,SAACqb,GACnB,EAAKrS,QAAQyR,aAAa,gBAAiB2f,EAASQ,WAAYvf,MAElE+e,EAASp6B,GAAG,UAAU,WACpB,EAAKgJ,QAAQyR,aAAa,kBAAmB2f,EAASQ,WAAYR,MAIpEA,EAASS,QAAQ,KAAM37B,KAAKqlB,UAAU/L,eACtCtZ,KAAK+5B,SAASv5B,KAAK,WAAY06B,QAE/Bl7B,KAAK+5B,SAASj5B,GAAG,QAAQ,SAACqb,GACxB,EAAKrS,QAAQyR,aAAa,gBAAiB,EAAKwe,SAASzlB,MAAO6H,MAElEnc,KAAK+5B,SAASj5B,GAAG,SAAS,WACxB,EAAKgJ,QAAQyR,aAAa,kBAAmB,EAAKwe,SAASzlB,MAAO,EAAKylB,e,mCAW3E,GAFmB/5B,KAAKg6B,sBAER,CACd,IAAMkB,EAAWl7B,KAAK+5B,SAASv5B,KAAK,YACpCR,KAAK+5B,SAASzlB,IAAI4mB,EAASQ,YAC3BR,EAASU,aAGX,IAAMh9B,EAAQoB,KAAK67B,OAAO/gB,GAAIlc,MAAMoB,KAAK+5B,SAAU/5B,KAAKF,QAAQm7B,eAAiBngB,GAAIpG,WAC/EonB,EAAW97B,KAAKqlB,UAAUhlB,SAAWzB,EAE3CoB,KAAKqlB,UAAUhlB,KAAKzB,GACpBoB,KAAKqlB,UAAUnjB,OAAOlC,KAAKF,QAAQoC,OAASlC,KAAK+5B,SAAS73B,SAAW,QACrElC,KAAK4vB,QAAQ6J,YAAY,YAErBqC,GACF97B,KAAK8J,QAAQyR,aAAa,SAAUvb,KAAKqlB,UAAUhlB,OAAQL,KAAKqlB,WAGlErlB,KAAKqlB,UAAUtG,QAEf/e,KAAK8J,QAAQ2B,OAAO,0BAA0B,GAC9CzL,KAAK8J,QAAQ2B,OAAO,6BAA6B,K,gCAI7CzL,KAAKwb,eACPxb,KAAKu6B,kB,yMC7KX,IAEqBwB,G,WACnB,WAAYjyB,I,4FAAS,SACnB9J,KAAKkM,UAAY/L,IAAE4J,UACnB/J,KAAKg8B,WAAalyB,EAAQmQ,WAAWgiB,UACrCj8B,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAKF,QAAUgK,EAAQhK,Q,4DAGZ,WACPE,KAAKF,QAAQ8zB,SAAW5zB,KAAKF,QAAQo8B,oBACvCl8B,KAAKkc,UAIPlc,KAAKg8B,WAAWl7B,GAAG,aAAa,SAACqb,GAC/BA,EAAME,iBACNF,EAAMggB,kBAEN,IAAMC,EAAc,EAAK/W,UAAU/S,SAASnG,IAAM,EAAKD,UAAUE,YAC3DiwB,EAAc,SAAClgB,GACnB,IAAIja,EAASia,EAAMmgB,SAAWF,EAtBb,IAwBjBl6B,EAAU,EAAKpC,QAAQy8B,UAAY,EAAKjc,KAAKkc,IAAIt6B,EAAQ,EAAKpC,QAAQy8B,WAAar6B,EACnFA,EAAU,EAAKpC,QAAQi0B,UAAY,EAAKzT,KAAK0V,IAAI9zB,EAAQ,EAAKpC,QAAQi0B,WAAa7xB,EAEnF,EAAKmjB,UAAUnjB,OAAOA,IAGxB,EAAKgK,UAAUpL,GAAG,YAAau7B,GAAa7G,IAAI,WAAW,WACzD,EAAKtpB,UAAUyN,IAAI,YAAa0iB,W,gCAMpCr8B,KAAKg8B,WAAWriB,MAChB3Z,KAAKg8B,WAAWz7B,SAAS,e,6MCrCRk8B,G,WACnB,WAAY3yB,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAK08B,SAAW5yB,EAAQmQ,WAAW0iB,QACnC38B,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAK+5B,SAAWjwB,EAAQmQ,WAAWyB,QAEnC1b,KAAK48B,QAAUz8B,IAAE5C,QACjByC,KAAK68B,WAAa18B,IAAE,cAEpBH,KAAK88B,SAAW,WACd,EAAKC,SAAS,CACZC,EAAG,EAAKJ,QAAQ16B,SAAW,EAAKw6B,SAASpjB,iB,wDAKtChX,GACPtC,KAAKqlB,UAAUY,IAAI,SAAU3jB,EAAK06B,GAClCh9B,KAAK+5B,SAAS9T,IAAI,SAAU3jB,EAAK06B,GAC7Bh9B,KAAK+5B,SAASv5B,KAAK,aACrBR,KAAK+5B,SAASv5B,KAAK,YAAYy8B,QAAQ,KAAM36B,EAAK06B,K,+BAQpDh9B,KAAK4vB,QAAQuD,YAAY,cACrBnzB,KAAKk9B,gBACPl9B,KAAKqlB,UAAU7kB,KAAK,YAAaR,KAAKqlB,UAAUY,IAAI,WACpDjmB,KAAKqlB,UAAU7kB,KAAK,eAAgBR,KAAKqlB,UAAUY,IAAI,cACvDjmB,KAAKqlB,UAAUY,IAAI,YAAa,IAChCjmB,KAAK48B,QAAQ97B,GAAG,SAAUd,KAAK88B,UAAUhhB,QAAQ,UACjD9b,KAAK68B,WAAW5W,IAAI,WAAY,YAEhCjmB,KAAK48B,QAAQjjB,IAAI,SAAU3Z,KAAK88B,UAChC98B,KAAK+8B,SAAS,CAAEC,EAAGh9B,KAAKqlB,UAAU7kB,KAAK,eACvCR,KAAKqlB,UAAUY,IAAI,YAAajmB,KAAKqlB,UAAUY,IAAI,iBACnDjmB,KAAK68B,WAAW5W,IAAI,WAAY,YAGlCjmB,KAAK8J,QAAQ2B,OAAO,2BAA4BzL,KAAKk9B,kB,qCAIrD,OAAOl9B,KAAK4vB,QAAQjgB,SAAS,mB,6MChDZwtB,G,WACnB,WAAYrzB,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKkM,UAAY/L,IAAE4J,UACnB/J,KAAKo9B,aAAetzB,EAAQmQ,WAAWojB,YACvCr9B,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,SAEzB1e,KAAKwZ,OAAS,CACZ,uBAAwB,SAAC8jB,EAAI7a,GACvB,EAAK8a,OAAO9a,EAAElG,OAAQkG,IACxBA,EAAEpG,kBAGN,+EAAgF,WAC9E,EAAKkhB,UAEP,qCAAsC,WACpC,EAAKhjB,QAEP,8BAA+B,WAC7B,EAAKgjB,W,4DAKE,WACXv9B,KAAKw9B,QAAUr9B,IAAE,CACf,4BACE,uCACE,gDACA,0DACA,0DACA,0DACA,eACGH,KAAKF,QAAQ29B,mBAAqB,sBAAwB,sBAC7D,2BACCz9B,KAAKF,QAAQ29B,mBAAqB,GAAK,kDAC1C,SACF,UACA1wB,KAAK,KAAKgsB,UAAU/4B,KAAKo9B,cAE3Bp9B,KAAKw9B,QAAQ18B,GAAG,aAAa,SAACqb,GAC5B,GAAIrB,GAAInG,gBAAgBwH,EAAMI,QAAS,CACrCJ,EAAME,iBACNF,EAAMggB,kBAEN,IAAM7f,EAAU,EAAKkhB,QAAQx8B,KAAK,2BAA2BR,KAAK,UAC5Dk9B,EAAWphB,EAAQhK,SACnBlG,EAAY,EAAKF,UAAUE,YAE3BiwB,EAAc,SAAClgB,GACnB,EAAKrS,QAAQ2B,OAAO,kBAAmB,CACrCssB,EAAG5b,EAAMwhB,QAAUD,EAASz3B,KAC5B6xB,EAAG3b,EAAMmgB,SAAWoB,EAASvxB,IAAMC,IAClCkQ,GAAUH,EAAMkY,UAEnB,EAAKkJ,OAAOjhB,EAAQ,GAAIH,IAG1B,EAAKjQ,UACFpL,GAAG,YAAau7B,GAChB7G,IAAI,WAAW,SAAC/S,GACfA,EAAEpG,iBACF,EAAKnQ,UAAUyN,IAAI,YAAa0iB,GAChC,EAAKvyB,QAAQ2B,OAAO,0BAGnB6Q,EAAQ9b,KAAK,UAChB8b,EAAQ9b,KAAK,QAAS8b,EAAQpa,SAAWoa,EAAQjS,aAMvDrK,KAAKw9B,QAAQ18B,GAAG,SAAS,SAAC2hB,GACxBA,EAAEpG,iBACF,EAAKkhB,c,gCAKPv9B,KAAKw9B,QAAQ75B,W,6BAGR4Y,EAAQJ,GACb,GAAInc,KAAK8J,QAAQ8Q,aACf,OAAO,EAGT,IAAMgjB,EAAU9iB,GAAIrF,MAAM8G,GACpBshB,EAAa79B,KAAKw9B,QAAQx8B,KAAK,2BAIrC,GAFAhB,KAAK8J,QAAQ2B,OAAO,sBAAuB8Q,EAAQJ,GAE/CyhB,EAAS,CACX,IAAM7H,EAAS51B,IAAEoc,GACX7J,EAAWqjB,EAAOrjB,WAClB2G,EAAM,CACVpT,KAAMyM,EAASzM,KAAOogB,SAAS0P,EAAO9P,IAAI,cAAe,IACzD9Z,IAAKuG,EAASvG,IAAMka,SAAS0P,EAAO9P,IAAI,aAAc,KAIlD2R,EAAY,CAChBkG,EAAG/H,EAAOjC,YAAW,GACrBkJ,EAAGjH,EAAOzc,aAAY,IAGxBukB,EAAW5X,IAAI,CACb0P,QAAS,QACT1vB,KAAMoT,EAAIpT,KACVkG,IAAKkN,EAAIlN,IACT9B,MAAOutB,EAAUkG,EACjB57B,OAAQ01B,EAAUoF,IACjBx8B,KAAK,SAAUu1B,GAElB,IAAMgI,EAAe,IAAIC,MACzBD,EAAa5I,IAAMY,EAAOn1B,KAAK,OAE/B,IAAMq9B,EAAarG,EAAUkG,EAAI,IAAMlG,EAAUoF,EAAI,KAAOh9B,KAAK2B,KAAKa,MAAMoB,SAAW,KAAOm6B,EAAa1zB,MAAQ,IAAM0zB,EAAa77B,OAAS,IAC/I27B,EAAW78B,KAAK,gCAAgCuX,KAAK0lB,GACrDj+B,KAAK8J,QAAQ2B,OAAO,oBAAqB8Q,QAEzCvc,KAAKua,OAGP,OAAOqjB,I,6BASP59B,KAAK8J,QAAQ2B,OAAO,sBACpBzL,KAAKw9B,QAAQ39B,WAAW0a,Y,yMCxI5B,IACM2jB,GAAc,iFAECC,G,WACnB,WAAYr0B,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAKwZ,OAAS,CACZ,mBAAoB,SAAC8jB,EAAI7a,GAClBA,EAAE6Q,sBACL,EAAK8K,YAAY3b,IAGrB,qBAAsB,SAAC6a,EAAI7a,GACzB,EAAK4b,cAAc5b,K,4DAMvBziB,KAAKs+B,cAAgB,O,gCAIrBt+B,KAAKs+B,cAAgB,O,gCAIrB,GAAKt+B,KAAKs+B,cAAV,CAIA,IAAMC,EAAUv+B,KAAKs+B,cAAcnc,WAC7BtJ,EAAQ0lB,EAAQ1lB,MAAMqlB,IAE5B,GAAIrlB,IAAUA,EAAM,IAAMA,EAAM,IAAK,CACnC,IAAM7U,EAAO6U,EAAM,GAAK0lB,EApCR,UAoCkCA,EAC5CC,EAAUx+B,KAAKF,QAAQ2+B,0BAC3BF,EAAQhqB,QAAQ,wDAAyD,IAAI5H,MAAM,KAAK,GACtF4xB,EACE7uB,EAAOvP,IAAE,SAASE,KAAKm+B,GAAS59B,KAAK,OAAQoD,GAAM,GACrDhE,KAAK8J,QAAQhK,QAAQ4+B,iBACvBv+B,IAAEuP,GAAM9O,KAAK,SAAU,UAGzBZ,KAAKs+B,cAAcpc,WAAWxS,GAC9B1P,KAAKs+B,cAAgB,KACrBt+B,KAAK8J,QAAQ2B,OAAO,oB,oCAIVgX,GACZ,GAAIjd,EAAMwI,SAAS,CAAC9O,GAAI2b,KAAKuJ,MAAOllB,GAAI2b,KAAKwJ,OAAQ5B,EAAEwB,SAAU,CAC/D,IAAM0a,EAAY3+B,KAAK8J,QAAQ2B,OAAO,sBAAsBmzB,eAC5D5+B,KAAKs+B,cAAgBK,K,kCAIblc,GACNjd,EAAMwI,SAAS,CAAC9O,GAAI2b,KAAKuJ,MAAOllB,GAAI2b,KAAKwJ,OAAQ5B,EAAEwB,UACrDjkB,KAAKuU,e,6MC3DUsqB,G,WACnB,WAAY/0B,GAAS,Y,4FAAA,SACnB9J,KAAK+Z,MAAQjQ,EAAQmQ,WAAW4E,KAChC7e,KAAKwZ,OAAS,CACZ,oBAAqB,WACnB,EAAKO,MAAMzF,IAAIxK,EAAQ2B,OAAO,W,kEAMlC,OAAOqP,GAAI1G,WAAWpU,KAAK+Z,MAAM,S,6MCZhB+kB,G,WACnB,WAAYh1B,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKF,QAAUgK,EAAQhK,QAAQyU,SAAW,GAE1CvU,KAAKyZ,KAAO,CAACva,GAAI2b,KAAKuJ,MAAOllB,GAAI2b,KAAKwJ,MAAOnlB,GAAI2b,KAAKkkB,OAAQ7/B,GAAI2b,KAAKmkB,MAAO9/B,GAAI2b,KAAKokB,UAAW//B,GAAI2b,KAAKqkB,OAC3Gl/B,KAAKm/B,oBAAsB,KAE3Bn/B,KAAKwZ,OAAS,CACZ,mBAAoB,SAAC8jB,EAAI7a,GAClBA,EAAE6Q,sBACL,EAAK8K,YAAY3b,IAGrB,qBAAsB,SAAC6a,EAAI7a,GACzB,EAAK4b,cAAc5b,K,kEAMvB,QAASziB,KAAKF,QAAQ+Y,Q,mCAItB7Y,KAAKo/B,SAAW,O,gCAIhBp/B,KAAKo/B,SAAW,O,gCAIhB,GAAKp/B,KAAKo/B,SAAV,CAIA,IAAMn0B,EAAOjL,KACPu+B,EAAUv+B,KAAKo/B,SAASjd,WAC9BniB,KAAKF,QAAQ+Y,MAAM0lB,GAAS,SAAS1lB,GACnC,GAAIA,EAAO,CACT,IAAInJ,EAAO,GAUX,GARqB,iBAAVmJ,EACTnJ,EAAOoL,GAAIxC,WAAWO,GACbA,aAAiBwmB,OAC1B3vB,EAAOmJ,EAAM,GACJA,aAAiBymB,OAC1B5vB,EAAOmJ,IAGJnJ,EAAM,OACXzE,EAAKm0B,SAASld,WAAWxS,GACzBzE,EAAKm0B,SAAW,KAChBn0B,EAAKnB,QAAQ2B,OAAO,uB,oCAKZgX,GAGZ,GAAIziB,KAAKm/B,qBAAuB35B,EAAMwI,SAAShO,KAAKyZ,KAAMzZ,KAAKm/B,qBAC7Dn/B,KAAKm/B,oBAAsB1c,EAAEwB,YAD/B,CAKA,GAAIze,EAAMwI,SAAShO,KAAKyZ,KAAMgJ,EAAEwB,SAAU,CACxC,IAAM0a,EAAY3+B,KAAK8J,QAAQ2B,OAAO,sBAAsBmzB,eAC5D5+B,KAAKo/B,SAAWT,EAElB3+B,KAAKm/B,oBAAsB1c,EAAEwB,W,kCAGnBxB,GACNjd,EAAMwI,SAAShO,KAAKyZ,KAAMgJ,EAAEwB,UAC9BjkB,KAAKuU,e,6MC/EUgrB,G,WACnB,WAAYz1B,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKo9B,aAAetzB,EAAQmQ,WAAWojB,YACvCr9B,KAAKF,QAAUgK,EAAQhK,SAEiB,IAApCE,KAAKF,QAAQ0/B,qBAEfx/B,KAAKF,QAAQqZ,YAAcnZ,KAAK8J,QAAQiQ,MAAMnZ,KAAK,gBAAkBZ,KAAKF,QAAQqZ,aAGpFnZ,KAAKwZ,OAAS,CACZ,oCAAqC,WACnC,EAAK+jB,UAEP,8BAA+B,WAC7B,EAAKA,W,kEAMT,QAASv9B,KAAKF,QAAQqZ,c,mCAGX,WACXnZ,KAAKoZ,aAAejZ,IAAE,kCACtBH,KAAKoZ,aAAatY,GAAG,SAAS,WAC5B,EAAKgJ,QAAQ2B,OAAO,YACnBpL,KAAKL,KAAKF,QAAQqZ,aAAa4f,UAAU/4B,KAAKo9B,cAEjDp9B,KAAKu9B,W,gCAILv9B,KAAKoZ,aAAazV,W,+BAIlB,IAAM87B,GAAUz/B,KAAK8J,QAAQ2B,OAAO,yBAA2BzL,KAAK8J,QAAQ2B,OAAO,kBACnFzL,KAAKoZ,aAAasmB,OAAOD,Q,6MCrCRE,G,WACnB,WAAY71B,I,4FAAS,SACnB9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAK8J,QAAUA,EACf9J,KAAK08B,SAAW5yB,EAAQmQ,WAAW0iB,QACnC38B,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,SACzB1e,KAAK4/B,eAAiB3yB,EAAKV,aACzBvM,KAAKF,QAAQm0B,OAAOljB,EAAI9H,MAAQ,MAAQ,O,iEAI1B42B,GAChB,IAAI94B,EAAW/G,KAAK4/B,eAAeC,GACnC,OAAK7/B,KAAKF,QAAQkH,WAAcD,GAI5BgK,EAAI9H,QACNlC,EAAWA,EAASwN,QAAQ,MAAO,KAAKA,QAAQ,QAAS,MAQpD,MALPxN,EAAWA,EAASwN,QAAQ,YAAa,MACtCA,QAAQ,QAAS,KACjBA,QAAQ,cAAe,KACvBA,QAAQ,eAAgB,MAEF,KAZhB,K,6BAeJnW,GAKL,OAJK4B,KAAKF,QAAQ8e,SAAWxgB,EAAEwgB,gBACtBxgB,EAAEwgB,QAEXxgB,EAAE+Z,UAAYnY,KAAKF,QAAQqY,UACpBnY,KAAKka,GAAG4lB,OAAO1hC,K,mCAItB4B,KAAK+/B,oBACL//B,KAAKggC,yBACLhgC,KAAKigC,wBACLjgC,KAAKkgC,yBACLlgC,KAAKmgC,iBAAmB,K,uCAIjBngC,KAAKmgC,mB,sCAGEjiC,GAKd,OAJKG,OAAOkB,UAAUC,eAAe1B,KAAKkC,KAAKmgC,iBAAkBjiC,KAC/D8B,KAAKmgC,iBAAiBjiC,GAAQ6S,EAAInH,gBAAgB1L,IAChDsH,EAAMwI,SAAShO,KAAKF,QAAQsgC,qBAAsBliC,IAE/C8B,KAAKmgC,iBAAiBjiC,K,0CAGXA,GAElB,MAAiB,MADjBA,EAAOA,EAAKiK,gBACWnI,KAAK4J,gBAAgB1L,KAAoD,IAA3C6S,EAAIhJ,oBAAoBoB,QAAQjL,K,mCAG1EoC,EAAWse,EAAS8T,EAAWD,GAAW,WACrD,OAAOzyB,KAAKka,GAAGmmB,YAAY,CACzB//B,UAAW,cAAgBA,EAC3BT,SAAU,CACRG,KAAK8/B,OAAO,CACVx/B,UAAW,4BACXF,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAM9c,KAAO,sBACjD+c,QAASA,EACT/d,MAAO,SAAC4hB,GACN,IAAM8d,EAAUpgC,IAAEsiB,EAAE+d,eAChB9N,GAAaD,EACf,EAAK3oB,QAAQ2B,OAAO,eAAgB,CAClCinB,UAAW6N,EAAQ3/B,KAAK,kBACxB6xB,UAAW8N,EAAQ3/B,KAAK,oBAEjB8xB,EACT,EAAK5oB,QAAQ2B,OAAO,eAAgB,CAClCinB,UAAW6N,EAAQ3/B,KAAK,oBAEjB6xB,GACT,EAAK3oB,QAAQ2B,OAAO,eAAgB,CAClCgnB,UAAW8N,EAAQ3/B,KAAK,qBAI9Bb,SAAU,SAACwgC,GACT,IAAME,EAAeF,EAAQv/B,KAAK,sBAC9B0xB,IACF+N,EAAaxa,IAAI,mBAAoB,EAAKnmB,QAAQ4gC,YAAYhO,WAC9D6N,EAAQ3/B,KAAK,iBAAkB,EAAKd,QAAQ4gC,YAAYhO,YAEtDD,GACFgO,EAAaxa,IAAI,QAAS,EAAKnmB,QAAQ4gC,YAAYjO,WACnD8N,EAAQ3/B,KAAK,iBAAkB,EAAKd,QAAQ4gC,YAAYjO,YAExDgO,EAAaxa,IAAI,QAAS,kBAIhCjmB,KAAK8/B,OAAO,CACVx/B,UAAW,kBACXF,SAAUJ,KAAKka,GAAGymB,uBAAuB,GAAI3gC,KAAKF,SAClD8e,QAAS5e,KAAK2B,KAAK0E,MAAME,KACzB/F,KAAM,CACJk/B,OAAQ,cAGZ1/B,KAAKka,GAAG0mB,SAAS,CACfrI,OAAQ7F,EAAY,CAClB,6BACE,mCAAqC1yB,KAAK2B,KAAK0E,MAAMG,WAAa,SAClE,QACE,4HACExG,KAAK2B,KAAK0E,MAAMK,YAClB,YACF,SACA,mFACA,QACE,mIACE1G,KAAK2B,KAAK0E,MAAMS,SAClB,YACA,0FAA4F9G,KAAKF,QAAQ4gC,YAAYhO,UAAY,mCACnI,SACA,sFACF,UACA3lB,KAAK,IAAM,KACZ0lB,EAAY,CACX,6BACE,mCAAqCzyB,KAAK2B,KAAK0E,MAAMI,WAAa,SAClE,QACE,6HACEzG,KAAK2B,KAAK0E,MAAMQ,eAClB,YACF,SACA,mFACA,QACE,mIACE7G,KAAK2B,KAAK0E,MAAMS,SAClB,YACA,0FAA4F9G,KAAKF,QAAQ4gC,YAAYjO,UAAY,mCACnI,SACA,sFACF,UACA1lB,KAAK,IAAM,IACbhN,SAAU,SAAC8gC,GACTA,EAAU7/B,KAAK,gBAAgBP,MAAK,SAAC0N,EAAK3C,GACxC,IAAMs1B,EAAU3gC,IAAEqL,GAClBs1B,EAAQz/B,OAAO,EAAK6Y,GAAG6mB,QAAQ,CAC7BC,OAAQ,EAAKlhC,QAAQkhC,OACrBC,WAAY,EAAKnhC,QAAQmhC,WACzB1M,UAAWuM,EAAQtgC,KAAK,SACxB2X,UAAW,EAAKrY,QAAQqY,UACxByG,QAAS,EAAK9e,QAAQ8e,UACrBzd,aAGL,IAAI+/B,EAAe,CACjB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAEhFL,EAAU7/B,KAAK,uBAAuBP,MAAK,SAAC0N,EAAK3C,GAC/C,IAAMs1B,EAAU3gC,IAAEqL,GAClBs1B,EAAQz/B,OAAO,EAAK6Y,GAAG6mB,QAAQ,CAC7BC,OAAQE,EACRD,WAAYC,EACZ3M,UAAWuM,EAAQtgC,KAAK,SACxB2X,UAAW,EAAKrY,QAAQqY,UACxByG,QAAS,EAAK9e,QAAQ8e,UACrBzd,aAEL0/B,EAAU7/B,KAAK,qBAAqBP,MAAK,SAAC0N,EAAK3C,GAC7CrL,IAAEqL,GAAM21B,QAAO,WACb,IAAMC,EAAQP,EAAU7/B,KAAK,IAAMb,IAAEH,MAAMQ,KAAK,UAAUQ,KAAK,mBAAmB8d,QAC5EzY,EAAQrG,KAAKpB,MAAMkO,cACzBs0B,EAAMnb,IAAI,mBAAoB5f,GAC3BzF,KAAK,aAAcyF,GACnBzF,KAAK,aAAcyF,GACnBzF,KAAK,sBAAuByF,GAC/B+6B,EAAMvgC,eAIZA,MAAO,SAACsb,GACNA,EAAMggB,kBAEN,IAAMl8B,EAAUE,IAAE,IAAMG,GAAWU,KAAK,uBAClCu/B,EAAUpgC,IAAEgc,EAAMI,QAClBgY,EAAYgM,EAAQ//B,KAAK,SACzB5B,EAAQ2hC,EAAQ3/B,KAAK,cAE3B,GAAkB,gBAAd2zB,EAA6B,CAC/B,IAAM8M,EAAUphC,EAAQe,KAAK,IAAMpC,GAC7B0iC,EAAWnhC,IAAEF,EAAQe,KAAK,IAAMqgC,EAAQ7gC,KAAK,UAAUQ,KAAK,mBAAmB,IAG/EogC,EAAQE,EAAStgC,KAAK,mBAAmB6M,OAAOolB,SAGhD5sB,EAAQg7B,EAAQ/sB,MACtB8sB,EAAMnb,IAAI,mBAAoB5f,GAC3BzF,KAAK,aAAcyF,GACnBzF,KAAK,aAAcyF,GACnBzF,KAAK,sBAAuByF,GAC/Bi7B,EAASC,QAAQH,GACjBC,EAAQxgC,YACH,CACL,GAAI2E,EAAMwI,SAAS,CAAC,YAAa,aAAcumB,GAAY,CACzD,IAAMr1B,EAAoB,cAAdq1B,EAA4B,mBAAqB,QACvDiN,EAASjB,EAAQ/jB,QAAQ,eAAexb,KAAK,sBAC7CygC,EAAiBlB,EAAQ/jB,QAAQ,eAAexb,KAAK,8BAE3DwgC,EAAOvb,IAAI/mB,EAAKN,GAChB6iC,EAAe7gC,KAAK,QAAU2zB,EAAW31B,GAE3C,EAAKkL,QAAQ2B,OAAO,UAAY8oB,EAAW31B,UAKlDuC,W,0CAGe,WAClBnB,KAAK8J,QAAQ4E,KAAK,gBAAgB,WAChC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAChB,EAAKzmB,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM+iB,OAAQ,EAAK5hC,SAE/C8e,QAAS,EAAKjd,KAAKoD,MAAMA,MACzBvE,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAG0mB,SAAS,CACftgC,UAAW,iBACXi4B,MAAO,EAAKz4B,QAAQ6hC,UACpBC,MAAO,EAAKjgC,KAAKoD,MAAMA,MACvB88B,SAAU,SAACr2B,GAEW,iBAATA,IACTA,EAAO,CACLuvB,IAAKvvB,EACLo2B,MAAQvjC,OAAOkB,UAAUC,eAAe1B,KAAK,EAAK6D,KAAKoD,MAAOyG,GAAQ,EAAK7J,KAAKoD,MAAMyG,GAAQA,IAIlG,IAAMuvB,EAAMvvB,EAAKuvB,IACX6G,EAAQp2B,EAAKo2B,MAInB,MAAO,IAAM7G,GAHCvvB,EAAKzG,MAAQ,WAAayG,EAAKzG,MAAQ,KAAO,KAC1CyG,EAAKlL,UAAY,WAAakL,EAAKlL,UAAY,IAAM,IAEhC,IAAMshC,EAAQ,KAAO7G,EAAM,KAEpEl6B,MAAO,EAAKiJ,QAAQsS,oBAAoB,0BAEzCjb,YAGL,IAtCkB,eAsCT2gC,EAAcC,GACrB,IAAMv2B,EAAO,EAAK1L,QAAQ6hC,UAAUG,GAEpC,EAAKh4B,QAAQ4E,KAAK,gBAAkBlD,GAAM,WACxC,OAAO,EAAKs0B,OAAO,CACjBx/B,UAAW,kBAAoBkL,EAC/BpL,SAAU,oBAAsBoL,EAAO,KAAOA,EAAKsB,cAAgB,SACnE8R,QAAS,EAAKjd,KAAKoD,MAAMyG,GACzB3K,MAAO,EAAKiJ,QAAQsS,oBAAoB,wBACvCjb,aATE2gC,EAAW,EAAGC,EAAW/hC,KAAKF,QAAQ6hC,UAAUvgC,OAAQ0gC,EAAWC,EAAUD,IAAY,EAAzFA,GAaT9hC,KAAK8J,QAAQ4E,KAAK,eAAe,WAC/B,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,gBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM7c,MAC1C8c,QAAS,EAAKjd,KAAKE,KAAKC,KAAO,EAAKkgC,kBAAkB,QACtDnhC,MAAO,EAAKiJ,QAAQm4B,kCAAkC,iBACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,iBAAiB,WACjC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM5c,QAC1C6c,QAAS,EAAKjd,KAAKE,KAAKE,OAAS,EAAKigC,kBAAkB,UACxDnhC,MAAO,EAAKiJ,QAAQm4B,kCAAkC,mBACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,qBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM3c,WAC1C4c,QAAS,EAAKjd,KAAKE,KAAKG,UAAY,EAAKggC,kBAAkB,aAC3DnhC,MAAO,EAAKiJ,QAAQm4B,kCAAkC,sBACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,gBAAgB,WAChC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMujB,QAC1CtjB,QAAS,EAAKjd,KAAKE,KAAKI,MAAQ,EAAK+/B,kBAAkB,gBACvDnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,yBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,wBAAwB,WACxC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,yBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMxc,eAC1Cyc,QAAS,EAAKjd,KAAKE,KAAKM,cAAgB,EAAK6/B,kBAAkB,iBAC/DnhC,MAAO,EAAKiJ,QAAQm4B,kCAAkC,0BACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,sBAAsB,WACtC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,uBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMtc,aAC1Cuc,QAAS,EAAKjd,KAAKE,KAAKQ,YACxBxB,MAAO,EAAKiJ,QAAQm4B,kCAAkC,wBACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,qBACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMvc,WAC1Cwc,QAAS,EAAKjd,KAAKE,KAAKO,UACxBvB,MAAO,EAAKiJ,QAAQm4B,kCAAkC,sBACrD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,mBAAmB,WACnC,IAAMwX,EAAY,EAAKpc,QAAQ2B,OAAO,uBActC,OAZI,EAAK3L,QAAQqiC,iBAEfhiC,IAAEM,KAAKylB,EAAU,eAAevZ,MAAM,MAAM,SAACwB,EAAKi0B,GAChDA,EAAWA,EAASnpB,OAAO1E,QAAQ,SAAU,IACzC,EAAK8tB,oBAAoBD,KACuB,IAA9C,EAAKtiC,QAAQwiC,UAAUn5B,QAAQi5B,IACjC,EAAKtiC,QAAQwiC,UAAUnzB,KAAKizB,MAM7B,EAAKloB,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAChB,8CAA+C,EAAK7gC,SAEtD8e,QAAS,EAAKjd,KAAKE,KAAK3D,KACxBsC,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAGqoB,cAAc,CACpBjiC,UAAW,oBACXkiC,eAAgB,EAAK1iC,QAAQ6e,MAAM8jB,UACnClK,MAAO,EAAKz4B,QAAQwiC,UAAUnrB,OAAO,EAAKvN,gBAAgBzK,KAAK,IAC/DyiC,MAAO,EAAKjgC,KAAKE,KAAK3D,KACtB2jC,SAAU,SAACr2B,GACT,MAAO,6BAA+BuF,EAAI/I,cAAcwD,GAAQ,KAAOA,EAAO,WAEhF3K,MAAO,EAAKiJ,QAAQm4B,kCAAkC,uBAEvD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,mBAAmB,WACnC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAAuB,8CAA+C,EAAK7gC,SAC7F8e,QAAS,EAAKjd,KAAKE,KAAKS,KACxB9B,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAGqoB,cAAc,CACpBjiC,UAAW,oBACXkiC,eAAgB,EAAK1iC,QAAQ6e,MAAM8jB,UACnClK,MAAO,EAAKz4B,QAAQ4iC,UACpBd,MAAO,EAAKjgC,KAAKE,KAAKS,KACtBzB,MAAO,EAAKiJ,QAAQm4B,kCAAkC,uBAEvD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,uBAAuB,WACvC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAAuB,kDAAmD,EAAK7gC,SACjG8e,QAAS,EAAKjd,KAAKE,KAAKU,SACxB/B,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAGqoB,cAAc,CACpBjiC,UAAW,wBACXkiC,eAAgB,EAAK1iC,QAAQ6e,MAAM8jB,UACnClK,MAAO,EAAKz4B,QAAQ6iC,cACpBf,MAAO,EAAKjgC,KAAKE,KAAKU,SACtB1B,MAAO,EAAKiJ,QAAQm4B,kCAAkC,2BAEvD9gC,YAGLnB,KAAK8J,QAAQ4E,KAAK,gBAAgB,WAChC,OAAO,EAAKk0B,aAAa,iBAAkB,EAAKjhC,KAAK0E,MAAMC,QAAQ,GAAM,MAG3EtG,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKk0B,aAAa,kBAAmB,EAAKjhC,KAAK0E,MAAMI,YAAY,GAAO,MAGjFzG,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKk0B,aAAa,kBAAmB,EAAKjhC,KAAK0E,MAAMG,YAAY,GAAM,MAGhFxG,KAAK8J,QAAQ4E,KAAK,aAAa,WAC7B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMkkB,eAC1CjkB,QAAS,EAAKjd,KAAK6D,MAAMC,UAAY,EAAKu8B,kBAAkB,uBAC5DnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,gCACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,aAAa,WAC7B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMmkB,aAC1ClkB,QAAS,EAAKjd,KAAK6D,MAAME,QAAU,EAAKs8B,kBAAkB,qBAC1DnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,8BACvCjb,YAGL,IAAM4hC,EAAc/iC,KAAK8/B,OAAO,CAC9B1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAMqkB,WAC1CpkB,QAAS5e,KAAK2B,KAAKmE,UAAUG,KAAOjG,KAAKgiC,kBAAkB,eAC3DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,wBAGpC6mB,EAAgBjjC,KAAK8/B,OAAO,CAChC1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAMukB,aAC1CtkB,QAAS5e,KAAK2B,KAAKmE,UAAUI,OAASlG,KAAKgiC,kBAAkB,iBAC7DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,0BAGpC+mB,EAAenjC,KAAK8/B,OAAO,CAC/B1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAMykB,YAC1CxkB,QAAS5e,KAAK2B,KAAKmE,UAAUK,MAAQnG,KAAKgiC,kBAAkB,gBAC5DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,yBAGpCinB,EAAcrjC,KAAK8/B,OAAO,CAC9B1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAM2kB,cAC1C1kB,QAAS5e,KAAK2B,KAAKmE,UAAUM,QAAUpG,KAAKgiC,kBAAkB,eAC9DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,wBAGpCrW,EAAU/F,KAAK8/B,OAAO,CAC1B1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAM5Y,SAC1C6Y,QAAS5e,KAAK2B,KAAKmE,UAAUC,QAAU/F,KAAKgiC,kBAAkB,WAC9DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,oBAGpCpW,EAAShG,KAAK8/B,OAAO,CACzB1/B,SAAUJ,KAAKka,GAAGomB,KAAKtgC,KAAKF,QAAQ6e,MAAM3Y,QAC1C4Y,QAAS5e,KAAK2B,KAAKmE,UAAUE,OAAShG,KAAKgiC,kBAAkB,UAC7DnhC,MAAOb,KAAK8J,QAAQsS,oBAAoB,mBAG1Cpc,KAAK8J,QAAQ4E,KAAK,qBAAsBzB,EAAKxB,OAAOs3B,EAAa,WACjE/iC,KAAK8J,QAAQ4E,KAAK,uBAAwBzB,EAAKxB,OAAOw3B,EAAe,WACrEjjC,KAAK8J,QAAQ4E,KAAK,sBAAuBzB,EAAKxB,OAAO03B,EAAc,WACnEnjC,KAAK8J,QAAQ4E,KAAK,qBAAsBzB,EAAKxB,OAAO43B,EAAa,WACjErjC,KAAK8J,QAAQ4E,KAAK,iBAAkBzB,EAAKxB,OAAO1F,EAAS,WACzD/F,KAAK8J,QAAQ4E,KAAK,gBAAiBzB,EAAKxB,OAAOzF,EAAQ,WAEvDhG,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAAuB,EAAKzmB,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMqkB,WAAY,EAAKljC,SAC1F8e,QAAS,EAAKjd,KAAKmE,UAAUA,UAC7BtF,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAG0mB,SAAS,CACf,EAAK1mB,GAAGmmB,YAAY,CAClB//B,UAAW,aACXT,SAAU,CAACkjC,EAAaE,EAAeE,EAAcE,KAEvD,EAAKnpB,GAAGmmB,YAAY,CAClB//B,UAAW,YACXT,SAAU,CAACkG,EAASC,SAGvB7E,YAGLnB,KAAK8J,QAAQ4E,KAAK,iBAAiB,WACjC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAAuB,EAAKzmB,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM4kB,YAAa,EAAKzjC,SAC3F8e,QAAS,EAAKjd,KAAKE,KAAKK,OACxB1B,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAGqoB,cAAc,CACpBhK,MAAO,EAAKz4B,QAAQ0jC,YACpBhB,eAAgB,EAAK1iC,QAAQ6e,MAAM8jB,UACnCniC,UAAW,uBACXshC,MAAO,EAAKjgC,KAAKE,KAAKK,OACtBrB,MAAO,EAAKiJ,QAAQsS,oBAAoB,yBAEzCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,gBAAgB,WAChC,OAAO,EAAKwL,GAAGmmB,YAAY,CACzB,EAAKP,OAAO,CACVx/B,UAAW,kBACXF,SAAU,EAAK8Z,GAAGymB,uBAAuB,EAAKzmB,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMra,OAAQ,EAAKxE,SACtF8e,QAAS,EAAKjd,KAAK2C,MAAMA,MACzB9D,KAAM,CACJk/B,OAAQ,cAGZ,EAAKxlB,GAAG0mB,SAAS,CACfgB,MAAO,EAAKjgC,KAAK2C,MAAMA,MACvBhE,UAAW,aACXi4B,MAAO,CACL,sCACE,mGACA,wDACA,0DACF,SACA,mDACAxrB,KAAK,OAER,CACDhN,SAAU,SAACG,GACQA,EAAMc,KAAK,uCACnBilB,IAAI,CACX5b,MAAO,EAAKvK,QAAQ2jC,mBAAmBC,IAAM,KAC7CxhC,OAAQ,EAAKpC,QAAQ2jC,mBAAmB7Y,IAAM,OAC7C+Y,UAAU,EAAK75B,QAAQsS,oBAAoB,uBAC3Ctb,GAAG,YAAa,EAAK8iC,iBAAiBzkC,KAAK,OAE/CgC,YAGLnB,KAAK8J,QAAQ4E,KAAK,eAAe,WAC/B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM3a,MAC1C4a,QAAS,EAAKjd,KAAKqC,KAAKA,KAAO,EAAKg+B,kBAAkB,mBACtDnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,qBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,kBAAkB,WAClC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMklB,SAC1CjlB,QAAS,EAAKjd,KAAKa,MAAMA,MACzB3B,MAAO,EAAKiJ,QAAQsS,oBAAoB,sBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,gBAAgB,WAChC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM9a,OAC1C+a,QAAS,EAAKjd,KAAKkC,MAAMA,MACzBhD,MAAO,EAAKiJ,QAAQsS,oBAAoB,sBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,aAAa,WAC7B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMmlB,OAC1CllB,QAAS,EAAKjd,KAAKmD,GAAGrC,OAAS,EAAKu/B,kBAAkB,wBACtDnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iCACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,oCACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMolB,WAC1CnlB,QAAS,EAAKjd,KAAK7B,QAAQ8F,WAC3B/E,MAAO,EAAKiJ,QAAQsS,oBAAoB,uBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,mBAAmB,WACnC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,kCACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM9D,MAC1C+D,QAAS,EAAKjd,KAAK7B,QAAQ+F,SAC3BhF,MAAO,EAAKiJ,QAAQsS,oBAAoB,qBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,eAAe,WAC/B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMlX,MAC1CmX,QAAS,EAAKjd,KAAK4F,QAAQE,KAAO,EAAKu6B,kBAAkB,QACzDnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,eAAe,WAC/B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMnX,MAC1CoX,QAAS,EAAKjd,KAAK4F,QAAQC,KAAO,EAAKw6B,kBAAkB,QACzDnhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,eAAe,WAC/B,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMqlB,UAC1CplB,QAAS,EAAKjd,KAAK7B,QAAQ6F,KAC3B9E,MAAO,EAAKiJ,QAAQsS,oBAAoB,qBACvCjb,c,+CAWkB,WAEvBnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,6CACVwe,QAAS,EAAKjd,KAAKa,MAAME,WACzB7B,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,OACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,4CACVwe,QAAS,EAAKjd,KAAKa,MAAMG,WACzB9B,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,SACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,wBAAwB,WACxC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,4CACVwe,QAAS,EAAKjd,KAAKa,MAAMI,cACzB/B,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,UACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMslB,UAC1CrlB,QAAS,EAAKjd,KAAKa,MAAMK,WACzBhC,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,OACxDjb,YAILnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM7b,WAC1C8b,QAAS,EAAKjd,KAAKa,MAAMM,UACzBjC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iBAAkB,UACzDjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM5b,YAC1C6b,QAAS,EAAKjd,KAAKa,MAAMO,WACzBlC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iBAAkB,WACzDjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMslB,UAC1CrlB,QAAS,EAAKjd,KAAKa,MAAMQ,UACzBnC,MAAO,EAAKiJ,QAAQsS,oBAAoB,iBAAkB,UACzDjb,YAILnB,KAAK8J,QAAQ4E,KAAK,sBAAsB,WACtC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMulB,OAC1CtlB,QAAS,EAAKjd,KAAKa,MAAMmB,OACzB9C,MAAO,EAAKiJ,QAAQsS,oBAAoB,wBACvCjb,c,8CAIiB,WACtBnB,KAAK8J,QAAQ4E,KAAK,yBAAyB,WACzC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM3a,MAC1C4a,QAAS,EAAKjd,KAAKqC,KAAKE,KACxBrD,MAAO,EAAKiJ,QAAQsS,oBAAoB,qBACvCjb,YAGLnB,KAAK8J,QAAQ4E,KAAK,iBAAiB,WACjC,OAAO,EAAKoxB,OAAO,CACjB1/B,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM1a,QAC1C2a,QAAS,EAAKjd,KAAKqC,KAAKC,OACxBpD,MAAO,EAAKiJ,QAAQsS,oBAAoB,mBACvCjb,c,+CAUkB,WACvBnB,KAAK8J,QAAQ4E,KAAK,mBAAmB,WACnC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMwlB,UAC1CvlB,QAAS,EAAKjd,KAAK2C,MAAMC,YACzB1D,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,SACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMylB,UAC1CxlB,QAAS,EAAKjd,KAAK2C,MAAME,YACzB3D,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,YACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,qBAAqB,WACrC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM0lB,WAC1CzlB,QAAS,EAAKjd,KAAK2C,MAAMG,WACzB5D,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,UACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,sBAAsB,WACtC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM2lB,UAC1C1lB,QAAS,EAAKjd,KAAK2C,MAAMI,YACzB7D,MAAO,EAAKiJ,QAAQsS,oBAAoB,gBAAiB,WACxDjb,YAELnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM4lB,WAC1C3lB,QAAS,EAAKjd,KAAK2C,MAAMK,OACzB9D,MAAO,EAAKiJ,QAAQsS,oBAAoB,sBACvCjb,YAELnB,KAAK8J,QAAQ4E,KAAK,oBAAoB,WACpC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAM6lB,WAC1C5lB,QAAS,EAAKjd,KAAK2C,MAAMM,OACzB/D,MAAO,EAAKiJ,QAAQsS,oBAAoB,sBACvCjb,YAELnB,KAAK8J,QAAQ4E,KAAK,sBAAsB,WACtC,OAAO,EAAKoxB,OAAO,CACjBx/B,UAAW,SACXF,SAAU,EAAK8Z,GAAGomB,KAAK,EAAKxgC,QAAQ6e,MAAMulB,OAC1CtlB,QAAS,EAAKjd,KAAK2C,MAAMO,SACzBhE,MAAO,EAAKiJ,QAAQsS,oBAAoB,wBACvCjb,c,4BAIDJ,EAAY0jC,GAChB,IAAK,IAAIC,EAAW,EAAGC,EAAWF,EAAOrjC,OAAQsjC,EAAWC,EAAUD,IAAY,CAShF,IARA,IAAME,EAAQH,EAAOC,GACfG,EAAYtjC,MAAMC,QAAQojC,GAASA,EAAM,GAAKA,EAC9C1pB,EAAU3Z,MAAMC,QAAQojC,GAA4B,IAAjBA,EAAMxjC,OAAgB,CAACwjC,EAAM,IAAMA,EAAM,GAAM,CAACA,GAEnFE,EAAS9kC,KAAKka,GAAGmmB,YAAY,CACjC//B,UAAW,QAAUukC,IACpB1jC,SAEMgN,EAAM,EAAGG,EAAM4M,EAAQ9Z,OAAQ+M,EAAMG,EAAKH,IAAO,CACxD,IAAM42B,EAAM/kC,KAAK8J,QAAQ4E,KAAK,UAAYwM,EAAQ/M,IAC9C42B,GACFD,EAAOzjC,OAAsB,mBAAR0jC,EAAqBA,EAAI/kC,KAAK8J,SAAWi7B,GAGlED,EAAOlP,SAAS70B,M,yCAODA,GAAY,WACvB4lB,EAAQ5lB,GAAcf,KAAK08B,SAE3BxW,EAAYlmB,KAAK8J,QAAQ2B,OAAO,uBAsBtC,GArBAzL,KAAKglC,gBAAgBre,EAAO,CAC1B,iBAAkB,WAChB,MAAkC,SAA3BT,EAAU,cAEnB,mBAAoB,WAClB,MAAoC,WAA7BA,EAAU,gBAEnB,sBAAuB,WACrB,MAAuC,cAAhCA,EAAU,mBAEnB,sBAAuB,WACrB,MAAuC,cAAhCA,EAAU,mBAEnB,wBAAyB,WACvB,MAAyC,gBAAlCA,EAAU,qBAEnB,0BAA2B,WACzB,MAA2C,kBAApCA,EAAU,yBAIjBA,EAAU,eAAgB,CAC5B,IAAMoc,EAAYpc,EAAU,eAAevZ,MAAM,KAAKC,KAAI,SAAC1O,GACzD,OAAOA,EAAKqW,QAAQ,UAAW,IAC5BA,QAAQ,OAAQ,IAChBA,QAAQ,OAAQ,OAEftM,EAAWzC,EAAMxE,KAAKshC,EAAWtiC,KAAK4J,gBAAgBzK,KAAKa,OAEjE2mB,EAAM3lB,KAAK,wBAAwBP,MAAK,SAAC0N,EAAK3C,GAC5C,IAAMy5B,EAAQ9kC,IAAEqL,GAEV05B,EAAaD,EAAMzkC,KAAK,SAAW,IAASyH,EAAW,GAC7Dg9B,EAAM9R,YAAY,UAAW+R,MAE/Bve,EAAM3lB,KAAK,0BAA0BuX,KAAKtQ,GAAUge,IAAI,cAAehe,GAGzE,GAAIie,EAAU,aAAc,CAC1B,IAAME,EAAWF,EAAU,aAC3BS,EAAM3lB,KAAK,wBAAwBP,MAAK,SAAC0N,EAAK3C,GAC5C,IAAMy5B,EAAQ9kC,IAAEqL,GAEV05B,EAAaD,EAAMzkC,KAAK,SAAW,IAAS4lB,EAAW,GAC7D6e,EAAM9R,YAAY,UAAW+R,MAE/Bve,EAAM3lB,KAAK,0BAA0BuX,KAAK6N,GAE1C,IAAM2K,EAAe7K,EAAU,kBAC/BS,EAAM3lB,KAAK,4BAA4BP,MAAK,SAAC0N,EAAK3C,GAChD,IAAMy5B,EAAQ9kC,IAAEqL,GACV05B,EAAaD,EAAMzkC,KAAK,SAAW,IAASuwB,EAAe,GACjEkU,EAAM9R,YAAY,UAAW+R,MAE/Bve,EAAM3lB,KAAK,8BAA8BuX,KAAKwY,GAGhD,GAAI7K,EAAU,eAAgB,CAC5B,IAAMc,EAAad,EAAU,eAC7BS,EAAM3lB,KAAK,8BAA8BP,MAAK,SAAC0N,EAAK3C,GAElD,IAAM05B,EAAa/kC,IAAEqL,GAAMhL,KAAK,SAAW,IAASwmB,EAAa,GACjE,EAAK1mB,UAAY4kC,EAAY,UAAY,S,sCAK/BnkC,EAAYokC,GAAO,WACjChlC,IAAEM,KAAK0kC,GAAO,SAACC,EAAU/2B,GACvB,EAAK6L,GAAGmrB,gBAAgBtkC,EAAWC,KAAKokC,GAAW/2B,U,uCAItC8N,GACf,IAOImpB,EANEjE,EAAUlhC,IAAEgc,EAAMI,OAAOjL,YACzBi0B,EAAoBlE,EAAQjzB,OAC5Bo3B,EAAWnE,EAAQrgC,KAAK,uCACxBykC,EAAepE,EAAQrgC,KAAK,sCAC5B0kC,EAAiBrE,EAAQrgC,KAAK,wCAIpC,QAAsBya,IAAlBU,EAAMwpB,QAAuB,CAC/B,IAAMC,EAAazlC,IAAEgc,EAAMI,QAAQjK,SACnCgzB,EAAY,CACVvN,EAAG5b,EAAM0pB,MAAQD,EAAW3/B,KAC5B6xB,EAAG3b,EAAM2pB,MAAQF,EAAWz5B,UAG9Bm5B,EAAY,CACVvN,EAAG5b,EAAMwpB,QACT7N,EAAG3b,EAAM4pB,SAIb,IAAMnT,EACDtS,KAAK0lB,KAAKV,EAAUvN,EAvBP,KAuByB,EADrCnF,EAEDtS,KAAK0lB,KAAKV,EAAUxN,EAxBP,KAwByB,EAG3C2N,EAAaxf,IAAI,CAAE5b,MAAOuoB,EAAQ,KAAM1wB,OAAQ0wB,EAAQ,OACxD4S,EAAShlC,KAAK,QAASoyB,EAAQ,IAAMA,GAEjCA,EAAQ,GAAKA,EAAQ5yB,KAAKF,QAAQ2jC,mBAAmBC,KACvDgC,EAAezf,IAAI,CAAE5b,MAAOuoB,EAAQ,EAAI,OAGtCA,EAAQ,GAAKA,EAAQ5yB,KAAKF,QAAQ2jC,mBAAmB7Y,KACvD8a,EAAezf,IAAI,CAAE/jB,OAAQ0wB,EAAQ,EAAI,OAG3C2S,EAAkBllC,KAAKuyB,EAAQ,MAAQA,Q,6MC16BtBqT,G,WACnB,WAAYn8B,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAK48B,QAAUz8B,IAAE5C,QACjByC,KAAKkM,UAAY/L,IAAE4J,UAEnB/J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAK+Z,MAAQjQ,EAAQmQ,WAAW4E,KAChC7e,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAK08B,SAAW5yB,EAAQmQ,WAAW0iB,QACnC38B,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAKg8B,WAAalyB,EAAQmQ,WAAWgiB,UACrCj8B,KAAKF,QAAUgK,EAAQhK,QAEvBE,KAAKkmC,aAAc,EACnBlmC,KAAKmmC,aAAenmC,KAAKmmC,aAAahnC,KAAKa,M,kEAI3C,OAAQA,KAAKF,QAAQ8zB,U,mCAGV,WACX5zB,KAAKF,QAAQ68B,QAAU38B,KAAKF,QAAQ68B,SAAW,GAE1C38B,KAAKF,QAAQ68B,QAAQv7B,OAGxBpB,KAAK8J,QAAQ2B,OAAO,gBAAiBzL,KAAK08B,SAAU18B,KAAKF,QAAQ68B,SAFjE38B,KAAK08B,SAASniB,OAKZva,KAAKF,QAAQsmC,kBACfpmC,KAAK08B,SAAS9G,SAAS51B,KAAKF,QAAQsmC,kBAGtCpmC,KAAKqmC,iBAAgB,GAErBrmC,KAAK+Z,MAAMjZ,GAAG,yDAAyD,WACrE,EAAKgJ,QAAQ2B,OAAO,iCAGtBzL,KAAK8J,QAAQ2B,OAAO,8BAChBzL,KAAKF,QAAQwmC,kBACftmC,KAAK48B,QAAQ97B,GAAG,gBAAiBd,KAAKmmC,gB,gCAKxCnmC,KAAK08B,SAAS78B,WAAW8D,SAErB3D,KAAKF,QAAQwmC,kBACftmC,KAAK48B,QAAQjjB,IAAI,gBAAiB3Z,KAAKmmC,gB,qCAKzC,GAAInmC,KAAK4vB,QAAQjgB,SAAS,cACxB,OAAO,EAGT,IAAM42B,EAAevmC,KAAK4vB,QAAQtW,cAC5BktB,EAAcxmC,KAAK4vB,QAAQvlB,QAC3Bo8B,EAAgBzmC,KAAK08B,SAASx6B,SAC9BwkC,EAAkB1mC,KAAKg8B,WAAW95B,SAGpCykC,EAAiB,EACjB3mC,KAAKF,QAAQ8mC,iBACfD,EAAiBxmC,IAAEH,KAAKF,QAAQ8mC,gBAAgBttB,eAGlD,IAAMutB,EAAgB7mC,KAAKkM,UAAUE,YAC/B06B,EAAkB9mC,KAAK4vB,QAAQtd,SAASnG,IAExC46B,EAAiBD,EAAkBH,EACnCK,EAFqBF,EAAkBP,EAEOI,EAAiBF,EAAgBC,GAEhF1mC,KAAKkmC,aACPW,EAAgBE,GAAoBF,EAAgBG,EAAyBP,GAC9EzmC,KAAKkmC,aAAc,EACnBlmC,KAAKqlB,UAAUY,IAAI,CACjBghB,UAAWjnC,KAAK08B,SAASpjB,gBAE3BtZ,KAAK08B,SAASzW,IAAI,CAChBvT,SAAU,QACVvG,IAAKw6B,EACLt8B,MAAOm8B,EACPU,OAAQ,OAEDlnC,KAAKkmC,cACZW,EAAgBE,GAAoBF,EAAgBG,KACtDhnC,KAAKkmC,aAAc,EACnBlmC,KAAK08B,SAASzW,IAAI,CAChBvT,SAAU,WACVvG,IAAK,EACL9B,MAAO,OACP68B,OAAQ,SAEVlnC,KAAKqlB,UAAUY,IAAI,CACjBghB,UAAW,Q,sCAKD/J,GACVA,EACFl9B,KAAK08B,SAAS3D,UAAU/4B,KAAK4vB,SAEzB5vB,KAAKF,QAAQsmC,kBACfpmC,KAAK08B,SAAS9G,SAAS51B,KAAKF,QAAQsmC,kBAGpCpmC,KAAKF,QAAQwmC,kBACftmC,KAAKmmC,iB,uCAIQjJ,GACfl9B,KAAKka,GAAGmrB,gBAAgBrlC,KAAK08B,SAAS17B,KAAK,mBAAoBk8B,GAE/Dl9B,KAAKqmC,gBAAgBnJ,K,qCAGR7D,GACbr5B,KAAKka,GAAGmrB,gBAAgBrlC,KAAK08B,SAAS17B,KAAK,iBAAkBq4B,GACzDA,EACFr5B,KAAKu6B,aAELv6B,KAAKw6B,a,+BAIA2M,GACP,IAAIC,EAAOpnC,KAAK08B,SAAS17B,KAAK,UACzBmmC,IACHC,EAAOA,EAAKl8B,IAAI,wBAElBlL,KAAKka,GAAGmtB,UAAUD,GAAM,K,iCAGfD,GACT,IAAIC,EAAOpnC,KAAK08B,SAAS17B,KAAK,UACzBmmC,IACHC,EAAOA,EAAKl8B,IAAI,wBAElBlL,KAAKka,GAAGmtB,UAAUD,GAAM,Q,6MC9IPE,G,WACnB,WAAYx9B,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKunC,MAAQpnC,IAAE4J,SAASoT,MACxBnd,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,SAEzB5U,EAAQ4E,KAAK,uBAAwB1O,KAAKF,QAAQ4e,SAAS/Y,KAAK,oB,4DAIhE,IAAM5E,EAAaf,KAAKF,QAAQ0nC,cAAgBxnC,KAAKunC,MAAQvnC,KAAKF,QAAQqY,UACpEgF,EAAO,CACX,2CADW,2CAE2Bnd,KAAKF,QAAQiM,GAFxC,qCAEuE/L,KAAK2B,KAAKqC,KAAKG,cAFtF,sDAG0BnE,KAAKF,QAAQiM,GAHvC,oFAIX,SACA,2CALW,2CAM2B/L,KAAKF,QAAQiM,GANxC,qCAMuE/L,KAAK2B,KAAKqC,KAAKN,IANtF,sDAO0B1D,KAAKF,QAAQiM,GAPvC,mGAQX,SACC/L,KAAKF,QAAQ2nC,kBAMV,GALAtnC,IAAE,UAAUkB,OAAOrB,KAAKka,GAAGwtB,SAAS,CACpCpnC,UAAW,iCACXiY,KAAMvY,KAAK2B,KAAKqC,KAAKI,gBACrBujC,SAAS,IACRxmC,UAAUd,OAEfF,IAAE,UAAUkB,OAAOrB,KAAKka,GAAGwtB,SAAS,CAClCpnC,UAAW,2BACXiY,KAAMvY,KAAK2B,KAAKqC,KAAKK,YACrBsjC,SAAS,IACRxmC,UAAUd,QACb0M,KAAK,IAGD66B,EAAS,wCAAH,OADQ,0DACR,oBAAkE5nC,KAAK2B,KAAKqC,KAAKvB,OAAjF,eAEZzC,KAAK6nC,QAAU7nC,KAAKka,GAAG4tB,OAAO,CAC5BxnC,UAAW,cACXshC,MAAO5hC,KAAK2B,KAAKqC,KAAKvB,OACtBslC,KAAM/nC,KAAKF,QAAQkoC,YACnB7qB,KAAMA,EACNyqB,OAAQA,IACPzmC,SAASy0B,SAAS70B,K,gCAIrBf,KAAKka,GAAG+tB,WAAWjoC,KAAK6nC,SACxB7nC,KAAK6nC,QAAQlkC,W,mCAGFukC,EAAQd,GACnBc,EAAOpnC,GAAG,YAAY,SAACqb,GACjBA,EAAM8H,UAAY/kB,GAAI2b,KAAKuJ,QAC7BjI,EAAME,iBACN+qB,EAAKtrB,QAAQ,e,oCAQLqsB,EAAUC,EAAWC,GACjCroC,KAAKka,GAAGmtB,UAAUc,EAAUC,EAAU9zB,OAAS+zB,EAAS/zB,S,qCAS3Csd,GAAU,WACvB,OAAOzxB,IAAEk1B,UAAS,SAACC,GACjB,IAAM8S,EAAY,EAAKP,QAAQ7mC,KAAK,mBAC9BqnC,EAAW,EAAKR,QAAQ7mC,KAAK,kBAC7BmnC,EAAW,EAAKN,QAAQ7mC,KAAK,kBAC7BsnC,EAAmB,EAAKT,QAC3B7mC,KAAK,wDACFunC,EAAe,EAAKV,QACvB7mC,KAAK,kDAER,EAAKkZ,GAAGsuB,cAAc,EAAKX,SAAS,WAClC,EAAK/9B,QAAQyR,aAAa,iBAGrBqW,EAASluB,KAAOuJ,EAAKS,WAAWkkB,EAASrZ,QAC5CqZ,EAASluB,IAAMkuB,EAASrZ,MAG1B6vB,EAAUtnC,GAAG,8BAA8B,WAGzC8wB,EAASrZ,KAAO6vB,EAAU9zB,MAC1B,EAAKm0B,cAAcN,EAAUC,EAAWC,MACvC/zB,IAAIsd,EAASrZ,MAEhB8vB,EAASvnC,GAAG,8BAA8B,WAGnC8wB,EAASrZ,MACZ6vB,EAAU9zB,IAAI+zB,EAAS/zB,OAEzB,EAAKm0B,cAAcN,EAAUC,EAAWC,MACvC/zB,IAAIsd,EAASluB,KAEXqN,EAAIlI,gBACPw/B,EAASvsB,QAAQ,SAGnB,EAAK2sB,cAAcN,EAAUC,EAAWC,GACxC,EAAKK,aAAaL,EAAUF,GAC5B,EAAKO,aAAaN,EAAWD,GAE7B,IAAMQ,OAA8CltB,IAAzBmW,EAASG,YAChCH,EAASG,YAAc,EAAKjoB,QAAQhK,QAAQ4+B,gBAEhD4J,EAAiBM,KAAK,UAAWD,GAEjC,IAAME,GAAqBjX,EAASluB,KACxB,EAAKoG,QAAQhK,QAAQuE,YAEjCkkC,EAAaK,KAAK,UAAWC,GAE7BV,EAAS3S,IAAI,SAAS,SAACrZ,GACrBA,EAAME,iBAENiZ,EAASG,QAAQ,CACfnQ,MAAOsM,EAAStM,MAChB5hB,IAAK2kC,EAAS/zB,MACdiE,KAAM6vB,EAAU9zB,MAChByd,YAAauW,EAAiBrQ,GAAG,YACjCjG,cAAeuW,EAAatQ,GAAG,cAEjC,EAAK/d,GAAG+tB,WAAW,EAAKJ,eAI5B,EAAK3tB,GAAG4uB,eAAe,EAAKjB,SAAS,WAEnCO,EAAUzuB,MACV0uB,EAAS1uB,MACTwuB,EAASxuB,MAEgB,YAArB2b,EAASyT,SACXzT,EAASI,YAIb,EAAKxb,GAAG8uB,WAAW,EAAKnB,YACvBhS,Y,6BAME,WACCjE,EAAW5xB,KAAK8J,QAAQ2B,OAAO,sBAErCzL,KAAK8J,QAAQ2B,OAAO,oBACpBzL,KAAKipC,eAAerX,GAAUkE,MAAK,SAAClE,GAClC,EAAK9nB,QAAQ2B,OAAO,uBACpB,EAAK3B,QAAQ2B,OAAO,oBAAqBmmB,MACxC5mB,MAAK,WACN,EAAKlB,QAAQ2B,OAAO,+B,6MC1KLy9B,G,WACnB,WAAYp/B,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAKwZ,OAAS,CACZ,0EAA2E,WACzE,EAAK+jB,UAEP,6DAA8D,WAC5D,EAAKhjB,S,kEAMT,OAAQ/U,EAAMsJ,QAAQ9O,KAAKF,QAAQqpC,QAAQnlC,Q,mCAI3ChE,KAAKopC,SAAWppC,KAAKka,GAAGivB,QAAQ,CAC9B7oC,UAAW,oBACXP,SAAU,SAACG,GACQA,EAAMc,KAAK,0CACnBugC,QAAQ,iDAElBpgC,SAASy0B,SAAS51B,KAAKF,QAAQqY,WAClC,IAAMkxB,EAAWrpC,KAAKopC,SAASpoC,KAAK,0CAEpChB,KAAK8J,QAAQ2B,OAAO,gBAAiB49B,EAAUrpC,KAAKF,QAAQqpC,QAAQnlC,MAEpEhE,KAAKopC,SAAStoC,GAAG,aAAa,SAAC2hB,GAAQA,EAAEpG,sB,gCAIzCrc,KAAKopC,SAASzlC,W,+BAKd,GAAK3D,KAAK8J,QAAQ2B,OAAO,mBAAzB,CAKA,IAAM+V,EAAMxhB,KAAK8J,QAAQ2B,OAAO,uBAChC,GAAI+V,EAAIV,eAAiBU,EAAIhC,aAAc,CACzC,IAAM0H,EAASpM,GAAIzJ,SAASmQ,EAAIvC,GAAInE,GAAIlK,UAClC04B,EAAOnpC,IAAE+mB,GAAQtmB,KAAK,QAC5BZ,KAAKopC,SAASpoC,KAAK,KAAKJ,KAAK,OAAQ0oC,GAAM/wB,KAAK+wB,GAEhD,IAAMjwB,EAAMyB,GAAI5B,mBAAmBgO,GAC7BqiB,EAAkBppC,IAAEH,KAAKF,QAAQqY,WAAW7F,SAClD+G,EAAIlN,KAAOo9B,EAAgBp9B,IAC3BkN,EAAIpT,MAAQsjC,EAAgBtjC,KAE5BjG,KAAKopC,SAASnjB,IAAI,CAChB0P,QAAS,QACT1vB,KAAMoT,EAAIpT,KACVkG,IAAKkN,EAAIlN,WAGXnM,KAAKua,YArBLva,KAAKua,S,6BA0BPva,KAAKopC,SAAS7uB,Y,6MCpEGivB,G,WACnB,WAAY1/B,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKunC,MAAQpnC,IAAE4J,SAASoT,MACxBnd,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,S,4DAIzB,IAAI+qB,EAAkB,GACtB,GAAIzpC,KAAKF,QAAQu2B,qBAAsB,CACrC,IAAMxF,EAAOvQ,KAAKopB,MAAMppB,KAAKqpB,IAAI3pC,KAAKF,QAAQu2B,sBAAwB/V,KAAKqpB,IAAI,OACzEC,EAAuF,GAAvE5pC,KAAKF,QAAQu2B,qBAAuB/V,KAAKupB,IAAI,KAAMhZ,IAAO5J,QAAQ,GACrE,IAAM,SAAS4J,GAAQ,IAC1C4Y,EAAkB,UAAH,OAAazpC,KAAK2B,KAAKa,MAAMgB,gBAAkB,MAAQomC,EAAvD,YAGjB,IAAM7oC,EAAaf,KAAKF,QAAQ0nC,cAAgBxnC,KAAKunC,MAAQvnC,KAAKF,QAAQqY,UACpEgF,EAAO,CACX,wEACE,sCAAwCnd,KAAKF,QAAQiM,GAAK,6BAA+B/L,KAAK2B,KAAKa,MAAMe,gBAAkB,WAC3H,qCAAuCvD,KAAKF,QAAQiM,GAAK,6EACzD,mEACA09B,EACF,SACA,gDACE,qCAAuCzpC,KAAKF,QAAQiM,GAAK,6BAA+B/L,KAAK2B,KAAKa,MAAMkB,IAAM,WAC9G,oCAAsC1D,KAAKF,QAAQiM,GAAK,mFAC1D,UACAgB,KAAK,IAED66B,EAAS,wCAAH,OADQ,2DACR,oBAAkE5nC,KAAK2B,KAAKa,MAAMC,OAAlF,eAEZzC,KAAK6nC,QAAU7nC,KAAKka,GAAG4tB,OAAO,CAC5BlG,MAAO5hC,KAAK2B,KAAKa,MAAMC,OACvBslC,KAAM/nC,KAAKF,QAAQkoC,YACnB7qB,KAAMA,EACNyqB,OAAQA,IACPzmC,SAASy0B,SAAS70B,K,gCAIrBf,KAAKka,GAAG+tB,WAAWjoC,KAAK6nC,SACxB7nC,KAAK6nC,QAAQlkC,W,mCAGFukC,EAAQd,GACnBc,EAAOpnC,GAAG,YAAY,SAACqb,GACjBA,EAAM8H,UAAY/kB,GAAI2b,KAAKuJ,QAC7BjI,EAAME,iBACN+qB,EAAKtrB,QAAQ,e,6BAKZ,WACL9b,KAAK8J,QAAQ2B,OAAO,oBACpBzL,KAAK8pC,kBAAkBhU,MAAK,SAACt1B,GAE3B,EAAK0Z,GAAG+tB,WAAW,EAAKJ,SACxB,EAAK/9B,QAAQ2B,OAAO,uBAEA,iBAATjL,EAEL,EAAKV,QAAQ+b,UAAUkuB,kBACzB,EAAKjgC,QAAQyR,aAAa,oBAAqB/a,GAE/C,EAAKsJ,QAAQ2B,OAAO,qBAAsBjL,GAG5C,EAAKsJ,QAAQ2B,OAAO,gCAAiCjL,MAEtDwK,MAAK,WACN,EAAKlB,QAAQ2B,OAAO,4B,wCAUN,WAChB,OAAOtL,IAAEk1B,UAAS,SAACC,GACjB,IAAM0U,EAAc,EAAKnC,QAAQ7mC,KAAK,qBAChCipC,EAAY,EAAKpC,QAAQ7mC,KAAK,mBAC9BkpC,EAAY,EAAKrC,QAAQ7mC,KAAK,mBAEpC,EAAKkZ,GAAGsuB,cAAc,EAAKX,SAAS,WAClC,EAAK/9B,QAAQyR,aAAa,gBAG1ByuB,EAAYG,YAAYH,EAAYl2B,QAAQhT,GAAG,UAAU,SAACqb,GACxDmZ,EAASG,QAAQtZ,EAAMI,OAAO2Z,OAAS/Z,EAAMI,OAAO3d,UACnD0V,IAAI,KAEP21B,EAAUnpC,GAAG,8BAA8B,WACzC,EAAKoZ,GAAGmtB,UAAU6C,EAAWD,EAAU31B,UACtCA,IAAI,IAEFvD,EAAIlI,gBACPohC,EAAUnuB,QAAQ,SAGpBouB,EAAUrpC,OAAM,SAACsb,GACfA,EAAME,iBACNiZ,EAASG,QAAQwU,EAAU31B,UAG7B,EAAKo0B,aAAauB,EAAWC,MAG/B,EAAKhwB,GAAG4uB,eAAe,EAAKjB,SAAS,WACnCmC,EAAYrwB,MACZswB,EAAUtwB,MACVuwB,EAAUvwB,MAEe,YAArB2b,EAASyT,SACXzT,EAASI,YAIb,EAAKxb,GAAG8uB,WAAW,EAAKnB,iB,6MCxHTuC,G,WACnB,WAAYtgC,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GAEvBla,KAAK2b,SAAW7R,EAAQmQ,WAAW0B,SAAS,GAC5C3b,KAAKF,QAAUgK,EAAQhK,QAEvBE,KAAKwZ,OAAS,CACZ,qCAAsC,WACpC,EAAKe,S,kEAMT,OAAQ/U,EAAMsJ,QAAQ9O,KAAKF,QAAQqpC,QAAQ3mC,S,mCAI3CxC,KAAKopC,SAAWppC,KAAKka,GAAGivB,QAAQ,CAC9B7oC,UAAW,uBACVa,SAASy0B,SAAS51B,KAAKF,QAAQqY,WAClC,IAAMkxB,EAAWrpC,KAAKopC,SAASpoC,KAAK,0CACpChB,KAAK8J,QAAQ2B,OAAO,gBAAiB49B,EAAUrpC,KAAKF,QAAQqpC,QAAQ3mC,OAEpExC,KAAKopC,SAAStoC,GAAG,aAAa,SAAC2hB,GAAQA,EAAEpG,sB,gCAIzCrc,KAAKopC,SAASzlC,W,6BAGT4Y,EAAQJ,GACb,GAAIrB,GAAIrF,MAAM8G,GAAS,CACrB,IAAM7J,EAAWvS,IAAEoc,GAAQjK,SACrBi3B,EAAkBppC,IAAEH,KAAKF,QAAQqY,WAAW7F,SAC9C+G,EAAM,GACNrZ,KAAKF,QAAQuqC,YACfhxB,EAAIpT,KAAOkW,EAAM0pB,MAAQ,GACzBxsB,EAAIlN,IAAMgQ,EAAM2pB,OAEhBzsB,EAAM3G,EAER2G,EAAIlN,KAAOo9B,EAAgBp9B,IAC3BkN,EAAIpT,MAAQsjC,EAAgBtjC,KAE5BjG,KAAKopC,SAASnjB,IAAI,CAChB0P,QAAS,QACT1vB,KAAMoT,EAAIpT,KACVkG,IAAKkN,EAAIlN,WAGXnM,KAAKua,S,6BAKPva,KAAKopC,SAAS7uB,Y,6MC9DG+vB,G,WACnB,WAAYxgC,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAKwZ,OAAS,CACZ,uBAAwB,SAAC8jB,EAAI7a,GAC3B,EAAK8a,OAAO9a,EAAElG,SAEhB,uDAAwD,WACtD,EAAKghB,UAEP,qCAAsC,WACpC,EAAKhjB,S,kEAMT,OAAQ/U,EAAMsJ,QAAQ9O,KAAKF,QAAQqpC,QAAQ7kC,S,mCAI3CtE,KAAKopC,SAAWppC,KAAKka,GAAGivB,QAAQ,CAC9B7oC,UAAW,uBACVa,SAASy0B,SAAS51B,KAAKF,QAAQqY,WAClC,IAAMkxB,EAAWrpC,KAAKopC,SAASpoC,KAAK,0CAEpChB,KAAK8J,QAAQ2B,OAAO,gBAAiB49B,EAAUrpC,KAAKF,QAAQqpC,QAAQ7kC,OAGhEyM,EAAI3H,MACNW,SAAS0mB,YAAY,4BAA4B,GAAO,GAG1DzwB,KAAKopC,SAAStoC,GAAG,aAAa,SAAC2hB,GAAQA,EAAEpG,sB,gCAIzCrc,KAAKopC,SAASzlC,W,6BAGT4Y,GACL,GAAIvc,KAAK8J,QAAQ8Q,aACf,OAAO,EAGT,IAAMjK,EAASmK,GAAInK,OAAO4L,GAE1B,GAAI5L,EAAQ,CACV,IAAM0I,EAAMyB,GAAI5B,mBAAmBqD,GAC7BgtB,EAAkBppC,IAAEH,KAAKF,QAAQqY,WAAW7F,SAClD+G,EAAIlN,KAAOo9B,EAAgBp9B,IAC3BkN,EAAIpT,MAAQsjC,EAAgBtjC,KAE5BjG,KAAKopC,SAASnjB,IAAI,CAChB0P,QAAS,QACT1vB,KAAMoT,EAAIpT,KACVkG,IAAKkN,EAAIlN,WAGXnM,KAAKua,OAGP,OAAO5J,I,6BAIP3Q,KAAKopC,SAAS7uB,Y,6MCtEGgwB,G,WACnB,WAAYzgC,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKunC,MAAQpnC,IAAE4J,SAASoT,MACxBnd,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,S,4DAIzB,IAAM3d,EAAaf,KAAKF,QAAQ0nC,cAAgBxnC,KAAKunC,MAAQvnC,KAAKF,QAAQqY,UACpEgF,EAAO,CACX,qDADW,4CAE4Bnd,KAAKF,QAAQiM,GAFzC,qCAEwE/L,KAAK2B,KAAKkC,MAAMH,IAFxF,sCAEyH1D,KAAK2B,KAAKkC,MAAME,UAFzI,+DAG2B/D,KAAKF,QAAQiM,GAHxC,oFAIX,UACAgB,KAAK,IAED66B,EAAS,wCAAH,OADQ,2DACR,oBAAkE5nC,KAAK2B,KAAKkC,MAAMpB,OAAlF,eAEZzC,KAAK6nC,QAAU7nC,KAAKka,GAAG4tB,OAAO,CAC5BlG,MAAO5hC,KAAK2B,KAAKkC,MAAMpB,OACvBslC,KAAM/nC,KAAKF,QAAQkoC,YACnB7qB,KAAMA,EACNyqB,OAAQA,IACPzmC,SAASy0B,SAAS70B,K,gCAIrBf,KAAKka,GAAG+tB,WAAWjoC,KAAK6nC,SACxB7nC,KAAK6nC,QAAQlkC,W,mCAGFukC,EAAQd,GACnBc,EAAOpnC,GAAG,YAAY,SAACqb,GACjBA,EAAM8H,UAAY/kB,GAAI2b,KAAKuJ,QAC7BjI,EAAME,iBACN+qB,EAAKtrB,QAAQ,e,sCAKHpY,GAEd,IAqCI8mC,EAnCEC,EAAU/mC,EAAImV,MAFH,8HAKX6xB,EAAUhnC,EAAImV,MADH,sDAIX8xB,EAASjnC,EAAImV,MADH,mCAIV+xB,EAAWlnC,EAAImV,MADH,qDAIZgyB,EAAUnnC,EAAImV,MADH,kEAIXiyB,EAAapnC,EAAImV,MADH,+CAIdkyB,EAAUrnC,EAAImV,MADH,6BAIXmyB,EAAWtnC,EAAImV,MADH,6DAIZoyB,EAAWvnC,EAAImV,MADH,kBAIZqyB,EAAWxnC,EAAImV,MADH,kBAIZsyB,EAAYznC,EAAImV,MADH,eAIbuyB,EAAU1nC,EAAImV,MADH,2DAIjB,GAAI4xB,GAAiC,KAAtBA,EAAQ,GAAGrpC,OAAe,CACvC,IAAMiqC,EAAYZ,EAAQ,GACtBa,EAAQ,EACZ,QAA0B,IAAfb,EAAQ,GAAoB,CACrC,IAAMc,EAAkBd,EAAQ,GAAG5xB,MAzCd,uCA0CrB,GAAI0yB,EACF,IAAK,IAAInsC,EAAI,CAAC,KAAM,GAAI,GAAI9B,EAAI,EAAGmB,EAAIW,EAAEgC,OAAQ9D,EAAImB,EAAGnB,IACtDguC,QAA4C,IAA3BC,EAAgBjuC,EAAI,GAAqB8B,EAAE9B,GAAK+oB,SAASklB,EAAgBjuC,EAAI,GAAI,IAAM,EAI9GktC,EAASrqC,IAAE,YACRS,KAAK,cAAe,GACpBA,KAAK,MAAO,2BAA6ByqC,GAAaC,EAAQ,EAAI,UAAYA,EAAQ,KACtF1qC,KAAK,QAAS,OAAOA,KAAK,SAAU,YAClC,GAAI8pC,GAAWA,EAAQ,GAAGtpC,OAC/BopC,EAASrqC,IAAE,YACRS,KAAK,cAAe,GACpBA,KAAK,MAAO,2BAA6B8pC,EAAQ,GAAK,WACtD9pC,KAAK,QAAS,OAAOA,KAAK,SAAU,OACpCA,KAAK,YAAa,MAClBA,KAAK,oBAAqB,aACxB,GAAI+pC,GAAUA,EAAO,GAAGvpC,OAC7BopC,EAASrqC,IAAE,YACRS,KAAK,cAAe,GACpBA,KAAK,MAAO+pC,EAAO,GAAK,iBACxB/pC,KAAK,QAAS,OAAOA,KAAK,SAAU,OACpCA,KAAK,QAAS,mBACZ,GAAIgqC,GAAYA,EAAS,GAAGxpC,OACjCopC,EAASrqC,IAAE,qEACRS,KAAK,cAAe,GACpBA,KAAK,MAAO,4BAA8BgqC,EAAS,IACnDhqC,KAAK,QAAS,OAAOA,KAAK,SAAU,YAClC,GAAIiqC,GAAWA,EAAQ,GAAGzpC,OAC/BopC,EAASrqC,IAAE,YACRS,KAAK,cAAe,GACpBA,KAAK,MAAO,qCAAuCiqC,EAAQ,IAC3DjqC,KAAK,QAAS,OAAOA,KAAK,SAAU,YAClC,GAAIkqC,GAAcA,EAAW,GAAG1pC,OACrCopC,EAASrqC,IAAE,qEACRS,KAAK,cAAe,GACpBA,KAAK,SAAU,OACfA,KAAK,QAAS,OACdA,KAAK,MAAO,4BAA8BkqC,EAAW,SACnD,GAAKC,GAAWA,EAAQ,GAAG3pC,QAAY4pC,GAAYA,EAAS,GAAG5pC,OAAS,CAC7E,IAAMoqC,EAAQT,GAAWA,EAAQ,GAAG3pC,OAAU2pC,EAAQ,GAAKC,EAAS,GACpER,EAASrqC,IAAE,qEACRS,KAAK,cAAe,GACpBA,KAAK,SAAU,OACfA,KAAK,QAAS,OACdA,KAAK,MAAO,+CAAiD4qC,EAAM,oBACjE,GAAIP,GAAYC,GAAYC,EACjCX,EAASrqC,IAAE,oBACRS,KAAK,MAAO8C,GACZ9C,KAAK,QAAS,OAAOA,KAAK,SAAU,WAClC,KAAIwqC,IAAWA,EAAQ,GAAGhqC,OAS/B,OAAO,EARPopC,EAASrqC,IAAE,YACRS,KAAK,cAAe,GACpBA,KAAK,MAAO,mDAAqD6qC,mBAAmBL,EAAQ,IAAM,0BAClGxqC,KAAK,QAAS,OAAOA,KAAK,SAAU,OACpCA,KAAK,YAAa,MAClBA,KAAK,oBAAqB,QAQ/B,OAFA4pC,EAAOjqC,SAAS,mBAETiqC,EAAO,K,6BAGT,WACCjyB,EAAOvY,KAAK8J,QAAQ2B,OAAO,0BACjCzL,KAAK8J,QAAQ2B,OAAO,oBACpBzL,KAAK0rC,gBAAgBnzB,GAAMud,MAAK,SAACpyB,GAE/B,EAAKwW,GAAG+tB,WAAW,EAAKJ,SACxB,EAAK/9B,QAAQ2B,OAAO,uBAGpB,IAAMvL,EAAQ,EAAKyrC,gBAAgBjoC,GAE/BxD,GAEF,EAAK4J,QAAQ2B,OAAO,oBAAqBvL,MAE1C8K,MAAK,WACN,EAAKlB,QAAQ2B,OAAO,4B,wCAUI,WAC1B,OAAOtL,IAAEk1B,UAAS,SAACC,GACjB,IAAMsW,EAAY,EAAK/D,QAAQ7mC,KAAK,mBAC9B6qC,EAAY,EAAKhE,QAAQ7mC,KAAK,mBAEpC,EAAKkZ,GAAGsuB,cAAc,EAAKX,SAAS,WAClC,EAAK/9B,QAAQyR,aAAa,gBAE1BqwB,EAAU9qC,GAAG,8BAA8B,WACzC,EAAKoZ,GAAGmtB,UAAUwE,EAAWD,EAAUt3B,UAGpCvD,EAAIlI,gBACP+iC,EAAU9vB,QAAQ,SAGpB+vB,EAAUhrC,OAAM,SAACsb,GACfA,EAAME,iBACNiZ,EAASG,QAAQmW,EAAUt3B,UAG7B,EAAKo0B,aAAakD,EAAWC,MAG/B,EAAK3xB,GAAG4uB,eAAe,EAAKjB,SAAS,WACnC+D,EAAUjyB,MACVkyB,EAAUlyB,MAEe,YAArB2b,EAASyT,SACXzT,EAASI,YAIb,EAAKxb,GAAG8uB,WAAW,EAAKnB,iB,6MCxNTiE,G,WACnB,WAAYhiC,I,4FAAS,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKunC,MAAQpnC,IAAE4J,SAASoT,MACxBnd,KAAK4vB,QAAU9lB,EAAQmQ,WAAWgB,OAClCjb,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAK2B,KAAO3B,KAAKF,QAAQ4e,S,4DAIzB,IAAM3d,EAAaf,KAAKF,QAAQ0nC,cAAgBxnC,KAAKunC,MAAQvnC,KAAKF,QAAQqY,UACpEgF,EAAO,CACX,0BACE,gKACA,uFACA,QACF,KACApQ,IAEF/M,KAAK6nC,QAAU7nC,KAAKka,GAAG4tB,OAAO,CAC5BlG,MAAO5hC,KAAK2B,KAAK7B,QAAQ6F,KACzBoiC,KAAM/nC,KAAKF,QAAQkoC,YACnB7qB,KAAMnd,KAAK+rC,qBACXnE,OAAQzqB,EACRpd,SAAU,SAACG,GACTA,EAAMc,KAAK,gCAAgCilB,IAAI,CAC7C,aAAc,IACd,SAAY,cAGf9kB,SAASy0B,SAAS70B,K,gCAIrBf,KAAKka,GAAG+tB,WAAWjoC,KAAK6nC,SACxB7nC,KAAK6nC,QAAQlkC,W,2CAGM,WACbswB,EAASj0B,KAAKF,QAAQm0B,OAAOljB,EAAI9H,MAAQ,MAAQ,MACvD,OAAO5K,OAAOob,KAAKwa,GAAQrnB,KAAI,SAAC1N,GAC9B,IAAM8sC,EAAU/X,EAAO/0B,GACjB+sC,EAAO9rC,IAAE,iDAKf,OAJA8rC,EAAK5qC,OAAOlB,IAAE,eAAiBjB,EAAM,kBAAkB+mB,IAAI,CACzD,MAAS,IACT,eAAgB,MACd5kB,OAAOlB,IAAE,WAAWE,KAAK,EAAKyJ,QAAQ4E,KAAK,QAAUs9B,IAAYA,IAC9DC,EAAK5rC,UACX0M,KAAK,M,uCAQO,WACf,OAAO5M,IAAEk1B,UAAS,SAACC,GACjB,EAAKpb,GAAGsuB,cAAc,EAAKX,SAAS,WAClC,EAAK/9B,QAAQyR,aAAa,gBAC1B+Z,EAASG,aAEX,EAAKvb,GAAG8uB,WAAW,EAAKnB,YACvBhS,Y,6BAGE,WACL71B,KAAK8J,QAAQ2B,OAAO,oBACpBzL,KAAKksC,iBAAiBpW,MAAK,WACzB,EAAKhsB,QAAQ2B,OAAO,+B,yMCvE1B,IAGqB0gC,G,WACnB,WAAYriC,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EACf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKF,QAAUgK,EAAQhK,QAEvBE,KAAKosC,SAAU,EACfpsC,KAAKqsC,eAAgB,EACrBrsC,KAAK6lC,MAAQ,KACb7lC,KAAK8lC,MAAQ,KAEb9lC,KAAKwZ,OAAS,CACZ,yBAA0B,SAACiJ,GACrB,EAAK3iB,QAAQ8b,UACf6G,EAAEpG,iBACFoG,EAAE0Z,kBACF,EAAKkQ,eAAgB,EACrB,EAAK9O,QAAO,KAGhB,uBAAwB,SAACD,EAAI7a,GAC3B,EAAKojB,MAAQpjB,EAAEojB,MACf,EAAKC,MAAQrjB,EAAEqjB,OAEjB,wDAAyD,SAACxI,EAAI7a,GACxD,EAAK3iB,QAAQ8b,UAAY,EAAKywB,gBAChC,EAAKxG,MAAQpjB,EAAEojB,MACf,EAAKC,MAAQrjB,EAAEqjB,MACf,EAAKvI,UAEP,EAAK8O,eAAgB,GAEvB,+EAAgF,WAC9E,EAAK9xB,QAEP,sBAAuB,WAChB,EAAK6uB,SAASnR,GAAG,mBACpB,EAAK1d,S,kEAOX,OAAOva,KAAKF,QAAQ8zB,UAAYpuB,EAAMsJ,QAAQ9O,KAAKF,QAAQqpC,QAAQmD,O,mCAGxD,WACXtsC,KAAKopC,SAAWppC,KAAKka,GAAGivB,QAAQ,CAC9B7oC,UAAW,qBACVa,SAASy0B,SAAS51B,KAAKF,QAAQqY,WAClC,IAAMkxB,EAAWrpC,KAAKopC,SAASpoC,KAAK,oBAEpChB,KAAK8J,QAAQ2B,OAAO,gBAAiB49B,EAAUrpC,KAAKF,QAAQqpC,QAAQmD,KAGpEtsC,KAAKopC,SAAStoC,GAAG,aAAa,WAAQ,EAAKsrC,SAAU,KAErDpsC,KAAKopC,SAAStoC,GAAG,WAAW,WAAQ,EAAKsrC,SAAU,O,gCAInDpsC,KAAKopC,SAASzlC,W,6BAGT4oC,GACL,IAAMrmB,EAAYlmB,KAAK8J,QAAQ2B,OAAO,uBACtC,IAAIya,EAAUZ,OAAWY,EAAUZ,MAAMxE,gBAAiByrB,EAiBxDvsC,KAAKua,WAjBiE,CACtE,IAAItO,EAAO,CACThG,KAAMjG,KAAK6lC,MACX15B,IAAKnM,KAAK8lC,OAGNyD,EAAkBppC,IAAEH,KAAKF,QAAQqY,WAAW7F,SAClDrG,EAAKE,KAAOo9B,EAAgBp9B,IAC5BF,EAAKhG,MAAQsjC,EAAgBtjC,KAE7BjG,KAAKopC,SAASnjB,IAAI,CAChB0P,QAAS,QACT1vB,KAAMqa,KAAKkc,IAAIvwB,EAAKhG,KAAM,IAlFD,EAmFzBkG,IAAKF,EAAKE,IAlFe,IAoF3BnM,KAAK8J,QAAQ2B,OAAO,6BAA8BzL,KAAKopC,a,qCAM5C/P,GACbr5B,KAAKka,GAAGmrB,gBAAgBrlC,KAAKopC,SAASpoC,KAAK,iBAAkBq4B,GACzDA,GACFr5B,KAAKua,S,6BAKHva,KAAKosC,SACPpsC,KAAKopC,SAAS7uB,Y,yMChGpB,IAEqBiyB,G,WACnB,WAAY1iC,GAAS,Y,4FAAA,SACnB9J,KAAK8J,QAAUA,EAEf9J,KAAKka,GAAK/Z,IAAEuB,WAAWwY,GACvBla,KAAKqlB,UAAYvb,EAAQmQ,WAAW0B,SACpC3b,KAAKF,QAAUgK,EAAQhK,QACvBE,KAAKysC,KAAOzsC,KAAKF,QAAQ2sC,MAAQ,GACjCzsC,KAAK0sC,UAAY1sC,KAAKF,QAAQ6sC,eAAiB,SAC/C3sC,KAAK4sC,MAAQrrC,MAAMC,QAAQxB,KAAKysC,MAAQzsC,KAAKysC,KAAO,CAACzsC,KAAKysC,MAE1DzsC,KAAKwZ,OAAS,CACZ,mBAAoB,SAAC8jB,EAAI7a,GAClBA,EAAE6Q,sBACL,EAAK8K,YAAY3b,IAGrB,qBAAsB,SAAC6a,EAAI7a,GACzB,EAAK4b,cAAc5b,IAErB,6DAA8D,WAC5D,EAAKlI,S,kEAMT,OAAOva,KAAK4sC,MAAMxrC,OAAS,I,mCAGhB,WACXpB,KAAKs+B,cAAgB,KACrBt+B,KAAK6sC,aAAe,KACpB7sC,KAAKopC,SAAWppC,KAAKka,GAAGivB,QAAQ,CAC9B7oC,UAAW,oBACXwsC,WAAW,EACXJ,UAAW,KACVvrC,SAASy0B,SAAS51B,KAAKF,QAAQqY,WAElCnY,KAAKopC,SAAS7uB,OACdva,KAAKqpC,SAAWrpC,KAAKopC,SAASpoC,KAAK,0CACnChB,KAAKqpC,SAASvoC,GAAG,QAAS,mBAAmB,SAAC2hB,GAC5C,EAAK4mB,SAASroC,KAAK,WAAWy4B,YAAY,UAC1Ct5B,IAAEsiB,EAAE+d,eAAejgC,SAAS,UAC5B,EAAKgU,aAGPvU,KAAKopC,SAAStoC,GAAG,aAAa,SAAC2hB,GAAQA,EAAEpG,sB,gCAIzCrc,KAAKopC,SAASzlC,W,iCAGLshC,GACTjlC,KAAKqpC,SAASroC,KAAK,WAAWy4B,YAAY,UAC1CwL,EAAM1kC,SAAS,UAEfP,KAAKqpC,SAAS,GAAGj9B,UAAY64B,EAAM,GAAG5kB,UAAargB,KAAKqpC,SAAS0D,cAAgB,I,iCAIjF,IAAMC,EAAWhtC,KAAKqpC,SAASroC,KAAK,0BAC9BisC,EAAQD,EAAS5+B,OAEvB,GAAI6+B,EAAM7rC,OACRpB,KAAKktC,WAAWD,OACX,CACL,IAAIE,EAAaH,EAASj7B,SAAS3D,OAE9B++B,EAAW/rC,SACd+rC,EAAantC,KAAKqpC,SAASroC,KAAK,oBAAoB8d,SAGtD9e,KAAKktC,WAAWC,EAAWnsC,KAAK,mBAAmB8d,Y,+BAKrD,IAAMkuB,EAAWhtC,KAAKqpC,SAASroC,KAAK,0BAC9BosC,EAAQJ,EAAS9+B,OAEvB,GAAIk/B,EAAMhsC,OACRpB,KAAKktC,WAAWE,OACX,CACL,IAAIC,EAAaL,EAASj7B,SAAS7D,OAE9Bm/B,EAAWjsC,SACdisC,EAAartC,KAAKqpC,SAASroC,KAAK,oBAAoB6M,QAGtD7N,KAAKktC,WAAWG,EAAWrsC,KAAK,mBAAmB6M,W,gCAKrD,IAAMo3B,EAAQjlC,KAAKqpC,SAASroC,KAAK,0BAEjC,GAAIikC,EAAM7jC,OAAQ,CAChB,IAAIsO,EAAO1P,KAAKstC,aAAarI,GAE7B,GAA0B,OAAtBjlC,KAAK6sC,cAAsD,IAA7B7sC,KAAK6sC,aAAazrC,OAClDpB,KAAKs+B,cAAcpf,GAAKlf,KAAKs+B,cAAclf,QAEtC,GAA0B,OAAtBpf,KAAK6sC,cAAyB7sC,KAAK6sC,aAAazrC,OAAS,IAAMpB,KAAKs+B,cAAcxd,cAAe,CAC1G,IAAIysB,EAAevtC,KAAKs+B,cAAclf,GAAKpf,KAAKs+B,cAAcpf,GAAKlf,KAAK6sC,aAAazrC,OACjFmsC,EAAe,IACjBvtC,KAAKs+B,cAAcpf,IAAMquB,GAK7B,GAFAvtC,KAAKs+B,cAAcpc,WAAWxS,GAEE,SAA5B1P,KAAKF,QAAQ0tC,WAAuB,CACtC,IAAI/4B,EAAQ1K,SAASyO,eAAe,IACpCrY,IAAEuP,GAAM2e,MAAM5Z,GACd6Q,GAAM5B,qBAAqBjP,GAAO9M,cAElC2d,GAAM3B,oBAAoBjU,GAAM/H,SAGlC3H,KAAKs+B,cAAgB,KACrBt+B,KAAKua,OACLva,KAAK8J,QAAQ2B,OAAO,mB,mCAIXw5B,GACX,IAAMwH,EAAOzsC,KAAK4sC,MAAM3H,EAAMzkC,KAAK,UAC7BgL,EAAOy5B,EAAMzkC,KAAK,QACpBkP,EAAO+8B,EAAK7S,QAAU6S,EAAK7S,QAAQpuB,GAAQA,EAI/C,MAHoB,iBAATkE,IACTA,EAAOoL,GAAIxC,WAAW5I,IAEjBA,I,0CAGW+9B,EAASlV,GAC3B,IAAMkU,EAAOzsC,KAAK4sC,MAAMa,GACxB,OAAOlV,EAAM3rB,KAAI,SAACpB,GAChB,IAAMy5B,EAAQ9kC,IAAE,iCAMhB,OALA8kC,EAAM5jC,OAAOorC,EAAK5K,SAAW4K,EAAK5K,SAASr2B,GAAQA,EAAO,IAC1Dy5B,EAAMzkC,KAAK,CACT,MAASitC,EACT,KAAQjiC,IAEHy5B,O,oCAIGxiB,GACPziB,KAAKopC,SAASnR,GAAG,cAIlBxV,EAAEwB,UAAY/kB,GAAI2b,KAAKuJ,OACzB3B,EAAEpG,iBACFrc,KAAKuU,WACIkO,EAAEwB,UAAY/kB,GAAI2b,KAAK4J,IAChChC,EAAEpG,iBACFrc,KAAK0tC,UACIjrB,EAAEwB,UAAY/kB,GAAI2b,KAAK8J,OAChClC,EAAEpG,iBACFrc,KAAK2tC,e,oCAIKprB,EAAOgc,EAASx+B,GAC5B,IAAM0sC,EAAOzsC,KAAK4sC,MAAMrqB,GACxB,GAAIkqB,GAAQA,EAAK5zB,MAAMrQ,KAAK+1B,IAAYkO,EAAKmB,OAAQ,CACnD,IAAMnlC,EAAUgkC,EAAK5zB,MAAMnQ,KAAK61B,GAChCv+B,KAAK6sC,aAAepkC,EAAQ,GAC5BgkC,EAAKmB,OAAOnlC,EAAQ,GAAI1I,QAExBA,M,kCAIQoO,EAAKowB,GAAS,WAClBuG,EAAS3kC,IAAE,+CAAiDgO,EAAM,YASxE,OARAnO,KAAK6tC,cAAc1/B,EAAKowB,GAAS,SAAChG,IAChCA,EAAQA,GAAS,IACPn3B,SACR0jC,EAAOzkC,KAAK,EAAKytC,oBAAoB3/B,EAAKoqB,IAC1C,EAAKtC,WAIF6O,I,kCAGGriB,GAAG,WACb,IAAKjd,EAAMwI,SAAS,CAAC9O,GAAI2b,KAAKuJ,MAAOllB,GAAI2b,KAAK4J,GAAIvlB,GAAI2b,KAAK8J,MAAOlC,EAAEwB,SAAU,CAC5E,IACI0a,EAAWJ,EADXjZ,EAAQtlB,KAAK8J,QAAQ2B,OAAO,uBAEhC,GAA8B,UAA1BzL,KAAKF,QAAQiuC,SAAsB,CAWrC,GAVApP,EAAYrZ,EAAM0oB,cAAc1oB,GAChCiZ,EAAUI,EAAUxc,WAEpBniB,KAAK4sC,MAAM3rC,SAAQ,SAACwrC,GAClB,GAAIA,EAAK5zB,MAAMrQ,KAAK+1B,GAElB,OADAI,EAAYrZ,EAAM2oB,mBAAmBxB,EAAK5zB,QACnC,MAIN8lB,EAEH,YADA3+B,KAAKua,OAIPgkB,EAAUI,EAAUxc,gBAEpBwc,EAAYrZ,EAAMsZ,eAClBL,EAAUI,EAAUxc,WAGtB,GAAIniB,KAAK4sC,MAAMxrC,QAAUm9B,EAAS,CAChCv+B,KAAKqpC,SAAS6E,QAEd,IAAMC,EAAMlhC,EAAKjB,SAASxG,EAAMqI,KAAK8wB,EAAUhc,mBACzC4mB,EAAkBppC,IAAEH,KAAKF,QAAQqY,WAAW7F,SAC9C67B,IACFA,EAAIhiC,KAAOo9B,EAAgBp9B,IAC3BgiC,EAAIloC,MAAQsjC,EAAgBtjC,KAE5BjG,KAAKopC,SAAS7uB,OACdva,KAAKs+B,cAAgBK,EACrB3+B,KAAK4sC,MAAM3rC,SAAQ,SAACwrC,EAAMt+B,GACpBs+B,EAAK5zB,MAAMrQ,KAAK+1B,IAClB,EAAK6P,YAAYjgC,EAAKowB,GAAS3I,SAAS,EAAKyT,aAIjDrpC,KAAKqpC,SAASroC,KAAK,yBAAyBT,SAAS,UAG9B,QAAnBP,KAAK0sC,UACP1sC,KAAKopC,SAASnjB,IAAI,CAChBhgB,KAAMkoC,EAAIloC,KACVkG,IAAKgiC,EAAIhiC,IAAMnM,KAAKopC,SAAS9vB,cAjPtB,IAoPTtZ,KAAKopC,SAASnjB,IAAI,CAChBhgB,KAAMkoC,EAAIloC,KACVkG,IAAKgiC,EAAIhiC,IAAMgiC,EAAIjsC,OAtPZ,UA2PblC,KAAKua,U,6BAMTva,KAAKopC,SAASnT,S,6BAIdj2B,KAAKopC,SAAS7uB,Y,kCC/OlBpa,IAAEuB,WAAavB,IAAEyB,OAAOzB,IAAEuB,WAAY,CACpC2sC,QAAS,SACTlzB,QAAS,GAETL,IAAKA,GACLwK,MAAOA,GACP9f,MAAOA,EAEP1F,QAAS,CACP4e,SAAUve,IAAEuB,WAAWC,KAAK,SAC5Bia,SAAS,EACT/d,QAAS,CACP,OAAU8xB,GACV,UAAawI,GACb,SAAYQ,GACZ,SAAY2V,GACZ,UAAavS,GACb,WAAcU,GACd,OAAUU,GAGV,YAAeqP,GACf,SAAYrO,GACZ,SAAYU,GACZ,YAAeC,GACf,YAAeS,GACf,QAAWI,GACX,QAAWsG,GACX,WAAcqB,GACd,YAAe4B,GACf,YAAeM,GACf,aAAgBY,GAChB,aAAgBE,GAChB,YAAeC,GACf,WAAcuB,GACd,WAAcK,IAGhBjxB,QAAS,GAETvZ,KAAM,QAEN2kC,kBAAkB,EAClBiI,gBAAiB,MACjB3H,eAAgB,GAGhB4H,oBAAoB,EACpB7R,QAAS,CACP,CAAC,QAAS,CAAC,UACX,CAAC,OAAQ,CAAC,OAAQ,YAAa,UAC/B,CAAC,WAAY,CAAC,aACd,CAAC,QAAS,CAAC,UACX,CAAC,OAAQ,CAAC,KAAM,KAAM,cACtB,CAAC,QAAS,CAAC,UACX,CAAC,SAAU,CAAC,OAAQ,UAAW,UAC/B,CAAC,OAAQ,CAAC,aAAc,WAAY,UAItC0N,YAAY,EACZlB,QAAS,CACP3mC,MAAO,CACL,CAAC,SAAU,CAAC,aAAc,aAAc,gBAAiB,eACzD,CAAC,QAAS,CAAC,YAAa,aAAc,cACtC,CAAC,SAAU,CAAC,iBAEdwB,KAAM,CACJ,CAAC,OAAQ,CAAC,iBAAkB,YAE9BM,MAAO,CACL,CAAC,MAAO,CAAC,aAAc,WAAY,aAAc,gBACjD,CAAC,SAAU,CAAC,YAAa,YAAa,iBAExCgoC,IAAK,CACH,CAAC,QAAS,CAAC,UACX,CAAC,OAAQ,CAAC,OAAQ,YAAa,UAC/B,CAAC,OAAQ,CAAC,KAAM,cAChB,CAAC,QAAS,CAAC,UACX,CAAC,SAAU,CAAC,OAAQ,YACpB,CAAC,OAAQ,CAAC,aAAc,eAK5B1Y,SAAS,EACTC,qBAAqB,EAErBxpB,MAAO,KACPnI,OAAQ,KACRw8B,iBAAiB,EACjBr6B,aAAa,EACb+tB,gBAAiB,UAEjBrT,OAAO,EACP0vB,aAAa,EACbxZ,QAAS,EACTH,cAAc,EACd9tB,WAAW,EACX0nC,kBAAkB,EAClB9vB,QAAS,OACTzG,UAAW,KACXuc,cAAe,EACfxL,wBAAyB,EACzBwK,YAAY,EACZC,gBAAgB,EAChBxa,YAAa,KACbqmB,oBAAoB,EAEpB/L,sBAAsB,EACtB9N,aAAc,IAGd8Y,2BAA2B,EAG3BsP,SAAU,OACVP,WAAY,QACZb,cAAe,SAEfhL,UAAW,CAAC,IAAK,aAAc,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAEpEW,UAAW,CACT,QAAS,cAAe,gBAAiB,cACzC,iBAAkB,YAAa,SAAU,gBACzC,SAAU,kBAAmB,WAE/BlC,qBAAsB,GACtB+B,iBAAiB,EAEjBO,UAAW,CAAC,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE1DC,cAAe,CAAC,KAAM,MAGtB3B,OAAQ,CACN,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC9E,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,YAIhFC,WAAY,CACV,CAAC,QAAS,UAAW,YAAa,YAAa,aAAc,UAAW,YAAa,SACrF,CAAC,MAAO,cAAe,SAAU,QAAS,OAAQ,OAAQ,kBAAmB,WAC7E,CAAC,SAAU,QAAS,YAAa,QAAS,aAAc,gBAAiB,UAAW,YACpF,CAAC,aAAc,eAAgB,eAAgB,SAAU,SAAU,SAAU,cAAe,eAC5F,CAAC,QAAS,QAAS,YAAa,UAAW,cAAe,SAAU,kBAAmB,QACvF,CAAC,gBAAiB,YAAa,eAAgB,mBAAoB,aAAc,cAAe,iBAAkB,YAClH,CAAC,UAAW,UAAW,cAAe,eAAgB,OAAQ,cAAe,YAAa,UAC1F,CAAC,WAAY,WAAY,QAAS,UAAW,QAAS,gBAAiB,YAAa,WAGtFP,YAAa,CACXjO,UAAW,UACXC,UAAW,WAGb8Q,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE/D9T,eAAgB,uBAEhB+T,mBAAoB,CAClBC,IAAK,GACL9Y,IAAK,IAIP4c,eAAe,EACfQ,aAAa,EAEb3R,qBAAsB,KAEtBxa,UAAW,CACT8yB,gBAAiB,KACjBC,OAAQ,KACRC,eAAgB,KAChBC,SAAU,KACVC,iBAAkB,KAClBvG,cAAe,KACfwG,QAAS,KACTC,QAAS,KACTlF,kBAAmB,KACnBjT,cAAe,KACfoY,mBAAoB,KACpBC,OAAQ,KACRC,UAAW,KACXC,QAAS,KACTC,YAAa,KACbC,UAAW,KACXC,QAAS,KACTC,SAAU,MAGZvV,WAAY,CACVp7B,KAAM,YACN4wC,UAAU,EACVC,aAAa,GAGflV,gBAAgB,EAChBC,oBAAqB,0IACrBC,sBAAsB,EACtBE,2BAA4B,GAC5BC,+BAAgC,CAC9B,kBACA,2BACA,mBACA,UACA,gBACA,mBACA,sBACA,mBACA,YAGF7G,OAAQ,CACN2b,GAAI,CACF,IAAO,SACP,MAAS,kBACT,SAAU,OACV,SAAU,OACV,IAAO,MACP,YAAa,QACb,SAAU,OACV,SAAU,SACV,SAAU,YACV,eAAgB,gBAChB,iBAAkB,eAClB,eAAgB,cAChB,eAAgB,gBAChB,eAAgB,eAChB,eAAgB,cAChB,kBAAmB,sBACnB,kBAAmB,oBACnB,mBAAoB,UACpB,oBAAqB,SACrB,YAAa,aACb,YAAa,WACb,YAAa,WACb,YAAa,WACb,YAAa,WACb,YAAa,WACb,YAAa,WACb,aAAc,uBACd,SAAU,mBAGZC,IAAK,CACH,IAAO,SACP,MAAS,kBACT,QAAS,OACT,cAAe,OACf,IAAO,MACP,YAAa,QACb,QAAS,OACT,QAAS,SACT,QAAS,YACT,cAAe,gBACf,gBAAiB,eACjB,cAAe,cACf,cAAe,gBACf,cAAe,eACf,cAAe,cACf,iBAAkB,sBAClB,iBAAkB,oBAClB,kBAAmB,UACnB,mBAAoB,SACpB,WAAY,aACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,YAAa,uBACb,QAAS,oBAGblxB,MAAO,CACL,MAAS,kBACT,YAAe,yBACf,aAAgB,0BAChB,UAAa,uBACb,WAAc,wBACd,SAAY,sBACZ,UAAa,uBACb,SAAY,sBACZ,SAAY,sBACZ,UAAa,uBACb,UAAa,uBACb,OAAU,yBACV,QAAW,0BACX,UAAa,uBACb,KAAQ,iBACR,MAAS,kBACT,OAAU,mBACV,MAAS,kBACT,KAAQ,iBACR,OAAU,mBACV,UAAa,uBACb,WAAc,wBACd,KAAQ,iBACR,MAAS,kBACT,OAAU,mBACV,KAAQ,iBACR,OAAU,yBACV,MAAS,kBACT,UAAa,uBACb,MAAS,kBACT,YAAe,wBACf,OAAU,mBACV,QAAW,oBACX,SAAY,qBACZ,KAAQ,iBACR,SAAY,qBACZ,OAAU,mBACV,cAAiB,0BACjB,UAAa,sBACb,YAAe,wBACf,MAAS,kBACT,WAAc,wBACd,MAAS,kBACT,UAAa,sBACb,KAAQ,iBACR,cAAiB,0BACjB,MAAS,uB,2TCrWf,IAAM1D,EAAS60B,IAAS7wC,OAAO,8CACzB09B,EAAUmT,IAAS7wC,OAAO,0DAC1Bo+B,EAAcyS,IAAS7wC,OAAO,oCAC9Byc,EAAUo0B,IAAS7wC,OAAO,0DAC1B0c,EAAWm0B,IAAS7wC,OAAO,uGAC3Bg9B,EAAY6T,IAAS7wC,OAAO,CAChC,gFACA,6CACE,mDACE,oCACA,oCACA,oCACF,SACF,UACA8N,KAAK,KAEDgjC,EAAYD,IAAS7wC,OAAO,4CAC5B+wC,EAAcF,IAAS7wC,OAAO,CAClC,gGACA,iFACA8N,KAAK,KAEDszB,EAAcyP,IAAS7wC,OAAO,0CAE9B2hC,EAAWkP,IAAS7wC,OAAO,8DAA8D,SAASiB,EAAOJ,GAC7G,IAAMF,EAAS2B,MAAMC,QAAQ1B,EAAQy4B,OAASz4B,EAAQy4B,MAAM3rB,KAAI,SAASpB,GACvE,IAAM5M,EAAyB,iBAAT4M,EAAqBA,EAAQA,EAAK5M,OAAS,GAC3Dg7B,EAAU95B,EAAQ+hC,SAAW/hC,EAAQ+hC,SAASr2B,GAAQA,EACtDykC,EAA0B,WAAhB,EAAOzkC,GAAqBA,EAAKykC,YAASx0B,EAI1D,MAAO,sCAFW,eAAiB7c,EAAQ,UACZ6c,IAAXw0B,EAAwB,iBAAmBA,EAAS,IAAM,KACL,gCAAkCrxC,EAAQ,KAAOg7B,EAAU,UACnI7sB,KAAK,IAAMjN,EAAQy4B,MAEtBr4B,EAAMG,KAAKT,GAAQgB,KAAK,CAAE,aAAcd,EAAQ8hC,QAE5C9hC,GAAWA,EAAQ0uC,oBACrBtuC,EAAMK,SAAS,yBAIbogC,EAAyB,SAASvgC,GACtC,OAAOA,GAGHmiC,EAAgBuN,IAAS7wC,OAAO,yEAAyE,SAASiB,EAAOJ,GAC7H,IAAMF,EAAS2B,MAAMC,QAAQ1B,EAAQy4B,OAASz4B,EAAQy4B,MAAM3rB,KAAI,SAASpB,GACvE,IAAM5M,EAAyB,iBAAT4M,EAAqBA,EAAQA,EAAK5M,OAAS,GAC3Dg7B,EAAU95B,EAAQ+hC,SAAW/hC,EAAQ+hC,SAASr2B,GAAQA,EAC5D,MAAO,iDAAmD5M,EAAQ,iCAAmC4M,EAAO,KAAO80B,EAAKxgC,EAAQ0iC,gBAAkB,IAAM5I,EAAU,UACjK7sB,KAAK,IAAMjN,EAAQy4B,MACtBr4B,EAAMG,KAAKT,GAAQgB,KAAK,CAAE,aAAcd,EAAQ8hC,QAE5C9hC,GAAWA,EAAQ0uC,oBACrBtuC,EAAMK,SAAS,yBAIbunC,EAASgI,IAAS7wC,OAAO,mFAAmF,SAASiB,EAAOJ,GAC5HA,EAAQioC,MACV7nC,EAAMK,SAAS,QAEjBL,EAAMU,KAAK,CACT,aAAcd,EAAQ8hC,QAExB1hC,EAAMG,KAAK,CACT,6BACE,8BACGP,EAAQ8hC,MAAQ,qDACc9hC,EAAQ8hC,MADtB,6HAGN,GACX,2BAA6B9hC,EAAQqd,KAAO,SAC3Crd,EAAQ8nC,OAAS,6BAA+B9nC,EAAQ8nC,OAAS,SAAW,GAC/E,SACF,UACA76B,KAAK,QAGHo8B,EAAU2G,IAAS7wC,OAAO,CAC9B,wCACE,4BACA,8DACF,UACA8N,KAAK,KAAK,SAAS7M,EAAOJ,GAC1B,IAAM4sC,OAAyC,IAAtB5sC,EAAQ4sC,UAA4B5sC,EAAQ4sC,UAAY,SAEjFxsC,EAAMK,SAASmsC,GAEX5sC,EAAQgtC,WACV5sC,EAAMc,KAAK,UAAUuZ,UAInBmtB,EAAWoI,IAAS7wC,OAAO,kCAAkC,SAASiB,EAAOJ,GACjFI,EAAMG,KAAK,CACT,mCAAqCP,EAAQiM,GAAK,cAAgBjM,EAAQiM,GAAK,IAAM,IAAM,IACzF,mDAAqDjM,EAAQiM,GAAK,aAAejM,EAAQiM,GAAK,IAAM,IACjGjM,EAAQ6nC,QAAU,WAAa,GAChC,iBAAmB7nC,EAAQyY,KAAOzY,EAAQyY,KAAO,IAAM,IACvD,mBAAqBzY,EAAQ6nC,QAAU,OAAS,SAAW,MAC7D,KAAO7nC,EAAQyY,KAAOzY,EAAQyY,KAAO,IACvC,YACAxL,KAAK,QAGHuzB,EAAO,SAAS4P,EAAehjB,GAEnC,MAAO,KADPA,EAAUA,GAAW,KACE,WAAagjB,EAAgB,OAAShjB,EAAQ,KAqJxDhT,EAlJJ,SAASi2B,GAClB,MAAO,CACLl1B,OAAQA,EACR0hB,QAASA,EACTU,YAAaA,EACb3hB,QAASA,EACTC,SAAUA,EACVsgB,UAAWA,EACX8T,UAAWA,EACXC,YAAaA,EACb3P,YAAaA,EACbO,SAAUA,EACVD,uBAAwBA,EACxB4B,cAAeA,EACfuF,OAAQA,EACRqB,QAASA,EACT7I,KAAMA,EACNoH,SAAUA,EACV5nC,QAASqwC,EAETpP,QAAS,SAAS7gC,EAAOJ,GACvB,OAAOgwC,IAAS7wC,OAAO,qCAAqC,SAASiB,EAAOJ,GAE1E,IADA,IAAMM,EAAW,GACRwqB,EAAM,EAAGwlB,EAAUtwC,EAAQkhC,OAAO5/B,OAAQwpB,EAAMwlB,EAASxlB,IAAO,CAKvE,IAJA,IAAM2J,EAAYz0B,EAAQy0B,UACpByM,EAASlhC,EAAQkhC,OAAOpW,GACxBqW,EAAanhC,EAAQmhC,WAAWrW,GAChC1P,EAAU,GACPwoB,EAAM,EAAG2M,EAAUrP,EAAO5/B,OAAQsiC,EAAM2M,EAAS3M,IAAO,CAC/D,IAAMr9B,EAAQ26B,EAAO0C,GACf4M,EAAYrP,EAAWyC,GAC7BxoB,EAAQ/L,KAAK,CACX,+CACA,2BAA4B9I,EAAO,KACnC,eAAgBkuB,EAAW,KAC3B,eAAgBluB,EAAO,KACvB,UAAWiqC,EAAW,KACtB,eAAgBA,EAAW,KAC3B,gDACAvjC,KAAK,KAET3M,EAAS+O,KAAK,+BAAiC+L,EAAQnO,KAAK,IAAM,UAEpE7M,EAAMG,KAAKD,EAAS2M,KAAK,KAErBjN,EAAQ8e,SACV1e,EAAMc,KAAK,mBAAmB4d,QAAQ,CACpCzG,UAAWrY,EAAQqY,WAAag4B,EAAch4B,UAC9C2D,QAAS,QACTy0B,UAAW,aA5BVT,CA+BJ5vC,EAAOJ,IAGZggC,OAAQ,SAAS5/B,EAAOJ,GACtB,OAAOgwC,IAAS7wC,OAAO,8EAA8E,SAASiB,EAAOJ,GAC/GA,GAAWA,EAAQ8e,SACrB1e,EAAMU,KAAK,CACTghC,MAAO9hC,EAAQ8e,QACf,aAAc9e,EAAQ8e,UACrBA,QAAQ,CACTzG,UAAWrY,EAAQqY,WAAag4B,EAAch4B,UAC9C2D,QAAS,QACTy0B,UAAW,WACVzvC,GAAG,SAAS,SAAC2hB,GACdtiB,IAAEsiB,EAAE+d,eAAe5hB,QAAQ,WAG3B9e,GAAWA,EAAQ0wC,gBACrBtwC,EAAMK,SAAS,wBAdZuvC,CAgBJ5vC,EAAOJ,IAGZunC,UAAW,SAASD,EAAMqJ,GACxBrJ,EAAKjU,YAAY,YAAasd,GAC9BrJ,EAAKxmC,KAAK,YAAa6vC,IAGzBpL,gBAAiB,SAAS+B,EAAMsJ,GAC9BtJ,EAAKjU,YAAY,SAAUud,IAG7BlI,cAAe,SAASX,EAAS7wB,GAC/B6wB,EAAQrS,IAAI,iBAAkBxe,IAGhC8xB,eAAgB,SAASjB,EAAS7wB,GAChC6wB,EAAQrS,IAAI,kBAAmBxe,IAGjCgyB,WAAY,SAASnB,GACnBA,EAAQ8I,MAAM,SAGhB1I,WAAY,SAASJ,GACnBA,EAAQ8I,MAAM,SAGhBt2B,aAAc,SAASN,GACrB,IAAM6V,GAAWugB,EAAcvc,QAAUmc,EAAU,CACjD1S,EAAY,CACV3hB,IACAs0B,QAEoC,WAAlCG,EAAc5B,gBAChBtzB,EAAO,CACPoiB,EAAY,CACV3hB,IACAC,MAEFghB,IACAV,MAEAhhB,EAAO,CACP0hB,IACAU,EAAY,CACV3hB,IACAC,MAEFsgB,OAED96B,SAIH,OAFAyuB,EAAQ/d,YAAYkI,GAEb,CACL8E,KAAM9E,EACNkB,OAAQ2U,EACR+M,QAAS/M,EAAQ5uB,KAAK,iBACtBq8B,YAAazN,EAAQ5uB,KAAK,sBAC1B2a,SAAUiU,EAAQ5uB,KAAK,kBACvB0a,QAASkU,EAAQ5uB,KAAK,iBACtBi7B,UAAWrM,EAAQ5uB,KAAK,qBAI5B0Z,aAAc,SAASX,EAAOE,GAC5BF,EAAM1Z,KAAK4Z,EAAW0B,SAAStb,QAC/B4Z,EAAWgB,OAAOtX,SAClBoW,EAAMkc,U,UC1PZ91B,IAAEuB,WAAavB,IAAEyB,OAAOzB,IAAEuB,WAAY,CACpCyY,YAAaD,EACb02B,UAAW,QAGbzwC,IAAEuB,WAAW5B,QAAQ6hC,UAAY,CAC/B,IACA,CAAEC,MAAO,aAAc7G,IAAK,aAAcz6B,UAAW,aAAc1B,MAAO,cAC1E,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM","file":"summernote-bs4.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 53);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","import $ from 'jquery';\nimport renderer from '../base/renderer';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame card\"/>');\nconst toolbar = renderer.create('<div class=\"note-toolbar card-header\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable card-block\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"Resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group btn-group\">');\n\nconst dropdown = renderer.create('<div class=\"note-dropdown-menu dropdown-menu\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const option = (typeof item === 'object') ? item.option : undefined;\n\n const dataValue = 'data-value=\"' + value + '\"';\n const dataOption = (option !== undefined) ? ' data-option=\"' + option + '\"' : '';\n return '<a class=\"dropdown-item\" href=\"#\" ' + (dataValue + dataOption) + ' role=\"listitem\" aria-label=\"' + value + '\">' + content + '</a>';\n }).join('') : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents) {\n return contents;\n};\n\nconst dropdownCheck = renderer.create('<div class=\"note-dropdown-menu dropdown-menu note-check\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n return '<a class=\"dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + item + '\">' + icon(options.checkClassName) + ' ' + content + '</a>';\n }).join('') : options.items;\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dialog = renderer.create('<div class=\"modal note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"modal-dialog\">',\n '<div class=\"modal-content\">',\n (options.title ? '<div class=\"modal-header\">' +\n '<h4 class=\"modal-title\">' + options.title + '</h4>' +\n '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" aria-hidden=\"true\">×</button>' +\n '</div>' : ''),\n '<div class=\"modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n '</div>',\n ].join(''));\n});\n\nconst popover = renderer.create([\n '<div class=\"note-popover popover in\">',\n '<div class=\"arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction);\n\n if (options.hideArrow) {\n $node.find('.arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"form-check\"></div>', function($node, options) {\n $node.html([\n '<label class=\"form-check-label\"' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input type=\"checkbox\" class=\"form-check-input\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-label=\"' + (options.text ? options.text : '') + '\"',\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n ' ' + (options.text ? options.text : '') +\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"></' + tagName+'>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n dropdown: dropdown,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheck: dropdownCheck,\n dialog: dialog,\n popover: popover,\n icon: icon,\n checkbox: checkbox,\n options: editorOptions,\n\n palette: function($node, options) {\n return renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n if (options.tooltip) {\n $node.find('.note-color-btn').tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n });\n }\n })($node, options);\n },\n\n button: function($node, options) {\n return renderer.create('<button type=\"button\" class=\"note-btn btn btn-light btn-sm\" tabindex=\"-1\">', function($node, options) {\n if (options && options.tooltip) {\n $node.attr({\n title: options.tooltip,\n 'aria-label': options.tooltip,\n }).tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n }).on('click', (e) => {\n $(e.currentTarget).tooltip('hide');\n });\n }\n if (options && options.codeviewButton) {\n $node.addClass('note-codeview-keep');\n }\n })($node, options);\n },\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('shown.bs.modal', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('hidden.bs.modal', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.modal('show');\n },\n\n hideDialog: function($dialog) {\n $dialog.modal('hide');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-bs4.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'bs4',\n});\n\n$.summernote.options.styleTags = [\n 'p',\n { title: 'Blockquote', tag: 'blockquote', className: 'blockquote', value: 'blockquote' },\n 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n];\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-lite.css b/admin/vendors/summernote/dist/summernote-lite.css new file mode 100644 index 0000000000000000000000000000000000000000..e50574ea89eb3ed017d022c0c35af55dc9c2d7e7 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.css @@ -0,0 +1,13 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +@font-face{font-family:"summernote";font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class^=note-icon]:before,[class*=" note-icon"]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align::before{content:""}.note-icon-align-center::before{content:""}.note-icon-align-indent::before{content:""}.note-icon-align-justify::before{content:""}.note-icon-align-left::before{content:""}.note-icon-align-outdent::before{content:""}.note-icon-align-right::before{content:""}.note-icon-arrow-circle-down::before{content:""}.note-icon-arrow-circle-left::before{content:""}.note-icon-arrow-circle-right::before{content:""}.note-icon-arrow-circle-up::before{content:""}.note-icon-arrows-alt::before{content:""}.note-icon-arrows-h::before{content:""}.note-icon-arrows-v::before{content:""}.note-icon-bold::before{content:""}.note-icon-caret::before{content:""}.note-icon-chain-broken::before{content:""}.note-icon-circle::before{content:""}.note-icon-close::before{content:""}.note-icon-code::before{content:""}.note-icon-col-after::before{content:""}.note-icon-col-before::before{content:""}.note-icon-col-remove::before{content:""}.note-icon-eraser::before{content:""}.note-icon-float-left::before{content:""}.note-icon-float-none::before{content:""}.note-icon-float-right::before{content:""}.note-icon-font::before{content:""}.note-icon-frame::before{content:""}.note-icon-italic::before{content:""}.note-icon-link::before{content:""}.note-icon-magic::before{content:""}.note-icon-menu-check::before{content:""}.note-icon-minus::before{content:""}.note-icon-orderedlist::before{content:""}.note-icon-pencil::before{content:""}.note-icon-picture::before{content:""}.note-icon-question::before{content:""}.note-icon-redo::before{content:""}.note-icon-rollback::before{content:""}.note-icon-row-above::before{content:""}.note-icon-row-below::before{content:""}.note-icon-row-remove::before{content:""}.note-icon-special-character::before{content:""}.note-icon-square::before{content:""}.note-icon-strikethrough::before{content:""}.note-icon-subscript::before{content:""}.note-icon-summernote::before{content:""}.note-icon-superscript::before{content:""}.note-icon-table::before{content:""}.note-icon-text-height::before{content:""}.note-icon-trash::before{content:""}.note-icon-underline::before{content:""}.note-icon-undo::before{content:""}.note-icon-unorderedlist::before{content:""}.note-icon-video::before{content:""}.note-frame{-ms-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif;border-radius:4px}.note-toolbar{padding:10px 5px;border-bottom:1px solid #e2e2e2;color:#333;background-color:#f5f5f5;border-color:#ddd;border-top-left-radius:3px;border-top-right-radius:3px}.note-btn-group{position:relative;display:inline-block;margin-right:8px}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn:not(:first-child),.note-btn-group>.note-btn-group:not(:first-child)>.note-btn{border-top-left-radius:0;border-bottom-left-radius:0}.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle),.note-btn-group>.note-btn-group:not(:last-child)>.note-btn{border-top-right-radius:0;border-bottom-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{display:inline-block;font-weight:400;margin-bottom:0;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid #dae0e5;white-space:nowrap;outline:0;color:#333;background-color:#fff;border-color:#dae0e5;padding:5px 10px;font-size:14px;line-height:1.4;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.note-btn:focus,.note-btn.focus{color:#333;background-color:#ebebeb;border-color:#dae0e5}.note-btn:hover{color:#333;background-color:#ebebeb;border-color:#dae0e5}.note-btn.disabled:focus,.note-btn.disabled.focus,.note-btn[disabled]:focus,.note-btn[disabled].focus,fieldset[disabled] .note-btn:focus,fieldset[disabled] .note-btn.focus{background-color:#fff;border-color:#dae0e5}.note-btn:hover,.note-btn:focus,.note-btn.focus{color:#333;text-decoration:none;border:1px solid #dae0e5;background-color:#ebebeb;outline:0;border-radius:1px}.note-btn:active,.note-btn.active{outline:0;background-image:none;color:#333;text-decoration:none;border:1px solid #dae0e5;background-color:#ebebeb;outline:0;border-radius:1px;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{cursor:not-allowed;-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);box-shadow:none}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){padding-left:3px;margin-right:-5px}.note-btn-primary{background:#fa6362;color:#fff}.note-btn-primary:hover,.note-btn-primary:focus,.note-btn-primary.focus{color:#fff;text-decoration:none;border:1px solid #dae0e5;background-color:#fa6362;border-radius:1px}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=submit].note-btn-block,input[type=reset].note-btn-block,input[type=button].note-btn-block{width:100%}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.close{float:right;font-size:21px;line-height:1;color:#000;opacity:.2}.close:hover{-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{width:30px;padding-left:5px}.note-dropdown-menu{display:none;min-width:100px;position:absolute;top:100%;left:0;z-index:1000;float:left;text-align:left;background:#fff;border:1px solid #e2e2e2;padding:5px;background-clip:padding-box;box-shadow:0 1px 1px rgba(0,0,0,.06)}.note-dropdown-menu>*:last-child{margin-right:0}.note-btn-group.open .note-dropdown-menu{display:block}.note-dropdown-item{display:block}.note-dropdown-item:hover{background-color:#ebebeb}a.note-dropdown-item,a.note-dropdown-item:hover{margin:5px 0;color:#000;text-decoration:none}.note-modal{position:fixed;left:0;right:0;top:0;bottom:0;z-index:1050;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);display:none}.note-modal.open{display:block}.note-modal-content{position:relative;width:auto;margin:30px 20px;border:1px solid rgba(0,0,0,.2);background:#fff;background-clip:border-box;outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal-header{padding:10px 20px;border:1px solid #ededef}.note-modal-body{position:relative;padding:20px 30px}.note-modal-body kbd{border-radius:2px;background-color:#000;color:#fff;padding:3px 5px;font-weight:700;-ms-box-sizing:border-box;box-sizing:border-box}.note-modal-footer{height:40px;padding:10px;text-align:center}.note-modal-footer a{color:#337ab7;text-decoration:none}.note-modal-footer a:hover,.note-modal-footer a:focus{color:#23527c;text-decoration:underline}.note-modal-footer .note-btn{float:right}.note-modal-title{font-size:20px;color:#42515f;margin:0;line-height:1.4}.note-modal-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:1040;background:#000;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);display:none}.note-modal-backdrop.open{display:block}@media(min-width: 768px){.note-modal-content{width:600px;margin:30px auto}}@media(min-width: 992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.note-modal .note-nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.note-modal .note-nav-link{display:block;padding:.5rem 1rem;color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{color:#495057;background-color:#fff;border-color:#ddd #ddd #fff}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child,.note-modal .note-tab-content>.note-tab-pane{display:none}.note-modal .note-tab-content>:last-child,.note-modal .note-tab-content>.note-tab-pane:target{display:block}.note-form-group{padding-bottom:20px}.note-form-group:last-child{padding-bottom:0}.note-form-label{display:block;width:100%;font-size:16px;color:#42515f;margin-bottom:10px;font-weight:700}.note-input{width:100%;display:block;border:1px solid #ededef;background:#fff;outline:0;padding:6px 4px;font-size:14px;-ms-box-sizing:border-box;box-sizing:border-box}.note-input::-webkit-input-placeholder{color:#eee}.note-input:-moz-placeholder{color:#eee}.note-input::-moz-placeholder{color:#eee}.note-input:-ms-input-placeholder{color:#eee}.note-tooltip{position:absolute;z-index:1070;display:block;font-size:13px;transition:opacity .15s;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0)}.note-tooltip.in{-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90)}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.note-tooltip.top .note-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.note-tooltip.right .note-tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.note-tooltip.left .note-tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.note-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.note-tooltip-content{max-width:200px;font-family:sans-serif;padding:3px 8px;color:#fff;text-align:center;background-color:#000}.note-popover{position:absolute;z-index:1060;display:block;font-size:13px;font-family:sans-serif;display:none;background:#fff;border:1px solid rgba(0,0,0,.2);border:1px solid #ccc}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{top:-11px;left:20px;margin-left:-10px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.note-popover.bottom .note-popover-arrow::after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.note-popover.top .note-popover-arrow{bottom:-11px;left:20px;margin-left:-10px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25)}.note-popover.top .note-popover-arrow::after{bottom:1px;margin-left:-10px;content:" ";border-bottom-width:0;border-top-color:#fff}.note-popover.right .note-popover-arrow{top:50%;left:-11px;margin-top:-10px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.note-popover.right .note-popover-arrow::after{left:1px;margin-top:-10px;content:" ";border-left-width:0;border-right-color:#fff}.note-popover.left .note-popover-arrow{top:50%;right:-11px;margin-top:-10px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.note-popover.left .note-popover-arrow::after{right:1px;margin-top:-10px;content:" ";border-right-width:0;border-left-color:#fff}.note-popover-arrow{position:absolute;width:0;height:0;border:11px solid transparent}.note-popover-arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;content:" ";border-width:10px}.note-popover-content{padding:3px 8px;color:#000;text-align:center;background-color:#fff;min-width:100px;min-height:30px}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-frame,.note-editor.note-airframe{border:1px solid #00000032}.note-editor.note-frame.codeview .note-editing-area .note-editable,.note-editor.note-airframe.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable,.note-editor.note-airframe.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area,.note-editor.note-airframe .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable,.note-editor.note-airframe .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-frame .note-editing-area .note-codable,.note-editor.note-airframe .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-frame.fullscreen,.note-editor.note-airframe.fullscreen{position:fixed;top:0;left:0;width:100% !important;z-index:1050}.note-editor.note-frame.fullscreen .note-resizebar,.note-editor.note-airframe.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output,.note-editor.note-airframe .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-frame .note-status-output:empty,.note-editor.note-airframe .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-frame .note-status-output .pull-right,.note-editor.note-airframe .note-status-output .pull-right{float:right !important}.note-editor.note-frame .note-status-output .text-muted,.note-editor.note-airframe .note-status-output .text-muted{color:#777}.note-editor.note-frame .note-status-output .text-primary,.note-editor.note-airframe .note-status-output .text-primary{color:#286090}.note-editor.note-frame .note-status-output .text-success,.note-editor.note-airframe .note-status-output .text-success{color:#3c763d}.note-editor.note-frame .note-status-output .text-info,.note-editor.note-airframe .note-status-output .text-info{color:#31708f}.note-editor.note-frame .note-status-output .text-warning,.note-editor.note-airframe .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-frame .note-status-output .text-danger,.note-editor.note-airframe .note-status-output .text-danger{color:#a94442}.note-editor.note-frame .note-status-output .alert,.note-editor.note-airframe .note-status-output .alert{margin:-7px 0 0 0;padding:7px 10px 2px 10px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-frame .note-status-output .alert .note-icon,.note-editor.note-airframe .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success,.note-editor.note-airframe .note-status-output .alert-success{color:#3c763d !important;background-color:#dff0d8 !important}.note-editor.note-frame .note-status-output .alert-info,.note-editor.note-airframe .note-status-output .alert-info{color:#31708f !important;background-color:#d9edf7 !important}.note-editor.note-frame .note-status-output .alert-warning,.note-editor.note-airframe .note-status-output .alert-warning{color:#8a6d3b !important;background-color:#fcf8e3 !important}.note-editor.note-frame .note-status-output .alert-danger,.note-editor.note-airframe .note-status-output .alert-danger{color:#a94442 !important;background-color:#f2dede !important}.note-editor.note-frame .note-statusbar,.note-editor.note-airframe .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar .note-resizebar,.note-editor.note-airframe .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar.locked .note-resizebar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder,.note-editor.note-airframe .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px !important}.note-toolbar{position:relative}.note-popover .popover-content,.note-editor .note-toolbar{margin:0;padding:0 0 5px 5px}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-popover .popover-content .note-btn-group .note-table,.note-editor .note-toolbar .note-btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute !important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative !important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute !important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p{margin:0;padding:0}.note-popover .popover-content .note-color-all .note-dropdown-menu,.note-editor .note-toolbar .note-color-all .note-dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-toggle,.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .note-dropdown-menu,.note-editor .note-toolbar .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-popover .popover-content .note-para .note-dropdown-menu>div+div,.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-popover .popover-content .note-dropdown-menu,.note-editor .note-toolbar .note-dropdown-menu{min-width:160px}.note-popover .popover-content .note-dropdown-menu.right,.note-editor .note-toolbar .note-dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .note-dropdown-menu.right::before,.note-editor .note-toolbar .note-dropdown-menu.right::before{right:9px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.right::after,.note-editor .note-toolbar .note-dropdown-menu.right::after{right:10px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.note-check a i,.note-editor .note-toolbar .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-popover .popover-content .note-dropdown-menu.note-check a.checked i,.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.note-editor .note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.note-editor .note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.note-editor .note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-sizing,.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block !important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}.note-editor .note-editing-area .note-editable table{width:100%;border-collapse:collapse}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;text-decoration:inherit;font-family:inherit;font-weight:inherit;color:#337ab7}.note-editor .note-editing-area .note-editable a:hover,.note-editor .note-editing-area .note-editable a:focus{color:#23527c;text-decoration:underline;outline:0}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{margin-bottom:2px;padding:2px 5px;display:inline-block}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{margin-bottom:5px;display:inline-block} diff --git a/admin/vendors/summernote/dist/summernote-lite.js b/admin/vendors/summernote/dist/summernote-lite.js new file mode 100644 index 0000000000000000000000000000000000000000..a8f7e3da471bd198167fa1ee933c40fa4ee26e53 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.js @@ -0,0 +1,10782 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("jquery")); + else if(typeof define === 'function' && define.amd) + define(["jquery"], factory); + else { + var a = typeof exports === 'object' ? factory(require("jquery")) : factory(root["jQuery"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 51); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 0: +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__0__; + +/***/ }), + +/***/ 1: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + +var Renderer = /*#__PURE__*/function () { + function Renderer(markup, children, options, callback) { + _classCallCheck(this, Renderer); + + this.markup = markup; + this.children = children; + this.options = options; + this.callback = callback; + } + + _createClass(Renderer, [{ + key: "render", + value: function render($parent) { + var $node = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.markup); + + if (this.options && this.options.contents) { + $node.html(this.options.contents); + } + + if (this.options && this.options.className) { + $node.addClass(this.options.className); + } + + if (this.options && this.options.data) { + jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.options.data, function (k, v) { + $node.attr('data-' + k, v); + }); + } + + if (this.options && this.options.click) { + $node.on('click', this.options.click); + } + + if (this.children) { + var $container = $node.find('.note-children-container'); + this.children.forEach(function (child) { + child.render($container.length ? $container : $node); + }); + } + + if (this.callback) { + this.callback($node, this.options); + } + + if (this.options && this.options.callback) { + this.options.callback($node); + } + + if ($parent) { + $parent.append($node); + } + + return $node; + } + }]); + + return Renderer; +}(); + +/* harmony default export */ __webpack_exports__["a"] = ({ + create: function create(markup, callback) { + return function () { + var options = _typeof(arguments[1]) === 'object' ? arguments[1] : arguments[0]; + var children = Array.isArray(arguments[0]) ? arguments[0] : []; + + if (options && options.children) { + children = options.children; + } + + return new Renderer(markup, children, options, callback); + }; + } +}); + +/***/ }), + +/***/ 2: +/***/ (function(module, exports) { + +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; + +/* WEBPACK VAR INJECTION */}.call(this, {})) + +/***/ }), + +/***/ 3: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// CONCATENATED MODULE: ./src/js/base/summernote-en-US.js + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote || { + lang: {} +}; +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang, { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size', + sizeunit: 'Font Size Unit' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize full', + resizeHalf: 'Resize half', + resizeQuarter: 'Resize quarter', + resizeNone: 'Original size', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Remove float', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window', + useProtocol: 'Use default protocol' + }, + table: { + table: 'Table', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Text Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default', + cpSelect: 'Select' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + help: { + 'escape': 'Escape', + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undo the last command', + 'redo': 'Redo the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Undo', + redo: 'Redo' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + }, + output: { + noSelection: 'No Selection Made!' + } + } +}); +// CONCATENATED MODULE: ./src/js/base/core/env.js + +var isSupportAmd = typeof define === 'function' && __webpack_require__(2); // eslint-disable-line + +/** + * returns whether font is installed or not. + * + * @param {String} fontName + * @return {Boolean} + */ + +var genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy']; + +function validFontName(fontName) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.inArray(fontName.toLowerCase(), genericFontFamilies) === -1 ? "'".concat(fontName, "'") : fontName; +} + +function env_isFontInstalled(fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var testText = 'mmmmmmmmmmwwwww'; + var testSize = '200px'; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + context.font = testSize + " '" + testFontName + "'"; + var originalWidth = context.measureText(testText).width; + context.font = testSize + ' ' + validFontName(fontName) + ', "' + testFontName + '"'; + var width = context.measureText(testText).width; + return originalWidth !== width; +} + +var userAgent = navigator.userAgent; +var isMSIE = /MSIE|Trident/i.test(userAgent); +var browserVersion; + +if (isMSIE) { + var matches = /MSIE (\d+[.]\d+)/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } + + matches = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } +} + +var isEdge = /Edge\/\d+/.test(userAgent); +var isSupportTouch = 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; // [workaround] IE doesn't have input events for contentEditable +// - see: https://goo.gl/4bfIvA + +var inputEventName = isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; +/** + * @class core.env + * + * Object which check platform and agent + * + * @singleton + * @alternateClassName env + */ + +/* harmony default export */ var env = ({ + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: isMSIE, + isEdge: isEdge, + isFF: !isEdge && /firefox/i.test(userAgent), + isPhantom: /PhantomJS/i.test(userAgent), + isWebkit: !isEdge && /webkit/i.test(userAgent), + isChrome: !isEdge && /chrome/i.test(userAgent), + isSafari: !isEdge && /safari/i.test(userAgent) && !/chrome/i.test(userAgent), + browserVersion: browserVersion, + jqueryVersion: parseFloat(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.jquery), + isSupportAmd: isSupportAmd, + isSupportTouch: isSupportTouch, + isFontInstalled: env_isFontInstalled, + isW3CRangeSupport: !!document.createRange, + inputEventName: inputEventName, + genericFontFamilies: genericFontFamilies, + validFontName: validFontName +}); +// CONCATENATED MODULE: ./src/js/base/core/func.js + +/** + * @class core.func + * + * func utils (for high-order func's arg) + * + * @singleton + * @alternateClassName func + */ + +function eq(itemA) { + return function (itemB) { + return itemA === itemB; + }; +} + +function eq2(itemA, itemB) { + return itemA === itemB; +} + +function peq2(propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; +} + +function ok() { + return true; +} + +function fail() { + return false; +} + +function not(f) { + return function () { + return !f.apply(f, arguments); + }; +} + +function and(fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; +} + +function func_self(a) { + return a; +} + +function func_invoke(obj, method) { + return function () { + return obj[method].apply(obj, arguments); + }; +} + +var idCounter = 0; +/** + * reset globally-unique id + * + */ + +function resetUniqueId() { + idCounter = 0; +} +/** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + + +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} +/** + * returns bnd (bounds) from rect + * + * - IE Compatibility Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + + +function rect2bnd(rect) { + var $document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; +} +/** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + + +function invertObject(obj) { + var inverted = {}; + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + inverted[obj[key]] = key; + } + } + + return inverted; +} +/** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + + +function namespaceToCamel(namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function (name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); +} +/** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. + * @param {Function} func + * @param {Number} wait + * @param {Boolean} immediate + * @return {Function} + */ + + +function debounce(func, wait, immediate) { + var timeout; + return function () { + var context = this; + var args = arguments; + + var later = function later() { + timeout = null; + + if (!immediate) { + func.apply(context, args); + } + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + + if (callNow) { + func.apply(context, args); + } + }; +} +/** + * + * @param {String} url + * @return {Boolean} + */ + + +function isValidUrl(url) { + var expression = /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi; + return expression.test(url); +} + +/* harmony default export */ var func = ({ + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: func_self, + not: not, + and: and, + invoke: func_invoke, + resetUniqueId: resetUniqueId, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel, + debounce: debounce, + isValidUrl: isValidUrl +}); +// CONCATENATED MODULE: ./src/js/base/core/lists.js + +/** + * returns the first item of an array. + * + * @param {Array} array + */ + +function lists_head(array) { + return array[0]; +} +/** + * returns the last item of an array. + * + * @param {Array} array + */ + + +function lists_last(array) { + return array[array.length - 1]; +} +/** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + + +function initial(array) { + return array.slice(0, array.length - 1); +} +/** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + + +function tail(array) { + return array.slice(1); +} +/** + * returns item of array + */ + + +function find(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + var item = array[idx]; + + if (pred(item)) { + return item; + } + } +} +/** + * returns true if all of the values in the array pass the predicate truth test. + */ + + +function lists_all(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!pred(array[idx])) { + return false; + } + } + + return true; +} +/** + * returns true if the value is present in the list. + */ + + +function contains(array, item) { + if (array && array.length && item) { + if (array.indexOf) { + return array.indexOf(item) !== -1; + } else if (array.contains) { + // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains` + return array.contains(item); + } + } + + return false; +} +/** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + + +function sum(array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); +} +/** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + + +function from(collection) { + var result = []; + var length = collection.length; + var idx = -1; + + while (++idx < length) { + result[idx] = collection[idx]; + } + + return result; +} +/** + * returns whether list is empty or not + */ + + +function lists_isEmpty(array) { + return !array || !array.length; +} +/** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + + +function clusterBy(array, fn) { + if (!array.length) { + return []; + } + + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = lists_last(memo); + + if (fn(lists_last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + + return memo; + }, [[lists_head(array)]]); +} +/** + * returns a copy of the array with all false values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + + +function compact(array) { + var aResult = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (array[idx]) { + aResult.push(array[idx]); + } + } + + return aResult; +} +/** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + + +function unique(array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; +} +/** + * returns next item. + * @param {Array} array + */ + + +function lists_next(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx + 1]; + } + + return null; +} +/** + * returns prev item. + * @param {Array} array + */ + + +function prev(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx - 1]; + } + + return null; +} +/** + * @class core.list + * + * list utils + * + * @singleton + * @alternateClassName list + */ + + +/* harmony default export */ var lists = ({ + head: lists_head, + last: lists_last, + initial: initial, + tail: tail, + prev: prev, + next: lists_next, + find: find, + contains: contains, + all: lists_all, + sum: sum, + from: from, + isEmpty: lists_isEmpty, + clusterBy: clusterBy, + compact: compact, + unique: unique +}); +// CONCATENATED MODULE: ./src/js/base/core/dom.js + + + + +var NBSP_CHAR = String.fromCharCode(160); +var ZERO_WIDTH_NBSP_CHAR = "\uFEFF"; +/** + * @method isEditable + * + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + +function isEditable(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-editable'); +} +/** + * @method isControlSizing + * + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function isControlSizing(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-control-sizing'); +} +/** + * @method makePredByNodeName + * + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {Function} + */ + + +function makePredByNodeName(nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; +} +/** + * @method isText + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + + +function isText(node) { + return node && node.nodeType === 3; +} +/** + * @method isElement + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is element(1) + */ + + +function isElement(node) { + return node && node.nodeType === 1; +} +/** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + + +function isVoid(node) { + return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase()); +} + +function isPara(node) { + if (isEditable(node)) { + return false; + } // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + + + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +function isHeading(node) { + return node && /^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +var isPre = makePredByNodeName('PRE'); +var isLi = makePredByNodeName('LI'); + +function isPurePara(node) { + return isPara(node) && !isLi(node); +} + +var isTable = makePredByNodeName('TABLE'); +var isData = makePredByNodeName('DATA'); + +function dom_isInline(node) { + return !isBodyContainer(node) && !isList(node) && !isHr(node) && !isPara(node) && !isTable(node) && !isBlockquote(node) && !isData(node); +} + +function isList(node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); +} + +var isHr = makePredByNodeName('HR'); + +function dom_isCell(node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); +} + +var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + +function isBodyContainer(node) { + return dom_isCell(node) || isBlockquote(node) || isEditable(node); +} + +var isAnchor = makePredByNodeName('A'); + +function isParaInline(node) { + return dom_isInline(node) && !!dom_ancestor(node, isPara); +} + +function isBodyInline(node) { + return dom_isInline(node) && !dom_ancestor(node, isPara); +} + +var isBody = makePredByNodeName('BODY'); +/** + * returns whether nodeB is closest sibling of nodeA + * + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + +function isClosestSibling(nodeA, nodeB) { + return nodeA.nextSibling === nodeB || nodeA.previousSibling === nodeB; +} +/** + * returns array of closest siblings with node + * + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + + +function withClosestSiblings(node, pred) { + pred = pred || func.ok; + var siblings = []; + + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + + siblings.push(node); + + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + + return siblings; +} +/** + * blank HTML for cursor position + * - [workaround] old IE only works with + * - [workaround] IE11 and other browser works with bogus br + */ + + +var blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>'; +/** + * @method nodeLength + * + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + +function nodeLength(node) { + if (isText(node)) { + return node.nodeValue.length; + } + + if (node) { + return node.childNodes.length; + } + + return 0; +} +/** + * returns whether deepest child node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function deepestChildIsEmpty(node) { + do { + if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break; + } while (node = node.firstElementChild); + + return dom_isEmpty(node); +} +/** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function dom_isEmpty(node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex) <p><br></p>, <span><br></span> + return true; + } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') { + // ex) <p></p>, <span></span> + return true; + } + + return false; +} +/** + * padding blankHTML if node is empty (for cursor position) + */ + + +function paddingBlankHTML(node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } +} +/** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function dom_ancestor(node, pred) { + while (node) { + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function singleChildAncestor(node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { + break; + } + + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listAncestor(node, pred) { + pred = pred || func.fail; + var ancestors = []; + dom_ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; +} +/** + * find farthest ancestor predicate hit + */ + + +function lastAncestor(node, pred) { + var ancestors = listAncestor(node); + return lists.last(ancestors.filter(pred)); +} +/** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + + +function dom_commonAncestor(nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + + for (var n = nodeB; n; n = n.parentNode) { + if (ancestors.indexOf(n) > -1) return n; + } + + return null; // difference document area +} +/** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listPrev(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.previousSibling; + } + + return nodes; +} +/** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listNext(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.nextSibling; + } + + return nodes; +} +/** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listDescendant(node, pred) { + var descendants = []; + pred = pred || func.ok; // start DFS(depth first search) with node + + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendants.push(current); + } + + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendants; +} +/** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + + +function wrap(node, wrapperName) { + var parent = node.parentNode; + var wrapper = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<' + wrapperName + '>')[0]; + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; +} +/** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + + +function insertAfter(node, preceding) { + var next = preceding.nextSibling; + var parent = preceding.parentNode; + + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + + return node; +} +/** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + + +function appendChildNodes(node, aChild) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; +} +/** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isLeftEdgePoint(point) { + return point.offset === 0; +} +/** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isRightEdgePoint(point) { + return point.offset === nodeLength(point.node); +} +/** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isEdgePoint(point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); +} +/** + * returns whether node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function dom_isLeftEdgeOf(node, ancestor) { + while (node && node !== ancestor) { + if (dom_position(node) !== 0) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgeOf(node, ancestor) { + if (!ancestor) { + return false; + } + + while (node && node !== ancestor) { + if (dom_position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether point is left edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isLeftEdgePointOf(point, ancestor) { + return isLeftEdgePoint(point) && dom_isLeftEdgeOf(point.node, ancestor); +} +/** + * returns whether point is right edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgePointOf(point, ancestor) { + return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor); +} +/** + * returns offset from parent. + * + * @param {Node} node + */ + + +function dom_position(node) { + var offset = 0; + + while (node = node.previousSibling) { + offset += 1; + } + + return offset; +} + +function hasChildren(node) { + return !!(node && node.childNodes && node.childNodes.length); +} +/** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_prevPoint(point, isSkipInnerOffset) { + var node; + var offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = dom_position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_nextPoint(point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint with empty node + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function nextPointWithEmptyNode(point, isSkipInnerOffset) { + var node, offset; // if node is empty string node, return current node's sibling. + + if (dom_isEmpty(point.node)) { + node = point.node.nextSibling; + offset = 0; + return { + node: node, + offset: offset + }; + } + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } // if next node is editable, return current node's sibling node. + + + if (isEditable(node)) { + node = point.node.nextSibling; + offset = 0; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + + if (dom_isEmpty(node)) { + return null; + } + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + + if (dom_isEmpty(node)) { + return null; + } + } + + return { + node: node, + offset: offset + }; +} +/* +* returns the next Text node index or 0 if not found. +*/ + + +function getNextTextNode(actual) { + if (!actual.nextSibling) return undefined; + if (actual.parent !== actual.nextSibling.parent) return undefined; + if (isText(actual.nextSibling)) return actual.nextSibling; + return getNextTextNode(actual.nextSibling); +} +/** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + + +function isSamePoint(pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; +} +/** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isVisiblePoint(point) { + if (isText(point.node) || !hasChildren(point.node) || dom_isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; +} +/** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function prevPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_prevPoint(point); + } + + return null; +} +/** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function nextPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_nextPoint(point); + } + + return null; +} +/** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isCharPoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && ch !== ' ' && ch !== NBSP_CHAR; +} +/** + * returns whether point has space or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isSpacePoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch === ' ' || ch === NBSP_CHAR; +} +/** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + + +function walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && startPoint.node !== point.node && endPoint.node !== point.node; + point = nextPointWithEmptyNode(point, isSkipOffset); + } +} +/** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + + +function makeOffsetPath(ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return ancestors.map(dom_position).reverse(); +} +/** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + + +function fromOffsetPath(ancestor, offsets) { + var current = ancestor; + + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + + return current; +} +/** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @param {Boolean} [options.isDiscardEmptySplits] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitNode(point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + var isDiscardEmptySplits = options && options.isDiscardEmptySplits; + + if (isDiscardEmptySplits) { + isSkipPaddingBlankHTML = true; + } // edge case + + + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } // split #text + + + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + if (isDiscardEmptySplits) { + if (dom_isEmpty(point.node)) { + remove(point.node); + } + + if (dom_isEmpty(clone)) { + remove(clone); + return point.node.nextSibling; + } + } + + return clone; + } +} +/** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitTree(root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function (node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom_position(node) : nodeLength(parent) + }, options); + }); +} +/** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + + +function splitPoint(point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = lists.last(ancestors) || point.node; + var splitRoot, container; + + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } // if splitRoot is exists, split with splitTree + + + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); // if container is point.node, find pivot with point.offset + + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; +} + +function dom_create(nodeName) { + return document.createElement(nodeName); +} + +function createText(text) { + return document.createTextNode(text); +} +/** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + + +function remove(node, isRemoveChild) { + if (!node || !node.parentNode) { + return; + } + + if (node.removeNode) { + return node.removeNode(isRemoveChild); + } + + var parent = node.parentNode; + + if (!isRemoveChild) { + var nodes = []; + + for (var i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (var _i = 0, _len = nodes.length; _i < _len; _i++) { + parent.insertBefore(nodes[_i], node); + } + } + + parent.removeChild(node); +} +/** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + + +function removeWhile(node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } +} +/** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + + +function dom_replace(node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = dom_create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, lists.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + return newNode; +} + +var isTextarea = makePredByNodeName('TEXTAREA'); +/** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + +function dom_value($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + + return val; +} +/** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + + +function dom_html($node, isNewlineOnBlock) { + var markup = dom_value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + return match + (isEndOfInlineContainer || isBlockNode ? '\n' : ''); + }); + markup = markup.trim(); + } + + return markup; +} + +function posFromPlaceholder(placeholder) { + var $placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(placeholder); + var pos = $placeholder.offset(); + var height = $placeholder.outerHeight(true); // include margin + + return { + left: pos.left, + top: pos.top + height + }; +} + +function attachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.on(key, events[key]); + }); +} + +function detachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.off(key, events[key]); + }); +} +/** + * @method isCustomStyleTag + * + * assert if a node contains a "note-styletag" class, + * which implies that's a custom-made style tag node + * + * @param {Node} an HTML DOM node + */ + + +function isCustomStyleTag(node) { + return node && !isText(node) && lists.contains(node.classList, 'note-styletag'); +} + +/* harmony default export */ var dom = ({ + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + + /** @property {String} blank */ + blank: blankHTML, + + /** @property {String} emptyPara */ + emptyPara: "<p>".concat(blankHTML, "</p>"), + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + isText: isText, + isElement: isElement, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isHeading: isHeading, + isInline: dom_isInline, + isBlock: func.not(dom_isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isPre: isPre, + isList: isList, + isTable: isTable, + isData: isData, + isCell: dom_isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + deepestChildIsEmpty: deepestChildIsEmpty, + isEmpty: dom_isEmpty, + isEmptyAnchor: func.and(isAnchor, dom_isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: dom_isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + isLeftEdgePointOf: isLeftEdgePointOf, + isRightEdgePointOf: isRightEdgePointOf, + prevPoint: dom_prevPoint, + nextPoint: dom_nextPoint, + nextPointWithEmptyNode: nextPointWithEmptyNode, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + isSpacePoint: isSpacePoint, + walkPoint: walkPoint, + ancestor: dom_ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: dom_commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: dom_position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: dom_create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: dom_replace, + html: dom_html, + value: dom_value, + posFromPlaceholder: posFromPlaceholder, + attachEvents: attachEvents, + detachEvents: detachEvents, + isCustomStyleTag: isCustomStyleTag +}); +// CONCATENATED MODULE: ./src/js/base/Context.js +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Context_Context = /*#__PURE__*/function () { + /** + * @param {jQuery} $note + * @param {Object} options + */ + function Context($note, options) { + _classCallCheck(this, Context); + + this.$note = $note; + this.memos = {}; + this.modules = {}; + this.layoutInfo = {}; + this.options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, options); // init ui with options + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui_template(this.options); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.initialize(); + } + /** + * create layout and initialize modules and other resources + */ + + + _createClass(Context, [{ + key: "initialize", + value: function initialize() { + this.layoutInfo = this.ui.createLayout(this.$note); + + this._initialize(); + + this.$note.hide(); + return this; + } + /** + * destroy modules and other resources and remove layout + */ + + }, { + key: "destroy", + value: function destroy() { + this._destroy(); + + this.$note.removeData('summernote'); + this.ui.removeLayout(this.$note, this.layoutInfo); + } + /** + * destory modules and other resources and initialize it again + */ + + }, { + key: "reset", + value: function reset() { + var disabled = this.isDisabled(); + this.code(dom.emptyPara); + + this._destroy(); + + this._initialize(); + + if (disabled) { + this.disable(); + } + } + }, { + key: "_initialize", + value: function _initialize() { + var _this = this; + + // set own id + this.options.id = func.uniqueId(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now()); // set default container for tooltips, popovers, and dialogs + + this.options.container = this.options.container || this.layoutInfo.editor; // add optional buttons + + var buttons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.buttons); + Object.keys(buttons).forEach(function (key) { + _this.memo('button.' + key, buttons[key]); + }); + var modules = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.modules, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.plugins || {}); // add and initialize modules + + Object.keys(modules).forEach(function (key) { + _this.module(key, modules[key], true); + }); + Object.keys(this.modules).forEach(function (key) { + _this.initializeModule(key); + }); + } + }, { + key: "_destroy", + value: function _destroy() { + var _this2 = this; + + // destroy modules with reversed order + Object.keys(this.modules).reverse().forEach(function (key) { + _this2.removeModule(key); + }); + Object.keys(this.memos).forEach(function (key) { + _this2.removeMemo(key); + }); // trigger custom onDestroy callback + + this.triggerEvent('destroy', this); + } + }, { + key: "code", + value: function code(html) { + var isActivated = this.invoke('codeview.isActivated'); + + if (html === undefined) { + this.invoke('codeview.sync'); + return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + } else { + if (isActivated) { + this.invoke('codeview.sync', html); + } else { + this.layoutInfo.editable.html(html); + } + + this.$note.val(html); + this.triggerEvent('change', html, this.layoutInfo.editable); + } + } + }, { + key: "isDisabled", + value: function isDisabled() { + return this.layoutInfo.editable.attr('contenteditable') === 'false'; + } + }, { + key: "enable", + value: function enable() { + this.layoutInfo.editable.attr('contenteditable', true); + this.invoke('toolbar.activate', true); + this.triggerEvent('disable', false); + this.options.editing = true; + } + }, { + key: "disable", + value: function disable() { + // close codeview if codeview is opend + if (this.invoke('codeview.isActivated')) { + this.invoke('codeview.deactivate'); + } + + this.layoutInfo.editable.attr('contenteditable', false); + this.options.editing = false; + this.invoke('toolbar.deactivate', true); + this.triggerEvent('disable', true); + } + }, { + key: "triggerEvent", + value: function triggerEvent() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')]; + + if (callback) { + callback.apply(this.$note[0], args); + } + + this.$note.trigger('summernote.' + namespace, args); + } + }, { + key: "initializeModule", + value: function initializeModule(key) { + var module = this.modules[key]; + module.shouldInitialize = module.shouldInitialize || func.ok; + + if (!module.shouldInitialize()) { + return; + } // initialize module + + + if (module.initialize) { + module.initialize(); + } // attach events + + + if (module.events) { + dom.attachEvents(this.$note, module.events); + } + } + }, { + key: "module", + value: function module(key, ModuleClass, withoutIntialize) { + if (arguments.length === 1) { + return this.modules[key]; + } + + this.modules[key] = new ModuleClass(this); + + if (!withoutIntialize) { + this.initializeModule(key); + } + } + }, { + key: "removeModule", + value: function removeModule(key) { + var module = this.modules[key]; + + if (module.shouldInitialize()) { + if (module.events) { + dom.detachEvents(this.$note, module.events); + } + + if (module.destroy) { + module.destroy(); + } + } + + delete this.modules[key]; + } + }, { + key: "memo", + value: function memo(key, obj) { + if (arguments.length === 1) { + return this.memos[key]; + } + + this.memos[key] = obj; + } + }, { + key: "removeMemo", + value: function removeMemo(key) { + if (this.memos[key] && this.memos[key].destroy) { + this.memos[key].destroy(); + } + + delete this.memos[key]; + } + /** + * Some buttons need to change their visual style immediately once they get pressed + */ + + }, { + key: "createInvokeHandlerAndUpdateState", + value: function createInvokeHandlerAndUpdateState(namespace, value) { + var _this3 = this; + + return function (event) { + _this3.createInvokeHandler(namespace, value)(event); + + _this3.invoke('buttons.updateCurrentStyle'); + }; + } + }, { + key: "createInvokeHandler", + value: function createInvokeHandler(namespace, value) { + var _this4 = this; + + return function (event) { + event.preventDefault(); + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + + _this4.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target); + }; + } + }, { + key: "invoke", + value: function invoke() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var splits = namespace.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && lists.head(splits); + var methodName = hasSeparator ? lists.last(splits) : lists.head(splits); + var module = this.modules[moduleName || 'editor']; + + if (!moduleName && this[methodName]) { + return this[methodName].apply(this, args); + } else if (module && module[methodName] && module.shouldInitialize()) { + return module[methodName].apply(module, args); + } + } + }]); + + return Context; +}(); + + +// CONCATENATED MODULE: ./src/js/summernote.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.extend({ + /** + * Summernote API + * + * @param {Object|String} + * @return {this} + */ + summernote: function summernote() { + var type = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.type(lists.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + var options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options, hasInitOptions ? lists.head(arguments) : {}); // Update options + + options.langInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang[options.lang]); + options.icons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options.icons, options.icons); + options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip; + this.each(function (idx, note) { + var $note = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(note); + + if (!$note.data('summernote')) { + var context = new Context_Context($note, options); + $note.data('summernote', context); + $note.data('summernote').triggerEvent('init', context.layoutInfo); + } + }); + var $note = this.first(); + + if ($note.length) { + var context = $note.data('summernote'); + + if (isExternalAPICalled) { + return context.invoke.apply(context, lists.from(arguments)); + } else if (options.focus) { + context.invoke('editor.focus'); + } + } + + return this; + } +}); +// CONCATENATED MODULE: ./src/js/base/core/range.js +function range_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function range_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function range_createClass(Constructor, protoProps, staticProps) { if (protoProps) range_defineProperties(Constructor.prototype, protoProps); if (staticProps) range_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +/** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + +function textRangeToPoint(textRange, isStart) { + var container = textRange.parentElement(); + var offset; + var tester = document.body.createTextRange(); + var prevContainer; + var childNodes = lists.from(container.childNodes); + + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + + tester.moveToElementText(childNodes[offset]); + + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(); + var curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } // [workaround] enforce IE to re-reference curTextNode, hack + + + var dummy = curTextNode.nodeValue; // eslint-disable-line + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; +} +/** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + + +function pointToTextRange(point) { + var textRangeInfo = function textRangeInfo(container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = lists.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; +} +/** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + + +var range_WrappedRange = /*#__PURE__*/function () { + function WrappedRange(sc, so, ec, eo) { + range_classCallCheck(this, WrappedRange); + + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; // isOnEditable: judge whether range is on editable or not + + this.isOnEditable = this.makeIsOn(dom.isEditable); // isOnList: judge whether range is on list node or not + + this.isOnList = this.makeIsOn(dom.isList); // isOnAnchor: judge whether range is on anchor node or not + + this.isOnAnchor = this.makeIsOn(dom.isAnchor); // isOnCell: judge whether range is on cell node or not + + this.isOnCell = this.makeIsOn(dom.isCell); // isOnData: judge whether range is on data node or not + + this.isOnData = this.makeIsOn(dom.isData); + } // nativeRange: get nativeRange from sc, so, ec, eo + + + range_createClass(WrappedRange, [{ + key: "nativeRange", + value: function nativeRange() { + if (env.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(this.sc, this.so); + w3cRange.setEnd(this.ec, this.eo); + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: this.sc, + offset: this.so + }); + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: this.ec, + offset: this.eo + })); + return textRange; + } + } + }, { + key: "getPoints", + value: function getPoints() { + return { + sc: this.sc, + so: this.so, + ec: this.ec, + eo: this.eo + }; + } + }, { + key: "getStartPoint", + value: function getStartPoint() { + return { + node: this.sc, + offset: this.so + }; + } + }, { + key: "getEndPoint", + value: function getEndPoint() { + return { + node: this.ec, + offset: this.eo + }; + } + /** + * select update visible range + */ + + }, { + key: "select", + value: function select() { + var nativeRng = this.nativeRange(); + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + } + /** + * Moves the scrollbar to start container(sc) of current range + * + * @return {WrappedRange} + */ + + }, { + key: "scrollIntoView", + value: function scrollIntoView(container) { + var height = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(container).height(); + + if (container.scrollTop + height < this.sc.offsetTop) { + container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop); + } + + return this; + } + /** + * @return {WrappedRange} + */ + + }, { + key: "normalize", + value: function normalize() { + /** + * @param {BoundaryPoint} point + * @param {Boolean} isLeftToRight - true: prefer to choose right node + * - false: prefer to choose left node + * @return {BoundaryPoint} + */ + var getVisiblePoint = function getVisiblePoint(point, isLeftToRight) { + if (!point) { + return point; + } // Just use the given point [XXX:Adhoc] + // - case 01. if the point is on the middle of the node + // - case 02. if the point is on the right edge and prefer to choose left node + // - case 03. if the point is on the left edge and prefer to choose right node + // - case 04. if the point is on the right edge and prefer to choose right node but the node is void + // - case 05. if the point is on the left edge and prefer to choose left node but the node is void + // - case 06. if the point is on the block node and there is no children + + + if (dom.isVisiblePoint(point)) { + if (!dom.isEdgePoint(point) || dom.isRightEdgePoint(point) && !isLeftToRight || dom.isLeftEdgePoint(point) && isLeftToRight || dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling) || dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling) || dom.isBlock(point.node) && dom.isEmpty(point.node)) { + return point; + } + } // point on block's edge + + + var block = dom.ancestor(point.node, dom.isBlock); + var hasRightNode = false; + + if (!hasRightNode) { + var prevPoint = dom.prevPoint(point) || { + node: null + }; + hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight; + } + + var hasLeftNode = false; + + if (!hasLeftNode) { + var _nextPoint = dom.nextPoint(point) || { + node: null + }; + + hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(_nextPoint.node)) && isLeftToRight; + } + + if (hasRightNode || hasLeftNode) { + // returns point already on visible point + if (dom.isVisiblePoint(point)) { + return point; + } // reverse direction + + + isLeftToRight = !isLeftToRight; + } + + var nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint) : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint); + return nextPoint || point; + }; + + var endPoint = getVisiblePoint(this.getEndPoint(), false); + var startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true); + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + + }, { + key: "nodes", + value: function nodes(pred, options) { + pred = pred || func.ok; + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; // TODO compare points and sort + + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + var nodes = []; + var leftEdgeNodes = []; + dom.walkPoint(startPoint, endPoint, function (point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + + if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + return lists.unique(nodes); + } + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + + }, { + key: "commonAncestor", + value: function commonAncestor() { + return dom.commonAncestor(this.sc, this.ec); + } + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + + }, { + key: "expand", + value: function expand(pred) { + var startAncestor = dom.ancestor(this.sc, pred); + var endAncestor = dom.ancestor(this.ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(this.sc, this.so, this.ec, this.eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + + }, { + key: "collapse", + value: function collapse(isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(this.sc, this.so, this.sc, this.so); + } else { + return new WrappedRange(this.ec, this.eo, this.ec, this.eo); + } + } + /** + * splitText on range + */ + + }, { + key: "splitText", + value: function splitText() { + var isSameContainer = this.sc === this.ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) { + this.ec.splitText(this.eo); + } + + if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = this.sc.splitText(this.so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = this.eo - this.so; + } + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * delete contents on range + * @return {WrappedRange} + */ + + }, { + key: "deleteContents", + value: function deleteContents() { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); // find new cursor point + + var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + return !lists.contains(nodes, point.node); + }); + var emptyParents = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(nodes, function (idx, node) { + // find empty parents + var parent = node.parentNode; + + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + + dom.remove(node, false); + }); // remove empty parents + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyParents, function (idx, node) { + dom.remove(node, false); + }); + return new WrappedRange(point.node, point.offset, point.node, point.offset).normalize(); + } + /** + * makeIsOn: return isOn(pred) function + */ + + }, { + key: "makeIsOn", + value: function makeIsOn(pred) { + return function () { + var ancestor = dom.ancestor(this.sc, pred); + return !!ancestor && ancestor === dom.ancestor(this.ec, pred); + }; + } + /** + * @param {Function} pred + * @return {Boolean} + */ + + }, { + key: "isLeftEdgeOf", + value: function isLeftEdgeOf(pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + } + /** + * returns whether range was collapsed or not + */ + + }, { + key: "isCollapsed", + value: function isCollapsed() { + return this.sc === this.ec && this.so === this.eo; + } + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + + }, { + key: "wrapBodyInlineWithPara", + value: function wrapBodyInlineWithPara() { + if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) { + this.sc.innerHTML = dom.emptyPara; + return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0); + } + /** + * [workaround] firefox often create range on not visible point. so normalize here. + * - firefox: |<p>text</p>| + * - chrome: <p>|text|</p> + */ + + + var rng = this.normalize(); + + if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) { + return rng; + } // find inline top ancestor + + + var topAncestor; + + if (dom.isInline(rng.sc)) { + var ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline)); + topAncestor = lists.last(ancestors); + + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so]; + } + } else { + topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0]; + } + + if (topAncestor) { + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); // wrap with paragraph + + if (inlineSiblings.length) { + var para = dom.wrap(lists.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, lists.tail(inlineSiblings)); + } + } + + return this.normalize(); + } + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + + }, { + key: "insertNode", + value: function insertNode(node) { + var rng = this; + + if (dom.isText(node) || dom.isInline(node)) { + rng = this.wrapBodyInlineWithPara().deleteContents(); + } + + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + + if (dom.isEmpty(info.rightNode) && dom.isPara(node)) { + info.rightNode.parentNode.removeChild(info.rightNode); + } + } else { + info.container.appendChild(node); + } + + return node; + } + /** + * insert html at current cursor + */ + + }, { + key: "pasteHTML", + value: function pasteHTML(markup) { + markup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.trim(markup); + var contentsContainer = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').html(markup)[0]; + var childNodes = lists.from(contentsContainer.childNodes); // const rng = this.wrapBodyInlineWithPara().deleteContents(); + + var rng = this; + var reversed = false; + + if (rng.so >= 0) { + childNodes = childNodes.reverse(); + reversed = true; + } + + childNodes = childNodes.map(function (childNode) { + return rng.insertNode(childNode); + }); + + if (reversed) { + childNodes = childNodes.reverse(); + } + + return childNodes; + } + /** + * returns text in range + * + * @return {String} + */ + + }, { + key: "toString", + value: function toString() { + var nativeRng = this.nativeRange(); + return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + } + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordRange", + value: function getWordRange(findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordsRange", + value: function getWordsRange(findAfter) { + var endPoint = this.getEndPoint(); + + var isNotTextPoint = function isNotTextPoint(point) { + return !dom.isCharPoint(point) && !dom.isSpacePoint(point); + }; + + if (isNotTextPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, isNotTextPoint); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor that match with a Regex + * + * example: + * range: 'hi @Peter Pan' + * regex: '/@[a-z ]+/i' + * return range: '@Peter Pan' + * + * @param {RegExp} [regex] + * @return {WrappedRange|null} + */ + + }, { + key: "getWordsMatchRange", + value: function getWordsMatchRange(regex) { + var endPoint = this.getEndPoint(); + var startPoint = dom.prevPointUntil(endPoint, function (point) { + if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) { + return true; + } + + var rng = new WrappedRange(point.node, point.offset, endPoint.node, endPoint.offset); + var result = regex.exec(rng.toString()); + return result && result.index === 0; + }); + var rng = new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + var text = rng.toString(); + var result = regex.exec(text); + + if (result && result[0].length === text.length) { + return rng; + } else { + return null; + } + } + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + + }, { + key: "bookmark", + value: function bookmark(editable) { + return { + s: { + path: dom.makeOffsetPath(editable, this.sc), + offset: this.so + }, + e: { + path: dom.makeOffsetPath(editable, this.ec), + offset: this.eo + } + }; + } + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + + }, { + key: "paraBookmark", + value: function paraBookmark(paras) { + return { + s: { + path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)), + offset: this.so + }, + e: { + path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)), + offset: this.eo + } + }; + } + /** + * getClientRects + * @return {Rect[]} + */ + + }, { + key: "getClientRects", + value: function getClientRects() { + var nativeRng = this.nativeRange(); + return nativeRng.getClientRects(); + } + }]); + + return WrappedRange; +}(); +/** + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + */ + + +/* harmony default export */ var range = ({ + /** + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create: function create(sc, so, ec, eo) { + if (arguments.length === 4) { + return new range_WrappedRange(sc, so, ec, eo); + } else if (arguments.length === 2) { + // collapsed + ec = sc; + eo = so; + return new range_WrappedRange(sc, so, ec, eo); + } else { + var wrappedRange = this.createFromSelection(); + + if (!wrappedRange && arguments.length === 1) { + var bodyElement = arguments[0]; + + if (dom.isEditable(bodyElement)) { + bodyElement = bodyElement.lastChild; + } + + return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML); + } + + return wrappedRange; + } + }, + createFromBodyElement: function createFromBodyElement(bodyElement) { + var isCollapseToStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var wrappedRange = this.createFromNode(bodyElement); + return wrappedRange.collapse(isCollapseToStart); + }, + createFromSelection: function createFromSelection() { + var sc, so, ec, eo; + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. + // We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { + // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + var startPoint = textRangeToPoint(textRangeStart, true); + var endPoint = textRangeToPoint(textRangeEnd, false); // same visible point case: range was collapsed. + + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function createFromNode(node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); // browsers can't target a picture or void node + + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function createFromNodeBefore(node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function createFromNodeAfter(node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark: function createFromBookmark(editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function createFromParaBookmark(bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path); + return new range_WrappedRange(sc, so, ec, eo); + } +}); +// CONCATENATED MODULE: ./src/js/base/core/key.js + + +var KEY_MAP = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'ESCAPE': 27, + 'SPACE': 32, + 'DELETE': 46, + // Arrow + 'LEFT': 37, + 'UP': 38, + 'RIGHT': 39, + 'DOWN': 40, + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'V': 86, + 'Y': 89, + 'Z': 90, + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221, + // Navigation + 'HOME': 36, + 'END': 35, + 'PAGEUP': 33, + 'PAGEDOWN': 34 +}; +/** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + +/* harmony default export */ var core_key = ({ + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function isEdit(keyCode) { + return lists.contains([KEY_MAP.BACKSPACE, KEY_MAP.TAB, KEY_MAP.ENTER, KEY_MAP.SPACE, KEY_MAP.DELETE], keyCode); + }, + + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function isMove(keyCode) { + return lists.contains([KEY_MAP.LEFT, KEY_MAP.UP, KEY_MAP.RIGHT, KEY_MAP.DOWN], keyCode); + }, + + /** + * @method isNavigation + * + * @param {Number} keyCode + * @return {Boolean} + */ + isNavigation: function isNavigation(keyCode) { + return lists.contains([KEY_MAP.HOME, KEY_MAP.END, KEY_MAP.PAGEUP, KEY_MAP.PAGEDOWN], keyCode); + }, + + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(KEY_MAP), + code: KEY_MAP +}); +// CONCATENATED MODULE: ./src/js/base/core/async.js + +/** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: dataUrl + */ + +function readFileAsDataURL(file) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(new FileReader(), { + onload: function onload(e) { + var dataURL = e.target.result; + deferred.resolve(dataURL); + }, + onerror: function onerror(err) { + deferred.reject(err); + } + }).readAsDataURL(file); + }).promise(); +} +/** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} url + * @return {Promise} - then: $image + */ + +function createImage(url) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $img = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<img>'); + $img.one('load', function () { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function () { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr('src', url); + }).promise(); +} +// CONCATENATED MODULE: ./src/js/base/editing/History.js +function History_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function History_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function History_createClass(Constructor, protoProps, staticProps) { if (protoProps) History_defineProperties(Constructor.prototype, protoProps); if (staticProps) History_defineProperties(Constructor, staticProps); return Constructor; } + + + +var History_History = /*#__PURE__*/function () { + function History(context) { + History_classCallCheck(this, History); + + this.stack = []; + this.stackOffset = -1; + this.context = context; + this.$editable = context.layoutInfo.editable; + this.editable = this.$editable[0]; + } + + History_createClass(History, [{ + key: "makeSnapshot", + value: function makeSnapshot() { + var rng = range.create(this.editable); + var emptyBookmark = { + s: { + path: [], + offset: 0 + }, + e: { + path: [], + offset: 0 + } + }; + return { + contents: this.$editable.html(), + bookmark: rng && rng.isOnEditable() ? rng.bookmark(this.editable) : emptyBookmark + }; + } + }, { + key: "applySnapshot", + value: function applySnapshot(snapshot) { + if (snapshot.contents !== null) { + this.$editable.html(snapshot.contents); + } + + if (snapshot.bookmark !== null) { + range.createFromBookmark(this.editable, snapshot.bookmark).select(); + } + } + /** + * @method rewind + * Rewinds the history stack back to the first snapshot taken. + * Leaves the stack intact, so that "Redo" can still be used. + */ + + }, { + key: "rewind", + value: function rewind() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } // Return to the first available snapshot. + + + this.stackOffset = 0; // Apply that snapshot. + + this.applySnapshot(this.stack[this.stackOffset]); + } + /** + * @method commit + * Resets history stack, but keeps current editor's content. + */ + + }, { + key: "commit", + value: function commit() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * @method reset + * Resets the history stack completely; reverting to an empty editor. + */ + + }, { + key: "reset", + value: function reset() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Clear the editable area. + + this.$editable.html(''); // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } + + if (this.stackOffset > 0) { + this.stackOffset--; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + if (this.stack.length - 1 > this.stackOffset) { + this.stackOffset++; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * recorded undo + */ + + }, { + key: "recordUndo", + value: function recordUndo() { + this.stackOffset++; // Wash out stack after stackOffset + + if (this.stack.length > this.stackOffset) { + this.stack = this.stack.slice(0, this.stackOffset); + } // Create new snapshot and push it to the end + + + this.stack.push(this.makeSnapshot()); // If the stack size reachs to the limit, then slice it + + if (this.stack.length > this.context.options.historyLimit) { + this.stack.shift(); + this.stackOffset -= 1; + } + } + }]); + + return History; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Style.js +function Style_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Style_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Style_createClass(Constructor, protoProps, staticProps) { if (protoProps) Style_defineProperties(Constructor.prototype, protoProps); if (staticProps) Style_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Style_Style = /*#__PURE__*/function () { + function Style() { + Style_classCallCheck(this, Style); + } + + Style_createClass(Style, [{ + key: "jQueryCSS", + + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + value: function jQueryCSS($obj, propertyNames) { + if (env.jqueryVersion < 1.9) { + var result = {}; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(propertyNames, function (idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + + return $obj.css(propertyNames); + } + /** + * returns style object from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "fromNode", + value: function fromNode($node) { + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = this.jQueryCSS($node, properties) || {}; + var fontSize = $node[0].style.fontSize || styleInfo['font-size']; + styleInfo['font-size'] = parseInt(fontSize, 10); + styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/); + return styleInfo; + } + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + + }, { + key: "stylePara", + value: function stylePara(rng, styleInfo) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css(styleInfo); + }); + } + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + + }, { + key: "styleNodes", + value: function styleNodes(rng, options) { + rng = rng.splitText(); + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = rng.nodes(dom.isText, { + fullyContains: true + }).map(function (text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); // compose with partial contains predication + + pred = func.and(pred, function (node) { + return lists.contains(nodesInRange, node); + }); + } + + return nodes.map(function (node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = lists.head(siblings); + var tails = lists.tail(siblings); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(tails, function (idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return lists.head(siblings); + }); + } else { + return nodes; + } + } + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @return {Object} - object contains style properties. + */ + + }, { + key: "current", + value: function current(rng) { + var $cont = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc); + var styleInfo = this.fromNode($cont); // document.queryCommandState for toggle state + // [workaround] prevent Firefox nsresult: "0x80004005 (NS_ERROR_FAILURE)" + + try { + styleInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(styleInfo, { + 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal', + 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal', + 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal', + 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal', + 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal', + 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal', + 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'] + }); + } catch (e) {} // eslint-disable-next-line + // list-style-type to list-style(unordered, ordered) + + + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + return styleInfo; + } + }]); + + return Style; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Bullet.js +function Bullet_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Bullet_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Bullet_createClass(Constructor, protoProps, staticProps) { if (protoProps) Bullet_defineProperties(Constructor.prototype, protoProps); if (staticProps) Bullet_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Bullet_Bullet = /*#__PURE__*/function () { + function Bullet() { + Bullet_classCallCheck(this, Bullet); + } + + Bullet_createClass(Bullet, [{ + key: "insertOrderedList", + + /** + * toggle ordered list + */ + value: function insertOrderedList(editable) { + this.toggleList('OL', editable); + } + /** + * toggle unordered list + */ + + }, { + key: "insertUnorderedList", + value: function insertUnorderedList(editable) { + this.toggleList('UL', editable); + } + /** + * indent + */ + + }, { + key: "indent", + value: function indent(editable) { + var _this = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + var previousList = _this.findList(head.previousSibling); + + if (previousList) { + paras.map(function (para) { + return previousList.appendChild(para); + }); + } else { + _this.wrapList(paras, head.parentNode.nodeName); + + paras.map(function (para) { + return para.parentNode; + }).map(function (para) { + return _this.appendToPrevious(para); + }); + } + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + rng.select(); + } + /** + * outdent + */ + + }, { + key: "outdent", + value: function outdent(editable) { + var _this2 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + _this2.releaseList([paras]); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + val = parseInt(val, 10) || 0; + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + rng.select(); + } + /** + * toggle list + * + * @param {String} listName - OL or UL + */ + + }, { + key: "toggleList", + value: function toggleList(listName, editable) { + var _this3 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var bookmark = rng.paraBookmark(paras); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); // paragraph to list + + if (lists.find(paras, dom.isPurePara)) { + var wrappedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + wrappedParas = wrappedParas.concat(_this3.wrapList(paras, listName)); + }); + paras = wrappedParas; // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function (listNode) { + return !external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.nodeName(listNode, listName); + }); + + if (diffLists.length) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(diffLists, function (idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + } + /** + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + + }, { + key: "wrapList", + value: function wrapList(paras, listName) { + var head = lists.head(paras); + var last = lists.last(paras); + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); // P to LI + + paras = paras.map(function (para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); // append to list(<ul>, <ol>) + + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, lists.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + } + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + + }, { + key: "releaseList", + value: function releaseList(clustereds, isEscapseToBody) { + var _this4 = this; + + var releasedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + var last = lists.last(paras); + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode; + var parentItem = headList.parentNode; + + if (headList.parentNode.nodeName === 'LI') { + paras.map(function (para) { + var newList = _this4.findNextSiblings(para); + + if (parentItem.nextSibling) { + parentItem.parentNode.insertBefore(para, parentItem.nextSibling); + } else { + parentItem.parentNode.appendChild(para); + } + + if (newList.length) { + _this4.wrapList(newList, headList.nodeName); + + para.appendChild(newList[0].parentNode); + } + }); + + if (headList.children.length === 0) { + parentItem.removeChild(headList); + } + + if (parentItem.childNodes.length === 0) { + parentItem.parentNode.removeChild(parentItem); + } + } else { + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : lists.from(middleList.childNodes).filter(dom.isLi); // LI to P + + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = paras.map(function (para) { + return dom.replace(para, 'P'); + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(lists.from(paras).reverse(), function (idx, para) { + dom.insertAfter(para, headList); + }); // remove empty lists + + var rootLists = lists.compact([headList, middleList, lastList]); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rootLists, function (idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(listNodes.reverse(), function (idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + } + + releasedParas = releasedParas.concat(paras); + }); + return releasedParas; + } + /** + * @method appendToPrevious + * + * Appends list to previous list item, if + * none exist it wraps the list in a new list item. + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "appendToPrevious", + value: function appendToPrevious(node) { + return node.previousSibling ? dom.appendChildNodes(node.previousSibling, [node]) : this.wrapList([node], 'LI'); + } + /** + * @method findList + * + * Finds an existing list in list item + * + * @param {HTMLNode} ListItem + * @return {Array[]} + */ + + }, { + key: "findList", + value: function findList(node) { + return node ? lists.find(node.children, function (child) { + return ['OL', 'UL'].indexOf(child.nodeName) > -1; + }) : null; + } + /** + * @method findNextSiblings + * + * Finds all list item siblings that follow it + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "findNextSiblings", + value: function findNextSiblings(node) { + var siblings = []; + + while (node.nextSibling) { + siblings.push(node.nextSibling); + node = node.nextSibling; + } + + return siblings; + } + }]); + + return Bullet; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Typing.js +function Typing_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Typing_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Typing_createClass(Constructor, protoProps, staticProps) { if (protoProps) Typing_defineProperties(Constructor.prototype, protoProps); if (staticProps) Typing_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class editing.Typing + * + * Typing + * + */ + +var Typing_Typing = /*#__PURE__*/function () { + function Typing(context) { + Typing_classCallCheck(this, Typing); + + // a Bullet instance to toggle lists off + this.bullet = new Bullet_Bullet(); + this.options = context.options; + } + /** + * insert tab + * + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + + + Typing_createClass(Typing, [{ + key: "insertTab", + value: function insertTab(rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + rng = range.create(tab, tabsize); + rng.select(); + } + /** + * insert paragraph + * + * @param {jQuery} $editable + * @param {WrappedRange} rng Can be used in unit tests to "mock" the range + * + * blockquoteBreakingLevel + * 0 - No break, the new paragraph remains inside the quote + * 1 - Break the first blockquote in the ancestors list + * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default) + */ + + }, { + key: "insertParagraph", + value: function insertParagraph(editable, rng) { + rng = rng || range.create(editable); // deleteContents on range. + + rng = rng.deleteContents(); // Wrap range if it needs to be wrapped by paragraph + + rng = rng.wrapBodyInlineWithPara(); // finding paragraph + + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + var nextPara; // on paragraph: split paragraph + + if (splitRoot) { + // if it is an empty line with li + if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) { + // toggle UL/OL and escape + this.bullet.toggleList(splitRoot.parentNode.nodeName); + return; + } else { + var blockquote = null; + + if (this.options.blockquoteBreakingLevel === 1) { + blockquote = dom.ancestor(splitRoot, dom.isBlockquote); + } else if (this.options.blockquoteBreakingLevel === 2) { + blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote); + } + + if (blockquote) { + // We're inside a blockquote and options ask us to break it + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; // If the split is right before a <br>, remove it so that there's no "empty line" + // after the split in the new blockquote created + + if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(rng.sc.nextSibling).remove(); + } + + var split = dom.splitTree(blockquote, rng.getStartPoint(), { + isDiscardEmptySplits: true + }); + + if (split) { + split.parentNode.insertBefore(nextPara, split); + } else { + dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote + } + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); // not a blockquote, just insert the paragraph + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyAnchors, function (idx, anchor) { + dom.remove(anchor); + }); // replace empty heading, pre or custom-made styleTag with P tag + + if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) { + nextPara = dom.replace(nextPara, 'p'); + } + } + } // no paragraph: insert empty paragraph + + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; + + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select().scrollIntoView(editable); + } + }]); + + return Typing; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Table.js +function Table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Table_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Table_createClass(Constructor, protoProps, staticProps) { if (protoProps) Table_defineProperties(Constructor.prototype, protoProps); if (staticProps) Table_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class Create a virtual table to create what actions to do in change. + * @param {object} startPoint Cell selected to apply change. + * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where + * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction + * @param {object} domTable Dom element of table to make changes. + */ + +var TableResultAction = function TableResultAction(startPoint, where, action, domTable) { + var _startPoint = { + 'colPos': 0, + 'rowPos': 0 + }; + var _virtualTable = []; + var _actionCellList = []; /// /////////////////////////////////////////// + // Private functions + /// /////////////////////////////////////////// + + /** + * Set the startPoint of action. + */ + + function setStartPoint() { + if (!startPoint || !startPoint.tagName || startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th') { + // Impossible to identify start Cell point + return; + } + + _startPoint.colPos = startPoint.cellIndex; + + if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') { + // Impossible to identify start Row point + return; + } + + _startPoint.rowPos = startPoint.parentElement.rowIndex; + } + /** + * Define virtual table position info object. + * + * @param {int} rowIndex Index position in line of virtual table. + * @param {int} cellIndex Index position in column of virtual table. + * @param {object} baseRow Row affected by this position. + * @param {object} baseCell Cell affected by this position. + * @param {bool} isSpan Inform if it is an span cell/row. + */ + + + function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) { + var objPosition = { + 'baseRow': baseRow, + 'baseCell': baseCell, + 'isRowSpan': isRowSpan, + 'isColSpan': isColSpan, + 'isVirtual': isVirtualCell + }; + + if (!_virtualTable[rowIndex]) { + _virtualTable[rowIndex] = []; + } + + _virtualTable[rowIndex][cellIndex] = objPosition; + } + /** + * Create action cell object. + * + * @param {object} virtualTableCellObj Object of specific position on virtual table. + * @param {enum} resultAction Action to be applied in that item. + */ + + + function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) { + return { + 'baseCell': virtualTableCellObj.baseCell, + 'action': resultAction, + 'virtualTable': { + 'rowIndex': virtualRowPosition, + 'cellIndex': virtualColPosition + } + }; + } + /** + * Recover free index of row to append Cell. + * + * @param {int} rowIndex Index of row to find free space. + * @param {int} cellIndex Index of cell to find free space in table. + */ + + + function recoverCellIndex(rowIndex, cellIndex) { + if (!_virtualTable[rowIndex]) { + return cellIndex; + } + + if (!_virtualTable[rowIndex][cellIndex]) { + return cellIndex; + } + + var newCellIndex = cellIndex; + + while (_virtualTable[rowIndex][newCellIndex]) { + newCellIndex++; + + if (!_virtualTable[rowIndex][newCellIndex]) { + return newCellIndex; + } + } + } + /** + * Recover info about row and cell and add information to virtual table. + * + * @param {object} row Row to recover information. + * @param {object} cell Cell to recover information. + */ + + + function addCellInfoToVirtual(row, cell) { + var cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex); + var cellHasColspan = cell.colSpan > 1; + var cellHasRowspan = cell.rowSpan > 1; + var isThisSelectedCell = row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos; + setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false); // Add span rows to virtual Table. + + var rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0; + + if (rowspanNumber > 1) { + for (var rp = 1; rp < rowspanNumber; rp++) { + var rowspanIndex = row.rowIndex + rp; + adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell); + setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true); + } + } // Add span cols to virtual table. + + + var colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0; + + if (colspanNumber > 1) { + for (var cp = 1; cp < colspanNumber; cp++) { + var cellspanIndex = recoverCellIndex(row.rowIndex, cellIndex + cp); + adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell); + setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true); + } + } + } + /** + * Process validation and adjust of start point if needed + * + * @param {int} rowIndex + * @param {int} cellIndex + * @param {object} cell + * @param {bool} isSelectedCell + */ + + + function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) { + if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) { + _startPoint.colPos++; + } + } + /** + * Create virtual table of cells with all cells, including span cells. + */ + + + function createVirtualTable() { + var rows = domTable.rows; + + for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) { + var cells = rows[rowIndex].cells; + + for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) { + addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]); + } + } + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getDeleteResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + + case TableResultAction.where.Row: + if (!cell.isVirtual && cell.isRowSpan) { + return TableResultAction.resultAction.AddCell; + } else if (cell.isRowSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + } + + return TableResultAction.resultAction.RemoveCell; + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getAddResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isRowSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + + case TableResultAction.where.Row: + if (cell.isRowSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isColSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + } + + return TableResultAction.resultAction.AddCell; + } + + function init() { + setStartPoint(); + createVirtualTable(); + } /// /////////////////////////////////////////// + // Public functions + /// /////////////////////////////////////////// + + /** + * Recover array os what to do in table. + */ + + + this.getActionList = function () { + var fixedRow = where === TableResultAction.where.Row ? _startPoint.rowPos : -1; + var fixedCol = where === TableResultAction.where.Column ? _startPoint.colPos : -1; + var actualPosition = 0; + var canContinue = true; + + while (canContinue) { + var rowPosition = fixedRow >= 0 ? fixedRow : actualPosition; + var colPosition = fixedCol >= 0 ? fixedCol : actualPosition; + var row = _virtualTable[rowPosition]; + + if (!row) { + canContinue = false; + return _actionCellList; + } + + var cell = row[colPosition]; + + if (!cell) { + canContinue = false; + return _actionCellList; + } // Define action to be applied in this cell + + + var resultAction = TableResultAction.resultAction.Ignore; + + switch (action) { + case TableResultAction.requestAction.Add: + resultAction = getAddResultActionToCell(cell); + break; + + case TableResultAction.requestAction.Delete: + resultAction = getDeleteResultActionToCell(cell); + break; + } + + _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition)); + + actualPosition++; + } + + return _actionCellList; + }; + + init(); +}; +/** +* +* Where action occours enum. +*/ + + +TableResultAction.where = { + 'Row': 0, + 'Column': 1 +}; +/** +* +* Requested action to apply enum. +*/ + +TableResultAction.requestAction = { + 'Add': 0, + 'Delete': 1 +}; +/** +* +* Result action to be executed enum. +*/ + +TableResultAction.resultAction = { + 'Ignore': 0, + 'SubtractSpanCount': 1, + 'RemoveCell': 2, + 'AddCell': 3, + 'SumSpanCount': 4 +}; +/** + * + * @class editing.Table + * + * Table + * + */ + +var Table_Table = /*#__PURE__*/function () { + function Table() { + Table_classCallCheck(this, Table); + } + + Table_createClass(Table, [{ + key: "tab", + + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + value: function tab(rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + var nextCell = lists[isShift ? 'prev' : 'next'](cells, cell); + + if (nextCell) { + range.create(nextCell, 0).select(); + } + } + /** + * Add a new row + * + * @param {WrappedRange} rng + * @param {String} position (top/bottom) + * @return {Node} + */ + + }, { + key: "addRow", + value: function addRow(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var currentTr = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var trAttributes = this.recoverAttributes(currentTr); + var html = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<tr' + trAttributes + '></tr>'); + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var idCell = 0; idCell < actions.length; idCell++) { + var currentCell = actions[idCell]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + html.append('<td' + tdAttributes + '>' + dom.blank + '</td>'); + break; + + case TableResultAction.resultAction.SumSpanCount: + { + if (position === 'top') { + var baseCellTr = currentCell.baseCell.parent; + var isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex; + + if (isTopFromRowSpan) { + var newTd = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html(); + html.append(newTd); + break; + } + } + + var rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10); + rowspanNumber++; + currentCell.baseCell.setAttribute('rowSpan', rowspanNumber); + } + break; + } + } + + if (position === 'top') { + currentTr.before(html); + } else { + var cellHasRowspan = cell.rowSpan > 1; + + if (cellHasRowspan) { + var lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).parent().find('tr')[lastTrIndex]).after(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(html)); + return; + } + + currentTr.after(html); + } + } + /** + * Add a new col + * + * @param {WrappedRange} rng + * @param {String} position (left/right) + * @return {Node} + */ + + }, { + key: "addCol", + value: function addCol(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var rowsGroup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).siblings(); + rowsGroup.push(row); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + var currentCell = actions[actionIndex]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + if (position === 'right') { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + + case TableResultAction.resultAction.SumSpanCount: + if (position === 'right') { + var colspanNumber = parseInt(currentCell.baseCell.colSpan, 10); + colspanNumber++; + currentCell.baseCell.setAttribute('colSpan', colspanNumber); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + } + } + } + /* + * Copy attributes from element. + * + * @param {object} Element to recover attributes. + * @return {string} Copied string elements. + */ + + }, { + key: "recoverAttributes", + value: function recoverAttributes(el) { + var resultStr = ''; + + if (!el) { + return resultStr; + } + + var attrList = el.attributes || []; + + for (var i = 0; i < attrList.length; i++) { + if (attrList[i].name.toLowerCase() === 'id') { + continue; + } + + if (attrList[i].specified) { + resultStr += ' ' + attrList[i].name + '=\'' + attrList[i].value + '\''; + } + } + + return resultStr; + } + /** + * Delete current row + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteRow", + value: function deleteRow(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var rowPos = row[0].rowIndex; + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + var baseCell = actions[actionIndex].baseCell; + var virtualPosition = actions[actionIndex].virtualTable; + var hasRowspan = baseCell.rowSpan && baseCell.rowSpan > 1; + var rowspanNumber = hasRowspan ? parseInt(baseCell.rowSpan, 10) : 0; + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.AddCell: + { + var nextRow = row.next('tr')[0]; + + if (!nextRow) { + continue; + } + + var cloneRow = row[0].cells[cellPos]; + + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber); + nextRow.cells[cellPos].innerHTML = ''; + } else if (rowspanNumber === 2) { + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].removeAttribute('rowSpan'); + nextRow.cells[cellPos].innerHTML = ''; + } + } + } + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + baseCell.setAttribute('rowSpan', rowspanNumber); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (rowspanNumber === 2) { + baseCell.removeAttribute('rowSpan'); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + + continue; + + case TableResultAction.resultAction.RemoveCell: + // Do not need remove cell because row will be deleted. + continue; + } + } + + row.remove(); + } + /** + * Delete current col + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteCol", + value: function deleteCol(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + { + var baseCell = actions[actionIndex].baseCell; + var hasColspan = baseCell.colSpan && baseCell.colSpan > 1; + + if (hasColspan) { + var colspanNumber = baseCell.colSpan ? parseInt(baseCell.colSpan, 10) : 0; + + if (colspanNumber > 2) { + colspanNumber--; + baseCell.setAttribute('colSpan', colspanNumber); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (colspanNumber === 2) { + baseCell.removeAttribute('colSpan'); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + } + continue; + + case TableResultAction.resultAction.RemoveCell: + dom.remove(actions[actionIndex].baseCell, true); + continue; + } + } + } + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + + }, { + key: "createTable", + value: function createTable(colCount, rowCount, options) { + var tds = []; + var tdHTML; + + for (var idxCol = 0; idxCol < colCount; idxCol++) { + tds.push('<td>' + dom.blank + '</td>'); + } + + tdHTML = tds.join(''); + var trs = []; + var trHTML; + + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + + trHTML = trs.join(''); + var $table = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<table>' + trHTML + '</table>'); + + if (options && options.tableClassName) { + $table.addClass(options.tableClassName); + } + + return $table[0]; + } + /** + * Delete current table + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteTable", + value: function deleteTable(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('table').remove(); + } + }]); + + return Table; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Editor.js +function Editor_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Editor_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Editor_createClass(Constructor, protoProps, staticProps) { if (protoProps) Editor_defineProperties(Constructor.prototype, protoProps); if (staticProps) Editor_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + + + + + + + + +var KEY_BOGUS = 'bogus'; +/** + * @class Editor + */ + +var Editor_Editor = /*#__PURE__*/function () { + function Editor(context) { + var _this = this; + + Editor_classCallCheck(this, Editor); + + this.context = context; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.editable = this.$editable[0]; + this.lastRange = null; + this.snapshot = null; + this.style = new Style_Style(); + this.table = new Table_Table(); + this.typing = new Typing_Typing(context); + this.bullet = new Bullet_Bullet(); + this.history = new History_History(context); + this.context.memo('help.escape', this.lang.help.escape); + this.context.memo('help.undo', this.lang.help.undo); + this.context.memo('help.redo', this.lang.help.redo); + this.context.memo('help.tab', this.lang.help.tab); + this.context.memo('help.untab', this.lang.help.untab); + this.context.memo('help.insertParagraph', this.lang.help.insertParagraph); + this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList); + this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList); + this.context.memo('help.indent', this.lang.help.indent); + this.context.memo('help.outdent', this.lang.help.outdent); + this.context.memo('help.formatPara', this.lang.help.formatPara); + this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule); + this.context.memo('help.fontName', this.lang.help.fontName); // native commands(with execCommand), generate function for execCommand + + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'formatBlock', 'removeFormat', 'backColor']; + + for (var idx = 0, len = commands.length; idx < len; idx++) { + this[commands[idx]] = function (sCmd) { + return function (value) { + _this.beforeCommand(); + + document.execCommand(sCmd, false, value); + + _this.afterCommand(true); + }; + }(commands[idx]); + + this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]); + } + + this.fontName = this.wrapCommand(function (value) { + return _this.fontStyling('font-family', env.validFontName(value)); + }); + this.fontSize = this.wrapCommand(function (value) { + var unit = _this.currentStyle()['font-size-unit']; + + return _this.fontStyling('font-size', value + unit); + }); + this.fontSizeUnit = this.wrapCommand(function (value) { + var size = _this.currentStyle()['font-size']; + + return _this.fontStyling('font-size', size + value); + }); + + for (var _idx = 1; _idx <= 6; _idx++) { + this['formatH' + _idx] = function (idx) { + return function () { + _this.formatBlock('H' + idx); + }; + }(_idx); + + this.context.memo('help.formatH' + _idx, this.lang.help['formatH' + _idx]); + } + + this.insertParagraph = this.wrapCommand(function () { + _this.typing.insertParagraph(_this.editable); + }); + this.insertOrderedList = this.wrapCommand(function () { + _this.bullet.insertOrderedList(_this.editable); + }); + this.insertUnorderedList = this.wrapCommand(function () { + _this.bullet.insertUnorderedList(_this.editable); + }); + this.indent = this.wrapCommand(function () { + _this.bullet.indent(_this.editable); + }); + this.outdent = this.wrapCommand(function () { + _this.bullet.outdent(_this.editable); + }); + /** + * insertNode + * insert node + * @param {Node} node + */ + + this.insertNode = this.wrapCommand(function (node) { + if (_this.isLimited(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).text().length)) { + return; + } + + var rng = _this.getLastRange(); + + rng.insertNode(node); + + _this.setLastRange(range.createFromNodeAfter(node).select()); + }); + /** + * insert text + * @param {String} text + */ + + this.insertText = this.wrapCommand(function (text) { + if (_this.isLimited(text.length)) { + return; + } + + var rng = _this.getLastRange(); + + var textNode = rng.insertNode(dom.createText(text)); + + _this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select()); + }); + /** + * paste HTML + * @param {String} markup + */ + + this.pasteHTML = this.wrapCommand(function (markup) { + if (_this.isLimited(markup.length)) { + return; + } + + markup = _this.context.invoke('codeview.purify', markup); + + var contents = _this.getLastRange().pasteHTML(markup); + + _this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select()); + }); + /** + * formatBlock + * + * @param {String} tagName + */ + + this.formatBlock = this.wrapCommand(function (tagName, $target) { + var onApplyCustomStyle = _this.options.callbacks.onApplyCustomStyle; + + if (onApplyCustomStyle) { + onApplyCustomStyle.call(_this, $target, _this.context, _this.onFormatBlock); + } else { + _this.onFormatBlock(tagName, $target); + } + }); + /** + * insert horizontal rule + */ + + this.insertHorizontalRule = this.wrapCommand(function () { + var hrNode = _this.getLastRange().insertNode(dom.create('HR')); + + if (hrNode.nextSibling) { + _this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select()); + } + }); + /** + * lineHeight + * @param {String} value + */ + + this.lineHeight = this.wrapCommand(function (value) { + _this.style.stylePara(_this.getLastRange(), { + lineHeight: value + }); + }); + /** + * create link (command) + * + * @param {Object} linkInfo + */ + + this.createLink = this.wrapCommand(function (linkInfo) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.isNewWindow; + var checkProtocol = linkInfo.checkProtocol; + + var rng = linkInfo.range || _this.getLastRange(); + + var additionalTextLength = linkText.length - rng.toString().length; + + if (additionalTextLength > 0 && _this.isLimited(additionalTextLength)) { + return; + } + + var isTextChanged = rng.toString() !== linkText; // handle spaced urls from input + + if (typeof linkUrl === 'string') { + linkUrl = linkUrl.trim(); + } + + if (_this.options.onCreateLink) { + linkUrl = _this.options.onCreateLink(linkUrl); + } else if (checkProtocol) { + // if url doesn't have any protocol and not even a relative or a label, use http:// as default + linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(linkUrl) ? linkUrl : _this.options.defaultProtocol + linkUrl; + } + + var anchors = []; + + if (isTextChanged) { + rng = rng.deleteContents(); + var anchor = rng.insertNode(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = _this.style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(anchors, function (idx, anchor) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href', linkUrl); + + if (isNewWindow) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('target', '_blank'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).removeAttr('target'); + } + }); + + _this.setLastRange(_this.createRangeFromList(anchors).select()); + }); + /** + * setting color + * + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + + this.color = this.wrapCommand(function (colorInfo) { + var foreColor = colorInfo.foreColor; + var backColor = colorInfo.backColor; + + if (foreColor) { + document.execCommand('foreColor', false, foreColor); + } + + if (backColor) { + document.execCommand('backColor', false, backColor); + } + }); + /** + * Set foreground color + * + * @param {String} colorCode foreground color code + */ + + this.foreColor = this.wrapCommand(function (colorInfo) { + document.execCommand('foreColor', false, colorInfo); + }); + /** + * insert Table + * + * @param {String} dimension of table (ex : "5x5") + */ + + this.insertTable = this.wrapCommand(function (dim) { + var dimension = dim.split('x'); + + var rng = _this.getLastRange().deleteContents(); + + rng.insertNode(_this.table.createTable(dimension[0], dimension[1], _this.options)); + }); + /** + * remove media object and Figure Elements if media object is img with Figure. + */ + + this.removeMedia = this.wrapCommand(function () { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).parent(); + + if ($target.closest('figure').length) { + $target.closest('figure').remove(); + } else { + $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).detach(); + } + + _this.context.triggerEvent('media.delete', $target, _this.$editable); + }); + /** + * float me + * + * @param {String} value + */ + + this.floatMe = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + $target.toggleClass('note-float-left', value === 'left'); + $target.toggleClass('note-float-right', value === 'right'); + $target.css('float', value === 'none' ? '' : value); + }); + /** + * resize overlay element + * @param {String} value + */ + + this.resize = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + value = parseFloat(value); + + if (value === 0) { + $target.css('width', ''); + } else { + $target.css({ + width: value * 100 + '%', + height: '' + }); + } + }); + } + + Editor_createClass(Editor, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + // bind custom events + this.$editable.on('keydown', function (event) { + if (event.keyCode === core_key.code.ENTER) { + _this2.context.triggerEvent('enter', event); + } + + _this2.context.triggerEvent('keydown', event); // keep a snapshot to limit text on input event + + + _this2.snapshot = _this2.history.makeSnapshot(); + _this2.hasKeyShortCut = false; + + if (!event.isDefaultPrevented()) { + if (_this2.options.shortcuts) { + _this2.hasKeyShortCut = _this2.handleKeyMap(event); + } else { + _this2.preventDefaultEditableShortCuts(event); + } + } + + if (_this2.isLimited(1, event)) { + var lastRange = _this2.getLastRange(); + + if (lastRange.eo - lastRange.so === 0) { + return false; + } + } + + _this2.setLastRange(); // record undo in the key event except keyMap. + + + if (_this2.options.recordEveryKeystroke) { + if (_this2.hasKeyShortCut === false) { + _this2.history.recordUndo(); + } + } + }).on('keyup', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('keyup', event); + }).on('focus', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('focus', event); + }).on('blur', function (event) { + _this2.context.triggerEvent('blur', event); + }).on('mousedown', function (event) { + _this2.context.triggerEvent('mousedown', event); + }).on('mouseup', function (event) { + _this2.setLastRange(); + + _this2.history.recordUndo(); + + _this2.context.triggerEvent('mouseup', event); + }).on('scroll', function (event) { + _this2.context.triggerEvent('scroll', event); + }).on('paste', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('paste', event); + }).on('input', function () { + // To limit composition characters (e.g. Korean) + if (_this2.isLimited(0) && _this2.snapshot) { + _this2.history.applySnapshot(_this2.snapshot); + } + }); + this.$editable.attr('spellcheck', this.options.spellCheck); + this.$editable.attr('autocorrect', this.options.spellCheck); + + if (this.options.disableGrammar) { + this.$editable.attr('data-gramm', false); + } // init content before set event + + + this.$editable.html(dom.html(this.$note) || dom.emptyPara); + this.$editable.on(env.inputEventName, func.debounce(function () { + _this2.context.triggerEvent('change', _this2.$editable.html(), _this2.$editable); + }, 10)); + this.$editable.on('focusin', function (event) { + _this2.context.triggerEvent('focusin', event); + }).on('focusout', function (event) { + _this2.context.triggerEvent('focusout', event); + }); + + if (this.options.airMode) { + if (this.options.overrideContextMenu) { + this.$editor.on('contextmenu', function (event) { + _this2.context.triggerEvent('contextmenu', event); + + return false; + }); + } + } else { + if (this.options.width) { + this.$editor.outerWidth(this.options.width); + } + + if (this.options.height) { + this.$editable.outerHeight(this.options.height); + } + + if (this.options.maxHeight) { + this.$editable.css('max-height', this.options.maxHeight); + } + + if (this.options.minHeight) { + this.$editable.css('min-height', this.options.minHeight); + } + } + + this.history.recordUndo(); + this.setLastRange(); + } + }, { + key: "destroy", + value: function destroy() { + this.$editable.off(); + } + }, { + key: "handleKeyMap", + value: function handleKeyMap(event) { + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + var keys = []; + + if (event.metaKey) { + keys.push('CMD'); + } + + if (event.ctrlKey && !event.altKey) { + keys.push('CTRL'); + } + + if (event.shiftKey) { + keys.push('SHIFT'); + } + + var keyName = core_key.nameFromCode[event.keyCode]; + + if (keyName) { + keys.push(keyName); + } + + var eventName = keyMap[keys.join('+')]; + + if (keyName === 'TAB' && !this.options.tabDisable) { + this.afterCommand(); + } else if (eventName) { + if (this.context.invoke(eventName) !== false) { + event.preventDefault(); // if keyMap action was invoked + + return true; + } + } else if (core_key.isEdit(event.keyCode)) { + this.afterCommand(); + } + + return false; + } + }, { + key: "preventDefaultEditableShortCuts", + value: function preventDefaultEditableShortCuts(event) { + // B(Bold, 66) / I(Italic, 73) / U(Underline, 85) + if ((event.ctrlKey || event.metaKey) && lists.contains([66, 73, 85], event.keyCode)) { + event.preventDefault(); + } + } + }, { + key: "isLimited", + value: function isLimited(pad, event) { + pad = pad || 0; + + if (typeof event !== 'undefined') { + if (core_key.isMove(event.keyCode) || core_key.isNavigation(event.keyCode) || event.ctrlKey || event.metaKey || lists.contains([core_key.code.BACKSPACE, core_key.code.DELETE], event.keyCode)) { + return false; + } + } + + if (this.options.maxTextLength > 0) { + if (this.$editable.text().length + pad > this.options.maxTextLength) { + return true; + } + } + + return false; + } + /** + * create range + * @return {WrappedRange} + */ + + }, { + key: "createRange", + value: function createRange() { + this.focus(); + this.setLastRange(); + return this.getLastRange(); + } + /** + * create a new range from the list of elements + * + * @param {list} dom element list + * @return {WrappedRange} + */ + + }, { + key: "createRangeFromList", + value: function createRangeFromList(lst) { + var startRange = range.createFromNodeBefore(lists.head(lst)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(lists.last(lst)); + var endPoint = endRange.getEndPoint(); + return range.create(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * set the last range + * + * if given rng is exist, set rng as the last range + * or create a new range at the end of the document + * + * @param {WrappedRange} rng + */ + + }, { + key: "setLastRange", + value: function setLastRange(rng) { + if (rng) { + this.lastRange = rng; + } else { + this.lastRange = range.create(this.editable); + + if (external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.lastRange.sc).closest('.note-editable').length === 0) { + this.lastRange = range.createFromBodyElement(this.editable); + } + } + } + /** + * get the last range + * + * if there is a saved last range, return it + * or create a new range and return it + * + * @return {WrappedRange} + */ + + }, { + key: "getLastRange", + value: function getLastRange() { + if (!this.lastRange) { + this.setLastRange(); + } + + return this.lastRange; + } + /** + * saveRange + * + * save current range + * + * @param {Boolean} [thenCollapse=false] + */ + + }, { + key: "saveRange", + value: function saveRange(thenCollapse) { + if (thenCollapse) { + this.getLastRange().collapse().select(); + } + } + /** + * restoreRange + * + * restore lately range + */ + + }, { + key: "restoreRange", + value: function restoreRange() { + if (this.lastRange) { + this.lastRange.select(); + this.focus(); + } + } + }, { + key: "saveTarget", + value: function saveTarget(node) { + this.$editable.data('target', node); + } + }, { + key: "clearTarget", + value: function clearTarget() { + this.$editable.removeData('target'); + } + }, { + key: "restoreTarget", + value: function restoreTarget() { + return this.$editable.data('target'); + } + /** + * currentStyle + * + * current style + * @return {Object|Boolean} unfocus + */ + + }, { + key: "currentStyle", + value: function currentStyle() { + var rng = range.create(); + + if (rng) { + rng = rng.normalize(); + } + + return rng ? this.style.current(rng) : this.style.fromNode(this.$editable); + } + /** + * style from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "styleFromNode", + value: function styleFromNode($node) { + return this.style.fromNode($node); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.undo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /* + * commit + */ + + }, { + key: "commit", + value: function commit() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.commit(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.redo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * before command + */ + + }, { + key: "beforeCommand", + value: function beforeCommand() { + this.context.triggerEvent('before.command', this.$editable.html()); // Set styleWithCSS before run a command + + document.execCommand('styleWithCSS', false, this.options.styleWithCSS); // keep focus on editable before command execution + + this.focus(); + } + /** + * after command + * @param {Boolean} isPreventTrigger + */ + + }, { + key: "afterCommand", + value: function afterCommand(isPreventTrigger) { + this.normalizeContent(); + this.history.recordUndo(); + + if (!isPreventTrigger) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + } + /** + * handle tab key + */ + + }, { + key: "tab", + value: function tab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng); + } else { + if (this.options.tabSize === 0) { + return false; + } + + if (!this.isLimited(this.options.tabSize)) { + this.beforeCommand(); + this.typing.insertTab(rng, this.options.tabSize); + this.afterCommand(); + } + } + } + /** + * handle shift+tab key + */ + + }, { + key: "untab", + value: function untab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng, true); + } else { + if (this.options.tabSize === 0) { + return false; + } + } + } + /** + * run given function between beforeCommand and afterCommand + */ + + }, { + key: "wrapCommand", + value: function wrapCommand(fn) { + return function () { + this.beforeCommand(); + fn.apply(this, arguments); + this.afterCommand(); + }; + } + /** + * insert image + * + * @param {String} src + * @param {String|Function} param + * @return {Promise} + */ + + }, { + key: "insertImage", + value: function insertImage(src, param) { + var _this3 = this; + + return createImage(src, param).then(function ($image) { + _this3.beforeCommand(); + + if (typeof param === 'function') { + param($image); + } else { + if (typeof param === 'string') { + $image.attr('data-filename', param); + } + + $image.css('width', Math.min(_this3.$editable.width(), $image.width())); + } + + $image.show(); + + _this3.getLastRange().insertNode($image[0]); + + _this3.setLastRange(range.createFromNodeAfter($image[0]).select()); + + _this3.afterCommand(); + }).fail(function (e) { + _this3.context.triggerEvent('image.upload.error', e); + }); + } + /** + * insertImages + * @param {File[]} files + */ + + }, { + key: "insertImagesAsDataURL", + value: function insertImagesAsDataURL(files) { + var _this4 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(files, function (idx, file) { + var filename = file.name; + + if (_this4.options.maximumImageFileSize && _this4.options.maximumImageFileSize < file.size) { + _this4.context.triggerEvent('image.upload.error', _this4.lang.image.maximumFileSizeError); + } else { + readFileAsDataURL(file).then(function (dataURL) { + return _this4.insertImage(dataURL, filename); + }).fail(function () { + _this4.context.triggerEvent('image.upload.error'); + }); + } + }); + } + /** + * insertImagesOrCallback + * @param {File[]} files + */ + + }, { + key: "insertImagesOrCallback", + value: function insertImagesOrCallback(files) { + var callbacks = this.options.callbacks; // If onImageUpload set, + + if (callbacks.onImageUpload) { + this.context.triggerEvent('image.upload', files); // else insert Image as dataURL + } else { + this.insertImagesAsDataURL(files); + } + } + /** + * return selected plain text + * @return {String} text + */ + + }, { + key: "getSelectedText", + value: function getSelectedText() { + var rng = this.getLastRange(); // if range on anchor, expand range with anchor + + if (rng.isOnAnchor()) { + rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor)); + } + + return rng.toString(); + } + }, { + key: "onFormatBlock", + value: function onFormatBlock(tagName, $target) { + // [workaround] for MSIE, IE need `<` + document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName); // support custom class + + if ($target && $target.length) { + // find the exact element has given tagName + if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) { + $target = $target.find(tagName); + } + + if ($target && $target.length) { + var className = $target[0].className || ''; + + if (className) { + var currentRange = this.createRange(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()([currentRange.sc, currentRange.ec]).closest(tagName); + $parent.addClass(className); + } + } + } + } + }, { + key: "formatPara", + value: function formatPara() { + this.formatBlock('P'); + } + }, { + key: "fontStyling", + value: function fontStyling(target, value) { + var rng = this.getLastRange(); + + if (rng !== '') { + var spans = this.style.styleNodes(rng); + this.$editor.find('.note-status-output').html(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(spans).css(target, value); // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + + if (rng.isCollapsed()) { + var firstSpan = lists.head(spans); + + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNode(firstSpan.firstChild).select(); + this.setLastRange(); + this.$editable.data(KEY_BOGUS, firstSpan); + } + } else { + this.setLastRange(this.createRangeFromList(spans).select()); + } + } else { + var noteStatusOutput = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now(); + this.$editor.find('.note-status-output').html('<div id="note-status-output-' + noteStatusOutput + '" class="alert alert-info">' + this.lang.output.noSelection + '</div>'); + setTimeout(function () { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('#note-status-output-' + noteStatusOutput).remove(); + }, 5000); + } + } + /** + * unlink + * + * @type command + */ + + }, { + key: "unlink", + value: function unlink() { + var rng = this.getLastRange(); + + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + this.setLastRange(); + this.beforeCommand(); + document.execCommand('unlink'); + this.afterCommand(); + } + } + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=""] + */ + + }, { + key: "getLinkInfo", + value: function getLinkInfo() { + var rng = this.getLastRange().expand(dom.isAnchor); // Get the first anchor on range(for edit). + + var $anchor = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(lists.head(rng.nodes(dom.isAnchor))); + var linkInfo = { + range: rng, + text: rng.toString(), + url: $anchor.length ? $anchor.attr('href') : '' + }; // When anchor exists, + + if ($anchor.length) { + // Set isNewWindow by checking its target. + linkInfo.isNewWindow = $anchor.attr('target') === '_blank'; + } + + return linkInfo; + } + }, { + key: "addRow", + value: function addRow(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addRow(rng, position); + this.afterCommand(); + } + } + }, { + key: "addCol", + value: function addCol(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addCol(rng, position); + this.afterCommand(); + } + } + }, { + key: "deleteRow", + value: function deleteRow() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteRow(rng); + this.afterCommand(); + } + } + }, { + key: "deleteCol", + value: function deleteCol() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteCol(rng); + this.afterCommand(); + } + } + }, { + key: "deleteTable", + value: function deleteTable() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteTable(rng); + this.afterCommand(); + } + } + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + + }, { + key: "resizeTo", + value: function resizeTo(pos, $target, bKeepRatio) { + var imageSize; + + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + } + /** + * returns whether editable area has focus or not. + */ + + }, { + key: "hasFocus", + value: function hasFocus() { + return this.$editable.is(':focus'); + } + /** + * set focus + */ + + }, { + key: "focus", + value: function focus() { + // [workaround] Screen will move when page is scolled in IE. + // - do focus when not focused + if (!this.hasFocus()) { + this.$editable.focus(); + } + } + /** + * returns whether contents is empty or not. + * @return {Boolean} + */ + + }, { + key: "isEmpty", + value: function isEmpty() { + return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html(); + } + /** + * Removes all contents and restores the editable instance to an _emptyPara_. + */ + + }, { + key: "empty", + value: function empty() { + this.context.invoke('code', dom.emptyPara); + } + /** + * normalize content + */ + + }, { + key: "normalizeContent", + value: function normalizeContent() { + this.$editable[0].normalize(); + } + }]); + + return Editor; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Clipboard.js +function Clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) Clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) Clipboard_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Clipboard_Clipboard = /*#__PURE__*/function () { + function Clipboard(context) { + Clipboard_classCallCheck(this, Clipboard); + + this.context = context; + this.$editable = context.layoutInfo.editable; + } + + Clipboard_createClass(Clipboard, [{ + key: "initialize", + value: function initialize() { + this.$editable.on('paste', this.pasteByEvent.bind(this)); + } + /** + * paste by clipboard event + * + * @param {Event} event + */ + + }, { + key: "pasteByEvent", + value: function pasteByEvent(event) { + var _this = this; + + var clipboardData = event.originalEvent.clipboardData; + + if (clipboardData && clipboardData.items && clipboardData.items.length) { + var item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items); + + if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { + // paste img file + this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]); + event.preventDefault(); + } else if (item.kind === 'string') { + // paste text with maxTextLength check + if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) { + event.preventDefault(); + } + } + } else if (window.clipboardData) { + // for IE + var text = window.clipboardData.getData('text'); + + if (this.context.invoke('editor.isLimited', text.length)) { + event.preventDefault(); + } + } // Call editor.afterCommand after proceeding default event handler + + + setTimeout(function () { + _this.context.invoke('editor.afterCommand'); + }, 10); + } + }]); + + return Clipboard; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Dropzone.js +function Dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) Dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) Dropzone_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Dropzone_Dropzone = /*#__PURE__*/function () { + function Dropzone(context) { + Dropzone_classCallCheck(this, Dropzone); + + this.context = context; + this.$eventListener = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.documentEventHandlers = {}; + this.$dropzone = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-dropzone">', '<div class="note-dropzone-message"></div>', '</div>'].join('')).prependTo(this.$editor); + } + /** + * attach Drag and Drop Events + */ + + + Dropzone_createClass(Dropzone, [{ + key: "initialize", + value: function initialize() { + if (this.options.disableDragAndDrop) { + // prevent default drop event + this.documentEventHandlers.onDrop = function (e) { + e.preventDefault(); + }; // do not consider outside of dropzone + + + this.$eventListener = this.$dropzone; + this.$eventListener.on('drop', this.documentEventHandlers.onDrop); + } else { + this.attachDragAndDropEvent(); + } + } + /** + * attach Drag and Drop Events + */ + + }, { + key: "attachDragAndDropEvent", + value: function attachDragAndDropEvent() { + var _this = this; + + var collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + var $dropzoneMessage = this.$dropzone.find('.note-dropzone-message'); + + this.documentEventHandlers.onDragenter = function (e) { + var isCodeview = _this.context.invoke('codeview.isActivated'); + + var hasEditorSize = _this.$editor.width() > 0 && _this.$editor.height() > 0; + + if (!isCodeview && !collection.length && hasEditorSize) { + _this.$editor.addClass('dragover'); + + _this.$dropzone.width(_this.$editor.width()); + + _this.$dropzone.height(_this.$editor.height()); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + } + + collection = collection.add(e.target); + }; + + this.documentEventHandlers.onDragleave = function (e) { + collection = collection.not(e.target); // If nodeName is BODY, then just make it over (fix for IE) + + if (!collection.length || e.target.nodeName === 'BODY') { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + } + }; + + this.documentEventHandlers.onDrop = function () { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + }; // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + + + this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter).on('dragleave', this.documentEventHandlers.onDragleave).on('drop', this.documentEventHandlers.onDrop); // change dropzone's message on hover. + + this.$dropzone.on('dragenter', function () { + _this.$dropzone.addClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dropImage); + }).on('dragleave', function () { + _this.$dropzone.removeClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + }); // attach dropImage + + this.$dropzone.on('drop', function (event) { + var dataTransfer = event.originalEvent.dataTransfer; // stop the browser from opening the dropped content + + event.preventDefault(); + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + _this.$editable.focus(); + + _this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(dataTransfer.types, function (idx, type) { + // skip moz-specific types + if (type.toLowerCase().indexOf('_moz_') > -1) { + return; + } + + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + _this.context.invoke('editor.pasteHTML', content); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(content).each(function (idx, item) { + _this.context.invoke('editor.insertNode', item); + }); + } + }); + } + }).on('dragover', false); // prevent default dragover event + } + }, { + key: "destroy", + value: function destroy() { + var _this2 = this; + + Object.keys(this.documentEventHandlers).forEach(function (key) { + _this2.$eventListener.off(key.substr(2).toLowerCase(), _this2.documentEventHandlers[key]); + }); + this.documentEventHandlers = {}; + } + }]); + + return Dropzone; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Codeview.js +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function Codeview_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Codeview_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Codeview_createClass(Constructor, protoProps, staticProps) { if (protoProps) Codeview_defineProperties(Constructor.prototype, protoProps); if (staticProps) Codeview_defineProperties(Constructor, staticProps); return Constructor; } + + + +/** + * @class Codeview + */ + +var Codeview_CodeView = /*#__PURE__*/function () { + function CodeView(context) { + Codeview_classCallCheck(this, CodeView); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.options = context.options; + this.CodeMirrorConstructor = window.CodeMirror; + + if (this.options.codemirror.CodeMirrorConstructor) { + this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor; + } + } + + Codeview_createClass(CodeView, [{ + key: "sync", + value: function sync(html) { + var isCodeview = this.isActivated(); + var CodeMirror = this.CodeMirrorConstructor; + + if (isCodeview) { + if (html) { + if (CodeMirror) { + this.$codable.data('cmEditor').getDoc().setValue(html); + } else { + this.$codable.val(html); + } + } else { + if (CodeMirror) { + this.$codable.data('cmEditor').save(); + } + } + } + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.$codable.on('keyup', function (event) { + if (event.keyCode === core_key.code.ESCAPE) { + _this.deactivate(); + } + }); + } + /** + * @return {Boolean} + */ + + }, { + key: "isActivated", + value: function isActivated() { + return this.$editor.hasClass('codeview'); + } + /** + * toggle codeview + */ + + }, { + key: "toggle", + value: function toggle() { + if (this.isActivated()) { + this.deactivate(); + } else { + this.activate(); + } + + this.context.triggerEvent('codeview.toggled'); + } + /** + * purify input value + * @param value + * @returns {*} + */ + + }, { + key: "purify", + value: function purify(value) { + if (this.options.codeviewFilter) { + // filter code view regex + value = value.replace(this.options.codeviewFilterRegex, ''); // allow specific iframe tag + + if (this.options.codeviewIframeFilter) { + var whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase); + value = value.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi, function (tag) { + // remove if src attribute is duplicated + if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(tag)) { + return ''; + } + + var _iterator = _createForOfIteratorHelper(whitelist), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var src = _step.value; + + // pass if src is trusted + if (new RegExp('src="(https?:)?\/\/' + src.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '\/(.+)"').test(tag)) { + return tag; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return ''; + }); + } + } + + return value; + } + /** + * activate code view + */ + + }, { + key: "activate", + value: function activate() { + var _this2 = this; + + var CodeMirror = this.CodeMirrorConstructor; + this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml)); + this.$codable.height(this.$editable.height()); + this.context.invoke('toolbar.updateCodeview', true); + this.context.invoke('airPopover.updateCodeview', true); + this.$editor.addClass('codeview'); + this.$codable.focus(); // activate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror); // CodeMirror TernServer + + if (this.options.codemirror.tern) { + var server = new CodeMirror.TernServer(this.options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function (cm) { + server.updateArgHints(cm); + }); + } + + cmEditor.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', cmEditor.getValue(), event); + }); + cmEditor.on('change', function () { + _this2.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor); + }); // CodeMirror hasn't Padding. + + cmEditor.setSize(null, this.$editable.outerHeight()); + this.$codable.data('cmEditor', cmEditor); + } else { + this.$codable.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', _this2.$codable.val(), event); + }); + this.$codable.on('input', function () { + _this2.context.triggerEvent('change.codeview', _this2.$codable.val(), _this2.$codable); + }); + } + } + /** + * deactivate code view + */ + + }, { + key: "deactivate", + value: function deactivate() { + var CodeMirror = this.CodeMirrorConstructor; // deactivate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = this.$codable.data('cmEditor'); + this.$codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara); + var isChange = this.$editable.html() !== value; + this.$editable.html(value); + this.$editable.height(this.options.height ? this.$codable.height() : 'auto'); + this.$editor.removeClass('codeview'); + + if (isChange) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + + this.$editable.focus(); + this.context.invoke('toolbar.updateCodeview', false); + this.context.invoke('airPopover.updateCodeview', false); + } + }, { + key: "destroy", + value: function destroy() { + if (this.isActivated()) { + this.deactivate(); + } + } + }]); + + return CodeView; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Statusbar.js +function Statusbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Statusbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Statusbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Statusbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Statusbar_defineProperties(Constructor, staticProps); return Constructor; } + + +var EDITABLE_PADDING = 24; + +var Statusbar_Statusbar = /*#__PURE__*/function () { + function Statusbar(context) { + Statusbar_classCallCheck(this, Statusbar); + + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$statusbar = context.layoutInfo.statusbar; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + } + + Statusbar_createClass(Statusbar, [{ + key: "initialize", + value: function initialize() { + var _this = this; + + if (this.options.airMode || this.options.disableResizeEditor) { + this.destroy(); + return; + } + + this.$statusbar.on('mousedown', function (event) { + event.preventDefault(); + event.stopPropagation(); + + var editableTop = _this.$editable.offset().top - _this.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + var height = event.clientY - (editableTop + EDITABLE_PADDING); + height = _this.options.minheight > 0 ? Math.max(height, _this.options.minheight) : height; + height = _this.options.maxHeight > 0 ? Math.min(height, _this.options.maxHeight) : height; + + _this.$editable.height(height); + }; + + _this.$document.on('mousemove', onMouseMove).one('mouseup', function () { + _this.$document.off('mousemove', onMouseMove); + }); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$statusbar.off(); + this.$statusbar.addClass('locked'); + } + }]); + + return Statusbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Fullscreen.js +function Fullscreen_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Fullscreen_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Fullscreen_createClass(Constructor, protoProps, staticProps) { if (protoProps) Fullscreen_defineProperties(Constructor.prototype, protoProps); if (staticProps) Fullscreen_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Fullscreen_Fullscreen = /*#__PURE__*/function () { + function Fullscreen(context) { + var _this = this; + + Fullscreen_classCallCheck(this, Fullscreen); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$scrollbar = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('html, body'); + + this.onResize = function () { + _this.resizeTo({ + h: _this.$window.height() - _this.$toolbar.outerHeight() + }); + }; + } + + Fullscreen_createClass(Fullscreen, [{ + key: "resizeTo", + value: function resizeTo(size) { + this.$editable.css('height', size.h); + this.$codable.css('height', size.h); + + if (this.$codable.data('cmeditor')) { + this.$codable.data('cmeditor').setsize(null, size.h); + } + } + /** + * toggle fullscreen + */ + + }, { + key: "toggle", + value: function toggle() { + this.$editor.toggleClass('fullscreen'); + + if (this.isFullscreen()) { + this.$editable.data('orgHeight', this.$editable.css('height')); + this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight')); + this.$editable.css('maxHeight', ''); + this.$window.on('resize', this.onResize).trigger('resize'); + this.$scrollbar.css('overflow', 'hidden'); + } else { + this.$window.off('resize', this.onResize); + this.resizeTo({ + h: this.$editable.data('orgHeight') + }); + this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight')); + this.$scrollbar.css('overflow', 'visible'); + } + + this.context.invoke('toolbar.updateFullscreen', this.isFullscreen()); + } + }, { + key: "isFullscreen", + value: function isFullscreen() { + return this.$editor.hasClass('fullscreen'); + } + }]); + + return Fullscreen; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Handle.js +function Handle_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Handle_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Handle_createClass(Constructor, protoProps, staticProps) { if (protoProps) Handle_defineProperties(Constructor.prototype, protoProps); if (staticProps) Handle_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var Handle_Handle = /*#__PURE__*/function () { + function Handle(context) { + var _this = this; + + Handle_classCallCheck(this, Handle); + + this.context = context; + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + this.lang = this.options.langInfo; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + if (_this.update(e.target, e)) { + e.preventDefault(); + } + }, + 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': function summernoteKeyupSummernoteScrollSummernoteChangeSummernoteDialogShown() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Handle_createClass(Handle, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$handle = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-handle">', '<div class="note-control-selection">', '<div class="note-control-selection-bg"></div>', '<div class="note-control-holder note-control-nw"></div>', '<div class="note-control-holder note-control-ne"></div>', '<div class="note-control-holder note-control-sw"></div>', '<div class="', this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing', ' note-control-se"></div>', this.options.disableResizeImage ? '' : '<div class="note-control-selection-info"></div>', '</div>', '</div>'].join('')).prependTo(this.$editingArea); + this.$handle.on('mousedown', function (event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var $target = _this2.$handle.find('.note-control-selection').data('target'); + + var posStart = $target.offset(); + + var scrollTop = _this2.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + _this2.context.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + _this2.update($target[0], event); + }; + + _this2.$document.on('mousemove', onMouseMove).one('mouseup', function (e) { + e.preventDefault(); + + _this2.$document.off('mousemove', onMouseMove); + + _this2.context.invoke('editor.afterCommand'); + }); + + if (!$target.data('ratio')) { + // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }); // Listen for scrolling on the handle overlay. + + this.$handle.on('wheel', function (e) { + e.preventDefault(); + + _this2.update(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$handle.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (this.context.isDisabled()) { + return false; + } + + var isImage = dom.isImg(target); + var $selection = this.$handle.find('.note-control-selection'); + this.context.invoke('imagePopover.update', target, event); + + if (isImage) { + var $image = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target); + var position = $image.position(); + var pos = { + left: position.left + parseInt($image.css('marginLeft'), 10), + top: position.top + parseInt($image.css('marginTop'), 10) + }; // exclude margin + + var imageSize = { + w: $image.outerWidth(false), + h: $image.outerHeight(false) + }; + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', $image); // save current image element. + + var origImageObj = new Image(); + origImageObj.src = $image.attr('src'); + var sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')'; + $selection.find('.note-control-selection-info').text(sizingText); + this.context.invoke('editor.saveTarget', target); + } else { + this.hide(); + } + + return isImage; + } + /** + * hide + * + * @param {jQuery} $handle + */ + + }, { + key: "hide", + value: function hide() { + this.context.invoke('editor.clearTarget'); + this.$handle.children().hide(); + } + }]); + + return Handle; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoLink.js +function AutoLink_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoLink_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoLink_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoLink_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoLink_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var defaultScheme = 'http://'; +var linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i; + +var AutoLink_AutoLink = /*#__PURE__*/function () { + function AutoLink(context) { + var _this = this; + + AutoLink_classCallCheck(this, AutoLink); + + this.context = context; + this.options = context.options; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoLink_createClass(AutoLink, [{ + key: "initialize", + value: function initialize() { + this.lastWordRange = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWordRange = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWordRange) { + return; + } + + var keyword = this.lastWordRange.toString(); + var match = keyword.match(linkPattern); + + if (match && (match[1] || match[2])) { + var link = match[1] ? keyword : defaultScheme + keyword; + var urlText = this.options.showDomainOnlyForAutolink ? keyword.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, '').split('/')[0] : keyword; + var node = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<a />').html(urlText).attr('href', link)[0]; + + if (this.context.options.linkTargetBlank) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).attr('target', '_blank'); + } + + this.lastWordRange.insertNode(node); + this.lastWordRange = null; + this.context.invoke('editor.focus'); + } + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWordRange = wordRange; + } + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoLink; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoSync.js +function AutoSync_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoSync_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoSync_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoSync_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoSync_defineProperties(Constructor, staticProps); return Constructor; } + + +/** + * textarea auto sync. + */ + +var AutoSync_AutoSync = /*#__PURE__*/function () { + function AutoSync(context) { + var _this = this; + + AutoSync_classCallCheck(this, AutoSync); + + this.$note = context.layoutInfo.note; + this.events = { + 'summernote.change': function summernoteChange() { + _this.$note.val(context.invoke('code')); + } + }; + } + + AutoSync_createClass(AutoSync, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return dom.isTextarea(this.$note[0]); + } + }]); + + return AutoSync; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoReplace.js +function AutoReplace_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoReplace_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoReplace_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoReplace_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoReplace_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var AutoReplace_AutoReplace = /*#__PURE__*/function () { + function AutoReplace(context) { + var _this = this; + + AutoReplace_classCallCheck(this, AutoReplace); + + this.context = context; + this.options = context.options.replace || {}; + this.keys = [core_key.code.ENTER, core_key.code.SPACE, core_key.code.PERIOD, core_key.code.COMMA, core_key.code.SEMICOLON, core_key.code.SLASH]; + this.previousKeydownCode = null; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoReplace_createClass(AutoReplace, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.match; + } + }, { + key: "initialize", + value: function initialize() { + this.lastWord = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWord = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWord) { + return; + } + + var self = this; + var keyword = this.lastWord.toString(); + this.options.match(keyword, function (match) { + if (match) { + var node = ''; + + if (typeof match === 'string') { + node = dom.createText(match); + } else if (match instanceof jQuery) { + node = match[0]; + } else if (match instanceof Node) { + node = match; + } + + if (!node) return; + self.lastWord.insertNode(node); + self.lastWord = null; + self.context.invoke('editor.focus'); + } + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + // this forces it to remember the last whole word, even if multiple termination keys are pressed + // before the previous key is let go. + if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) { + this.previousKeydownCode = e.keyCode; + return; + } + + if (lists.contains(this.keys, e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWord = wordRange; + } + + this.previousKeydownCode = e.keyCode; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains(this.keys, e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoReplace; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Placeholder.js +function Placeholder_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Placeholder_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Placeholder_createClass(Constructor, protoProps, staticProps) { if (protoProps) Placeholder_defineProperties(Constructor.prototype, protoProps); if (staticProps) Placeholder_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Placeholder_Placeholder = /*#__PURE__*/function () { + function Placeholder(context) { + var _this = this; + + Placeholder_classCallCheck(this, Placeholder); + + this.context = context; + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + + if (this.options.inheritPlaceholder === true) { + // get placeholder value from the original element + this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder; + } + + this.events = { + 'summernote.init summernote.change': function summernoteInitSummernoteChange() { + _this.update(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Placeholder_createClass(Placeholder, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.placeholder; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-placeholder">'); + this.$placeholder.on('click', function () { + _this2.context.invoke('focus'); + }).html(this.options.placeholder).prependTo(this.$editingArea); + this.update(); + } + }, { + key: "destroy", + value: function destroy() { + this.$placeholder.remove(); + } + }, { + key: "update", + value: function update() { + var isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty'); + this.$placeholder.toggle(isShow); + } + }]); + + return Placeholder; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Buttons.js +function Buttons_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Buttons_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Buttons_createClass(Constructor, protoProps, staticProps) { if (protoProps) Buttons_defineProperties(Constructor.prototype, protoProps); if (staticProps) Buttons_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Buttons_Buttons = /*#__PURE__*/function () { + function Buttons(context) { + Buttons_classCallCheck(this, Buttons); + + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.context = context; + this.$toolbar = context.layoutInfo.toolbar; + this.options = context.options; + this.lang = this.options.langInfo; + this.invertedKeyMap = func.invertObject(this.options.keyMap[env.isMac ? 'mac' : 'pc']); + } + + Buttons_createClass(Buttons, [{ + key: "representShortcut", + value: function representShortcut(editorMethod) { + var shortcut = this.invertedKeyMap[editorMethod]; + + if (!this.options.shortcuts || !shortcut) { + return ''; + } + + if (env.isMac) { + shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + shortcut = shortcut.replace('BACKSLASH', '\\').replace('SLASH', '/').replace('LEFTBRACKET', '[').replace('RIGHTBRACKET', ']'); + return ' (' + shortcut + ')'; + } + }, { + key: "button", + value: function button(o) { + if (!this.options.tooltip && o.tooltip) { + delete o.tooltip; + } + + o.container = this.options.container; + return this.ui.button(o); + } + }, { + key: "initialize", + value: function initialize() { + this.addToolbarButtons(); + this.addImagePopoverButtons(); + this.addLinkPopoverButtons(); + this.addTablePopoverButtons(); + this.fontInstalledMap = {}; + } + }, { + key: "destroy", + value: function destroy() { + delete this.fontInstalledMap; + } + }, { + key: "isFontInstalled", + value: function isFontInstalled(name) { + if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) { + this.fontInstalledMap[name] = env.isFontInstalled(name) || lists.contains(this.options.fontNamesIgnoreCheck, name); + } + + return this.fontInstalledMap[name]; + } + }, { + key: "isFontDeservedToAdd", + value: function isFontDeservedToAdd(name) { + name = name.toLowerCase(); + return name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1; + } + }, { + key: "colorPalette", + value: function colorPalette(className, tooltip, backColor, foreColor) { + var _this = this; + + return this.ui.buttonGroup({ + className: 'note-color ' + className, + children: [this.button({ + className: 'note-current-color-button', + contents: this.ui.icon(this.options.icons.font + ' note-recent-color'), + tooltip: tooltip, + click: function click(e) { + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget); + + if (backColor && foreColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor'), + foreColor: $button.attr('data-foreColor') + }); + } else if (backColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor') + }); + } else if (foreColor) { + _this.context.invoke('editor.color', { + foreColor: $button.attr('data-foreColor') + }); + } + }, + callback: function callback($button) { + var $recentColor = $button.find('.note-recent-color'); + + if (backColor) { + $recentColor.css('background-color', _this.options.colorButton.backColor); + $button.attr('data-backColor', _this.options.colorButton.backColor); + } + + if (foreColor) { + $recentColor.css('color', _this.options.colorButton.foreColor); + $button.attr('data-foreColor', _this.options.colorButton.foreColor); + } else { + $recentColor.css('color', 'transparent'); + } + } + }), this.button({ + className: 'dropdown-toggle', + contents: this.ui.dropdownButtonContents('', this.options), + tooltip: this.lang.color.more, + data: { + toggle: 'dropdown' + } + }), this.ui.dropdown({ + items: (backColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.background + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">', this.lang.color.transparent, '</button>', '</div>', '<div class="note-holder" data-event="backColor"><!-- back colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.backColor + '" data-event="backColorPalette">', '</div>', '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>', '</div>'].join('') : '') + (foreColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.foreground + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">', this.lang.color.resetToDefault, '</button>', '</div>', '<div class="note-holder" data-event="foreColor"><!-- fore colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.foreColor + '" data-event="foreColorPalette">', '</div>', // Fix missing Div, Commented to find easily if it's wrong + '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>', '</div>'].join('') : ''), + callback: function callback($dropdown) { + $dropdown.find('.note-holder').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: _this.options.colors, + colorsName: _this.options.colorsName, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + /* TODO: do we have to record recent custom colors within cookies? */ + + var customColors = [['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF']]; + $dropdown.find('.note-holder-custom').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: customColors, + colorsName: customColors, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + $dropdown.find('input[type=color]').each(function (idx, item) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).change(function () { + var $chip = $dropdown.find('#' + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this).data('event')).find('.note-color-btn').first(); + var color = this.value.toUpperCase(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $chip.click(); + }); + }); + }, + click: function click(event) { + event.stopPropagation(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.' + className).find('.note-dropdown-menu'); + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + var eventName = $button.data('event'); + var value = $button.attr('data-value'); + + if (eventName === 'openPalette') { + var $picker = $parent.find('#' + value); + var $palette = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]); // Shift palette chips + + var $chip = $palette.find('.note-color-btn').last().detach(); // Set chip attributes + + var color = $picker.val(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $palette.prepend($chip); + $picker.click(); + } else { + if (lists.contains(['backColor', 'foreColor'], eventName)) { + var key = eventName === 'backColor' ? 'background-color' : 'color'; + var $color = $button.closest('.note-color').find('.note-recent-color'); + var $currentButton = $button.closest('.note-color').find('.note-current-color-button'); + $color.css(key, value); + $currentButton.attr('data-' + eventName, value); + } + + _this.context.invoke('editor.' + eventName, value); + } + } + })] + }).render(); + } + }, { + key: "addToolbarButtons", + value: function addToolbarButtons() { + var _this2 = this; + + this.context.memo('button.style', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.magic), _this2.options), + tooltip: _this2.lang.style.style, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + className: 'dropdown-style', + items: _this2.options.styleTags, + title: _this2.lang.style.style, + template: function template(item) { + // TBD: need to be simplified + if (typeof item === 'string') { + item = { + tag: item, + title: Object.prototype.hasOwnProperty.call(_this2.lang.style, item) ? _this2.lang.style[item] : item + }; + } + + var tag = item.tag; + var title = item.title; + var style = item.style ? ' style="' + item.style + '" ' : ''; + var className = item.className ? ' class="' + item.className + '"' : ''; + return '<' + tag + style + className + '>' + title + '</' + tag + '>'; + }, + click: _this2.context.createInvokeHandler('editor.formatBlock') + })]).render(); + }); + + var _loop = function _loop(styleIdx, styleLen) { + var item = _this2.options.styleTags[styleIdx]; + + _this2.context.memo('button.style.' + item, function () { + return _this2.button({ + className: 'note-btn-style-' + item, + contents: '<div data-value="' + item + '">' + item.toUpperCase() + '</div>', + tooltip: _this2.lang.style[item], + click: _this2.context.createInvokeHandler('editor.formatBlock') + }).render(); + }); + }; + + for (var styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) { + _loop(styleIdx, styleLen); + } + + this.context.memo('button.bold', function () { + return _this2.button({ + className: 'note-btn-bold', + contents: _this2.ui.icon(_this2.options.icons.bold), + tooltip: _this2.lang.font.bold + _this2.representShortcut('bold'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.bold') + }).render(); + }); + this.context.memo('button.italic', function () { + return _this2.button({ + className: 'note-btn-italic', + contents: _this2.ui.icon(_this2.options.icons.italic), + tooltip: _this2.lang.font.italic + _this2.representShortcut('italic'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.italic') + }).render(); + }); + this.context.memo('button.underline', function () { + return _this2.button({ + className: 'note-btn-underline', + contents: _this2.ui.icon(_this2.options.icons.underline), + tooltip: _this2.lang.font.underline + _this2.representShortcut('underline'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.underline') + }).render(); + }); + this.context.memo('button.clear', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.eraser), + tooltip: _this2.lang.font.clear + _this2.representShortcut('removeFormat'), + click: _this2.context.createInvokeHandler('editor.removeFormat') + }).render(); + }); + this.context.memo('button.strikethrough', function () { + return _this2.button({ + className: 'note-btn-strikethrough', + contents: _this2.ui.icon(_this2.options.icons.strikethrough), + tooltip: _this2.lang.font.strikethrough + _this2.representShortcut('strikethrough'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.strikethrough') + }).render(); + }); + this.context.memo('button.superscript', function () { + return _this2.button({ + className: 'note-btn-superscript', + contents: _this2.ui.icon(_this2.options.icons.superscript), + tooltip: _this2.lang.font.superscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.superscript') + }).render(); + }); + this.context.memo('button.subscript', function () { + return _this2.button({ + className: 'note-btn-subscript', + contents: _this2.ui.icon(_this2.options.icons.subscript), + tooltip: _this2.lang.font.subscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.subscript') + }).render(); + }); + this.context.memo('button.fontname', function () { + var styleInfo = _this2.context.invoke('editor.currentStyle'); + + if (_this2.options.addDefaultFonts) { + // Add 'default' fonts into the fontnames array if not exist + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(styleInfo['font-family'].split(','), function (idx, fontname) { + fontname = fontname.trim().replace(/['"]+/g, ''); + + if (_this2.isFontDeservedToAdd(fontname)) { + if (_this2.options.fontNames.indexOf(fontname) === -1) { + _this2.options.fontNames.push(fontname); + } + } + }); + } + + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontname"></span>', _this2.options), + tooltip: _this2.lang.font.name, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontname', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontNames.filter(_this2.isFontInstalled.bind(_this2)), + title: _this2.lang.font.name, + template: function template(item) { + return '<span style="font-family: ' + env.validFontName(item) + '">' + item + '</span>'; + }, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontName') + })]).render(); + }); + this.context.memo('button.fontsize', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>', _this2.options), + tooltip: _this2.lang.font.size, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsize', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizes, + title: _this2.lang.font.size, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSize') + })]).render(); + }); + this.context.memo('button.fontsizeunit', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>', _this2.options), + tooltip: _this2.lang.font.sizeunit, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsizeunit', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizeUnits, + title: _this2.lang.font.sizeunit, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit') + })]).render(); + }); + this.context.memo('button.color', function () { + return _this2.colorPalette('note-color-all', _this2.lang.color.recent, true, true); + }); + this.context.memo('button.forecolor', function () { + return _this2.colorPalette('note-color-fore', _this2.lang.color.foreground, false, true); + }); + this.context.memo('button.backcolor', function () { + return _this2.colorPalette('note-color-back', _this2.lang.color.background, true, false); + }); + this.context.memo('button.ul', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.unorderedlist), + tooltip: _this2.lang.lists.unordered + _this2.representShortcut('insertUnorderedList'), + click: _this2.context.createInvokeHandler('editor.insertUnorderedList') + }).render(); + }); + this.context.memo('button.ol', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.orderedlist), + tooltip: _this2.lang.lists.ordered + _this2.representShortcut('insertOrderedList'), + click: _this2.context.createInvokeHandler('editor.insertOrderedList') + }).render(); + }); + var justifyLeft = this.button({ + contents: this.ui.icon(this.options.icons.alignLeft), + tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'), + click: this.context.createInvokeHandler('editor.justifyLeft') + }); + var justifyCenter = this.button({ + contents: this.ui.icon(this.options.icons.alignCenter), + tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'), + click: this.context.createInvokeHandler('editor.justifyCenter') + }); + var justifyRight = this.button({ + contents: this.ui.icon(this.options.icons.alignRight), + tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'), + click: this.context.createInvokeHandler('editor.justifyRight') + }); + var justifyFull = this.button({ + contents: this.ui.icon(this.options.icons.alignJustify), + tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'), + click: this.context.createInvokeHandler('editor.justifyFull') + }); + var outdent = this.button({ + contents: this.ui.icon(this.options.icons.outdent), + tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'), + click: this.context.createInvokeHandler('editor.outdent') + }); + var indent = this.button({ + contents: this.ui.icon(this.options.icons.indent), + tooltip: this.lang.paragraph.indent + this.representShortcut('indent'), + click: this.context.createInvokeHandler('editor.indent') + }); + this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render')); + this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render')); + this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render')); + this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render')); + this.context.memo('button.outdent', func.invoke(outdent, 'render')); + this.context.memo('button.indent', func.invoke(indent, 'render')); + this.context.memo('button.paragraph', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.alignLeft), _this2.options), + tooltip: _this2.lang.paragraph.paragraph, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown([_this2.ui.buttonGroup({ + className: 'note-align', + children: [justifyLeft, justifyCenter, justifyRight, justifyFull] + }), _this2.ui.buttonGroup({ + className: 'note-list', + children: [outdent, indent] + })])]).render(); + }); + this.context.memo('button.height', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.textHeight), _this2.options), + tooltip: _this2.lang.font.height, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + items: _this2.options.lineHeights, + checkClassName: _this2.options.icons.menuCheck, + className: 'dropdown-line-height', + title: _this2.lang.font.height, + click: _this2.context.createInvokeHandler('editor.lineHeight') + })]).render(); + }); + this.context.memo('button.table', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.table), _this2.options), + tooltip: _this2.lang.table.table, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + title: _this2.lang.table.table, + className: 'note-table', + items: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>', '<div class="note-dimension-picker-highlighted"></div>', '<div class="note-dimension-picker-unhighlighted"></div>', '</div>', '<div class="note-dimension-display">1 x 1</div>'].join('') + })], { + callback: function callback($node) { + var $catcher = $node.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: _this2.options.insertTableMaxSize.col + 'em', + height: _this2.options.insertTableMaxSize.row + 'em' + }).mousedown(_this2.context.createInvokeHandler('editor.insertTable')).on('mousemove', _this2.tableMoveHandler.bind(_this2)); + } + }).render(); + }); + this.context.memo('button.link', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.link), + tooltip: _this2.lang.link.link + _this2.representShortcut('linkDialog.show'), + click: _this2.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.picture', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.picture), + tooltip: _this2.lang.image.image, + click: _this2.context.createInvokeHandler('imageDialog.show') + }).render(); + }); + this.context.memo('button.video', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.video), + tooltip: _this2.lang.video.video, + click: _this2.context.createInvokeHandler('videoDialog.show') + }).render(); + }); + this.context.memo('button.hr', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.minus), + tooltip: _this2.lang.hr.insert + _this2.representShortcut('insertHorizontalRule'), + click: _this2.context.createInvokeHandler('editor.insertHorizontalRule') + }).render(); + }); + this.context.memo('button.fullscreen', function () { + return _this2.button({ + className: 'btn-fullscreen note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.arrowsAlt), + tooltip: _this2.lang.options.fullscreen, + click: _this2.context.createInvokeHandler('fullscreen.toggle') + }).render(); + }); + this.context.memo('button.codeview', function () { + return _this2.button({ + className: 'btn-codeview note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.code), + tooltip: _this2.lang.options.codeview, + click: _this2.context.createInvokeHandler('codeview.toggle') + }).render(); + }); + this.context.memo('button.redo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.redo), + tooltip: _this2.lang.history.redo + _this2.representShortcut('redo'), + click: _this2.context.createInvokeHandler('editor.redo') + }).render(); + }); + this.context.memo('button.undo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.undo), + tooltip: _this2.lang.history.undo + _this2.representShortcut('undo'), + click: _this2.context.createInvokeHandler('editor.undo') + }).render(); + }); + this.context.memo('button.help', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.question), + tooltip: _this2.lang.options.help, + click: _this2.context.createInvokeHandler('helpDialog.show') + }).render(); + }); + } + /** + * image: [ + * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], + * ['float', ['floatLeft', 'floatRight', 'floatNone']], + * ['remove', ['removeMedia']], + * ], + */ + + }, { + key: "addImagePopoverButtons", + value: function addImagePopoverButtons() { + var _this3 = this; + + // Image Size Buttons + this.context.memo('button.resizeFull', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">100%</span>', + tooltip: _this3.lang.image.resizeFull, + click: _this3.context.createInvokeHandler('editor.resize', '1') + }).render(); + }); + this.context.memo('button.resizeHalf', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">50%</span>', + tooltip: _this3.lang.image.resizeHalf, + click: _this3.context.createInvokeHandler('editor.resize', '0.5') + }).render(); + }); + this.context.memo('button.resizeQuarter', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">25%</span>', + tooltip: _this3.lang.image.resizeQuarter, + click: _this3.context.createInvokeHandler('editor.resize', '0.25') + }).render(); + }); + this.context.memo('button.resizeNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.resizeNone, + click: _this3.context.createInvokeHandler('editor.resize', '0') + }).render(); + }); // Float Buttons + + this.context.memo('button.floatLeft', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatLeft), + tooltip: _this3.lang.image.floatLeft, + click: _this3.context.createInvokeHandler('editor.floatMe', 'left') + }).render(); + }); + this.context.memo('button.floatRight', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatRight), + tooltip: _this3.lang.image.floatRight, + click: _this3.context.createInvokeHandler('editor.floatMe', 'right') + }).render(); + }); + this.context.memo('button.floatNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.floatNone, + click: _this3.context.createInvokeHandler('editor.floatMe', 'none') + }).render(); + }); // Remove Buttons + + this.context.memo('button.removeMedia', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.trash), + tooltip: _this3.lang.image.remove, + click: _this3.context.createInvokeHandler('editor.removeMedia') + }).render(); + }); + } + }, { + key: "addLinkPopoverButtons", + value: function addLinkPopoverButtons() { + var _this4 = this; + + this.context.memo('button.linkDialogShow', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.link), + tooltip: _this4.lang.link.edit, + click: _this4.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.unlink', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.unlink), + tooltip: _this4.lang.link.unlink, + click: _this4.context.createInvokeHandler('editor.unlink') + }).render(); + }); + } + /** + * table : [ + * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], + * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']] + * ], + */ + + }, { + key: "addTablePopoverButtons", + value: function addTablePopoverButtons() { + var _this5 = this; + + this.context.memo('button.addRowUp', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowAbove), + tooltip: _this5.lang.table.addRowAbove, + click: _this5.context.createInvokeHandler('editor.addRow', 'top') + }).render(); + }); + this.context.memo('button.addRowDown', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowBelow), + tooltip: _this5.lang.table.addRowBelow, + click: _this5.context.createInvokeHandler('editor.addRow', 'bottom') + }).render(); + }); + this.context.memo('button.addColLeft', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colBefore), + tooltip: _this5.lang.table.addColLeft, + click: _this5.context.createInvokeHandler('editor.addCol', 'left') + }).render(); + }); + this.context.memo('button.addColRight', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colAfter), + tooltip: _this5.lang.table.addColRight, + click: _this5.context.createInvokeHandler('editor.addCol', 'right') + }).render(); + }); + this.context.memo('button.deleteRow', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowRemove), + tooltip: _this5.lang.table.delRow, + click: _this5.context.createInvokeHandler('editor.deleteRow') + }).render(); + }); + this.context.memo('button.deleteCol', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colRemove), + tooltip: _this5.lang.table.delCol, + click: _this5.context.createInvokeHandler('editor.deleteCol') + }).render(); + }); + this.context.memo('button.deleteTable', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.trash), + tooltip: _this5.lang.table.delTable, + click: _this5.context.createInvokeHandler('editor.deleteTable') + }).render(); + }); + } + }, { + key: "build", + value: function build($container, groups) { + for (var groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) { + var group = groups[groupIdx]; + var groupName = Array.isArray(group) ? group[0] : group; + var buttons = Array.isArray(group) ? group.length === 1 ? [group[0]] : group[1] : [group]; + var $group = this.ui.buttonGroup({ + className: 'note-' + groupName + }).render(); + + for (var idx = 0, len = buttons.length; idx < len; idx++) { + var btn = this.context.memo('button.' + buttons[idx]); + + if (btn) { + $group.append(typeof btn === 'function' ? btn(this.context) : btn); + } + } + + $group.appendTo($container); + } + } + /** + * @param {jQuery} [$container] + */ + + }, { + key: "updateCurrentStyle", + value: function updateCurrentStyle($container) { + var _this6 = this; + + var $cont = $container || this.$toolbar; + var styleInfo = this.context.invoke('editor.currentStyle'); + this.updateBtnStates($cont, { + '.note-btn-bold': function noteBtnBold() { + return styleInfo['font-bold'] === 'bold'; + }, + '.note-btn-italic': function noteBtnItalic() { + return styleInfo['font-italic'] === 'italic'; + }, + '.note-btn-underline': function noteBtnUnderline() { + return styleInfo['font-underline'] === 'underline'; + }, + '.note-btn-subscript': function noteBtnSubscript() { + return styleInfo['font-subscript'] === 'subscript'; + }, + '.note-btn-superscript': function noteBtnSuperscript() { + return styleInfo['font-superscript'] === 'superscript'; + }, + '.note-btn-strikethrough': function noteBtnStrikethrough() { + return styleInfo['font-strikethrough'] === 'strikethrough'; + } + }); + + if (styleInfo['font-family']) { + var fontNames = styleInfo['font-family'].split(',').map(function (name) { + return name.replace(/[\'\"]/g, '').replace(/\s+$/, '').replace(/^\s+/, ''); + }); + var fontName = lists.find(fontNames, this.isFontInstalled.bind(this)); + $cont.find('.dropdown-fontname a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontName + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName); + } + + if (styleInfo['font-size']) { + var fontSize = styleInfo['font-size']; + $cont.find('.dropdown-fontsize a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare with string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontSize + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsize').text(fontSize); + var fontSizeUnit = styleInfo['font-size-unit']; + $cont.find('.dropdown-fontsizeunit a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + var isChecked = $item.data('value') + '' === fontSizeUnit + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsizeunit').text(fontSizeUnit); + } + + if (styleInfo['line-height']) { + var lineHeight = styleInfo['line-height']; + $cont.find('.dropdown-line-height li a').each(function (idx, item) { + // always compare with string to avoid creating another func. + var isChecked = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).data('value') + '' === lineHeight + ''; + _this6.className = isChecked ? 'checked' : ''; + }); + } + } + }, { + key: "updateBtnStates", + value: function updateBtnStates($container, infos) { + var _this7 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(infos, function (selector, pred) { + _this7.ui.toggleBtnActive($container.find(selector), pred()); + }); + } + }, { + key: "tableMoveHandler", + value: function tableMoveHandler(event) { + var PX_PER_EM = 18; + var $picker = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target.parentNode); // target is mousecatcher + + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var posOffset; // HTML5 with jQuery - e.offsetX is undefined in Firefox + + if (event.offsetX === undefined) { + var posCatcher = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + $highlighted.css({ + width: dim.c + 'em', + height: dim.r + 'em' + }); + $catcher.data('value', dim.c + 'x' + dim.r); + + if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) { + $unhighlighted.css({ + width: dim.c + 1 + 'em' + }); + } + + if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) { + $unhighlighted.css({ + height: dim.r + 1 + 'em' + }); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + } + }]); + + return Buttons; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Toolbar.js +function Toolbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Toolbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Toolbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Toolbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Toolbar_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Toolbar_Toolbar = /*#__PURE__*/function () { + function Toolbar(context) { + Toolbar_classCallCheck(this, Toolbar); + + this.context = context; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$statusbar = context.layoutInfo.statusbar; + this.options = context.options; + this.isFollowing = false; + this.followScroll = this.followScroll.bind(this); + } + + Toolbar_createClass(Toolbar, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !this.options.airMode; + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.options.toolbar = this.options.toolbar || []; + + if (!this.options.toolbar.length) { + this.$toolbar.hide(); + } else { + this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar); + } + + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + + this.changeContainer(false); + this.$note.on('summernote.keyup summernote.mouseup summernote.change', function () { + _this.context.invoke('buttons.updateCurrentStyle'); + }); + this.context.invoke('buttons.updateCurrentStyle'); + + if (this.options.followingToolbar) { + this.$window.on('scroll resize', this.followScroll); + } + } + }, { + key: "destroy", + value: function destroy() { + this.$toolbar.children().remove(); + + if (this.options.followingToolbar) { + this.$window.off('scroll resize', this.followScroll); + } + } + }, { + key: "followScroll", + value: function followScroll() { + if (this.$editor.hasClass('fullscreen')) { + return false; + } + + var editorHeight = this.$editor.outerHeight(); + var editorWidth = this.$editor.width(); + var toolbarHeight = this.$toolbar.height(); + var statusbarHeight = this.$statusbar.height(); // check if the web app is currently using another static bar + + var otherBarHeight = 0; + + if (this.options.otherStaticBar) { + otherBarHeight = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.otherStaticBar).outerHeight(); + } + + var currentOffset = this.$document.scrollTop(); + var editorOffsetTop = this.$editor.offset().top; + var editorOffsetBottom = editorOffsetTop + editorHeight; + var activateOffset = editorOffsetTop - otherBarHeight; + var deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight; + + if (!this.isFollowing && currentOffset > activateOffset && currentOffset < deactivateOffsetBottom - toolbarHeight) { + this.isFollowing = true; + this.$editable.css({ + marginTop: this.$toolbar.outerHeight() + }); + this.$toolbar.css({ + position: 'fixed', + top: otherBarHeight, + width: editorWidth, + zIndex: 1000 + }); + } else if (this.isFollowing && (currentOffset < activateOffset || currentOffset > deactivateOffsetBottom)) { + this.isFollowing = false; + this.$toolbar.css({ + position: 'relative', + top: 0, + width: '100%', + zIndex: 'auto' + }); + this.$editable.css({ + marginTop: '' + }); + } + } + }, { + key: "changeContainer", + value: function changeContainer(isFullscreen) { + if (isFullscreen) { + this.$toolbar.prependTo(this.$editor); + } else { + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + } + + if (this.options.followingToolbar) { + this.followScroll(); + } + } + }, { + key: "updateFullscreen", + value: function updateFullscreen(isFullscreen) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen); + this.changeContainer(isFullscreen); + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.deactivate(); + } else { + this.activate(); + } + } + }, { + key: "activate", + value: function activate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, true); + } + }, { + key: "deactivate", + value: function deactivate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, false); + } + }]); + + return Toolbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkDialog.js +function LinkDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var LinkDialog_LinkDialog = /*#__PURE__*/function () { + function LinkDialog(context) { + LinkDialog_classCallCheck(this, LinkDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']); + } + + LinkDialog_createClass(LinkDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group">', "<label for=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.textToDisplay, "</label>"), "<input id=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>"), '</div>', '<div class="form-group note-form-group">', "<label for=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.url, "</label>"), "<input id=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>"), '</div>', !this.options.disableLinkTarget ? external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-open-in-new-window', + text: this.lang.link.openInNewWindow, + checked: true + }).render()).html() : '', external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-use-protocol', + text: this.lang.link.useProtocol, + checked: true + }).render()).html()].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.link.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + className: 'link-dialog', + title: this.lang.link.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + /** + * toggle update button + */ + + }, { + key: "toggleLinkBtn", + value: function toggleLinkBtn($linkBtn, $linkText, $linkUrl) { + this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + } + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {Object} linkInfo + * @return {Promise} + */ + + }, { + key: "showLinkDialog", + value: function showLinkDialog(linkInfo) { + var _this = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $linkText = _this.$dialog.find('.note-link-text'); + + var $linkUrl = _this.$dialog.find('.note-link-url'); + + var $linkBtn = _this.$dialog.find('.note-link-btn'); + + var $openInNewWindow = _this.$dialog.find('.sn-checkbox-open-in-new-window input[type=checkbox]'); + + var $useProtocol = _this.$dialog.find('.sn-checkbox-use-protocol input[type=checkbox]'); + + _this.ui.onDialogShown(_this.$dialog, function () { + _this.context.triggerEvent('dialog.shown'); // If no url was given and given text is valid URL then copy that into URL Field + + + if (!linkInfo.url && func.isValidUrl(linkInfo.text)) { + linkInfo.url = linkInfo.text; + } + + $linkText.on('input paste propertychange', function () { + // If linktext was modified by input events, + // cloning text from linkUrl will be stopped. + linkInfo.text = $linkText.val(); + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.text); + $linkUrl.on('input paste propertychange', function () { + // Display same text on `Text to display` as default + // when linktext has no text + if (!linkInfo.text) { + $linkText.val($linkUrl.val()); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.url); + + if (!env.isSupportTouch) { + $linkUrl.trigger('focus'); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + + _this.bindEnterKey($linkUrl, $linkBtn); + + _this.bindEnterKey($linkText, $linkBtn); + + var isNewWindowChecked = linkInfo.isNewWindow !== undefined ? linkInfo.isNewWindow : _this.context.options.linkTargetBlank; + $openInNewWindow.prop('checked', isNewWindowChecked); + var useProtocolChecked = linkInfo.url ? false : _this.context.options.useProtocol; + $useProtocol.prop('checked', useProtocolChecked); + $linkBtn.one('click', function (event) { + event.preventDefault(); + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + isNewWindow: $openInNewWindow.is(':checked'), + checkProtocol: $useProtocol.is(':checked') + }); + + _this.ui.hideDialog(_this.$dialog); + }); + }); + + _this.ui.onDialogHidden(_this.$dialog, function () { + // detach events + $linkText.off(); + $linkUrl.off(); + $linkBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this.ui.showDialog(_this.$dialog); + }).promise(); + } + /** + * @param {Object} layoutInfo + */ + + }, { + key: "show", + value: function show() { + var _this2 = this; + + var linkInfo = this.context.invoke('editor.getLinkInfo'); + this.context.invoke('editor.saveRange'); + this.showLinkDialog(linkInfo).then(function (linkInfo) { + _this2.context.invoke('editor.restoreRange'); + + _this2.context.invoke('editor.createLink', linkInfo); + }).fail(function () { + _this2.context.invoke('editor.restoreRange'); + }); + } + }]); + + return LinkDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkPopover.js +function LinkPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var LinkPopover_LinkPopover = /*#__PURE__*/function () { + function LinkPopover(context) { + var _this = this; + + LinkPopover_classCallCheck(this, LinkPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteChangeSummernoteScroll() { + _this.update(); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + LinkPopover_createClass(LinkPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.link); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-link-popover', + callback: function callback($node) { + var $content = $node.find('.popover-content,.note-popover-content'); + $content.prepend('<span><a target="_blank"></a> </span>'); + } + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.link); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update() { + // Prevent focusing on editable when invoke('code') is executed + if (!this.context.invoke('editor.hasFocus')) { + this.hide(); + return; + } + + var rng = this.context.invoke('editor.getLastRange'); + + if (rng.isCollapsed() && rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + var href = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href'); + this.$popover.find('a').attr('href', href).text(href); + var pos = dom.posFromPlaceholder(anchor); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return LinkPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImageDialog.js +function ImageDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImageDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImageDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImageDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImageDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var ImageDialog_ImageDialog = /*#__PURE__*/function () { + function ImageDialog(context) { + ImageDialog_classCallCheck(this, ImageDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + ImageDialog_createClass(ImageDialog, [{ + key: "initialize", + value: function initialize() { + var imageLimitation = ''; + + if (this.options.maximumImageFileSize) { + var unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + ' ' + ' KMGTP'[unit] + 'B'; + imageLimitation = "<small>".concat(this.lang.image.maximumFileSize + ' : ' + readableSize, "</small>"); + } + + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group note-group-select-from-files">', '<label for="note-dialog-image-file-' + this.options.id + '" class="note-form-label">' + this.lang.image.selectFromFiles + '</label>', '<input id="note-dialog-image-file-' + this.options.id + '" class="note-image-input form-control-file note-form-control note-input" ', ' type="file" name="files" accept="image/*" multiple="multiple"/>', imageLimitation, '</div>', '<div class="form-group note-group-image-url">', '<label for="note-dialog-image-url-' + this.options.id + '" class="note-form-label">' + this.lang.image.url + '</label>', '<input id="note-dialog-image-url-' + this.options.id + '" class="note-image-url form-control note-form-control note-input" type="text"/>', '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.image.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.image.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "show", + value: function show() { + var _this = this; + + this.context.invoke('editor.saveRange'); + this.showImageDialog().then(function (data) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); + + if (typeof data === 'string') { + // image url + // If onImageLinkInsert set, + if (_this.options.callbacks.onImageLinkInsert) { + _this.context.triggerEvent('image.link.insert', data); + } else { + _this.context.invoke('editor.insertImage', data); + } + } else { + // array of files + _this.context.invoke('editor.insertImagesOrCallback', data); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showImageDialog", + value: function showImageDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $imageInput = _this2.$dialog.find('.note-image-input'); + + var $imageUrl = _this2.$dialog.find('.note-image-url'); + + var $imageBtn = _this2.$dialog.find('.note-image-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); // Cloning imageInput to clear element. + + + $imageInput.replaceWith($imageInput.clone().on('change', function (event) { + deferred.resolve(event.target.files || event.target.value); + }).val('')); + $imageUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($imageBtn, $imageUrl.val()); + }).val(''); + + if (!env.isSupportTouch) { + $imageUrl.trigger('focus'); + } + + $imageBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($imageUrl.val()); + }); + + _this2.bindEnterKey($imageUrl, $imageBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $imageInput.off(); + $imageUrl.off(); + $imageBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return ImageDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImagePopover.js +function ImagePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImagePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImagePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImagePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImagePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + +/** + * Image popover module + * mouse events that show/hide popover will be handled by Handle.js. + * Handle.js will receive the events and invoke 'imagePopover.update'. + */ + +var ImagePopover_ImagePopover = /*#__PURE__*/function () { + function ImagePopover(context) { + var _this = this; + + ImagePopover_classCallCheck(this, ImagePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.editable = context.layoutInfo.editable[0]; + this.options = context.options; + this.events = { + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + ImagePopover_createClass(ImagePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.image); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-image-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.image); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (dom.isImg(target)) { + var position = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target).offset(); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + var pos = {}; + + if (this.options.popatmouse) { + pos.left = event.pageX - 20; + pos.top = event.pageY; + } else { + pos = position; + } + + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return ImagePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/TablePopover.js +function TablePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TablePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function TablePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) TablePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) TablePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var TablePopover_TablePopover = /*#__PURE__*/function () { + function TablePopover(context) { + var _this = this; + + TablePopover_classCallCheck(this, TablePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.update(e.target); + }, + 'summernote.keyup summernote.scroll summernote.change': function summernoteKeyupSummernoteScrollSummernoteChange() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + TablePopover_createClass(TablePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.table); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-table-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.table); // [workaround] Disable Firefox's default table editor + + if (env.isFF) { + document.execCommand('enableInlineTableEditing', false, false); + } + + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target) { + if (this.context.isDisabled()) { + return false; + } + + var isCell = dom.isCell(target); + + if (isCell) { + var pos = dom.posFromPlaceholder(target); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + + return isCell; + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return TablePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/VideoDialog.js +function VideoDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function VideoDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function VideoDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) VideoDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) VideoDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var VideoDialog_VideoDialog = /*#__PURE__*/function () { + function VideoDialog(context) { + VideoDialog_classCallCheck(this, VideoDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + VideoDialog_createClass(VideoDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group row-fluid">', "<label for=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.video.url, " <small class=\"text-muted\">").concat(this.lang.video.providers, "</small></label>"), "<input id=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>"), '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.video.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.video.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "createVideoNode", + value: function createVideoNode(url) { + // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm) + var ytRegExp = /\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/; + var ytRegExpForStart = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/; + var ytMatch = url.match(ytRegExp); + var igRegExp = /(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/; + var igMatch = url.match(igRegExp); + var vRegExp = /\/\/vine\.co\/v\/([a-zA-Z0-9]+)/; + var vMatch = url.match(vRegExp); + var vimRegExp = /\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/; + var vimMatch = url.match(vimRegExp); + var dmRegExp = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/; + var dmMatch = url.match(dmRegExp); + var youkuRegExp = /\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/; + var youkuMatch = url.match(youkuRegExp); + var qqRegExp = /\/\/v\.qq\.com.*?vid=(.+)/; + var qqMatch = url.match(qqRegExp); + var qqRegExp2 = /\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/; + var qqMatch2 = url.match(qqRegExp2); + var mp4RegExp = /^.+.(mp4|m4v)$/; + var mp4Match = url.match(mp4RegExp); + var oggRegExp = /^.+.(ogg|ogv)$/; + var oggMatch = url.match(oggRegExp); + var webmRegExp = /^.+.(webm)$/; + var webmMatch = url.match(webmRegExp); + var fbRegExp = /(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/; + var fbMatch = url.match(fbRegExp); + var $video; + + if (ytMatch && ytMatch[1].length === 11) { + var youtubeId = ytMatch[1]; + var start = 0; + + if (typeof ytMatch[2] !== 'undefined') { + var ytMatchForStart = ytMatch[2].match(ytRegExpForStart); + + if (ytMatchForStart) { + for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) { + start += typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0; + } + } + } + + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : '')).attr('width', '640').attr('height', '360'); + } else if (igMatch && igMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/').attr('width', '612').attr('height', '710').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else if (vMatch && vMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', vMatch[0] + '/embed/simple').attr('width', '600').attr('height', '600').attr('class', 'vine-embed'); + } else if (vimMatch && vimMatch[3].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('src', '//player.vimeo.com/video/' + vimMatch[3]).attr('width', '640').attr('height', '360'); + } else if (dmMatch && dmMatch[2].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2]).attr('width', '640').attr('height', '360'); + } else if (youkuMatch && youkuMatch[1].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '498').attr('width', '510').attr('src', '//player.youku.com/embed/' + youkuMatch[1]); + } else if (qqMatch && qqMatch[1].length || qqMatch2 && qqMatch2[2].length) { + var vid = qqMatch && qqMatch[1].length ? qqMatch[1] : qqMatch2[2]; + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '310').attr('width', '500').attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0'); + } else if (mp4Match || oggMatch || webmMatch) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<video controls>').attr('src', url).attr('width', '640').attr('height', '360'); + } else if (fbMatch && fbMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560').attr('width', '560').attr('height', '301').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else { + // this is not a known video link. Now what, Cat? Now what? + return false; + } + + $video.addClass('note-video-clip'); + return $video[0]; + } + }, { + key: "show", + value: function show() { + var _this = this; + + var text = this.context.invoke('editor.getSelectedText'); + this.context.invoke('editor.saveRange'); + this.showVideoDialog(text).then(function (url) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); // build node + + + var $node = _this.createVideoNode(url); + + if ($node) { + // insert video node + _this.context.invoke('editor.insertNode', $node); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show video dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showVideoDialog", + value: function showVideoDialog() + /* text */ + { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $videoUrl = _this2.$dialog.find('.note-video-url'); + + var $videoBtn = _this2.$dialog.find('.note-video-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + $videoUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($videoBtn, $videoUrl.val()); + }); + + if (!env.isSupportTouch) { + $videoUrl.trigger('focus'); + } + + $videoBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($videoUrl.val()); + }); + + _this2.bindEnterKey($videoUrl, $videoBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $videoUrl.off(); + $videoBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return VideoDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HelpDialog.js +function HelpDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HelpDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HelpDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) HelpDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) HelpDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var HelpDialog_HelpDialog = /*#__PURE__*/function () { + function HelpDialog(context) { + HelpDialog_classCallCheck(this, HelpDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + HelpDialog_createClass(HelpDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<p class="text-center">', '<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ', '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', '</p>'].join(''); + this.$dialog = this.ui.dialog({ + title: this.lang.options.help, + fade: this.options.dialogsFade, + body: this.createShortcutList(), + footer: body, + callback: function callback($node) { + $node.find('.modal-body,.note-modal-body').css({ + 'max-height': 300, + 'overflow': 'scroll' + }); + } + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "createShortcutList", + value: function createShortcutList() { + var _this = this; + + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + return Object.keys(keyMap).map(function (key) { + var command = keyMap[key]; + var $row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div><div class="help-list-item"></div></div>'); + $row.append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<label><kbd>' + key + '</kdb></label>').css({ + 'width': 180, + 'margin-right': 10 + })).append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<span/>').html(_this.context.memo('help.' + command) || command)); + return $row.html(); + }).join(''); + } + /** + * show help dialog + * + * @return {Promise} + */ + + }, { + key: "showHelpDialog", + value: function showHelpDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + deferred.resolve(); + }); + + _this2.ui.showDialog(_this2.$dialog); + }).promise(); + } + }, { + key: "show", + value: function show() { + var _this3 = this; + + this.context.invoke('editor.saveRange'); + this.showHelpDialog().then(function () { + _this3.context.invoke('editor.restoreRange'); + }); + } + }]); + + return HelpDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AirPopover.js +function AirPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AirPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AirPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) AirPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) AirPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + +var AIRMODE_POPOVER_X_OFFSET = -5; +var AIRMODE_POPOVER_Y_OFFSET = 5; + +var AirPopover_AirPopover = /*#__PURE__*/function () { + function AirPopover(context) { + var _this = this; + + AirPopover_classCallCheck(this, AirPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.hidable = true; + this.onContextmenu = false; + this.pageX = null; + this.pageY = null; + this.events = { + 'summernote.contextmenu': function summernoteContextmenu(e) { + if (_this.options.editing) { + e.preventDefault(); + e.stopPropagation(); + _this.onContextmenu = true; + + _this.update(true); + } + }, + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + }, + 'summernote.keyup summernote.mouseup summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteScroll(we, e) { + if (_this.options.editing && !_this.onContextmenu) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + + _this.update(); + } + + _this.onContextmenu = false; + }, + 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteChangeSummernoteDialogShownSummernoteBlur() { + _this.hide(); + }, + 'summernote.focusout': function summernoteFocusout() { + if (!_this.$popover.is(':active,:focus')) { + _this.hide(); + } + } + }; + } + + AirPopover_createClass(AirPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.options.airMode && !lists.isEmpty(this.options.popover.air); + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$popover = this.ui.popover({ + className: 'note-air-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.air); // disable hiding this popover preemptively by 'summernote.blur' event. + + this.$popover.on('mousedown', function () { + _this2.hidable = false; + }); // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored). + + this.$popover.on('mouseup', function () { + _this2.hidable = true; + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(forcelyOpen) { + var styleInfo = this.context.invoke('editor.currentStyle'); + + if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) { + var rect = { + left: this.pageX, + top: this.pageY + }; + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + rect.top -= containerOffset.top; + rect.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET, + top: rect.top + AIRMODE_POPOVER_Y_OFFSET + }); + this.context.invoke('buttons.updateCurrentStyle', this.$popover); + } else { + this.hide(); + } + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + if (this.hidable) { + this.$popover.hide(); + } + } + }]); + + return AirPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HintPopover.js +function HintPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HintPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HintPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) HintPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) HintPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var POPOVER_DIST = 5; + +var HintPopover_HintPopover = /*#__PURE__*/function () { + function HintPopover(context) { + var _this = this; + + HintPopover_classCallCheck(this, HintPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.hint = this.options.hint || []; + this.direction = this.options.hintDirection || 'bottom'; + this.hints = Array.isArray(this.hint) ? this.hint : [this.hint]; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + HintPopover_createClass(HintPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.hints.length > 0; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.lastWordRange = null; + this.matchingWord = null; + this.$popover = this.ui.popover({ + className: 'note-hint-popover', + hideArrow: true, + direction: '' + }).render().appendTo(this.options.container); + this.$popover.hide(); + this.$content = this.$popover.find('.popover-content,.note-popover-content'); + this.$content.on('click', '.note-hint-item', function (e) { + _this2.$content.find('.active').removeClass('active'); + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).addClass('active'); + + _this2.replace(); + }); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "selectItem", + value: function selectItem($item) { + this.$content.find('.active').removeClass('active'); + $item.addClass('active'); + this.$content[0].scrollTop = $item[0].offsetTop - this.$content.innerHeight() / 2; + } + }, { + key: "moveDown", + value: function moveDown() { + var $current = this.$content.find('.note-hint-item.active'); + var $next = $current.next(); + + if ($next.length) { + this.selectItem($next); + } else { + var $nextGroup = $current.parent().next(); + + if (!$nextGroup.length) { + $nextGroup = this.$content.find('.note-hint-group').first(); + } + + this.selectItem($nextGroup.find('.note-hint-item').first()); + } + } + }, { + key: "moveUp", + value: function moveUp() { + var $current = this.$content.find('.note-hint-item.active'); + var $prev = $current.prev(); + + if ($prev.length) { + this.selectItem($prev); + } else { + var $prevGroup = $current.parent().prev(); + + if (!$prevGroup.length) { + $prevGroup = this.$content.find('.note-hint-group').last(); + } + + this.selectItem($prevGroup.find('.note-hint-item').last()); + } + } + }, { + key: "replace", + value: function replace() { + var $item = this.$content.find('.note-hint-item.active'); + + if ($item.length) { + var node = this.nodeFromItem($item); // If matchingWord length = 0 -> capture OK / open hint / but as mention capture "" (\w*) + + if (this.matchingWord !== null && this.matchingWord.length === 0) { + this.lastWordRange.so = this.lastWordRange.eo; // Else si > 0 and normal case -> adjust range "before" for correct position of insertion + } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) { + var rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length; + + if (rangeCompute > 0) { + this.lastWordRange.so += rangeCompute; + } + } + + this.lastWordRange.insertNode(node); + + if (this.options.hintSelect === 'next') { + var blank = document.createTextNode(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).after(blank); + range.createFromNodeBefore(blank).select(); + } else { + range.createFromNodeAfter(node).select(); + } + + this.lastWordRange = null; + this.hide(); + this.context.invoke('editor.focus'); + } + } + }, { + key: "nodeFromItem", + value: function nodeFromItem($item) { + var hint = this.hints[$item.data('index')]; + var item = $item.data('item'); + var node = hint.content ? hint.content(item) : item; + + if (typeof node === 'string') { + node = dom.createText(node); + } + + return node; + } + }, { + key: "createItemTemplates", + value: function createItemTemplates(hintIdx, items) { + var hint = this.hints[hintIdx]; + return items.map(function (item + /*, idx */ + ) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-item"/>'); + $item.append(hint.template ? hint.template(item) : item + ''); + $item.data({ + 'index': hintIdx, + 'item': item + }); + return $item; + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (!this.$popover.is(':visible')) { + return; + } + + if (e.keyCode === core_key.code.ENTER) { + e.preventDefault(); + this.replace(); + } else if (e.keyCode === core_key.code.UP) { + e.preventDefault(); + this.moveUp(); + } else if (e.keyCode === core_key.code.DOWN) { + e.preventDefault(); + this.moveDown(); + } + } + }, { + key: "searchKeyword", + value: function searchKeyword(index, keyword, callback) { + var hint = this.hints[index]; + + if (hint && hint.match.test(keyword) && hint.search) { + var matches = hint.match.exec(keyword); + this.matchingWord = matches[0]; + hint.search(matches[1], callback); + } else { + callback(); + } + } + }, { + key: "createGroup", + value: function createGroup(idx, keyword) { + var _this3 = this; + + var $group = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-group note-hint-group-' + idx + '"></div>'); + this.searchKeyword(idx, keyword, function (items) { + items = items || []; + + if (items.length) { + $group.html(_this3.createItemTemplates(idx, items)); + + _this3.show(); + } + }); + return $group; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + var _this4 = this; + + if (!lists.contains([core_key.code.ENTER, core_key.code.UP, core_key.code.DOWN], e.keyCode)) { + var _range = this.context.invoke('editor.getLastRange'); + + var wordRange, keyword; + + if (this.options.hintMode === 'words') { + wordRange = _range.getWordsRange(_range); + keyword = wordRange.toString(); + this.hints.forEach(function (hint) { + if (hint.match.test(keyword)) { + wordRange = _range.getWordsMatchRange(hint.match); + return false; + } + }); + + if (!wordRange) { + this.hide(); + return; + } + + keyword = wordRange.toString(); + } else { + wordRange = _range.getWordRange(); + keyword = wordRange.toString(); + } + + if (this.hints.length && keyword) { + this.$content.empty(); + var bnd = func.rect2bnd(lists.last(wordRange.getClientRects())); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + + if (bnd) { + bnd.top -= containerOffset.top; + bnd.left -= containerOffset.left; + this.$popover.hide(); + this.lastWordRange = wordRange; + this.hints.forEach(function (hint, idx) { + if (hint.match.test(keyword)) { + _this4.createGroup(idx, keyword).appendTo(_this4.$content); + } + }); // select first .note-hint-item + + this.$content.find('.note-hint-item:first').addClass('active'); // set position for popover after group is created + + if (this.direction === 'top') { + this.$popover.css({ + left: bnd.left, + top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST + }); + } else { + this.$popover.css({ + left: bnd.left, + top: bnd.top + bnd.height + POPOVER_DIST + }); + } + } + } else { + this.hide(); + } + } + } + }, { + key: "show", + value: function show() { + this.$popover.show(); + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return HintPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/settings.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + version: '0.8.18', + plugins: {}, + dom: dom, + range: range, + lists: lists, + options: { + langInfo: external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], + editing: true, + modules: { + 'editor': Editor_Editor, + 'clipboard': Clipboard_Clipboard, + 'dropzone': Dropzone_Dropzone, + 'codeview': Codeview_CodeView, + 'statusbar': Statusbar_Statusbar, + 'fullscreen': Fullscreen_Fullscreen, + 'handle': Handle_Handle, + // FIXME: HintPopover must be front of autolink + // - Script error about range when Enter key is pressed on hint popover + 'hintPopover': HintPopover_HintPopover, + 'autoLink': AutoLink_AutoLink, + 'autoSync': AutoSync_AutoSync, + 'autoReplace': AutoReplace_AutoReplace, + 'placeholder': Placeholder_Placeholder, + 'buttons': Buttons_Buttons, + 'toolbar': Toolbar_Toolbar, + 'linkDialog': LinkDialog_LinkDialog, + 'linkPopover': LinkPopover_LinkPopover, + 'imageDialog': ImageDialog_ImageDialog, + 'imagePopover': ImagePopover_ImagePopover, + 'tablePopover': TablePopover_TablePopover, + 'videoDialog': VideoDialog_VideoDialog, + 'helpDialog': HelpDialog_HelpDialog, + 'airPopover': AirPopover_AirPopover + }, + buttons: {}, + lang: 'en-US', + followingToolbar: false, + toolbarPosition: 'top', + otherStaticBar: '', + // toolbar + codeviewKeepButton: false, + toolbar: [['style', ['style']], ['font', ['bold', 'underline', 'clear']], ['fontname', ['fontname']], ['color', ['color']], ['para', ['ul', 'ol', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture', 'video']], ['view', ['fullscreen', 'codeview', 'help']]], + // popover + popatmouse: true, + popover: { + image: [['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], ['float', ['floatLeft', 'floatRight', 'floatNone']], ['remove', ['removeMedia']]], + link: [['link', ['linkDialogShow', 'unlink']]], + table: [['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]], + air: [['color', ['color']], ['font', ['bold', 'underline', 'clear']], ['para', ['ul', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture']], ['view', ['fullscreen', 'codeview']]] + }, + // air mode: inline editor + airMode: false, + overrideContextMenu: false, + // TBD + width: null, + height: null, + linkTargetBlank: true, + useProtocol: true, + defaultProtocol: 'http://', + focus: false, + tabDisabled: false, + tabSize: 4, + styleWithCSS: false, + shortcuts: true, + textareaAutoSync: true, + tooltip: 'auto', + container: null, + maxTextLength: 0, + blockquoteBreakingLevel: 2, + spellCheck: true, + disableGrammar: false, + placeholder: null, + inheritPlaceholder: false, + // TODO: need to be documented + recordEveryKeystroke: false, + historyLimit: 200, + // TODO: need to be documented + showDomainOnlyForAutolink: false, + // TODO: need to be documented + hintMode: 'word', + hintSelect: 'after', + hintDirection: 'bottom', + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande', 'Tahoma', 'Times New Roman', 'Verdana'], + fontNamesIgnoreCheck: [], + addDefaultFonts: true, + fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'], + fontSizeUnits: ['px', 'pt'], + // pallete colors(n x n) + colors: [['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'], ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'], ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'], ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'], ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'], ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'], ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'], ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031']], + // http://chir.ag/projects/name-that-color/ + colorsName: [['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'], ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'], ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'], ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'], ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'], ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'], ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'], ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou']], + colorButton: { + foreColor: '#000000', + backColor: '#FFFF00' + }, + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + tableClassName: 'table table-bordered', + insertTableMaxSize: { + col: 10, + row: 10 + }, + // By default, dialogs are attached in container. + dialogsInBody: false, + dialogsFade: false, + maximumImageFileSize: null, + callbacks: { + onBeforeCommand: null, + onBlur: null, + onBlurCodeview: null, + onChange: null, + onChangeCodeview: null, + onDialogShown: null, + onEnter: null, + onFocus: null, + onImageLinkInsert: null, + onImageUpload: null, + onImageUploadError: null, + onInit: null, + onKeydown: null, + onKeyup: null, + onMousedown: null, + onMouseup: null, + onPaste: null, + onScroll: null + }, + codemirror: { + mode: 'text/html', + htmlMode: true, + lineNumbers: true + }, + codeviewFilter: false, + codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi, + codeviewIframeFilter: true, + codeviewIframeWhitelistSrc: [], + codeviewIframeWhitelistSrcBase: ['www.youtube.com', 'www.youtube-nocookie.com', 'www.facebook.com', 'vine.co', 'instagram.com', 'player.vimeo.com', 'www.dailymotion.com', 'player.youku.com', 'v.qq.com'], + keyMap: { + pc: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'linkDialog.show' + }, + mac: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'linkDialog.show' + } + }, + icons: { + 'align': 'note-icon-align', + 'alignCenter': 'note-icon-align-center', + 'alignJustify': 'note-icon-align-justify', + 'alignLeft': 'note-icon-align-left', + 'alignRight': 'note-icon-align-right', + 'rowBelow': 'note-icon-row-below', + 'colBefore': 'note-icon-col-before', + 'colAfter': 'note-icon-col-after', + 'rowAbove': 'note-icon-row-above', + 'rowRemove': 'note-icon-row-remove', + 'colRemove': 'note-icon-col-remove', + 'indent': 'note-icon-align-indent', + 'outdent': 'note-icon-align-outdent', + 'arrowsAlt': 'note-icon-arrows-alt', + 'bold': 'note-icon-bold', + 'caret': 'note-icon-caret', + 'circle': 'note-icon-circle', + 'close': 'note-icon-close', + 'code': 'note-icon-code', + 'eraser': 'note-icon-eraser', + 'floatLeft': 'note-icon-float-left', + 'floatRight': 'note-icon-float-right', + 'font': 'note-icon-font', + 'frame': 'note-icon-frame', + 'italic': 'note-icon-italic', + 'link': 'note-icon-link', + 'unlink': 'note-icon-chain-broken', + 'magic': 'note-icon-magic', + 'menuCheck': 'note-icon-menu-check', + 'minus': 'note-icon-minus', + 'orderedlist': 'note-icon-orderedlist', + 'pencil': 'note-icon-pencil', + 'picture': 'note-icon-picture', + 'question': 'note-icon-question', + 'redo': 'note-icon-redo', + 'rollback': 'note-icon-rollback', + 'square': 'note-icon-square', + 'strikethrough': 'note-icon-strikethrough', + 'subscript': 'note-icon-subscript', + 'superscript': 'note-icon-superscript', + 'table': 'note-icon-table', + 'textHeight': 'note-icon-text-height', + 'trash': 'note-icon-trash', + 'underline': 'note-icon-underline', + 'undo': 'note-icon-undo', + 'unorderedlist': 'note-icon-unorderedlist', + 'video': 'note-icon-video' + } + } +}); + +/***/ }), + +/***/ 51: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// EXTERNAL MODULE: ./src/js/base/renderer.js +var renderer = __webpack_require__(1); + +// CONCATENATED MODULE: ./src/js/lite/ui/TooltipUI.js +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + +var TooltipUI_TooltipUI = /*#__PURE__*/function () { + function TooltipUI($node, options) { + _classCallCheck(this, TooltipUI); + + this.$node = $node; + this.options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, { + title: '', + target: options.container, + trigger: 'hover focus', + placement: 'bottom' + }, options); // create tooltip node + + this.$tooltip = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-tooltip">', '<div class="note-tooltip-arrow"></div>', '<div class="note-tooltip-content"></div>', '</div>'].join('')); // define event + + if (this.options.trigger !== 'manual') { + var showCallback = this.show.bind(this); + var hideCallback = this.hide.bind(this); + var toggleCallback = this.toggle.bind(this); + this.options.trigger.split(' ').forEach(function (eventName) { + if (eventName === 'hover') { + $node.off('mouseenter mouseleave'); + $node.on('mouseenter', showCallback).on('mouseleave', hideCallback); + } else if (eventName === 'click') { + $node.on('click', toggleCallback); + } else if (eventName === 'focus') { + $node.on('focus', showCallback).on('blur', hideCallback); + } + }); + } + } + + _createClass(TooltipUI, [{ + key: "show", + value: function show() { + var $node = this.$node; + var offset = $node.offset(); + var targetOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.target).offset(); + offset.top -= targetOffset.top; + offset.left -= targetOffset.left; + var $tooltip = this.$tooltip; + var title = this.options.title || $node.attr('title') || $node.data('title'); + var placement = this.options.placement || $node.data('placement'); + $tooltip.addClass(placement); + $tooltip.find('.note-tooltip-content').text(title); + $tooltip.appendTo(this.options.target); + var nodeWidth = $node.outerWidth(); + var nodeHeight = $node.outerHeight(); + var tooltipWidth = $tooltip.outerWidth(); + var tooltipHeight = $tooltip.outerHeight(); + + if (placement === 'bottom') { + $tooltip.css({ + top: offset.top + nodeHeight, + left: offset.left + (nodeWidth / 2 - tooltipWidth / 2) + }); + } else if (placement === 'top') { + $tooltip.css({ + top: offset.top - tooltipHeight, + left: offset.left + (nodeWidth / 2 - tooltipWidth / 2) + }); + } else if (placement === 'left') { + $tooltip.css({ + top: offset.top + (nodeHeight / 2 - tooltipHeight / 2), + left: offset.left - tooltipWidth + }); + } else if (placement === 'right') { + $tooltip.css({ + top: offset.top + (nodeHeight / 2 - tooltipHeight / 2), + left: offset.left + nodeWidth + }); + } + + $tooltip.addClass('in'); + } + }, { + key: "hide", + value: function hide() { + var _this = this; + + this.$tooltip.removeClass('in'); + setTimeout(function () { + _this.$tooltip.remove(); + }, 200); + } + }, { + key: "toggle", + value: function toggle() { + if (this.$tooltip.hasClass('in')) { + this.hide(); + } else { + this.show(); + } + } + }]); + + return TooltipUI; +}(); + +/* harmony default export */ var ui_TooltipUI = (TooltipUI_TooltipUI); +// CONCATENATED MODULE: ./src/js/lite/ui/DropdownUI.js +function DropdownUI_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function DropdownUI_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function DropdownUI_createClass(Constructor, protoProps, staticProps) { if (protoProps) DropdownUI_defineProperties(Constructor.prototype, protoProps); if (staticProps) DropdownUI_defineProperties(Constructor, staticProps); return Constructor; } + + + +var DropdownUI_DropdownUI = /*#__PURE__*/function () { + function DropdownUI($node, options) { + DropdownUI_classCallCheck(this, DropdownUI); + + this.$button = $node; + this.options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, { + target: options.container + }, options); + this.setEvent(); + } + + DropdownUI_createClass(DropdownUI, [{ + key: "setEvent", + value: function setEvent() { + var _this = this; + + this.$button.on('click', function (e) { + _this.toggle(); + + e.stopImmediatePropagation(); + }); + } + }, { + key: "clear", + value: function clear() { + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.note-btn-group.open'); + $parent.find('.note-btn.active').removeClass('active'); + $parent.removeClass('open'); + } + }, { + key: "show", + value: function show() { + this.$button.addClass('active'); + this.$button.parent().addClass('open'); + var $dropdown = this.$button.next(); + var offset = $dropdown.offset(); + var width = $dropdown.outerWidth(); + var windowWidth = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window).width(); + var targetMarginRight = parseFloat(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.target).css('margin-right')); + + if (offset.left + width > windowWidth - targetMarginRight) { + $dropdown.css('margin-left', windowWidth - targetMarginRight - (offset.left + width)); + } else { + $dropdown.css('margin-left', ''); + } + } + }, { + key: "hide", + value: function hide() { + this.$button.removeClass('active'); + this.$button.parent().removeClass('open'); + } + }, { + key: "toggle", + value: function toggle() { + var isOpened = this.$button.parent().hasClass('open'); + this.clear(); + + if (isOpened) { + this.hide(); + } else { + this.show(); + } + } + }]); + + return DropdownUI; +}(); + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document).on('click', function (e) { + if (!external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.target).closest('.note-btn-group').length) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.note-btn-group.open').removeClass('open'); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.note-btn-group .note-btn.active').removeClass('active'); + } +}); +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document).on('click.note-dropdown-menu', function (e) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.target).closest('.note-dropdown-menu').parent().removeClass('open'); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.target).closest('.note-dropdown-menu').parent().find('.note-btn.active').removeClass('active'); +}); +/* harmony default export */ var ui_DropdownUI = (DropdownUI_DropdownUI); +// CONCATENATED MODULE: ./src/js/lite/ui/ModalUI.js +function ModalUI_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ModalUI_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ModalUI_createClass(Constructor, protoProps, staticProps) { if (protoProps) ModalUI_defineProperties(Constructor.prototype, protoProps); if (staticProps) ModalUI_defineProperties(Constructor, staticProps); return Constructor; } + + + +var ModalUI_ModalUI = /*#__PURE__*/function () { + function ModalUI($node + /*, options */ + ) { + ModalUI_classCallCheck(this, ModalUI); + + this.$modal = $node; + this.$backdrop = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-modal-backdrop"/>'); + } + + ModalUI_createClass(ModalUI, [{ + key: "show", + value: function show() { + var _this = this; + + this.$backdrop.appendTo(document.body).show(); + this.$modal.addClass('open').show(); + this.$modal.trigger('note.modal.show'); + this.$modal.off('click', '.close').on('click', '.close', this.hide.bind(this)); + this.$modal.on('keydown', function (event) { + if (event.which === 27) { + event.preventDefault(); + + _this.hide(); + } + }); + } + }, { + key: "hide", + value: function hide() { + this.$modal.removeClass('open').hide(); + this.$backdrop.hide(); + this.$modal.trigger('note.modal.hide'); + this.$modal.off('keydown'); + } + }]); + + return ModalUI; +}(); + +/* harmony default export */ var ui_ModalUI = (ModalUI_ModalUI); +// CONCATENATED MODULE: ./src/js/lite/ui.js + + + + + +var editor = renderer["a" /* default */].create('<div class="note-editor note-frame"/>'); +var toolbar = renderer["a" /* default */].create('<div class="note-toolbar" role="toolbar"/>'); +var editingArea = renderer["a" /* default */].create('<div class="note-editing-area"/>'); +var codable = renderer["a" /* default */].create('<textarea class="note-codable" aria-multiline="true"/>'); +var editable = renderer["a" /* default */].create('<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>'); +var statusbar = renderer["a" /* default */].create(['<output class="note-status-output" role="status" aria-live="polite"></output>', '<div class="note-statusbar" role="status">', '<div class="note-resizebar" aria-label="resize">', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '</div>', '</div>'].join('')); +var airEditor = renderer["a" /* default */].create('<div class="note-editor note-airframe"/>'); +var airEditable = renderer["a" /* default */].create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>', '<output class="note-status-output" role="status" aria-live="polite"></output>'].join('')); +var buttonGroup = renderer["a" /* default */].create('<div class="note-btn-group">'); +var ui_button = renderer["a" /* default */].create('<button type="button" class="note-btn" tabindex="-1">', function ($node, options) { + // set button type + if (options && options.tooltip) { + $node.attr({ + 'aria-label': options.tooltip + }); + $node.data('_lite_tooltip', new ui_TooltipUI($node, { + title: options.tooltip, + container: options.container + })).on('click', function (e) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).data('_lite_tooltip').hide(); + }); + } + + if (options.contents) { + $node.html(options.contents); + } + + if (options && options.data && options.data.toggle === 'dropdown') { + $node.data('_lite_dropdown', new ui_DropdownUI($node, { + container: options.container + })); + } + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); +var dropdown = renderer["a" /* default */].create('<div class="note-dropdown-menu" role="list">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + var $temp = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<a class="note-dropdown-item" href="#" data-value="' + value + '" role="listitem" aria-label="' + value + '"></a>'); + $temp.html(content).data('item', item); + return $temp; + }) : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + $node.on('click', '> .note-dropdown-item', function (e) { + var $a = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this); + var item = $a.data('item'); + var value = $a.data('value'); + + if (item.click) { + item.click($a); + } else if (options.itemClick) { + options.itemClick(e, item, value); + } + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); +var dropdownCheck = renderer["a" /* default */].create('<div class="note-dropdown-menu note-check" role="list">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + var $temp = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<a class="note-dropdown-item" href="#" data-value="' + value + '" role="listitem" aria-label="' + item + '"></a>'); + $temp.html([icon(options.checkClassName), ' ', content]).data('item', item); + return $temp; + }) : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + $node.on('click', '> .note-dropdown-item', function (e) { + var $a = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this); + var item = $a.data('item'); + var value = $a.data('value'); + + if (item.click) { + item.click($a); + } else if (options.itemClick) { + options.itemClick(e, item, value); + } + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); + +var dropdownButtonContents = function dropdownButtonContents(contents, options) { + return contents + ' ' + icon(options.icons.caret, 'span'); +}; + +var dropdownButton = function dropdownButton(opt, callback) { + return buttonGroup([ui_button({ + className: 'dropdown-toggle', + contents: opt.title + ' ' + icon('note-icon-caret'), + tooltip: opt.tooltip, + data: { + toggle: 'dropdown' + } + }), dropdown({ + className: opt.className, + items: opt.items, + template: opt.template, + itemClick: opt.itemClick + })], { + callback: callback + }).render(); +}; + +var dropdownCheckButton = function dropdownCheckButton(opt, callback) { + return buttonGroup([ui_button({ + className: 'dropdown-toggle', + contents: opt.title + ' ' + icon('note-icon-caret'), + tooltip: opt.tooltip, + data: { + toggle: 'dropdown' + } + }), dropdownCheck({ + className: opt.className, + checkClassName: opt.checkClassName, + items: opt.items, + template: opt.template, + itemClick: opt.itemClick + })], { + callback: callback + }).render(); +}; + +var paragraphDropdownButton = function paragraphDropdownButton(opt) { + return buttonGroup([ui_button({ + className: 'dropdown-toggle', + contents: opt.title + ' ' + icon('note-icon-caret'), + tooltip: opt.tooltip, + data: { + toggle: 'dropdown' + } + }), dropdown([buttonGroup({ + className: 'note-align', + children: opt.items[0] + }), buttonGroup({ + className: 'note-list', + children: opt.items[1] + })])]).render(); +}; + +var ui_tableMoveHandler = function tableMoveHandler(event, col, row) { + var PX_PER_EM = 18; + var $picker = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target.parentNode); // target is mousecatcher + + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var posOffset; // HTML5 with jQuery - e.offsetX is undefined in Firefox + + if (event.offsetX === undefined) { + var posCatcher = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + $highlighted.css({ + width: dim.c + 'em', + height: dim.r + 'em' + }); + $catcher.data('value', dim.c + 'x' + dim.r); + + if (dim.c > 3 && dim.c < col) { + $unhighlighted.css({ + width: dim.c + 1 + 'em' + }); + } + + if (dim.r > 3 && dim.r < row) { + $unhighlighted.css({ + height: dim.r + 1 + 'em' + }); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); +}; + +var tableDropdownButton = function tableDropdownButton(opt) { + return buttonGroup([ui_button({ + className: 'dropdown-toggle', + contents: opt.title + ' ' + icon('note-icon-caret'), + tooltip: opt.tooltip, + data: { + toggle: 'dropdown' + } + }), dropdown({ + className: 'note-table', + items: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>', '<div class="note-dimension-picker-highlighted"></div>', '<div class="note-dimension-picker-unhighlighted"></div>', '</div>', '<div class="note-dimension-display">1 x 1</div>'].join('') + })], { + callback: function callback($node) { + var $catcher = $node.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: opt.col + 'em', + height: opt.row + 'em' + }).mousedown(opt.itemClick).mousemove(function (e) { + ui_tableMoveHandler(e, opt.col, opt.row); + }); + } + }).render(); +}; + +var palette = renderer["a" /* default */].create('<div class="note-color-palette"/>', function ($node, options) { + var contents = []; + + for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) { + var eventName = options.eventName; + var colors = options.colors[row]; + var colorsName = options.colorsName[row]; + var buttons = []; + + for (var col = 0, colSize = colors.length; col < colSize; col++) { + var color = colors[col]; + var colorName = colorsName[col]; + buttons.push(['<button type="button" class="note-btn note-color-btn"', 'style="background-color:', color, '" ', 'data-event="', eventName, '" ', 'data-value="', color, '" ', 'data-title="', colorName, '" ', 'aria-label="', colorName, '" ', 'data-toggle="button" tabindex="-1"></button>'].join('')); + } + + contents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + + $node.html(contents.join('')); + $node.find('.note-color-btn').each(function () { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this).data('_lite_tooltip', new ui_TooltipUI(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this), { + container: options.container + })); + }); +}); + +var ui_colorDropdownButton = function colorDropdownButton(opt, type) { + return buttonGroup({ + className: 'note-color', + children: [ui_button({ + className: 'note-current-color-button', + contents: opt.title, + tooltip: opt.lang.color.recent, + click: opt.currentClick, + callback: function callback($button) { + var $recentColor = $button.find('.note-recent-color'); + + if (type !== 'foreColor') { + $recentColor.css('background-color', '#FFFF00'); + $button.attr('data-backColor', '#FFFF00'); + } + } + }), ui_button({ + className: 'dropdown-toggle', + contents: icon('note-icon-caret'), + tooltip: opt.lang.color.more, + data: { + toggle: 'dropdown' + } + }), dropdown({ + items: ['<div>', '<div class="note-btn-group btn-background-color">', '<div class="note-palette-title">' + opt.lang.color.background + '</div>', '<div>', '<button type="button" class="note-color-reset note-btn note-btn-block" data-event="backColor" data-value="transparent">', opt.lang.color.transparent, '</button>', '</div>', '<div class="note-holder" data-event="backColor"></div>', '<div class="btn-sm">', '<input type="color" id="html5bcp" class="note-btn btn-default" value="#21104A" style="width:100%;" data-value="cp">', '<button type="button" class="note-color-reset btn" data-event="backColor" data-value="cpbackColor">', opt.lang.color.cpSelect, '</button>', '</div>', '</div>', '<div class="note-btn-group btn-foreground-color">', '<div class="note-palette-title">' + opt.lang.color.foreground + '</div>', '<div>', '<button type="button" class="note-color-reset note-btn note-btn-block" data-event="removeFormat" data-value="foreColor">', opt.lang.color.resetToDefault, '</button>', '</div>', '<div class="note-holder" data-event="foreColor"></div>', '<div class="btn-sm">', '<input type="color" id="html5fcp" class="note-btn btn-default" value="#21104A" style="width:100%;" data-value="cp">', '<button type="button" class="note-color-reset btn" data-event="foreColor" data-value="cpforeColor">', opt.lang.color.cpSelect, '</button>', '</div>', '</div>', '</div>'].join(''), + callback: function callback($dropdown) { + $dropdown.find('.note-holder').each(function () { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this); + $holder.append(palette({ + colors: opt.colors, + eventName: $holder.data('event') + }).render()); + }); + + if (type === 'fore') { + $dropdown.find('.btn-background-color').hide(); + $dropdown.css({ + 'min-width': '210px' + }); + } else if (type === 'back') { + $dropdown.find('.btn-foreground-color').hide(); + $dropdown.css({ + 'min-width': '210px' + }); + } + }, + click: function click(event) { + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + var eventName = $button.data('event'); + var value = $button.data('value'); + var foreinput = document.getElementById('html5fcp').value; + var backinput = document.getElementById('html5bcp').value; + + if (value === 'cp') { + event.stopPropagation(); + } else if (value === 'cpbackColor') { + value = backinput; + } else if (value === 'cpforeColor') { + value = foreinput; + } + + if (eventName && value) { + var key = eventName === 'backColor' ? 'background-color' : 'color'; + var $color = $button.closest('.note-color').find('.note-recent-color'); + var $currentButton = $button.closest('.note-color').find('.note-current-color-button'); + $color.css(key, value); + $currentButton.attr('data-' + eventName, value); + + if (type === 'fore') { + opt.itemClick('foreColor', value); + } else if (type === 'back') { + opt.itemClick('backColor', value); + } else { + opt.itemClick(eventName, value); + } + } + } + })] + }).render(); +}; + +var dialog = renderer["a" /* default */].create('<div class="note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>', function ($node, options) { + if (options.fade) { + $node.addClass('fade'); + } + + $node.attr({ + 'aria-label': options.title + }); + $node.html(['<div class="note-modal-content">', options.title ? '<div class="note-modal-header"><button type="button" class="close" aria-label="Close" aria-hidden="true"><i class="note-icon-close"></i></button><h4 class="note-modal-title">' + options.title + '</h4></div>' : '', '<div class="note-modal-body">' + options.body + '</div>', options.footer ? '<div class="note-modal-footer">' + options.footer + '</div>' : '', '</div>'].join('')); + $node.data('modal', new ui_ModalUI($node, options)); +}); + +var videoDialog = function videoDialog(opt) { + var body = '<div class="note-form-group">' + '<label for="note-dialog-video-url-' + opt.id + '" class="note-form-label">' + opt.lang.video.url + ' <small class="text-muted">' + opt.lang.video.providers + '</small></label>' + '<input id="note-dialog-video-url-' + opt.id + '" class="note-video-url note-input" type="text"/>' + '</div>'; + var footer = ['<button type="button" href="#" class="note-btn note-btn-primary note-video-btn disabled" disabled>', opt.lang.video.insert, '</button>'].join(''); + return dialog({ + title: opt.lang.video.insert, + fade: opt.fade, + body: body, + footer: footer + }).render(); +}; + +var imageDialog = function imageDialog(opt) { + var body = '<div class="note-form-group note-group-select-from-files">' + '<label for="note-dialog-image-file-' + opt.id + '" class="note-form-label">' + opt.lang.image.selectFromFiles + '</label>' + '<input id="note-dialog-image-file-' + opt.id + '" class="note-note-image-input note-input" type="file" name="files" accept="image/*" multiple="multiple"/>' + opt.imageLimitation + '</div>' + '<div class="note-form-group">' + '<label for="note-dialog-image-url-' + opt.id + '" class="note-form-label">' + opt.lang.image.url + '</label>' + '<input id="note-dialog-image-url-' + opt.id + '" class="note-image-url note-input" type="text"/>' + '</div>'; + var footer = ['<button href="#" type="button" class="note-btn note-btn-primary note-btn-large note-image-btn disabled" disabled>', opt.lang.image.insert, '</button>'].join(''); + return dialog({ + title: opt.lang.image.insert, + fade: opt.fade, + body: body, + footer: footer + }).render(); +}; + +var linkDialog = function linkDialog(opt) { + var body = '<div class="note-form-group">' + '<label for="note-dialog-link-txt-' + opt.id + '" class="note-form-label">' + opt.lang.link.textToDisplay + '</label>' + '<input id="note-dialog-link-txt-' + opt.id + '" class="note-link-text note-input" type="text"/>' + '</div>' + '<div class="note-form-group">' + '<label for="note-dialog-link-url-' + opt.id + '" class="note-form-label">' + opt.lang.link.url + '</label>' + '<input id="note-dialog-link-url-' + opt.id + '" class="note-link-url note-input" type="text" value="http://"/>' + '</div>' + (!opt.disableLinkTarget ? '<div class="checkbox"><label for="note-dialog-link-nw-' + opt.id + '"><input id="note-dialog-link-nw-' + opt.id + '" type="checkbox" checked> ' + opt.lang.link.openInNewWindow + '</label></div>' : '') + '<div class="checkbox"><label for="note-dialog-link-up-' + opt.id + '"><input id="note-dialog-link-up-' + opt.id + '" type="checkbox" checked> ' + opt.lang.link.useProtocol + '</label></div>'; + var footer = ['<button href="#" type="button" class="note-btn note-btn-primary note-link-btn disabled" disabled>', opt.lang.link.insert, '</button>'].join(''); + return dialog({ + className: 'link-dialog', + title: opt.lang.link.insert, + fade: opt.fade, + body: body, + footer: footer + }).render(); +}; + +var popover = renderer["a" /* default */].create(['<div class="note-popover bottom">', '<div class="note-popover-arrow"></div>', '<div class="popover-content note-children-container"></div>', '</div>'].join(''), function ($node, options) { + var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom'; + $node.addClass(direction).hide(); + + if (options.hideArrow) { + $node.find('.note-popover-arrow').hide(); + } +}); +var ui_checkbox = renderer["a" /* default */].create('<div class="checkbox"></div>', function ($node, options) { + $node.html(['<label' + (options.id ? ' for="note-' + options.id + '"' : '') + '>', '<input role="checkbox" type="checkbox"' + (options.id ? ' id="note-' + options.id + '"' : ''), options.checked ? ' checked' : '', ' aria-checked="' + (options.checked ? 'true' : 'false') + '"/>', options.text ? options.text : '', '</label>'].join('')); +}); + +var icon = function icon(iconClassName, tagName) { + tagName = tagName || 'i'; + return '<' + tagName + ' class="' + iconClassName + '"/>'; +}; + +var ui = function ui(editorOptions) { + return { + editor: editor, + toolbar: toolbar, + editingArea: editingArea, + codable: codable, + editable: editable, + statusbar: statusbar, + airEditor: airEditor, + airEditable: airEditable, + buttonGroup: buttonGroup, + button: ui_button, + dropdown: dropdown, + dropdownCheck: dropdownCheck, + dropdownButton: dropdownButton, + dropdownButtonContents: dropdownButtonContents, + dropdownCheckButton: dropdownCheckButton, + paragraphDropdownButton: paragraphDropdownButton, + tableDropdownButton: tableDropdownButton, + colorDropdownButton: ui_colorDropdownButton, + palette: palette, + dialog: dialog, + videoDialog: videoDialog, + imageDialog: imageDialog, + linkDialog: linkDialog, + popover: popover, + checkbox: ui_checkbox, + icon: icon, + options: editorOptions, + toggleBtn: function toggleBtn($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }, + toggleBtnActive: function toggleBtnActive($btn, isActive) { + $btn.toggleClass('active', isActive); + }, + check: function check($dom, value) { + $dom.find('.checked').removeClass('checked'); + $dom.find('[data-value="' + value + '"]').addClass('checked'); + }, + onDialogShown: function onDialogShown($dialog, handler) { + $dialog.one('note.modal.show', handler); + }, + onDialogHidden: function onDialogHidden($dialog, handler) { + $dialog.one('note.modal.hide', handler); + }, + showDialog: function showDialog($dialog) { + $dialog.data('modal').show(); + }, + hideDialog: function hideDialog($dialog) { + $dialog.data('modal').hide(); + }, + + /** + * get popover content area + * + * @param $popover + * @returns {*} + */ + getPopoverContent: function getPopoverContent($popover) { + return $popover.find('.note-popover-content'); + }, + + /** + * get dialog's body area + * + * @param $dialog + * @returns {*} + */ + getDialogBody: function getDialogBody($dialog) { + return $dialog.find('.note-modal-body'); + }, + createLayout: function createLayout($note) { + var $editor = (editorOptions.airMode ? airEditor([editingArea([codable(), airEditable()])]) : editorOptions.toolbarPosition === 'bottom' ? editor([editingArea([codable(), editable()]), toolbar(), statusbar()]) : editor([toolbar(), editingArea([codable(), editable()]), statusbar()])).render(); + $editor.insertAfter($note); + return { + note: $note, + editor: $editor, + toolbar: $editor.find('.note-toolbar'), + editingArea: $editor.find('.note-editing-area'), + editable: $editor.find('.note-editable'), + codable: $editor.find('.note-codable'), + statusbar: $editor.find('.note-statusbar') + }; + }, + removeLayout: function removeLayout($note, layoutInfo) { + $note.html(layoutInfo.editable.html()); + layoutInfo.editor.remove(); + $note.off('summernote'); // remove summernote custom event + + $note.show(); + } + }; +}; + +/* harmony default export */ var lite_ui = (ui); +// EXTERNAL MODULE: ./src/js/base/settings.js + 37 modules +var settings = __webpack_require__(3); + +// EXTERNAL MODULE: ./src/styles/summernote-lite.scss +var summernote_lite = __webpack_require__(6); + +// CONCATENATED MODULE: ./src/js/lite/settings.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + ui_template: lite_ui, + "interface": 'lite' +}); + +/***/ }), + +/***/ 6: +/***/ (function(module, exports, __webpack_require__) { + +// extracted by mini-css-extract-plugin + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=summernote-lite.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-lite.js.map b/admin/vendors/summernote/dist/summernote-lite.js.map new file mode 100644 index 0000000000000000000000000000000000000000..8cd0c0666594ea7d3ba61f8ea9bb450a5418f23e --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/js/lite/ui/TooltipUI.js","webpack:///./src/js/lite/ui/DropdownUI.js","webpack:///./src/js/lite/ui/ModalUI.js","webpack:///./src/js/lite/ui.js","webpack:///./src/js/lite/settings.js","webpack:///./src/styles/summernote-lite.scss"],"names":["Renderer","markup","children","options","callback","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","create","arguments","Array","isArray","summernote","lang","extend","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","define","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","isFontInstalled","testFontName","testText","testSize","canvas","document","createElement","context","getContext","originalWidth","measureText","width","userAgent","navigator","isMSIE","test","browserVersion","matches","exec","parseFloat","isEdge","isSupportTouch","window","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isW3CRangeSupport","createRange","eq","itemA","itemB","eq2","peq2","propName","ok","fail","not","f","apply","and","fA","fB","item","self","a","invoke","obj","method","idCounter","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","key","Object","prototype","hasOwnProperty","call","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","expression","head","array","last","initial","slice","tail","pred","idx","len","all","contains","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aTail","aLast","compact","aResult","push","unique","results","next","prev","NBSP_CHAR","String","fromCharCode","ZERO_WIDTH_NBSP_CHAR","isEditable","node","hasClass","isControlSizing","makePredByNodeName","nodeName","isText","nodeType","isElement","isVoid","isPara","isHeading","isPre","isLi","isPurePara","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isParaInline","ancestor","isBodyInline","isBody","isClosestSibling","nodeA","nodeB","nextSibling","previousSibling","withClosestSiblings","siblings","blankHTML","env","nodeLength","nodeValue","childNodes","deepestChildIsEmpty","firstElementChild","innerHTML","paddingBlankHTML","parentNode","singleChildAncestor","listAncestor","ancestors","el","lastAncestor","filter","commonAncestor","n","listPrev","nodes","listNext","listDescendant","descendants","fnWalk","current","wrap","wrapperName","parent","wrapper","insertBefore","appendChild","insertAfter","preceding","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","isLeftEdgePointOf","isRightEdgePointOf","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","undefined","isSamePoint","pointA","pointB","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","isSkipOffset","makeOffsetPath","reverse","fromOffsetPath","offsets","i","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","root","splitPoint","topAncestor","splitRoot","container","pivot","createText","text","createTextNode","isRemoveChild","removeNode","removeChild","removeWhile","replace","newNode","cssText","isTextarea","value","stripLinebreaks","val","isNewlineOnBlock","regexTag","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","blank","emptyPara","isBlock","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","isEmptyAnchor","Context","$note","memos","modules","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","module","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","textRangeToPoint","textRange","isStart","parentElement","tester","body","createTextRange","prevContainer","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","dummy","cont","pointToTextRange","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","info","moveStart","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","s","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","readFileAsDataURL","file","Deferred","deferred","FileReader","onload","dataURL","resolve","onerror","err","reject","readAsDataURL","promise","createImage","$img","one","detach","css","display","appendTo","History","stack","stackOffset","$editable","range","emptyBookmark","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","properties","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","orderedTypes","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setStartPoint","tagName","colPos","cellIndex","rowPos","rowIndex","setVirtualTablePosition","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","createVirtualTable","rows","cells","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","init","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","vTable","actions","idCell","currentCell","tdAttributes","baseCellTr","isTopFromRowSpan","newTd","removeAttr","setAttribute","before","lastTrIndex","after","rowsGroup","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","hasColspan","colCount","rowCount","tds","tdHTML","idxCol","trs","trHTML","idxRow","$table","tableClassName","KEY_BOGUS","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","startRange","endRange","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","then","$image","min","show","files","filename","maximumImageFileSize","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","bind","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","EDITABLE_PADDING","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","defaultScheme","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","o","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","$catcher","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","PX_PER_EM","$dimensionDisplay","$highlighted","$unhighlighted","posOffset","offsetX","posCatcher","pageX","pageY","offsetY","c","ceil","r","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","editorOffsetBottom","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","buttonClass","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","ytRegExp","ytRegExpForStart","ytMatch","igRegExp","igMatch","vRegExp","vMatch","vimRegExp","vimMatch","dmRegExp","dmMatch","youkuRegExp","youkuMatch","qqRegExp","qqMatch","qqRegExp2","qqMatch2","mp4RegExp","mp4Match","oggRegExp","oggMatch","webmRegExp","webmMatch","fbRegExp","fbMatch","$video","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AIRMODE_POPOVER_X_OFFSET","AIRMODE_POPOVER_Y_OFFSET","AirPopover","hidable","onContextmenu","air","forcelyOpen","POPOVER_DIST","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","mode","htmlMode","lineNumbers","pc","mac","TooltipUI","placement","$tooltip","showCallback","hideCallback","toggleCallback","targetOffset","nodeWidth","nodeHeight","tooltipWidth","tooltipHeight","DropdownUI","setEvent","stopImmediatePropagation","windowWidth","targetMarginRight","isOpened","ModalUI","$modal","$backdrop","which","renderer","airEditor","airEditable","$temp","$a","itemClick","caret","dropdownButton","opt","dropdownCheckButton","paragraphDropdownButton","tableDropdownButton","mousemove","rowSize","colSize","colorName","colorDropdownButton","currentClick","foreinput","getElementById","backinput","videoDialog","imageDialog","linkDialog","iconClassName","editorOptions","isEnable","isActive","check","$dom","getPopoverContent","getDialogBody"],"mappings":"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","file":"summernote-lite.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 51);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","import $ from 'jquery';\n\nclass TooltipUI {\n constructor($node, options) {\n this.$node = $node;\n this.options = $.extend({}, {\n title: '',\n target: options.container,\n trigger: 'hover focus',\n placement: 'bottom',\n }, options);\n\n // create tooltip node\n this.$tooltip = $([\n '<div class=\"note-tooltip\">',\n '<div class=\"note-tooltip-arrow\"></div>',\n '<div class=\"note-tooltip-content\"></div>',\n '</div>',\n ].join(''));\n\n // define event\n if (this.options.trigger !== 'manual') {\n const showCallback = this.show.bind(this);\n const hideCallback = this.hide.bind(this);\n const toggleCallback = this.toggle.bind(this);\n\n this.options.trigger.split(' ').forEach(function(eventName) {\n if (eventName === 'hover') {\n $node.off('mouseenter mouseleave');\n $node.on('mouseenter', showCallback).on('mouseleave', hideCallback);\n } else if (eventName === 'click') {\n $node.on('click', toggleCallback);\n } else if (eventName === 'focus') {\n $node.on('focus', showCallback).on('blur', hideCallback);\n }\n });\n }\n }\n\n show() {\n const $node = this.$node;\n const offset = $node.offset();\n const targetOffset = $(this.options.target).offset();\n offset.top -= targetOffset.top;\n offset.left -= targetOffset.left;\n\n const $tooltip = this.$tooltip;\n const title = this.options.title || $node.attr('title') || $node.data('title');\n const placement = this.options.placement || $node.data('placement');\n\n $tooltip.addClass(placement);\n $tooltip.find('.note-tooltip-content').text(title);\n $tooltip.appendTo(this.options.target);\n\n const nodeWidth = $node.outerWidth();\n const nodeHeight = $node.outerHeight();\n const tooltipWidth = $tooltip.outerWidth();\n const tooltipHeight = $tooltip.outerHeight();\n\n if (placement === 'bottom') {\n $tooltip.css({\n top: offset.top + nodeHeight,\n left: offset.left + (nodeWidth / 2 - tooltipWidth / 2),\n });\n } else if (placement === 'top') {\n $tooltip.css({\n top: offset.top - tooltipHeight,\n left: offset.left + (nodeWidth / 2 - tooltipWidth / 2),\n });\n } else if (placement === 'left') {\n $tooltip.css({\n top: offset.top + (nodeHeight / 2 - tooltipHeight / 2),\n left: offset.left - tooltipWidth,\n });\n } else if (placement === 'right') {\n $tooltip.css({\n top: offset.top + (nodeHeight / 2 - tooltipHeight / 2),\n left: offset.left + nodeWidth,\n });\n }\n\n $tooltip.addClass('in');\n }\n\n hide() {\n this.$tooltip.removeClass('in');\n setTimeout(() => {\n this.$tooltip.remove();\n }, 200);\n }\n\n toggle() {\n if (this.$tooltip.hasClass('in')) {\n this.hide();\n } else {\n this.show();\n }\n }\n}\n\nexport default TooltipUI;\n","import $ from 'jquery';\n\nclass DropdownUI {\n constructor($node, options) {\n this.$button = $node;\n this.options = $.extend({}, {\n target: options.container,\n }, options);\n this.setEvent();\n }\n\n setEvent() {\n this.$button.on('click', (e) => {\n this.toggle();\n e.stopImmediatePropagation();\n });\n }\n\n clear() {\n var $parent = $('.note-btn-group.open');\n $parent.find('.note-btn.active').removeClass('active');\n $parent.removeClass('open');\n }\n\n show() {\n this.$button.addClass('active');\n this.$button.parent().addClass('open');\n\n var $dropdown = this.$button.next();\n var offset = $dropdown.offset();\n var width = $dropdown.outerWidth();\n var windowWidth = $(window).width();\n var targetMarginRight = parseFloat($(this.options.target).css('margin-right'));\n\n if (offset.left + width > windowWidth - targetMarginRight) {\n $dropdown.css('margin-left', windowWidth - targetMarginRight - (offset.left + width));\n } else {\n $dropdown.css('margin-left', '');\n }\n }\n\n hide() {\n this.$button.removeClass('active');\n this.$button.parent().removeClass('open');\n }\n\n toggle() {\n var isOpened = this.$button.parent().hasClass('open');\n\n this.clear();\n\n if (isOpened) {\n this.hide();\n } else {\n this.show();\n }\n }\n}\n\n$(document).on('click', function(e) {\n if (!$(e.target).closest('.note-btn-group').length) {\n $('.note-btn-group.open').removeClass('open');\n $('.note-btn-group .note-btn.active').removeClass('active');\n }\n});\n\n$(document).on('click.note-dropdown-menu', function(e) {\n $(e.target).closest('.note-dropdown-menu').parent().removeClass('open');\n $(e.target).closest('.note-dropdown-menu').parent().find('.note-btn.active').removeClass('active');\n});\n\nexport default DropdownUI;\n","import $ from 'jquery';\n\nclass ModalUI {\n constructor($node /*, options */) {\n this.$modal = $node;\n this.$backdrop = $('<div class=\"note-modal-backdrop\"/>');\n }\n\n show() {\n this.$backdrop.appendTo(document.body).show();\n this.$modal.addClass('open').show();\n this.$modal.trigger('note.modal.show');\n this.$modal.off('click', '.close').on('click', '.close', this.hide.bind(this));\n this.$modal.on('keydown', (event) => {\n if (event.which === 27) {\n event.preventDefault();\n this.hide();\n }\n });\n }\n\n hide() {\n this.$modal.removeClass('open').hide();\n this.$backdrop.hide();\n this.$modal.trigger('note.modal.hide');\n this.$modal.off('keydown');\n }\n}\n\nexport default ModalUI;\n","import $ from 'jquery';\nimport renderer from '../base/renderer';\nimport TooltipUI from './ui/TooltipUI';\nimport DropdownUI from './ui/DropdownUI';\nimport ModalUI from './ui/ModalUI';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame\"/>');\nconst toolbar = renderer.create('<div class=\"note-toolbar\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group\">');\nconst button = renderer.create('<button type=\"button\" class=\"note-btn\" tabindex=\"-1\">', function($node, options) {\n // set button type\n if (options && options.tooltip) {\n $node.attr({\n 'aria-label': options.tooltip,\n });\n $node.data('_lite_tooltip', new TooltipUI($node, {\n title: options.tooltip,\n container: options.container,\n })).on('click', (e) => {\n $(e.currentTarget).data('_lite_tooltip').hide();\n });\n }\n if (options.contents) {\n $node.html(options.contents);\n }\n\n if (options && options.data && options.data.toggle === 'dropdown') {\n $node.data('_lite_dropdown', new DropdownUI($node, {\n container: options.container,\n }));\n }\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdown = renderer.create('<div class=\"note-dropdown-menu\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const $temp = $('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + value + '\"></a>');\n\n $temp.html(content).data('item', item);\n\n return $temp;\n }) : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n $node.on('click', '> .note-dropdown-item', function(e) {\n const $a = $(this);\n\n const item = $a.data('item');\n const value = $a.data('value');\n\n if (item.click) {\n item.click($a);\n } else if (options.itemClick) {\n options.itemClick(e, item, value);\n }\n });\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownCheck = renderer.create('<div class=\"note-dropdown-menu note-check\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n\n const $temp = $('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + item + '\"></a>');\n $temp.html([icon(options.checkClassName), ' ', content]).data('item', item);\n return $temp;\n }) : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n $node.on('click', '> .note-dropdown-item', function(e) {\n const $a = $(this);\n\n const item = $a.data('item');\n const value = $a.data('value');\n\n if (item.click) {\n item.click($a);\n } else if (options.itemClick) {\n options.itemClick(e, item, value);\n }\n });\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents, options) {\n return contents + ' ' + icon(options.icons.caret, 'span');\n};\n\nconst dropdownButton = function(opt, callback) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n className: opt.className,\n items: opt.items,\n template: opt.template,\n itemClick: opt.itemClick,\n }),\n ], { callback: callback }).render();\n};\n\nconst dropdownCheckButton = function(opt, callback) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdownCheck({\n className: opt.className,\n checkClassName: opt.checkClassName,\n items: opt.items,\n template: opt.template,\n itemClick: opt.itemClick,\n }),\n ], { callback: callback }).render();\n};\n\nconst paragraphDropdownButton = function(opt) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown([\n buttonGroup({\n className: 'note-align',\n children: opt.items[0],\n }),\n buttonGroup({\n className: 'note-list',\n children: opt.items[1],\n }),\n ]),\n ]).render();\n};\n\nconst tableMoveHandler = function(event, col, row) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n};\n\nconst tableDropdownButton = function(opt) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: function($node) {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: opt.col + 'em',\n height: opt.row + 'em',\n })\n .mousedown(opt.itemClick)\n .mousemove(function(e) {\n tableMoveHandler(e, opt.col, opt.row);\n });\n },\n }).render();\n};\n\nconst palette = renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-btn note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'data-title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n $node.find('.note-color-btn').each(function() {\n $(this).data('_lite_tooltip', new TooltipUI($(this), {\n container: options.container,\n }));\n });\n});\n\nconst colorDropdownButton = function(opt, type) {\n return buttonGroup({\n className: 'note-color',\n children: [\n button({\n className: 'note-current-color-button',\n contents: opt.title,\n tooltip: opt.lang.color.recent,\n click: opt.currentClick,\n callback: function($button) {\n const $recentColor = $button.find('.note-recent-color');\n\n if (type !== 'foreColor') {\n $recentColor.css('background-color', '#FFFF00');\n $button.attr('data-backColor', '#FFFF00');\n }\n },\n }),\n button({\n className: 'dropdown-toggle',\n contents: icon('note-icon-caret'),\n tooltip: opt.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n items: [\n '<div>',\n '<div class=\"note-btn-group btn-background-color\">',\n '<div class=\"note-palette-title\">' + opt.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"backColor\" data-value=\"transparent\">',\n opt.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"></div>',\n '<div class=\"btn-sm\">',\n '<input type=\"color\" id=\"html5bcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">',\n '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"backColor\" data-value=\"cpbackColor\">',\n opt.lang.color.cpSelect,\n '</button>',\n '</div>',\n '</div>',\n '<div class=\"note-btn-group btn-foreground-color\">',\n '<div class=\"note-palette-title\">' + opt.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n opt.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"></div>',\n '<div class=\"btn-sm\">',\n '<input type=\"color\" id=\"html5fcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">',\n '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"foreColor\" data-value=\"cpforeColor\">',\n opt.lang.color.cpSelect,\n '</button>',\n '</div>',\n '</div>',\n '</div>',\n ].join(''),\n callback: function($dropdown) {\n $dropdown.find('.note-holder').each(function() {\n const $holder = $(this);\n $holder.append(palette({\n colors: opt.colors,\n eventName: $holder.data('event'),\n }).render());\n });\n\n if (type === 'fore') {\n $dropdown.find('.btn-background-color').hide();\n $dropdown.css({ 'min-width': '210px' });\n } else if (type === 'back') {\n $dropdown.find('.btn-foreground-color').hide();\n $dropdown.css({ 'min-width': '210px' });\n }\n },\n click: function(event) {\n const $button = $(event.target);\n const eventName = $button.data('event');\n let value = $button.data('value');\n const foreinput = document.getElementById('html5fcp').value;\n const backinput = document.getElementById('html5bcp').value;\n if (value === 'cp') {\n event.stopPropagation();\n } else if (value === 'cpbackColor') {\n value = backinput;\n } else if (value === 'cpforeColor') {\n value = foreinput;\n }\n\n if (eventName && value) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n\n if (type === 'fore') {\n opt.itemClick('foreColor', value);\n } else if (type === 'back') {\n opt.itemClick('backColor', value);\n } else {\n opt.itemClick(eventName, value);\n }\n }\n },\n }),\n ],\n }).render();\n};\n\nconst dialog = renderer.create('<div class=\"note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"note-modal-content\">',\n (options.title ? '<div class=\"note-modal-header\"><button type=\"button\" class=\"close\" aria-label=\"Close\" aria-hidden=\"true\"><i class=\"note-icon-close\"></i></button><h4 class=\"note-modal-title\">' + options.title + '</h4></div>' : ''),\n '<div class=\"note-modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"note-modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n ].join(''));\n\n $node.data('modal', new ModalUI($node, options));\n});\n\nconst videoDialog = function(opt) {\n const body = '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-video-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.video.url + ' <small class=\"text-muted\">' + opt.lang.video.providers + '</small></label>' +\n '<input id=\"note-dialog-video-url-' + opt.id + '\" class=\"note-video-url note-input\" type=\"text\"/>' +\n '</div>';\n const footer = [\n '<button type=\"button\" href=\"#\" class=\"note-btn note-btn-primary note-video-btn disabled\" disabled>',\n opt.lang.video.insert,\n '</button>',\n ].join('');\n\n return dialog({\n title: opt.lang.video.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst imageDialog = function(opt) {\n const body = '<div class=\"note-form-group note-group-select-from-files\">' +\n '<label for=\"note-dialog-image-file-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.image.selectFromFiles + '</label>' +\n '<input id=\"note-dialog-image-file-' + opt.id + '\" class=\"note-note-image-input note-input\" type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>' +\n opt.imageLimitation +\n '</div>' +\n '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-image-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.image.url + '</label>' +\n '<input id=\"note-dialog-image-url-' + opt.id + '\" class=\"note-image-url note-input\" type=\"text\"/>' +\n '</div>';\n const footer = [\n '<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-btn-large note-image-btn disabled\" disabled>',\n opt.lang.image.insert,\n '</button>',\n ].join('');\n\n return dialog({\n title: opt.lang.image.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst linkDialog = function(opt) {\n const body = '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-link-txt-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.link.textToDisplay + '</label>' +\n '<input id=\"note-dialog-link-txt-' + opt.id + '\" class=\"note-link-text note-input\" type=\"text\"/>' +\n '</div>' +\n '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-link-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.link.url + '</label>' +\n '<input id=\"note-dialog-link-url-' + opt.id + '\" class=\"note-link-url note-input\" type=\"text\" value=\"http://\"/>' +\n '</div>' +\n (!opt.disableLinkTarget ? '<div class=\"checkbox\"><label for=\"note-dialog-link-nw-' + opt.id + '\"><input id=\"note-dialog-link-nw-' + opt.id + '\" type=\"checkbox\" checked> ' + opt.lang.link.openInNewWindow + '</label></div>' : '') +\n '<div class=\"checkbox\"><label for=\"note-dialog-link-up-' + opt.id + '\"><input id=\"note-dialog-link-up-' + opt.id + '\" type=\"checkbox\" checked> ' + opt.lang.link.useProtocol + '</label></div>';\n const footer = [\n '<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-link-btn disabled\" disabled>',\n opt.lang.link.insert,\n '</button>',\n ].join('');\n\n return dialog({\n className: 'link-dialog',\n title: opt.lang.link.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst popover = renderer.create([\n '<div class=\"note-popover bottom\">',\n '<div class=\"note-popover-arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction).hide();\n\n if (options.hideArrow) {\n $node.find('.note-popover-arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"checkbox\"></div>', function($node, options) {\n $node.html([\n '<label' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input role=\"checkbox\" type=\"checkbox\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n (options.text ? options.text : ''),\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"/>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n button: button,\n dropdown: dropdown,\n dropdownCheck: dropdownCheck,\n dropdownButton: dropdownButton,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheckButton: dropdownCheckButton,\n paragraphDropdownButton: paragraphDropdownButton,\n tableDropdownButton: tableDropdownButton,\n colorDropdownButton: colorDropdownButton,\n palette: palette,\n dialog: dialog,\n videoDialog: videoDialog,\n imageDialog: imageDialog,\n linkDialog: linkDialog,\n popover: popover,\n checkbox: checkbox,\n icon: icon,\n options: editorOptions,\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n check: function($dom, value) {\n $dom.find('.checked').removeClass('checked');\n $dom.find('[data-value=\"' + value + '\"]').addClass('checked');\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('note.modal.show', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('note.modal.hide', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.data('modal').show();\n },\n\n hideDialog: function($dialog) {\n $dialog.data('modal').hide();\n },\n\n /**\n * get popover content area\n *\n * @param $popover\n * @returns {*}\n */\n getPopoverContent: function($popover) {\n return $popover.find('.note-popover-content');\n },\n\n /**\n * get dialog's body area\n *\n * @param $dialog\n * @returns {*}\n */\n getDialogBody: function($dialog) {\n return $dialog.find('.note-modal-body');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.off('summernote'); // remove summernote custom event\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-lite.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'lite',\n});\n","// extracted by mini-css-extract-plugin"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-lite.min.css b/admin/vendors/summernote/dist/summernote-lite.min.css new file mode 100644 index 0000000000000000000000000000000000000000..089701b7c93681cce81ad92e3fb28625e4e3f5fc --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.min.css @@ -0,0 +1 @@ +@font-face{font-family:summernote;font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class*=" note-icon"]:before,[class^=note-icon]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:""}.note-icon-align-center:before{content:""}.note-icon-align-indent:before{content:""}.note-icon-align-justify:before{content:""}.note-icon-align-left:before{content:""}.note-icon-align-outdent:before{content:""}.note-icon-align-right:before{content:""}.note-icon-arrow-circle-down:before{content:""}.note-icon-arrow-circle-left:before{content:""}.note-icon-arrow-circle-right:before{content:""}.note-icon-arrow-circle-up:before{content:""}.note-icon-arrows-alt:before{content:""}.note-icon-arrows-h:before{content:""}.note-icon-arrows-v:before{content:""}.note-icon-bold:before{content:""}.note-icon-caret:before{content:""}.note-icon-chain-broken:before{content:""}.note-icon-circle:before{content:""}.note-icon-close:before{content:""}.note-icon-code:before{content:""}.note-icon-col-after:before{content:""}.note-icon-col-before:before{content:""}.note-icon-col-remove:before{content:""}.note-icon-eraser:before{content:""}.note-icon-float-left:before{content:""}.note-icon-float-none:before{content:""}.note-icon-float-right:before{content:""}.note-icon-font:before{content:""}.note-icon-frame:before{content:""}.note-icon-italic:before{content:""}.note-icon-link:before{content:""}.note-icon-magic:before{content:""}.note-icon-menu-check:before{content:""}.note-icon-minus:before{content:""}.note-icon-orderedlist:before{content:""}.note-icon-pencil:before{content:""}.note-icon-picture:before{content:""}.note-icon-question:before{content:""}.note-icon-redo:before{content:""}.note-icon-rollback:before{content:""}.note-icon-row-above:before{content:""}.note-icon-row-below:before{content:""}.note-icon-row-remove:before{content:""}.note-icon-special-character:before{content:""}.note-icon-square:before{content:""}.note-icon-strikethrough:before{content:""}.note-icon-subscript:before{content:""}.note-icon-summernote:before{content:""}.note-icon-superscript:before{content:""}.note-icon-table:before{content:""}.note-icon-text-height:before{content:""}.note-icon-trash:before{content:""}.note-icon-underline:before{content:""}.note-icon-undo:before{content:""}.note-icon-unorderedlist:before{content:""}.note-icon-video:before{content:""}.note-frame{-ms-box-sizing:border-box;box-sizing:border-box;color:#000;font-family:sans-serif;border-radius:4px}.note-toolbar{padding:10px 5px;color:#333;background-color:#f5f5f5;border-bottom:1px solid;border-color:#ddd;border-top-left-radius:3px;border-top-right-radius:3px}.note-btn-group{position:relative;display:inline-block;margin-right:8px}.note-btn-group>.note-btn-group{margin-right:0}.note-btn-group>.note-btn:first-child{margin-left:0}.note-btn-group .note-btn+.note-btn,.note-btn-group .note-btn+.note-btn-group,.note-btn-group .note-btn-group+.note-btn,.note-btn-group .note-btn-group+.note-btn-group{margin-left:-1px}.note-btn-group>.note-btn-group:not(:first-child)>.note-btn,.note-btn-group>.note-btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.note-btn-group>.note-btn-group:not(:last-child)>.note-btn,.note-btn-group>.note-btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.note-btn-group.open>.note-dropdown{display:block}.note-btn{display:inline-block;font-weight:400;margin-bottom:0;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;outline:0;color:#333;background-color:#fff;border:1px solid #dae0e5;padding:5px 10px;font-size:14px;line-height:1.4;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.note-btn.focus,.note-btn:focus,.note-btn:hover{color:#333;background-color:#ebebeb;border-color:#dae0e5}.note-btn.disabled.focus,.note-btn.disabled:focus,.note-btn[disabled].focus,.note-btn[disabled]:focus,fieldset[disabled] .note-btn.focus,fieldset[disabled] .note-btn:focus{background-color:#fff;border-color:#dae0e5}.note-btn.active,.note-btn.focus,.note-btn:active,.note-btn:focus,.note-btn:hover{color:#333;text-decoration:none;border:1px solid #dae0e5;background-color:#ebebeb;outline:0;border-radius:1px}.note-btn.active,.note-btn:active{background-image:none;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.note-btn.disabled,.note-btn[disabled],fieldset[disabled] .note-btn{cursor:not-allowed;-webkit-opacity:.65;-khtml-opacity:.65;-moz-opacity:.65;opacity:.65;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=65);filter:alpha(opacity=65);box-shadow:none}.note-btn>span.note-icon-caret:first-child{margin-left:-1px}.note-btn>span.note-icon-caret:nth-child(2){padding-left:3px;margin-right:-5px}.note-btn-primary{background:#fa6362;color:#fff}.note-btn-primary.focus,.note-btn-primary:focus,.note-btn-primary:hover{color:#fff;text-decoration:none;border:1px solid #dae0e5;background-color:#fa6362;border-radius:1px}.note-btn-block{display:block;width:100%}.note-btn-block+.note-btn-block{margin-top:5px}input[type=button].note-btn-block,input[type=reset].note-btn-block,input[type=submit].note-btn-block{width:100%}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.close{float:right;font-size:21px;line-height:1;color:#000;opacity:.2}.close:hover{-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);opacity:1}.note-dropdown{position:relative}.note-color .dropdown-toggle{width:30px;padding-left:5px}.note-dropdown-menu{display:none;min-width:100px;position:absolute;top:100%;left:0;z-index:1000;float:left;text-align:left;background:#fff;border:1px solid #e2e2e2;padding:5px;background-clip:padding-box;box-shadow:0 1px 1px rgba(0,0,0,.06)}.note-dropdown-menu>:last-child{margin-right:0}.note-btn-group.open .note-dropdown-menu,.note-dropdown-item{display:block}.note-dropdown-item:hover{background-color:#ebebeb}a.note-dropdown-item,a.note-dropdown-item:hover{margin:5px 0;color:#000;text-decoration:none}.note-modal{position:fixed;left:0;right:0;top:0;bottom:0;z-index:1050;-webkit-opacity:1;-khtml-opacity:1;-moz-opacity:1;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100);filter:alpha(opacity=100);display:none}.note-modal.open{display:block}.note-modal-content{position:relative;width:auto;margin:30px 20px;border:1px solid rgba(0,0,0,.2);background:#fff;background-clip:border-box;outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal-header{padding:10px 20px;border:1px solid #ededef}.note-modal-body{position:relative;padding:20px 30px}.note-modal-body kbd{border-radius:2px;background-color:#000;color:#fff;padding:3px 5px;font-weight:700;-ms-box-sizing:border-box;box-sizing:border-box}.note-modal-footer{height:40px;padding:10px;text-align:center}.note-modal-footer a{color:#337ab7;text-decoration:none}.note-modal-footer a:focus,.note-modal-footer a:hover{color:#23527c;text-decoration:underline}.note-modal-footer .note-btn{float:right}.note-modal-title{font-size:20px;color:#42515f;margin:0;line-height:1.4}.note-modal-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:1040;background:#000;-webkit-opacity:.5;-khtml-opacity:.5;-moz-opacity:.5;opacity:.5;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);display:none}.note-modal-backdrop.open{display:block}@media(min-width:768px){.note-modal-content{width:600px;margin:30px auto}}@media(min-width:992px){.note-modal-content-large{width:900px}}.note-modal .note-help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.note-modal .note-nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.note-modal .note-nav-link{display:block;padding:.5rem 1rem;color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}.note-modal .note-nav-link:focus,.note-modal .note-nav-link:hover{color:#0056b3;text-decoration:none}.note-modal .note-nav-link.disabled{color:#868e96}.note-modal .note-nav-tabs{border-bottom:1px solid #ddd}.note-modal .note-nav-tabs .note-nav-item{margin-bottom:-1px}.note-modal .note-nav-tabs .note-nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.note-modal .note-nav-tabs .note-nav-link:focus,.note-modal .note-nav-tabs .note-nav-link:hover{border-color:#e9ecef #e9ecef #ddd}.note-modal .note-nav-tabs .note-nav-link.disabled{color:#868e96;background-color:transparent;border-color:transparent}.note-modal .note-nav-tabs .note-nav-item.show .note-nav-link{color:#495057;background-color:#fff;border-color:#ddd #ddd #fff}.note-modal .note-tab-content{margin:15px auto}.note-modal .note-tab-content>.note-tab-pane,.note-modal .note-tab-content>.note-tab-pane:target~.note-tab-pane:last-child{display:none}.note-modal .note-tab-content>.note-tab-pane:target,.note-modal .note-tab-content>:last-child{display:block}.note-form-group{padding-bottom:20px}.note-form-group:last-child{padding-bottom:0}.note-form-label{display:block;width:100%;font-size:16px;color:#42515f;margin-bottom:10px;font-weight:700}.note-input{width:100%;display:block;border:1px solid #ededef;background:#fff;outline:0;padding:6px 4px;font-size:14px;-ms-box-sizing:border-box;box-sizing:border-box}.note-input::-webkit-input-placeholder{color:#eee}.note-input:-moz-placeholder,.note-input::-moz-placeholder{color:#eee}.note-input:-ms-input-placeholder{color:#eee}.note-tooltip{position:absolute;z-index:1070;display:block;font-size:13px;transition:opacity .15s;-webkit-opacity:0;-khtml-opacity:0;-moz-opacity:0;opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);filter:alpha(opacity=0)}.note-tooltip.in{-webkit-opacity:.9;-khtml-opacity:.9;-moz-opacity:.9;opacity:.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=90);filter:alpha(opacity=90)}.note-tooltip.top{margin-top:-3px;padding:5px 0}.note-tooltip.right{margin-left:3px;padding:0 5px}.note-tooltip.bottom{margin-top:3px;padding:5px 0}.note-tooltip.left{margin-left:-3px;padding:0 5px}.note-tooltip.bottom .note-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.note-tooltip.top .note-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.note-tooltip.right .note-tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.note-tooltip.left .note-tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.note-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.note-tooltip-content{max-width:200px;font-family:sans-serif;padding:3px 8px;color:#fff;text-align:center;background-color:#000}.note-popover{position:absolute;z-index:1060;display:block;font-size:13px;font-family:sans-serif;display:none;background:#fff;border:1px solid #ccc}.note-popover.in{display:block}.note-popover.top{margin-top:-10px;padding:5px 0}.note-popover.right{margin-left:10px;padding:0 5px}.note-popover.bottom{margin-top:10px;padding:5px 0}.note-popover.left{margin-left:-10px;padding:0 5px}.note-popover.bottom .note-popover-arrow{top:-11px;left:20px;margin-left:-10px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.note-popover.bottom .note-popover-arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.note-popover.top .note-popover-arrow{bottom:-11px;left:20px;margin-left:-10px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25)}.note-popover.top .note-popover-arrow:after{bottom:1px;margin-left:-10px;content:" ";border-bottom-width:0;border-top-color:#fff}.note-popover.right .note-popover-arrow{top:50%;left:-11px;margin-top:-10px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.note-popover.right .note-popover-arrow:after{left:1px;margin-top:-10px;content:" ";border-left-width:0;border-right-color:#fff}.note-popover.left .note-popover-arrow{top:50%;right:-11px;margin-top:-10px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.note-popover.left .note-popover-arrow:after{right:1px;margin-top:-10px;content:" ";border-right-width:0;border-left-color:#fff}.note-popover-arrow{position:absolute;width:0;height:0;border:11px solid transparent}.note-popover-arrow:after{position:absolute;display:block;width:0;height:0;content:" ";border:10px solid transparent}.note-popover-content{padding:3px 8px;color:#000;text-align:center;background-color:#fff;min-width:100px;min-height:30px}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:hsla(0,0%,50.2%,.11)}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{margin:-7px 0 0;padding:7px 10px 2px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{color:#3c763d!important;background-color:#dff0d8!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{color:#31708f!important;background-color:#d9edf7!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{color:#8a6d3b!important;background-color:#fcf8e3!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{color:#a94442!important;background-color:#f2dede!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:hsla(0,0%,50.2%,.11);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{right:0;left:auto}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{right:9px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{right:10px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}.note-placeholder{position:absolute;display:none;color:grey}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer}.note-editor .note-editing-area .note-editable table{width:100%;border-collapse:collapse}.note-editor .note-editing-area .note-editable table td,.note-editor .note-editing-area .note-editable table th{border:1px solid #ececec;padding:5px 3px}.note-editor .note-editing-area .note-editable a{background-color:inherit;text-decoration:inherit;font-family:inherit;font-weight:inherit;color:#337ab7}.note-editor .note-editing-area .note-editable a:focus,.note-editor .note-editing-area .note-editable a:hover{color:#23527c;text-decoration:underline;outline:0}.note-editor .note-editing-area .note-editable figure{margin:0}.note-modal .note-modal-body label{margin-bottom:2px;padding:2px 5px;display:inline-block}.note-modal .note-modal-body .help-list-item:hover{background-color:#e0e0e0}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.help-list-item label{margin-bottom:5px;display:inline-block} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-lite.min.js b/admin/vendors/summernote/dist/summernote-lite.min.js new file mode 100644 index 0000000000000000000000000000000000000000..119eaf91349b7daeb228574ad374ab49643c9e89 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.min.js @@ -0,0 +1,3 @@ +/*! For license information please see summernote-lite.min.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(window,(function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=51)}({0:function(e,n){e.exports=t},1:function(t,e,n){"use strict";var o=n(0),i=n.n(o);function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var s=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.markup=e,this.children=n,this.options=o,this.callback=i}var e,n,o;return e=t,(n=[{key:"render",value:function(t){var e=i()(this.markup);if(this.options&&this.options.contents&&e.html(this.options.contents),this.options&&this.options.className&&e.addClass(this.options.className),this.options&&this.options.data&&i.a.each(this.options.data,(function(t,n){e.attr("data-"+t,n)})),this.options&&this.options.click&&e.on("click",this.options.click),this.children){var n=e.find(".note-children-container");this.children.forEach((function(t){t.render(n.length?n:e)}))}return this.callback&&this.callback(e,this.options),this.options&&this.options.callback&&this.options.callback(e),t&&t.append(e),e}}])&&a(e.prototype,n),o&&a(e,o),t}();e.a={create:function(t,e){return function(){var n="object"===r(arguments[1])?arguments[1]:arguments[0],o=Array.isArray(arguments[0])?arguments[0]:[];return n&&n.children&&(o=n.children),new s(t,o,n,e)}}}},2:function(t,e){(function(e){t.exports=e}).call(this,{})},3:function(t,e,n){"use strict";var o=n(0),i=n.n(o);i.a.summernote=i.a.summernote||{lang:{}},i.a.extend(i.a.summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window",useProtocol:"Use default protocol"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}});var r="function"==typeof define&&n(2),a=["sans-serif","serif","monospace","cursive","fantasy"];function s(t){return-1===i.a.inArray(t.toLowerCase(),a)?"'".concat(t,"'"):t}var l,c=navigator.userAgent,u=/MSIE|Trident/i.test(c);if(u){var d=/MSIE (\d+[.]\d+)/.exec(c);d&&(l=parseFloat(d[1])),(d=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c))&&(l=parseFloat(d[1]))}var h=/Edge\/\d+/.test(c),f="ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,p=u?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input",m={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:u,isEdge:h,isFF:!h&&/firefox/i.test(c),isPhantom:/PhantomJS/i.test(c),isWebkit:!h&&/webkit/i.test(c),isChrome:!h&&/chrome/i.test(c),isSafari:!h&&/safari/i.test(c)&&!/chrome/i.test(c),browserVersion:l,jqueryVersion:parseFloat(i.a.fn.jquery),isSupportAmd:r,isSupportTouch:f,isFontInstalled:function(t){var e="Comic Sans MS"===t?"Courier New":"Comic Sans MS",n=document.createElement("canvas").getContext("2d");n.font="200px '"+e+"'";var o=n.measureText("mmmmmmmmmmwwwww").width;return n.font="200px "+s(t)+', "'+e+'"',o!==n.measureText("mmmmmmmmmmwwwww").width},isW3CRangeSupport:!!document.createRange,inputEventName:p,genericFontFamilies:a,validFontName:s};var v=0;var g={eq:function(t){return function(e){return t===e}},eq2:function(t,e){return t===e},peq2:function(t){return function(e,n){return e[t]===n[t]}},ok:function(){return!0},fail:function(){return!1},self:function(t){return t},not:function(t){return function(){return!t.apply(t,arguments)}},and:function(t,e){return function(n){return t(n)&&e(n)}},invoke:function(t,e){return function(){return t[e].apply(t,arguments)}},resetUniqueId:function(){v=0},uniqueId:function(t){var e=++v+"";return t?t+e:e},rect2bnd:function(t){var e=i()(document);return{top:t.top+e.scrollTop(),left:t.left+e.scrollLeft(),width:t.right-t.left,height:t.bottom-t.top}},invertObject:function(t){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[t[n]]=n);return e},namespaceToCamel:function(t,e){return(e=e||"")+t.split(".").map((function(t){return t.substring(0,1).toUpperCase()+t.substring(1)})).join("")},debounce:function(t,e,n){var o;return function(){var i=this,r=arguments,a=function(){o=null,n||t.apply(i,r)},s=n&&!o;clearTimeout(o),o=setTimeout(a,e),s&&t.apply(i,r)}},isValidUrl:function(t){return/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t)}};function b(t){return t[0]}function k(t){return t[t.length-1]}function y(t){return t.slice(1)}function w(t,e){if(t&&t.length&&e){if(t.indexOf)return-1!==t.indexOf(e);if(t.contains)return t.contains(e)}return!1}var C={head:b,last:k,initial:function(t){return t.slice(0,t.length-1)},tail:y,prev:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n-1]}return null},next:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n+1]}return null},find:function(t,e){for(var n=0,o=t.length;n<o;n++){var i=t[n];if(e(i))return i}},contains:w,all:function(t,e){for(var n=0,o=t.length;n<o;n++)if(!e(t[n]))return!1;return!0},sum:function(t,e){return e=e||g.self,t.reduce((function(t,n){return t+e(n)}),0)},from:function(t){for(var e=[],n=t.length,o=-1;++o<n;)e[o]=t[o];return e},isEmpty:function(t){return!t||!t.length},clusterBy:function(t,e){return t.length?y(t).reduce((function(t,n){var o=k(t);return e(k(o),n)?o[o.length]=n:t[t.length]=[n],t}),[[b(t)]]):[]},compact:function(t){for(var e=[],n=0,o=t.length;n<o;n++)t[n]&&e.push(t[n]);return e},unique:function(t){for(var e=[],n=0,o=t.length;n<o;n++)w(e,t[n])||e.push(t[n]);return e}},x=String.fromCharCode(160);function S(t){return t&&i()(t).hasClass("note-editable")}function T(t){return t=t.toUpperCase(),function(e){return e&&e.nodeName.toUpperCase()===t}}function E(t){return t&&3===t.nodeType}function $(t){return t&&/^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase())}function N(t){return!S(t)&&(t&&/^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase()))}var I=T("PRE"),P=T("LI");var R=T("TABLE"),L=T("DATA");function A(t){return!(z(t)||F(t)||D(t)||N(t)||R(t)||B(t)||L(t))}function F(t){return t&&/^UL|^OL/.test(t.nodeName.toUpperCase())}var D=T("HR");function H(t){return t&&/^TD|^TH/.test(t.nodeName.toUpperCase())}var B=T("BLOCKQUOTE");function z(t){return H(t)||B(t)||S(t)}var M=T("A");var O=T("BODY");var j=m.isMSIE&&m.browserVersion<11?" ":"<br>";function U(t){return E(t)?t.nodeValue.length:t?t.childNodes.length:0}function W(t){var e=U(t);return 0===e||(!E(t)&&1===e&&t.innerHTML===j||!(!C.all(t.childNodes,E)||""!==t.innerHTML))}function K(t){$(t)||U(t)||(t.innerHTML=j)}function V(t,e){for(;t;){if(e(t))return t;if(S(t))break;t=t.parentNode}return null}function q(t,e){e=e||g.fail;var n=[];return V(t,(function(t){return S(t)||n.push(t),e(t)})),n}function _(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.nextSibling;return n}function G(t,e){var n=e.nextSibling,o=e.parentNode;return n?o.insertBefore(t,n):o.appendChild(t),t}function Y(t,e){return i.a.each(e,(function(e,n){t.appendChild(n)})),t}function Z(t){return 0===t.offset}function X(t){return t.offset===U(t.node)}function Q(t){return Z(t)||X(t)}function J(t,e){for(;t&&t!==e;){if(0!==et(t))return!1;t=t.parentNode}return!0}function tt(t,e){if(!e)return!1;for(;t&&t!==e;){if(et(t)!==U(t.parentNode)-1)return!1;t=t.parentNode}return!0}function et(t){for(var e=0;t=t.previousSibling;)e+=1;return e}function nt(t){return!!(t&&t.childNodes&&t.childNodes.length)}function ot(t,e){var n,o;if(0===t.offset){if(S(t.node))return null;n=t.node.parentNode,o=et(t.node)}else nt(t.node)?o=U(n=t.node.childNodes[t.offset-1]):(n=t.node,o=e?0:t.offset-1);return{node:n,offset:o}}function it(t,e){var n,o;if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1)}else nt(t.node)?(n=t.node.childNodes[t.offset],o=0):(n=t.node,o=e?U(t.node):t.offset+1);return{node:n,offset:o}}function rt(t,e){var n,o;if(W(t.node))return{node:n=t.node.nextSibling,offset:o=0};if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1),S(n)&&(n=t.node.nextSibling,o=0)}else if(nt(t.node)){if(o=0,W(n=t.node.childNodes[t.offset]))return null}else if(n=t.node,o=e?U(t.node):t.offset+1,W(n))return null;return{node:n,offset:o}}function at(t){if(t.nextSibling&&t.parent===t.nextSibling.parent)return E(t.nextSibling)?t.nextSibling:at(t.nextSibling)}function st(t,e){return t.node===e.node&&t.offset===e.offset}function lt(t,e){var n=e&&e.isSkipPaddingBlankHTML,o=e&&e.isNotSplitEdgePoint,i=e&&e.isDiscardEmptySplits;if(i&&(n=!0),Q(t)&&(E(t.node)||o)){if(Z(t))return t.node;if(X(t))return t.node.nextSibling}if(E(t.node))return t.node.splitText(t.offset);var r=t.node.childNodes[t.offset],a=G(t.node.cloneNode(!1),t.node);return Y(a,_(r)),n||(K(t.node),K(a)),i&&(W(t.node)&&dt(t.node),W(a))?(dt(a),t.node.nextSibling):a}function ct(t,e,n){var o=q(e.node,g.eq(t));return o.length?1===o.length?lt(e,n):o.reduce((function(t,o){return t===e.node&&(t=lt(e,n)),lt({node:o,offset:t?et(t):U(o)},n)})):null}function ut(t){return document.createElement(t)}function dt(t,e){if(t&&t.parentNode){if(t.removeNode)return t.removeNode(e);var n=t.parentNode;if(!e){for(var o=[],i=0,r=t.childNodes.length;i<r;i++)o.push(t.childNodes[i]);for(var a=0,s=o.length;a<s;a++)n.insertBefore(o[a],t)}n.removeChild(t)}}var ht=T("TEXTAREA");function ft(t,e){var n=ht(t[0])?t.val():t.html();return e?n.replace(/[\n\r]/g,""):n}var pt={NBSP_CHAR:x,ZERO_WIDTH_NBSP_CHAR:"\ufeff",blank:j,emptyPara:"<p>".concat(j,"</p>"),makePredByNodeName:T,isEditable:S,isControlSizing:function(t){return t&&i()(t).hasClass("note-control-sizing")},isText:E,isElement:function(t){return t&&1===t.nodeType},isVoid:$,isPara:N,isPurePara:function(t){return N(t)&&!P(t)},isHeading:function(t){return t&&/^H[1-7]/.test(t.nodeName.toUpperCase())},isInline:A,isBlock:g.not(A),isBodyInline:function(t){return A(t)&&!V(t,N)},isBody:O,isParaInline:function(t){return A(t)&&!!V(t,N)},isPre:I,isList:F,isTable:R,isData:L,isCell:H,isBlockquote:B,isBodyContainer:z,isAnchor:M,isDiv:T("DIV"),isLi:P,isBR:T("BR"),isSpan:T("SPAN"),isB:T("B"),isU:T("U"),isS:T("S"),isI:T("I"),isImg:T("IMG"),isTextarea:ht,deepestChildIsEmpty:function(t){do{if(null===t.firstElementChild||""===t.firstElementChild.innerHTML)break}while(t=t.firstElementChild);return W(t)},isEmpty:W,isEmptyAnchor:g.and(M,W),isClosestSibling:function(t,e){return t.nextSibling===e||t.previousSibling===e},withClosestSiblings:function(t,e){e=e||g.ok;var n=[];return t.previousSibling&&e(t.previousSibling)&&n.push(t.previousSibling),n.push(t),t.nextSibling&&e(t.nextSibling)&&n.push(t.nextSibling),n},nodeLength:U,isLeftEdgePoint:Z,isRightEdgePoint:X,isEdgePoint:Q,isLeftEdgeOf:J,isRightEdgeOf:tt,isLeftEdgePointOf:function(t,e){return Z(t)&&J(t.node,e)},isRightEdgePointOf:function(t,e){return X(t)&&tt(t.node,e)},prevPoint:ot,nextPoint:it,nextPointWithEmptyNode:rt,isSamePoint:st,isVisiblePoint:function(t){if(E(t.node)||!nt(t.node)||W(t.node))return!0;var e=t.node.childNodes[t.offset-1],n=t.node.childNodes[t.offset];return!(e&&!$(e)||n&&!$(n))},prevPointUntil:function(t,e){for(;t;){if(e(t))return t;t=ot(t)}return null},nextPointUntil:function(t,e){for(;t;){if(e(t))return t;t=it(t)}return null},isCharPoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return e&&" "!==e&&e!==x},isSpacePoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return" "===e||e===x},walkPoint:function(t,e,n,o){for(var i=t;i&&(n(i),!st(i,e));){i=rt(i,o&&t.node!==i.node&&e.node!==i.node)}},ancestor:V,singleChildAncestor:function(t,e){for(t=t.parentNode;t&&1===U(t);){if(e(t))return t;if(S(t))break;t=t.parentNode}return null},listAncestor:q,lastAncestor:function(t,e){var n=q(t);return C.last(n.filter(e))},listNext:_,listPrev:function(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.previousSibling;return n},listDescendant:function(t,e){var n=[];return e=e||g.ok,function o(i){t!==i&&e(i)&&n.push(i);for(var r=0,a=i.childNodes.length;r<a;r++)o(i.childNodes[r])}(t),n},commonAncestor:function(t,e){for(var n=q(t),o=e;o;o=o.parentNode)if(n.indexOf(o)>-1)return o;return null},wrap:function(t,e){var n=t.parentNode,o=i()("<"+e+">")[0];return n.insertBefore(o,t),o.appendChild(t),o},insertAfter:G,appendChildNodes:Y,position:et,hasChildren:nt,makeOffsetPath:function(t,e){return q(e,g.eq(t)).map(et).reverse()},fromOffsetPath:function(t,e){for(var n=t,o=0,i=e.length;o<i;o++)n=n.childNodes.length<=e[o]?n.childNodes[n.childNodes.length-1]:n.childNodes[e[o]];return n},splitTree:ct,splitPoint:function(t,e){var n,o,i=e?N:z,r=q(t.node,i),a=C.last(r)||t.node;i(a)?(n=r[r.length-2],o=a):o=(n=a).parentNode;var s=n&&ct(n,t,{isSkipPaddingBlankHTML:e,isNotSplitEdgePoint:e});return s||o!==t.node||(s=t.node.childNodes[t.offset]),{rightNode:s,container:o}},create:ut,createText:function(t){return document.createTextNode(t)},remove:dt,removeWhile:function(t,e){for(;t&&!S(t)&&e(t);){var n=t.parentNode;dt(t),t=n}},replace:function(t,e){if(t.nodeName.toUpperCase()===e.toUpperCase())return t;var n=ut(e);return t.style.cssText&&(n.style.cssText=t.style.cssText),Y(n,C.from(t.childNodes)),G(n,t),dt(t),n},html:function(t,e){var n=ft(t);if(e){n=(n=n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g,(function(t,e,n){n=n.toUpperCase();var o=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n)&&!!e,i=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);return t+(o||i?"\n":"")}))).trim()}return n},value:ft,posFromPlaceholder:function(t){var e=i()(t),n=e.offset(),o=e.outerHeight(!0);return{left:n.left,top:n.top+o}},attachEvents:function(t,e){Object.keys(e).forEach((function(n){t.on(n,e[n])}))},detachEvents:function(t,e){Object.keys(e).forEach((function(n){t.off(n,e[n])}))},isCustomStyleTag:function(t){return t&&!E(t)&&C.contains(t.classList,"note-styletag")}};function mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var vt=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e,this.memos={},this.modules={},this.layoutInfo={},this.options=i.a.extend(!0,{},n),i.a.summernote.ui=i.a.summernote.ui_template(this.options),this.ui=i.a.summernote.ui,this.initialize()}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){return this.layoutInfo=this.ui.createLayout(this.$note),this._initialize(),this.$note.hide(),this}},{key:"destroy",value:function(){this._destroy(),this.$note.removeData("summernote"),this.ui.removeLayout(this.$note,this.layoutInfo)}},{key:"reset",value:function(){var t=this.isDisabled();this.code(pt.emptyPara),this._destroy(),this._initialize(),t&&this.disable()}},{key:"_initialize",value:function(){var t=this;this.options.id=g.uniqueId(i.a.now()),this.options.container=this.options.container||this.layoutInfo.editor;var e=i.a.extend({},this.options.buttons);Object.keys(e).forEach((function(n){t.memo("button."+n,e[n])}));var n=i.a.extend({},this.options.modules,i.a.summernote.plugins||{});Object.keys(n).forEach((function(e){t.module(e,n[e],!0)})),Object.keys(this.modules).forEach((function(e){t.initializeModule(e)}))}},{key:"_destroy",value:function(){var t=this;Object.keys(this.modules).reverse().forEach((function(e){t.removeModule(e)})),Object.keys(this.memos).forEach((function(e){t.removeMemo(e)})),this.triggerEvent("destroy",this)}},{key:"code",value:function(t){var e=this.invoke("codeview.isActivated");if(void 0===t)return this.invoke("codeview.sync"),e?this.layoutInfo.codable.val():this.layoutInfo.editable.html();e?this.invoke("codeview.sync",t):this.layoutInfo.editable.html(t),this.$note.val(t),this.triggerEvent("change",t,this.layoutInfo.editable)}},{key:"isDisabled",value:function(){return"false"===this.layoutInfo.editable.attr("contenteditable")}},{key:"enable",value:function(){this.layoutInfo.editable.attr("contenteditable",!0),this.invoke("toolbar.activate",!0),this.triggerEvent("disable",!1),this.options.editing=!0}},{key:"disable",value:function(){this.invoke("codeview.isActivated")&&this.invoke("codeview.deactivate"),this.layoutInfo.editable.attr("contenteditable",!1),this.options.editing=!1,this.invoke("toolbar.deactivate",!0),this.triggerEvent("disable",!0)}},{key:"triggerEvent",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=this.options.callbacks[g.namespaceToCamel(t,"on")];n&&n.apply(this.$note[0],e),this.$note.trigger("summernote."+t,e)}},{key:"initializeModule",value:function(t){var e=this.modules[t];e.shouldInitialize=e.shouldInitialize||g.ok,e.shouldInitialize()&&(e.initialize&&e.initialize(),e.events&&pt.attachEvents(this.$note,e.events))}},{key:"module",value:function(t,e,n){if(1===arguments.length)return this.modules[t];this.modules[t]=new e(this),n||this.initializeModule(t)}},{key:"removeModule",value:function(t){var e=this.modules[t];e.shouldInitialize()&&(e.events&&pt.detachEvents(this.$note,e.events),e.destroy&&e.destroy()),delete this.modules[t]}},{key:"memo",value:function(t,e){if(1===arguments.length)return this.memos[t];this.memos[t]=e}},{key:"removeMemo",value:function(t){this.memos[t]&&this.memos[t].destroy&&this.memos[t].destroy(),delete this.memos[t]}},{key:"createInvokeHandlerAndUpdateState",value:function(t,e){var n=this;return function(o){n.createInvokeHandler(t,e)(o),n.invoke("buttons.updateCurrentStyle")}}},{key:"createInvokeHandler",value:function(t,e){var n=this;return function(o){o.preventDefault();var r=i()(o.target);n.invoke(t,e||r.closest("[data-value]").data("value"),r)}}},{key:"invoke",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=t.split("."),o=n.length>1,i=o&&C.head(n),r=o?C.last(n):C.head(n),a=this.modules[i||"editor"];return!i&&this[r]?this[r].apply(this,e):a&&a[r]&&a.shouldInitialize()?a[r].apply(a,e):void 0}}])&&mt(e.prototype,n),o&&mt(e,o),t}();function gt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function bt(t,e){var n,o,i=t.parentElement(),r=document.body.createTextRange(),a=C.from(i.childNodes);for(n=0;n<a.length;n++)if(!pt.isText(a[n])){if(r.moveToElementText(a[n]),r.compareEndPoints("StartToStart",t)>=0)break;o=a[n]}if(0!==n&&pt.isText(a[n-1])){var s=document.body.createTextRange(),l=null;s.moveToElementText(o||i),s.collapse(!o),l=o?o.nextSibling:i.firstChild;var c=t.duplicate();c.setEndPoint("StartToStart",s);for(var u=c.text.replace(/[\r\n]/g,"").length;u>l.nodeValue.length&&l.nextSibling;)u-=l.nodeValue.length,l=l.nextSibling;l.nodeValue;e&&l.nextSibling&&pt.isText(l.nextSibling)&&u===l.nodeValue.length&&(u-=l.nodeValue.length,l=l.nextSibling),i=l,n=u}return{cont:i,offset:n}}function kt(t){var e=document.body.createTextRange(),n=function t(e,n){var o,i;if(pt.isText(e)){var r=pt.listPrev(e,g.not(pt.isText)),a=C.last(r).previousSibling;o=a||e.parentNode,n+=C.sum(C.tail(r),pt.nodeLength),i=!a}else{if(o=e.childNodes[n]||e,pt.isText(o))return t(o,0);n=0,i=!1}return{node:o,collapseToStart:i,offset:n}}(t.node,t.offset);return e.moveToElementText(n.node),e.collapse(n.collapseToStart),e.moveStart("character",n.offset),e}i.a.fn.extend({summernote:function(){var t=i.a.type(C.head(arguments)),e="string"===t,n="object"===t,o=i.a.extend({},i.a.summernote.options,n?C.head(arguments):{});o.langInfo=i.a.extend(!0,{},i.a.summernote.lang["en-US"],i.a.summernote.lang[o.lang]),o.icons=i.a.extend(!0,{},i.a.summernote.options.icons,o.icons),o.tooltip="auto"===o.tooltip?!m.isSupportTouch:o.tooltip,this.each((function(t,e){var n=i()(e);if(!n.data("summernote")){var r=new vt(n,o);n.data("summernote",r),n.data("summernote").triggerEvent("init",r.layoutInfo)}}));var r=this.first();if(r.length){var a=r.data("summernote");if(e)return a.invoke.apply(a,C.from(arguments));o.focus&&a.invoke("editor.focus")}return this}});var yt=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sc=e,this.so=n,this.ec=o,this.eo=i,this.isOnEditable=this.makeIsOn(pt.isEditable),this.isOnList=this.makeIsOn(pt.isList),this.isOnAnchor=this.makeIsOn(pt.isAnchor),this.isOnCell=this.makeIsOn(pt.isCell),this.isOnData=this.makeIsOn(pt.isData)}var e,n,o;return e=t,(n=[{key:"nativeRange",value:function(){if(m.isW3CRangeSupport){var t=document.createRange();return t.setStart(this.sc,this.so),t.setEnd(this.ec,this.eo),t}var e=kt({node:this.sc,offset:this.so});return e.setEndPoint("EndToEnd",kt({node:this.ec,offset:this.eo})),e}},{key:"getPoints",value:function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}}},{key:"getStartPoint",value:function(){return{node:this.sc,offset:this.so}}},{key:"getEndPoint",value:function(){return{node:this.ec,offset:this.eo}}},{key:"select",value:function(){var t=this.nativeRange();if(m.isW3CRangeSupport){var e=document.getSelection();e.rangeCount>0&&e.removeAllRanges(),e.addRange(t)}else t.select();return this}},{key:"scrollIntoView",value:function(t){var e=i()(t).height();return t.scrollTop+e<this.sc.offsetTop&&(t.scrollTop+=Math.abs(t.scrollTop+e-this.sc.offsetTop)),this}},{key:"normalize",value:function(){var e=function(t,e){if(!t)return t;if(pt.isVisiblePoint(t)&&(!pt.isEdgePoint(t)||pt.isRightEdgePoint(t)&&!e||pt.isLeftEdgePoint(t)&&e||pt.isRightEdgePoint(t)&&e&&pt.isVoid(t.node.nextSibling)||pt.isLeftEdgePoint(t)&&!e&&pt.isVoid(t.node.previousSibling)||pt.isBlock(t.node)&&pt.isEmpty(t.node)))return t;var n=pt.ancestor(t.node,pt.isBlock),o=!1;if(!o){var i=pt.prevPoint(t)||{node:null};o=(pt.isLeftEdgePointOf(t,n)||pt.isVoid(i.node))&&!e}var r=!1;if(!r){var a=pt.nextPoint(t)||{node:null};r=(pt.isRightEdgePointOf(t,n)||pt.isVoid(a.node))&&e}if(o||r){if(pt.isVisiblePoint(t))return t;e=!e}return(e?pt.nextPointUntil(pt.nextPoint(t),pt.isVisiblePoint):pt.prevPointUntil(pt.prevPoint(t),pt.isVisiblePoint))||t},n=e(this.getEndPoint(),!1),o=this.isCollapsed()?n:e(this.getStartPoint(),!0);return new t(o.node,o.offset,n.node,n.offset)}},{key:"nodes",value:function(t,e){t=t||g.ok;var n=e&&e.includeAncestor,o=e&&e.fullyContains,i=this.getStartPoint(),r=this.getEndPoint(),a=[],s=[];return pt.walkPoint(i,r,(function(e){var i;pt.isEditable(e.node)||(o?(pt.isLeftEdgePoint(e)&&s.push(e.node),pt.isRightEdgePoint(e)&&C.contains(s,e.node)&&(i=e.node)):i=n?pt.ancestor(e.node,t):e.node,i&&t(i)&&a.push(i))}),!0),C.unique(a)}},{key:"commonAncestor",value:function(){return pt.commonAncestor(this.sc,this.ec)}},{key:"expand",value:function(e){var n=pt.ancestor(this.sc,e),o=pt.ancestor(this.ec,e);if(!n&&!o)return new t(this.sc,this.so,this.ec,this.eo);var i=this.getPoints();return n&&(i.sc=n,i.so=0),o&&(i.ec=o,i.eo=pt.nodeLength(o)),new t(i.sc,i.so,i.ec,i.eo)}},{key:"collapse",value:function(e){return e?new t(this.sc,this.so,this.sc,this.so):new t(this.ec,this.eo,this.ec,this.eo)}},{key:"splitText",value:function(){var e=this.sc===this.ec,n=this.getPoints();return pt.isText(this.ec)&&!pt.isEdgePoint(this.getEndPoint())&&this.ec.splitText(this.eo),pt.isText(this.sc)&&!pt.isEdgePoint(this.getStartPoint())&&(n.sc=this.sc.splitText(this.so),n.so=0,e&&(n.ec=n.sc,n.eo=this.eo-this.so)),new t(n.sc,n.so,n.ec,n.eo)}},{key:"deleteContents",value:function(){if(this.isCollapsed())return this;var e=this.splitText(),n=e.nodes(null,{fullyContains:!0}),o=pt.prevPointUntil(e.getStartPoint(),(function(t){return!C.contains(n,t.node)})),r=[];return i.a.each(n,(function(t,e){var n=e.parentNode;o.node!==n&&1===pt.nodeLength(n)&&r.push(n),pt.remove(e,!1)})),i.a.each(r,(function(t,e){pt.remove(e,!1)})),new t(o.node,o.offset,o.node,o.offset).normalize()}},{key:"makeIsOn",value:function(t){return function(){var e=pt.ancestor(this.sc,t);return!!e&&e===pt.ancestor(this.ec,t)}}},{key:"isLeftEdgeOf",value:function(t){if(!pt.isLeftEdgePoint(this.getStartPoint()))return!1;var e=pt.ancestor(this.sc,t);return e&&pt.isLeftEdgeOf(this.sc,e)}},{key:"isCollapsed",value:function(){return this.sc===this.ec&&this.so===this.eo}},{key:"wrapBodyInlineWithPara",value:function(){if(pt.isBodyContainer(this.sc)&&pt.isEmpty(this.sc))return this.sc.innerHTML=pt.emptyPara,new t(this.sc.firstChild,0,this.sc.firstChild,0);var e,n=this.normalize();if(pt.isParaInline(this.sc)||pt.isPara(this.sc))return n;if(pt.isInline(n.sc)){var o=pt.listAncestor(n.sc,g.not(pt.isInline));e=C.last(o),pt.isInline(e)||(e=o[o.length-2]||n.sc.childNodes[n.so])}else e=n.sc.childNodes[n.so>0?n.so-1:0];if(e){var i=pt.listPrev(e,pt.isParaInline).reverse();if((i=i.concat(pt.listNext(e.nextSibling,pt.isParaInline))).length){var r=pt.wrap(C.head(i),"p");pt.appendChildNodes(r,C.tail(i))}}return this.normalize()}},{key:"insertNode",value:function(t){var e=this;(pt.isText(t)||pt.isInline(t))&&(e=this.wrapBodyInlineWithPara().deleteContents());var n=pt.splitPoint(e.getStartPoint(),pt.isInline(t));return n.rightNode?(n.rightNode.parentNode.insertBefore(t,n.rightNode),pt.isEmpty(n.rightNode)&&pt.isPara(t)&&n.rightNode.parentNode.removeChild(n.rightNode)):n.container.appendChild(t),t}},{key:"pasteHTML",value:function(t){t=i.a.trim(t);var e=i()("<div></div>").html(t)[0],n=C.from(e.childNodes),o=this,r=!1;return o.so>=0&&(n=n.reverse(),r=!0),n=n.map((function(t){return o.insertNode(t)})),r&&(n=n.reverse()),n}},{key:"toString",value:function(){var t=this.nativeRange();return m.isW3CRangeSupport?t.toString():t.text}},{key:"getWordRange",value:function(e){var n=this.getEndPoint();if(!pt.isCharPoint(n))return this;var o=pt.prevPointUntil(n,(function(t){return!pt.isCharPoint(t)}));return e&&(n=pt.nextPointUntil(n,(function(t){return!pt.isCharPoint(t)}))),new t(o.node,o.offset,n.node,n.offset)}},{key:"getWordsRange",value:function(e){var n=this.getEndPoint(),o=function(t){return!pt.isCharPoint(t)&&!pt.isSpacePoint(t)};if(o(n))return this;var i=pt.prevPointUntil(n,o);return e&&(n=pt.nextPointUntil(n,o)),new t(i.node,i.offset,n.node,n.offset)}},{key:"getWordsMatchRange",value:function(e){var n=this.getEndPoint(),o=pt.prevPointUntil(n,(function(o){if(!pt.isCharPoint(o)&&!pt.isSpacePoint(o))return!0;var i=new t(o.node,o.offset,n.node,n.offset),r=e.exec(i.toString());return r&&0===r.index})),i=new t(o.node,o.offset,n.node,n.offset),r=i.toString(),a=e.exec(r);return a&&a[0].length===r.length?i:null}},{key:"bookmark",value:function(t){return{s:{path:pt.makeOffsetPath(t,this.sc),offset:this.so},e:{path:pt.makeOffsetPath(t,this.ec),offset:this.eo}}}},{key:"paraBookmark",value:function(t){return{s:{path:C.tail(pt.makeOffsetPath(C.head(t),this.sc)),offset:this.so},e:{path:C.tail(pt.makeOffsetPath(C.last(t),this.ec)),offset:this.eo}}}},{key:"getClientRects",value:function(){return this.nativeRange().getClientRects()}}])&>(e.prototype,n),o&>(e,o),t}(),wt={create:function(t,e,n,o){if(4===arguments.length)return new yt(t,e,n,o);if(2===arguments.length)return new yt(t,e,n=t,o=e);var i=this.createFromSelection();if(!i&&1===arguments.length){var r=arguments[0];return pt.isEditable(r)&&(r=r.lastChild),this.createFromBodyElement(r,pt.emptyPara===arguments[0].innerHTML)}return i},createFromBodyElement:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.createFromNode(t);return n.collapse(e)},createFromSelection:function(){var t,e,n,o;if(m.isW3CRangeSupport){var i=document.getSelection();if(!i||0===i.rangeCount)return null;if(pt.isBody(i.anchorNode))return null;var r=i.getRangeAt(0);t=r.startContainer,e=r.startOffset,n=r.endContainer,o=r.endOffset}else{var a=document.selection.createRange(),s=a.duplicate();s.collapse(!1);var l=a;l.collapse(!0);var c=bt(l,!0),u=bt(s,!1);pt.isText(c.node)&&pt.isLeftEdgePoint(c)&&pt.isTextNode(u.node)&&pt.isRightEdgePoint(u)&&u.node.nextSibling===c.node&&(c=u),t=c.cont,e=c.offset,n=u.cont,o=u.offset}return new yt(t,e,n,o)},createFromNode:function(t){var e=t,n=0,o=t,i=pt.nodeLength(o);return pt.isVoid(e)&&(n=pt.listPrev(e).length-1,e=e.parentNode),pt.isBR(o)?(i=pt.listPrev(o).length-1,o=o.parentNode):pt.isVoid(o)&&(i=pt.listPrev(o).length,o=o.parentNode),this.create(e,n,o,i)},createFromNodeBefore:function(t){return this.createFromNode(t).collapse(!0)},createFromNodeAfter:function(t){return this.createFromNode(t).collapse()},createFromBookmark:function(t,e){var n=pt.fromOffsetPath(t,e.s.path),o=e.s.offset,i=pt.fromOffsetPath(t,e.e.path),r=e.e.offset;return new yt(n,o,i,r)},createFromParaBookmark:function(t,e){var n=t.s.offset,o=t.e.offset,i=pt.fromOffsetPath(C.head(e),t.s.path),r=pt.fromOffsetPath(C.last(e),t.e.path);return new yt(i,n,r,o)}},Ct={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221,HOME:36,END:35,PAGEUP:33,PAGEDOWN:34},xt={isEdit:function(t){return C.contains([Ct.BACKSPACE,Ct.TAB,Ct.ENTER,Ct.SPACE,Ct.DELETE],t)},isMove:function(t){return C.contains([Ct.LEFT,Ct.UP,Ct.RIGHT,Ct.DOWN],t)},isNavigation:function(t){return C.contains([Ct.HOME,Ct.END,Ct.PAGEUP,Ct.PAGEDOWN],t)},nameFromCode:g.invertObject(Ct),code:Ct};function St(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Tt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.stack=[],this.stackOffset=-1,this.context=e,this.$editable=e.layoutInfo.editable,this.editable=this.$editable[0]}var e,n,o;return e=t,(n=[{key:"makeSnapshot",value:function(){var t=wt.create(this.editable);return{contents:this.$editable.html(),bookmark:t&&t.isOnEditable()?t.bookmark(this.editable):{s:{path:[],offset:0},e:{path:[],offset:0}}}}},{key:"applySnapshot",value:function(t){null!==t.contents&&this.$editable.html(t.contents),null!==t.bookmark&&wt.createFromBookmark(this.editable,t.bookmark).select()}},{key:"rewind",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset=0,this.applySnapshot(this.stack[this.stackOffset])}},{key:"commit",value:function(){this.stack=[],this.stackOffset=-1,this.recordUndo()}},{key:"reset",value:function(){this.stack=[],this.stackOffset=-1,this.$editable.html(""),this.recordUndo()}},{key:"undo",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset>0&&(this.stackOffset--,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"redo",value:function(){this.stack.length-1>this.stackOffset&&(this.stackOffset++,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"recordUndo",value:function(){this.stackOffset++,this.stack.length>this.stackOffset&&(this.stack=this.stack.slice(0,this.stackOffset)),this.stack.push(this.makeSnapshot()),this.stack.length>this.context.options.historyLimit&&(this.stack.shift(),this.stackOffset-=1)}}])&&St(e.prototype,n),o&&St(e,o),t}();function Et(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var $t=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"jQueryCSS",value:function(t,e){if(m.jqueryVersion<1.9){var n={};return i.a.each(e,(function(e,o){n[o]=t.css(o)})),n}return t.css(e)}},{key:"fromNode",value:function(t){var e=this.jQueryCSS(t,["font-family","font-size","text-align","list-style-type","line-height"])||{},n=t[0].style.fontSize||e["font-size"];return e["font-size"]=parseInt(n,10),e["font-size-unit"]=n.match(/[a-z%]+$/),e}},{key:"stylePara",value:function(t,e){i.a.each(t.nodes(pt.isPara,{includeAncestor:!0}),(function(t,n){i()(n).css(e)}))}},{key:"styleNodes",value:function(t,e){t=t.splitText();var n=e&&e.nodeName||"SPAN",o=!(!e||!e.expandClosestSibling),r=!(!e||!e.onlyPartialContains);if(t.isCollapsed())return[t.insertNode(pt.create(n))];var a=pt.makePredByNodeName(n),s=t.nodes(pt.isText,{fullyContains:!0}).map((function(t){return pt.singleChildAncestor(t,a)||pt.wrap(t,n)}));if(o){if(r){var l=t.nodes();a=g.and(a,(function(t){return C.contains(l,t)}))}return s.map((function(t){var e=pt.withClosestSiblings(t,a),n=C.head(e),o=C.tail(e);return i.a.each(o,(function(t,e){pt.appendChildNodes(n,e.childNodes),pt.remove(e)})),C.head(e)}))}return s}},{key:"current",value:function(t){var e=i()(pt.isElement(t.sc)?t.sc:t.sc.parentNode),n=this.fromNode(e);try{n=i.a.extend(n,{"font-bold":document.queryCommandState("bold")?"bold":"normal","font-italic":document.queryCommandState("italic")?"italic":"normal","font-underline":document.queryCommandState("underline")?"underline":"normal","font-subscript":document.queryCommandState("subscript")?"subscript":"normal","font-superscript":document.queryCommandState("superscript")?"superscript":"normal","font-strikethrough":document.queryCommandState("strikethrough")?"strikethrough":"normal","font-family":document.queryCommandValue("fontname")||n["font-family"]})}catch(t){}if(t.isOnList()){var o=["circle","disc","disc-leading-zero","square"].indexOf(n["list-style-type"])>-1;n["list-style"]=o?"unordered":"ordered"}else n["list-style"]="none";var r=pt.ancestor(t.sc,pt.isPara);if(r&&r.style["line-height"])n["line-height"]=r.style.lineHeight;else{var a=parseInt(n["line-height"],10)/parseInt(n["font-size"],10);n["line-height"]=a.toFixed(1)}return n.anchor=t.isOnAnchor()&&pt.ancestor(t.sc,pt.isAnchor),n.ancestors=pt.listAncestor(t.sc,pt.isEditable),n.range=t,n}}])&&Et(e.prototype,n),o&&Et(e,o),t}();function Nt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var It=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"insertOrderedList",value:function(t){this.toggleList("OL",t)}},{key:"insertUnorderedList",value:function(t){this.toggleList("UL",t)}},{key:"indent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);if(pt.isLi(o)){var r=e.findList(o.previousSibling);r?n.map((function(t){return r.appendChild(t)})):(e.wrapList(n,o.parentNode.nodeName),n.map((function(t){return t.parentNode})).map((function(t){return e.appendToPrevious(t)})))}else i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(parseInt(e,10)||0)+25}))}))})),n.select()}},{key:"outdent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);pt.isLi(o)?e.releaseList([n]):i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(e=parseInt(e,10)||0)>25?e-25:""}))}))})),n.select()}},{key:"toggleList",value:function(t,e){var n=this,o=wt.create(e).wrapBodyInlineWithPara(),r=o.nodes(pt.isPara,{includeAncestor:!0}),a=o.paraBookmark(r),s=C.clusterBy(r,g.peq2("parentNode"));if(C.find(r,pt.isPurePara)){var l=[];i.a.each(s,(function(e,o){l=l.concat(n.wrapList(o,t))})),r=l}else{var c=o.nodes(pt.isList,{includeAncestor:!0}).filter((function(e){return!i.a.nodeName(e,t)}));c.length?i.a.each(c,(function(e,n){pt.replace(n,t)})):r=this.releaseList(s,!0)}wt.createFromParaBookmark(a,r).select()}},{key:"wrapList",value:function(t,e){var n=C.head(t),o=C.last(t),i=pt.isList(n.previousSibling)&&n.previousSibling,r=pt.isList(o.nextSibling)&&o.nextSibling,a=i||pt.insertAfter(pt.create(e||"UL"),o);return t=t.map((function(t){return pt.isPurePara(t)?pt.replace(t,"LI"):t})),pt.appendChildNodes(a,t),r&&(pt.appendChildNodes(a,C.from(r.childNodes)),pt.remove(r)),t}},{key:"releaseList",value:function(t,e){var n=this,o=[];return i.a.each(t,(function(t,r){var a=C.head(r),s=C.last(r),l=e?pt.lastAncestor(a,pt.isList):a.parentNode,c=l.parentNode;if("LI"===l.parentNode.nodeName)r.map((function(t){var e=n.findNextSiblings(t);c.nextSibling?c.parentNode.insertBefore(t,c.nextSibling):c.parentNode.appendChild(t),e.length&&(n.wrapList(e,l.nodeName),t.appendChild(e[0].parentNode))})),0===l.children.length&&c.removeChild(l),0===c.childNodes.length&&c.parentNode.removeChild(c);else{var u=l.childNodes.length>1?pt.splitTree(l,{node:s.parentNode,offset:pt.position(s)+1},{isSkipPaddingBlankHTML:!0}):null,d=pt.splitTree(l,{node:a.parentNode,offset:pt.position(a)},{isSkipPaddingBlankHTML:!0});r=e?pt.listDescendant(d,pt.isLi):C.from(d.childNodes).filter(pt.isLi),!e&&pt.isList(l.parentNode)||(r=r.map((function(t){return pt.replace(t,"P")}))),i.a.each(C.from(r).reverse(),(function(t,e){pt.insertAfter(e,l)}));var h=C.compact([l,d,u]);i.a.each(h,(function(t,e){var n=[e].concat(pt.listDescendant(e,pt.isList));i.a.each(n.reverse(),(function(t,e){pt.nodeLength(e)||pt.remove(e,!0)}))}))}o=o.concat(r)})),o}},{key:"appendToPrevious",value:function(t){return t.previousSibling?pt.appendChildNodes(t.previousSibling,[t]):this.wrapList([t],"LI")}},{key:"findList",value:function(t){return t?C.find(t.children,(function(t){return["OL","UL"].indexOf(t.nodeName)>-1})):null}},{key:"findNextSiblings",value:function(t){for(var e=[];t.nextSibling;)e.push(t.nextSibling),t=t.nextSibling;return e}}])&&Nt(e.prototype,n),o&&Nt(e,o),t}();function Pt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Rt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.bullet=new It,this.options=e.options}var e,n,o;return e=t,(n=[{key:"insertTab",value:function(t,e){var n=pt.createText(new Array(e+1).join(pt.NBSP_CHAR));(t=t.deleteContents()).insertNode(n,!0),(t=wt.create(n,e)).select()}},{key:"insertParagraph",value:function(t,e){e=(e=(e=e||wt.create(t)).deleteContents()).wrapBodyInlineWithPara();var n,o=pt.ancestor(e.sc,pt.isPara);if(o){if(pt.isLi(o)&&(pt.isEmpty(o)||pt.deepestChildIsEmpty(o)))return void this.bullet.toggleList(o.parentNode.nodeName);var r=null;if(1===this.options.blockquoteBreakingLevel?r=pt.ancestor(o,pt.isBlockquote):2===this.options.blockquoteBreakingLevel&&(r=pt.lastAncestor(o,pt.isBlockquote)),r){n=i()(pt.emptyPara)[0],pt.isRightEdgePoint(e.getStartPoint())&&pt.isBR(e.sc.nextSibling)&&i()(e.sc.nextSibling).remove();var a=pt.splitTree(r,e.getStartPoint(),{isDiscardEmptySplits:!0});a?a.parentNode.insertBefore(n,a):pt.insertAfter(n,r)}else{n=pt.splitTree(o,e.getStartPoint());var s=pt.listDescendant(o,pt.isEmptyAnchor);s=s.concat(pt.listDescendant(n,pt.isEmptyAnchor)),i.a.each(s,(function(t,e){pt.remove(e)})),(pt.isHeading(n)||pt.isPre(n)||pt.isCustomStyleTag(n))&&pt.isEmpty(n)&&(n=pt.replace(n,"p"))}}else{var l=e.sc.childNodes[e.so];n=i()(pt.emptyPara)[0],l?e.sc.insertBefore(n,l):e.sc.appendChild(n)}wt.create(n,0).normalize().select().scrollIntoView(t)}}])&&Pt(e.prototype,n),o&&Pt(e,o),t}();function Lt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var At=function t(e,n,o,i){var r={colPos:0,rowPos:0},a=[],s=[];function l(t,e,n,o,i,r,s){var l={baseRow:n,baseCell:o,isRowSpan:i,isColSpan:r,isVirtual:s};a[t]||(a[t]=[]),a[t][e]=l}function c(t,e,n,o){return{baseCell:t.baseCell,action:e,virtualTable:{rowIndex:n,cellIndex:o}}}function u(t,e){if(!a[t])return e;if(!a[t][e])return e;for(var n=e;a[t][n];)if(n++,!a[t][n])return n}function d(t,e){var n=u(t.rowIndex,e.cellIndex),o=e.colSpan>1,i=e.rowSpan>1,a=t.rowIndex===r.rowPos&&e.cellIndex===r.colPos;l(t.rowIndex,n,t,e,i,o,!1);var s=e.attributes.rowSpan?parseInt(e.attributes.rowSpan.value,10):0;if(s>1)for(var c=1;c<s;c++){var d=t.rowIndex+c;h(d,n,e,a),l(d,n,t,e,!0,o,!0)}var f=e.attributes.colSpan?parseInt(e.attributes.colSpan.value,10):0;if(f>1)for(var p=1;p<f;p++){var m=u(t.rowIndex,n+p);h(t.rowIndex,m,e,a),l(t.rowIndex,m,t,e,i,!0,!0)}}function h(t,e,n,o){t===r.rowPos&&r.colPos>=n.cellIndex&&n.cellIndex<=e&&!o&&r.colPos++}function f(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SubtractSpanCount;break;case t.where.Row:if(!e.isVirtual&&e.isRowSpan)return t.resultAction.AddCell;if(e.isRowSpan)return t.resultAction.SubtractSpanCount}return t.resultAction.RemoveCell}function p(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SumSpanCount;if(e.isRowSpan&&e.isVirtual)return t.resultAction.Ignore;break;case t.where.Row:if(e.isRowSpan)return t.resultAction.SumSpanCount;if(e.isColSpan&&e.isVirtual)return t.resultAction.Ignore}return t.resultAction.AddCell}this.getActionList=function(){for(var e=n===t.where.Row?r.rowPos:-1,i=n===t.where.Column?r.colPos:-1,l=0,u=!0;u;){var d=e>=0?e:l,h=i>=0?i:l,m=a[d];if(!m)return u=!1,s;var v=m[h];if(!v)return u=!1,s;var g=t.resultAction.Ignore;switch(o){case t.requestAction.Add:g=p(v);break;case t.requestAction.Delete:g=f(v)}s.push(c(v,g,d,h)),l++}return s},e&&e.tagName&&("td"===e.tagName.toLowerCase()||"th"===e.tagName.toLowerCase())&&(r.colPos=e.cellIndex,e.parentElement&&e.parentElement.tagName&&"tr"===e.parentElement.tagName.toLowerCase()&&(r.rowPos=e.parentElement.rowIndex)),function(){for(var t=i.rows,e=0;e<t.length;e++)for(var n=t[e].cells,o=0;o<n.length;o++)d(t[e],n[o])}()};At.where={Row:0,Column:1},At.requestAction={Add:0,Delete:1},At.resultAction={Ignore:0,SubtractSpanCount:1,RemoveCell:2,AddCell:3,SumSpanCount:4};var Ft=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"tab",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=pt.ancestor(n,pt.isTable),i=pt.listDescendant(o,pt.isCell),r=C[e?"prev":"next"](i,n);r&&wt.create(r,0).select()}},{key:"addRow",value:function(t,e){for(var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr"),r=this.recoverAttributes(o),a=i()("<tr"+r+"></tr>"),s=new At(n,At.where.Row,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),l=0;l<s.length;l++){var c=s[l],u=this.recoverAttributes(c.baseCell);switch(c.action){case At.resultAction.AddCell:a.append("<td"+u+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("top"===e&&(c.baseCell.parent?c.baseCell.closest("tr").rowIndex:0)<=o[0].rowIndex){var d=i()("<div></div>").append(i()("<td"+u+">"+pt.blank+"</td>").removeAttr("rowspan")).html();a.append(d);break}var h=parseInt(c.baseCell.rowSpan,10);h++,c.baseCell.setAttribute("rowSpan",h)}}if("top"===e)o.before(a);else{if(n.rowSpan>1){var f=o[0].rowIndex+(n.rowSpan-2);return void i()(i()(o).parent().find("tr")[f]).after(i()(a))}o.after(a)}}},{key:"addCol",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr");i()(o).siblings().push(o);for(var r=new At(n,At.where.Column,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),a=0;a<r.length;a++){var s=r[a],l=this.recoverAttributes(s.baseCell);switch(s.action){case At.resultAction.AddCell:"right"===e?i()(s.baseCell).after("<td"+l+">"+pt.blank+"</td>"):i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("right"===e){var c=parseInt(s.baseCell.colSpan,10);c++,s.baseCell.setAttribute("colSpan",c)}else i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>")}}}},{key:"recoverAttributes",value:function(t){var e="";if(!t)return e;for(var n=t.attributes||[],o=0;o<n.length;o++)"id"!==n[o].name.toLowerCase()&&n[o].specified&&(e+=" "+n[o].name+"='"+n[o].value+"'");return e}},{key:"deleteRow",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=n[0].rowIndex,a=new At(e,At.where.Row,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),s=0;s<a.length;s++)if(a[s]){var l=a[s].baseCell,c=a[s].virtualTable,u=l.rowSpan&&l.rowSpan>1,d=u?parseInt(l.rowSpan,10):0;switch(a[s].action){case At.resultAction.Ignore:continue;case At.resultAction.AddCell:var h=n.next("tr")[0];if(!h)continue;var f=n[0].cells[o];u&&(d>2?(d--,h.insertBefore(f,h.cells[o]),h.cells[o].setAttribute("rowSpan",d),h.cells[o].innerHTML=""):2===d&&(h.insertBefore(f,h.cells[o]),h.cells[o].removeAttribute("rowSpan"),h.cells[o].innerHTML=""));continue;case At.resultAction.SubtractSpanCount:u&&(d>2?(d--,l.setAttribute("rowSpan",d),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")):2===d&&(l.removeAttribute("rowSpan"),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")));continue;case At.resultAction.RemoveCell:continue}}n.remove()}},{key:"deleteCol",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=new At(e,At.where.Column,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),a=0;a<r.length;a++)if(r[a])switch(r[a].action){case At.resultAction.Ignore:continue;case At.resultAction.SubtractSpanCount:var s=r[a].baseCell;if(s.colSpan&&s.colSpan>1){var l=s.colSpan?parseInt(s.colSpan,10):0;l>2?(l--,s.setAttribute("colSpan",l),s.cellIndex===o&&(s.innerHTML="")):2===l&&(s.removeAttribute("colSpan"),s.cellIndex===o&&(s.innerHTML=""))}continue;case At.resultAction.RemoveCell:pt.remove(r[a].baseCell,!0);continue}}},{key:"createTable",value:function(t,e,n){for(var o,r=[],a=0;a<t;a++)r.push("<td>"+pt.blank+"</td>");o=r.join("");for(var s,l=[],c=0;c<e;c++)l.push("<tr>"+o+"</tr>");s=l.join("");var u=i()("<table>"+s+"</table>");return n&&n.tableClassName&&u.addClass(n.tableClassName),u[0]}},{key:"deleteTable",value:function(t){var e=pt.ancestor(t.commonAncestor(),pt.isCell);i()(e).closest("table").remove()}}])&&Lt(e.prototype,n),o&&Lt(e,o),t}();function Dt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ht=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.editable=this.$editable[0],this.lastRange=null,this.snapshot=null,this.style=new $t,this.table=new Ft,this.typing=new Rt(e),this.bullet=new It,this.history=new Tt(e),this.context.memo("help.escape",this.lang.help.escape),this.context.memo("help.undo",this.lang.help.undo),this.context.memo("help.redo",this.lang.help.redo),this.context.memo("help.tab",this.lang.help.tab),this.context.memo("help.untab",this.lang.help.untab),this.context.memo("help.insertParagraph",this.lang.help.insertParagraph),this.context.memo("help.insertOrderedList",this.lang.help.insertOrderedList),this.context.memo("help.insertUnorderedList",this.lang.help.insertUnorderedList),this.context.memo("help.indent",this.lang.help.indent),this.context.memo("help.outdent",this.lang.help.outdent),this.context.memo("help.formatPara",this.lang.help.formatPara),this.context.memo("help.insertHorizontalRule",this.lang.help.insertHorizontalRule),this.context.memo("help.fontName",this.lang.help.fontName);for(var o=["bold","italic","underline","strikethrough","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","formatBlock","removeFormat","backColor"],r=0,a=o.length;r<a;r++)this[o[r]]=function(t){return function(e){n.beforeCommand(),document.execCommand(t,!1,e),n.afterCommand(!0)}}(o[r]),this.context.memo("help."+o[r],this.lang.help[o[r]]);this.fontName=this.wrapCommand((function(t){return n.fontStyling("font-family",m.validFontName(t))})),this.fontSize=this.wrapCommand((function(t){var e=n.currentStyle()["font-size-unit"];return n.fontStyling("font-size",t+e)})),this.fontSizeUnit=this.wrapCommand((function(t){var e=n.currentStyle()["font-size"];return n.fontStyling("font-size",e+t)}));for(var s=1;s<=6;s++)this["formatH"+s]=function(t){return function(){n.formatBlock("H"+t)}}(s),this.context.memo("help.formatH"+s,this.lang.help["formatH"+s]);this.insertParagraph=this.wrapCommand((function(){n.typing.insertParagraph(n.editable)})),this.insertOrderedList=this.wrapCommand((function(){n.bullet.insertOrderedList(n.editable)})),this.insertUnorderedList=this.wrapCommand((function(){n.bullet.insertUnorderedList(n.editable)})),this.indent=this.wrapCommand((function(){n.bullet.indent(n.editable)})),this.outdent=this.wrapCommand((function(){n.bullet.outdent(n.editable)})),this.insertNode=this.wrapCommand((function(t){n.isLimited(i()(t).text().length)||(n.getLastRange().insertNode(t),n.setLastRange(wt.createFromNodeAfter(t).select()))})),this.insertText=this.wrapCommand((function(t){if(!n.isLimited(t.length)){var e=n.getLastRange().insertNode(pt.createText(t));n.setLastRange(wt.create(e,pt.nodeLength(e)).select())}})),this.pasteHTML=this.wrapCommand((function(t){if(!n.isLimited(t.length)){t=n.context.invoke("codeview.purify",t);var e=n.getLastRange().pasteHTML(t);n.setLastRange(wt.createFromNodeAfter(C.last(e)).select())}})),this.formatBlock=this.wrapCommand((function(t,e){var o=n.options.callbacks.onApplyCustomStyle;o?o.call(n,e,n.context,n.onFormatBlock):n.onFormatBlock(t,e)})),this.insertHorizontalRule=this.wrapCommand((function(){var t=n.getLastRange().insertNode(pt.create("HR"));t.nextSibling&&n.setLastRange(wt.create(t.nextSibling,0).normalize().select())})),this.lineHeight=this.wrapCommand((function(t){n.style.stylePara(n.getLastRange(),{lineHeight:t})})),this.createLink=this.wrapCommand((function(t){var e=t.url,o=t.text,r=t.isNewWindow,a=t.checkProtocol,s=t.range||n.getLastRange(),l=o.length-s.toString().length;if(!(l>0&&n.isLimited(l))){var c=s.toString()!==o;"string"==typeof e&&(e=e.trim()),n.options.onCreateLink?e=n.options.onCreateLink(e):a&&(e=/^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e)?e:n.options.defaultProtocol+e);var u=[];if(c){var d=(s=s.deleteContents()).insertNode(i()("<A>"+o+"</A>")[0]);u.push(d)}else u=n.style.styleNodes(s,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});i.a.each(u,(function(t,n){i()(n).attr("href",e),r?i()(n).attr("target","_blank"):i()(n).removeAttr("target")})),n.setLastRange(n.createRangeFromList(u).select())}})),this.color=this.wrapCommand((function(t){var e=t.foreColor,n=t.backColor;e&&document.execCommand("foreColor",!1,e),n&&document.execCommand("backColor",!1,n)})),this.foreColor=this.wrapCommand((function(t){document.execCommand("foreColor",!1,t)})),this.insertTable=this.wrapCommand((function(t){var e=t.split("x");n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0],e[1],n.options))})),this.removeMedia=this.wrapCommand((function(){var t=i()(n.restoreTarget()).parent();t.closest("figure").length?t.closest("figure").remove():t=i()(n.restoreTarget()).detach(),n.context.triggerEvent("media.delete",t,n.$editable)})),this.floatMe=this.wrapCommand((function(t){var e=i()(n.restoreTarget());e.toggleClass("note-float-left","left"===t),e.toggleClass("note-float-right","right"===t),e.css("float","none"===t?"":t)})),this.resize=this.wrapCommand((function(t){var e=i()(n.restoreTarget());0===(t=parseFloat(t))?e.css("width",""):e.css({width:100*t+"%",height:""})}))}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$editable.on("keydown",(function(e){if(e.keyCode===xt.code.ENTER&&t.context.triggerEvent("enter",e),t.context.triggerEvent("keydown",e),t.snapshot=t.history.makeSnapshot(),t.hasKeyShortCut=!1,e.isDefaultPrevented()||(t.options.shortcuts?t.hasKeyShortCut=t.handleKeyMap(e):t.preventDefaultEditableShortCuts(e)),t.isLimited(1,e)){var n=t.getLastRange();if(n.eo-n.so==0)return!1}t.setLastRange(),t.options.recordEveryKeystroke&&!1===t.hasKeyShortCut&&t.history.recordUndo()})).on("keyup",(function(e){t.setLastRange(),t.context.triggerEvent("keyup",e)})).on("focus",(function(e){t.setLastRange(),t.context.triggerEvent("focus",e)})).on("blur",(function(e){t.context.triggerEvent("blur",e)})).on("mousedown",(function(e){t.context.triggerEvent("mousedown",e)})).on("mouseup",(function(e){t.setLastRange(),t.history.recordUndo(),t.context.triggerEvent("mouseup",e)})).on("scroll",(function(e){t.context.triggerEvent("scroll",e)})).on("paste",(function(e){t.setLastRange(),t.context.triggerEvent("paste",e)})).on("input",(function(){t.isLimited(0)&&t.snapshot&&t.history.applySnapshot(t.snapshot)})),this.$editable.attr("spellcheck",this.options.spellCheck),this.$editable.attr("autocorrect",this.options.spellCheck),this.options.disableGrammar&&this.$editable.attr("data-gramm",!1),this.$editable.html(pt.html(this.$note)||pt.emptyPara),this.$editable.on(m.inputEventName,g.debounce((function(){t.context.triggerEvent("change",t.$editable.html(),t.$editable)}),10)),this.$editable.on("focusin",(function(e){t.context.triggerEvent("focusin",e)})).on("focusout",(function(e){t.context.triggerEvent("focusout",e)})),this.options.airMode?this.options.overrideContextMenu&&this.$editor.on("contextmenu",(function(e){return t.context.triggerEvent("contextmenu",e),!1})):(this.options.width&&this.$editor.outerWidth(this.options.width),this.options.height&&this.$editable.outerHeight(this.options.height),this.options.maxHeight&&this.$editable.css("max-height",this.options.maxHeight),this.options.minHeight&&this.$editable.css("min-height",this.options.minHeight)),this.history.recordUndo(),this.setLastRange()}},{key:"destroy",value:function(){this.$editable.off()}},{key:"handleKeyMap",value:function(t){var e=this.options.keyMap[m.isMac?"mac":"pc"],n=[];t.metaKey&&n.push("CMD"),t.ctrlKey&&!t.altKey&&n.push("CTRL"),t.shiftKey&&n.push("SHIFT");var o=xt.nameFromCode[t.keyCode];o&&n.push(o);var i=e[n.join("+")];if("TAB"!==o||this.options.tabDisable)if(i){if(!1!==this.context.invoke(i))return t.preventDefault(),!0}else xt.isEdit(t.keyCode)&&this.afterCommand();else this.afterCommand();return!1}},{key:"preventDefaultEditableShortCuts",value:function(t){(t.ctrlKey||t.metaKey)&&C.contains([66,73,85],t.keyCode)&&t.preventDefault()}},{key:"isLimited",value:function(t,e){return t=t||0,(void 0===e||!(xt.isMove(e.keyCode)||xt.isNavigation(e.keyCode)||e.ctrlKey||e.metaKey||C.contains([xt.code.BACKSPACE,xt.code.DELETE],e.keyCode)))&&this.options.maxTextLength>0&&this.$editable.text().length+t>this.options.maxTextLength}},{key:"createRange",value:function(){return this.focus(),this.setLastRange(),this.getLastRange()}},{key:"createRangeFromList",value:function(t){var e=wt.createFromNodeBefore(C.head(t)).getStartPoint(),n=wt.createFromNodeAfter(C.last(t)).getEndPoint();return wt.create(e.node,e.offset,n.node,n.offset)}},{key:"setLastRange",value:function(t){t?this.lastRange=t:(this.lastRange=wt.create(this.editable),0===i()(this.lastRange.sc).closest(".note-editable").length&&(this.lastRange=wt.createFromBodyElement(this.editable)))}},{key:"getLastRange",value:function(){return this.lastRange||this.setLastRange(),this.lastRange}},{key:"saveRange",value:function(t){t&&this.getLastRange().collapse().select()}},{key:"restoreRange",value:function(){this.lastRange&&(this.lastRange.select(),this.focus())}},{key:"saveTarget",value:function(t){this.$editable.data("target",t)}},{key:"clearTarget",value:function(){this.$editable.removeData("target")}},{key:"restoreTarget",value:function(){return this.$editable.data("target")}},{key:"currentStyle",value:function(){var t=wt.create();return t&&(t=t.normalize()),t?this.style.current(t):this.style.fromNode(this.$editable)}},{key:"styleFromNode",value:function(t){return this.style.fromNode(t)}},{key:"undo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.undo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"commit",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.commit(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"redo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.redo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"beforeCommand",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),document.execCommand("styleWithCSS",!1,this.options.styleWithCSS),this.focus()}},{key:"afterCommand",value:function(t){this.normalizeContent(),this.history.recordUndo(),t||this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"tab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t);else{if(0===this.options.tabSize)return!1;this.isLimited(this.options.tabSize)||(this.beforeCommand(),this.typing.insertTab(t,this.options.tabSize),this.afterCommand())}}},{key:"untab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t,!0);else if(0===this.options.tabSize)return!1}},{key:"wrapCommand",value:function(t){return function(){this.beforeCommand(),t.apply(this,arguments),this.afterCommand()}}},{key:"insertImage",value:function(t,e){var n,o=this;return(n=t,i.a.Deferred((function(t){var e=i()("<img>");e.one("load",(function(){e.off("error abort"),t.resolve(e)})).one("error abort",(function(){e.off("load").detach(),t.reject(e)})).css({display:"none"}).appendTo(document.body).attr("src",n)})).promise()).then((function(t){o.beforeCommand(),"function"==typeof e?e(t):("string"==typeof e&&t.attr("data-filename",e),t.css("width",Math.min(o.$editable.width(),t.width()))),t.show(),o.getLastRange().insertNode(t[0]),o.setLastRange(wt.createFromNodeAfter(t[0]).select()),o.afterCommand()})).fail((function(t){o.context.triggerEvent("image.upload.error",t)}))}},{key:"insertImagesAsDataURL",value:function(t){var e=this;i.a.each(t,(function(t,n){var o=n.name;e.options.maximumImageFileSize&&e.options.maximumImageFileSize<n.size?e.context.triggerEvent("image.upload.error",e.lang.image.maximumFileSizeError):function(t){return i.a.Deferred((function(e){i.a.extend(new FileReader,{onload:function(t){var n=t.target.result;e.resolve(n)},onerror:function(t){e.reject(t)}}).readAsDataURL(t)})).promise()}(n).then((function(t){return e.insertImage(t,o)})).fail((function(){e.context.triggerEvent("image.upload.error")}))}))}},{key:"insertImagesOrCallback",value:function(t){this.options.callbacks.onImageUpload?this.context.triggerEvent("image.upload",t):this.insertImagesAsDataURL(t)}},{key:"getSelectedText",value:function(){var t=this.getLastRange();return t.isOnAnchor()&&(t=wt.createFromNode(pt.ancestor(t.sc,pt.isAnchor))),t.toString()}},{key:"onFormatBlock",value:function(t,e){if(document.execCommand("FormatBlock",!1,m.isMSIE?"<"+t+">":t),e&&e.length&&(e[0].tagName.toUpperCase()!==t.toUpperCase()&&(e=e.find(t)),e&&e.length)){var n=e[0].className||"";if(n){var o=this.createRange();i()([o.sc,o.ec]).closest(t).addClass(n)}}}},{key:"formatPara",value:function(){this.formatBlock("P")}},{key:"fontStyling",value:function(t,e){var n=this.getLastRange();if(""!==n){var o=this.style.styleNodes(n);if(this.$editor.find(".note-status-output").html(""),i()(o).css(t,e),n.isCollapsed()){var r=C.head(o);r&&!pt.nodeLength(r)&&(r.innerHTML=pt.ZERO_WIDTH_NBSP_CHAR,wt.createFromNode(r.firstChild).select(),this.setLastRange(),this.$editable.data("bogus",r))}else this.setLastRange(this.createRangeFromList(o).select())}else{var a=i.a.now();this.$editor.find(".note-status-output").html('<div id="note-status-output-'+a+'" class="alert alert-info">'+this.lang.output.noSelection+"</div>"),setTimeout((function(){i()("#note-status-output-"+a).remove()}),5e3)}}},{key:"unlink",value:function(){var t=this.getLastRange();if(t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor);(t=wt.createFromNode(e)).select(),this.setLastRange(),this.beforeCommand(),document.execCommand("unlink"),this.afterCommand()}}},{key:"getLinkInfo",value:function(){var t=this.getLastRange().expand(pt.isAnchor),e=i()(C.head(t.nodes(pt.isAnchor))),n={range:t,text:t.toString(),url:e.length?e.attr("href"):""};return e.length&&(n.isNewWindow="_blank"===e.attr("target")),n}},{key:"addRow",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addRow(e,t),this.afterCommand())}},{key:"addCol",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addCol(e,t),this.afterCommand())}},{key:"deleteRow",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteRow(t),this.afterCommand())}},{key:"deleteCol",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteCol(t),this.afterCommand())}},{key:"deleteTable",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteTable(t),this.afterCommand())}},{key:"resizeTo",value:function(t,e,n){var o;if(n){var i=t.y/t.x,r=e.data("ratio");o={width:r>i?t.x:t.y/r,height:r>i?t.x*r:t.y}}else o={width:t.x,height:t.y};e.css(o)}},{key:"hasFocus",value:function(){return this.$editable.is(":focus")}},{key:"focus",value:function(){this.hasFocus()||this.$editable.focus()}},{key:"isEmpty",value:function(){return pt.isEmpty(this.$editable[0])||pt.emptyPara===this.$editable.html()}},{key:"empty",value:function(){this.context.invoke("code",pt.emptyPara)}},{key:"normalizeContent",value:function(){this.$editable[0].normalize()}}])&&Dt(e.prototype,n),o&&Dt(e,o),t}();function Bt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var zt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editable=e.layoutInfo.editable}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.$editable.on("paste",this.pasteByEvent.bind(this))}},{key:"pasteByEvent",value:function(t){var e=this,n=t.originalEvent.clipboardData;if(n&&n.items&&n.items.length){var o=n.items.length>1?n.items[1]:C.head(n.items);"file"===o.kind&&-1!==o.type.indexOf("image/")?(this.context.invoke("editor.insertImagesOrCallback",[o.getAsFile()]),t.preventDefault()):"string"===o.kind&&this.context.invoke("editor.isLimited",n.getData("Text").length)&&t.preventDefault()}else if(window.clipboardData){var i=window.clipboardData.getData("text");this.context.invoke("editor.isLimited",i.length)&&t.preventDefault()}setTimeout((function(){e.context.invoke("editor.afterCommand")}),10)}}])&&Bt(e.prototype,n),o&&Bt(e,o),t}();function Mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ot=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$eventListener=i()(document),this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.documentEventHandlers={},this.$dropzone=i()(['<div class="note-dropzone">','<div class="note-dropzone-message"></div>',"</div>"].join("")).prependTo(this.$editor)}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.options.disableDragAndDrop?(this.documentEventHandlers.onDrop=function(t){t.preventDefault()},this.$eventListener=this.$dropzone,this.$eventListener.on("drop",this.documentEventHandlers.onDrop)):this.attachDragAndDropEvent()}},{key:"attachDragAndDropEvent",value:function(){var t=this,e=i()(),n=this.$dropzone.find(".note-dropzone-message");this.documentEventHandlers.onDragenter=function(o){var i=t.context.invoke("codeview.isActivated"),r=t.$editor.width()>0&&t.$editor.height()>0;i||e.length||!r||(t.$editor.addClass("dragover"),t.$dropzone.width(t.$editor.width()),t.$dropzone.height(t.$editor.height()),n.text(t.lang.image.dragImageHere)),e=e.add(o.target)},this.documentEventHandlers.onDragleave=function(n){(e=e.not(n.target)).length&&"BODY"!==n.target.nodeName||(e=i()(),t.$editor.removeClass("dragover"))},this.documentEventHandlers.onDrop=function(){e=i()(),t.$editor.removeClass("dragover")},this.$eventListener.on("dragenter",this.documentEventHandlers.onDragenter).on("dragleave",this.documentEventHandlers.onDragleave).on("drop",this.documentEventHandlers.onDrop),this.$dropzone.on("dragenter",(function(){t.$dropzone.addClass("hover"),n.text(t.lang.image.dropImage)})).on("dragleave",(function(){t.$dropzone.removeClass("hover"),n.text(t.lang.image.dragImageHere)})),this.$dropzone.on("drop",(function(e){var n=e.originalEvent.dataTransfer;e.preventDefault(),n&&n.files&&n.files.length?(t.$editable.focus(),t.context.invoke("editor.insertImagesOrCallback",n.files)):i.a.each(n.types,(function(e,o){if(!(o.toLowerCase().indexOf("_moz_")>-1)){var r=n.getData(o);o.toLowerCase().indexOf("text")>-1?t.context.invoke("editor.pasteHTML",r):i()(r).each((function(e,n){t.context.invoke("editor.insertNode",n)}))}}))})).on("dragover",!1)}},{key:"destroy",value:function(){var t=this;Object.keys(this.documentEventHandlers).forEach((function(e){t.$eventListener.off(e.substr(2).toLowerCase(),t.documentEventHandlers[e])})),this.documentEventHandlers={}}}])&&Mt(e.prototype,n),o&&Mt(e,o),t}();function jt(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return Ut(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ut(t,e)}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,r=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return r=t.done,t},e:function(t){a=!0,i=t},f:function(){try{r||null==o.return||o.return()}finally{if(a)throw i}}}}function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Wt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Kt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.options=e.options,this.CodeMirrorConstructor=window.CodeMirror,this.options.codemirror.CodeMirrorConstructor&&(this.CodeMirrorConstructor=this.options.codemirror.CodeMirrorConstructor)}var e,n,o;return e=t,(n=[{key:"sync",value:function(t){var e=this.isActivated(),n=this.CodeMirrorConstructor;e&&(t?n?this.$codable.data("cmEditor").getDoc().setValue(t):this.$codable.val(t):n&&this.$codable.data("cmEditor").save())}},{key:"initialize",value:function(){var t=this;this.$codable.on("keyup",(function(e){e.keyCode===xt.code.ESCAPE&&t.deactivate()}))}},{key:"isActivated",value:function(){return this.$editor.hasClass("codeview")}},{key:"toggle",value:function(){this.isActivated()?this.deactivate():this.activate(),this.context.triggerEvent("codeview.toggled")}},{key:"purify",value:function(t){if(this.options.codeviewFilter&&(t=t.replace(this.options.codeviewFilterRegex,""),this.options.codeviewIframeFilter)){var e=this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);t=t.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi,(function(t){if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t))return"";var n,o=jt(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if(new RegExp('src="(https?:)?//'+i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+'/(.+)"').test(t))return t}}catch(t){o.e(t)}finally{o.f()}return""}))}return t}},{key:"activate",value:function(){var t=this,e=this.CodeMirrorConstructor;if(this.$codable.val(pt.html(this.$editable,this.options.prettifyHtml)),this.$codable.height(this.$editable.height()),this.context.invoke("toolbar.updateCodeview",!0),this.context.invoke("airPopover.updateCodeview",!0),this.$editor.addClass("codeview"),this.$codable.focus(),e){var n=e.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var o=new e.TernServer(this.options.codemirror.tern);n.ternServer=o,n.on("cursorActivity",(function(t){o.updateArgHints(t)}))}n.on("blur",(function(e){t.context.triggerEvent("blur.codeview",n.getValue(),e)})),n.on("change",(function(){t.context.triggerEvent("change.codeview",n.getValue(),n)})),n.setSize(null,this.$editable.outerHeight()),this.$codable.data("cmEditor",n)}else this.$codable.on("blur",(function(e){t.context.triggerEvent("blur.codeview",t.$codable.val(),e)})),this.$codable.on("input",(function(){t.context.triggerEvent("change.codeview",t.$codable.val(),t.$codable)}))}},{key:"deactivate",value:function(){if(this.CodeMirrorConstructor){var t=this.$codable.data("cmEditor");this.$codable.val(t.getValue()),t.toTextArea()}var e=this.purify(pt.value(this.$codable,this.options.prettifyHtml)||pt.emptyPara),n=this.$editable.html()!==e;this.$editable.html(e),this.$editable.height(this.options.height?this.$codable.height():"auto"),this.$editor.removeClass("codeview"),n&&this.context.triggerEvent("change",this.$editable.html(),this.$editable),this.$editable.focus(),this.context.invoke("toolbar.updateCodeview",!1),this.context.invoke("airPopover.updateCodeview",!1)}},{key:"destroy",value:function(){this.isActivated()&&this.deactivate()}}])&&Wt(e.prototype,n),o&&Wt(e,o),t}();function Vt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var qt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$document=i()(document),this.$statusbar=e.layoutInfo.statusbar,this.$editable=e.layoutInfo.editable,this.options=e.options}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.options.airMode||this.options.disableResizeEditor?this.destroy():this.$statusbar.on("mousedown",(function(e){e.preventDefault(),e.stopPropagation();var n=t.$editable.offset().top-t.$document.scrollTop(),o=function(e){var o=e.clientY-(n+24);o=t.options.minheight>0?Math.max(o,t.options.minheight):o,o=t.options.maxHeight>0?Math.min(o,t.options.maxHeight):o,t.$editable.height(o)};t.$document.on("mousemove",o).one("mouseup",(function(){t.$document.off("mousemove",o)}))}))}},{key:"destroy",value:function(){this.$statusbar.off(),this.$statusbar.addClass("locked")}}])&&Vt(e.prototype,n),o&&Vt(e,o),t}();function _t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Gt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.$window=i()(window),this.$scrollbar=i()("html, body"),this.onResize=function(){n.resizeTo({h:n.$window.height()-n.$toolbar.outerHeight()})}}var e,n,o;return e=t,(n=[{key:"resizeTo",value:function(t){this.$editable.css("height",t.h),this.$codable.css("height",t.h),this.$codable.data("cmeditor")&&this.$codable.data("cmeditor").setsize(null,t.h)}},{key:"toggle",value:function(){this.$editor.toggleClass("fullscreen"),this.isFullscreen()?(this.$editable.data("orgHeight",this.$editable.css("height")),this.$editable.data("orgMaxHeight",this.$editable.css("maxHeight")),this.$editable.css("maxHeight",""),this.$window.on("resize",this.onResize).trigger("resize"),this.$scrollbar.css("overflow","hidden")):(this.$window.off("resize",this.onResize),this.resizeTo({h:this.$editable.data("orgHeight")}),this.$editable.css("maxHeight",this.$editable.css("orgMaxHeight")),this.$scrollbar.css("overflow","visible")),this.context.invoke("toolbar.updateFullscreen",this.isFullscreen())}},{key:"isFullscreen",value:function(){return this.$editor.hasClass("fullscreen")}}])&&_t(e.prototype,n),o&&_t(e,o),t}();function Yt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Zt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$document=i()(document),this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,this.lang=this.options.langInfo,this.events={"summernote.mousedown":function(t,e){n.update(e.target,e)&&e.preventDefault()},"summernote.keyup summernote.scroll summernote.change summernote.dialog.shown":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$handle=i()(['<div class="note-handle">','<div class="note-control-selection">','<div class="note-control-selection-bg"></div>','<div class="note-control-holder note-control-nw"></div>','<div class="note-control-holder note-control-ne"></div>','<div class="note-control-holder note-control-sw"></div>','<div class="',this.options.disableResizeImage?"note-control-holder":"note-control-sizing",' note-control-se"></div>',this.options.disableResizeImage?"":'<div class="note-control-selection-info"></div>',"</div>","</div>"].join("")).prependTo(this.$editingArea),this.$handle.on("mousedown",(function(e){if(pt.isControlSizing(e.target)){e.preventDefault(),e.stopPropagation();var n=t.$handle.find(".note-control-selection").data("target"),o=n.offset(),i=t.$document.scrollTop(),r=function(e){t.context.invoke("editor.resizeTo",{x:e.clientX-o.left,y:e.clientY-(o.top-i)},n,!e.shiftKey),t.update(n[0],e)};t.$document.on("mousemove",r).one("mouseup",(function(e){e.preventDefault(),t.$document.off("mousemove",r),t.context.invoke("editor.afterCommand")})),n.data("ratio")||n.data("ratio",n.height()/n.width())}})),this.$handle.on("wheel",(function(e){e.preventDefault(),t.update()}))}},{key:"destroy",value:function(){this.$handle.remove()}},{key:"update",value:function(t,e){if(this.context.isDisabled())return!1;var n=pt.isImg(t),o=this.$handle.find(".note-control-selection");if(this.context.invoke("imagePopover.update",t,e),n){var r=i()(t),a=r.position(),s={left:a.left+parseInt(r.css("marginLeft"),10),top:a.top+parseInt(r.css("marginTop"),10)},l={w:r.outerWidth(!1),h:r.outerHeight(!1)};o.css({display:"block",left:s.left,top:s.top,width:l.w,height:l.h}).data("target",r);var c=new Image;c.src=r.attr("src");var u=l.w+"x"+l.h+" ("+this.lang.image.original+": "+c.width+"x"+c.height+")";o.find(".note-control-selection-info").text(u),this.context.invoke("editor.saveTarget",t)}else this.hide();return n}},{key:"hide",value:function(){this.context.invoke("editor.clearTarget"),this.$handle.children().hide()}}])&&Yt(e.prototype,n),o&&Yt(e,o),t}();function Xt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Qt=/^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i,Jt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.lastWordRange=null}},{key:"destroy",value:function(){this.lastWordRange=null}},{key:"replace",value:function(){if(this.lastWordRange){var t=this.lastWordRange.toString(),e=t.match(Qt);if(e&&(e[1]||e[2])){var n=e[1]?t:"http://"+t,o=this.options.showDomainOnlyForAutolink?t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i,"").split("/")[0]:t,r=i()("<a />").html(o).attr("href",n)[0];this.context.options.linkTargetBlank&&i()(r).attr("target","_blank"),this.lastWordRange.insertNode(r),this.lastWordRange=null,this.context.invoke("editor.focus")}}}},{key:"handleKeydown",value:function(t){if(C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWordRange=e}}},{key:"handleKeyup",value:function(t){C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)&&this.replace()}}])&&Xt(e.prototype,n),o&&Xt(e,o),t}();function te(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ee=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e.layoutInfo.note,this.events={"summernote.change":function(){n.$note.val(e.invoke("code"))}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return pt.isTextarea(this.$note[0])}}])&&te(e.prototype,n),o&&te(e,o),t}();function ne(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var oe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options.replace||{},this.keys=[xt.code.ENTER,xt.code.SPACE,xt.code.PERIOD,xt.code.COMMA,xt.code.SEMICOLON,xt.code.SLASH],this.previousKeydownCode=null,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.match}},{key:"initialize",value:function(){this.lastWord=null}},{key:"destroy",value:function(){this.lastWord=null}},{key:"replace",value:function(){if(this.lastWord){var t=this,e=this.lastWord.toString();this.options.match(e,(function(e){if(e){var n="";if("string"==typeof e?n=pt.createText(e):e instanceof jQuery?n=e[0]:e instanceof Node&&(n=e),!n)return;t.lastWord.insertNode(n),t.lastWord=null,t.context.invoke("editor.focus")}}))}}},{key:"handleKeydown",value:function(t){if(this.previousKeydownCode&&C.contains(this.keys,this.previousKeydownCode))this.previousKeydownCode=t.keyCode;else{if(C.contains(this.keys,t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWord=e}this.previousKeydownCode=t.keyCode}}},{key:"handleKeyup",value:function(t){C.contains(this.keys,t.keyCode)&&this.replace()}}])&&ne(e.prototype,n),o&&ne(e,o),t}();function ie(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var re=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,!0===this.options.inheritPlaceholder&&(this.options.placeholder=this.context.$note.attr("placeholder")||this.options.placeholder),this.events={"summernote.init summernote.change":function(){n.update()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.placeholder}},{key:"initialize",value:function(){var t=this;this.$placeholder=i()('<div class="note-placeholder">'),this.$placeholder.on("click",(function(){t.context.invoke("focus")})).html(this.options.placeholder).prependTo(this.$editingArea),this.update()}},{key:"destroy",value:function(){this.$placeholder.remove()}},{key:"update",value:function(){var t=!this.context.invoke("codeview.isActivated")&&this.context.invoke("editor.isEmpty");this.$placeholder.toggle(t)}}])&&ie(e.prototype,n),o&&ie(e,o),t}();function ae(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var se=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ui=i.a.summernote.ui,this.context=e,this.$toolbar=e.layoutInfo.toolbar,this.options=e.options,this.lang=this.options.langInfo,this.invertedKeyMap=g.invertObject(this.options.keyMap[m.isMac?"mac":"pc"])}var e,n,o;return e=t,(n=[{key:"representShortcut",value:function(t){var e=this.invertedKeyMap[t];return this.options.shortcuts&&e?(m.isMac&&(e=e.replace("CMD","⌘").replace("SHIFT","⇧"))," ("+(e=e.replace("BACKSLASH","\\").replace("SLASH","/").replace("LEFTBRACKET","[").replace("RIGHTBRACKET","]"))+")"):""}},{key:"button",value:function(t){return!this.options.tooltip&&t.tooltip&&delete t.tooltip,t.container=this.options.container,this.ui.button(t)}},{key:"initialize",value:function(){this.addToolbarButtons(),this.addImagePopoverButtons(),this.addLinkPopoverButtons(),this.addTablePopoverButtons(),this.fontInstalledMap={}}},{key:"destroy",value:function(){delete this.fontInstalledMap}},{key:"isFontInstalled",value:function(t){return Object.prototype.hasOwnProperty.call(this.fontInstalledMap,t)||(this.fontInstalledMap[t]=m.isFontInstalled(t)||C.contains(this.options.fontNamesIgnoreCheck,t)),this.fontInstalledMap[t]}},{key:"isFontDeservedToAdd",value:function(t){return""!==(t=t.toLowerCase())&&this.isFontInstalled(t)&&-1===m.genericFontFamilies.indexOf(t)}},{key:"colorPalette",value:function(t,e,n,o){var r=this;return this.ui.buttonGroup({className:"note-color "+t,children:[this.button({className:"note-current-color-button",contents:this.ui.icon(this.options.icons.font+" note-recent-color"),tooltip:e,click:function(t){var e=i()(t.currentTarget);n&&o?r.context.invoke("editor.color",{backColor:e.attr("data-backColor"),foreColor:e.attr("data-foreColor")}):n?r.context.invoke("editor.color",{backColor:e.attr("data-backColor")}):o&&r.context.invoke("editor.color",{foreColor:e.attr("data-foreColor")})},callback:function(t){var e=t.find(".note-recent-color");n&&(e.css("background-color",r.options.colorButton.backColor),t.attr("data-backColor",r.options.colorButton.backColor)),o?(e.css("color",r.options.colorButton.foreColor),t.attr("data-foreColor",r.options.colorButton.foreColor)):e.css("color","transparent")}}),this.button({className:"dropdown-toggle",contents:this.ui.dropdownButtonContents("",this.options),tooltip:this.lang.color.more,data:{toggle:"dropdown"}}),this.ui.dropdown({items:(n?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.background+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">',this.lang.color.transparent,"</button>","</div>",'<div class="note-holder" data-event="backColor">\x3c!-- back colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.backColor+'" data-event="backColorPalette">',"</div>",'<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>',"</div>"].join(""):"")+(o?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.foreground+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">',this.lang.color.resetToDefault,"</button>","</div>",'<div class="note-holder" data-event="foreColor">\x3c!-- fore colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.foreColor+'" data-event="foreColorPalette">',"</div>",'<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>',"</div>"].join(""):""),callback:function(t){t.find(".note-holder").each((function(t,e){var n=i()(e);n.append(r.ui.palette({colors:r.options.colors,colorsName:r.options.colorsName,eventName:n.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())}));var e=[["#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]];t.find(".note-holder-custom").each((function(t,n){var o=i()(n);o.append(r.ui.palette({colors:e,colorsName:e,eventName:o.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())})),t.find("input[type=color]").each((function(e,n){i()(n).change((function(){var e=t.find("#"+i()(this).data("event")).find(".note-color-btn").first(),n=this.value.toUpperCase();e.css("background-color",n).attr("aria-label",n).attr("data-value",n).attr("data-original-title",n),e.click()}))}))},click:function(e){e.stopPropagation();var n=i()("."+t).find(".note-dropdown-menu"),o=i()(e.target),a=o.data("event"),s=o.attr("data-value");if("openPalette"===a){var l=n.find("#"+s),c=i()(n.find("#"+l.data("event")).find(".note-color-row")[0]),u=c.find(".note-color-btn").last().detach(),d=l.val();u.css("background-color",d).attr("aria-label",d).attr("data-value",d).attr("data-original-title",d),c.prepend(u),l.click()}else{if(C.contains(["backColor","foreColor"],a)){var h="backColor"===a?"background-color":"color",f=o.closest(".note-color").find(".note-recent-color"),p=o.closest(".note-color").find(".note-current-color-button");f.css(h,s),p.attr("data-"+a,s)}r.context.invoke("editor."+a,s)}}})]}).render()}},{key:"addToolbarButtons",value:function(){var t=this;this.context.memo("button.style",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic),t.options),tooltip:t.lang.style.style,data:{toggle:"dropdown"}}),t.ui.dropdown({className:"dropdown-style",items:t.options.styleTags,title:t.lang.style.style,template:function(e){"string"==typeof e&&(e={tag:e,title:Object.prototype.hasOwnProperty.call(t.lang.style,e)?t.lang.style[e]:e});var n=e.tag,o=e.title;return"<"+n+(e.style?' style="'+e.style+'" ':"")+(e.className?' class="'+e.className+'"':"")+">"+o+"</"+n+">"},click:t.context.createInvokeHandler("editor.formatBlock")})]).render()}));for(var e=function(e,n){var o=t.options.styleTags[e];t.context.memo("button.style."+o,(function(){return t.button({className:"note-btn-style-"+o,contents:'<div data-value="'+o+'">'+o.toUpperCase()+"</div>",tooltip:t.lang.style[o],click:t.context.createInvokeHandler("editor.formatBlock")}).render()}))},n=0,o=this.options.styleTags.length;n<o;n++)e(n);this.context.memo("button.bold",(function(){return t.button({className:"note-btn-bold",contents:t.ui.icon(t.options.icons.bold),tooltip:t.lang.font.bold+t.representShortcut("bold"),click:t.context.createInvokeHandlerAndUpdateState("editor.bold")}).render()})),this.context.memo("button.italic",(function(){return t.button({className:"note-btn-italic",contents:t.ui.icon(t.options.icons.italic),tooltip:t.lang.font.italic+t.representShortcut("italic"),click:t.context.createInvokeHandlerAndUpdateState("editor.italic")}).render()})),this.context.memo("button.underline",(function(){return t.button({className:"note-btn-underline",contents:t.ui.icon(t.options.icons.underline),tooltip:t.lang.font.underline+t.representShortcut("underline"),click:t.context.createInvokeHandlerAndUpdateState("editor.underline")}).render()})),this.context.memo("button.clear",(function(){return t.button({contents:t.ui.icon(t.options.icons.eraser),tooltip:t.lang.font.clear+t.representShortcut("removeFormat"),click:t.context.createInvokeHandler("editor.removeFormat")}).render()})),this.context.memo("button.strikethrough",(function(){return t.button({className:"note-btn-strikethrough",contents:t.ui.icon(t.options.icons.strikethrough),tooltip:t.lang.font.strikethrough+t.representShortcut("strikethrough"),click:t.context.createInvokeHandlerAndUpdateState("editor.strikethrough")}).render()})),this.context.memo("button.superscript",(function(){return t.button({className:"note-btn-superscript",contents:t.ui.icon(t.options.icons.superscript),tooltip:t.lang.font.superscript,click:t.context.createInvokeHandlerAndUpdateState("editor.superscript")}).render()})),this.context.memo("button.subscript",(function(){return t.button({className:"note-btn-subscript",contents:t.ui.icon(t.options.icons.subscript),tooltip:t.lang.font.subscript,click:t.context.createInvokeHandlerAndUpdateState("editor.subscript")}).render()})),this.context.memo("button.fontname",(function(){var e=t.context.invoke("editor.currentStyle");return t.options.addDefaultFonts&&i.a.each(e["font-family"].split(","),(function(e,n){n=n.trim().replace(/['"]+/g,""),t.isFontDeservedToAdd(n)&&-1===t.options.fontNames.indexOf(n)&&t.options.fontNames.push(n)})),t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontname"></span>',t.options),tooltip:t.lang.font.name,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontname",checkClassName:t.options.icons.menuCheck,items:t.options.fontNames.filter(t.isFontInstalled.bind(t)),title:t.lang.font.name,template:function(t){return'<span style="font-family: '+m.validFontName(t)+'">'+t+"</span>"},click:t.context.createInvokeHandlerAndUpdateState("editor.fontName")})]).render()})),this.context.memo("button.fontsize",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>',t.options),tooltip:t.lang.font.size,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsize",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizes,title:t.lang.font.size,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSize")})]).render()})),this.context.memo("button.fontsizeunit",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>',t.options),tooltip:t.lang.font.sizeunit,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsizeunit",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizeUnits,title:t.lang.font.sizeunit,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit")})]).render()})),this.context.memo("button.color",(function(){return t.colorPalette("note-color-all",t.lang.color.recent,!0,!0)})),this.context.memo("button.forecolor",(function(){return t.colorPalette("note-color-fore",t.lang.color.foreground,!1,!0)})),this.context.memo("button.backcolor",(function(){return t.colorPalette("note-color-back",t.lang.color.background,!0,!1)})),this.context.memo("button.ul",(function(){return t.button({contents:t.ui.icon(t.options.icons.unorderedlist),tooltip:t.lang.lists.unordered+t.representShortcut("insertUnorderedList"),click:t.context.createInvokeHandler("editor.insertUnorderedList")}).render()})),this.context.memo("button.ol",(function(){return t.button({contents:t.ui.icon(t.options.icons.orderedlist),tooltip:t.lang.lists.ordered+t.representShortcut("insertOrderedList"),click:t.context.createInvokeHandler("editor.insertOrderedList")}).render()}));var r=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut("justifyLeft"),click:this.context.createInvokeHandler("editor.justifyLeft")}),a=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut("justifyCenter"),click:this.context.createInvokeHandler("editor.justifyCenter")}),s=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut("justifyRight"),click:this.context.createInvokeHandler("editor.justifyRight")}),l=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut("justifyFull"),click:this.context.createInvokeHandler("editor.justifyFull")}),c=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut("outdent"),click:this.context.createInvokeHandler("editor.outdent")}),u=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut("indent"),click:this.context.createInvokeHandler("editor.indent")});this.context.memo("button.justifyLeft",g.invoke(r,"render")),this.context.memo("button.justifyCenter",g.invoke(a,"render")),this.context.memo("button.justifyRight",g.invoke(s,"render")),this.context.memo("button.justifyFull",g.invoke(l,"render")),this.context.memo("button.outdent",g.invoke(c,"render")),this.context.memo("button.indent",g.invoke(u,"render")),this.context.memo("button.paragraph",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft),t.options),tooltip:t.lang.paragraph.paragraph,data:{toggle:"dropdown"}}),t.ui.dropdown([t.ui.buttonGroup({className:"note-align",children:[r,a,s,l]}),t.ui.buttonGroup({className:"note-list",children:[c,u]})])]).render()})),this.context.memo("button.height",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight),t.options),tooltip:t.lang.font.height,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({items:t.options.lineHeights,checkClassName:t.options.icons.menuCheck,className:"dropdown-line-height",title:t.lang.font.height,click:t.context.createInvokeHandler("editor.lineHeight")})]).render()})),this.context.memo("button.table",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table),t.options),tooltip:t.lang.table.table,data:{toggle:"dropdown"}}),t.ui.dropdown({title:t.lang.table.table,className:"note-table",items:['<div class="note-dimension-picker">','<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>','<div class="note-dimension-picker-highlighted"></div>','<div class="note-dimension-picker-unhighlighted"></div>',"</div>",'<div class="note-dimension-display">1 x 1</div>'].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.options.insertTableMaxSize.col+"em",height:t.options.insertTableMaxSize.row+"em"}).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove",t.tableMoveHandler.bind(t))}}).render()})),this.context.memo("button.link",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.link+t.representShortcut("linkDialog.show"),click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.picture",(function(){return t.button({contents:t.ui.icon(t.options.icons.picture),tooltip:t.lang.image.image,click:t.context.createInvokeHandler("imageDialog.show")}).render()})),this.context.memo("button.video",(function(){return t.button({contents:t.ui.icon(t.options.icons.video),tooltip:t.lang.video.video,click:t.context.createInvokeHandler("videoDialog.show")}).render()})),this.context.memo("button.hr",(function(){return t.button({contents:t.ui.icon(t.options.icons.minus),tooltip:t.lang.hr.insert+t.representShortcut("insertHorizontalRule"),click:t.context.createInvokeHandler("editor.insertHorizontalRule")}).render()})),this.context.memo("button.fullscreen",(function(){return t.button({className:"btn-fullscreen note-codeview-keep",contents:t.ui.icon(t.options.icons.arrowsAlt),tooltip:t.lang.options.fullscreen,click:t.context.createInvokeHandler("fullscreen.toggle")}).render()})),this.context.memo("button.codeview",(function(){return t.button({className:"btn-codeview note-codeview-keep",contents:t.ui.icon(t.options.icons.code),tooltip:t.lang.options.codeview,click:t.context.createInvokeHandler("codeview.toggle")}).render()})),this.context.memo("button.redo",(function(){return t.button({contents:t.ui.icon(t.options.icons.redo),tooltip:t.lang.history.redo+t.representShortcut("redo"),click:t.context.createInvokeHandler("editor.redo")}).render()})),this.context.memo("button.undo",(function(){return t.button({contents:t.ui.icon(t.options.icons.undo),tooltip:t.lang.history.undo+t.representShortcut("undo"),click:t.context.createInvokeHandler("editor.undo")}).render()})),this.context.memo("button.help",(function(){return t.button({contents:t.ui.icon(t.options.icons.question),tooltip:t.lang.options.help,click:t.context.createInvokeHandler("helpDialog.show")}).render()}))}},{key:"addImagePopoverButtons",value:function(){var t=this;this.context.memo("button.resizeFull",(function(){return t.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:t.lang.image.resizeFull,click:t.context.createInvokeHandler("editor.resize","1")}).render()})),this.context.memo("button.resizeHalf",(function(){return t.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:t.lang.image.resizeHalf,click:t.context.createInvokeHandler("editor.resize","0.5")}).render()})),this.context.memo("button.resizeQuarter",(function(){return t.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:t.lang.image.resizeQuarter,click:t.context.createInvokeHandler("editor.resize","0.25")}).render()})),this.context.memo("button.resizeNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.resizeNone,click:t.context.createInvokeHandler("editor.resize","0")}).render()})),this.context.memo("button.floatLeft",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatLeft),tooltip:t.lang.image.floatLeft,click:t.context.createInvokeHandler("editor.floatMe","left")}).render()})),this.context.memo("button.floatRight",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatRight),tooltip:t.lang.image.floatRight,click:t.context.createInvokeHandler("editor.floatMe","right")}).render()})),this.context.memo("button.floatNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.floatNone,click:t.context.createInvokeHandler("editor.floatMe","none")}).render()})),this.context.memo("button.removeMedia",(function(){return t.button({contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.image.remove,click:t.context.createInvokeHandler("editor.removeMedia")}).render()}))}},{key:"addLinkPopoverButtons",value:function(){var t=this;this.context.memo("button.linkDialogShow",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.edit,click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.unlink",(function(){return t.button({contents:t.ui.icon(t.options.icons.unlink),tooltip:t.lang.link.unlink,click:t.context.createInvokeHandler("editor.unlink")}).render()}))}},{key:"addTablePopoverButtons",value:function(){var t=this;this.context.memo("button.addRowUp",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowAbove),tooltip:t.lang.table.addRowAbove,click:t.context.createInvokeHandler("editor.addRow","top")}).render()})),this.context.memo("button.addRowDown",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowBelow),tooltip:t.lang.table.addRowBelow,click:t.context.createInvokeHandler("editor.addRow","bottom")}).render()})),this.context.memo("button.addColLeft",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colBefore),tooltip:t.lang.table.addColLeft,click:t.context.createInvokeHandler("editor.addCol","left")}).render()})),this.context.memo("button.addColRight",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colAfter),tooltip:t.lang.table.addColRight,click:t.context.createInvokeHandler("editor.addCol","right")}).render()})),this.context.memo("button.deleteRow",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowRemove),tooltip:t.lang.table.delRow,click:t.context.createInvokeHandler("editor.deleteRow")}).render()})),this.context.memo("button.deleteCol",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colRemove),tooltip:t.lang.table.delCol,click:t.context.createInvokeHandler("editor.deleteCol")}).render()})),this.context.memo("button.deleteTable",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.table.delTable,click:t.context.createInvokeHandler("editor.deleteTable")}).render()}))}},{key:"build",value:function(t,e){for(var n=0,o=e.length;n<o;n++){for(var i=e[n],r=Array.isArray(i)?i[0]:i,a=Array.isArray(i)?1===i.length?[i[0]]:i[1]:[i],s=this.ui.buttonGroup({className:"note-"+r}).render(),l=0,c=a.length;l<c;l++){var u=this.context.memo("button."+a[l]);u&&s.append("function"==typeof u?u(this.context):u)}s.appendTo(t)}}},{key:"updateCurrentStyle",value:function(t){var e=this,n=t||this.$toolbar,o=this.context.invoke("editor.currentStyle");if(this.updateBtnStates(n,{".note-btn-bold":function(){return"bold"===o["font-bold"]},".note-btn-italic":function(){return"italic"===o["font-italic"]},".note-btn-underline":function(){return"underline"===o["font-underline"]},".note-btn-subscript":function(){return"subscript"===o["font-subscript"]},".note-btn-superscript":function(){return"superscript"===o["font-superscript"]},".note-btn-strikethrough":function(){return"strikethrough"===o["font-strikethrough"]}}),o["font-family"]){var r=o["font-family"].split(",").map((function(t){return t.replace(/[\'\"]/g,"").replace(/\s+$/,"").replace(/^\s+/,"")})),a=C.find(r,this.isFontInstalled.bind(this));n.find(".dropdown-fontname a").each((function(t,e){var n=i()(e),o=n.data("value")+""==a+"";n.toggleClass("checked",o)})),n.find(".note-current-fontname").text(a).css("font-family",a)}if(o["font-size"]){var s=o["font-size"];n.find(".dropdown-fontsize a").each((function(t,e){var n=i()(e),o=n.data("value")+""==s+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsize").text(s);var l=o["font-size-unit"];n.find(".dropdown-fontsizeunit a").each((function(t,e){var n=i()(e),o=n.data("value")+""==l+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsizeunit").text(l)}if(o["line-height"]){var c=o["line-height"];n.find(".dropdown-line-height li a").each((function(t,n){var o=i()(n).data("value")+""==c+"";e.className=o?"checked":""}))}}},{key:"updateBtnStates",value:function(t,e){var n=this;i.a.each(e,(function(e,o){n.ui.toggleBtnActive(t.find(e),o())}))}},{key:"tableMoveHandler",value:function(t){var e,n=i()(t.target.parentNode),o=n.next(),r=n.find(".note-dimension-picker-mousecatcher"),a=n.find(".note-dimension-picker-highlighted"),s=n.find(".note-dimension-picker-unhighlighted");if(void 0===t.offsetX){var l=i()(t.target).offset();e={x:t.pageX-l.left,y:t.pageY-l.top}}else e={x:t.offsetX,y:t.offsetY};var c=Math.ceil(e.x/18)||1,u=Math.ceil(e.y/18)||1;a.css({width:c+"em",height:u+"em"}),r.data("value",c+"x"+u),c>3&&c<this.options.insertTableMaxSize.col&&s.css({width:c+1+"em"}),u>3&&u<this.options.insertTableMaxSize.row&&s.css({height:u+1+"em"}),o.html(c+" x "+u)}}])&&ae(e.prototype,n),o&&ae(e,o),t}();function le(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ce=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$window=i()(window),this.$document=i()(document),this.ui=i.a.summernote.ui,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$statusbar=e.layoutInfo.statusbar,this.options=e.options,this.isFollowing=!1,this.followScroll=this.followScroll.bind(this)}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!this.options.airMode}},{key:"initialize",value:function(){var t=this;this.options.toolbar=this.options.toolbar||[],this.options.toolbar.length?this.context.invoke("buttons.build",this.$toolbar,this.options.toolbar):this.$toolbar.hide(),this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.changeContainer(!1),this.$note.on("summernote.keyup summernote.mouseup summernote.change",(function(){t.context.invoke("buttons.updateCurrentStyle")})),this.context.invoke("buttons.updateCurrentStyle"),this.options.followingToolbar&&this.$window.on("scroll resize",this.followScroll)}},{key:"destroy",value:function(){this.$toolbar.children().remove(),this.options.followingToolbar&&this.$window.off("scroll resize",this.followScroll)}},{key:"followScroll",value:function(){if(this.$editor.hasClass("fullscreen"))return!1;var t=this.$editor.outerHeight(),e=this.$editor.width(),n=this.$toolbar.height(),o=this.$statusbar.height(),r=0;this.options.otherStaticBar&&(r=i()(this.options.otherStaticBar).outerHeight());var a=this.$document.scrollTop(),s=this.$editor.offset().top,l=s-r,c=s+t-r-n-o;!this.isFollowing&&a>l&&a<c-n?(this.isFollowing=!0,this.$editable.css({marginTop:this.$toolbar.outerHeight()}),this.$toolbar.css({position:"fixed",top:r,width:e,zIndex:1e3})):this.isFollowing&&(a<l||a>c)&&(this.isFollowing=!1,this.$toolbar.css({position:"relative",top:0,width:"100%",zIndex:"auto"}),this.$editable.css({marginTop:""}))}},{key:"changeContainer",value:function(t){t?this.$toolbar.prependTo(this.$editor):this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.options.followingToolbar&&this.followScroll()}},{key:"updateFullscreen",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"),t),this.changeContainer(t)}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"),t),t?this.deactivate():this.activate()}},{key:"activate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!0)}},{key:"deactivate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!1)}}])&&le(e.prototype,n),o&&le(e,o),t}();function ue(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var de=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo,e.memo("help.linkDialog.show",this.options.langInfo.help["linkDialog.show"])}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group">','<label for="note-dialog-link-txt-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.textToDisplay,"</label>"),'<input id="note-dialog-link-txt-'.concat(this.options.id,'" class="note-link-text form-control note-form-control note-input" type="text"/>'),"</div>",'<div class="form-group note-form-group">','<label for="note-dialog-link-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.url,"</label>"),'<input id="note-dialog-link-url-'.concat(this.options.id,'" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'),"</div>",this.options.disableLinkTarget?"":i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-open-in-new-window",text:this.lang.link.openInNewWindow,checked:!0}).render()).html(),i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-use-protocol",text:this.lang.link.useProtocol,checked:!0}).render()).html()].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-link-btn",'" value="').concat(this.lang.link.insert,'" disabled>');this.$dialog=this.ui.dialog({className:"link-dialog",title:this.lang.link.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"toggleLinkBtn",value:function(t,e,n){this.ui.toggleBtn(t,e.val()&&n.val())}},{key:"showLinkDialog",value:function(t){var e=this;return i.a.Deferred((function(n){var o=e.$dialog.find(".note-link-text"),i=e.$dialog.find(".note-link-url"),r=e.$dialog.find(".note-link-btn"),a=e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),s=e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");e.ui.onDialogShown(e.$dialog,(function(){e.context.triggerEvent("dialog.shown"),!t.url&&g.isValidUrl(t.text)&&(t.url=t.text),o.on("input paste propertychange",(function(){t.text=o.val(),e.toggleLinkBtn(r,o,i)})).val(t.text),i.on("input paste propertychange",(function(){t.text||o.val(i.val()),e.toggleLinkBtn(r,o,i)})).val(t.url),m.isSupportTouch||i.trigger("focus"),e.toggleLinkBtn(r,o,i),e.bindEnterKey(i,r),e.bindEnterKey(o,r);var l=void 0!==t.isNewWindow?t.isNewWindow:e.context.options.linkTargetBlank;a.prop("checked",l);var c=!t.url&&e.context.options.useProtocol;s.prop("checked",c),r.one("click",(function(r){r.preventDefault(),n.resolve({range:t.range,url:i.val(),text:o.val(),isNewWindow:a.is(":checked"),checkProtocol:s.is(":checked")}),e.ui.hideDialog(e.$dialog)}))})),e.ui.onDialogHidden(e.$dialog,(function(){o.off(),i.off(),r.off(),"pending"===n.state()&&n.reject()})),e.ui.showDialog(e.$dialog)})).promise()}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getLinkInfo");this.context.invoke("editor.saveRange"),this.showLinkDialog(e).then((function(e){t.context.invoke("editor.restoreRange"),t.context.invoke("editor.createLink",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}}])&&ue(e.prototype,n),o&&ue(e,o),t}();function he(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var fe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.keyup summernote.mouseup summernote.change summernote.scroll":function(){n.update()},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.link)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-link-popover",callback:function(t){t.find(".popover-content,.note-popover-content").prepend('<span><a target="_blank"></a> </span>')}}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.link),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(){if(this.context.invoke("editor.hasFocus")){var t=this.context.invoke("editor.getLastRange");if(t.isCollapsed()&&t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor),n=i()(e).attr("href");this.$popover.find("a").attr("href",n).text(n);var o=pt.posFromPlaceholder(e),r=i()(this.options.container).offset();o.top-=r.top,o.left-=r.left,this.$popover.css({display:"block",left:o.left,top:o.top})}else this.hide()}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&he(e.prototype,n),o&&he(e,o),t}();function pe(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var me=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t="";if(this.options.maximumImageFileSize){var e=Math.floor(Math.log(this.options.maximumImageFileSize)/Math.log(1024)),n=1*(this.options.maximumImageFileSize/Math.pow(1024,e)).toFixed(2)+" "+" KMGTP"[e]+"B";t="<small>".concat(this.lang.image.maximumFileSize+" : "+n,"</small>")}var o=this.options.dialogsInBody?this.$body:this.options.container,i=['<div class="form-group note-form-group note-group-select-from-files">','<label for="note-dialog-image-file-'+this.options.id+'" class="note-form-label">'+this.lang.image.selectFromFiles+"</label>",'<input id="note-dialog-image-file-'+this.options.id+'" class="note-image-input form-control-file note-form-control note-input" ',' type="file" name="files" accept="image/*" multiple="multiple"/>',t,"</div>",'<div class="form-group note-group-image-url">','<label for="note-dialog-image-url-'+this.options.id+'" class="note-form-label">'+this.lang.image.url+"</label>",'<input id="note-dialog-image-url-'+this.options.id+'" class="note-image-url form-control note-form-control note-input" type="text"/>',"</div>"].join(""),r='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-image-btn",'" value="').concat(this.lang.image.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:i,footer:r}).render().appendTo(o)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showImageDialog().then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange"),"string"==typeof e?t.options.callbacks.onImageLinkInsert?t.context.triggerEvent("image.link.insert",e):t.context.invoke("editor.insertImage",e):t.context.invoke("editor.insertImagesOrCallback",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showImageDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-image-input"),o=t.$dialog.find(".note-image-url"),i=t.$dialog.find(".note-image-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.replaceWith(n.clone().on("change",(function(t){e.resolve(t.target.files||t.target.value)})).val("")),o.on("input paste propertychange",(function(){t.ui.toggleBtn(i,o.val())})).val(""),m.isSupportTouch||o.trigger("focus"),i.click((function(t){t.preventDefault(),e.resolve(o.val())})),t.bindEnterKey(o,i)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),i.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&pe(e.prototype,n),o&&pe(e,o),t}();function ve(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ge=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.editable=e.layoutInfo.editable[0],this.options=e.options,this.events={"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.image)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-image-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.image),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t,e){if(pt.isImg(t)){var n=i()(t).offset(),o=i()(this.options.container).offset(),r={};this.options.popatmouse?(r.left=e.pageX-20,r.top=e.pageY):r=n,r.top-=o.top,r.left-=o.left,this.$popover.css({display:"block",left:r.left,top:r.top})}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&ve(e.prototype,n),o&&ve(e,o),t}();function be(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ke=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.mousedown":function(t,e){n.update(e.target)},"summernote.keyup summernote.scroll summernote.change":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.table)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-table-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.table),m.isFF&&document.execCommand("enableInlineTableEditing",!1,!1),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){if(this.context.isDisabled())return!1;var e=pt.isCell(t);if(e){var n=pt.posFromPlaceholder(t),o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:n.left,top:n.top})}else this.hide();return e}},{key:"hide",value:function(){this.$popover.hide()}}])&&be(e.prototype,n),o&&be(e,o),t}();function ye(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var we=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group row-fluid">','<label for="note-dialog-video-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.video.url,' <small class="text-muted">').concat(this.lang.video.providers,"</small></label>"),'<input id="note-dialog-video-url-'.concat(this.options.id,'" class="note-video-url form-control note-form-control note-input" type="text"/>'),"</div>"].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-video-btn",'" value="').concat(this.lang.video.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"createVideoNode",value:function(t){var e,n=t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),o=t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),r=t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),a=t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),s=t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),l=t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),c=t.match(/\/\/v\.qq\.com.*?vid=(.+)/),u=t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),d=t.match(/^.+.(mp4|m4v)$/),h=t.match(/^.+.(ogg|ogv)$/),f=t.match(/^.+.(webm)$/),p=t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);if(n&&11===n[1].length){var m=n[1],v=0;if(void 0!==n[2]){var g=n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);if(g)for(var b=[3600,60,1],k=0,y=b.length;k<y;k++)v+=void 0!==g[k+1]?b[k]*parseInt(g[k+1],10):0}e=i()("<iframe>").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+m+(v>0?"?start="+v:"")).attr("width","640").attr("height","360")}else if(o&&o[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src","https://instagram.com/p/"+o[1]+"/embed/").attr("width","612").attr("height","710").attr("scrolling","no").attr("allowtransparency","true");else if(r&&r[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src",r[0]+"/embed/simple").attr("width","600").attr("height","600").attr("class","vine-embed");else if(a&&a[3].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("src","//player.vimeo.com/video/"+a[3]).attr("width","640").attr("height","360");else if(s&&s[2].length)e=i()("<iframe>").attr("frameborder",0).attr("src","//www.dailymotion.com/embed/video/"+s[2]).attr("width","640").attr("height","360");else if(l&&l[1].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","498").attr("width","510").attr("src","//player.youku.com/embed/"+l[1]);else if(c&&c[1].length||u&&u[2].length){var w=c&&c[1].length?c[1]:u[2];e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","310").attr("width","500").attr("src","https://v.qq.com/txp/iframe/player.html?vid="+w+"&auto=0")}else if(d||h||f)e=i()("<video controls>").attr("src",t).attr("width","640").attr("height","360");else{if(!p||!p[0].length)return!1;e=i()("<iframe>").attr("frameborder",0).attr("src","https://www.facebook.com/plugins/video.php?href="+encodeURIComponent(p[0])+"&show_text=0&width=560").attr("width","560").attr("height","301").attr("scrolling","no").attr("allowtransparency","true")}return e.addClass("note-video-clip"),e[0]}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getSelectedText");this.context.invoke("editor.saveRange"),this.showVideoDialog(e).then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange");var n=t.createVideoNode(e);n&&t.context.invoke("editor.insertNode",n)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showVideoDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-video-url"),o=t.$dialog.find(".note-video-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.on("input paste propertychange",(function(){t.ui.toggleBtn(o,n.val())})),m.isSupportTouch||n.trigger("focus"),o.click((function(t){t.preventDefault(),e.resolve(n.val())})),t.bindEnterKey(n,o)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&ye(e.prototype,n),o&&ye(e,o),t}();function Ce(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var xe=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<p class="text-center">','<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ','<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ','<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>',"</p>"].join("");this.$dialog=this.ui.dialog({title:this.lang.options.help,fade:this.options.dialogsFade,body:this.createShortcutList(),footer:e,callback:function(t){t.find(".modal-body,.note-modal-body").css({"max-height":300,overflow:"scroll"})}}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"createShortcutList",value:function(){var t=this,e=this.options.keyMap[m.isMac?"mac":"pc"];return Object.keys(e).map((function(n){var o=e[n],r=i()('<div><div class="help-list-item"></div></div>');return r.append(i()("<label><kbd>"+n+"</kdb></label>").css({width:180,"margin-right":10})).append(i()("<span/>").html(t.context.memo("help."+o)||o)),r.html()})).join("")}},{key:"showHelpDialog",value:function(){var t=this;return i.a.Deferred((function(e){t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),e.resolve()})),t.ui.showDialog(t.$dialog)})).promise()}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showHelpDialog().then((function(){t.context.invoke("editor.restoreRange")}))}}])&&Ce(e.prototype,n),o&&Ce(e,o),t}();function Se(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Te=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.hidable=!0,this.onContextmenu=!1,this.pageX=null,this.pageY=null,this.events={"summernote.contextmenu":function(t){n.options.editing&&(t.preventDefault(),t.stopPropagation(),n.onContextmenu=!0,n.update(!0))},"summernote.mousedown":function(t,e){n.pageX=e.pageX,n.pageY=e.pageY},"summernote.keyup summernote.mouseup summernote.scroll":function(t,e){n.options.editing&&!n.onContextmenu&&(n.pageX=e.pageX,n.pageY=e.pageY,n.update()),n.onContextmenu=!1},"summernote.disable summernote.change summernote.dialog.shown summernote.blur":function(){n.hide()},"summernote.focusout":function(){n.$popover.is(":active,:focus")||n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.options.airMode&&!C.isEmpty(this.options.popover.air)}},{key:"initialize",value:function(){var t=this;this.$popover=this.ui.popover({className:"note-air-popover"}).render().appendTo(this.options.container);var e=this.$popover.find(".popover-content");this.context.invoke("buttons.build",e,this.options.popover.air),this.$popover.on("mousedown",(function(){t.hidable=!1})),this.$popover.on("mouseup",(function(){t.hidable=!0}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){var e=this.context.invoke("editor.currentStyle");if(!e.range||e.range.isCollapsed()&&!t)this.hide();else{var n={left:this.pageX,top:this.pageY},o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:Math.max(n.left,0)+-5,top:n.top+5}),this.context.invoke("buttons.updateCurrentStyle",this.$popover)}}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$popover.find(".btn-codeview"),t),t&&this.hide()}},{key:"hide",value:function(){this.hidable&&this.$popover.hide()}}])&&Se(e.prototype,n),o&&Se(e,o),t}();function Ee(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var $e=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$editable=e.layoutInfo.editable,this.options=e.options,this.hint=this.options.hint||[],this.direction=this.options.hintDirection||"bottom",this.hints=Array.isArray(this.hint)?this.hint:[this.hint],this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.hints.length>0}},{key:"initialize",value:function(){var t=this;this.lastWordRange=null,this.matchingWord=null,this.$popover=this.ui.popover({className:"note-hint-popover",hideArrow:!0,direction:""}).render().appendTo(this.options.container),this.$popover.hide(),this.$content=this.$popover.find(".popover-content,.note-popover-content"),this.$content.on("click",".note-hint-item",(function(e){t.$content.find(".active").removeClass("active"),i()(e.currentTarget).addClass("active"),t.replace()})),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"selectItem",value:function(t){this.$content.find(".active").removeClass("active"),t.addClass("active"),this.$content[0].scrollTop=t[0].offsetTop-this.$content.innerHeight()/2}},{key:"moveDown",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.next();if(e.length)this.selectItem(e);else{var n=t.parent().next();n.length||(n=this.$content.find(".note-hint-group").first()),this.selectItem(n.find(".note-hint-item").first())}}},{key:"moveUp",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.prev();if(e.length)this.selectItem(e);else{var n=t.parent().prev();n.length||(n=this.$content.find(".note-hint-group").last()),this.selectItem(n.find(".note-hint-item").last())}}},{key:"replace",value:function(){var t=this.$content.find(".note-hint-item.active");if(t.length){var e=this.nodeFromItem(t);if(null!==this.matchingWord&&0===this.matchingWord.length)this.lastWordRange.so=this.lastWordRange.eo;else if(null!==this.matchingWord&&this.matchingWord.length>0&&!this.lastWordRange.isCollapsed()){var n=this.lastWordRange.eo-this.lastWordRange.so-this.matchingWord.length;n>0&&(this.lastWordRange.so+=n)}if(this.lastWordRange.insertNode(e),"next"===this.options.hintSelect){var o=document.createTextNode("");i()(e).after(o),wt.createFromNodeBefore(o).select()}else wt.createFromNodeAfter(e).select();this.lastWordRange=null,this.hide(),this.context.invoke("editor.focus")}}},{key:"nodeFromItem",value:function(t){var e=this.hints[t.data("index")],n=t.data("item"),o=e.content?e.content(n):n;return"string"==typeof o&&(o=pt.createText(o)),o}},{key:"createItemTemplates",value:function(t,e){var n=this.hints[t];return e.map((function(e){var o=i()('<div class="note-hint-item"/>');return o.append(n.template?n.template(e):e+""),o.data({index:t,item:e}),o}))}},{key:"handleKeydown",value:function(t){this.$popover.is(":visible")&&(t.keyCode===xt.code.ENTER?(t.preventDefault(),this.replace()):t.keyCode===xt.code.UP?(t.preventDefault(),this.moveUp()):t.keyCode===xt.code.DOWN&&(t.preventDefault(),this.moveDown()))}},{key:"searchKeyword",value:function(t,e,n){var o=this.hints[t];if(o&&o.match.test(e)&&o.search){var i=o.match.exec(e);this.matchingWord=i[0],o.search(i[1],n)}else n()}},{key:"createGroup",value:function(t,e){var n=this,o=i()('<div class="note-hint-group note-hint-group-'+t+'"></div>');return this.searchKeyword(t,e,(function(e){(e=e||[]).length&&(o.html(n.createItemTemplates(t,e)),n.show())})),o}},{key:"handleKeyup",value:function(t){var e=this;if(!C.contains([xt.code.ENTER,xt.code.UP,xt.code.DOWN],t.keyCode)){var n,o,r=this.context.invoke("editor.getLastRange");if("words"===this.options.hintMode){if(n=r.getWordsRange(r),o=n.toString(),this.hints.forEach((function(t){if(t.match.test(o))return n=r.getWordsMatchRange(t.match),!1})),!n)return void this.hide();o=n.toString()}else n=r.getWordRange(),o=n.toString();if(this.hints.length&&o){this.$content.empty();var a=g.rect2bnd(C.last(n.getClientRects())),s=i()(this.options.container).offset();a&&(a.top-=s.top,a.left-=s.left,this.$popover.hide(),this.lastWordRange=n,this.hints.forEach((function(t,n){t.match.test(o)&&e.createGroup(n,o).appendTo(e.$content)})),this.$content.find(".note-hint-item:first").addClass("active"),"top"===this.direction?this.$popover.css({left:a.left,top:a.top-this.$popover.outerHeight()-5}):this.$popover.css({left:a.left,top:a.top+a.height+5}))}else this.hide()}}},{key:"show",value:function(){this.$popover.show()}},{key:"hide",value:function(){this.$popover.hide()}}])&&Ee(e.prototype,n),o&&Ee(e,o),t}();i.a.summernote=i.a.extend(i.a.summernote,{version:"0.8.18",plugins:{},dom:pt,range:wt,lists:C,options:{langInfo:i.a.summernote.lang["en-US"],editing:!0,modules:{editor:Ht,clipboard:zt,dropzone:Ot,codeview:Kt,statusbar:qt,fullscreen:Gt,handle:Zt,hintPopover:$e,autoLink:Jt,autoSync:ee,autoReplace:oe,placeholder:re,buttons:se,toolbar:ce,linkDialog:de,linkPopover:fe,imageDialog:me,imagePopover:ge,tablePopover:ke,videoDialog:we,helpDialog:xe,airPopover:Te},buttons:{},lang:"en-US",followingToolbar:!1,toolbarPosition:"top",otherStaticBar:"",codeviewKeepButton:!1,toolbar:[["style",["style"]],["font",["bold","underline","clear"]],["fontname",["fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["table",["table"]],["insert",["link","picture","video"]],["view",["fullscreen","codeview","help"]]],popatmouse:!0,popover:{image:[["resize",["resizeFull","resizeHalf","resizeQuarter","resizeNone"]],["float",["floatLeft","floatRight","floatNone"]],["remove",["removeMedia"]]],link:[["link",["linkDialogShow","unlink"]]],table:[["add",["addRowDown","addRowUp","addColLeft","addColRight"]],["delete",["deleteRow","deleteCol","deleteTable"]]],air:[["color",["color"]],["font",["bold","underline","clear"]],["para",["ul","paragraph"]],["table",["table"]],["insert",["link","picture"]],["view",["fullscreen","codeview"]]]},airMode:!1,overrideContextMenu:!1,width:null,height:null,linkTargetBlank:!0,useProtocol:!0,defaultProtocol:"http://",focus:!1,tabDisabled:!1,tabSize:4,styleWithCSS:!1,shortcuts:!0,textareaAutoSync:!0,tooltip:"auto",container:null,maxTextLength:0,blockquoteBreakingLevel:2,spellCheck:!0,disableGrammar:!1,placeholder:null,inheritPlaceholder:!1,recordEveryKeystroke:!1,historyLimit:200,showDomainOnlyForAutolink:!1,hintMode:"word",hintSelect:"after",hintDirection:"bottom",styleTags:["p","blockquote","pre","h1","h2","h3","h4","h5","h6"],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Tahoma","Times New Roman","Verdana"],fontNamesIgnoreCheck:[],addDefaultFonts:!0,fontSizes:["8","9","10","11","12","14","18","24","36"],fontSizeUnits:["px","pt"],colors:[["#000000","#424242","#636363","#9C9C94","#CEC6CE","#EFEFEF","#F7F7F7","#FFFFFF"],["#FF0000","#FF9C00","#FFFF00","#00FF00","#00FFFF","#0000FF","#9C00FF","#FF00FF"],["#F7C6CE","#FFE7CE","#FFEFC6","#D6EFD6","#CEDEE7","#CEE7F7","#D6D6E7","#E7D6DE"],["#E79C9C","#FFC69C","#FFE79C","#B5D6A5","#A5C6CE","#9CC6EF","#B5A5D6","#D6A5BD"],["#E76363","#F7AD6B","#FFD663","#94BD7B","#73A5AD","#6BADDE","#8C7BC6","#C67BA5"],["#CE0000","#E79439","#EFC631","#6BA54A","#4A7B8C","#3984C6","#634AA5","#A54A7B"],["#9C0000","#B56308","#BD9400","#397B21","#104A5A","#085294","#311873","#731842"],["#630000","#7B3900","#846300","#295218","#083139","#003163","#21104A","#4A1031"]],colorsName:[["Black","Tundora","Dove Gray","Star Dust","Pale Slate","Gallery","Alabaster","White"],["Red","Orange Peel","Yellow","Green","Cyan","Blue","Electric Violet","Magenta"],["Azalea","Karry","Egg White","Zanah","Botticelli","Tropical Blue","Mischka","Twilight"],["Tonys Pink","Peach Orange","Cream Brulee","Sprout","Casper","Perano","Cold Purple","Careys Pink"],["Mandy","Rajah","Dandelion","Olivine","Gulf Stream","Viking","Blue Marguerite","Puce"],["Guardsman Red","Fire Bush","Golden Dream","Chelsea Cucumber","Smalt Blue","Boston Blue","Butterfly Bush","Cadillac"],["Sangria","Mai Tai","Buddha Gold","Forest Green","Eden","Venice Blue","Meteorite","Claret"],["Rosewood","Cinnamon","Olive","Parsley","Tiber","Midnight Blue","Valentino","Loulou"]],colorButton:{foreColor:"#000000",backColor:"#FFFF00"},lineHeights:["1.0","1.2","1.4","1.5","1.6","1.8","2.0","3.0"],tableClassName:"table table-bordered",insertTableMaxSize:{col:10,row:10},dialogsInBody:!1,dialogsFade:!1,maximumImageFileSize:null,callbacks:{onBeforeCommand:null,onBlur:null,onBlurCodeview:null,onChange:null,onChangeCodeview:null,onDialogShown:null,onEnter:null,onFocus:null,onImageLinkInsert:null,onImageUpload:null,onImageUploadError:null,onInit:null,onKeydown:null,onKeyup:null,onMousedown:null,onMouseup:null,onPaste:null,onScroll:null},codemirror:{mode:"text/html",htmlMode:!0,lineNumbers:!0},codeviewFilter:!1,codeviewFilterRegex:/<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,codeviewIframeFilter:!0,codeviewIframeWhitelistSrc:[],codeviewIframeWhitelistSrcBase:["www.youtube.com","www.youtube-nocookie.com","www.facebook.com","vine.co","instagram.com","player.vimeo.com","www.dailymotion.com","player.youku.com","v.qq.com"],keyMap:{pc:{ESC:"escape",ENTER:"insertParagraph","CTRL+Z":"undo","CTRL+Y":"redo",TAB:"tab","SHIFT+TAB":"untab","CTRL+B":"bold","CTRL+I":"italic","CTRL+U":"underline","CTRL+SHIFT+S":"strikethrough","CTRL+BACKSLASH":"removeFormat","CTRL+SHIFT+L":"justifyLeft","CTRL+SHIFT+E":"justifyCenter","CTRL+SHIFT+R":"justifyRight","CTRL+SHIFT+J":"justifyFull","CTRL+SHIFT+NUM7":"insertUnorderedList","CTRL+SHIFT+NUM8":"insertOrderedList","CTRL+LEFTBRACKET":"outdent","CTRL+RIGHTBRACKET":"indent","CTRL+NUM0":"formatPara","CTRL+NUM1":"formatH1","CTRL+NUM2":"formatH2","CTRL+NUM3":"formatH3","CTRL+NUM4":"formatH4","CTRL+NUM5":"formatH5","CTRL+NUM6":"formatH6","CTRL+ENTER":"insertHorizontalRule","CTRL+K":"linkDialog.show"},mac:{ESC:"escape",ENTER:"insertParagraph","CMD+Z":"undo","CMD+SHIFT+Z":"redo",TAB:"tab","SHIFT+TAB":"untab","CMD+B":"bold","CMD+I":"italic","CMD+U":"underline","CMD+SHIFT+S":"strikethrough","CMD+BACKSLASH":"removeFormat","CMD+SHIFT+L":"justifyLeft","CMD+SHIFT+E":"justifyCenter","CMD+SHIFT+R":"justifyRight","CMD+SHIFT+J":"justifyFull","CMD+SHIFT+NUM7":"insertUnorderedList","CMD+SHIFT+NUM8":"insertOrderedList","CMD+LEFTBRACKET":"outdent","CMD+RIGHTBRACKET":"indent","CMD+NUM0":"formatPara","CMD+NUM1":"formatH1","CMD+NUM2":"formatH2","CMD+NUM3":"formatH3","CMD+NUM4":"formatH4","CMD+NUM5":"formatH5","CMD+NUM6":"formatH6","CMD+ENTER":"insertHorizontalRule","CMD+K":"linkDialog.show"}},icons:{align:"note-icon-align",alignCenter:"note-icon-align-center",alignJustify:"note-icon-align-justify",alignLeft:"note-icon-align-left",alignRight:"note-icon-align-right",rowBelow:"note-icon-row-below",colBefore:"note-icon-col-before",colAfter:"note-icon-col-after",rowAbove:"note-icon-row-above",rowRemove:"note-icon-row-remove",colRemove:"note-icon-col-remove",indent:"note-icon-align-indent",outdent:"note-icon-align-outdent",arrowsAlt:"note-icon-arrows-alt",bold:"note-icon-bold",caret:"note-icon-caret",circle:"note-icon-circle",close:"note-icon-close",code:"note-icon-code",eraser:"note-icon-eraser",floatLeft:"note-icon-float-left",floatRight:"note-icon-float-right",font:"note-icon-font",frame:"note-icon-frame",italic:"note-icon-italic",link:"note-icon-link",unlink:"note-icon-chain-broken",magic:"note-icon-magic",menuCheck:"note-icon-menu-check",minus:"note-icon-minus",orderedlist:"note-icon-orderedlist",pencil:"note-icon-pencil",picture:"note-icon-picture",question:"note-icon-question",redo:"note-icon-redo",rollback:"note-icon-rollback",square:"note-icon-square",strikethrough:"note-icon-strikethrough",subscript:"note-icon-subscript",superscript:"note-icon-superscript",table:"note-icon-table",textHeight:"note-icon-text-height",trash:"note-icon-trash",underline:"note-icon-underline",undo:"note-icon-undo",unorderedlist:"note-icon-unorderedlist",video:"note-icon-video"}}})},51:function(t,e,n){"use strict";n.r(e);var o=n(0),i=n.n(o),r=n(1);function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var s=function(){function t(e,n){if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$node=e,this.options=i.a.extend({},{title:"",target:n.container,trigger:"hover focus",placement:"bottom"},n),this.$tooltip=i()(['<div class="note-tooltip">','<div class="note-tooltip-arrow"></div>','<div class="note-tooltip-content"></div>',"</div>"].join("")),"manual"!==this.options.trigger){var o=this.show.bind(this),r=this.hide.bind(this),a=this.toggle.bind(this);this.options.trigger.split(" ").forEach((function(t){"hover"===t?(e.off("mouseenter mouseleave"),e.on("mouseenter",o).on("mouseleave",r)):"click"===t?e.on("click",a):"focus"===t&&e.on("focus",o).on("blur",r)}))}}var e,n,o;return e=t,(n=[{key:"show",value:function(){var t=this.$node,e=t.offset(),n=i()(this.options.target).offset();e.top-=n.top,e.left-=n.left;var o=this.$tooltip,r=this.options.title||t.attr("title")||t.data("title"),a=this.options.placement||t.data("placement");o.addClass(a),o.find(".note-tooltip-content").text(r),o.appendTo(this.options.target);var s=t.outerWidth(),l=t.outerHeight(),c=o.outerWidth(),u=o.outerHeight();"bottom"===a?o.css({top:e.top+l,left:e.left+(s/2-c/2)}):"top"===a?o.css({top:e.top-u,left:e.left+(s/2-c/2)}):"left"===a?o.css({top:e.top+(l/2-u/2),left:e.left-c}):"right"===a&&o.css({top:e.top+(l/2-u/2),left:e.left+s}),o.addClass("in")}},{key:"hide",value:function(){var t=this;this.$tooltip.removeClass("in"),setTimeout((function(){t.$tooltip.remove()}),200)}},{key:"toggle",value:function(){this.$tooltip.hasClass("in")?this.hide():this.show()}}])&&a(e.prototype,n),o&&a(e,o),t}();function l(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var c=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$button=e,this.options=i.a.extend({},{target:n.container},n),this.setEvent()}var e,n,o;return e=t,(n=[{key:"setEvent",value:function(){var t=this;this.$button.on("click",(function(e){t.toggle(),e.stopImmediatePropagation()}))}},{key:"clear",value:function(){var t=i()(".note-btn-group.open");t.find(".note-btn.active").removeClass("active"),t.removeClass("open")}},{key:"show",value:function(){this.$button.addClass("active"),this.$button.parent().addClass("open");var t=this.$button.next(),e=t.offset(),n=t.outerWidth(),o=i()(window).width(),r=parseFloat(i()(this.options.target).css("margin-right"));e.left+n>o-r?t.css("margin-left",o-r-(e.left+n)):t.css("margin-left","")}},{key:"hide",value:function(){this.$button.removeClass("active"),this.$button.parent().removeClass("open")}},{key:"toggle",value:function(){var t=this.$button.parent().hasClass("open");this.clear(),t?this.hide():this.show()}}])&&l(e.prototype,n),o&&l(e,o),t}();i()(document).on("click",(function(t){i()(t.target).closest(".note-btn-group").length||(i()(".note-btn-group.open").removeClass("open"),i()(".note-btn-group .note-btn.active").removeClass("active"))})),i()(document).on("click.note-dropdown-menu",(function(t){i()(t.target).closest(".note-dropdown-menu").parent().removeClass("open"),i()(t.target).closest(".note-dropdown-menu").parent().find(".note-btn.active").removeClass("active")}));var u=c;function d(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var h=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$modal=e,this.$backdrop=i()('<div class="note-modal-backdrop"/>')}var e,n,o;return e=t,(n=[{key:"show",value:function(){var t=this;this.$backdrop.appendTo(document.body).show(),this.$modal.addClass("open").show(),this.$modal.trigger("note.modal.show"),this.$modal.off("click",".close").on("click",".close",this.hide.bind(this)),this.$modal.on("keydown",(function(e){27===e.which&&(e.preventDefault(),t.hide())}))}},{key:"hide",value:function(){this.$modal.removeClass("open").hide(),this.$backdrop.hide(),this.$modal.trigger("note.modal.hide"),this.$modal.off("keydown")}}])&&d(e.prototype,n),o&&d(e,o),t}(),f=r.a.create('<div class="note-editor note-frame"/>'),p=r.a.create('<div class="note-toolbar" role="toolbar"/>'),m=r.a.create('<div class="note-editing-area"/>'),v=r.a.create('<textarea class="note-codable" aria-multiline="true"/>'),g=r.a.create('<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>'),b=r.a.create(['<output class="note-status-output" role="status" aria-live="polite"></output>','<div class="note-statusbar" role="status">','<div class="note-resizebar" aria-label="resize">','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>',"</div>","</div>"].join("")),k=r.a.create('<div class="note-editor note-airframe"/>'),y=r.a.create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>','<output class="note-status-output" role="status" aria-live="polite"></output>'].join("")),w=r.a.create('<div class="note-btn-group">'),C=r.a.create('<button type="button" class="note-btn" tabindex="-1">',(function(t,e){e&&e.tooltip&&(t.attr({"aria-label":e.tooltip}),t.data("_lite_tooltip",new s(t,{title:e.tooltip,container:e.container})).on("click",(function(t){i()(t.currentTarget).data("_lite_tooltip").hide()}))),e.contents&&t.html(e.contents),e&&e.data&&"dropdown"===e.data.toggle&&t.data("_lite_dropdown",new u(t,{container:e.container})),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),x=r.a.create('<div class="note-dropdown-menu" role="list">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t,r=i()('<a class="note-dropdown-item" href="#" data-value="'+n+'" role="listitem" aria-label="'+n+'"></a>');return r.html(o).data("item",t),r})):e.items;t.html(n).attr({"aria-label":e.title}),t.on("click","> .note-dropdown-item",(function(t){var n=i()(this),o=n.data("item"),r=n.data("value");o.click?o.click(n):e.itemClick&&e.itemClick(t,o,r)})),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),S=r.a.create('<div class="note-dropdown-menu note-check" role="list">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t,r=i()('<a class="note-dropdown-item" href="#" data-value="'+n+'" role="listitem" aria-label="'+t+'"></a>');return r.html([z(e.checkClassName)," ",o]).data("item",t),r})):e.items;t.html(n).attr({"aria-label":e.title}),t.on("click","> .note-dropdown-item",(function(t){var n=i()(this),o=n.data("item"),r=n.data("value");o.click?o.click(n):e.itemClick&&e.itemClick(t,o,r)})),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),T=function(t,e){return t+" "+z(e.icons.caret,"span")},E=function(t,e){return w([C({className:"dropdown-toggle",contents:t.title+" "+z("note-icon-caret"),tooltip:t.tooltip,data:{toggle:"dropdown"}}),x({className:t.className,items:t.items,template:t.template,itemClick:t.itemClick})],{callback:e}).render()},$=function(t,e){return w([C({className:"dropdown-toggle",contents:t.title+" "+z("note-icon-caret"),tooltip:t.tooltip,data:{toggle:"dropdown"}}),S({className:t.className,checkClassName:t.checkClassName,items:t.items,template:t.template,itemClick:t.itemClick})],{callback:e}).render()},N=function(t){return w([C({className:"dropdown-toggle",contents:t.title+" "+z("note-icon-caret"),tooltip:t.tooltip,data:{toggle:"dropdown"}}),x([w({className:"note-align",children:t.items[0]}),w({className:"note-list",children:t.items[1]})])]).render()},I=function(t){return w([C({className:"dropdown-toggle",contents:t.title+" "+z("note-icon-caret"),tooltip:t.tooltip,data:{toggle:"dropdown"}}),x({className:"note-table",items:['<div class="note-dimension-picker">','<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>','<div class="note-dimension-picker-highlighted"></div>','<div class="note-dimension-picker-unhighlighted"></div>',"</div>",'<div class="note-dimension-display">1 x 1</div>'].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.col+"em",height:t.row+"em"}).mousedown(t.itemClick).mousemove((function(e){!function(t,e,n){var o,r=i()(t.target.parentNode),a=r.next(),s=r.find(".note-dimension-picker-mousecatcher"),l=r.find(".note-dimension-picker-highlighted"),c=r.find(".note-dimension-picker-unhighlighted");if(void 0===t.offsetX){var u=i()(t.target).offset();o={x:t.pageX-u.left,y:t.pageY-u.top}}else o={x:t.offsetX,y:t.offsetY};var d=Math.ceil(o.x/18)||1,h=Math.ceil(o.y/18)||1;l.css({width:d+"em",height:h+"em"}),s.data("value",d+"x"+h),d>3&&d<e&&c.css({width:d+1+"em"}),h>3&&h<n&&c.css({height:h+1+"em"}),a.html(d+" x "+h)}(e,t.col,t.row)}))}}).render()},P=r.a.create('<div class="note-color-palette"/>',(function(t,e){for(var n=[],o=0,r=e.colors.length;o<r;o++){for(var a=e.eventName,l=e.colors[o],c=e.colorsName[o],u=[],d=0,h=l.length;d<h;d++){var f=l[d],p=c[d];u.push(['<button type="button" class="note-btn note-color-btn"','style="background-color:',f,'" ','data-event="',a,'" ','data-value="',f,'" ','data-title="',p,'" ','aria-label="',p,'" ','data-toggle="button" tabindex="-1"></button>'].join(""))}n.push('<div class="note-color-row">'+u.join("")+"</div>")}t.html(n.join("")),t.find(".note-color-btn").each((function(){i()(this).data("_lite_tooltip",new s(i()(this),{container:e.container}))}))})),R=function(t,e){return w({className:"note-color",children:[C({className:"note-current-color-button",contents:t.title,tooltip:t.lang.color.recent,click:t.currentClick,callback:function(t){var n=t.find(".note-recent-color");"foreColor"!==e&&(n.css("background-color","#FFFF00"),t.attr("data-backColor","#FFFF00"))}}),C({className:"dropdown-toggle",contents:z("note-icon-caret"),tooltip:t.lang.color.more,data:{toggle:"dropdown"}}),x({items:["<div>",'<div class="note-btn-group btn-background-color">','<div class="note-palette-title">'+t.lang.color.background+"</div>","<div>",'<button type="button" class="note-color-reset note-btn note-btn-block" data-event="backColor" data-value="transparent">',t.lang.color.transparent,"</button>","</div>",'<div class="note-holder" data-event="backColor"></div>','<div class="btn-sm">','<input type="color" id="html5bcp" class="note-btn btn-default" value="#21104A" style="width:100%;" data-value="cp">','<button type="button" class="note-color-reset btn" data-event="backColor" data-value="cpbackColor">',t.lang.color.cpSelect,"</button>","</div>","</div>",'<div class="note-btn-group btn-foreground-color">','<div class="note-palette-title">'+t.lang.color.foreground+"</div>","<div>",'<button type="button" class="note-color-reset note-btn note-btn-block" data-event="removeFormat" data-value="foreColor">',t.lang.color.resetToDefault,"</button>","</div>",'<div class="note-holder" data-event="foreColor"></div>','<div class="btn-sm">','<input type="color" id="html5fcp" class="note-btn btn-default" value="#21104A" style="width:100%;" data-value="cp">','<button type="button" class="note-color-reset btn" data-event="foreColor" data-value="cpforeColor">',t.lang.color.cpSelect,"</button>","</div>","</div>","</div>"].join(""),callback:function(n){n.find(".note-holder").each((function(){var e=i()(this);e.append(P({colors:t.colors,eventName:e.data("event")}).render())})),"fore"===e?(n.find(".btn-background-color").hide(),n.css({"min-width":"210px"})):"back"===e&&(n.find(".btn-foreground-color").hide(),n.css({"min-width":"210px"}))},click:function(n){var o=i()(n.target),r=o.data("event"),a=o.data("value"),s=document.getElementById("html5fcp").value,l=document.getElementById("html5bcp").value;if("cp"===a?n.stopPropagation():"cpbackColor"===a?a=l:"cpforeColor"===a&&(a=s),r&&a){var c="backColor"===r?"background-color":"color",u=o.closest(".note-color").find(".note-recent-color"),d=o.closest(".note-color").find(".note-current-color-button");u.css(c,a),d.attr("data-"+r,a),"fore"===e?t.itemClick("foreColor",a):"back"===e?t.itemClick("backColor",a):t.itemClick(r,a)}}})]}).render()},L=r.a.create('<div class="note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>',(function(t,e){e.fade&&t.addClass("fade"),t.attr({"aria-label":e.title}),t.html(['<div class="note-modal-content">',e.title?'<div class="note-modal-header"><button type="button" class="close" aria-label="Close" aria-hidden="true"><i class="note-icon-close"></i></button><h4 class="note-modal-title">'+e.title+"</h4></div>":"",'<div class="note-modal-body">'+e.body+"</div>",e.footer?'<div class="note-modal-footer">'+e.footer+"</div>":"","</div>"].join("")),t.data("modal",new h(t,e))})),A=function(t){var e='<div class="note-form-group"><label for="note-dialog-video-url-'+t.id+'" class="note-form-label">'+t.lang.video.url+' <small class="text-muted">'+t.lang.video.providers+'</small></label><input id="note-dialog-video-url-'+t.id+'" class="note-video-url note-input" type="text"/></div>',n=['<button type="button" href="#" class="note-btn note-btn-primary note-video-btn disabled" disabled>',t.lang.video.insert,"</button>"].join("");return L({title:t.lang.video.insert,fade:t.fade,body:e,footer:n}).render()},F=function(t){var e='<div class="note-form-group note-group-select-from-files"><label for="note-dialog-image-file-'+t.id+'" class="note-form-label">'+t.lang.image.selectFromFiles+'</label><input id="note-dialog-image-file-'+t.id+'" class="note-note-image-input note-input" type="file" name="files" accept="image/*" multiple="multiple"/>'+t.imageLimitation+'</div><div class="note-form-group"><label for="note-dialog-image-url-'+t.id+'" class="note-form-label">'+t.lang.image.url+'</label><input id="note-dialog-image-url-'+t.id+'" class="note-image-url note-input" type="text"/></div>',n=['<button href="#" type="button" class="note-btn note-btn-primary note-btn-large note-image-btn disabled" disabled>',t.lang.image.insert,"</button>"].join("");return L({title:t.lang.image.insert,fade:t.fade,body:e,footer:n}).render()},D=function(t){var e='<div class="note-form-group"><label for="note-dialog-link-txt-'+t.id+'" class="note-form-label">'+t.lang.link.textToDisplay+'</label><input id="note-dialog-link-txt-'+t.id+'" class="note-link-text note-input" type="text"/></div><div class="note-form-group"><label for="note-dialog-link-url-'+t.id+'" class="note-form-label">'+t.lang.link.url+'</label><input id="note-dialog-link-url-'+t.id+'" class="note-link-url note-input" type="text" value="http://"/></div>'+(t.disableLinkTarget?"":'<div class="checkbox"><label for="note-dialog-link-nw-'+t.id+'"><input id="note-dialog-link-nw-'+t.id+'" type="checkbox" checked> '+t.lang.link.openInNewWindow+"</label></div>")+'<div class="checkbox"><label for="note-dialog-link-up-'+t.id+'"><input id="note-dialog-link-up-'+t.id+'" type="checkbox" checked> '+t.lang.link.useProtocol+"</label></div>",n=['<button href="#" type="button" class="note-btn note-btn-primary note-link-btn disabled" disabled>',t.lang.link.insert,"</button>"].join("");return L({className:"link-dialog",title:t.lang.link.insert,fade:t.fade,body:e,footer:n}).render()},H=r.a.create(['<div class="note-popover bottom">','<div class="note-popover-arrow"></div>','<div class="popover-content note-children-container"></div>',"</div>"].join(""),(function(t,e){var n=void 0!==e.direction?e.direction:"bottom";t.addClass(n).hide(),e.hideArrow&&t.find(".note-popover-arrow").hide()})),B=r.a.create('<div class="checkbox"></div>',(function(t,e){t.html(["<label"+(e.id?' for="note-'+e.id+'"':"")+">",'<input role="checkbox" type="checkbox"'+(e.id?' id="note-'+e.id+'"':""),e.checked?" checked":"",' aria-checked="'+(e.checked?"true":"false")+'"/>',e.text?e.text:"","</label>"].join(""))})),z=function(t,e){return"<"+(e=e||"i")+' class="'+t+'"/>'},M=function(t){return{editor:f,toolbar:p,editingArea:m,codable:v,editable:g,statusbar:b,airEditor:k,airEditable:y,buttonGroup:w,button:C,dropdown:x,dropdownCheck:S,dropdownButton:E,dropdownButtonContents:T,dropdownCheckButton:$,paragraphDropdownButton:N,tableDropdownButton:I,colorDropdownButton:R,palette:P,dialog:L,videoDialog:A,imageDialog:F,linkDialog:D,popover:H,checkbox:B,icon:z,options:t,toggleBtn:function(t,e){t.toggleClass("disabled",!e),t.attr("disabled",!e)},toggleBtnActive:function(t,e){t.toggleClass("active",e)},check:function(t,e){t.find(".checked").removeClass("checked"),t.find('[data-value="'+e+'"]').addClass("checked")},onDialogShown:function(t,e){t.one("note.modal.show",e)},onDialogHidden:function(t,e){t.one("note.modal.hide",e)},showDialog:function(t){t.data("modal").show()},hideDialog:function(t){t.data("modal").hide()},getPopoverContent:function(t){return t.find(".note-popover-content")},getDialogBody:function(t){return t.find(".note-modal-body")},createLayout:function(e){var n=(t.airMode?k([m([v(),y()])]):"bottom"===t.toolbarPosition?f([m([v(),g()]),p(),b()]):f([p(),m([v(),g()]),b()])).render();return n.insertAfter(e),{note:e,editor:n,toolbar:n.find(".note-toolbar"),editingArea:n.find(".note-editing-area"),editable:n.find(".note-editable"),codable:n.find(".note-codable"),statusbar:n.find(".note-statusbar")}},removeLayout:function(t,e){t.html(e.editable.html()),e.editor.remove(),t.off("summernote"),t.show()}}};n(3),n(6);i.a.summernote=i.a.extend(i.a.summernote,{ui_template:M,interface:"lite"})},6:function(t,e,n){}})})); +//# sourceMappingURL=summernote-lite.min.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote-lite.min.js.map b/admin/vendors/summernote/dist/summernote-lite.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..f1dd72176f3f2e0bf38c704247f000c4526b9fa5 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote-lite.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/js/lite/ui/TooltipUI.js","webpack:///./src/js/lite/ui/DropdownUI.js","webpack:///./src/js/lite/ui/ModalUI.js","webpack:///./src/js/lite/ui.js","webpack:///./src/js/lite/settings.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Renderer","markup","children","options","callback","this","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","arguments","Array","isArray","__webpack_amd_options__","summernote","lang","extend","font","bold","italic","underline","clear","height","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","browserVersion","userAgent","navigator","isMSIE","test","matches","exec","parseFloat","isEdge","isSupportTouch","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isFontInstalled","testFontName","context","document","createElement","getContext","testSize","originalWidth","measureText","width","isW3CRangeSupport","createRange","idCounter","eq","itemA","itemB","eq2","peq2","propName","ok","fail","self","not","f","apply","and","fA","fB","item","invoke","obj","method","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","head","array","last","tail","slice","contains","initial","prev","idx","next","pred","len","all","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aLast","compact","aResult","push","unique","results","NBSP_CHAR","String","fromCharCode","isEditable","node","hasClass","makePredByNodeName","nodeName","isText","nodeType","isVoid","isPara","isPre","isLi","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isBody","blankHTML","env","nodeLength","nodeValue","childNodes","innerHTML","paddingBlankHTML","ancestor","parentNode","listAncestor","ancestors","el","listNext","nodes","nextSibling","insertAfter","preceding","parent","insertBefore","appendChild","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","previousSibling","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","isSamePoint","pointA","pointB","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","isRemoveChild","removeNode","removeChild","isTextarea","stripLinebreaks","val","replace","ZERO_WIDTH_NBSP_CHAR","blank","emptyPara","isControlSizing","isElement","isPurePara","isHeading","isBlock","isBodyInline","isParaInline","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","deepestChildIsEmpty","firstElementChild","isEmptyAnchor","isClosestSibling","nodeA","nodeB","withClosestSiblings","siblings","isLeftEdgePointOf","isRightEdgePointOf","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","singleChildAncestor","lastAncestor","filter","listPrev","listDescendant","descendants","fnWalk","current","commonAncestor","wrap","wrapperName","wrapper","makeOffsetPath","reverse","fromOffsetPath","offsets","splitPoint","splitRoot","container","topAncestor","pivot","createText","text","createTextNode","removeWhile","newNode","cssText","isNewlineOnBlock","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","Context","$note","memos","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","undefined","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","textRangeToPoint","textRange","isStart","prevContainer","parentElement","tester","body","createTextRange","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","cont","pointToTextRange","info","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","moveStart","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","History","stack","stackOffset","$editable","range","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","css","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setVirtualTablePosition","rowIndex","cellIndex","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowPos","colPos","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","tagName","rows","cells","createVirtualTable","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","actions","idCell","currentCell","tdAttributes","newTd","removeAttr","setAttribute","before","lastTrIndex","after","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","colCount","rowCount","tdHTML","tds","idxCol","trHTML","trs","idxRow","$table","tableClassName","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","detach","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","Deferred","deferred","$img","one","resolve","reject","display","appendTo","promise","then","$image","min","show","files","file","filename","maximumImageFileSize","FileReader","onload","dataURL","onerror","err","readAsDataURL","readFileAsDataURL","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","posOffset","$dimensionDisplay","$catcher","$highlighted","$unhighlighted","offsetX","posCatcher","pageX","pageY","offsetY","ceil","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","$video","ytMatch","igMatch","vMatch","vimMatch","dmMatch","youkuMatch","qqMatch","qqMatch2","mp4Match","oggMatch","webmMatch","fbMatch","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AirPopover","hidable","onContextmenu","air","forcelyOpen","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","htmlMode","lineNumbers","pc","mac","TooltipUI","placement","$tooltip","showCallback","hideCallback","toggleCallback","targetOffset","nodeWidth","nodeHeight","tooltipWidth","tooltipHeight","DropdownUI","setEvent","stopImmediatePropagation","windowWidth","targetMarginRight","isOpened","ModalUI","$modal","$backdrop","which","renderer","airEditor","airEditable","$temp","$a","itemClick","caret","dropdownButton","opt","dropdownCheckButton","paragraphDropdownButton","tableDropdownButton","mousemove","rowSize","colSize","colorName","colorDropdownButton","currentClick","foreinput","getElementById","backinput","videoDialog","imageDialog","linkDialog","iconClassName","editorOptions","isEnable","isActive","check","$dom","getPopoverContent","getDialogBody","interface"],"mappings":"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","file":"summernote-lite.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 51);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","import $ from 'jquery';\n\nclass TooltipUI {\n constructor($node, options) {\n this.$node = $node;\n this.options = $.extend({}, {\n title: '',\n target: options.container,\n trigger: 'hover focus',\n placement: 'bottom',\n }, options);\n\n // create tooltip node\n this.$tooltip = $([\n '<div class=\"note-tooltip\">',\n '<div class=\"note-tooltip-arrow\"></div>',\n '<div class=\"note-tooltip-content\"></div>',\n '</div>',\n ].join(''));\n\n // define event\n if (this.options.trigger !== 'manual') {\n const showCallback = this.show.bind(this);\n const hideCallback = this.hide.bind(this);\n const toggleCallback = this.toggle.bind(this);\n\n this.options.trigger.split(' ').forEach(function(eventName) {\n if (eventName === 'hover') {\n $node.off('mouseenter mouseleave');\n $node.on('mouseenter', showCallback).on('mouseleave', hideCallback);\n } else if (eventName === 'click') {\n $node.on('click', toggleCallback);\n } else if (eventName === 'focus') {\n $node.on('focus', showCallback).on('blur', hideCallback);\n }\n });\n }\n }\n\n show() {\n const $node = this.$node;\n const offset = $node.offset();\n const targetOffset = $(this.options.target).offset();\n offset.top -= targetOffset.top;\n offset.left -= targetOffset.left;\n\n const $tooltip = this.$tooltip;\n const title = this.options.title || $node.attr('title') || $node.data('title');\n const placement = this.options.placement || $node.data('placement');\n\n $tooltip.addClass(placement);\n $tooltip.find('.note-tooltip-content').text(title);\n $tooltip.appendTo(this.options.target);\n\n const nodeWidth = $node.outerWidth();\n const nodeHeight = $node.outerHeight();\n const tooltipWidth = $tooltip.outerWidth();\n const tooltipHeight = $tooltip.outerHeight();\n\n if (placement === 'bottom') {\n $tooltip.css({\n top: offset.top + nodeHeight,\n left: offset.left + (nodeWidth / 2 - tooltipWidth / 2),\n });\n } else if (placement === 'top') {\n $tooltip.css({\n top: offset.top - tooltipHeight,\n left: offset.left + (nodeWidth / 2 - tooltipWidth / 2),\n });\n } else if (placement === 'left') {\n $tooltip.css({\n top: offset.top + (nodeHeight / 2 - tooltipHeight / 2),\n left: offset.left - tooltipWidth,\n });\n } else if (placement === 'right') {\n $tooltip.css({\n top: offset.top + (nodeHeight / 2 - tooltipHeight / 2),\n left: offset.left + nodeWidth,\n });\n }\n\n $tooltip.addClass('in');\n }\n\n hide() {\n this.$tooltip.removeClass('in');\n setTimeout(() => {\n this.$tooltip.remove();\n }, 200);\n }\n\n toggle() {\n if (this.$tooltip.hasClass('in')) {\n this.hide();\n } else {\n this.show();\n }\n }\n}\n\nexport default TooltipUI;\n","import $ from 'jquery';\n\nclass DropdownUI {\n constructor($node, options) {\n this.$button = $node;\n this.options = $.extend({}, {\n target: options.container,\n }, options);\n this.setEvent();\n }\n\n setEvent() {\n this.$button.on('click', (e) => {\n this.toggle();\n e.stopImmediatePropagation();\n });\n }\n\n clear() {\n var $parent = $('.note-btn-group.open');\n $parent.find('.note-btn.active').removeClass('active');\n $parent.removeClass('open');\n }\n\n show() {\n this.$button.addClass('active');\n this.$button.parent().addClass('open');\n\n var $dropdown = this.$button.next();\n var offset = $dropdown.offset();\n var width = $dropdown.outerWidth();\n var windowWidth = $(window).width();\n var targetMarginRight = parseFloat($(this.options.target).css('margin-right'));\n\n if (offset.left + width > windowWidth - targetMarginRight) {\n $dropdown.css('margin-left', windowWidth - targetMarginRight - (offset.left + width));\n } else {\n $dropdown.css('margin-left', '');\n }\n }\n\n hide() {\n this.$button.removeClass('active');\n this.$button.parent().removeClass('open');\n }\n\n toggle() {\n var isOpened = this.$button.parent().hasClass('open');\n\n this.clear();\n\n if (isOpened) {\n this.hide();\n } else {\n this.show();\n }\n }\n}\n\n$(document).on('click', function(e) {\n if (!$(e.target).closest('.note-btn-group').length) {\n $('.note-btn-group.open').removeClass('open');\n $('.note-btn-group .note-btn.active').removeClass('active');\n }\n});\n\n$(document).on('click.note-dropdown-menu', function(e) {\n $(e.target).closest('.note-dropdown-menu').parent().removeClass('open');\n $(e.target).closest('.note-dropdown-menu').parent().find('.note-btn.active').removeClass('active');\n});\n\nexport default DropdownUI;\n","import $ from 'jquery';\n\nclass ModalUI {\n constructor($node /*, options */) {\n this.$modal = $node;\n this.$backdrop = $('<div class=\"note-modal-backdrop\"/>');\n }\n\n show() {\n this.$backdrop.appendTo(document.body).show();\n this.$modal.addClass('open').show();\n this.$modal.trigger('note.modal.show');\n this.$modal.off('click', '.close').on('click', '.close', this.hide.bind(this));\n this.$modal.on('keydown', (event) => {\n if (event.which === 27) {\n event.preventDefault();\n this.hide();\n }\n });\n }\n\n hide() {\n this.$modal.removeClass('open').hide();\n this.$backdrop.hide();\n this.$modal.trigger('note.modal.hide');\n this.$modal.off('keydown');\n }\n}\n\nexport default ModalUI;\n","import $ from 'jquery';\nimport renderer from '../base/renderer';\nimport TooltipUI from './ui/TooltipUI';\nimport DropdownUI from './ui/DropdownUI';\nimport ModalUI from './ui/ModalUI';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame\"/>');\nconst toolbar = renderer.create('<div class=\"note-toolbar\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group\">');\nconst button = renderer.create('<button type=\"button\" class=\"note-btn\" tabindex=\"-1\">', function($node, options) {\n // set button type\n if (options && options.tooltip) {\n $node.attr({\n 'aria-label': options.tooltip,\n });\n $node.data('_lite_tooltip', new TooltipUI($node, {\n title: options.tooltip,\n container: options.container,\n })).on('click', (e) => {\n $(e.currentTarget).data('_lite_tooltip').hide();\n });\n }\n if (options.contents) {\n $node.html(options.contents);\n }\n\n if (options && options.data && options.data.toggle === 'dropdown') {\n $node.data('_lite_dropdown', new DropdownUI($node, {\n container: options.container,\n }));\n }\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdown = renderer.create('<div class=\"note-dropdown-menu\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const $temp = $('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + value + '\"></a>');\n\n $temp.html(content).data('item', item);\n\n return $temp;\n }) : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n $node.on('click', '> .note-dropdown-item', function(e) {\n const $a = $(this);\n\n const item = $a.data('item');\n const value = $a.data('value');\n\n if (item.click) {\n item.click($a);\n } else if (options.itemClick) {\n options.itemClick(e, item, value);\n }\n });\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownCheck = renderer.create('<div class=\"note-dropdown-menu note-check\" role=\"list\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n\n const $temp = $('<a class=\"note-dropdown-item\" href=\"#\" data-value=\"' + value + '\" role=\"listitem\" aria-label=\"' + item + '\"></a>');\n $temp.html([icon(options.checkClassName), ' ', content]).data('item', item);\n return $temp;\n }) : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n $node.on('click', '> .note-dropdown-item', function(e) {\n const $a = $(this);\n\n const item = $a.data('item');\n const value = $a.data('value');\n\n if (item.click) {\n item.click($a);\n } else if (options.itemClick) {\n options.itemClick(e, item, value);\n }\n });\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents, options) {\n return contents + ' ' + icon(options.icons.caret, 'span');\n};\n\nconst dropdownButton = function(opt, callback) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n className: opt.className,\n items: opt.items,\n template: opt.template,\n itemClick: opt.itemClick,\n }),\n ], { callback: callback }).render();\n};\n\nconst dropdownCheckButton = function(opt, callback) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdownCheck({\n className: opt.className,\n checkClassName: opt.checkClassName,\n items: opt.items,\n template: opt.template,\n itemClick: opt.itemClick,\n }),\n ], { callback: callback }).render();\n};\n\nconst paragraphDropdownButton = function(opt) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown([\n buttonGroup({\n className: 'note-align',\n children: opt.items[0],\n }),\n buttonGroup({\n className: 'note-list',\n children: opt.items[1],\n }),\n ]),\n ]).render();\n};\n\nconst tableMoveHandler = function(event, col, row) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n};\n\nconst tableDropdownButton = function(opt) {\n return buttonGroup([\n button({\n className: 'dropdown-toggle',\n contents: opt.title + ' ' + icon('note-icon-caret'),\n tooltip: opt.tooltip,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: function($node) {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: opt.col + 'em',\n height: opt.row + 'em',\n })\n .mousedown(opt.itemClick)\n .mousemove(function(e) {\n tableMoveHandler(e, opt.col, opt.row);\n });\n },\n }).render();\n};\n\nconst palette = renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-btn note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'data-title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n $node.find('.note-color-btn').each(function() {\n $(this).data('_lite_tooltip', new TooltipUI($(this), {\n container: options.container,\n }));\n });\n});\n\nconst colorDropdownButton = function(opt, type) {\n return buttonGroup({\n className: 'note-color',\n children: [\n button({\n className: 'note-current-color-button',\n contents: opt.title,\n tooltip: opt.lang.color.recent,\n click: opt.currentClick,\n callback: function($button) {\n const $recentColor = $button.find('.note-recent-color');\n\n if (type !== 'foreColor') {\n $recentColor.css('background-color', '#FFFF00');\n $button.attr('data-backColor', '#FFFF00');\n }\n },\n }),\n button({\n className: 'dropdown-toggle',\n contents: icon('note-icon-caret'),\n tooltip: opt.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n dropdown({\n items: [\n '<div>',\n '<div class=\"note-btn-group btn-background-color\">',\n '<div class=\"note-palette-title\">' + opt.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"backColor\" data-value=\"transparent\">',\n opt.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"></div>',\n '<div class=\"btn-sm\">',\n '<input type=\"color\" id=\"html5bcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">',\n '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"backColor\" data-value=\"cpbackColor\">',\n opt.lang.color.cpSelect,\n '</button>',\n '</div>',\n '</div>',\n '<div class=\"note-btn-group btn-foreground-color\">',\n '<div class=\"note-palette-title\">' + opt.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset note-btn note-btn-block\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n opt.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"></div>',\n '<div class=\"btn-sm\">',\n '<input type=\"color\" id=\"html5fcp\" class=\"note-btn btn-default\" value=\"#21104A\" style=\"width:100%;\" data-value=\"cp\">',\n '<button type=\"button\" class=\"note-color-reset btn\" data-event=\"foreColor\" data-value=\"cpforeColor\">',\n opt.lang.color.cpSelect,\n '</button>',\n '</div>',\n '</div>',\n '</div>',\n ].join(''),\n callback: function($dropdown) {\n $dropdown.find('.note-holder').each(function() {\n const $holder = $(this);\n $holder.append(palette({\n colors: opt.colors,\n eventName: $holder.data('event'),\n }).render());\n });\n\n if (type === 'fore') {\n $dropdown.find('.btn-background-color').hide();\n $dropdown.css({ 'min-width': '210px' });\n } else if (type === 'back') {\n $dropdown.find('.btn-foreground-color').hide();\n $dropdown.css({ 'min-width': '210px' });\n }\n },\n click: function(event) {\n const $button = $(event.target);\n const eventName = $button.data('event');\n let value = $button.data('value');\n const foreinput = document.getElementById('html5fcp').value;\n const backinput = document.getElementById('html5bcp').value;\n if (value === 'cp') {\n event.stopPropagation();\n } else if (value === 'cpbackColor') {\n value = backinput;\n } else if (value === 'cpforeColor') {\n value = foreinput;\n }\n\n if (eventName && value) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n\n if (type === 'fore') {\n opt.itemClick('foreColor', value);\n } else if (type === 'back') {\n opt.itemClick('backColor', value);\n } else {\n opt.itemClick(eventName, value);\n }\n }\n },\n }),\n ],\n }).render();\n};\n\nconst dialog = renderer.create('<div class=\"note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"note-modal-content\">',\n (options.title ? '<div class=\"note-modal-header\"><button type=\"button\" class=\"close\" aria-label=\"Close\" aria-hidden=\"true\"><i class=\"note-icon-close\"></i></button><h4 class=\"note-modal-title\">' + options.title + '</h4></div>' : ''),\n '<div class=\"note-modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"note-modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n ].join(''));\n\n $node.data('modal', new ModalUI($node, options));\n});\n\nconst videoDialog = function(opt) {\n const body = '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-video-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.video.url + ' <small class=\"text-muted\">' + opt.lang.video.providers + '</small></label>' +\n '<input id=\"note-dialog-video-url-' + opt.id + '\" class=\"note-video-url note-input\" type=\"text\"/>' +\n '</div>';\n const footer = [\n '<button type=\"button\" href=\"#\" class=\"note-btn note-btn-primary note-video-btn disabled\" disabled>',\n opt.lang.video.insert,\n '</button>',\n ].join('');\n\n return dialog({\n title: opt.lang.video.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst imageDialog = function(opt) {\n const body = '<div class=\"note-form-group note-group-select-from-files\">' +\n '<label for=\"note-dialog-image-file-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.image.selectFromFiles + '</label>' +\n '<input id=\"note-dialog-image-file-' + opt.id + '\" class=\"note-note-image-input note-input\" type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>' +\n opt.imageLimitation +\n '</div>' +\n '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-image-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.image.url + '</label>' +\n '<input id=\"note-dialog-image-url-' + opt.id + '\" class=\"note-image-url note-input\" type=\"text\"/>' +\n '</div>';\n const footer = [\n '<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-btn-large note-image-btn disabled\" disabled>',\n opt.lang.image.insert,\n '</button>',\n ].join('');\n\n return dialog({\n title: opt.lang.image.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst linkDialog = function(opt) {\n const body = '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-link-txt-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.link.textToDisplay + '</label>' +\n '<input id=\"note-dialog-link-txt-' + opt.id + '\" class=\"note-link-text note-input\" type=\"text\"/>' +\n '</div>' +\n '<div class=\"note-form-group\">' +\n '<label for=\"note-dialog-link-url-' + opt.id + '\" class=\"note-form-label\">' + opt.lang.link.url + '</label>' +\n '<input id=\"note-dialog-link-url-' + opt.id + '\" class=\"note-link-url note-input\" type=\"text\" value=\"http://\"/>' +\n '</div>' +\n (!opt.disableLinkTarget ? '<div class=\"checkbox\"><label for=\"note-dialog-link-nw-' + opt.id + '\"><input id=\"note-dialog-link-nw-' + opt.id + '\" type=\"checkbox\" checked> ' + opt.lang.link.openInNewWindow + '</label></div>' : '') +\n '<div class=\"checkbox\"><label for=\"note-dialog-link-up-' + opt.id + '\"><input id=\"note-dialog-link-up-' + opt.id + '\" type=\"checkbox\" checked> ' + opt.lang.link.useProtocol + '</label></div>';\n const footer = [\n '<button href=\"#\" type=\"button\" class=\"note-btn note-btn-primary note-link-btn disabled\" disabled>',\n opt.lang.link.insert,\n '</button>',\n ].join('');\n\n return dialog({\n className: 'link-dialog',\n title: opt.lang.link.insert,\n fade: opt.fade,\n body: body,\n footer: footer,\n }).render();\n};\n\nconst popover = renderer.create([\n '<div class=\"note-popover bottom\">',\n '<div class=\"note-popover-arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction).hide();\n\n if (options.hideArrow) {\n $node.find('.note-popover-arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"checkbox\"></div>', function($node, options) {\n $node.html([\n '<label' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input role=\"checkbox\" type=\"checkbox\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n (options.text ? options.text : ''),\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"/>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n button: button,\n dropdown: dropdown,\n dropdownCheck: dropdownCheck,\n dropdownButton: dropdownButton,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheckButton: dropdownCheckButton,\n paragraphDropdownButton: paragraphDropdownButton,\n tableDropdownButton: tableDropdownButton,\n colorDropdownButton: colorDropdownButton,\n palette: palette,\n dialog: dialog,\n videoDialog: videoDialog,\n imageDialog: imageDialog,\n linkDialog: linkDialog,\n popover: popover,\n checkbox: checkbox,\n icon: icon,\n options: editorOptions,\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n check: function($dom, value) {\n $dom.find('.checked').removeClass('checked');\n $dom.find('[data-value=\"' + value + '\"]').addClass('checked');\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('note.modal.show', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('note.modal.hide', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.data('modal').show();\n },\n\n hideDialog: function($dialog) {\n $dialog.data('modal').hide();\n },\n\n /**\n * get popover content area\n *\n * @param $popover\n * @returns {*}\n */\n getPopoverContent: function($popover) {\n return $popover.find('.note-popover-content');\n },\n\n /**\n * get dialog's body area\n *\n * @param $dialog\n * @returns {*}\n */\n getDialogBody: function($dialog) {\n return $dialog.find('.note-modal-body');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.off('summernote'); // remove summernote custom event\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-lite.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'lite',\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote.css b/admin/vendors/summernote/dist/summernote.css new file mode 100644 index 0000000000000000000000000000000000000000..da34f8682d4038cd09fe69f2017778b99c1d92ba --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.css @@ -0,0 +1,13 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +@font-face{font-family:"summernote";font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class^=note-icon]:before,[class*=" note-icon"]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align::before{content:""}.note-icon-align-center::before{content:""}.note-icon-align-indent::before{content:""}.note-icon-align-justify::before{content:""}.note-icon-align-left::before{content:""}.note-icon-align-outdent::before{content:""}.note-icon-align-right::before{content:""}.note-icon-arrow-circle-down::before{content:""}.note-icon-arrow-circle-left::before{content:""}.note-icon-arrow-circle-right::before{content:""}.note-icon-arrow-circle-up::before{content:""}.note-icon-arrows-alt::before{content:""}.note-icon-arrows-h::before{content:""}.note-icon-arrows-v::before{content:""}.note-icon-bold::before{content:""}.note-icon-caret::before{content:""}.note-icon-chain-broken::before{content:""}.note-icon-circle::before{content:""}.note-icon-close::before{content:""}.note-icon-code::before{content:""}.note-icon-col-after::before{content:""}.note-icon-col-before::before{content:""}.note-icon-col-remove::before{content:""}.note-icon-eraser::before{content:""}.note-icon-float-left::before{content:""}.note-icon-float-none::before{content:""}.note-icon-float-right::before{content:""}.note-icon-font::before{content:""}.note-icon-frame::before{content:""}.note-icon-italic::before{content:""}.note-icon-link::before{content:""}.note-icon-magic::before{content:""}.note-icon-menu-check::before{content:""}.note-icon-minus::before{content:""}.note-icon-orderedlist::before{content:""}.note-icon-pencil::before{content:""}.note-icon-picture::before{content:""}.note-icon-question::before{content:""}.note-icon-redo::before{content:""}.note-icon-rollback::before{content:""}.note-icon-row-above::before{content:""}.note-icon-row-below::before{content:""}.note-icon-row-remove::before{content:""}.note-icon-special-character::before{content:""}.note-icon-square::before{content:""}.note-icon-strikethrough::before{content:""}.note-icon-subscript::before{content:""}.note-icon-summernote::before{content:""}.note-icon-superscript::before{content:""}.note-icon-table::before{content:""}.note-icon-text-height::before{content:""}.note-icon-trash::before{content:""}.note-icon-underline::before{content:""}.note-icon-undo::before{content:""}.note-icon-unorderedlist::before{content:""}.note-icon-video::before{content:""}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-frame,.note-editor.note-airframe{border:1px solid #00000032}.note-editor.note-frame.codeview .note-editing-area .note-editable,.note-editor.note-airframe.codeview .note-editing-area .note-editable{display:none}.note-editor.note-frame.codeview .note-editing-area .note-codable,.note-editor.note-airframe.codeview .note-editing-area .note-codable{display:block}.note-editor.note-frame .note-editing-area,.note-editor.note-airframe .note-editing-area{overflow:hidden}.note-editor.note-frame .note-editing-area .note-editable,.note-editor.note-airframe .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false],.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false]{background-color:#8080801d}.note-editor.note-frame .note-editing-area .note-codable,.note-editor.note-airframe .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-frame.fullscreen,.note-editor.note-airframe.fullscreen{position:fixed;top:0;left:0;width:100% !important;z-index:1050}.note-editor.note-frame.fullscreen .note-resizebar,.note-editor.note-airframe.fullscreen .note-resizebar{display:none}.note-editor.note-frame .note-status-output,.note-editor.note-airframe .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-frame .note-status-output:empty,.note-editor.note-airframe .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-frame .note-status-output .pull-right,.note-editor.note-airframe .note-status-output .pull-right{float:right !important}.note-editor.note-frame .note-status-output .text-muted,.note-editor.note-airframe .note-status-output .text-muted{color:#777}.note-editor.note-frame .note-status-output .text-primary,.note-editor.note-airframe .note-status-output .text-primary{color:#286090}.note-editor.note-frame .note-status-output .text-success,.note-editor.note-airframe .note-status-output .text-success{color:#3c763d}.note-editor.note-frame .note-status-output .text-info,.note-editor.note-airframe .note-status-output .text-info{color:#31708f}.note-editor.note-frame .note-status-output .text-warning,.note-editor.note-airframe .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-frame .note-status-output .text-danger,.note-editor.note-airframe .note-status-output .text-danger{color:#a94442}.note-editor.note-frame .note-status-output .alert,.note-editor.note-airframe .note-status-output .alert{margin:-7px 0 0 0;padding:7px 10px 2px 10px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-frame .note-status-output .alert .note-icon,.note-editor.note-airframe .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-frame .note-status-output .alert-success,.note-editor.note-airframe .note-status-output .alert-success{color:#3c763d !important;background-color:#dff0d8 !important}.note-editor.note-frame .note-status-output .alert-info,.note-editor.note-airframe .note-status-output .alert-info{color:#31708f !important;background-color:#d9edf7 !important}.note-editor.note-frame .note-status-output .alert-warning,.note-editor.note-airframe .note-status-output .alert-warning{color:#8a6d3b !important;background-color:#fcf8e3 !important}.note-editor.note-frame .note-status-output .alert-danger,.note-editor.note-airframe .note-status-output .alert-danger{color:#a94442 !important;background-color:#f2dede !important}.note-editor.note-frame .note-statusbar,.note-editor.note-airframe .note-statusbar{background-color:#8080801d;border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar .note-resizebar,.note-editor.note-airframe .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid #00000032}.note-editor.note-frame .note-statusbar.locked .note-resizebar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-frame .note-placeholder,.note-editor.note-airframe .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px !important}.note-toolbar{position:relative}.note-popover .popover-content,.note-editor .note-toolbar{margin:0;padding:0 0 5px 5px}.note-popover .popover-content>.note-btn-group,.note-editor .note-toolbar>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-popover .popover-content .note-btn-group .note-table,.note-editor .note-toolbar .note-btn-group .note-table{min-width:0;padding:5px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute !important;z-index:3;width:10em;height:10em;cursor:pointer}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative !important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute !important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre,.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p,.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p{margin:0;padding:0}.note-popover .popover-content .note-color-all .note-dropdown-menu,.note-editor .note-toolbar .note-color-all .note-dropdown-menu{min-width:337px}.note-popover .popover-content .note-color .dropdown-toggle,.note-editor .note-toolbar .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-popover .popover-content .note-para .note-dropdown-menu,.note-editor .note-toolbar .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-popover .popover-content .note-para .note-dropdown-menu>div+div,.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-popover .popover-content .note-dropdown-menu,.note-editor .note-toolbar .note-dropdown-menu{min-width:160px}.note-popover .popover-content .note-dropdown-menu.right,.note-editor .note-toolbar .note-dropdown-menu.right{right:0;left:auto}.note-popover .popover-content .note-dropdown-menu.right::before,.note-editor .note-toolbar .note-dropdown-menu.right::before{right:9px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.right::after,.note-editor .note-toolbar .note-dropdown-menu.right::after{right:10px;left:auto !important}.note-popover .popover-content .note-dropdown-menu.note-check a i,.note-editor .note-toolbar .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-popover .popover-content .note-dropdown-menu.note-check a.checked i,.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-popover .popover-content .note-fontsize-10,.note-editor .note-toolbar .note-fontsize-10{font-size:10px}.note-popover .popover-content .note-color-palette,.note-editor .note-toolbar .note-color-palette{line-height:1}.note-popover .popover-content .note-color-palette div .note-color-btn,.note-editor .note-toolbar .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-popover .popover-content .note-color-palette div .note-color-btn:hover,.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:gray}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-sizing,.note-handle .note-control-selection .note-control-holder{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block !important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer} diff --git a/admin/vendors/summernote/dist/summernote.js b/admin/vendors/summernote/dist/summernote.js new file mode 100644 index 0000000000000000000000000000000000000000..a9f6adda7e60ebf416b3cc7bb5e854995d00d726 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.js @@ -0,0 +1,10228 @@ +/*! + * + * Super simple wysiwyg editor v0.8.18 + * https://summernote.org + * + * + * Copyright 2013- Alan Hong. and other contributors + * summernote may be freely distributed under the MIT license. + * + * Date: 2020-05-20T16:47Z + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("jquery")); + else if(typeof define === 'function' && define.amd) + define(["jquery"], factory); + else { + var a = typeof exports === 'object' ? factory(require("jquery")) : factory(root["jQuery"]); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 52); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 0: +/***/ (function(module, exports) { + +module.exports = __WEBPACK_EXTERNAL_MODULE__0__; + +/***/ }), + +/***/ 1: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); +/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + +var Renderer = /*#__PURE__*/function () { + function Renderer(markup, children, options, callback) { + _classCallCheck(this, Renderer); + + this.markup = markup; + this.children = children; + this.options = options; + this.callback = callback; + } + + _createClass(Renderer, [{ + key: "render", + value: function render($parent) { + var $node = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.markup); + + if (this.options && this.options.contents) { + $node.html(this.options.contents); + } + + if (this.options && this.options.className) { + $node.addClass(this.options.className); + } + + if (this.options && this.options.data) { + jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.options.data, function (k, v) { + $node.attr('data-' + k, v); + }); + } + + if (this.options && this.options.click) { + $node.on('click', this.options.click); + } + + if (this.children) { + var $container = $node.find('.note-children-container'); + this.children.forEach(function (child) { + child.render($container.length ? $container : $node); + }); + } + + if (this.callback) { + this.callback($node, this.options); + } + + if (this.options && this.options.callback) { + this.options.callback($node); + } + + if ($parent) { + $parent.append($node); + } + + return $node; + } + }]); + + return Renderer; +}(); + +/* harmony default export */ __webpack_exports__["a"] = ({ + create: function create(markup, callback) { + return function () { + var options = _typeof(arguments[1]) === 'object' ? arguments[1] : arguments[0]; + var children = Array.isArray(arguments[0]) ? arguments[0] : []; + + if (options && options.children) { + children = options.children; + } + + return new Renderer(markup, children, options, callback); + }; + } +}); + +/***/ }), + +/***/ 2: +/***/ (function(module, exports) { + +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; + +/* WEBPACK VAR INJECTION */}.call(this, {})) + +/***/ }), + +/***/ 3: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// CONCATENATED MODULE: ./src/js/base/summernote-en-US.js + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote || { + lang: {} +}; +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang, { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size', + sizeunit: 'Font Size Unit' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize full', + resizeHalf: 'Resize half', + resizeQuarter: 'Resize quarter', + resizeNone: 'Original size', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Remove float', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image', + original: 'Original' + }, + video: { + video: 'Video', + videoLink: 'Video Link', + insert: 'Insert Video', + url: 'Video URL', + providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window', + useProtocol: 'Use default protocol' + }, + table: { + table: 'Table', + addRowAbove: 'Add row above', + addRowBelow: 'Add row below', + addColLeft: 'Add column left', + addColRight: 'Add column right', + delRow: 'Delete row', + delCol: 'Delete column', + delTable: 'Delete table' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + p: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Background Color', + foreground: 'Text Color', + transparent: 'Transparent', + setTransparent: 'Set transparent', + reset: 'Reset', + resetToDefault: 'Reset to default', + cpSelect: 'Select' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + help: { + 'escape': 'Escape', + 'insertParagraph': 'Insert Paragraph', + 'undo': 'Undo the last command', + 'redo': 'Redo the last command', + 'tab': 'Tab', + 'untab': 'Untab', + 'bold': 'Set a bold style', + 'italic': 'Set a italic style', + 'underline': 'Set a underline style', + 'strikethrough': 'Set a strikethrough style', + 'removeFormat': 'Clean a style', + 'justifyLeft': 'Set left align', + 'justifyCenter': 'Set center align', + 'justifyRight': 'Set right align', + 'justifyFull': 'Set full align', + 'insertUnorderedList': 'Toggle unordered list', + 'insertOrderedList': 'Toggle ordered list', + 'outdent': 'Outdent on current paragraph', + 'indent': 'Indent on current paragraph', + 'formatPara': 'Change current block\'s format as a paragraph(P tag)', + 'formatH1': 'Change current block\'s format as H1', + 'formatH2': 'Change current block\'s format as H2', + 'formatH3': 'Change current block\'s format as H3', + 'formatH4': 'Change current block\'s format as H4', + 'formatH5': 'Change current block\'s format as H5', + 'formatH6': 'Change current block\'s format as H6', + 'insertHorizontalRule': 'Insert horizontal rule', + 'linkDialog.show': 'Show Link Dialog' + }, + history: { + undo: 'Undo', + redo: 'Redo' + }, + specialChar: { + specialChar: 'SPECIAL CHARACTERS', + select: 'Select Special characters' + }, + output: { + noSelection: 'No Selection Made!' + } + } +}); +// CONCATENATED MODULE: ./src/js/base/core/env.js + +var isSupportAmd = typeof define === 'function' && __webpack_require__(2); // eslint-disable-line + +/** + * returns whether font is installed or not. + * + * @param {String} fontName + * @return {Boolean} + */ + +var genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy']; + +function validFontName(fontName) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.inArray(fontName.toLowerCase(), genericFontFamilies) === -1 ? "'".concat(fontName, "'") : fontName; +} + +function env_isFontInstalled(fontName) { + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var testText = 'mmmmmmmmmmwwwww'; + var testSize = '200px'; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + context.font = testSize + " '" + testFontName + "'"; + var originalWidth = context.measureText(testText).width; + context.font = testSize + ' ' + validFontName(fontName) + ', "' + testFontName + '"'; + var width = context.measureText(testText).width; + return originalWidth !== width; +} + +var userAgent = navigator.userAgent; +var isMSIE = /MSIE|Trident/i.test(userAgent); +var browserVersion; + +if (isMSIE) { + var matches = /MSIE (\d+[.]\d+)/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } + + matches = /Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent); + + if (matches) { + browserVersion = parseFloat(matches[1]); + } +} + +var isEdge = /Edge\/\d+/.test(userAgent); +var isSupportTouch = 'ontouchstart' in window || navigator.MaxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; // [workaround] IE doesn't have input events for contentEditable +// - see: https://goo.gl/4bfIvA + +var inputEventName = isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; +/** + * @class core.env + * + * Object which check platform and agent + * + * @singleton + * @alternateClassName env + */ + +/* harmony default export */ var env = ({ + isMac: navigator.appVersion.indexOf('Mac') > -1, + isMSIE: isMSIE, + isEdge: isEdge, + isFF: !isEdge && /firefox/i.test(userAgent), + isPhantom: /PhantomJS/i.test(userAgent), + isWebkit: !isEdge && /webkit/i.test(userAgent), + isChrome: !isEdge && /chrome/i.test(userAgent), + isSafari: !isEdge && /safari/i.test(userAgent) && !/chrome/i.test(userAgent), + browserVersion: browserVersion, + jqueryVersion: parseFloat(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.jquery), + isSupportAmd: isSupportAmd, + isSupportTouch: isSupportTouch, + isFontInstalled: env_isFontInstalled, + isW3CRangeSupport: !!document.createRange, + inputEventName: inputEventName, + genericFontFamilies: genericFontFamilies, + validFontName: validFontName +}); +// CONCATENATED MODULE: ./src/js/base/core/func.js + +/** + * @class core.func + * + * func utils (for high-order func's arg) + * + * @singleton + * @alternateClassName func + */ + +function eq(itemA) { + return function (itemB) { + return itemA === itemB; + }; +} + +function eq2(itemA, itemB) { + return itemA === itemB; +} + +function peq2(propName) { + return function (itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; +} + +function ok() { + return true; +} + +function fail() { + return false; +} + +function not(f) { + return function () { + return !f.apply(f, arguments); + }; +} + +function and(fA, fB) { + return function (item) { + return fA(item) && fB(item); + }; +} + +function func_self(a) { + return a; +} + +function func_invoke(obj, method) { + return function () { + return obj[method].apply(obj, arguments); + }; +} + +var idCounter = 0; +/** + * reset globally-unique id + * + */ + +function resetUniqueId() { + idCounter = 0; +} +/** + * generate a globally-unique id + * + * @param {String} [prefix] + */ + + +function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; +} +/** + * returns bnd (bounds) from rect + * + * - IE Compatibility Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + + +function rect2bnd(rect) { + var $document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; +} +/** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + + +function invertObject(obj) { + var inverted = {}; + + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + inverted[obj[key]] = key; + } + } + + return inverted; +} +/** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + + +function namespaceToCamel(namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function (name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); +} +/** + * Returns a function, that, as long as it continues to be invoked, will not + * be triggered. The function will be called after it stops being called for + * N milliseconds. If `immediate` is passed, trigger the function on the + * leading edge, instead of the trailing. + * @param {Function} func + * @param {Number} wait + * @param {Boolean} immediate + * @return {Function} + */ + + +function debounce(func, wait, immediate) { + var timeout; + return function () { + var context = this; + var args = arguments; + + var later = function later() { + timeout = null; + + if (!immediate) { + func.apply(context, args); + } + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + + if (callNow) { + func.apply(context, args); + } + }; +} +/** + * + * @param {String} url + * @return {Boolean} + */ + + +function isValidUrl(url) { + var expression = /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi; + return expression.test(url); +} + +/* harmony default export */ var func = ({ + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: func_self, + not: not, + and: and, + invoke: func_invoke, + resetUniqueId: resetUniqueId, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel, + debounce: debounce, + isValidUrl: isValidUrl +}); +// CONCATENATED MODULE: ./src/js/base/core/lists.js + +/** + * returns the first item of an array. + * + * @param {Array} array + */ + +function lists_head(array) { + return array[0]; +} +/** + * returns the last item of an array. + * + * @param {Array} array + */ + + +function lists_last(array) { + return array[array.length - 1]; +} +/** + * returns everything but the last entry of the array. + * + * @param {Array} array + */ + + +function initial(array) { + return array.slice(0, array.length - 1); +} +/** + * returns the rest of the items in an array. + * + * @param {Array} array + */ + + +function tail(array) { + return array.slice(1); +} +/** + * returns item of array + */ + + +function find(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + var item = array[idx]; + + if (pred(item)) { + return item; + } + } +} +/** + * returns true if all of the values in the array pass the predicate truth test. + */ + + +function lists_all(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!pred(array[idx])) { + return false; + } + } + + return true; +} +/** + * returns true if the value is present in the list. + */ + + +function contains(array, item) { + if (array && array.length && item) { + if (array.indexOf) { + return array.indexOf(item) !== -1; + } else if (array.contains) { + // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains` + return array.contains(item); + } + } + + return false; +} +/** + * get sum from a list + * + * @param {Array} array - array + * @param {Function} fn - iterator + */ + + +function sum(array, fn) { + fn = fn || func.self; + return array.reduce(function (memo, v) { + return memo + fn(v); + }, 0); +} +/** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + + +function from(collection) { + var result = []; + var length = collection.length; + var idx = -1; + + while (++idx < length) { + result[idx] = collection[idx]; + } + + return result; +} +/** + * returns whether list is empty or not + */ + + +function lists_isEmpty(array) { + return !array || !array.length; +} +/** + * cluster elements by predicate function. + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + + +function clusterBy(array, fn) { + if (!array.length) { + return []; + } + + var aTail = tail(array); + return aTail.reduce(function (memo, v) { + var aLast = lists_last(memo); + + if (fn(lists_last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + + return memo; + }, [[lists_head(array)]]); +} +/** + * returns a copy of the array with all false values removed + * + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + + +function compact(array) { + var aResult = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (array[idx]) { + aResult.push(array[idx]); + } + } + + return aResult; +} +/** + * produces a duplicate-free version of the array + * + * @param {Array} array + */ + + +function unique(array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + + return results; +} +/** + * returns next item. + * @param {Array} array + */ + + +function lists_next(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx + 1]; + } + + return null; +} +/** + * returns prev item. + * @param {Array} array + */ + + +function prev(array, item) { + if (array && array.length && item) { + var idx = array.indexOf(item); + return idx === -1 ? null : array[idx - 1]; + } + + return null; +} +/** + * @class core.list + * + * list utils + * + * @singleton + * @alternateClassName list + */ + + +/* harmony default export */ var lists = ({ + head: lists_head, + last: lists_last, + initial: initial, + tail: tail, + prev: prev, + next: lists_next, + find: find, + contains: contains, + all: lists_all, + sum: sum, + from: from, + isEmpty: lists_isEmpty, + clusterBy: clusterBy, + compact: compact, + unique: unique +}); +// CONCATENATED MODULE: ./src/js/base/core/dom.js + + + + +var NBSP_CHAR = String.fromCharCode(160); +var ZERO_WIDTH_NBSP_CHAR = "\uFEFF"; +/** + * @method isEditable + * + * returns whether node is `note-editable` or not. + * + * @param {Node} node + * @return {Boolean} + */ + +function isEditable(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-editable'); +} +/** + * @method isControlSizing + * + * returns whether node is `note-control-sizing` or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function isControlSizing(node) { + return node && external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).hasClass('note-control-sizing'); +} +/** + * @method makePredByNodeName + * + * returns predicate which judge whether nodeName is same + * + * @param {String} nodeName + * @return {Function} + */ + + +function makePredByNodeName(nodeName) { + nodeName = nodeName.toUpperCase(); + return function (node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; +} +/** + * @method isText + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + + +function isText(node) { + return node && node.nodeType === 3; +} +/** + * @method isElement + * + * + * + * @param {Node} node + * @return {Boolean} true if node's type is element(1) + */ + + +function isElement(node) { + return node && node.nodeType === 1; +} +/** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + + +function isVoid(node) { + return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase()); +} + +function isPara(node) { + if (isEditable(node)) { + return false; + } // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + + + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +function isHeading(node) { + return node && /^H[1-7]/.test(node.nodeName.toUpperCase()); +} + +var isPre = makePredByNodeName('PRE'); +var isLi = makePredByNodeName('LI'); + +function isPurePara(node) { + return isPara(node) && !isLi(node); +} + +var isTable = makePredByNodeName('TABLE'); +var isData = makePredByNodeName('DATA'); + +function dom_isInline(node) { + return !isBodyContainer(node) && !isList(node) && !isHr(node) && !isPara(node) && !isTable(node) && !isBlockquote(node) && !isData(node); +} + +function isList(node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); +} + +var isHr = makePredByNodeName('HR'); + +function dom_isCell(node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); +} + +var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + +function isBodyContainer(node) { + return dom_isCell(node) || isBlockquote(node) || isEditable(node); +} + +var isAnchor = makePredByNodeName('A'); + +function isParaInline(node) { + return dom_isInline(node) && !!dom_ancestor(node, isPara); +} + +function isBodyInline(node) { + return dom_isInline(node) && !dom_ancestor(node, isPara); +} + +var isBody = makePredByNodeName('BODY'); +/** + * returns whether nodeB is closest sibling of nodeA + * + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + +function isClosestSibling(nodeA, nodeB) { + return nodeA.nextSibling === nodeB || nodeA.previousSibling === nodeB; +} +/** + * returns array of closest siblings with node + * + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + + +function withClosestSiblings(node, pred) { + pred = pred || func.ok; + var siblings = []; + + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + + siblings.push(node); + + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + + return siblings; +} +/** + * blank HTML for cursor position + * - [workaround] old IE only works with + * - [workaround] IE11 and other browser works with bogus br + */ + + +var blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>'; +/** + * @method nodeLength + * + * returns #text's text size or element's childNodes size + * + * @param {Node} node + */ + +function nodeLength(node) { + if (isText(node)) { + return node.nodeValue.length; + } + + if (node) { + return node.childNodes.length; + } + + return 0; +} +/** + * returns whether deepest child node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function deepestChildIsEmpty(node) { + do { + if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break; + } while (node = node.firstElementChild); + + return dom_isEmpty(node); +} +/** + * returns whether node is empty or not. + * + * @param {Node} node + * @return {Boolean} + */ + + +function dom_isEmpty(node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + // ex) <p><br></p>, <span><br></span> + return true; + } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') { + // ex) <p></p>, <span></span> + return true; + } + + return false; +} +/** + * padding blankHTML if node is empty (for cursor position) + */ + + +function paddingBlankHTML(node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } +} +/** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function dom_ancestor(node, pred) { + while (node) { + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + + +function singleChildAncestor(node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { + break; + } + + if (pred(node)) { + return node; + } + + if (isEditable(node)) { + break; + } + + node = node.parentNode; + } + + return null; +} +/** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listAncestor(node, pred) { + pred = pred || func.fail; + var ancestors = []; + dom_ancestor(node, function (el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; +} +/** + * find farthest ancestor predicate hit + */ + + +function lastAncestor(node, pred) { + var ancestors = listAncestor(node); + return lists.last(ancestors.filter(pred)); +} +/** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + + +function dom_commonAncestor(nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + + for (var n = nodeB; n; n = n.parentNode) { + if (ancestors.indexOf(n) > -1) return n; + } + + return null; // difference document area +} +/** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + + +function listPrev(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.previousSibling; + } + + return nodes; +} +/** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listNext(node, pred) { + pred = pred || func.fail; + var nodes = []; + + while (node) { + if (pred(node)) { + break; + } + + nodes.push(node); + node = node.nextSibling; + } + + return nodes; +} +/** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + + +function listDescendant(node, pred) { + var descendants = []; + pred = pred || func.ok; // start DFS(depth first search) with node + + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendants.push(current); + } + + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendants; +} +/** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + + +function wrap(node, wrapperName) { + var parent = node.parentNode; + var wrapper = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<' + wrapperName + '>')[0]; + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; +} +/** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + + +function insertAfter(node, preceding) { + var next = preceding.nextSibling; + var parent = preceding.parentNode; + + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + + return node; +} +/** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + + +function appendChildNodes(node, aChild) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(aChild, function (idx, child) { + node.appendChild(child); + }); + return node; +} +/** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isLeftEdgePoint(point) { + return point.offset === 0; +} +/** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isRightEdgePoint(point) { + return point.offset === nodeLength(point.node); +} +/** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isEdgePoint(point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); +} +/** + * returns whether node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function dom_isLeftEdgeOf(node, ancestor) { + while (node && node !== ancestor) { + if (dom_position(node) !== 0) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgeOf(node, ancestor) { + if (!ancestor) { + return false; + } + + while (node && node !== ancestor) { + if (dom_position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + + node = node.parentNode; + } + + return true; +} +/** + * returns whether point is left edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isLeftEdgePointOf(point, ancestor) { + return isLeftEdgePoint(point) && dom_isLeftEdgeOf(point.node, ancestor); +} +/** + * returns whether point is right edge of ancestor or not. + * @param {BoundaryPoint} point + * @param {Node} ancestor + * @return {Boolean} + */ + + +function isRightEdgePointOf(point, ancestor) { + return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor); +} +/** + * returns offset from parent. + * + * @param {Node} node + */ + + +function dom_position(node) { + var offset = 0; + + while (node = node.previousSibling) { + offset += 1; + } + + return offset; +} + +function hasChildren(node) { + return !!(node && node.childNodes && node.childNodes.length); +} +/** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_prevPoint(point, isSkipInnerOffset) { + var node; + var offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = dom_position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function dom_nextPoint(point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; +} +/** + * returns next boundaryPoint with empty node + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + + +function nextPointWithEmptyNode(point, isSkipInnerOffset) { + var node, offset; // if node is empty string node, return current node's sibling. + + if (dom_isEmpty(point.node)) { + node = point.node.nextSibling; + offset = 0; + return { + node: node, + offset: offset + }; + } + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + var nextTextNode = getNextTextNode(point.node); + + if (nextTextNode) { + node = nextTextNode; + offset = 0; + } else { + node = point.node.parentNode; + offset = dom_position(point.node) + 1; + } // if next node is editable, return current node's sibling node. + + + if (isEditable(node)) { + node = point.node.nextSibling; + offset = 0; + } + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + + if (dom_isEmpty(node)) { + return null; + } + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + + if (dom_isEmpty(node)) { + return null; + } + } + + return { + node: node, + offset: offset + }; +} +/* +* returns the next Text node index or 0 if not found. +*/ + + +function getNextTextNode(actual) { + if (!actual.nextSibling) return undefined; + if (actual.parent !== actual.nextSibling.parent) return undefined; + if (isText(actual.nextSibling)) return actual.nextSibling; + return getNextTextNode(actual.nextSibling); +} +/** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + + +function isSamePoint(pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; +} +/** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + + +function isVisiblePoint(point) { + if (isText(point.node) || !hasChildren(point.node) || dom_isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; +} +/** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function prevPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_prevPoint(point); + } + + return null; +} +/** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + + +function nextPointUntil(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = dom_nextPoint(point); + } + + return null; +} +/** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isCharPoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && ch !== ' ' && ch !== NBSP_CHAR; +} +/** + * returns whether point has space or not. + * + * @param {Point} point + * @return {Boolean} + */ + + +function isSpacePoint(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch === ' ' || ch === NBSP_CHAR; +} +/** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + + +function walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && startPoint.node !== point.node && endPoint.node !== point.node; + point = nextPointWithEmptyNode(point, isSkipOffset); + } +} +/** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + + +function makeOffsetPath(ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return ancestors.map(dom_position).reverse(); +} +/** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + + +function fromOffsetPath(ancestor, offsets) { + var current = ancestor; + + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + + return current; +} +/** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @param {Boolean} [options.isDiscardEmptySplits] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitNode(point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + var isDiscardEmptySplits = options && options.isDiscardEmptySplits; + + if (isDiscardEmptySplits) { + isSkipPaddingBlankHTML = true; + } // edge case + + + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } // split #text + + + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + if (isDiscardEmptySplits) { + if (dom_isEmpty(point.node)) { + remove(point.node); + } + + if (dom_isEmpty(clone)) { + remove(clone); + return point.node.nextSibling; + } + } + + return clone; + } +} +/** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + + +function splitTree(root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function (node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom_position(node) : nodeLength(parent) + }, options); + }); +} +/** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + + +function splitPoint(point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = lists.last(ancestors) || point.node; + var splitRoot, container; + + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } // if splitRoot is exists, split with splitTree + + + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); // if container is point.node, find pivot with point.offset + + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; +} + +function dom_create(nodeName) { + return document.createElement(nodeName); +} + +function createText(text) { + return document.createTextNode(text); +} +/** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + + +function remove(node, isRemoveChild) { + if (!node || !node.parentNode) { + return; + } + + if (node.removeNode) { + return node.removeNode(isRemoveChild); + } + + var parent = node.parentNode; + + if (!isRemoveChild) { + var nodes = []; + + for (var i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (var _i = 0, _len = nodes.length; _i < _len; _i++) { + parent.insertBefore(nodes[_i], node); + } + } + + parent.removeChild(node); +} +/** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + + +function removeWhile(node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } +} +/** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + + +function dom_replace(node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = dom_create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, lists.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + return newNode; +} + +var isTextarea = makePredByNodeName('TEXTAREA'); +/** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + +function dom_value($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + + return val; +} +/** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + + +function dom_html($node, isNewlineOnBlock) { + var markup = dom_value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function (match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + return match + (isEndOfInlineContainer || isBlockNode ? '\n' : ''); + }); + markup = markup.trim(); + } + + return markup; +} + +function posFromPlaceholder(placeholder) { + var $placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(placeholder); + var pos = $placeholder.offset(); + var height = $placeholder.outerHeight(true); // include margin + + return { + left: pos.left, + top: pos.top + height + }; +} + +function attachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.on(key, events[key]); + }); +} + +function detachEvents($node, events) { + Object.keys(events).forEach(function (key) { + $node.off(key, events[key]); + }); +} +/** + * @method isCustomStyleTag + * + * assert if a node contains a "note-styletag" class, + * which implies that's a custom-made style tag node + * + * @param {Node} an HTML DOM node + */ + + +function isCustomStyleTag(node) { + return node && !isText(node) && lists.contains(node.classList, 'note-styletag'); +} + +/* harmony default export */ var dom = ({ + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + + /** @property {String} blank */ + blank: blankHTML, + + /** @property {String} emptyPara */ + emptyPara: "<p>".concat(blankHTML, "</p>"), + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + isText: isText, + isElement: isElement, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isHeading: isHeading, + isInline: dom_isInline, + isBlock: func.not(dom_isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isPre: isPre, + isList: isList, + isTable: isTable, + isData: isData, + isCell: dom_isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + deepestChildIsEmpty: deepestChildIsEmpty, + isEmpty: dom_isEmpty, + isEmptyAnchor: func.and(isAnchor, dom_isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: dom_isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + isLeftEdgePointOf: isLeftEdgePointOf, + isRightEdgePointOf: isRightEdgePointOf, + prevPoint: dom_prevPoint, + nextPoint: dom_nextPoint, + nextPointWithEmptyNode: nextPointWithEmptyNode, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + isSpacePoint: isSpacePoint, + walkPoint: walkPoint, + ancestor: dom_ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: dom_commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: dom_position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: dom_create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: dom_replace, + html: dom_html, + value: dom_value, + posFromPlaceholder: posFromPlaceholder, + attachEvents: attachEvents, + detachEvents: detachEvents, + isCustomStyleTag: isCustomStyleTag +}); +// CONCATENATED MODULE: ./src/js/base/Context.js +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Context_Context = /*#__PURE__*/function () { + /** + * @param {jQuery} $note + * @param {Object} options + */ + function Context($note, options) { + _classCallCheck(this, Context); + + this.$note = $note; + this.memos = {}; + this.modules = {}; + this.layoutInfo = {}; + this.options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, options); // init ui with options + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui_template(this.options); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.initialize(); + } + /** + * create layout and initialize modules and other resources + */ + + + _createClass(Context, [{ + key: "initialize", + value: function initialize() { + this.layoutInfo = this.ui.createLayout(this.$note); + + this._initialize(); + + this.$note.hide(); + return this; + } + /** + * destroy modules and other resources and remove layout + */ + + }, { + key: "destroy", + value: function destroy() { + this._destroy(); + + this.$note.removeData('summernote'); + this.ui.removeLayout(this.$note, this.layoutInfo); + } + /** + * destory modules and other resources and initialize it again + */ + + }, { + key: "reset", + value: function reset() { + var disabled = this.isDisabled(); + this.code(dom.emptyPara); + + this._destroy(); + + this._initialize(); + + if (disabled) { + this.disable(); + } + } + }, { + key: "_initialize", + value: function _initialize() { + var _this = this; + + // set own id + this.options.id = func.uniqueId(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now()); // set default container for tooltips, popovers, and dialogs + + this.options.container = this.options.container || this.layoutInfo.editor; // add optional buttons + + var buttons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.buttons); + Object.keys(buttons).forEach(function (key) { + _this.memo('button.' + key, buttons[key]); + }); + var modules = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, this.options.modules, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.plugins || {}); // add and initialize modules + + Object.keys(modules).forEach(function (key) { + _this.module(key, modules[key], true); + }); + Object.keys(this.modules).forEach(function (key) { + _this.initializeModule(key); + }); + } + }, { + key: "_destroy", + value: function _destroy() { + var _this2 = this; + + // destroy modules with reversed order + Object.keys(this.modules).reverse().forEach(function (key) { + _this2.removeModule(key); + }); + Object.keys(this.memos).forEach(function (key) { + _this2.removeMemo(key); + }); // trigger custom onDestroy callback + + this.triggerEvent('destroy', this); + } + }, { + key: "code", + value: function code(html) { + var isActivated = this.invoke('codeview.isActivated'); + + if (html === undefined) { + this.invoke('codeview.sync'); + return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html(); + } else { + if (isActivated) { + this.invoke('codeview.sync', html); + } else { + this.layoutInfo.editable.html(html); + } + + this.$note.val(html); + this.triggerEvent('change', html, this.layoutInfo.editable); + } + } + }, { + key: "isDisabled", + value: function isDisabled() { + return this.layoutInfo.editable.attr('contenteditable') === 'false'; + } + }, { + key: "enable", + value: function enable() { + this.layoutInfo.editable.attr('contenteditable', true); + this.invoke('toolbar.activate', true); + this.triggerEvent('disable', false); + this.options.editing = true; + } + }, { + key: "disable", + value: function disable() { + // close codeview if codeview is opend + if (this.invoke('codeview.isActivated')) { + this.invoke('codeview.deactivate'); + } + + this.layoutInfo.editable.attr('contenteditable', false); + this.options.editing = false; + this.invoke('toolbar.deactivate', true); + this.triggerEvent('disable', true); + } + }, { + key: "triggerEvent", + value: function triggerEvent() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')]; + + if (callback) { + callback.apply(this.$note[0], args); + } + + this.$note.trigger('summernote.' + namespace, args); + } + }, { + key: "initializeModule", + value: function initializeModule(key) { + var module = this.modules[key]; + module.shouldInitialize = module.shouldInitialize || func.ok; + + if (!module.shouldInitialize()) { + return; + } // initialize module + + + if (module.initialize) { + module.initialize(); + } // attach events + + + if (module.events) { + dom.attachEvents(this.$note, module.events); + } + } + }, { + key: "module", + value: function module(key, ModuleClass, withoutIntialize) { + if (arguments.length === 1) { + return this.modules[key]; + } + + this.modules[key] = new ModuleClass(this); + + if (!withoutIntialize) { + this.initializeModule(key); + } + } + }, { + key: "removeModule", + value: function removeModule(key) { + var module = this.modules[key]; + + if (module.shouldInitialize()) { + if (module.events) { + dom.detachEvents(this.$note, module.events); + } + + if (module.destroy) { + module.destroy(); + } + } + + delete this.modules[key]; + } + }, { + key: "memo", + value: function memo(key, obj) { + if (arguments.length === 1) { + return this.memos[key]; + } + + this.memos[key] = obj; + } + }, { + key: "removeMemo", + value: function removeMemo(key) { + if (this.memos[key] && this.memos[key].destroy) { + this.memos[key].destroy(); + } + + delete this.memos[key]; + } + /** + * Some buttons need to change their visual style immediately once they get pressed + */ + + }, { + key: "createInvokeHandlerAndUpdateState", + value: function createInvokeHandlerAndUpdateState(namespace, value) { + var _this3 = this; + + return function (event) { + _this3.createInvokeHandler(namespace, value)(event); + + _this3.invoke('buttons.updateCurrentStyle'); + }; + } + }, { + key: "createInvokeHandler", + value: function createInvokeHandler(namespace, value) { + var _this4 = this; + + return function (event) { + event.preventDefault(); + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + + _this4.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target); + }; + } + }, { + key: "invoke", + value: function invoke() { + var namespace = lists.head(arguments); + var args = lists.tail(lists.from(arguments)); + var splits = namespace.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && lists.head(splits); + var methodName = hasSeparator ? lists.last(splits) : lists.head(splits); + var module = this.modules[moduleName || 'editor']; + + if (!moduleName && this[methodName]) { + return this[methodName].apply(this, args); + } else if (module && module[methodName] && module.shouldInitialize()) { + return module[methodName].apply(module, args); + } + } + }]); + + return Context; +}(); + + +// CONCATENATED MODULE: ./src/js/summernote.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.fn.extend({ + /** + * Summernote API + * + * @param {Object|String} + * @return {this} + */ + summernote: function summernote() { + var type = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.type(lists.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + var options = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend({}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options, hasInitOptions ? lists.head(arguments) : {}); // Update options + + options.langInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang[options.lang]); + options.icons = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(true, {}, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.options.icons, options.icons); + options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip; + this.each(function (idx, note) { + var $note = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(note); + + if (!$note.data('summernote')) { + var context = new Context_Context($note, options); + $note.data('summernote', context); + $note.data('summernote').triggerEvent('init', context.layoutInfo); + } + }); + var $note = this.first(); + + if ($note.length) { + var context = $note.data('summernote'); + + if (isExternalAPICalled) { + return context.invoke.apply(context, lists.from(arguments)); + } else if (options.focus) { + context.invoke('editor.focus'); + } + } + + return this; + } +}); +// CONCATENATED MODULE: ./src/js/base/core/range.js +function range_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function range_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function range_createClass(Constructor, protoProps, staticProps) { if (protoProps) range_defineProperties(Constructor.prototype, protoProps); if (staticProps) range_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +/** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + +function textRangeToPoint(textRange, isStart) { + var container = textRange.parentElement(); + var offset; + var tester = document.body.createTextRange(); + var prevContainer; + var childNodes = lists.from(container.childNodes); + + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + + tester.moveToElementText(childNodes[offset]); + + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(); + var curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } // [workaround] enforce IE to re-reference curTextNode, hack + + + var dummy = curTextNode.nodeValue; // eslint-disable-line + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; +} +/** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + + +function pointToTextRange(point) { + var textRangeInfo = function textRangeInfo(container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = lists.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; +} +/** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + + +var range_WrappedRange = /*#__PURE__*/function () { + function WrappedRange(sc, so, ec, eo) { + range_classCallCheck(this, WrappedRange); + + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; // isOnEditable: judge whether range is on editable or not + + this.isOnEditable = this.makeIsOn(dom.isEditable); // isOnList: judge whether range is on list node or not + + this.isOnList = this.makeIsOn(dom.isList); // isOnAnchor: judge whether range is on anchor node or not + + this.isOnAnchor = this.makeIsOn(dom.isAnchor); // isOnCell: judge whether range is on cell node or not + + this.isOnCell = this.makeIsOn(dom.isCell); // isOnData: judge whether range is on data node or not + + this.isOnData = this.makeIsOn(dom.isData); + } // nativeRange: get nativeRange from sc, so, ec, eo + + + range_createClass(WrappedRange, [{ + key: "nativeRange", + value: function nativeRange() { + if (env.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(this.sc, this.so); + w3cRange.setEnd(this.ec, this.eo); + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: this.sc, + offset: this.so + }); + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: this.ec, + offset: this.eo + })); + return textRange; + } + } + }, { + key: "getPoints", + value: function getPoints() { + return { + sc: this.sc, + so: this.so, + ec: this.ec, + eo: this.eo + }; + } + }, { + key: "getStartPoint", + value: function getStartPoint() { + return { + node: this.sc, + offset: this.so + }; + } + }, { + key: "getEndPoint", + value: function getEndPoint() { + return { + node: this.ec, + offset: this.eo + }; + } + /** + * select update visible range + */ + + }, { + key: "select", + value: function select() { + var nativeRng = this.nativeRange(); + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + } + /** + * Moves the scrollbar to start container(sc) of current range + * + * @return {WrappedRange} + */ + + }, { + key: "scrollIntoView", + value: function scrollIntoView(container) { + var height = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(container).height(); + + if (container.scrollTop + height < this.sc.offsetTop) { + container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop); + } + + return this; + } + /** + * @return {WrappedRange} + */ + + }, { + key: "normalize", + value: function normalize() { + /** + * @param {BoundaryPoint} point + * @param {Boolean} isLeftToRight - true: prefer to choose right node + * - false: prefer to choose left node + * @return {BoundaryPoint} + */ + var getVisiblePoint = function getVisiblePoint(point, isLeftToRight) { + if (!point) { + return point; + } // Just use the given point [XXX:Adhoc] + // - case 01. if the point is on the middle of the node + // - case 02. if the point is on the right edge and prefer to choose left node + // - case 03. if the point is on the left edge and prefer to choose right node + // - case 04. if the point is on the right edge and prefer to choose right node but the node is void + // - case 05. if the point is on the left edge and prefer to choose left node but the node is void + // - case 06. if the point is on the block node and there is no children + + + if (dom.isVisiblePoint(point)) { + if (!dom.isEdgePoint(point) || dom.isRightEdgePoint(point) && !isLeftToRight || dom.isLeftEdgePoint(point) && isLeftToRight || dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling) || dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling) || dom.isBlock(point.node) && dom.isEmpty(point.node)) { + return point; + } + } // point on block's edge + + + var block = dom.ancestor(point.node, dom.isBlock); + var hasRightNode = false; + + if (!hasRightNode) { + var prevPoint = dom.prevPoint(point) || { + node: null + }; + hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight; + } + + var hasLeftNode = false; + + if (!hasLeftNode) { + var _nextPoint = dom.nextPoint(point) || { + node: null + }; + + hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(_nextPoint.node)) && isLeftToRight; + } + + if (hasRightNode || hasLeftNode) { + // returns point already on visible point + if (dom.isVisiblePoint(point)) { + return point; + } // reverse direction + + + isLeftToRight = !isLeftToRight; + } + + var nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint) : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint); + return nextPoint || point; + }; + + var endPoint = getVisiblePoint(this.getEndPoint(), false); + var startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true); + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + + }, { + key: "nodes", + value: function nodes(pred, options) { + pred = pred || func.ok; + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; // TODO compare points and sort + + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + var nodes = []; + var leftEdgeNodes = []; + dom.walkPoint(startPoint, endPoint, function (point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + + if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + return lists.unique(nodes); + } + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + + }, { + key: "commonAncestor", + value: function commonAncestor() { + return dom.commonAncestor(this.sc, this.ec); + } + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + + }, { + key: "expand", + value: function expand(pred) { + var startAncestor = dom.ancestor(this.sc, pred); + var endAncestor = dom.ancestor(this.ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(this.sc, this.so, this.ec, this.eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + + }, { + key: "collapse", + value: function collapse(isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(this.sc, this.so, this.sc, this.so); + } else { + return new WrappedRange(this.ec, this.eo, this.ec, this.eo); + } + } + /** + * splitText on range + */ + + }, { + key: "splitText", + value: function splitText() { + var isSameContainer = this.sc === this.ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) { + this.ec.splitText(this.eo); + } + + if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = this.sc.splitText(this.so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = this.eo - this.so; + } + } + + return new WrappedRange(boundaryPoints.sc, boundaryPoints.so, boundaryPoints.ec, boundaryPoints.eo); + } + /** + * delete contents on range + * @return {WrappedRange} + */ + + }, { + key: "deleteContents", + value: function deleteContents() { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); // find new cursor point + + var point = dom.prevPointUntil(rng.getStartPoint(), function (point) { + return !lists.contains(nodes, point.node); + }); + var emptyParents = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(nodes, function (idx, node) { + // find empty parents + var parent = node.parentNode; + + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + + dom.remove(node, false); + }); // remove empty parents + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyParents, function (idx, node) { + dom.remove(node, false); + }); + return new WrappedRange(point.node, point.offset, point.node, point.offset).normalize(); + } + /** + * makeIsOn: return isOn(pred) function + */ + + }, { + key: "makeIsOn", + value: function makeIsOn(pred) { + return function () { + var ancestor = dom.ancestor(this.sc, pred); + return !!ancestor && ancestor === dom.ancestor(this.ec, pred); + }; + } + /** + * @param {Function} pred + * @return {Boolean} + */ + + }, { + key: "isLeftEdgeOf", + value: function isLeftEdgeOf(pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + } + /** + * returns whether range was collapsed or not + */ + + }, { + key: "isCollapsed", + value: function isCollapsed() { + return this.sc === this.ec && this.so === this.eo; + } + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + + }, { + key: "wrapBodyInlineWithPara", + value: function wrapBodyInlineWithPara() { + if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) { + this.sc.innerHTML = dom.emptyPara; + return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0); + } + /** + * [workaround] firefox often create range on not visible point. so normalize here. + * - firefox: |<p>text</p>| + * - chrome: <p>|text|</p> + */ + + + var rng = this.normalize(); + + if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) { + return rng; + } // find inline top ancestor + + + var topAncestor; + + if (dom.isInline(rng.sc)) { + var ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline)); + topAncestor = lists.last(ancestors); + + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so]; + } + } else { + topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0]; + } + + if (topAncestor) { + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); // wrap with paragraph + + if (inlineSiblings.length) { + var para = dom.wrap(lists.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, lists.tail(inlineSiblings)); + } + } + + return this.normalize(); + } + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + + }, { + key: "insertNode", + value: function insertNode(node) { + var rng = this; + + if (dom.isText(node) || dom.isInline(node)) { + rng = this.wrapBodyInlineWithPara().deleteContents(); + } + + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + + if (dom.isEmpty(info.rightNode) && dom.isPara(node)) { + info.rightNode.parentNode.removeChild(info.rightNode); + } + } else { + info.container.appendChild(node); + } + + return node; + } + /** + * insert html at current cursor + */ + + }, { + key: "pasteHTML", + value: function pasteHTML(markup) { + markup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.trim(markup); + var contentsContainer = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').html(markup)[0]; + var childNodes = lists.from(contentsContainer.childNodes); // const rng = this.wrapBodyInlineWithPara().deleteContents(); + + var rng = this; + var reversed = false; + + if (rng.so >= 0) { + childNodes = childNodes.reverse(); + reversed = true; + } + + childNodes = childNodes.map(function (childNode) { + return rng.insertNode(childNode); + }); + + if (reversed) { + childNodes = childNodes.reverse(); + } + + return childNodes; + } + /** + * returns text in range + * + * @return {String} + */ + + }, { + key: "toString", + value: function toString() { + var nativeRng = this.nativeRange(); + return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + } + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordRange", + value: function getWordRange(findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function (point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + + }, { + key: "getWordsRange", + value: function getWordsRange(findAfter) { + var endPoint = this.getEndPoint(); + + var isNotTextPoint = function isNotTextPoint(point) { + return !dom.isCharPoint(point) && !dom.isSpacePoint(point); + }; + + if (isNotTextPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, isNotTextPoint); + } + + return new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * returns range for words before cursor that match with a Regex + * + * example: + * range: 'hi @Peter Pan' + * regex: '/@[a-z ]+/i' + * return range: '@Peter Pan' + * + * @param {RegExp} [regex] + * @return {WrappedRange|null} + */ + + }, { + key: "getWordsMatchRange", + value: function getWordsMatchRange(regex) { + var endPoint = this.getEndPoint(); + var startPoint = dom.prevPointUntil(endPoint, function (point) { + if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) { + return true; + } + + var rng = new WrappedRange(point.node, point.offset, endPoint.node, endPoint.offset); + var result = regex.exec(rng.toString()); + return result && result.index === 0; + }); + var rng = new WrappedRange(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + var text = rng.toString(); + var result = regex.exec(text); + + if (result && result[0].length === text.length) { + return rng; + } else { + return null; + } + } + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + + }, { + key: "bookmark", + value: function bookmark(editable) { + return { + s: { + path: dom.makeOffsetPath(editable, this.sc), + offset: this.so + }, + e: { + path: dom.makeOffsetPath(editable, this.ec), + offset: this.eo + } + }; + } + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + + }, { + key: "paraBookmark", + value: function paraBookmark(paras) { + return { + s: { + path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)), + offset: this.so + }, + e: { + path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)), + offset: this.eo + } + }; + } + /** + * getClientRects + * @return {Rect[]} + */ + + }, { + key: "getClientRects", + value: function getClientRects() { + var nativeRng = this.nativeRange(); + return nativeRng.getClientRects(); + } + }]); + + return WrappedRange; +}(); +/** + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + */ + + +/* harmony default export */ var range = ({ + /** + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create: function create(sc, so, ec, eo) { + if (arguments.length === 4) { + return new range_WrappedRange(sc, so, ec, eo); + } else if (arguments.length === 2) { + // collapsed + ec = sc; + eo = so; + return new range_WrappedRange(sc, so, ec, eo); + } else { + var wrappedRange = this.createFromSelection(); + + if (!wrappedRange && arguments.length === 1) { + var bodyElement = arguments[0]; + + if (dom.isEditable(bodyElement)) { + bodyElement = bodyElement.lastChild; + } + + return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML); + } + + return wrappedRange; + } + }, + createFromBodyElement: function createFromBodyElement(bodyElement) { + var isCollapseToStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var wrappedRange = this.createFromNode(bodyElement); + return wrappedRange.collapse(isCollapseToStart); + }, + createFromSelection: function createFromSelection() { + var sc, so, ec, eo; + + if (env.isW3CRangeSupport) { + var selection = document.getSelection(); + + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. + // We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { + // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + var startPoint = textRangeToPoint(textRangeStart, true); + var endPoint = textRangeToPoint(textRangeEnd, false); // same visible point case: range was collapsed. + + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function createFromNode(node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); // browsers can't target a picture or void node + + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function createFromNodeBefore(node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function createFromNodeAfter(node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark: function createFromBookmark(editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new range_WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function createFromParaBookmark(bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path); + return new range_WrappedRange(sc, so, ec, eo); + } +}); +// CONCATENATED MODULE: ./src/js/base/core/key.js + + +var KEY_MAP = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'ESCAPE': 27, + 'SPACE': 32, + 'DELETE': 46, + // Arrow + 'LEFT': 37, + 'UP': 38, + 'RIGHT': 39, + 'DOWN': 40, + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'V': 86, + 'Y': 89, + 'Z': 90, + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221, + // Navigation + 'HOME': 36, + 'END': 35, + 'PAGEUP': 33, + 'PAGEDOWN': 34 +}; +/** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + +/* harmony default export */ var core_key = ({ + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function isEdit(keyCode) { + return lists.contains([KEY_MAP.BACKSPACE, KEY_MAP.TAB, KEY_MAP.ENTER, KEY_MAP.SPACE, KEY_MAP.DELETE], keyCode); + }, + + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function isMove(keyCode) { + return lists.contains([KEY_MAP.LEFT, KEY_MAP.UP, KEY_MAP.RIGHT, KEY_MAP.DOWN], keyCode); + }, + + /** + * @method isNavigation + * + * @param {Number} keyCode + * @return {Boolean} + */ + isNavigation: function isNavigation(keyCode) { + return lists.contains([KEY_MAP.HOME, KEY_MAP.END, KEY_MAP.PAGEUP, KEY_MAP.PAGEDOWN], keyCode); + }, + + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(KEY_MAP), + code: KEY_MAP +}); +// CONCATENATED MODULE: ./src/js/base/core/async.js + +/** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: dataUrl + */ + +function readFileAsDataURL(file) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(new FileReader(), { + onload: function onload(e) { + var dataURL = e.target.result; + deferred.resolve(dataURL); + }, + onerror: function onerror(err) { + deferred.reject(err); + } + }).readAsDataURL(file); + }).promise(); +} +/** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} url + * @return {Promise} - then: $image + */ + +function createImage(url) { + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $img = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<img>'); + $img.one('load', function () { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function () { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr('src', url); + }).promise(); +} +// CONCATENATED MODULE: ./src/js/base/editing/History.js +function History_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function History_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function History_createClass(Constructor, protoProps, staticProps) { if (protoProps) History_defineProperties(Constructor.prototype, protoProps); if (staticProps) History_defineProperties(Constructor, staticProps); return Constructor; } + + + +var History_History = /*#__PURE__*/function () { + function History(context) { + History_classCallCheck(this, History); + + this.stack = []; + this.stackOffset = -1; + this.context = context; + this.$editable = context.layoutInfo.editable; + this.editable = this.$editable[0]; + } + + History_createClass(History, [{ + key: "makeSnapshot", + value: function makeSnapshot() { + var rng = range.create(this.editable); + var emptyBookmark = { + s: { + path: [], + offset: 0 + }, + e: { + path: [], + offset: 0 + } + }; + return { + contents: this.$editable.html(), + bookmark: rng && rng.isOnEditable() ? rng.bookmark(this.editable) : emptyBookmark + }; + } + }, { + key: "applySnapshot", + value: function applySnapshot(snapshot) { + if (snapshot.contents !== null) { + this.$editable.html(snapshot.contents); + } + + if (snapshot.bookmark !== null) { + range.createFromBookmark(this.editable, snapshot.bookmark).select(); + } + } + /** + * @method rewind + * Rewinds the history stack back to the first snapshot taken. + * Leaves the stack intact, so that "Redo" can still be used. + */ + + }, { + key: "rewind", + value: function rewind() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } // Return to the first available snapshot. + + + this.stackOffset = 0; // Apply that snapshot. + + this.applySnapshot(this.stack[this.stackOffset]); + } + /** + * @method commit + * Resets history stack, but keeps current editor's content. + */ + + }, { + key: "commit", + value: function commit() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * @method reset + * Resets the history stack completely; reverting to an empty editor. + */ + + }, { + key: "reset", + value: function reset() { + // Clear the stack. + this.stack = []; // Restore stackOffset to its original value. + + this.stackOffset = -1; // Clear the editable area. + + this.$editable.html(''); // Record our first snapshot (of nothing). + + this.recordUndo(); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + // Create snap shot if not yet recorded + if (this.$editable.html() !== this.stack[this.stackOffset].contents) { + this.recordUndo(); + } + + if (this.stackOffset > 0) { + this.stackOffset--; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + if (this.stack.length - 1 > this.stackOffset) { + this.stackOffset++; + this.applySnapshot(this.stack[this.stackOffset]); + } + } + /** + * recorded undo + */ + + }, { + key: "recordUndo", + value: function recordUndo() { + this.stackOffset++; // Wash out stack after stackOffset + + if (this.stack.length > this.stackOffset) { + this.stack = this.stack.slice(0, this.stackOffset); + } // Create new snapshot and push it to the end + + + this.stack.push(this.makeSnapshot()); // If the stack size reachs to the limit, then slice it + + if (this.stack.length > this.context.options.historyLimit) { + this.stack.shift(); + this.stackOffset -= 1; + } + } + }]); + + return History; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Style.js +function Style_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Style_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Style_createClass(Constructor, protoProps, staticProps) { if (protoProps) Style_defineProperties(Constructor.prototype, protoProps); if (staticProps) Style_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Style_Style = /*#__PURE__*/function () { + function Style() { + Style_classCallCheck(this, Style); + } + + Style_createClass(Style, [{ + key: "jQueryCSS", + + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + value: function jQueryCSS($obj, propertyNames) { + if (env.jqueryVersion < 1.9) { + var result = {}; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(propertyNames, function (idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + + return $obj.css(propertyNames); + } + /** + * returns style object from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "fromNode", + value: function fromNode($node) { + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = this.jQueryCSS($node, properties) || {}; + var fontSize = $node[0].style.fontSize || styleInfo['font-size']; + styleInfo['font-size'] = parseInt(fontSize, 10); + styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/); + return styleInfo; + } + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + + }, { + key: "stylePara", + value: function stylePara(rng, styleInfo) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css(styleInfo); + }); + } + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + + }, { + key: "styleNodes", + value: function styleNodes(rng, options) { + rng = rng.splitText(); + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = rng.nodes(dom.isText, { + fullyContains: true + }).map(function (text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); // compose with partial contains predication + + pred = func.and(pred, function (node) { + return lists.contains(nodesInRange, node); + }); + } + + return nodes.map(function (node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = lists.head(siblings); + var tails = lists.tail(siblings); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(tails, function (idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return lists.head(siblings); + }); + } else { + return nodes; + } + } + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @return {Object} - object contains style properties. + */ + + }, { + key: "current", + value: function current(rng) { + var $cont = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc); + var styleInfo = this.fromNode($cont); // document.queryCommandState for toggle state + // [workaround] prevent Firefox nsresult: "0x80004005 (NS_ERROR_FAILURE)" + + try { + styleInfo = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(styleInfo, { + 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal', + 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal', + 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal', + 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal', + 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal', + 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal', + 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'] + }); + } catch (e) {} // eslint-disable-next-line + // list-style-type to list-style(unordered, ordered) + + + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + return styleInfo; + } + }]); + + return Style; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Bullet.js +function Bullet_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Bullet_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Bullet_createClass(Constructor, protoProps, staticProps) { if (protoProps) Bullet_defineProperties(Constructor.prototype, protoProps); if (staticProps) Bullet_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var Bullet_Bullet = /*#__PURE__*/function () { + function Bullet() { + Bullet_classCallCheck(this, Bullet); + } + + Bullet_createClass(Bullet, [{ + key: "insertOrderedList", + + /** + * toggle ordered list + */ + value: function insertOrderedList(editable) { + this.toggleList('OL', editable); + } + /** + * toggle unordered list + */ + + }, { + key: "insertUnorderedList", + value: function insertUnorderedList(editable) { + this.toggleList('UL', editable); + } + /** + * indent + */ + + }, { + key: "indent", + value: function indent(editable) { + var _this = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + var previousList = _this.findList(head.previousSibling); + + if (previousList) { + paras.map(function (para) { + return previousList.appendChild(para); + }); + } else { + _this.wrapList(paras, head.parentNode.nodeName); + + paras.map(function (para) { + return para.parentNode; + }).map(function (para) { + return _this.appendToPrevious(para); + }); + } + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + rng.select(); + } + /** + * outdent + */ + + }, { + key: "outdent", + value: function outdent(editable) { + var _this2 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + + if (dom.isLi(head)) { + _this2.releaseList([paras]); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(paras, function (idx, para) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(para).css('marginLeft', function (idx, val) { + val = parseInt(val, 10) || 0; + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + rng.select(); + } + /** + * toggle list + * + * @param {String} listName - OL or UL + */ + + }, { + key: "toggleList", + value: function toggleList(listName, editable) { + var _this3 = this; + + var rng = range.create(editable).wrapBodyInlineWithPara(); + var paras = rng.nodes(dom.isPara, { + includeAncestor: true + }); + var bookmark = rng.paraBookmark(paras); + var clustereds = lists.clusterBy(paras, func.peq2('parentNode')); // paragraph to list + + if (lists.find(paras, dom.isPurePara)) { + var wrappedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + wrappedParas = wrappedParas.concat(_this3.wrapList(paras, listName)); + }); + paras = wrappedParas; // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function (listNode) { + return !external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.nodeName(listNode, listName); + }); + + if (diffLists.length) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(diffLists, function (idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + } + /** + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + + }, { + key: "wrapList", + value: function wrapList(paras, listName) { + var head = lists.head(paras); + var last = lists.last(paras); + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); // P to LI + + paras = paras.map(function (para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); // append to list(<ul>, <ol>) + + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, lists.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + } + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + + }, { + key: "releaseList", + value: function releaseList(clustereds, isEscapseToBody) { + var _this4 = this; + + var releasedParas = []; + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(clustereds, function (idx, paras) { + var head = lists.head(paras); + var last = lists.last(paras); + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode; + var parentItem = headList.parentNode; + + if (headList.parentNode.nodeName === 'LI') { + paras.map(function (para) { + var newList = _this4.findNextSiblings(para); + + if (parentItem.nextSibling) { + parentItem.parentNode.insertBefore(para, parentItem.nextSibling); + } else { + parentItem.parentNode.appendChild(para); + } + + if (newList.length) { + _this4.wrapList(newList, headList.nodeName); + + para.appendChild(newList[0].parentNode); + } + }); + + if (headList.children.length === 0) { + parentItem.removeChild(headList); + } + + if (parentItem.childNodes.length === 0) { + parentItem.parentNode.removeChild(parentItem); + } + } else { + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : lists.from(middleList.childNodes).filter(dom.isLi); // LI to P + + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = paras.map(function (para) { + return dom.replace(para, 'P'); + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(lists.from(paras).reverse(), function (idx, para) { + dom.insertAfter(para, headList); + }); // remove empty lists + + var rootLists = lists.compact([headList, middleList, lastList]); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(rootLists, function (idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(listNodes.reverse(), function (idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + } + + releasedParas = releasedParas.concat(paras); + }); + return releasedParas; + } + /** + * @method appendToPrevious + * + * Appends list to previous list item, if + * none exist it wraps the list in a new list item. + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "appendToPrevious", + value: function appendToPrevious(node) { + return node.previousSibling ? dom.appendChildNodes(node.previousSibling, [node]) : this.wrapList([node], 'LI'); + } + /** + * @method findList + * + * Finds an existing list in list item + * + * @param {HTMLNode} ListItem + * @return {Array[]} + */ + + }, { + key: "findList", + value: function findList(node) { + return node ? lists.find(node.children, function (child) { + return ['OL', 'UL'].indexOf(child.nodeName) > -1; + }) : null; + } + /** + * @method findNextSiblings + * + * Finds all list item siblings that follow it + * + * @param {HTMLNode} ListItem + * @return {HTMLNode} + */ + + }, { + key: "findNextSiblings", + value: function findNextSiblings(node) { + var siblings = []; + + while (node.nextSibling) { + siblings.push(node.nextSibling); + node = node.nextSibling; + } + + return siblings; + } + }]); + + return Bullet; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Typing.js +function Typing_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Typing_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Typing_createClass(Constructor, protoProps, staticProps) { if (protoProps) Typing_defineProperties(Constructor.prototype, protoProps); if (staticProps) Typing_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class editing.Typing + * + * Typing + * + */ + +var Typing_Typing = /*#__PURE__*/function () { + function Typing(context) { + Typing_classCallCheck(this, Typing); + + // a Bullet instance to toggle lists off + this.bullet = new Bullet_Bullet(); + this.options = context.options; + } + /** + * insert tab + * + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + + + Typing_createClass(Typing, [{ + key: "insertTab", + value: function insertTab(rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + rng = range.create(tab, tabsize); + rng.select(); + } + /** + * insert paragraph + * + * @param {jQuery} $editable + * @param {WrappedRange} rng Can be used in unit tests to "mock" the range + * + * blockquoteBreakingLevel + * 0 - No break, the new paragraph remains inside the quote + * 1 - Break the first blockquote in the ancestors list + * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default) + */ + + }, { + key: "insertParagraph", + value: function insertParagraph(editable, rng) { + rng = rng || range.create(editable); // deleteContents on range. + + rng = rng.deleteContents(); // Wrap range if it needs to be wrapped by paragraph + + rng = rng.wrapBodyInlineWithPara(); // finding paragraph + + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + var nextPara; // on paragraph: split paragraph + + if (splitRoot) { + // if it is an empty line with li + if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) { + // toggle UL/OL and escape + this.bullet.toggleList(splitRoot.parentNode.nodeName); + return; + } else { + var blockquote = null; + + if (this.options.blockquoteBreakingLevel === 1) { + blockquote = dom.ancestor(splitRoot, dom.isBlockquote); + } else if (this.options.blockquoteBreakingLevel === 2) { + blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote); + } + + if (blockquote) { + // We're inside a blockquote and options ask us to break it + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; // If the split is right before a <br>, remove it so that there's no "empty line" + // after the split in the new blockquote created + + if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(rng.sc.nextSibling).remove(); + } + + var split = dom.splitTree(blockquote, rng.getStartPoint(), { + isDiscardEmptySplits: true + }); + + if (split) { + split.parentNode.insertBefore(nextPara, split); + } else { + dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote + } + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); // not a blockquote, just insert the paragraph + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(emptyAnchors, function (idx, anchor) { + dom.remove(anchor); + }); // replace empty heading, pre or custom-made styleTag with P tag + + if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) { + nextPara = dom.replace(nextPara, 'p'); + } + } + } // no paragraph: insert empty paragraph + + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(dom.emptyPara)[0]; + + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select().scrollIntoView(editable); + } + }]); + + return Typing; +}(); + + +// CONCATENATED MODULE: ./src/js/base/editing/Table.js +function Table_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Table_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Table_createClass(Constructor, protoProps, staticProps) { if (protoProps) Table_defineProperties(Constructor.prototype, protoProps); if (staticProps) Table_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +/** + * @class Create a virtual table to create what actions to do in change. + * @param {object} startPoint Cell selected to apply change. + * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where + * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction + * @param {object} domTable Dom element of table to make changes. + */ + +var TableResultAction = function TableResultAction(startPoint, where, action, domTable) { + var _startPoint = { + 'colPos': 0, + 'rowPos': 0 + }; + var _virtualTable = []; + var _actionCellList = []; /// /////////////////////////////////////////// + // Private functions + /// /////////////////////////////////////////// + + /** + * Set the startPoint of action. + */ + + function setStartPoint() { + if (!startPoint || !startPoint.tagName || startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th') { + // Impossible to identify start Cell point + return; + } + + _startPoint.colPos = startPoint.cellIndex; + + if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') { + // Impossible to identify start Row point + return; + } + + _startPoint.rowPos = startPoint.parentElement.rowIndex; + } + /** + * Define virtual table position info object. + * + * @param {int} rowIndex Index position in line of virtual table. + * @param {int} cellIndex Index position in column of virtual table. + * @param {object} baseRow Row affected by this position. + * @param {object} baseCell Cell affected by this position. + * @param {bool} isSpan Inform if it is an span cell/row. + */ + + + function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) { + var objPosition = { + 'baseRow': baseRow, + 'baseCell': baseCell, + 'isRowSpan': isRowSpan, + 'isColSpan': isColSpan, + 'isVirtual': isVirtualCell + }; + + if (!_virtualTable[rowIndex]) { + _virtualTable[rowIndex] = []; + } + + _virtualTable[rowIndex][cellIndex] = objPosition; + } + /** + * Create action cell object. + * + * @param {object} virtualTableCellObj Object of specific position on virtual table. + * @param {enum} resultAction Action to be applied in that item. + */ + + + function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) { + return { + 'baseCell': virtualTableCellObj.baseCell, + 'action': resultAction, + 'virtualTable': { + 'rowIndex': virtualRowPosition, + 'cellIndex': virtualColPosition + } + }; + } + /** + * Recover free index of row to append Cell. + * + * @param {int} rowIndex Index of row to find free space. + * @param {int} cellIndex Index of cell to find free space in table. + */ + + + function recoverCellIndex(rowIndex, cellIndex) { + if (!_virtualTable[rowIndex]) { + return cellIndex; + } + + if (!_virtualTable[rowIndex][cellIndex]) { + return cellIndex; + } + + var newCellIndex = cellIndex; + + while (_virtualTable[rowIndex][newCellIndex]) { + newCellIndex++; + + if (!_virtualTable[rowIndex][newCellIndex]) { + return newCellIndex; + } + } + } + /** + * Recover info about row and cell and add information to virtual table. + * + * @param {object} row Row to recover information. + * @param {object} cell Cell to recover information. + */ + + + function addCellInfoToVirtual(row, cell) { + var cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex); + var cellHasColspan = cell.colSpan > 1; + var cellHasRowspan = cell.rowSpan > 1; + var isThisSelectedCell = row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos; + setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false); // Add span rows to virtual Table. + + var rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0; + + if (rowspanNumber > 1) { + for (var rp = 1; rp < rowspanNumber; rp++) { + var rowspanIndex = row.rowIndex + rp; + adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell); + setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true); + } + } // Add span cols to virtual table. + + + var colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0; + + if (colspanNumber > 1) { + for (var cp = 1; cp < colspanNumber; cp++) { + var cellspanIndex = recoverCellIndex(row.rowIndex, cellIndex + cp); + adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell); + setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true); + } + } + } + /** + * Process validation and adjust of start point if needed + * + * @param {int} rowIndex + * @param {int} cellIndex + * @param {object} cell + * @param {bool} isSelectedCell + */ + + + function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) { + if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) { + _startPoint.colPos++; + } + } + /** + * Create virtual table of cells with all cells, including span cells. + */ + + + function createVirtualTable() { + var rows = domTable.rows; + + for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) { + var cells = rows[rowIndex].cells; + + for (var cellIndex = 0; cellIndex < cells.length; cellIndex++) { + addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]); + } + } + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getDeleteResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + + case TableResultAction.where.Row: + if (!cell.isVirtual && cell.isRowSpan) { + return TableResultAction.resultAction.AddCell; + } else if (cell.isRowSpan) { + return TableResultAction.resultAction.SubtractSpanCount; + } + + break; + } + + return TableResultAction.resultAction.RemoveCell; + } + /** + * Get action to be applied on the cell. + * + * @param {object} cell virtual table cell to apply action + */ + + + function getAddResultActionToCell(cell) { + switch (where) { + case TableResultAction.where.Column: + if (cell.isColSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isRowSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + + case TableResultAction.where.Row: + if (cell.isRowSpan) { + return TableResultAction.resultAction.SumSpanCount; + } else if (cell.isColSpan && cell.isVirtual) { + return TableResultAction.resultAction.Ignore; + } + + break; + } + + return TableResultAction.resultAction.AddCell; + } + + function init() { + setStartPoint(); + createVirtualTable(); + } /// /////////////////////////////////////////// + // Public functions + /// /////////////////////////////////////////// + + /** + * Recover array os what to do in table. + */ + + + this.getActionList = function () { + var fixedRow = where === TableResultAction.where.Row ? _startPoint.rowPos : -1; + var fixedCol = where === TableResultAction.where.Column ? _startPoint.colPos : -1; + var actualPosition = 0; + var canContinue = true; + + while (canContinue) { + var rowPosition = fixedRow >= 0 ? fixedRow : actualPosition; + var colPosition = fixedCol >= 0 ? fixedCol : actualPosition; + var row = _virtualTable[rowPosition]; + + if (!row) { + canContinue = false; + return _actionCellList; + } + + var cell = row[colPosition]; + + if (!cell) { + canContinue = false; + return _actionCellList; + } // Define action to be applied in this cell + + + var resultAction = TableResultAction.resultAction.Ignore; + + switch (action) { + case TableResultAction.requestAction.Add: + resultAction = getAddResultActionToCell(cell); + break; + + case TableResultAction.requestAction.Delete: + resultAction = getDeleteResultActionToCell(cell); + break; + } + + _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition)); + + actualPosition++; + } + + return _actionCellList; + }; + + init(); +}; +/** +* +* Where action occours enum. +*/ + + +TableResultAction.where = { + 'Row': 0, + 'Column': 1 +}; +/** +* +* Requested action to apply enum. +*/ + +TableResultAction.requestAction = { + 'Add': 0, + 'Delete': 1 +}; +/** +* +* Result action to be executed enum. +*/ + +TableResultAction.resultAction = { + 'Ignore': 0, + 'SubtractSpanCount': 1, + 'RemoveCell': 2, + 'AddCell': 3, + 'SumSpanCount': 4 +}; +/** + * + * @class editing.Table + * + * Table + * + */ + +var Table_Table = /*#__PURE__*/function () { + function Table() { + Table_classCallCheck(this, Table); + } + + Table_createClass(Table, [{ + key: "tab", + + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + value: function tab(rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + var nextCell = lists[isShift ? 'prev' : 'next'](cells, cell); + + if (nextCell) { + range.create(nextCell, 0).select(); + } + } + /** + * Add a new row + * + * @param {WrappedRange} rng + * @param {String} position (top/bottom) + * @return {Node} + */ + + }, { + key: "addRow", + value: function addRow(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var currentTr = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var trAttributes = this.recoverAttributes(currentTr); + var html = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<tr' + trAttributes + '></tr>'); + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var idCell = 0; idCell < actions.length; idCell++) { + var currentCell = actions[idCell]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + html.append('<td' + tdAttributes + '>' + dom.blank + '</td>'); + break; + + case TableResultAction.resultAction.SumSpanCount: + { + if (position === 'top') { + var baseCellTr = currentCell.baseCell.parent; + var isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex; + + if (isTopFromRowSpan) { + var newTd = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div></div>').append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html(); + html.append(newTd); + break; + } + } + + var rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10); + rowspanNumber++; + currentCell.baseCell.setAttribute('rowSpan', rowspanNumber); + } + break; + } + } + + if (position === 'top') { + currentTr.before(html); + } else { + var cellHasRowspan = cell.rowSpan > 1; + + if (cellHasRowspan) { + var lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentTr).parent().find('tr')[lastTrIndex]).after(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(html)); + return; + } + + currentTr.after(html); + } + } + /** + * Add a new col + * + * @param {WrappedRange} rng + * @param {String} position (left/right) + * @return {Node} + */ + + }, { + key: "addCol", + value: function addCol(rng, position) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var rowsGroup = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).siblings(); + rowsGroup.push(row); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Add, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + var currentCell = actions[actionIndex]; + var tdAttributes = this.recoverAttributes(currentCell.baseCell); + + switch (currentCell.action) { + case TableResultAction.resultAction.AddCell: + if (position === 'right') { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + + case TableResultAction.resultAction.SumSpanCount: + if (position === 'right') { + var colspanNumber = parseInt(currentCell.baseCell.colSpan, 10); + colspanNumber++; + currentCell.baseCell.setAttribute('colSpan', colspanNumber); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>'); + } + + break; + } + } + } + /* + * Copy attributes from element. + * + * @param {object} Element to recover attributes. + * @return {string} Copied string elements. + */ + + }, { + key: "recoverAttributes", + value: function recoverAttributes(el) { + var resultStr = ''; + + if (!el) { + return resultStr; + } + + var attrList = el.attributes || []; + + for (var i = 0; i < attrList.length; i++) { + if (attrList[i].name.toLowerCase() === 'id') { + continue; + } + + if (attrList[i].specified) { + resultStr += ' ' + attrList[i].name + '=\'' + attrList[i].value + '\''; + } + } + + return resultStr; + } + /** + * Delete current row + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteRow", + value: function deleteRow(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var rowPos = row[0].rowIndex; + var vTable = new TableResultAction(cell, TableResultAction.where.Row, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + var baseCell = actions[actionIndex].baseCell; + var virtualPosition = actions[actionIndex].virtualTable; + var hasRowspan = baseCell.rowSpan && baseCell.rowSpan > 1; + var rowspanNumber = hasRowspan ? parseInt(baseCell.rowSpan, 10) : 0; + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.AddCell: + { + var nextRow = row.next('tr')[0]; + + if (!nextRow) { + continue; + } + + var cloneRow = row[0].cells[cellPos]; + + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber); + nextRow.cells[cellPos].innerHTML = ''; + } else if (rowspanNumber === 2) { + nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]); + nextRow.cells[cellPos].removeAttribute('rowSpan'); + nextRow.cells[cellPos].innerHTML = ''; + } + } + } + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + if (hasRowspan) { + if (rowspanNumber > 2) { + rowspanNumber--; + baseCell.setAttribute('rowSpan', rowspanNumber); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (rowspanNumber === 2) { + baseCell.removeAttribute('rowSpan'); + + if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + + continue; + + case TableResultAction.resultAction.RemoveCell: + // Do not need remove cell because row will be deleted. + continue; + } + } + + row.remove(); + } + /** + * Delete current col + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteCol", + value: function deleteCol(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('tr'); + var cellPos = row.children('td, th').index(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell)); + var vTable = new TableResultAction(cell, TableResultAction.where.Column, TableResultAction.requestAction.Delete, external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(row).closest('table')[0]); + var actions = vTable.getActionList(); + + for (var actionIndex = 0; actionIndex < actions.length; actionIndex++) { + if (!actions[actionIndex]) { + continue; + } + + switch (actions[actionIndex].action) { + case TableResultAction.resultAction.Ignore: + continue; + + case TableResultAction.resultAction.SubtractSpanCount: + { + var baseCell = actions[actionIndex].baseCell; + var hasColspan = baseCell.colSpan && baseCell.colSpan > 1; + + if (hasColspan) { + var colspanNumber = baseCell.colSpan ? parseInt(baseCell.colSpan, 10) : 0; + + if (colspanNumber > 2) { + colspanNumber--; + baseCell.setAttribute('colSpan', colspanNumber); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } else if (colspanNumber === 2) { + baseCell.removeAttribute('colSpan'); + + if (baseCell.cellIndex === cellPos) { + baseCell.innerHTML = ''; + } + } + } + } + continue; + + case TableResultAction.resultAction.RemoveCell: + dom.remove(actions[actionIndex].baseCell, true); + continue; + } + } + } + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + + }, { + key: "createTable", + value: function createTable(colCount, rowCount, options) { + var tds = []; + var tdHTML; + + for (var idxCol = 0; idxCol < colCount; idxCol++) { + tds.push('<td>' + dom.blank + '</td>'); + } + + tdHTML = tds.join(''); + var trs = []; + var trHTML; + + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + + trHTML = trs.join(''); + var $table = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<table>' + trHTML + '</table>'); + + if (options && options.tableClassName) { + $table.addClass(options.tableClassName); + } + + return $table[0]; + } + /** + * Delete current table + * + * @param {WrappedRange} rng + * @return {Node} + */ + + }, { + key: "deleteTable", + value: function deleteTable(rng) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(cell).closest('table').remove(); + } + }]); + + return Table; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Editor.js +function Editor_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Editor_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Editor_createClass(Constructor, protoProps, staticProps) { if (protoProps) Editor_defineProperties(Constructor.prototype, protoProps); if (staticProps) Editor_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + + + + + + + + +var KEY_BOGUS = 'bogus'; +/** + * @class Editor + */ + +var Editor_Editor = /*#__PURE__*/function () { + function Editor(context) { + var _this = this; + + Editor_classCallCheck(this, Editor); + + this.context = context; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.editable = this.$editable[0]; + this.lastRange = null; + this.snapshot = null; + this.style = new Style_Style(); + this.table = new Table_Table(); + this.typing = new Typing_Typing(context); + this.bullet = new Bullet_Bullet(); + this.history = new History_History(context); + this.context.memo('help.escape', this.lang.help.escape); + this.context.memo('help.undo', this.lang.help.undo); + this.context.memo('help.redo', this.lang.help.redo); + this.context.memo('help.tab', this.lang.help.tab); + this.context.memo('help.untab', this.lang.help.untab); + this.context.memo('help.insertParagraph', this.lang.help.insertParagraph); + this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList); + this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList); + this.context.memo('help.indent', this.lang.help.indent); + this.context.memo('help.outdent', this.lang.help.outdent); + this.context.memo('help.formatPara', this.lang.help.formatPara); + this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule); + this.context.memo('help.fontName', this.lang.help.fontName); // native commands(with execCommand), generate function for execCommand + + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'formatBlock', 'removeFormat', 'backColor']; + + for (var idx = 0, len = commands.length; idx < len; idx++) { + this[commands[idx]] = function (sCmd) { + return function (value) { + _this.beforeCommand(); + + document.execCommand(sCmd, false, value); + + _this.afterCommand(true); + }; + }(commands[idx]); + + this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]); + } + + this.fontName = this.wrapCommand(function (value) { + return _this.fontStyling('font-family', env.validFontName(value)); + }); + this.fontSize = this.wrapCommand(function (value) { + var unit = _this.currentStyle()['font-size-unit']; + + return _this.fontStyling('font-size', value + unit); + }); + this.fontSizeUnit = this.wrapCommand(function (value) { + var size = _this.currentStyle()['font-size']; + + return _this.fontStyling('font-size', size + value); + }); + + for (var _idx = 1; _idx <= 6; _idx++) { + this['formatH' + _idx] = function (idx) { + return function () { + _this.formatBlock('H' + idx); + }; + }(_idx); + + this.context.memo('help.formatH' + _idx, this.lang.help['formatH' + _idx]); + } + + this.insertParagraph = this.wrapCommand(function () { + _this.typing.insertParagraph(_this.editable); + }); + this.insertOrderedList = this.wrapCommand(function () { + _this.bullet.insertOrderedList(_this.editable); + }); + this.insertUnorderedList = this.wrapCommand(function () { + _this.bullet.insertUnorderedList(_this.editable); + }); + this.indent = this.wrapCommand(function () { + _this.bullet.indent(_this.editable); + }); + this.outdent = this.wrapCommand(function () { + _this.bullet.outdent(_this.editable); + }); + /** + * insertNode + * insert node + * @param {Node} node + */ + + this.insertNode = this.wrapCommand(function (node) { + if (_this.isLimited(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).text().length)) { + return; + } + + var rng = _this.getLastRange(); + + rng.insertNode(node); + + _this.setLastRange(range.createFromNodeAfter(node).select()); + }); + /** + * insert text + * @param {String} text + */ + + this.insertText = this.wrapCommand(function (text) { + if (_this.isLimited(text.length)) { + return; + } + + var rng = _this.getLastRange(); + + var textNode = rng.insertNode(dom.createText(text)); + + _this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select()); + }); + /** + * paste HTML + * @param {String} markup + */ + + this.pasteHTML = this.wrapCommand(function (markup) { + if (_this.isLimited(markup.length)) { + return; + } + + markup = _this.context.invoke('codeview.purify', markup); + + var contents = _this.getLastRange().pasteHTML(markup); + + _this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select()); + }); + /** + * formatBlock + * + * @param {String} tagName + */ + + this.formatBlock = this.wrapCommand(function (tagName, $target) { + var onApplyCustomStyle = _this.options.callbacks.onApplyCustomStyle; + + if (onApplyCustomStyle) { + onApplyCustomStyle.call(_this, $target, _this.context, _this.onFormatBlock); + } else { + _this.onFormatBlock(tagName, $target); + } + }); + /** + * insert horizontal rule + */ + + this.insertHorizontalRule = this.wrapCommand(function () { + var hrNode = _this.getLastRange().insertNode(dom.create('HR')); + + if (hrNode.nextSibling) { + _this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select()); + } + }); + /** + * lineHeight + * @param {String} value + */ + + this.lineHeight = this.wrapCommand(function (value) { + _this.style.stylePara(_this.getLastRange(), { + lineHeight: value + }); + }); + /** + * create link (command) + * + * @param {Object} linkInfo + */ + + this.createLink = this.wrapCommand(function (linkInfo) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.isNewWindow; + var checkProtocol = linkInfo.checkProtocol; + + var rng = linkInfo.range || _this.getLastRange(); + + var additionalTextLength = linkText.length - rng.toString().length; + + if (additionalTextLength > 0 && _this.isLimited(additionalTextLength)) { + return; + } + + var isTextChanged = rng.toString() !== linkText; // handle spaced urls from input + + if (typeof linkUrl === 'string') { + linkUrl = linkUrl.trim(); + } + + if (_this.options.onCreateLink) { + linkUrl = _this.options.onCreateLink(linkUrl); + } else if (checkProtocol) { + // if url doesn't have any protocol and not even a relative or a label, use http:// as default + linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(linkUrl) ? linkUrl : _this.options.defaultProtocol + linkUrl; + } + + var anchors = []; + + if (isTextChanged) { + rng = rng.deleteContents(); + var anchor = rng.insertNode(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = _this.style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(anchors, function (idx, anchor) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href', linkUrl); + + if (isNewWindow) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('target', '_blank'); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).removeAttr('target'); + } + }); + + _this.setLastRange(_this.createRangeFromList(anchors).select()); + }); + /** + * setting color + * + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + + this.color = this.wrapCommand(function (colorInfo) { + var foreColor = colorInfo.foreColor; + var backColor = colorInfo.backColor; + + if (foreColor) { + document.execCommand('foreColor', false, foreColor); + } + + if (backColor) { + document.execCommand('backColor', false, backColor); + } + }); + /** + * Set foreground color + * + * @param {String} colorCode foreground color code + */ + + this.foreColor = this.wrapCommand(function (colorInfo) { + document.execCommand('foreColor', false, colorInfo); + }); + /** + * insert Table + * + * @param {String} dimension of table (ex : "5x5") + */ + + this.insertTable = this.wrapCommand(function (dim) { + var dimension = dim.split('x'); + + var rng = _this.getLastRange().deleteContents(); + + rng.insertNode(_this.table.createTable(dimension[0], dimension[1], _this.options)); + }); + /** + * remove media object and Figure Elements if media object is img with Figure. + */ + + this.removeMedia = this.wrapCommand(function () { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).parent(); + + if ($target.closest('figure').length) { + $target.closest('figure').remove(); + } else { + $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()).detach(); + } + + _this.context.triggerEvent('media.delete', $target, _this.$editable); + }); + /** + * float me + * + * @param {String} value + */ + + this.floatMe = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + $target.toggleClass('note-float-left', value === 'left'); + $target.toggleClass('note-float-right', value === 'right'); + $target.css('float', value === 'none' ? '' : value); + }); + /** + * resize overlay element + * @param {String} value + */ + + this.resize = this.wrapCommand(function (value) { + var $target = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(_this.restoreTarget()); + value = parseFloat(value); + + if (value === 0) { + $target.css('width', ''); + } else { + $target.css({ + width: value * 100 + '%', + height: '' + }); + } + }); + } + + Editor_createClass(Editor, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + // bind custom events + this.$editable.on('keydown', function (event) { + if (event.keyCode === core_key.code.ENTER) { + _this2.context.triggerEvent('enter', event); + } + + _this2.context.triggerEvent('keydown', event); // keep a snapshot to limit text on input event + + + _this2.snapshot = _this2.history.makeSnapshot(); + _this2.hasKeyShortCut = false; + + if (!event.isDefaultPrevented()) { + if (_this2.options.shortcuts) { + _this2.hasKeyShortCut = _this2.handleKeyMap(event); + } else { + _this2.preventDefaultEditableShortCuts(event); + } + } + + if (_this2.isLimited(1, event)) { + var lastRange = _this2.getLastRange(); + + if (lastRange.eo - lastRange.so === 0) { + return false; + } + } + + _this2.setLastRange(); // record undo in the key event except keyMap. + + + if (_this2.options.recordEveryKeystroke) { + if (_this2.hasKeyShortCut === false) { + _this2.history.recordUndo(); + } + } + }).on('keyup', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('keyup', event); + }).on('focus', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('focus', event); + }).on('blur', function (event) { + _this2.context.triggerEvent('blur', event); + }).on('mousedown', function (event) { + _this2.context.triggerEvent('mousedown', event); + }).on('mouseup', function (event) { + _this2.setLastRange(); + + _this2.history.recordUndo(); + + _this2.context.triggerEvent('mouseup', event); + }).on('scroll', function (event) { + _this2.context.triggerEvent('scroll', event); + }).on('paste', function (event) { + _this2.setLastRange(); + + _this2.context.triggerEvent('paste', event); + }).on('input', function () { + // To limit composition characters (e.g. Korean) + if (_this2.isLimited(0) && _this2.snapshot) { + _this2.history.applySnapshot(_this2.snapshot); + } + }); + this.$editable.attr('spellcheck', this.options.spellCheck); + this.$editable.attr('autocorrect', this.options.spellCheck); + + if (this.options.disableGrammar) { + this.$editable.attr('data-gramm', false); + } // init content before set event + + + this.$editable.html(dom.html(this.$note) || dom.emptyPara); + this.$editable.on(env.inputEventName, func.debounce(function () { + _this2.context.triggerEvent('change', _this2.$editable.html(), _this2.$editable); + }, 10)); + this.$editable.on('focusin', function (event) { + _this2.context.triggerEvent('focusin', event); + }).on('focusout', function (event) { + _this2.context.triggerEvent('focusout', event); + }); + + if (this.options.airMode) { + if (this.options.overrideContextMenu) { + this.$editor.on('contextmenu', function (event) { + _this2.context.triggerEvent('contextmenu', event); + + return false; + }); + } + } else { + if (this.options.width) { + this.$editor.outerWidth(this.options.width); + } + + if (this.options.height) { + this.$editable.outerHeight(this.options.height); + } + + if (this.options.maxHeight) { + this.$editable.css('max-height', this.options.maxHeight); + } + + if (this.options.minHeight) { + this.$editable.css('min-height', this.options.minHeight); + } + } + + this.history.recordUndo(); + this.setLastRange(); + } + }, { + key: "destroy", + value: function destroy() { + this.$editable.off(); + } + }, { + key: "handleKeyMap", + value: function handleKeyMap(event) { + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + var keys = []; + + if (event.metaKey) { + keys.push('CMD'); + } + + if (event.ctrlKey && !event.altKey) { + keys.push('CTRL'); + } + + if (event.shiftKey) { + keys.push('SHIFT'); + } + + var keyName = core_key.nameFromCode[event.keyCode]; + + if (keyName) { + keys.push(keyName); + } + + var eventName = keyMap[keys.join('+')]; + + if (keyName === 'TAB' && !this.options.tabDisable) { + this.afterCommand(); + } else if (eventName) { + if (this.context.invoke(eventName) !== false) { + event.preventDefault(); // if keyMap action was invoked + + return true; + } + } else if (core_key.isEdit(event.keyCode)) { + this.afterCommand(); + } + + return false; + } + }, { + key: "preventDefaultEditableShortCuts", + value: function preventDefaultEditableShortCuts(event) { + // B(Bold, 66) / I(Italic, 73) / U(Underline, 85) + if ((event.ctrlKey || event.metaKey) && lists.contains([66, 73, 85], event.keyCode)) { + event.preventDefault(); + } + } + }, { + key: "isLimited", + value: function isLimited(pad, event) { + pad = pad || 0; + + if (typeof event !== 'undefined') { + if (core_key.isMove(event.keyCode) || core_key.isNavigation(event.keyCode) || event.ctrlKey || event.metaKey || lists.contains([core_key.code.BACKSPACE, core_key.code.DELETE], event.keyCode)) { + return false; + } + } + + if (this.options.maxTextLength > 0) { + if (this.$editable.text().length + pad > this.options.maxTextLength) { + return true; + } + } + + return false; + } + /** + * create range + * @return {WrappedRange} + */ + + }, { + key: "createRange", + value: function createRange() { + this.focus(); + this.setLastRange(); + return this.getLastRange(); + } + /** + * create a new range from the list of elements + * + * @param {list} dom element list + * @return {WrappedRange} + */ + + }, { + key: "createRangeFromList", + value: function createRangeFromList(lst) { + var startRange = range.createFromNodeBefore(lists.head(lst)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(lists.last(lst)); + var endPoint = endRange.getEndPoint(); + return range.create(startPoint.node, startPoint.offset, endPoint.node, endPoint.offset); + } + /** + * set the last range + * + * if given rng is exist, set rng as the last range + * or create a new range at the end of the document + * + * @param {WrappedRange} rng + */ + + }, { + key: "setLastRange", + value: function setLastRange(rng) { + if (rng) { + this.lastRange = rng; + } else { + this.lastRange = range.create(this.editable); + + if (external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.lastRange.sc).closest('.note-editable').length === 0) { + this.lastRange = range.createFromBodyElement(this.editable); + } + } + } + /** + * get the last range + * + * if there is a saved last range, return it + * or create a new range and return it + * + * @return {WrappedRange} + */ + + }, { + key: "getLastRange", + value: function getLastRange() { + if (!this.lastRange) { + this.setLastRange(); + } + + return this.lastRange; + } + /** + * saveRange + * + * save current range + * + * @param {Boolean} [thenCollapse=false] + */ + + }, { + key: "saveRange", + value: function saveRange(thenCollapse) { + if (thenCollapse) { + this.getLastRange().collapse().select(); + } + } + /** + * restoreRange + * + * restore lately range + */ + + }, { + key: "restoreRange", + value: function restoreRange() { + if (this.lastRange) { + this.lastRange.select(); + this.focus(); + } + } + }, { + key: "saveTarget", + value: function saveTarget(node) { + this.$editable.data('target', node); + } + }, { + key: "clearTarget", + value: function clearTarget() { + this.$editable.removeData('target'); + } + }, { + key: "restoreTarget", + value: function restoreTarget() { + return this.$editable.data('target'); + } + /** + * currentStyle + * + * current style + * @return {Object|Boolean} unfocus + */ + + }, { + key: "currentStyle", + value: function currentStyle() { + var rng = range.create(); + + if (rng) { + rng = rng.normalize(); + } + + return rng ? this.style.current(rng) : this.style.fromNode(this.$editable); + } + /** + * style from node + * + * @param {jQuery} $node + * @return {Object} + */ + + }, { + key: "styleFromNode", + value: function styleFromNode($node) { + return this.style.fromNode($node); + } + /** + * undo + */ + + }, { + key: "undo", + value: function undo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.undo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /* + * commit + */ + + }, { + key: "commit", + value: function commit() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.commit(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * redo + */ + + }, { + key: "redo", + value: function redo() { + this.context.triggerEvent('before.command', this.$editable.html()); + this.history.redo(); + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + /** + * before command + */ + + }, { + key: "beforeCommand", + value: function beforeCommand() { + this.context.triggerEvent('before.command', this.$editable.html()); // Set styleWithCSS before run a command + + document.execCommand('styleWithCSS', false, this.options.styleWithCSS); // keep focus on editable before command execution + + this.focus(); + } + /** + * after command + * @param {Boolean} isPreventTrigger + */ + + }, { + key: "afterCommand", + value: function afterCommand(isPreventTrigger) { + this.normalizeContent(); + this.history.recordUndo(); + + if (!isPreventTrigger) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + } + /** + * handle tab key + */ + + }, { + key: "tab", + value: function tab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng); + } else { + if (this.options.tabSize === 0) { + return false; + } + + if (!this.isLimited(this.options.tabSize)) { + this.beforeCommand(); + this.typing.insertTab(rng, this.options.tabSize); + this.afterCommand(); + } + } + } + /** + * handle shift+tab key + */ + + }, { + key: "untab", + value: function untab() { + var rng = this.getLastRange(); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.table.tab(rng, true); + } else { + if (this.options.tabSize === 0) { + return false; + } + } + } + /** + * run given function between beforeCommand and afterCommand + */ + + }, { + key: "wrapCommand", + value: function wrapCommand(fn) { + return function () { + this.beforeCommand(); + fn.apply(this, arguments); + this.afterCommand(); + }; + } + /** + * insert image + * + * @param {String} src + * @param {String|Function} param + * @return {Promise} + */ + + }, { + key: "insertImage", + value: function insertImage(src, param) { + var _this3 = this; + + return createImage(src, param).then(function ($image) { + _this3.beforeCommand(); + + if (typeof param === 'function') { + param($image); + } else { + if (typeof param === 'string') { + $image.attr('data-filename', param); + } + + $image.css('width', Math.min(_this3.$editable.width(), $image.width())); + } + + $image.show(); + + _this3.getLastRange().insertNode($image[0]); + + _this3.setLastRange(range.createFromNodeAfter($image[0]).select()); + + _this3.afterCommand(); + }).fail(function (e) { + _this3.context.triggerEvent('image.upload.error', e); + }); + } + /** + * insertImages + * @param {File[]} files + */ + + }, { + key: "insertImagesAsDataURL", + value: function insertImagesAsDataURL(files) { + var _this4 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(files, function (idx, file) { + var filename = file.name; + + if (_this4.options.maximumImageFileSize && _this4.options.maximumImageFileSize < file.size) { + _this4.context.triggerEvent('image.upload.error', _this4.lang.image.maximumFileSizeError); + } else { + readFileAsDataURL(file).then(function (dataURL) { + return _this4.insertImage(dataURL, filename); + }).fail(function () { + _this4.context.triggerEvent('image.upload.error'); + }); + } + }); + } + /** + * insertImagesOrCallback + * @param {File[]} files + */ + + }, { + key: "insertImagesOrCallback", + value: function insertImagesOrCallback(files) { + var callbacks = this.options.callbacks; // If onImageUpload set, + + if (callbacks.onImageUpload) { + this.context.triggerEvent('image.upload', files); // else insert Image as dataURL + } else { + this.insertImagesAsDataURL(files); + } + } + /** + * return selected plain text + * @return {String} text + */ + + }, { + key: "getSelectedText", + value: function getSelectedText() { + var rng = this.getLastRange(); // if range on anchor, expand range with anchor + + if (rng.isOnAnchor()) { + rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor)); + } + + return rng.toString(); + } + }, { + key: "onFormatBlock", + value: function onFormatBlock(tagName, $target) { + // [workaround] for MSIE, IE need `<` + document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName); // support custom class + + if ($target && $target.length) { + // find the exact element has given tagName + if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) { + $target = $target.find(tagName); + } + + if ($target && $target.length) { + var className = $target[0].className || ''; + + if (className) { + var currentRange = this.createRange(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()([currentRange.sc, currentRange.ec]).closest(tagName); + $parent.addClass(className); + } + } + } + } + }, { + key: "formatPara", + value: function formatPara() { + this.formatBlock('P'); + } + }, { + key: "fontStyling", + value: function fontStyling(target, value) { + var rng = this.getLastRange(); + + if (rng !== '') { + var spans = this.style.styleNodes(rng); + this.$editor.find('.note-status-output').html(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(spans).css(target, value); // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + + if (rng.isCollapsed()) { + var firstSpan = lists.head(spans); + + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNode(firstSpan.firstChild).select(); + this.setLastRange(); + this.$editable.data(KEY_BOGUS, firstSpan); + } + } else { + this.setLastRange(this.createRangeFromList(spans).select()); + } + } else { + var noteStatusOutput = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.now(); + this.$editor.find('.note-status-output').html('<div id="note-status-output-' + noteStatusOutput + '" class="alert alert-info">' + this.lang.output.noSelection + '</div>'); + setTimeout(function () { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('#note-status-output-' + noteStatusOutput).remove(); + }, 5000); + } + } + /** + * unlink + * + * @type command + */ + + }, { + key: "unlink", + value: function unlink() { + var rng = this.getLastRange(); + + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + this.setLastRange(); + this.beforeCommand(); + document.execCommand('unlink'); + this.afterCommand(); + } + } + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=""] + */ + + }, { + key: "getLinkInfo", + value: function getLinkInfo() { + var rng = this.getLastRange().expand(dom.isAnchor); // Get the first anchor on range(for edit). + + var $anchor = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(lists.head(rng.nodes(dom.isAnchor))); + var linkInfo = { + range: rng, + text: rng.toString(), + url: $anchor.length ? $anchor.attr('href') : '' + }; // When anchor exists, + + if ($anchor.length) { + // Set isNewWindow by checking its target. + linkInfo.isNewWindow = $anchor.attr('target') === '_blank'; + } + + return linkInfo; + } + }, { + key: "addRow", + value: function addRow(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addRow(rng, position); + this.afterCommand(); + } + } + }, { + key: "addCol", + value: function addCol(position) { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.addCol(rng, position); + this.afterCommand(); + } + } + }, { + key: "deleteRow", + value: function deleteRow() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteRow(rng); + this.afterCommand(); + } + } + }, { + key: "deleteCol", + value: function deleteCol() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteCol(rng); + this.afterCommand(); + } + } + }, { + key: "deleteTable", + value: function deleteTable() { + var rng = this.getLastRange(this.$editable); + + if (rng.isCollapsed() && rng.isOnCell()) { + this.beforeCommand(); + this.table.deleteTable(rng); + this.afterCommand(); + } + } + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + + }, { + key: "resizeTo", + value: function resizeTo(pos, $target, bKeepRatio) { + var imageSize; + + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + } + /** + * returns whether editable area has focus or not. + */ + + }, { + key: "hasFocus", + value: function hasFocus() { + return this.$editable.is(':focus'); + } + /** + * set focus + */ + + }, { + key: "focus", + value: function focus() { + // [workaround] Screen will move when page is scolled in IE. + // - do focus when not focused + if (!this.hasFocus()) { + this.$editable.focus(); + } + } + /** + * returns whether contents is empty or not. + * @return {Boolean} + */ + + }, { + key: "isEmpty", + value: function isEmpty() { + return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html(); + } + /** + * Removes all contents and restores the editable instance to an _emptyPara_. + */ + + }, { + key: "empty", + value: function empty() { + this.context.invoke('code', dom.emptyPara); + } + /** + * normalize content + */ + + }, { + key: "normalizeContent", + value: function normalizeContent() { + this.$editable[0].normalize(); + } + }]); + + return Editor; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Clipboard.js +function Clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Clipboard_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Clipboard_createClass(Constructor, protoProps, staticProps) { if (protoProps) Clipboard_defineProperties(Constructor.prototype, protoProps); if (staticProps) Clipboard_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Clipboard_Clipboard = /*#__PURE__*/function () { + function Clipboard(context) { + Clipboard_classCallCheck(this, Clipboard); + + this.context = context; + this.$editable = context.layoutInfo.editable; + } + + Clipboard_createClass(Clipboard, [{ + key: "initialize", + value: function initialize() { + this.$editable.on('paste', this.pasteByEvent.bind(this)); + } + /** + * paste by clipboard event + * + * @param {Event} event + */ + + }, { + key: "pasteByEvent", + value: function pasteByEvent(event) { + var _this = this; + + var clipboardData = event.originalEvent.clipboardData; + + if (clipboardData && clipboardData.items && clipboardData.items.length) { + var item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items); + + if (item.kind === 'file' && item.type.indexOf('image/') !== -1) { + // paste img file + this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]); + event.preventDefault(); + } else if (item.kind === 'string') { + // paste text with maxTextLength check + if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) { + event.preventDefault(); + } + } + } else if (window.clipboardData) { + // for IE + var text = window.clipboardData.getData('text'); + + if (this.context.invoke('editor.isLimited', text.length)) { + event.preventDefault(); + } + } // Call editor.afterCommand after proceeding default event handler + + + setTimeout(function () { + _this.context.invoke('editor.afterCommand'); + }, 10); + } + }]); + + return Clipboard; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Dropzone.js +function Dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) Dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) Dropzone_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Dropzone_Dropzone = /*#__PURE__*/function () { + function Dropzone(context) { + Dropzone_classCallCheck(this, Dropzone); + + this.context = context; + this.$eventListener = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.lang = this.options.langInfo; + this.documentEventHandlers = {}; + this.$dropzone = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-dropzone">', '<div class="note-dropzone-message"></div>', '</div>'].join('')).prependTo(this.$editor); + } + /** + * attach Drag and Drop Events + */ + + + Dropzone_createClass(Dropzone, [{ + key: "initialize", + value: function initialize() { + if (this.options.disableDragAndDrop) { + // prevent default drop event + this.documentEventHandlers.onDrop = function (e) { + e.preventDefault(); + }; // do not consider outside of dropzone + + + this.$eventListener = this.$dropzone; + this.$eventListener.on('drop', this.documentEventHandlers.onDrop); + } else { + this.attachDragAndDropEvent(); + } + } + /** + * attach Drag and Drop Events + */ + + }, { + key: "attachDragAndDropEvent", + value: function attachDragAndDropEvent() { + var _this = this; + + var collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + var $dropzoneMessage = this.$dropzone.find('.note-dropzone-message'); + + this.documentEventHandlers.onDragenter = function (e) { + var isCodeview = _this.context.invoke('codeview.isActivated'); + + var hasEditorSize = _this.$editor.width() > 0 && _this.$editor.height() > 0; + + if (!isCodeview && !collection.length && hasEditorSize) { + _this.$editor.addClass('dragover'); + + _this.$dropzone.width(_this.$editor.width()); + + _this.$dropzone.height(_this.$editor.height()); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + } + + collection = collection.add(e.target); + }; + + this.documentEventHandlers.onDragleave = function (e) { + collection = collection.not(e.target); // If nodeName is BODY, then just make it over (fix for IE) + + if (!collection.length || e.target.nodeName === 'BODY') { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + } + }; + + this.documentEventHandlers.onDrop = function () { + collection = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(); + + _this.$editor.removeClass('dragover'); + }; // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + + + this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter).on('dragleave', this.documentEventHandlers.onDragleave).on('drop', this.documentEventHandlers.onDrop); // change dropzone's message on hover. + + this.$dropzone.on('dragenter', function () { + _this.$dropzone.addClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dropImage); + }).on('dragleave', function () { + _this.$dropzone.removeClass('hover'); + + $dropzoneMessage.text(_this.lang.image.dragImageHere); + }); // attach dropImage + + this.$dropzone.on('drop', function (event) { + var dataTransfer = event.originalEvent.dataTransfer; // stop the browser from opening the dropped content + + event.preventDefault(); + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + _this.$editable.focus(); + + _this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(dataTransfer.types, function (idx, type) { + // skip moz-specific types + if (type.toLowerCase().indexOf('_moz_') > -1) { + return; + } + + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + _this.context.invoke('editor.pasteHTML', content); + } else { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(content).each(function (idx, item) { + _this.context.invoke('editor.insertNode', item); + }); + } + }); + } + }).on('dragover', false); // prevent default dragover event + } + }, { + key: "destroy", + value: function destroy() { + var _this2 = this; + + Object.keys(this.documentEventHandlers).forEach(function (key) { + _this2.$eventListener.off(key.substr(2).toLowerCase(), _this2.documentEventHandlers[key]); + }); + this.documentEventHandlers = {}; + } + }]); + + return Dropzone; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Codeview.js +function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function Codeview_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Codeview_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Codeview_createClass(Constructor, protoProps, staticProps) { if (protoProps) Codeview_defineProperties(Constructor.prototype, protoProps); if (staticProps) Codeview_defineProperties(Constructor, staticProps); return Constructor; } + + + +/** + * @class Codeview + */ + +var Codeview_CodeView = /*#__PURE__*/function () { + function CodeView(context) { + Codeview_classCallCheck(this, CodeView); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.options = context.options; + this.CodeMirrorConstructor = window.CodeMirror; + + if (this.options.codemirror.CodeMirrorConstructor) { + this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor; + } + } + + Codeview_createClass(CodeView, [{ + key: "sync", + value: function sync(html) { + var isCodeview = this.isActivated(); + var CodeMirror = this.CodeMirrorConstructor; + + if (isCodeview) { + if (html) { + if (CodeMirror) { + this.$codable.data('cmEditor').getDoc().setValue(html); + } else { + this.$codable.val(html); + } + } else { + if (CodeMirror) { + this.$codable.data('cmEditor').save(); + } + } + } + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.$codable.on('keyup', function (event) { + if (event.keyCode === core_key.code.ESCAPE) { + _this.deactivate(); + } + }); + } + /** + * @return {Boolean} + */ + + }, { + key: "isActivated", + value: function isActivated() { + return this.$editor.hasClass('codeview'); + } + /** + * toggle codeview + */ + + }, { + key: "toggle", + value: function toggle() { + if (this.isActivated()) { + this.deactivate(); + } else { + this.activate(); + } + + this.context.triggerEvent('codeview.toggled'); + } + /** + * purify input value + * @param value + * @returns {*} + */ + + }, { + key: "purify", + value: function purify(value) { + if (this.options.codeviewFilter) { + // filter code view regex + value = value.replace(this.options.codeviewFilterRegex, ''); // allow specific iframe tag + + if (this.options.codeviewIframeFilter) { + var whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase); + value = value.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi, function (tag) { + // remove if src attribute is duplicated + if (/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(tag)) { + return ''; + } + + var _iterator = _createForOfIteratorHelper(whitelist), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var src = _step.value; + + // pass if src is trusted + if (new RegExp('src="(https?:)?\/\/' + src.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + '\/(.+)"').test(tag)) { + return tag; + } + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return ''; + }); + } + } + + return value; + } + /** + * activate code view + */ + + }, { + key: "activate", + value: function activate() { + var _this2 = this; + + var CodeMirror = this.CodeMirrorConstructor; + this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml)); + this.$codable.height(this.$editable.height()); + this.context.invoke('toolbar.updateCodeview', true); + this.context.invoke('airPopover.updateCodeview', true); + this.$editor.addClass('codeview'); + this.$codable.focus(); // activate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror); // CodeMirror TernServer + + if (this.options.codemirror.tern) { + var server = new CodeMirror.TernServer(this.options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function (cm) { + server.updateArgHints(cm); + }); + } + + cmEditor.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', cmEditor.getValue(), event); + }); + cmEditor.on('change', function () { + _this2.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor); + }); // CodeMirror hasn't Padding. + + cmEditor.setSize(null, this.$editable.outerHeight()); + this.$codable.data('cmEditor', cmEditor); + } else { + this.$codable.on('blur', function (event) { + _this2.context.triggerEvent('blur.codeview', _this2.$codable.val(), event); + }); + this.$codable.on('input', function () { + _this2.context.triggerEvent('change.codeview', _this2.$codable.val(), _this2.$codable); + }); + } + } + /** + * deactivate code view + */ + + }, { + key: "deactivate", + value: function deactivate() { + var CodeMirror = this.CodeMirrorConstructor; // deactivate CodeMirror as codable + + if (CodeMirror) { + var cmEditor = this.$codable.data('cmEditor'); + this.$codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara); + var isChange = this.$editable.html() !== value; + this.$editable.html(value); + this.$editable.height(this.options.height ? this.$codable.height() : 'auto'); + this.$editor.removeClass('codeview'); + + if (isChange) { + this.context.triggerEvent('change', this.$editable.html(), this.$editable); + } + + this.$editable.focus(); + this.context.invoke('toolbar.updateCodeview', false); + this.context.invoke('airPopover.updateCodeview', false); + } + }, { + key: "destroy", + value: function destroy() { + if (this.isActivated()) { + this.deactivate(); + } + } + }]); + + return CodeView; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Statusbar.js +function Statusbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Statusbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Statusbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Statusbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Statusbar_defineProperties(Constructor, staticProps); return Constructor; } + + +var EDITABLE_PADDING = 24; + +var Statusbar_Statusbar = /*#__PURE__*/function () { + function Statusbar(context) { + Statusbar_classCallCheck(this, Statusbar); + + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$statusbar = context.layoutInfo.statusbar; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + } + + Statusbar_createClass(Statusbar, [{ + key: "initialize", + value: function initialize() { + var _this = this; + + if (this.options.airMode || this.options.disableResizeEditor) { + this.destroy(); + return; + } + + this.$statusbar.on('mousedown', function (event) { + event.preventDefault(); + event.stopPropagation(); + + var editableTop = _this.$editable.offset().top - _this.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + var height = event.clientY - (editableTop + EDITABLE_PADDING); + height = _this.options.minheight > 0 ? Math.max(height, _this.options.minheight) : height; + height = _this.options.maxHeight > 0 ? Math.min(height, _this.options.maxHeight) : height; + + _this.$editable.height(height); + }; + + _this.$document.on('mousemove', onMouseMove).one('mouseup', function () { + _this.$document.off('mousemove', onMouseMove); + }); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$statusbar.off(); + this.$statusbar.addClass('locked'); + } + }]); + + return Statusbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Fullscreen.js +function Fullscreen_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Fullscreen_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Fullscreen_createClass(Constructor, protoProps, staticProps) { if (protoProps) Fullscreen_defineProperties(Constructor.prototype, protoProps); if (staticProps) Fullscreen_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Fullscreen_Fullscreen = /*#__PURE__*/function () { + function Fullscreen(context) { + var _this = this; + + Fullscreen_classCallCheck(this, Fullscreen); + + this.context = context; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$codable = context.layoutInfo.codable; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$scrollbar = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('html, body'); + + this.onResize = function () { + _this.resizeTo({ + h: _this.$window.height() - _this.$toolbar.outerHeight() + }); + }; + } + + Fullscreen_createClass(Fullscreen, [{ + key: "resizeTo", + value: function resizeTo(size) { + this.$editable.css('height', size.h); + this.$codable.css('height', size.h); + + if (this.$codable.data('cmeditor')) { + this.$codable.data('cmeditor').setsize(null, size.h); + } + } + /** + * toggle fullscreen + */ + + }, { + key: "toggle", + value: function toggle() { + this.$editor.toggleClass('fullscreen'); + + if (this.isFullscreen()) { + this.$editable.data('orgHeight', this.$editable.css('height')); + this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight')); + this.$editable.css('maxHeight', ''); + this.$window.on('resize', this.onResize).trigger('resize'); + this.$scrollbar.css('overflow', 'hidden'); + } else { + this.$window.off('resize', this.onResize); + this.resizeTo({ + h: this.$editable.data('orgHeight') + }); + this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight')); + this.$scrollbar.css('overflow', 'visible'); + } + + this.context.invoke('toolbar.updateFullscreen', this.isFullscreen()); + } + }, { + key: "isFullscreen", + value: function isFullscreen() { + return this.$editor.hasClass('fullscreen'); + } + }]); + + return Fullscreen; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Handle.js +function Handle_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Handle_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Handle_createClass(Constructor, protoProps, staticProps) { if (protoProps) Handle_defineProperties(Constructor.prototype, protoProps); if (staticProps) Handle_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var Handle_Handle = /*#__PURE__*/function () { + function Handle(context) { + var _this = this; + + Handle_classCallCheck(this, Handle); + + this.context = context; + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + this.lang = this.options.langInfo; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + if (_this.update(e.target, e)) { + e.preventDefault(); + } + }, + 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': function summernoteKeyupSummernoteScrollSummernoteChangeSummernoteDialogShown() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Handle_createClass(Handle, [{ + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$handle = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(['<div class="note-handle">', '<div class="note-control-selection">', '<div class="note-control-selection-bg"></div>', '<div class="note-control-holder note-control-nw"></div>', '<div class="note-control-holder note-control-ne"></div>', '<div class="note-control-holder note-control-sw"></div>', '<div class="', this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing', ' note-control-se"></div>', this.options.disableResizeImage ? '' : '<div class="note-control-selection-info"></div>', '</div>', '</div>'].join('')).prependTo(this.$editingArea); + this.$handle.on('mousedown', function (event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var $target = _this2.$handle.find('.note-control-selection').data('target'); + + var posStart = $target.offset(); + + var scrollTop = _this2.$document.scrollTop(); + + var onMouseMove = function onMouseMove(event) { + _this2.context.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + _this2.update($target[0], event); + }; + + _this2.$document.on('mousemove', onMouseMove).one('mouseup', function (e) { + e.preventDefault(); + + _this2.$document.off('mousemove', onMouseMove); + + _this2.context.invoke('editor.afterCommand'); + }); + + if (!$target.data('ratio')) { + // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }); // Listen for scrolling on the handle overlay. + + this.$handle.on('wheel', function (e) { + e.preventDefault(); + + _this2.update(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$handle.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (this.context.isDisabled()) { + return false; + } + + var isImage = dom.isImg(target); + var $selection = this.$handle.find('.note-control-selection'); + this.context.invoke('imagePopover.update', target, event); + + if (isImage) { + var $image = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target); + var position = $image.position(); + var pos = { + left: position.left + parseInt($image.css('marginLeft'), 10), + top: position.top + parseInt($image.css('marginTop'), 10) + }; // exclude margin + + var imageSize = { + w: $image.outerWidth(false), + h: $image.outerHeight(false) + }; + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', $image); // save current image element. + + var origImageObj = new Image(); + origImageObj.src = $image.attr('src'); + var sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')'; + $selection.find('.note-control-selection-info').text(sizingText); + this.context.invoke('editor.saveTarget', target); + } else { + this.hide(); + } + + return isImage; + } + /** + * hide + * + * @param {jQuery} $handle + */ + + }, { + key: "hide", + value: function hide() { + this.context.invoke('editor.clearTarget'); + this.$handle.children().hide(); + } + }]); + + return Handle; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoLink.js +function AutoLink_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoLink_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoLink_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoLink_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoLink_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var defaultScheme = 'http://'; +var linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i; + +var AutoLink_AutoLink = /*#__PURE__*/function () { + function AutoLink(context) { + var _this = this; + + AutoLink_classCallCheck(this, AutoLink); + + this.context = context; + this.options = context.options; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoLink_createClass(AutoLink, [{ + key: "initialize", + value: function initialize() { + this.lastWordRange = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWordRange = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWordRange) { + return; + } + + var keyword = this.lastWordRange.toString(); + var match = keyword.match(linkPattern); + + if (match && (match[1] || match[2])) { + var link = match[1] ? keyword : defaultScheme + keyword; + var urlText = this.options.showDomainOnlyForAutolink ? keyword.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i, '').split('/')[0] : keyword; + var node = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<a />').html(urlText).attr('href', link)[0]; + + if (this.context.options.linkTargetBlank) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).attr('target', '_blank'); + } + + this.lastWordRange.insertNode(node); + this.lastWordRange = null; + this.context.invoke('editor.focus'); + } + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWordRange = wordRange; + } + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains([core_key.code.ENTER, core_key.code.SPACE], e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoLink; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoSync.js +function AutoSync_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoSync_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoSync_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoSync_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoSync_defineProperties(Constructor, staticProps); return Constructor; } + + +/** + * textarea auto sync. + */ + +var AutoSync_AutoSync = /*#__PURE__*/function () { + function AutoSync(context) { + var _this = this; + + AutoSync_classCallCheck(this, AutoSync); + + this.$note = context.layoutInfo.note; + this.events = { + 'summernote.change': function summernoteChange() { + _this.$note.val(context.invoke('code')); + } + }; + } + + AutoSync_createClass(AutoSync, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return dom.isTextarea(this.$note[0]); + } + }]); + + return AutoSync; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AutoReplace.js +function AutoReplace_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AutoReplace_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AutoReplace_createClass(Constructor, protoProps, staticProps) { if (protoProps) AutoReplace_defineProperties(Constructor.prototype, protoProps); if (staticProps) AutoReplace_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var AutoReplace_AutoReplace = /*#__PURE__*/function () { + function AutoReplace(context) { + var _this = this; + + AutoReplace_classCallCheck(this, AutoReplace); + + this.context = context; + this.options = context.options.replace || {}; + this.keys = [core_key.code.ENTER, core_key.code.SPACE, core_key.code.PERIOD, core_key.code.COMMA, core_key.code.SEMICOLON, core_key.code.SLASH]; + this.previousKeydownCode = null; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + } + }; + } + + AutoReplace_createClass(AutoReplace, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.match; + } + }, { + key: "initialize", + value: function initialize() { + this.lastWord = null; + } + }, { + key: "destroy", + value: function destroy() { + this.lastWord = null; + } + }, { + key: "replace", + value: function replace() { + if (!this.lastWord) { + return; + } + + var self = this; + var keyword = this.lastWord.toString(); + this.options.match(keyword, function (match) { + if (match) { + var node = ''; + + if (typeof match === 'string') { + node = dom.createText(match); + } else if (match instanceof jQuery) { + node = match[0]; + } else if (match instanceof Node) { + node = match; + } + + if (!node) return; + self.lastWord.insertNode(node); + self.lastWord = null; + self.context.invoke('editor.focus'); + } + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + // this forces it to remember the last whole word, even if multiple termination keys are pressed + // before the previous key is let go. + if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) { + this.previousKeydownCode = e.keyCode; + return; + } + + if (lists.contains(this.keys, e.keyCode)) { + var wordRange = this.context.invoke('editor.createRange').getWordRange(); + this.lastWord = wordRange; + } + + this.previousKeydownCode = e.keyCode; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + if (lists.contains(this.keys, e.keyCode)) { + this.replace(); + } + } + }]); + + return AutoReplace; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Placeholder.js +function Placeholder_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Placeholder_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Placeholder_createClass(Constructor, protoProps, staticProps) { if (protoProps) Placeholder_defineProperties(Constructor.prototype, protoProps); if (staticProps) Placeholder_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Placeholder_Placeholder = /*#__PURE__*/function () { + function Placeholder(context) { + var _this = this; + + Placeholder_classCallCheck(this, Placeholder); + + this.context = context; + this.$editingArea = context.layoutInfo.editingArea; + this.options = context.options; + + if (this.options.inheritPlaceholder === true) { + // get placeholder value from the original element + this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder; + } + + this.events = { + 'summernote.init summernote.change': function summernoteInitSummernoteChange() { + _this.update(); + }, + 'summernote.codeview.toggled': function summernoteCodeviewToggled() { + _this.update(); + } + }; + } + + Placeholder_createClass(Placeholder, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !!this.options.placeholder; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$placeholder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-placeholder">'); + this.$placeholder.on('click', function () { + _this2.context.invoke('focus'); + }).html(this.options.placeholder).prependTo(this.$editingArea); + this.update(); + } + }, { + key: "destroy", + value: function destroy() { + this.$placeholder.remove(); + } + }, { + key: "update", + value: function update() { + var isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty'); + this.$placeholder.toggle(isShow); + } + }]); + + return Placeholder; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Buttons.js +function Buttons_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Buttons_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Buttons_createClass(Constructor, protoProps, staticProps) { if (protoProps) Buttons_defineProperties(Constructor.prototype, protoProps); if (staticProps) Buttons_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var Buttons_Buttons = /*#__PURE__*/function () { + function Buttons(context) { + Buttons_classCallCheck(this, Buttons); + + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.context = context; + this.$toolbar = context.layoutInfo.toolbar; + this.options = context.options; + this.lang = this.options.langInfo; + this.invertedKeyMap = func.invertObject(this.options.keyMap[env.isMac ? 'mac' : 'pc']); + } + + Buttons_createClass(Buttons, [{ + key: "representShortcut", + value: function representShortcut(editorMethod) { + var shortcut = this.invertedKeyMap[editorMethod]; + + if (!this.options.shortcuts || !shortcut) { + return ''; + } + + if (env.isMac) { + shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + shortcut = shortcut.replace('BACKSLASH', '\\').replace('SLASH', '/').replace('LEFTBRACKET', '[').replace('RIGHTBRACKET', ']'); + return ' (' + shortcut + ')'; + } + }, { + key: "button", + value: function button(o) { + if (!this.options.tooltip && o.tooltip) { + delete o.tooltip; + } + + o.container = this.options.container; + return this.ui.button(o); + } + }, { + key: "initialize", + value: function initialize() { + this.addToolbarButtons(); + this.addImagePopoverButtons(); + this.addLinkPopoverButtons(); + this.addTablePopoverButtons(); + this.fontInstalledMap = {}; + } + }, { + key: "destroy", + value: function destroy() { + delete this.fontInstalledMap; + } + }, { + key: "isFontInstalled", + value: function isFontInstalled(name) { + if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) { + this.fontInstalledMap[name] = env.isFontInstalled(name) || lists.contains(this.options.fontNamesIgnoreCheck, name); + } + + return this.fontInstalledMap[name]; + } + }, { + key: "isFontDeservedToAdd", + value: function isFontDeservedToAdd(name) { + name = name.toLowerCase(); + return name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1; + } + }, { + key: "colorPalette", + value: function colorPalette(className, tooltip, backColor, foreColor) { + var _this = this; + + return this.ui.buttonGroup({ + className: 'note-color ' + className, + children: [this.button({ + className: 'note-current-color-button', + contents: this.ui.icon(this.options.icons.font + ' note-recent-color'), + tooltip: tooltip, + click: function click(e) { + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget); + + if (backColor && foreColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor'), + foreColor: $button.attr('data-foreColor') + }); + } else if (backColor) { + _this.context.invoke('editor.color', { + backColor: $button.attr('data-backColor') + }); + } else if (foreColor) { + _this.context.invoke('editor.color', { + foreColor: $button.attr('data-foreColor') + }); + } + }, + callback: function callback($button) { + var $recentColor = $button.find('.note-recent-color'); + + if (backColor) { + $recentColor.css('background-color', _this.options.colorButton.backColor); + $button.attr('data-backColor', _this.options.colorButton.backColor); + } + + if (foreColor) { + $recentColor.css('color', _this.options.colorButton.foreColor); + $button.attr('data-foreColor', _this.options.colorButton.foreColor); + } else { + $recentColor.css('color', 'transparent'); + } + } + }), this.button({ + className: 'dropdown-toggle', + contents: this.ui.dropdownButtonContents('', this.options), + tooltip: this.lang.color.more, + data: { + toggle: 'dropdown' + } + }), this.ui.dropdown({ + items: (backColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.background + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">', this.lang.color.transparent, '</button>', '</div>', '<div class="note-holder" data-event="backColor"><!-- back colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.backColor + '" data-event="backColorPalette">', '</div>', '<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>', '</div>'].join('') : '') + (foreColor ? ['<div class="note-palette">', '<div class="note-palette-title">' + this.lang.color.foreground + '</div>', '<div>', '<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">', this.lang.color.resetToDefault, '</button>', '</div>', '<div class="note-holder" data-event="foreColor"><!-- fore colors --></div>', '<div>', '<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">', this.lang.color.cpSelect, '</button>', '<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="' + this.options.colorButton.foreColor + '" data-event="foreColorPalette">', '</div>', // Fix missing Div, Commented to find easily if it's wrong + '<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>', '</div>'].join('') : ''), + callback: function callback($dropdown) { + $dropdown.find('.note-holder').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: _this.options.colors, + colorsName: _this.options.colorsName, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + /* TODO: do we have to record recent custom colors within cookies? */ + + var customColors = [['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF']]; + $dropdown.find('.note-holder-custom').each(function (idx, item) { + var $holder = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + $holder.append(_this.ui.palette({ + colors: customColors, + colorsName: customColors, + eventName: $holder.data('event'), + container: _this.options.container, + tooltip: _this.options.tooltip + }).render()); + }); + $dropdown.find('input[type=color]').each(function (idx, item) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).change(function () { + var $chip = $dropdown.find('#' + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this).data('event')).find('.note-color-btn').first(); + var color = this.value.toUpperCase(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $chip.click(); + }); + }); + }, + click: function click(event) { + event.stopPropagation(); + var $parent = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('.' + className).find('.note-dropdown-menu'); + var $button = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target); + var eventName = $button.data('event'); + var value = $button.attr('data-value'); + + if (eventName === 'openPalette') { + var $picker = $parent.find('#' + value); + var $palette = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]); // Shift palette chips + + var $chip = $palette.find('.note-color-btn').last().detach(); // Set chip attributes + + var color = $picker.val(); + $chip.css('background-color', color).attr('aria-label', color).attr('data-value', color).attr('data-original-title', color); + $palette.prepend($chip); + $picker.click(); + } else { + if (lists.contains(['backColor', 'foreColor'], eventName)) { + var key = eventName === 'backColor' ? 'background-color' : 'color'; + var $color = $button.closest('.note-color').find('.note-recent-color'); + var $currentButton = $button.closest('.note-color').find('.note-current-color-button'); + $color.css(key, value); + $currentButton.attr('data-' + eventName, value); + } + + _this.context.invoke('editor.' + eventName, value); + } + } + })] + }).render(); + } + }, { + key: "addToolbarButtons", + value: function addToolbarButtons() { + var _this2 = this; + + this.context.memo('button.style', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.magic), _this2.options), + tooltip: _this2.lang.style.style, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + className: 'dropdown-style', + items: _this2.options.styleTags, + title: _this2.lang.style.style, + template: function template(item) { + // TBD: need to be simplified + if (typeof item === 'string') { + item = { + tag: item, + title: Object.prototype.hasOwnProperty.call(_this2.lang.style, item) ? _this2.lang.style[item] : item + }; + } + + var tag = item.tag; + var title = item.title; + var style = item.style ? ' style="' + item.style + '" ' : ''; + var className = item.className ? ' class="' + item.className + '"' : ''; + return '<' + tag + style + className + '>' + title + '</' + tag + '>'; + }, + click: _this2.context.createInvokeHandler('editor.formatBlock') + })]).render(); + }); + + var _loop = function _loop(styleIdx, styleLen) { + var item = _this2.options.styleTags[styleIdx]; + + _this2.context.memo('button.style.' + item, function () { + return _this2.button({ + className: 'note-btn-style-' + item, + contents: '<div data-value="' + item + '">' + item.toUpperCase() + '</div>', + tooltip: _this2.lang.style[item], + click: _this2.context.createInvokeHandler('editor.formatBlock') + }).render(); + }); + }; + + for (var styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) { + _loop(styleIdx, styleLen); + } + + this.context.memo('button.bold', function () { + return _this2.button({ + className: 'note-btn-bold', + contents: _this2.ui.icon(_this2.options.icons.bold), + tooltip: _this2.lang.font.bold + _this2.representShortcut('bold'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.bold') + }).render(); + }); + this.context.memo('button.italic', function () { + return _this2.button({ + className: 'note-btn-italic', + contents: _this2.ui.icon(_this2.options.icons.italic), + tooltip: _this2.lang.font.italic + _this2.representShortcut('italic'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.italic') + }).render(); + }); + this.context.memo('button.underline', function () { + return _this2.button({ + className: 'note-btn-underline', + contents: _this2.ui.icon(_this2.options.icons.underline), + tooltip: _this2.lang.font.underline + _this2.representShortcut('underline'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.underline') + }).render(); + }); + this.context.memo('button.clear', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.eraser), + tooltip: _this2.lang.font.clear + _this2.representShortcut('removeFormat'), + click: _this2.context.createInvokeHandler('editor.removeFormat') + }).render(); + }); + this.context.memo('button.strikethrough', function () { + return _this2.button({ + className: 'note-btn-strikethrough', + contents: _this2.ui.icon(_this2.options.icons.strikethrough), + tooltip: _this2.lang.font.strikethrough + _this2.representShortcut('strikethrough'), + click: _this2.context.createInvokeHandlerAndUpdateState('editor.strikethrough') + }).render(); + }); + this.context.memo('button.superscript', function () { + return _this2.button({ + className: 'note-btn-superscript', + contents: _this2.ui.icon(_this2.options.icons.superscript), + tooltip: _this2.lang.font.superscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.superscript') + }).render(); + }); + this.context.memo('button.subscript', function () { + return _this2.button({ + className: 'note-btn-subscript', + contents: _this2.ui.icon(_this2.options.icons.subscript), + tooltip: _this2.lang.font.subscript, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.subscript') + }).render(); + }); + this.context.memo('button.fontname', function () { + var styleInfo = _this2.context.invoke('editor.currentStyle'); + + if (_this2.options.addDefaultFonts) { + // Add 'default' fonts into the fontnames array if not exist + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(styleInfo['font-family'].split(','), function (idx, fontname) { + fontname = fontname.trim().replace(/['"]+/g, ''); + + if (_this2.isFontDeservedToAdd(fontname)) { + if (_this2.options.fontNames.indexOf(fontname) === -1) { + _this2.options.fontNames.push(fontname); + } + } + }); + } + + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontname"></span>', _this2.options), + tooltip: _this2.lang.font.name, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontname', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontNames.filter(_this2.isFontInstalled.bind(_this2)), + title: _this2.lang.font.name, + template: function template(item) { + return '<span style="font-family: ' + env.validFontName(item) + '">' + item + '</span>'; + }, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontName') + })]).render(); + }); + this.context.memo('button.fontsize', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>', _this2.options), + tooltip: _this2.lang.font.size, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsize', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizes, + title: _this2.lang.font.size, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSize') + })]).render(); + }); + this.context.memo('button.fontsizeunit', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>', _this2.options), + tooltip: _this2.lang.font.sizeunit, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + className: 'dropdown-fontsizeunit', + checkClassName: _this2.options.icons.menuCheck, + items: _this2.options.fontSizeUnits, + title: _this2.lang.font.sizeunit, + click: _this2.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit') + })]).render(); + }); + this.context.memo('button.color', function () { + return _this2.colorPalette('note-color-all', _this2.lang.color.recent, true, true); + }); + this.context.memo('button.forecolor', function () { + return _this2.colorPalette('note-color-fore', _this2.lang.color.foreground, false, true); + }); + this.context.memo('button.backcolor', function () { + return _this2.colorPalette('note-color-back', _this2.lang.color.background, true, false); + }); + this.context.memo('button.ul', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.unorderedlist), + tooltip: _this2.lang.lists.unordered + _this2.representShortcut('insertUnorderedList'), + click: _this2.context.createInvokeHandler('editor.insertUnorderedList') + }).render(); + }); + this.context.memo('button.ol', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.orderedlist), + tooltip: _this2.lang.lists.ordered + _this2.representShortcut('insertOrderedList'), + click: _this2.context.createInvokeHandler('editor.insertOrderedList') + }).render(); + }); + var justifyLeft = this.button({ + contents: this.ui.icon(this.options.icons.alignLeft), + tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'), + click: this.context.createInvokeHandler('editor.justifyLeft') + }); + var justifyCenter = this.button({ + contents: this.ui.icon(this.options.icons.alignCenter), + tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'), + click: this.context.createInvokeHandler('editor.justifyCenter') + }); + var justifyRight = this.button({ + contents: this.ui.icon(this.options.icons.alignRight), + tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'), + click: this.context.createInvokeHandler('editor.justifyRight') + }); + var justifyFull = this.button({ + contents: this.ui.icon(this.options.icons.alignJustify), + tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'), + click: this.context.createInvokeHandler('editor.justifyFull') + }); + var outdent = this.button({ + contents: this.ui.icon(this.options.icons.outdent), + tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'), + click: this.context.createInvokeHandler('editor.outdent') + }); + var indent = this.button({ + contents: this.ui.icon(this.options.icons.indent), + tooltip: this.lang.paragraph.indent + this.representShortcut('indent'), + click: this.context.createInvokeHandler('editor.indent') + }); + this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render')); + this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render')); + this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render')); + this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render')); + this.context.memo('button.outdent', func.invoke(outdent, 'render')); + this.context.memo('button.indent', func.invoke(indent, 'render')); + this.context.memo('button.paragraph', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.alignLeft), _this2.options), + tooltip: _this2.lang.paragraph.paragraph, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown([_this2.ui.buttonGroup({ + className: 'note-align', + children: [justifyLeft, justifyCenter, justifyRight, justifyFull] + }), _this2.ui.buttonGroup({ + className: 'note-list', + children: [outdent, indent] + })])]).render(); + }); + this.context.memo('button.height', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.textHeight), _this2.options), + tooltip: _this2.lang.font.height, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdownCheck({ + items: _this2.options.lineHeights, + checkClassName: _this2.options.icons.menuCheck, + className: 'dropdown-line-height', + title: _this2.lang.font.height, + click: _this2.context.createInvokeHandler('editor.lineHeight') + })]).render(); + }); + this.context.memo('button.table', function () { + return _this2.ui.buttonGroup([_this2.button({ + className: 'dropdown-toggle', + contents: _this2.ui.dropdownButtonContents(_this2.ui.icon(_this2.options.icons.table), _this2.options), + tooltip: _this2.lang.table.table, + data: { + toggle: 'dropdown' + } + }), _this2.ui.dropdown({ + title: _this2.lang.table.table, + className: 'note-table', + items: ['<div class="note-dimension-picker">', '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>', '<div class="note-dimension-picker-highlighted"></div>', '<div class="note-dimension-picker-unhighlighted"></div>', '</div>', '<div class="note-dimension-display">1 x 1</div>'].join('') + })], { + callback: function callback($node) { + var $catcher = $node.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: _this2.options.insertTableMaxSize.col + 'em', + height: _this2.options.insertTableMaxSize.row + 'em' + }).mousedown(_this2.context.createInvokeHandler('editor.insertTable')).on('mousemove', _this2.tableMoveHandler.bind(_this2)); + } + }).render(); + }); + this.context.memo('button.link', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.link), + tooltip: _this2.lang.link.link + _this2.representShortcut('linkDialog.show'), + click: _this2.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.picture', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.picture), + tooltip: _this2.lang.image.image, + click: _this2.context.createInvokeHandler('imageDialog.show') + }).render(); + }); + this.context.memo('button.video', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.video), + tooltip: _this2.lang.video.video, + click: _this2.context.createInvokeHandler('videoDialog.show') + }).render(); + }); + this.context.memo('button.hr', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.minus), + tooltip: _this2.lang.hr.insert + _this2.representShortcut('insertHorizontalRule'), + click: _this2.context.createInvokeHandler('editor.insertHorizontalRule') + }).render(); + }); + this.context.memo('button.fullscreen', function () { + return _this2.button({ + className: 'btn-fullscreen note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.arrowsAlt), + tooltip: _this2.lang.options.fullscreen, + click: _this2.context.createInvokeHandler('fullscreen.toggle') + }).render(); + }); + this.context.memo('button.codeview', function () { + return _this2.button({ + className: 'btn-codeview note-codeview-keep', + contents: _this2.ui.icon(_this2.options.icons.code), + tooltip: _this2.lang.options.codeview, + click: _this2.context.createInvokeHandler('codeview.toggle') + }).render(); + }); + this.context.memo('button.redo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.redo), + tooltip: _this2.lang.history.redo + _this2.representShortcut('redo'), + click: _this2.context.createInvokeHandler('editor.redo') + }).render(); + }); + this.context.memo('button.undo', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.undo), + tooltip: _this2.lang.history.undo + _this2.representShortcut('undo'), + click: _this2.context.createInvokeHandler('editor.undo') + }).render(); + }); + this.context.memo('button.help', function () { + return _this2.button({ + contents: _this2.ui.icon(_this2.options.icons.question), + tooltip: _this2.lang.options.help, + click: _this2.context.createInvokeHandler('helpDialog.show') + }).render(); + }); + } + /** + * image: [ + * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], + * ['float', ['floatLeft', 'floatRight', 'floatNone']], + * ['remove', ['removeMedia']], + * ], + */ + + }, { + key: "addImagePopoverButtons", + value: function addImagePopoverButtons() { + var _this3 = this; + + // Image Size Buttons + this.context.memo('button.resizeFull', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">100%</span>', + tooltip: _this3.lang.image.resizeFull, + click: _this3.context.createInvokeHandler('editor.resize', '1') + }).render(); + }); + this.context.memo('button.resizeHalf', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">50%</span>', + tooltip: _this3.lang.image.resizeHalf, + click: _this3.context.createInvokeHandler('editor.resize', '0.5') + }).render(); + }); + this.context.memo('button.resizeQuarter', function () { + return _this3.button({ + contents: '<span class="note-fontsize-10">25%</span>', + tooltip: _this3.lang.image.resizeQuarter, + click: _this3.context.createInvokeHandler('editor.resize', '0.25') + }).render(); + }); + this.context.memo('button.resizeNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.resizeNone, + click: _this3.context.createInvokeHandler('editor.resize', '0') + }).render(); + }); // Float Buttons + + this.context.memo('button.floatLeft', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatLeft), + tooltip: _this3.lang.image.floatLeft, + click: _this3.context.createInvokeHandler('editor.floatMe', 'left') + }).render(); + }); + this.context.memo('button.floatRight', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.floatRight), + tooltip: _this3.lang.image.floatRight, + click: _this3.context.createInvokeHandler('editor.floatMe', 'right') + }).render(); + }); + this.context.memo('button.floatNone', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.rollback), + tooltip: _this3.lang.image.floatNone, + click: _this3.context.createInvokeHandler('editor.floatMe', 'none') + }).render(); + }); // Remove Buttons + + this.context.memo('button.removeMedia', function () { + return _this3.button({ + contents: _this3.ui.icon(_this3.options.icons.trash), + tooltip: _this3.lang.image.remove, + click: _this3.context.createInvokeHandler('editor.removeMedia') + }).render(); + }); + } + }, { + key: "addLinkPopoverButtons", + value: function addLinkPopoverButtons() { + var _this4 = this; + + this.context.memo('button.linkDialogShow', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.link), + tooltip: _this4.lang.link.edit, + click: _this4.context.createInvokeHandler('linkDialog.show') + }).render(); + }); + this.context.memo('button.unlink', function () { + return _this4.button({ + contents: _this4.ui.icon(_this4.options.icons.unlink), + tooltip: _this4.lang.link.unlink, + click: _this4.context.createInvokeHandler('editor.unlink') + }).render(); + }); + } + /** + * table : [ + * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], + * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']] + * ], + */ + + }, { + key: "addTablePopoverButtons", + value: function addTablePopoverButtons() { + var _this5 = this; + + this.context.memo('button.addRowUp', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowAbove), + tooltip: _this5.lang.table.addRowAbove, + click: _this5.context.createInvokeHandler('editor.addRow', 'top') + }).render(); + }); + this.context.memo('button.addRowDown', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowBelow), + tooltip: _this5.lang.table.addRowBelow, + click: _this5.context.createInvokeHandler('editor.addRow', 'bottom') + }).render(); + }); + this.context.memo('button.addColLeft', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colBefore), + tooltip: _this5.lang.table.addColLeft, + click: _this5.context.createInvokeHandler('editor.addCol', 'left') + }).render(); + }); + this.context.memo('button.addColRight', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colAfter), + tooltip: _this5.lang.table.addColRight, + click: _this5.context.createInvokeHandler('editor.addCol', 'right') + }).render(); + }); + this.context.memo('button.deleteRow', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.rowRemove), + tooltip: _this5.lang.table.delRow, + click: _this5.context.createInvokeHandler('editor.deleteRow') + }).render(); + }); + this.context.memo('button.deleteCol', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.colRemove), + tooltip: _this5.lang.table.delCol, + click: _this5.context.createInvokeHandler('editor.deleteCol') + }).render(); + }); + this.context.memo('button.deleteTable', function () { + return _this5.button({ + className: 'btn-md', + contents: _this5.ui.icon(_this5.options.icons.trash), + tooltip: _this5.lang.table.delTable, + click: _this5.context.createInvokeHandler('editor.deleteTable') + }).render(); + }); + } + }, { + key: "build", + value: function build($container, groups) { + for (var groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) { + var group = groups[groupIdx]; + var groupName = Array.isArray(group) ? group[0] : group; + var buttons = Array.isArray(group) ? group.length === 1 ? [group[0]] : group[1] : [group]; + var $group = this.ui.buttonGroup({ + className: 'note-' + groupName + }).render(); + + for (var idx = 0, len = buttons.length; idx < len; idx++) { + var btn = this.context.memo('button.' + buttons[idx]); + + if (btn) { + $group.append(typeof btn === 'function' ? btn(this.context) : btn); + } + } + + $group.appendTo($container); + } + } + /** + * @param {jQuery} [$container] + */ + + }, { + key: "updateCurrentStyle", + value: function updateCurrentStyle($container) { + var _this6 = this; + + var $cont = $container || this.$toolbar; + var styleInfo = this.context.invoke('editor.currentStyle'); + this.updateBtnStates($cont, { + '.note-btn-bold': function noteBtnBold() { + return styleInfo['font-bold'] === 'bold'; + }, + '.note-btn-italic': function noteBtnItalic() { + return styleInfo['font-italic'] === 'italic'; + }, + '.note-btn-underline': function noteBtnUnderline() { + return styleInfo['font-underline'] === 'underline'; + }, + '.note-btn-subscript': function noteBtnSubscript() { + return styleInfo['font-subscript'] === 'subscript'; + }, + '.note-btn-superscript': function noteBtnSuperscript() { + return styleInfo['font-superscript'] === 'superscript'; + }, + '.note-btn-strikethrough': function noteBtnStrikethrough() { + return styleInfo['font-strikethrough'] === 'strikethrough'; + } + }); + + if (styleInfo['font-family']) { + var fontNames = styleInfo['font-family'].split(',').map(function (name) { + return name.replace(/[\'\"]/g, '').replace(/\s+$/, '').replace(/^\s+/, ''); + }); + var fontName = lists.find(fontNames, this.isFontInstalled.bind(this)); + $cont.find('.dropdown-fontname a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontName + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName); + } + + if (styleInfo['font-size']) { + var fontSize = styleInfo['font-size']; + $cont.find('.dropdown-fontsize a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); // always compare with string to avoid creating another func. + + var isChecked = $item.data('value') + '' === fontSize + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsize').text(fontSize); + var fontSizeUnit = styleInfo['font-size-unit']; + $cont.find('.dropdown-fontsizeunit a').each(function (idx, item) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item); + var isChecked = $item.data('value') + '' === fontSizeUnit + ''; + $item.toggleClass('checked', isChecked); + }); + $cont.find('.note-current-fontsizeunit').text(fontSizeUnit); + } + + if (styleInfo['line-height']) { + var lineHeight = styleInfo['line-height']; + $cont.find('.dropdown-line-height li a').each(function (idx, item) { + // always compare with string to avoid creating another func. + var isChecked = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(item).data('value') + '' === lineHeight + ''; + _this6.className = isChecked ? 'checked' : ''; + }); + } + } + }, { + key: "updateBtnStates", + value: function updateBtnStates($container, infos) { + var _this7 = this; + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.each(infos, function (selector, pred) { + _this7.ui.toggleBtnActive($container.find(selector), pred()); + }); + } + }, { + key: "tableMoveHandler", + value: function tableMoveHandler(event) { + var PX_PER_EM = 18; + var $picker = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target.parentNode); // target is mousecatcher + + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var posOffset; // HTML5 with jQuery - e.offsetX is undefined in Firefox + + if (event.offsetX === undefined) { + var posCatcher = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(event.target).offset(); + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / PX_PER_EM) || 1, + r: Math.ceil(posOffset.y / PX_PER_EM) || 1 + }; + $highlighted.css({ + width: dim.c + 'em', + height: dim.r + 'em' + }); + $catcher.data('value', dim.c + 'x' + dim.r); + + if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) { + $unhighlighted.css({ + width: dim.c + 1 + 'em' + }); + } + + if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) { + $unhighlighted.css({ + height: dim.r + 1 + 'em' + }); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + } + }]); + + return Buttons; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/Toolbar.js +function Toolbar_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function Toolbar_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function Toolbar_createClass(Constructor, protoProps, staticProps) { if (protoProps) Toolbar_defineProperties(Constructor.prototype, protoProps); if (staticProps) Toolbar_defineProperties(Constructor, staticProps); return Constructor; } + + + +var Toolbar_Toolbar = /*#__PURE__*/function () { + function Toolbar(context) { + Toolbar_classCallCheck(this, Toolbar); + + this.context = context; + this.$window = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(window); + this.$document = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document); + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$note = context.layoutInfo.note; + this.$editor = context.layoutInfo.editor; + this.$toolbar = context.layoutInfo.toolbar; + this.$editable = context.layoutInfo.editable; + this.$statusbar = context.layoutInfo.statusbar; + this.options = context.options; + this.isFollowing = false; + this.followScroll = this.followScroll.bind(this); + } + + Toolbar_createClass(Toolbar, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !this.options.airMode; + } + }, { + key: "initialize", + value: function initialize() { + var _this = this; + + this.options.toolbar = this.options.toolbar || []; + + if (!this.options.toolbar.length) { + this.$toolbar.hide(); + } else { + this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar); + } + + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + + this.changeContainer(false); + this.$note.on('summernote.keyup summernote.mouseup summernote.change', function () { + _this.context.invoke('buttons.updateCurrentStyle'); + }); + this.context.invoke('buttons.updateCurrentStyle'); + + if (this.options.followingToolbar) { + this.$window.on('scroll resize', this.followScroll); + } + } + }, { + key: "destroy", + value: function destroy() { + this.$toolbar.children().remove(); + + if (this.options.followingToolbar) { + this.$window.off('scroll resize', this.followScroll); + } + } + }, { + key: "followScroll", + value: function followScroll() { + if (this.$editor.hasClass('fullscreen')) { + return false; + } + + var editorHeight = this.$editor.outerHeight(); + var editorWidth = this.$editor.width(); + var toolbarHeight = this.$toolbar.height(); + var statusbarHeight = this.$statusbar.height(); // check if the web app is currently using another static bar + + var otherBarHeight = 0; + + if (this.options.otherStaticBar) { + otherBarHeight = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.otherStaticBar).outerHeight(); + } + + var currentOffset = this.$document.scrollTop(); + var editorOffsetTop = this.$editor.offset().top; + var editorOffsetBottom = editorOffsetTop + editorHeight; + var activateOffset = editorOffsetTop - otherBarHeight; + var deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight; + + if (!this.isFollowing && currentOffset > activateOffset && currentOffset < deactivateOffsetBottom - toolbarHeight) { + this.isFollowing = true; + this.$editable.css({ + marginTop: this.$toolbar.outerHeight() + }); + this.$toolbar.css({ + position: 'fixed', + top: otherBarHeight, + width: editorWidth, + zIndex: 1000 + }); + } else if (this.isFollowing && (currentOffset < activateOffset || currentOffset > deactivateOffsetBottom)) { + this.isFollowing = false; + this.$toolbar.css({ + position: 'relative', + top: 0, + width: '100%', + zIndex: 'auto' + }); + this.$editable.css({ + marginTop: '' + }); + } + } + }, { + key: "changeContainer", + value: function changeContainer(isFullscreen) { + if (isFullscreen) { + this.$toolbar.prependTo(this.$editor); + } else { + if (this.options.toolbarContainer) { + this.$toolbar.appendTo(this.options.toolbarContainer); + } + } + + if (this.options.followingToolbar) { + this.followScroll(); + } + } + }, { + key: "updateFullscreen", + value: function updateFullscreen(isFullscreen) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen); + this.changeContainer(isFullscreen); + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.deactivate(); + } else { + this.activate(); + } + } + }, { + key: "activate", + value: function activate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, true); + } + }, { + key: "deactivate", + value: function deactivate(isIncludeCodeview) { + var $btn = this.$toolbar.find('button'); + + if (!isIncludeCodeview) { + $btn = $btn.not('.note-codeview-keep'); + } + + this.ui.toggleBtn($btn, false); + } + }]); + + return Toolbar; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkDialog.js +function LinkDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var LinkDialog_LinkDialog = /*#__PURE__*/function () { + function LinkDialog(context) { + LinkDialog_classCallCheck(this, LinkDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']); + } + + LinkDialog_createClass(LinkDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group">', "<label for=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.textToDisplay, "</label>"), "<input id=\"note-dialog-link-txt-".concat(this.options.id, "\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>"), '</div>', '<div class="form-group note-form-group">', "<label for=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.link.url, "</label>"), "<input id=\"note-dialog-link-url-".concat(this.options.id, "\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>"), '</div>', !this.options.disableLinkTarget ? external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-open-in-new-window', + text: this.lang.link.openInNewWindow, + checked: true + }).render()).html() : '', external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div/>').append(this.ui.checkbox({ + className: 'sn-checkbox-use-protocol', + text: this.lang.link.useProtocol, + checked: true + }).render()).html()].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.link.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + className: 'link-dialog', + title: this.lang.link.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + /** + * toggle update button + */ + + }, { + key: "toggleLinkBtn", + value: function toggleLinkBtn($linkBtn, $linkText, $linkUrl) { + this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + } + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {Object} linkInfo + * @return {Promise} + */ + + }, { + key: "showLinkDialog", + value: function showLinkDialog(linkInfo) { + var _this = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $linkText = _this.$dialog.find('.note-link-text'); + + var $linkUrl = _this.$dialog.find('.note-link-url'); + + var $linkBtn = _this.$dialog.find('.note-link-btn'); + + var $openInNewWindow = _this.$dialog.find('.sn-checkbox-open-in-new-window input[type=checkbox]'); + + var $useProtocol = _this.$dialog.find('.sn-checkbox-use-protocol input[type=checkbox]'); + + _this.ui.onDialogShown(_this.$dialog, function () { + _this.context.triggerEvent('dialog.shown'); // If no url was given and given text is valid URL then copy that into URL Field + + + if (!linkInfo.url && func.isValidUrl(linkInfo.text)) { + linkInfo.url = linkInfo.text; + } + + $linkText.on('input paste propertychange', function () { + // If linktext was modified by input events, + // cloning text from linkUrl will be stopped. + linkInfo.text = $linkText.val(); + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.text); + $linkUrl.on('input paste propertychange', function () { + // Display same text on `Text to display` as default + // when linktext has no text + if (!linkInfo.text) { + $linkText.val($linkUrl.val()); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + }).val(linkInfo.url); + + if (!env.isSupportTouch) { + $linkUrl.trigger('focus'); + } + + _this.toggleLinkBtn($linkBtn, $linkText, $linkUrl); + + _this.bindEnterKey($linkUrl, $linkBtn); + + _this.bindEnterKey($linkText, $linkBtn); + + var isNewWindowChecked = linkInfo.isNewWindow !== undefined ? linkInfo.isNewWindow : _this.context.options.linkTargetBlank; + $openInNewWindow.prop('checked', isNewWindowChecked); + var useProtocolChecked = linkInfo.url ? false : _this.context.options.useProtocol; + $useProtocol.prop('checked', useProtocolChecked); + $linkBtn.one('click', function (event) { + event.preventDefault(); + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + isNewWindow: $openInNewWindow.is(':checked'), + checkProtocol: $useProtocol.is(':checked') + }); + + _this.ui.hideDialog(_this.$dialog); + }); + }); + + _this.ui.onDialogHidden(_this.$dialog, function () { + // detach events + $linkText.off(); + $linkUrl.off(); + $linkBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this.ui.showDialog(_this.$dialog); + }).promise(); + } + /** + * @param {Object} layoutInfo + */ + + }, { + key: "show", + value: function show() { + var _this2 = this; + + var linkInfo = this.context.invoke('editor.getLinkInfo'); + this.context.invoke('editor.saveRange'); + this.showLinkDialog(linkInfo).then(function (linkInfo) { + _this2.context.invoke('editor.restoreRange'); + + _this2.context.invoke('editor.createLink', linkInfo); + }).fail(function () { + _this2.context.invoke('editor.restoreRange'); + }); + } + }]); + + return LinkDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/LinkPopover.js +function LinkPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function LinkPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function LinkPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) LinkPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) LinkPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var LinkPopover_LinkPopover = /*#__PURE__*/function () { + function LinkPopover(context) { + var _this = this; + + LinkPopover_classCallCheck(this, LinkPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteChangeSummernoteScroll() { + _this.update(); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + LinkPopover_createClass(LinkPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.link); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-link-popover', + callback: function callback($node) { + var $content = $node.find('.popover-content,.note-popover-content'); + $content.prepend('<span><a target="_blank"></a> </span>'); + } + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.link); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update() { + // Prevent focusing on editable when invoke('code') is executed + if (!this.context.invoke('editor.hasFocus')) { + this.hide(); + return; + } + + var rng = this.context.invoke('editor.getLastRange'); + + if (rng.isCollapsed() && rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + var href = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(anchor).attr('href'); + this.$popover.find('a').attr('href', href).text(href); + var pos = dom.posFromPlaceholder(anchor); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return LinkPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImageDialog.js +function ImageDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImageDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImageDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImageDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImageDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var ImageDialog_ImageDialog = /*#__PURE__*/function () { + function ImageDialog(context) { + ImageDialog_classCallCheck(this, ImageDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + ImageDialog_createClass(ImageDialog, [{ + key: "initialize", + value: function initialize() { + var imageLimitation = ''; + + if (this.options.maximumImageFileSize) { + var unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + ' ' + ' KMGTP'[unit] + 'B'; + imageLimitation = "<small>".concat(this.lang.image.maximumFileSize + ' : ' + readableSize, "</small>"); + } + + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group note-group-select-from-files">', '<label for="note-dialog-image-file-' + this.options.id + '" class="note-form-label">' + this.lang.image.selectFromFiles + '</label>', '<input id="note-dialog-image-file-' + this.options.id + '" class="note-image-input form-control-file note-form-control note-input" ', ' type="file" name="files" accept="image/*" multiple="multiple"/>', imageLimitation, '</div>', '<div class="form-group note-group-image-url">', '<label for="note-dialog-image-url-' + this.options.id + '" class="note-form-label">' + this.lang.image.url + '</label>', '<input id="note-dialog-image-url-' + this.options.id + '" class="note-image-url form-control note-form-control note-input" type="text"/>', '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.image.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.image.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "show", + value: function show() { + var _this = this; + + this.context.invoke('editor.saveRange'); + this.showImageDialog().then(function (data) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); + + if (typeof data === 'string') { + // image url + // If onImageLinkInsert set, + if (_this.options.callbacks.onImageLinkInsert) { + _this.context.triggerEvent('image.link.insert', data); + } else { + _this.context.invoke('editor.insertImage', data); + } + } else { + // array of files + _this.context.invoke('editor.insertImagesOrCallback', data); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show image dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showImageDialog", + value: function showImageDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $imageInput = _this2.$dialog.find('.note-image-input'); + + var $imageUrl = _this2.$dialog.find('.note-image-url'); + + var $imageBtn = _this2.$dialog.find('.note-image-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); // Cloning imageInput to clear element. + + + $imageInput.replaceWith($imageInput.clone().on('change', function (event) { + deferred.resolve(event.target.files || event.target.value); + }).val('')); + $imageUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($imageBtn, $imageUrl.val()); + }).val(''); + + if (!env.isSupportTouch) { + $imageUrl.trigger('focus'); + } + + $imageBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($imageUrl.val()); + }); + + _this2.bindEnterKey($imageUrl, $imageBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $imageInput.off(); + $imageUrl.off(); + $imageBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return ImageDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/ImagePopover.js +function ImagePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function ImagePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function ImagePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) ImagePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) ImagePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + +/** + * Image popover module + * mouse events that show/hide popover will be handled by Handle.js. + * Handle.js will receive the events and invoke 'imagePopover.update'. + */ + +var ImagePopover_ImagePopover = /*#__PURE__*/function () { + function ImagePopover(context) { + var _this = this; + + ImagePopover_classCallCheck(this, ImagePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.editable = context.layoutInfo.editable[0]; + this.options = context.options; + this.events = { + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + ImagePopover_createClass(ImagePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.image); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-image-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.image); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target, event) { + if (dom.isImg(target)) { + var position = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(target).offset(); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + var pos = {}; + + if (this.options.popatmouse) { + pos.left = event.pageX - 20; + pos.top = event.pageY; + } else { + pos = position; + } + + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return ImagePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/TablePopover.js +function TablePopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function TablePopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function TablePopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) TablePopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) TablePopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + +var TablePopover_TablePopover = /*#__PURE__*/function () { + function TablePopover(context) { + var _this = this; + + TablePopover_classCallCheck(this, TablePopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.events = { + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.update(e.target); + }, + 'summernote.keyup summernote.scroll summernote.change': function summernoteKeyupSummernoteScrollSummernoteChange() { + _this.update(); + }, + 'summernote.disable summernote.blur': function summernoteDisableSummernoteBlur() { + _this.hide(); + } + }; + } + + TablePopover_createClass(TablePopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return !lists.isEmpty(this.options.popover.table); + } + }, { + key: "initialize", + value: function initialize() { + this.$popover = this.ui.popover({ + className: 'note-table-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content,.note-popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.table); // [workaround] Disable Firefox's default table editor + + if (env.isFF) { + document.execCommand('enableInlineTableEditing', false, false); + } + + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(target) { + if (this.context.isDisabled()) { + return false; + } + + var isCell = dom.isCell(target); + + if (isCell) { + var pos = dom.posFromPlaceholder(target); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + pos.top -= containerOffset.top; + pos.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + } else { + this.hide(); + } + + return isCell; + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return TablePopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/VideoDialog.js +function VideoDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function VideoDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function VideoDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) VideoDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) VideoDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + + +var VideoDialog_VideoDialog = /*#__PURE__*/function () { + function VideoDialog(context) { + VideoDialog_classCallCheck(this, VideoDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + VideoDialog_createClass(VideoDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<div class="form-group note-form-group row-fluid">', "<label for=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-form-label\">").concat(this.lang.video.url, " <small class=\"text-muted\">").concat(this.lang.video.providers, "</small></label>"), "<input id=\"note-dialog-video-url-".concat(this.options.id, "\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>"), '</div>'].join(''); + var buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn'; + var footer = "<input type=\"button\" href=\"#\" class=\"".concat(buttonClass, "\" value=\"").concat(this.lang.video.insert, "\" disabled>"); + this.$dialog = this.ui.dialog({ + title: this.lang.video.insert, + fade: this.options.dialogsFade, + body: body, + footer: footer + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "bindEnterKey", + value: function bindEnterKey($input, $btn) { + $input.on('keypress', function (event) { + if (event.keyCode === core_key.code.ENTER) { + event.preventDefault(); + $btn.trigger('click'); + } + }); + } + }, { + key: "createVideoNode", + value: function createVideoNode(url) { + // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm) + var ytRegExp = /\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/; + var ytRegExpForStart = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/; + var ytMatch = url.match(ytRegExp); + var igRegExp = /(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/; + var igMatch = url.match(igRegExp); + var vRegExp = /\/\/vine\.co\/v\/([a-zA-Z0-9]+)/; + var vMatch = url.match(vRegExp); + var vimRegExp = /\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/; + var vimMatch = url.match(vimRegExp); + var dmRegExp = /.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/; + var dmMatch = url.match(dmRegExp); + var youkuRegExp = /\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/; + var youkuMatch = url.match(youkuRegExp); + var qqRegExp = /\/\/v\.qq\.com.*?vid=(.+)/; + var qqMatch = url.match(qqRegExp); + var qqRegExp2 = /\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/; + var qqMatch2 = url.match(qqRegExp2); + var mp4RegExp = /^.+.(mp4|m4v)$/; + var mp4Match = url.match(mp4RegExp); + var oggRegExp = /^.+.(ogg|ogv)$/; + var oggMatch = url.match(oggRegExp); + var webmRegExp = /^.+.(webm)$/; + var webmMatch = url.match(webmRegExp); + var fbRegExp = /(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/; + var fbMatch = url.match(fbRegExp); + var $video; + + if (ytMatch && ytMatch[1].length === 11) { + var youtubeId = ytMatch[1]; + var start = 0; + + if (typeof ytMatch[2] !== 'undefined') { + var ytMatchForStart = ytMatch[2].match(ytRegExpForStart); + + if (ytMatchForStart) { + for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) { + start += typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0; + } + } + } + + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : '')).attr('width', '640').attr('height', '360'); + } else if (igMatch && igMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/').attr('width', '612').attr('height', '710').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else if (vMatch && vMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', vMatch[0] + '/embed/simple').attr('width', '600').attr('height', '600').attr('class', 'vine-embed'); + } else if (vimMatch && vimMatch[3].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('src', '//player.vimeo.com/video/' + vimMatch[3]).attr('width', '640').attr('height', '360'); + } else if (dmMatch && dmMatch[2].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2]).attr('width', '640').attr('height', '360'); + } else if (youkuMatch && youkuMatch[1].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '498').attr('width', '510').attr('src', '//player.youku.com/embed/' + youkuMatch[1]); + } else if (qqMatch && qqMatch[1].length || qqMatch2 && qqMatch2[2].length) { + var vid = qqMatch && qqMatch[1].length ? qqMatch[1] : qqMatch2[2]; + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder', 0).attr('height', '310').attr('width', '500').attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0'); + } else if (mp4Match || oggMatch || webmMatch) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<video controls>').attr('src', url).attr('width', '640').attr('height', '360'); + } else if (fbMatch && fbMatch[0].length) { + $video = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<iframe>').attr('frameborder', 0).attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560').attr('width', '560').attr('height', '301').attr('scrolling', 'no').attr('allowtransparency', 'true'); + } else { + // this is not a known video link. Now what, Cat? Now what? + return false; + } + + $video.addClass('note-video-clip'); + return $video[0]; + } + }, { + key: "show", + value: function show() { + var _this = this; + + var text = this.context.invoke('editor.getSelectedText'); + this.context.invoke('editor.saveRange'); + this.showVideoDialog(text).then(function (url) { + // [workaround] hide dialog before restore range for IE range focus + _this.ui.hideDialog(_this.$dialog); + + _this.context.invoke('editor.restoreRange'); // build node + + + var $node = _this.createVideoNode(url); + + if ($node) { + // insert video node + _this.context.invoke('editor.insertNode', $node); + } + }).fail(function () { + _this.context.invoke('editor.restoreRange'); + }); + } + /** + * show video dialog + * + * @param {jQuery} $dialog + * @return {Promise} + */ + + }, { + key: "showVideoDialog", + value: function showVideoDialog() + /* text */ + { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + var $videoUrl = _this2.$dialog.find('.note-video-url'); + + var $videoBtn = _this2.$dialog.find('.note-video-btn'); + + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + $videoUrl.on('input paste propertychange', function () { + _this2.ui.toggleBtn($videoBtn, $videoUrl.val()); + }); + + if (!env.isSupportTouch) { + $videoUrl.trigger('focus'); + } + + $videoBtn.click(function (event) { + event.preventDefault(); + deferred.resolve($videoUrl.val()); + }); + + _this2.bindEnterKey($videoUrl, $videoBtn); + }); + + _this2.ui.onDialogHidden(_this2.$dialog, function () { + $videoUrl.off(); + $videoBtn.off(); + + if (deferred.state() === 'pending') { + deferred.reject(); + } + }); + + _this2.ui.showDialog(_this2.$dialog); + }); + } + }]); + + return VideoDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HelpDialog.js +function HelpDialog_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HelpDialog_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HelpDialog_createClass(Constructor, protoProps, staticProps) { if (protoProps) HelpDialog_defineProperties(Constructor.prototype, protoProps); if (staticProps) HelpDialog_defineProperties(Constructor, staticProps); return Constructor; } + + + + +var HelpDialog_HelpDialog = /*#__PURE__*/function () { + function HelpDialog(context) { + HelpDialog_classCallCheck(this, HelpDialog); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$body = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(document.body); + this.$editor = context.layoutInfo.editor; + this.options = context.options; + this.lang = this.options.langInfo; + } + + HelpDialog_createClass(HelpDialog, [{ + key: "initialize", + value: function initialize() { + var $container = this.options.dialogsInBody ? this.$body : this.options.container; + var body = ['<p class="text-center">', '<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ', '<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ', '<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>', '</p>'].join(''); + this.$dialog = this.ui.dialog({ + title: this.lang.options.help, + fade: this.options.dialogsFade, + body: this.createShortcutList(), + footer: body, + callback: function callback($node) { + $node.find('.modal-body,.note-modal-body').css({ + 'max-height': 300, + 'overflow': 'scroll' + }); + } + }).render().appendTo($container); + } + }, { + key: "destroy", + value: function destroy() { + this.ui.hideDialog(this.$dialog); + this.$dialog.remove(); + } + }, { + key: "createShortcutList", + value: function createShortcutList() { + var _this = this; + + var keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc']; + return Object.keys(keyMap).map(function (key) { + var command = keyMap[key]; + var $row = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div><div class="help-list-item"></div></div>'); + $row.append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<label><kbd>' + key + '</kdb></label>').css({ + 'width': 180, + 'margin-right': 10 + })).append(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<span/>').html(_this.context.memo('help.' + command) || command)); + return $row.html(); + }).join(''); + } + /** + * show help dialog + * + * @return {Promise} + */ + + }, { + key: "showHelpDialog", + value: function showHelpDialog() { + var _this2 = this; + + return external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.Deferred(function (deferred) { + _this2.ui.onDialogShown(_this2.$dialog, function () { + _this2.context.triggerEvent('dialog.shown'); + + deferred.resolve(); + }); + + _this2.ui.showDialog(_this2.$dialog); + }).promise(); + } + }, { + key: "show", + value: function show() { + var _this3 = this; + + this.context.invoke('editor.saveRange'); + this.showHelpDialog().then(function () { + _this3.context.invoke('editor.restoreRange'); + }); + } + }]); + + return HelpDialog; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/AirPopover.js +function AirPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function AirPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function AirPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) AirPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) AirPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + +var AIRMODE_POPOVER_X_OFFSET = -5; +var AIRMODE_POPOVER_Y_OFFSET = 5; + +var AirPopover_AirPopover = /*#__PURE__*/function () { + function AirPopover(context) { + var _this = this; + + AirPopover_classCallCheck(this, AirPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.options = context.options; + this.hidable = true; + this.onContextmenu = false; + this.pageX = null; + this.pageY = null; + this.events = { + 'summernote.contextmenu': function summernoteContextmenu(e) { + if (_this.options.editing) { + e.preventDefault(); + e.stopPropagation(); + _this.onContextmenu = true; + + _this.update(true); + } + }, + 'summernote.mousedown': function summernoteMousedown(we, e) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + }, + 'summernote.keyup summernote.mouseup summernote.scroll': function summernoteKeyupSummernoteMouseupSummernoteScroll(we, e) { + if (_this.options.editing && !_this.onContextmenu) { + _this.pageX = e.pageX; + _this.pageY = e.pageY; + + _this.update(); + } + + _this.onContextmenu = false; + }, + 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteChangeSummernoteDialogShownSummernoteBlur() { + _this.hide(); + }, + 'summernote.focusout': function summernoteFocusout() { + if (!_this.$popover.is(':active,:focus')) { + _this.hide(); + } + } + }; + } + + AirPopover_createClass(AirPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.options.airMode && !lists.isEmpty(this.options.popover.air); + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.$popover = this.ui.popover({ + className: 'note-air-popover' + }).render().appendTo(this.options.container); + var $content = this.$popover.find('.popover-content'); + this.context.invoke('buttons.build', $content, this.options.popover.air); // disable hiding this popover preemptively by 'summernote.blur' event. + + this.$popover.on('mousedown', function () { + _this2.hidable = false; + }); // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored). + + this.$popover.on('mouseup', function () { + _this2.hidable = true; + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "update", + value: function update(forcelyOpen) { + var styleInfo = this.context.invoke('editor.currentStyle'); + + if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) { + var rect = { + left: this.pageX, + top: this.pageY + }; + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + rect.top -= containerOffset.top; + rect.left -= containerOffset.left; + this.$popover.css({ + display: 'block', + left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET, + top: rect.top + AIRMODE_POPOVER_Y_OFFSET + }); + this.context.invoke('buttons.updateCurrentStyle', this.$popover); + } else { + this.hide(); + } + } + }, { + key: "updateCodeview", + value: function updateCodeview(isCodeview) { + this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview); + + if (isCodeview) { + this.hide(); + } + } + }, { + key: "hide", + value: function hide() { + if (this.hidable) { + this.$popover.hide(); + } + } + }]); + + return AirPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/module/HintPopover.js +function HintPopover_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function HintPopover_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function HintPopover_createClass(Constructor, protoProps, staticProps) { if (protoProps) HintPopover_defineProperties(Constructor.prototype, protoProps); if (staticProps) HintPopover_defineProperties(Constructor, staticProps); return Constructor; } + + + + + + + +var POPOVER_DIST = 5; + +var HintPopover_HintPopover = /*#__PURE__*/function () { + function HintPopover(context) { + var _this = this; + + HintPopover_classCallCheck(this, HintPopover); + + this.context = context; + this.ui = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.ui; + this.$editable = context.layoutInfo.editable; + this.options = context.options; + this.hint = this.options.hint || []; + this.direction = this.options.hintDirection || 'bottom'; + this.hints = Array.isArray(this.hint) ? this.hint : [this.hint]; + this.events = { + 'summernote.keyup': function summernoteKeyup(we, e) { + if (!e.isDefaultPrevented()) { + _this.handleKeyup(e); + } + }, + 'summernote.keydown': function summernoteKeydown(we, e) { + _this.handleKeydown(e); + }, + 'summernote.disable summernote.dialog.shown summernote.blur': function summernoteDisableSummernoteDialogShownSummernoteBlur() { + _this.hide(); + } + }; + } + + HintPopover_createClass(HintPopover, [{ + key: "shouldInitialize", + value: function shouldInitialize() { + return this.hints.length > 0; + } + }, { + key: "initialize", + value: function initialize() { + var _this2 = this; + + this.lastWordRange = null; + this.matchingWord = null; + this.$popover = this.ui.popover({ + className: 'note-hint-popover', + hideArrow: true, + direction: '' + }).render().appendTo(this.options.container); + this.$popover.hide(); + this.$content = this.$popover.find('.popover-content,.note-popover-content'); + this.$content.on('click', '.note-hint-item', function (e) { + _this2.$content.find('.active').removeClass('active'); + + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).addClass('active'); + + _this2.replace(); + }); + this.$popover.on('mousedown', function (e) { + e.preventDefault(); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.$popover.remove(); + } + }, { + key: "selectItem", + value: function selectItem($item) { + this.$content.find('.active').removeClass('active'); + $item.addClass('active'); + this.$content[0].scrollTop = $item[0].offsetTop - this.$content.innerHeight() / 2; + } + }, { + key: "moveDown", + value: function moveDown() { + var $current = this.$content.find('.note-hint-item.active'); + var $next = $current.next(); + + if ($next.length) { + this.selectItem($next); + } else { + var $nextGroup = $current.parent().next(); + + if (!$nextGroup.length) { + $nextGroup = this.$content.find('.note-hint-group').first(); + } + + this.selectItem($nextGroup.find('.note-hint-item').first()); + } + } + }, { + key: "moveUp", + value: function moveUp() { + var $current = this.$content.find('.note-hint-item.active'); + var $prev = $current.prev(); + + if ($prev.length) { + this.selectItem($prev); + } else { + var $prevGroup = $current.parent().prev(); + + if (!$prevGroup.length) { + $prevGroup = this.$content.find('.note-hint-group').last(); + } + + this.selectItem($prevGroup.find('.note-hint-item').last()); + } + } + }, { + key: "replace", + value: function replace() { + var $item = this.$content.find('.note-hint-item.active'); + + if ($item.length) { + var node = this.nodeFromItem($item); // If matchingWord length = 0 -> capture OK / open hint / but as mention capture "" (\w*) + + if (this.matchingWord !== null && this.matchingWord.length === 0) { + this.lastWordRange.so = this.lastWordRange.eo; // Else si > 0 and normal case -> adjust range "before" for correct position of insertion + } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) { + var rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length; + + if (rangeCompute > 0) { + this.lastWordRange.so += rangeCompute; + } + } + + this.lastWordRange.insertNode(node); + + if (this.options.hintSelect === 'next') { + var blank = document.createTextNode(''); + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(node).after(blank); + range.createFromNodeBefore(blank).select(); + } else { + range.createFromNodeAfter(node).select(); + } + + this.lastWordRange = null; + this.hide(); + this.context.invoke('editor.focus'); + } + } + }, { + key: "nodeFromItem", + value: function nodeFromItem($item) { + var hint = this.hints[$item.data('index')]; + var item = $item.data('item'); + var node = hint.content ? hint.content(item) : item; + + if (typeof node === 'string') { + node = dom.createText(node); + } + + return node; + } + }, { + key: "createItemTemplates", + value: function createItemTemplates(hintIdx, items) { + var hint = this.hints[hintIdx]; + return items.map(function (item + /*, idx */ + ) { + var $item = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-item"/>'); + $item.append(hint.template ? hint.template(item) : item + ''); + $item.data({ + 'index': hintIdx, + 'item': item + }); + return $item; + }); + } + }, { + key: "handleKeydown", + value: function handleKeydown(e) { + if (!this.$popover.is(':visible')) { + return; + } + + if (e.keyCode === core_key.code.ENTER) { + e.preventDefault(); + this.replace(); + } else if (e.keyCode === core_key.code.UP) { + e.preventDefault(); + this.moveUp(); + } else if (e.keyCode === core_key.code.DOWN) { + e.preventDefault(); + this.moveDown(); + } + } + }, { + key: "searchKeyword", + value: function searchKeyword(index, keyword, callback) { + var hint = this.hints[index]; + + if (hint && hint.match.test(keyword) && hint.search) { + var matches = hint.match.exec(keyword); + this.matchingWord = matches[0]; + hint.search(matches[1], callback); + } else { + callback(); + } + } + }, { + key: "createGroup", + value: function createGroup(idx, keyword) { + var _this3 = this; + + var $group = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()('<div class="note-hint-group note-hint-group-' + idx + '"></div>'); + this.searchKeyword(idx, keyword, function (items) { + items = items || []; + + if (items.length) { + $group.html(_this3.createItemTemplates(idx, items)); + + _this3.show(); + } + }); + return $group; + } + }, { + key: "handleKeyup", + value: function handleKeyup(e) { + var _this4 = this; + + if (!lists.contains([core_key.code.ENTER, core_key.code.UP, core_key.code.DOWN], e.keyCode)) { + var _range = this.context.invoke('editor.getLastRange'); + + var wordRange, keyword; + + if (this.options.hintMode === 'words') { + wordRange = _range.getWordsRange(_range); + keyword = wordRange.toString(); + this.hints.forEach(function (hint) { + if (hint.match.test(keyword)) { + wordRange = _range.getWordsMatchRange(hint.match); + return false; + } + }); + + if (!wordRange) { + this.hide(); + return; + } + + keyword = wordRange.toString(); + } else { + wordRange = _range.getWordRange(); + keyword = wordRange.toString(); + } + + if (this.hints.length && keyword) { + this.$content.empty(); + var bnd = func.rect2bnd(lists.last(wordRange.getClientRects())); + var containerOffset = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(this.options.container).offset(); + + if (bnd) { + bnd.top -= containerOffset.top; + bnd.left -= containerOffset.left; + this.$popover.hide(); + this.lastWordRange = wordRange; + this.hints.forEach(function (hint, idx) { + if (hint.match.test(keyword)) { + _this4.createGroup(idx, keyword).appendTo(_this4.$content); + } + }); // select first .note-hint-item + + this.$content.find('.note-hint-item:first').addClass('active'); // set position for popover after group is created + + if (this.direction === 'top') { + this.$popover.css({ + left: bnd.left, + top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST + }); + } else { + this.$popover.css({ + left: bnd.left, + top: bnd.top + bnd.height + POPOVER_DIST + }); + } + } + } else { + this.hide(); + } + } + } + }, { + key: "show", + value: function show() { + this.$popover.show(); + } + }, { + key: "hide", + value: function hide() { + this.$popover.hide(); + } + }]); + + return HintPopover; +}(); + + +// CONCATENATED MODULE: ./src/js/base/settings.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + version: '0.8.18', + plugins: {}, + dom: dom, + range: range, + lists: lists, + options: { + langInfo: external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote.lang['en-US'], + editing: true, + modules: { + 'editor': Editor_Editor, + 'clipboard': Clipboard_Clipboard, + 'dropzone': Dropzone_Dropzone, + 'codeview': Codeview_CodeView, + 'statusbar': Statusbar_Statusbar, + 'fullscreen': Fullscreen_Fullscreen, + 'handle': Handle_Handle, + // FIXME: HintPopover must be front of autolink + // - Script error about range when Enter key is pressed on hint popover + 'hintPopover': HintPopover_HintPopover, + 'autoLink': AutoLink_AutoLink, + 'autoSync': AutoSync_AutoSync, + 'autoReplace': AutoReplace_AutoReplace, + 'placeholder': Placeholder_Placeholder, + 'buttons': Buttons_Buttons, + 'toolbar': Toolbar_Toolbar, + 'linkDialog': LinkDialog_LinkDialog, + 'linkPopover': LinkPopover_LinkPopover, + 'imageDialog': ImageDialog_ImageDialog, + 'imagePopover': ImagePopover_ImagePopover, + 'tablePopover': TablePopover_TablePopover, + 'videoDialog': VideoDialog_VideoDialog, + 'helpDialog': HelpDialog_HelpDialog, + 'airPopover': AirPopover_AirPopover + }, + buttons: {}, + lang: 'en-US', + followingToolbar: false, + toolbarPosition: 'top', + otherStaticBar: '', + // toolbar + codeviewKeepButton: false, + toolbar: [['style', ['style']], ['font', ['bold', 'underline', 'clear']], ['fontname', ['fontname']], ['color', ['color']], ['para', ['ul', 'ol', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture', 'video']], ['view', ['fullscreen', 'codeview', 'help']]], + // popover + popatmouse: true, + popover: { + image: [['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']], ['float', ['floatLeft', 'floatRight', 'floatNone']], ['remove', ['removeMedia']]], + link: [['link', ['linkDialogShow', 'unlink']]], + table: [['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']], ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]], + air: [['color', ['color']], ['font', ['bold', 'underline', 'clear']], ['para', ['ul', 'paragraph']], ['table', ['table']], ['insert', ['link', 'picture']], ['view', ['fullscreen', 'codeview']]] + }, + // air mode: inline editor + airMode: false, + overrideContextMenu: false, + // TBD + width: null, + height: null, + linkTargetBlank: true, + useProtocol: true, + defaultProtocol: 'http://', + focus: false, + tabDisabled: false, + tabSize: 4, + styleWithCSS: false, + shortcuts: true, + textareaAutoSync: true, + tooltip: 'auto', + container: null, + maxTextLength: 0, + blockquoteBreakingLevel: 2, + spellCheck: true, + disableGrammar: false, + placeholder: null, + inheritPlaceholder: false, + // TODO: need to be documented + recordEveryKeystroke: false, + historyLimit: 200, + // TODO: need to be documented + showDomainOnlyForAutolink: false, + // TODO: need to be documented + hintMode: 'word', + hintSelect: 'after', + hintDirection: 'bottom', + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande', 'Tahoma', 'Times New Roman', 'Verdana'], + fontNamesIgnoreCheck: [], + addDefaultFonts: true, + fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'], + fontSizeUnits: ['px', 'pt'], + // pallete colors(n x n) + colors: [['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'], ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'], ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'], ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'], ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'], ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'], ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'], ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031']], + // http://chir.ag/projects/name-that-color/ + colorsName: [['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'], ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'], ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'], ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'], ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'], ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'], ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'], ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou']], + colorButton: { + foreColor: '#000000', + backColor: '#FFFF00' + }, + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + tableClassName: 'table table-bordered', + insertTableMaxSize: { + col: 10, + row: 10 + }, + // By default, dialogs are attached in container. + dialogsInBody: false, + dialogsFade: false, + maximumImageFileSize: null, + callbacks: { + onBeforeCommand: null, + onBlur: null, + onBlurCodeview: null, + onChange: null, + onChangeCodeview: null, + onDialogShown: null, + onEnter: null, + onFocus: null, + onImageLinkInsert: null, + onImageUpload: null, + onImageUploadError: null, + onInit: null, + onKeydown: null, + onKeyup: null, + onMousedown: null, + onMouseup: null, + onPaste: null, + onScroll: null + }, + codemirror: { + mode: 'text/html', + htmlMode: true, + lineNumbers: true + }, + codeviewFilter: false, + codeviewFilterRegex: /<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi, + codeviewIframeFilter: true, + codeviewIframeWhitelistSrc: [], + codeviewIframeWhitelistSrcBase: ['www.youtube.com', 'www.youtube-nocookie.com', 'www.facebook.com', 'vine.co', 'instagram.com', 'player.vimeo.com', 'www.dailymotion.com', 'player.youku.com', 'v.qq.com'], + keyMap: { + pc: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'linkDialog.show' + }, + mac: { + 'ESC': 'escape', + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'linkDialog.show' + } + }, + icons: { + 'align': 'note-icon-align', + 'alignCenter': 'note-icon-align-center', + 'alignJustify': 'note-icon-align-justify', + 'alignLeft': 'note-icon-align-left', + 'alignRight': 'note-icon-align-right', + 'rowBelow': 'note-icon-row-below', + 'colBefore': 'note-icon-col-before', + 'colAfter': 'note-icon-col-after', + 'rowAbove': 'note-icon-row-above', + 'rowRemove': 'note-icon-row-remove', + 'colRemove': 'note-icon-col-remove', + 'indent': 'note-icon-align-indent', + 'outdent': 'note-icon-align-outdent', + 'arrowsAlt': 'note-icon-arrows-alt', + 'bold': 'note-icon-bold', + 'caret': 'note-icon-caret', + 'circle': 'note-icon-circle', + 'close': 'note-icon-close', + 'code': 'note-icon-code', + 'eraser': 'note-icon-eraser', + 'floatLeft': 'note-icon-float-left', + 'floatRight': 'note-icon-float-right', + 'font': 'note-icon-font', + 'frame': 'note-icon-frame', + 'italic': 'note-icon-italic', + 'link': 'note-icon-link', + 'unlink': 'note-icon-chain-broken', + 'magic': 'note-icon-magic', + 'menuCheck': 'note-icon-menu-check', + 'minus': 'note-icon-minus', + 'orderedlist': 'note-icon-orderedlist', + 'pencil': 'note-icon-pencil', + 'picture': 'note-icon-picture', + 'question': 'note-icon-question', + 'redo': 'note-icon-redo', + 'rollback': 'note-icon-rollback', + 'square': 'note-icon-square', + 'strikethrough': 'note-icon-strikethrough', + 'subscript': 'note-icon-subscript', + 'superscript': 'note-icon-superscript', + 'table': 'note-icon-table', + 'textHeight': 'note-icon-text-height', + 'trash': 'note-icon-trash', + 'underline': 'note-icon-underline', + 'undo': 'note-icon-undo', + 'unorderedlist': 'note-icon-unorderedlist', + 'video': 'note-icon-video' + } + } +}); + +/***/ }), + +/***/ 4: +/***/ (function(module, exports, __webpack_require__) { + +// extracted by mini-css-extract-plugin + +/***/ }), + +/***/ 52: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +// ESM COMPAT FLAG +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: external {"root":"jQuery","commonjs2":"jquery","commonjs":"jquery","amd":"jquery"} +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_ = __webpack_require__(0); +var external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default = /*#__PURE__*/__webpack_require__.n(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_); + +// EXTERNAL MODULE: ./src/js/base/renderer.js +var renderer = __webpack_require__(1); + +// CONCATENATED MODULE: ./src/js/bs3/ui.js +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + +var editor = renderer["a" /* default */].create('<div class="note-editor note-frame panel panel-default"/>'); +var toolbar = renderer["a" /* default */].create('<div class="panel-heading note-toolbar" role="toolbar"/>'); +var editingArea = renderer["a" /* default */].create('<div class="note-editing-area"/>'); +var codable = renderer["a" /* default */].create('<textarea class="note-codable" aria-multiline="true"/>'); +var editable = renderer["a" /* default */].create('<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>'); +var statusbar = renderer["a" /* default */].create(['<output class="note-status-output" role="status" aria-live="polite"></output>', '<div class="note-statusbar" role="status">', '<div class="note-resizebar" aria-label="Resize">', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '<div class="note-icon-bar"></div>', '</div>', '</div>'].join('')); +var airEditor = renderer["a" /* default */].create('<div class="note-editor note-airframe"/>'); +var airEditable = renderer["a" /* default */].create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>', '<output class="note-status-output" role="status" aria-live="polite"></output>'].join('')); +var buttonGroup = renderer["a" /* default */].create('<div class="note-btn-group btn-group">'); +var dropdown = renderer["a" /* default */].create('<ul class="note-dropdown-menu dropdown-menu">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + var option = _typeof(item) === 'object' ? item.option : undefined; + var dataValue = 'data-value="' + value + '"'; + var dataOption = option !== undefined ? ' data-option="' + option + '"' : ''; + return '<li aria-label="' + value + '"><a href="#" ' + (dataValue + dataOption) + '>' + content + '</a></li>'; + }).join('') : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); + +var dropdownButtonContents = function dropdownButtonContents(contents, options) { + return contents + ' ' + icon(options.icons.caret, 'span'); +}; + +var dropdownCheck = renderer["a" /* default */].create('<ul class="note-dropdown-menu dropdown-menu note-check">', function ($node, options) { + var markup = Array.isArray(options.items) ? options.items.map(function (item) { + var value = typeof item === 'string' ? item : item.value || ''; + var content = options.template ? options.template(item) : item; + return '<li aria-label="' + item + '"><a href="#" data-value="' + value + '">' + icon(options.checkClassName) + ' ' + content + '</a></li>'; + }).join('') : options.items; + $node.html(markup).attr({ + 'aria-label': options.title + }); + + if (options && options.codeviewKeepButton) { + $node.addClass('note-codeview-keep'); + } +}); +var dialog = renderer["a" /* default */].create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>', function ($node, options) { + if (options.fade) { + $node.addClass('fade'); + } + + $node.attr({ + 'aria-label': options.title + }); + $node.html(['<div class="modal-dialog">', '<div class="modal-content">', options.title ? '<div class="modal-header">' + '<button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button>' + '<h4 class="modal-title">' + options.title + '</h4>' + '</div>' : '', '<div class="modal-body">' + options.body + '</div>', options.footer ? '<div class="modal-footer">' + options.footer + '</div>' : '', '</div>', '</div>'].join('')); +}); +var popover = renderer["a" /* default */].create(['<div class="note-popover popover in">', '<div class="arrow"></div>', '<div class="popover-content note-children-container"></div>', '</div>'].join(''), function ($node, options) { + var direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom'; + $node.addClass(direction); + + if (options.hideArrow) { + $node.find('.arrow').hide(); + } +}); +var ui_checkbox = renderer["a" /* default */].create('<div class="checkbox"></div>', function ($node, options) { + $node.html(['<label' + (options.id ? ' for="note-' + options.id + '"' : '') + '>', '<input type="checkbox"' + (options.id ? ' id="note-' + options.id + '"' : ''), options.checked ? ' checked' : '', ' aria-checked="' + (options.checked ? 'true' : 'false') + '"/>', options.text ? options.text : '', '</label>'].join('')); +}); + +var icon = function icon(iconClassName, tagName) { + tagName = tagName || 'i'; + return '<' + tagName + ' class="' + iconClassName + '"></' + tagName + '>'; +}; + +var ui_ui = function ui(editorOptions) { + return { + editor: editor, + toolbar: toolbar, + editingArea: editingArea, + codable: codable, + editable: editable, + statusbar: statusbar, + airEditor: airEditor, + airEditable: airEditable, + buttonGroup: buttonGroup, + dropdown: dropdown, + dropdownButtonContents: dropdownButtonContents, + dropdownCheck: dropdownCheck, + dialog: dialog, + popover: popover, + checkbox: ui_checkbox, + icon: icon, + options: editorOptions, + palette: function palette($node, options) { + return renderer["a" /* default */].create('<div class="note-color-palette"/>', function ($node, options) { + var contents = []; + + for (var row = 0, rowSize = options.colors.length; row < rowSize; row++) { + var eventName = options.eventName; + var colors = options.colors[row]; + var colorsName = options.colorsName[row]; + var buttons = []; + + for (var col = 0, colSize = colors.length; col < colSize; col++) { + var color = colors[col]; + var colorName = colorsName[col]; + buttons.push(['<button type="button" class="note-color-btn"', 'style="background-color:', color, '" ', 'data-event="', eventName, '" ', 'data-value="', color, '" ', 'title="', colorName, '" ', 'aria-label="', colorName, '" ', 'data-toggle="button" tabindex="-1"></button>'].join('')); + } + + contents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + + $node.html(contents.join('')); + + if (options.tooltip) { + $node.find('.note-color-btn').tooltip({ + container: options.container || editorOptions.container, + trigger: 'hover', + placement: 'bottom' + }); + } + })($node, options); + }, + button: function button($node, options) { + return renderer["a" /* default */].create('<button type="button" class="note-btn btn btn-default btn-sm" tabindex="-1">', function ($node, options) { + if (options && options.tooltip) { + $node.attr({ + title: options.tooltip, + 'aria-label': options.tooltip + }).tooltip({ + container: options.container || editorOptions.container, + trigger: 'hover', + placement: 'bottom' + }).on('click', function (e) { + external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default()(e.currentTarget).tooltip('hide'); + }); + } + + if (options && options.codeviewButton) { + $node.addClass('note-codeview-keep'); + } + })($node, options); + }, + toggleBtn: function toggleBtn($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }, + toggleBtnActive: function toggleBtnActive($btn, isActive) { + $btn.toggleClass('active', isActive); + }, + onDialogShown: function onDialogShown($dialog, handler) { + $dialog.one('shown.bs.modal', handler); + }, + onDialogHidden: function onDialogHidden($dialog, handler) { + $dialog.one('hidden.bs.modal', handler); + }, + showDialog: function showDialog($dialog) { + $dialog.modal('show'); + }, + hideDialog: function hideDialog($dialog) { + $dialog.modal('hide'); + }, + createLayout: function createLayout($note) { + var $editor = (editorOptions.airMode ? airEditor([editingArea([codable(), airEditable()])]) : editorOptions.toolbarPosition === 'bottom' ? editor([editingArea([codable(), editable()]), toolbar(), statusbar()]) : editor([toolbar(), editingArea([codable(), editable()]), statusbar()])).render(); + $editor.insertAfter($note); + return { + note: $note, + editor: $editor, + toolbar: $editor.find('.note-toolbar'), + editingArea: $editor.find('.note-editing-area'), + editable: $editor.find('.note-editable'), + codable: $editor.find('.note-codable'), + statusbar: $editor.find('.note-statusbar') + }; + }, + removeLayout: function removeLayout($note, layoutInfo) { + $note.html(layoutInfo.editable.html()); + layoutInfo.editor.remove(); + $note.show(); + } + }; +}; + +/* harmony default export */ var bs3_ui = (ui_ui); +// EXTERNAL MODULE: ./src/js/base/settings.js + 37 modules +var settings = __webpack_require__(3); + +// EXTERNAL MODULE: ./src/styles/summernote-bs3.scss +var summernote_bs3 = __webpack_require__(4); + +// CONCATENATED MODULE: ./src/js/bs3/settings.js + + + + +external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote = external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.extend(external_root_jQuery_commonjs2_jquery_commonjs_jquery_amd_jquery_default.a.summernote, { + ui_template: bs3_ui, + "interface": 'bs3' +}); + +/***/ }) + +/******/ }); +}); +//# sourceMappingURL=summernote.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote.js.map b/admin/vendors/summernote/dist/summernote.js.map new file mode 100644 index 0000000000000000000000000000000000000000..9c350dc40ca067ca456e00cad3cfbdc76c41aa2d --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/styles/summernote-bs3.scss","webpack:///./src/js/bs3/ui.js","webpack:///./src/js/bs3/settings.js"],"names":["Renderer","markup","children","options","callback","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","create","arguments","Array","isArray","summernote","lang","extend","font","bold","italic","underline","clear","height","name","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","p","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","define","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","isFontInstalled","testFontName","testText","testSize","canvas","document","createElement","context","getContext","originalWidth","measureText","width","userAgent","navigator","isMSIE","test","browserVersion","matches","exec","parseFloat","isEdge","isSupportTouch","window","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isW3CRangeSupport","createRange","eq","itemA","itemB","eq2","peq2","propName","ok","fail","not","f","apply","and","fA","fB","item","self","a","invoke","obj","method","idCounter","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","key","Object","prototype","hasOwnProperty","call","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","expression","head","array","last","initial","slice","tail","pred","idx","len","all","contains","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aTail","aLast","compact","aResult","push","unique","results","next","prev","NBSP_CHAR","String","fromCharCode","ZERO_WIDTH_NBSP_CHAR","isEditable","node","hasClass","isControlSizing","makePredByNodeName","nodeName","isText","nodeType","isElement","isVoid","isPara","isHeading","isPre","isLi","isPurePara","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isParaInline","ancestor","isBodyInline","isBody","isClosestSibling","nodeA","nodeB","nextSibling","previousSibling","withClosestSiblings","siblings","blankHTML","env","nodeLength","nodeValue","childNodes","deepestChildIsEmpty","firstElementChild","innerHTML","paddingBlankHTML","parentNode","singleChildAncestor","listAncestor","ancestors","el","lastAncestor","filter","commonAncestor","n","listPrev","nodes","listNext","listDescendant","descendants","fnWalk","current","wrap","wrapperName","parent","wrapper","insertBefore","appendChild","insertAfter","preceding","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","isLeftEdgePointOf","isRightEdgePointOf","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","undefined","isSamePoint","pointA","pointB","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","isSkipOffset","makeOffsetPath","reverse","fromOffsetPath","offsets","i","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","root","splitPoint","topAncestor","splitRoot","container","pivot","createText","text","createTextNode","isRemoveChild","removeNode","removeChild","removeWhile","replace","newNode","cssText","isTextarea","value","stripLinebreaks","val","isNewlineOnBlock","regexTag","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","blank","emptyPara","isBlock","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","isEmptyAnchor","Context","$note","memos","modules","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","module","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","textRangeToPoint","textRange","isStart","parentElement","tester","body","createTextRange","prevContainer","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","dummy","cont","pointToTextRange","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","info","moveStart","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","s","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","readFileAsDataURL","file","Deferred","deferred","FileReader","onload","dataURL","resolve","onerror","err","reject","readAsDataURL","promise","createImage","$img","one","detach","css","display","appendTo","History","stack","stackOffset","$editable","range","emptyBookmark","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","properties","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","orderedTypes","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setStartPoint","tagName","colPos","cellIndex","rowPos","rowIndex","setVirtualTablePosition","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","createVirtualTable","rows","cells","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","init","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","vTable","actions","idCell","currentCell","tdAttributes","baseCellTr","isTopFromRowSpan","newTd","removeAttr","setAttribute","before","lastTrIndex","after","rowsGroup","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","hasColspan","colCount","rowCount","tds","tdHTML","idxCol","trs","trHTML","idxRow","$table","tableClassName","KEY_BOGUS","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","startRange","endRange","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","then","$image","min","show","files","filename","maximumImageFileSize","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","bind","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","EDITABLE_PADDING","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","defaultScheme","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","o","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","$catcher","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","PX_PER_EM","$dimensionDisplay","$highlighted","$unhighlighted","posOffset","offsetX","posCatcher","pageX","pageY","offsetY","c","ceil","r","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","editorOffsetBottom","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","buttonClass","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","ytRegExp","ytRegExpForStart","ytMatch","igRegExp","igMatch","vRegExp","vMatch","vimRegExp","vimMatch","dmRegExp","dmMatch","youkuRegExp","youkuMatch","qqRegExp","qqMatch","qqRegExp2","qqMatch2","mp4RegExp","mp4Match","oggRegExp","oggMatch","webmRegExp","webmMatch","fbRegExp","fbMatch","$video","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AIRMODE_POPOVER_X_OFFSET","AIRMODE_POPOVER_Y_OFFSET","AirPopover","hidable","onContextmenu","air","forcelyOpen","POPOVER_DIST","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","mode","htmlMode","lineNumbers","pc","mac","renderer","airEditor","airEditable","option","dataValue","dataOption","caret","iconClassName","editorOptions","rowSize","colSize","colorName","placement","codeviewButton","isEnable","isActive","modal"],"mappings":"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","file":"summernote.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","// extracted by mini-css-extract-plugin","import $ from 'jquery';\nimport renderer from '../base/renderer';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame panel panel-default\"/>');\nconst toolbar = renderer.create('<div class=\"panel-heading note-toolbar\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"Resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group btn-group\">');\n\nconst dropdown = renderer.create('<ul class=\"note-dropdown-menu dropdown-menu\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const option = (typeof item === 'object') ? item.option : undefined;\n\n const dataValue = 'data-value=\"' + value + '\"';\n const dataOption = (option !== undefined) ? ' data-option=\"' + option + '\"' : '';\n return '<li aria-label=\"' + value + '\"><a href=\"#\" ' + (dataValue + dataOption) + '>' + content + '</a></li>';\n }).join('') : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents, options) {\n return contents + ' ' + icon(options.icons.caret, 'span');\n};\n\nconst dropdownCheck = renderer.create('<ul class=\"note-dropdown-menu dropdown-menu note-check\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n return '<li aria-label=\"' + item + '\"><a href=\"#\" data-value=\"' + value + '\">' + icon(options.checkClassName) + ' ' + content + '</a></li>';\n }).join('') : options.items;\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dialog = renderer.create('<div class=\"modal note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"modal-dialog\">',\n '<div class=\"modal-content\">',\n (options.title ? '<div class=\"modal-header\">' +\n '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" aria-hidden=\"true\">×</button>' +\n '<h4 class=\"modal-title\">' + options.title + '</h4>' +\n '</div>' : ''),\n '<div class=\"modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n '</div>',\n ].join(''));\n});\n\nconst popover = renderer.create([\n '<div class=\"note-popover popover in\">',\n '<div class=\"arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction);\n\n if (options.hideArrow) {\n $node.find('.arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"checkbox\"></div>', function($node, options) {\n $node.html([\n '<label' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input type=\"checkbox\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n (options.text ? options.text : ''),\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"></' + tagName+'>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n dropdown: dropdown,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheck: dropdownCheck,\n dialog: dialog,\n popover: popover,\n checkbox: checkbox,\n icon: icon,\n options: editorOptions,\n\n palette: function($node, options) {\n return renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n if (options.tooltip) {\n $node.find('.note-color-btn').tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n });\n }\n })($node, options);\n },\n\n button: function($node, options) {\n return renderer.create('<button type=\"button\" class=\"note-btn btn btn-default btn-sm\" tabindex=\"-1\">', function($node, options) {\n if (options && options.tooltip) {\n $node.attr({\n title: options.tooltip,\n 'aria-label': options.tooltip,\n }).tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n }).on('click', (e) => {\n $(e.currentTarget).tooltip('hide');\n });\n }\n if (options && options.codeviewButton) {\n $node.addClass('note-codeview-keep');\n }\n })($node, options);\n },\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('shown.bs.modal', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('hidden.bs.modal', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.modal('show');\n },\n\n hideDialog: function($dialog) {\n $dialog.modal('hide');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-bs3.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'bs3',\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote.min.css b/admin/vendors/summernote/dist/summernote.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d89df084e6270375b98197a6454ecae435719a42 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.min.css @@ -0,0 +1 @@ +@font-face{font-family:summernote;font-style:normal;font-weight:400;font-display:auto;src:url(font/summernote.eot);src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[class*=" note-icon"]:before,[class^=note-icon]:before{display:inline-block;font-family:summernote;font-style:normal;font-size:inherit;text-decoration:inherit;text-rendering:auto;text-transform:none;vertical-align:middle;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}.note-icon-fw{text-align:center;width:1.25em}.note-icon-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.note-icon-pull-left{float:left}.note-icon-pull-right{float:right}.note-icon.note-icon-pull-left{margin-right:.3em}.note-icon.note-icon-pull-right{margin-left:.3em}.note-icon-align:before{content:""}.note-icon-align-center:before{content:""}.note-icon-align-indent:before{content:""}.note-icon-align-justify:before{content:""}.note-icon-align-left:before{content:""}.note-icon-align-outdent:before{content:""}.note-icon-align-right:before{content:""}.note-icon-arrow-circle-down:before{content:""}.note-icon-arrow-circle-left:before{content:""}.note-icon-arrow-circle-right:before{content:""}.note-icon-arrow-circle-up:before{content:""}.note-icon-arrows-alt:before{content:""}.note-icon-arrows-h:before{content:""}.note-icon-arrows-v:before{content:""}.note-icon-bold:before{content:""}.note-icon-caret:before{content:""}.note-icon-chain-broken:before{content:""}.note-icon-circle:before{content:""}.note-icon-close:before{content:""}.note-icon-code:before{content:""}.note-icon-col-after:before{content:""}.note-icon-col-before:before{content:""}.note-icon-col-remove:before{content:""}.note-icon-eraser:before{content:""}.note-icon-float-left:before{content:""}.note-icon-float-none:before{content:""}.note-icon-float-right:before{content:""}.note-icon-font:before{content:""}.note-icon-frame:before{content:""}.note-icon-italic:before{content:""}.note-icon-link:before{content:""}.note-icon-magic:before{content:""}.note-icon-menu-check:before{content:""}.note-icon-minus:before{content:""}.note-icon-orderedlist:before{content:""}.note-icon-pencil:before{content:""}.note-icon-picture:before{content:""}.note-icon-question:before{content:""}.note-icon-redo:before{content:""}.note-icon-rollback:before{content:""}.note-icon-row-above:before{content:""}.note-icon-row-below:before{content:""}.note-icon-row-remove:before{content:""}.note-icon-special-character:before{content:""}.note-icon-square:before{content:""}.note-icon-strikethrough:before{content:""}.note-icon-subscript:before{content:""}.note-icon-summernote:before{content:""}.note-icon-superscript:before{content:""}.note-icon-table:before{content:""}.note-icon-text-height:before{content:""}.note-icon-trash:before{content:""}.note-icon-underline:before{content:""}.note-icon-undo:before{content:""}.note-icon-unorderedlist:before{content:""}.note-icon-video:before{content:""}.note-editor{position:relative}.note-editor .note-dropzone{position:absolute;display:none;z-index:100;color:#87cefa;background-color:#fff;opacity:.95}.note-editor .note-dropzone .note-dropzone-message{display:table-cell;vertical-align:middle;text-align:center;font-size:28px;font-weight:700}.note-editor .note-dropzone.hover{color:#098ddf}.note-editor.dragover .note-dropzone{display:table}.note-editor .note-editing-area{position:relative}.note-editor .note-editing-area .note-editable{outline:none}.note-editor .note-editing-area .note-editable sup{vertical-align:super}.note-editor .note-editing-area .note-editable sub{vertical-align:sub}.note-editor .note-editing-area .note-editable img.note-float-left{margin-right:10px}.note-editor .note-editing-area .note-editable img.note-float-right{margin-left:10px}.note-editor.note-airframe,.note-editor.note-frame{border:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe.codeview .note-editing-area .note-editable,.note-editor.note-frame.codeview .note-editing-area .note-editable{display:none}.note-editor.note-airframe.codeview .note-editing-area .note-codable,.note-editor.note-frame.codeview .note-editing-area .note-codable{display:block}.note-editor.note-airframe .note-editing-area,.note-editor.note-frame .note-editing-area{overflow:hidden}.note-editor.note-airframe .note-editing-area .note-editable,.note-editor.note-frame .note-editing-area .note-editable{padding:10px;overflow:auto;word-wrap:break-word}.note-editor.note-airframe .note-editing-area .note-editable[contenteditable=false],.note-editor.note-frame .note-editing-area .note-editable[contenteditable=false]{background-color:hsla(0,0%,50.2%,.11)}.note-editor.note-airframe .note-editing-area .note-codable,.note-editor.note-frame .note-editing-area .note-codable{display:none;width:100%;padding:10px;border:none;box-shadow:none;font-family:Menlo,Monaco,monospace,sans-serif;font-size:14px;color:#ccc;background-color:#222;resize:none;outline:none;-ms-box-sizing:border-box;box-sizing:border-box;border-radius:0;margin-bottom:0}.note-editor.note-airframe.fullscreen,.note-editor.note-frame.fullscreen{position:fixed;top:0;left:0;width:100%!important;z-index:1050}.note-editor.note-airframe.fullscreen .note-resizebar,.note-editor.note-frame.fullscreen .note-resizebar{display:none}.note-editor.note-airframe .note-status-output,.note-editor.note-frame .note-status-output{display:block;width:100%;font-size:14px;line-height:1.42857143;height:20px;margin-bottom:0;color:#000;border:0;border-top:1px solid #e2e2e2}.note-editor.note-airframe .note-status-output:empty,.note-editor.note-frame .note-status-output:empty{height:0;border-top:0 solid transparent}.note-editor.note-airframe .note-status-output .pull-right,.note-editor.note-frame .note-status-output .pull-right{float:right!important}.note-editor.note-airframe .note-status-output .text-muted,.note-editor.note-frame .note-status-output .text-muted{color:#777}.note-editor.note-airframe .note-status-output .text-primary,.note-editor.note-frame .note-status-output .text-primary{color:#286090}.note-editor.note-airframe .note-status-output .text-success,.note-editor.note-frame .note-status-output .text-success{color:#3c763d}.note-editor.note-airframe .note-status-output .text-info,.note-editor.note-frame .note-status-output .text-info{color:#31708f}.note-editor.note-airframe .note-status-output .text-warning,.note-editor.note-frame .note-status-output .text-warning{color:#8a6d3b}.note-editor.note-airframe .note-status-output .text-danger,.note-editor.note-frame .note-status-output .text-danger{color:#a94442}.note-editor.note-airframe .note-status-output .alert,.note-editor.note-frame .note-status-output .alert{margin:-7px 0 0;padding:7px 10px 2px;border-radius:0;color:#000;background-color:#f5f5f5}.note-editor.note-airframe .note-status-output .alert .note-icon,.note-editor.note-frame .note-status-output .alert .note-icon{margin-right:5px}.note-editor.note-airframe .note-status-output .alert-success,.note-editor.note-frame .note-status-output .alert-success{color:#3c763d!important;background-color:#dff0d8!important}.note-editor.note-airframe .note-status-output .alert-info,.note-editor.note-frame .note-status-output .alert-info{color:#31708f!important;background-color:#d9edf7!important}.note-editor.note-airframe .note-status-output .alert-warning,.note-editor.note-frame .note-status-output .alert-warning{color:#8a6d3b!important;background-color:#fcf8e3!important}.note-editor.note-airframe .note-status-output .alert-danger,.note-editor.note-frame .note-status-output .alert-danger{color:#a94442!important;background-color:#f2dede!important}.note-editor.note-airframe .note-statusbar,.note-editor.note-frame .note-statusbar{background-color:hsla(0,0%,50.2%,.11);border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar .note-resizebar,.note-editor.note-frame .note-statusbar .note-resizebar{padding-top:1px;height:9px;width:100%;cursor:ns-resize}.note-editor.note-airframe .note-statusbar .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar{width:20px;margin:1px auto;border-top:1px solid rgba(0,0,0,.2)}.note-editor.note-airframe .note-statusbar.locked .note-resizebar,.note-editor.note-frame .note-statusbar.locked .note-resizebar{cursor:default}.note-editor.note-airframe .note-statusbar.locked .note-resizebar .note-icon-bar,.note-editor.note-frame .note-statusbar.locked .note-resizebar .note-icon-bar{display:none}.note-editor.note-airframe .note-placeholder,.note-editor.note-frame .note-placeholder{padding:10px}.note-editor.note-airframe{border:0}.note-editor.note-airframe .note-editing-area .note-editable{padding:0}.note-popover.popover{display:none;max-width:none}.note-popover.popover .popover-content a{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.note-popover.popover .arrow{left:20px!important}.note-toolbar{position:relative}.note-editor .note-toolbar,.note-popover .popover-content{margin:0;padding:0 0 5px 5px}.note-editor .note-toolbar>.note-btn-group,.note-popover .popover-content>.note-btn-group{margin-top:5px;margin-left:0;margin-right:5px}.note-editor .note-toolbar .note-btn-group .note-table,.note-popover .popover-content .note-btn-group .note-table{min-width:0;padding:5px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker{font-size:18px}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher{position:absolute!important;z-index:3;width:10em;height:10em;cursor:pointer}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted{position:relative!important;z-index:1;width:5em;height:5em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted,.note-popover .popover-content .note-btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted{position:absolute!important;z-index:2;width:1em;height:1em;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat}.note-editor .note-toolbar .note-style .dropdown-style blockquote,.note-editor .note-toolbar .note-style .dropdown-style pre,.note-popover .popover-content .note-style .dropdown-style blockquote,.note-popover .popover-content .note-style .dropdown-style pre{margin:0;padding:5px 10px}.note-editor .note-toolbar .note-style .dropdown-style h1,.note-editor .note-toolbar .note-style .dropdown-style h2,.note-editor .note-toolbar .note-style .dropdown-style h3,.note-editor .note-toolbar .note-style .dropdown-style h4,.note-editor .note-toolbar .note-style .dropdown-style h5,.note-editor .note-toolbar .note-style .dropdown-style h6,.note-editor .note-toolbar .note-style .dropdown-style p,.note-popover .popover-content .note-style .dropdown-style h1,.note-popover .popover-content .note-style .dropdown-style h2,.note-popover .popover-content .note-style .dropdown-style h3,.note-popover .popover-content .note-style .dropdown-style h4,.note-popover .popover-content .note-style .dropdown-style h5,.note-popover .popover-content .note-style .dropdown-style h6,.note-popover .popover-content .note-style .dropdown-style p{margin:0;padding:0}.note-editor .note-toolbar .note-color-all .note-dropdown-menu,.note-popover .popover-content .note-color-all .note-dropdown-menu{min-width:337px}.note-editor .note-toolbar .note-color .dropdown-toggle,.note-popover .popover-content .note-color .dropdown-toggle{width:20px;padding-left:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette{display:inline-block;margin:0;width:160px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette:first-child,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette:first-child{margin:0 5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-palette-title,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-palette-title{font-size:12px;margin:2px 7px;text-align:center;border-bottom:1px solid #eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select{font-size:11px;margin:3px;padding:0 3px;cursor:pointer;width:100%;border-radius:5px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-reset:hover,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select:hover{background:#eee}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-row,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-row{height:20px}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-color-select-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-color-select-btn{display:none}.note-editor .note-toolbar .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn,.note-popover .popover-content .note-color .note-dropdown-menu .note-palette .note-holder-custom .note-color-btn{border:1px solid #eee}.note-editor .note-toolbar .note-para .note-dropdown-menu,.note-popover .popover-content .note-para .note-dropdown-menu{min-width:228px;padding:5px}.note-editor .note-toolbar .note-para .note-dropdown-menu>div+div,.note-popover .popover-content .note-para .note-dropdown-menu>div+div{margin-left:5px}.note-editor .note-toolbar .note-dropdown-menu,.note-popover .popover-content .note-dropdown-menu{min-width:160px}.note-editor .note-toolbar .note-dropdown-menu.right,.note-popover .popover-content .note-dropdown-menu.right{right:0;left:auto}.note-editor .note-toolbar .note-dropdown-menu.right:before,.note-popover .popover-content .note-dropdown-menu.right:before{right:9px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.right:after,.note-popover .popover-content .note-dropdown-menu.right:after{right:10px;left:auto!important}.note-editor .note-toolbar .note-dropdown-menu.note-check a i,.note-popover .popover-content .note-dropdown-menu.note-check a i{color:#00bfff;visibility:hidden}.note-editor .note-toolbar .note-dropdown-menu.note-check a.checked i,.note-popover .popover-content .note-dropdown-menu.note-check a.checked i{visibility:visible}.note-editor .note-toolbar .note-fontsize-10,.note-popover .popover-content .note-fontsize-10{font-size:10px}.note-editor .note-toolbar .note-color-palette,.note-popover .popover-content .note-color-palette{line-height:1}.note-editor .note-toolbar .note-color-palette div .note-color-btn,.note-popover .popover-content .note-color-palette div .note-color-btn{width:20px;height:20px;padding:0;margin:0;border:0;border-radius:0}.note-editor .note-toolbar .note-color-palette div .note-color-btn:hover,.note-popover .popover-content .note-color-palette div .note-color-btn:hover{transform:scale(1.2);transition:all .2s}.note-modal .modal-dialog{outline:0;border-radius:5px;box-shadow:0 3px 9px rgba(0,0,0,.5)}.note-modal .form-group{margin-left:0;margin-right:0}.note-modal .note-modal-form{margin:0}.note-modal .note-image-dialog .note-dropzone{min-height:100px;font-size:30px;line-height:4;color:#d3d3d3;text-align:center;border:4px dashed #d3d3d3;margin-bottom:10px}@-moz-document url-prefix(){.note-modal .note-image-input{height:auto}}.note-placeholder{position:absolute;display:none;color:grey}.note-handle .note-control-selection{position:absolute;display:none;border:1px solid #000}.note-handle .note-control-selection>div{position:absolute}.note-handle .note-control-selection .note-control-selection-bg{width:100%;height:100%;background-color:#000;-webkit-opacity:.3;-khtml-opacity:.3;-moz-opacity:.3;opacity:.3;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);filter:alpha(opacity=30)}.note-handle .note-control-selection .note-control-handle,.note-handle .note-control-selection .note-control-holder,.note-handle .note-control-selection .note-control-sizing{width:7px;height:7px;border:1px solid #000}.note-handle .note-control-selection .note-control-sizing{background-color:#000}.note-handle .note-control-selection .note-control-nw{top:-5px;left:-5px;border-right:none;border-bottom:none}.note-handle .note-control-selection .note-control-ne{top:-5px;right:-5px;border-bottom:none;border-left:none}.note-handle .note-control-selection .note-control-sw{bottom:-5px;left:-5px;border-top:none;border-right:none}.note-handle .note-control-selection .note-control-se{right:-5px;bottom:-5px;cursor:se-resize}.note-handle .note-control-selection .note-control-se.note-control-holder{cursor:default;border-top:none;border-left:none}.note-handle .note-control-selection .note-control-selection-info{right:0;bottom:0;padding:5px;margin:5px;color:#fff;background-color:#000;font-size:12px;border-radius:5px;-webkit-opacity:.7;-khtml-opacity:.7;-moz-opacity:.7;opacity:.7;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);filter:alpha(opacity=70)}.note-hint-popover{min-width:100px;padding:2px}.note-hint-popover .popover-content{padding:3px;max-height:150px;overflow:auto}.note-hint-popover .popover-content .note-hint-group .note-hint-item{display:block!important;padding:3px}.note-hint-popover .popover-content .note-hint-group .note-hint-item.active,.note-hint-popover .popover-content .note-hint-group .note-hint-item:hover{display:block;clear:both;font-weight:400;line-height:1.4;color:#fff;white-space:nowrap;text-decoration:none;background-color:#428bca;outline:0;cursor:pointer} \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote.min.js b/admin/vendors/summernote/dist/summernote.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5a8ea6e54148499edc2e9b5c6762b6558dd2f9ea --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.min.js @@ -0,0 +1,3 @@ +/*! For license information please see summernote.min.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(window,(function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=52)}({0:function(e,n){e.exports=t},1:function(t,e,n){"use strict";var o=n(0),i=n.n(o);function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var s=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.markup=e,this.children=n,this.options=o,this.callback=i}var e,n,o;return e=t,(n=[{key:"render",value:function(t){var e=i()(this.markup);if(this.options&&this.options.contents&&e.html(this.options.contents),this.options&&this.options.className&&e.addClass(this.options.className),this.options&&this.options.data&&i.a.each(this.options.data,(function(t,n){e.attr("data-"+t,n)})),this.options&&this.options.click&&e.on("click",this.options.click),this.children){var n=e.find(".note-children-container");this.children.forEach((function(t){t.render(n.length?n:e)}))}return this.callback&&this.callback(e,this.options),this.options&&this.options.callback&&this.options.callback(e),t&&t.append(e),e}}])&&a(e.prototype,n),o&&a(e,o),t}();e.a={create:function(t,e){return function(){var n="object"===r(arguments[1])?arguments[1]:arguments[0],o=Array.isArray(arguments[0])?arguments[0]:[];return n&&n.children&&(o=n.children),new s(t,o,n,e)}}}},2:function(t,e){(function(e){t.exports=e}).call(this,{})},3:function(t,e,n){"use strict";var o=n(0),i=n.n(o);i.a.summernote=i.a.summernote||{lang:{}},i.a.extend(i.a.summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window",useProtocol:"Use default protocol"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}});var r="function"==typeof define&&n(2),a=["sans-serif","serif","monospace","cursive","fantasy"];function s(t){return-1===i.a.inArray(t.toLowerCase(),a)?"'".concat(t,"'"):t}var l,c=navigator.userAgent,u=/MSIE|Trident/i.test(c);if(u){var d=/MSIE (\d+[.]\d+)/.exec(c);d&&(l=parseFloat(d[1])),(d=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c))&&(l=parseFloat(d[1]))}var h=/Edge\/\d+/.test(c),f="ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,p=u?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input",m={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:u,isEdge:h,isFF:!h&&/firefox/i.test(c),isPhantom:/PhantomJS/i.test(c),isWebkit:!h&&/webkit/i.test(c),isChrome:!h&&/chrome/i.test(c),isSafari:!h&&/safari/i.test(c)&&!/chrome/i.test(c),browserVersion:l,jqueryVersion:parseFloat(i.a.fn.jquery),isSupportAmd:r,isSupportTouch:f,isFontInstalled:function(t){var e="Comic Sans MS"===t?"Courier New":"Comic Sans MS",n=document.createElement("canvas").getContext("2d");n.font="200px '"+e+"'";var o=n.measureText("mmmmmmmmmmwwwww").width;return n.font="200px "+s(t)+', "'+e+'"',o!==n.measureText("mmmmmmmmmmwwwww").width},isW3CRangeSupport:!!document.createRange,inputEventName:p,genericFontFamilies:a,validFontName:s};var v=0;var g={eq:function(t){return function(e){return t===e}},eq2:function(t,e){return t===e},peq2:function(t){return function(e,n){return e[t]===n[t]}},ok:function(){return!0},fail:function(){return!1},self:function(t){return t},not:function(t){return function(){return!t.apply(t,arguments)}},and:function(t,e){return function(n){return t(n)&&e(n)}},invoke:function(t,e){return function(){return t[e].apply(t,arguments)}},resetUniqueId:function(){v=0},uniqueId:function(t){var e=++v+"";return t?t+e:e},rect2bnd:function(t){var e=i()(document);return{top:t.top+e.scrollTop(),left:t.left+e.scrollLeft(),width:t.right-t.left,height:t.bottom-t.top}},invertObject:function(t){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[t[n]]=n);return e},namespaceToCamel:function(t,e){return(e=e||"")+t.split(".").map((function(t){return t.substring(0,1).toUpperCase()+t.substring(1)})).join("")},debounce:function(t,e,n){var o;return function(){var i=this,r=arguments,a=function(){o=null,n||t.apply(i,r)},s=n&&!o;clearTimeout(o),o=setTimeout(a,e),s&&t.apply(i,r)}},isValidUrl:function(t){return/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t)}};function b(t){return t[0]}function y(t){return t[t.length-1]}function k(t){return t.slice(1)}function w(t,e){if(t&&t.length&&e){if(t.indexOf)return-1!==t.indexOf(e);if(t.contains)return t.contains(e)}return!1}var C={head:b,last:y,initial:function(t){return t.slice(0,t.length-1)},tail:k,prev:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n-1]}return null},next:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n+1]}return null},find:function(t,e){for(var n=0,o=t.length;n<o;n++){var i=t[n];if(e(i))return i}},contains:w,all:function(t,e){for(var n=0,o=t.length;n<o;n++)if(!e(t[n]))return!1;return!0},sum:function(t,e){return e=e||g.self,t.reduce((function(t,n){return t+e(n)}),0)},from:function(t){for(var e=[],n=t.length,o=-1;++o<n;)e[o]=t[o];return e},isEmpty:function(t){return!t||!t.length},clusterBy:function(t,e){return t.length?k(t).reduce((function(t,n){var o=y(t);return e(y(o),n)?o[o.length]=n:t[t.length]=[n],t}),[[b(t)]]):[]},compact:function(t){for(var e=[],n=0,o=t.length;n<o;n++)t[n]&&e.push(t[n]);return e},unique:function(t){for(var e=[],n=0,o=t.length;n<o;n++)w(e,t[n])||e.push(t[n]);return e}},x=String.fromCharCode(160);function S(t){return t&&i()(t).hasClass("note-editable")}function T(t){return t=t.toUpperCase(),function(e){return e&&e.nodeName.toUpperCase()===t}}function E(t){return t&&3===t.nodeType}function I(t){return t&&/^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(t.nodeName.toUpperCase())}function $(t){return!S(t)&&(t&&/^DIV|^P|^LI|^H[1-7]/.test(t.nodeName.toUpperCase()))}var N=T("PRE"),P=T("LI");var R=T("TABLE"),L=T("DATA");function A(t){return!(B(t)||F(t)||D(t)||$(t)||R(t)||z(t)||L(t))}function F(t){return t&&/^UL|^OL/.test(t.nodeName.toUpperCase())}var D=T("HR");function H(t){return t&&/^TD|^TH/.test(t.nodeName.toUpperCase())}var z=T("BLOCKQUOTE");function B(t){return H(t)||z(t)||S(t)}var M=T("A");var O=T("BODY");var j=m.isMSIE&&m.browserVersion<11?" ":"<br>";function U(t){return E(t)?t.nodeValue.length:t?t.childNodes.length:0}function W(t){var e=U(t);return 0===e||(!E(t)&&1===e&&t.innerHTML===j||!(!C.all(t.childNodes,E)||""!==t.innerHTML))}function K(t){I(t)||U(t)||(t.innerHTML=j)}function V(t,e){for(;t;){if(e(t))return t;if(S(t))break;t=t.parentNode}return null}function q(t,e){e=e||g.fail;var n=[];return V(t,(function(t){return S(t)||n.push(t),e(t)})),n}function _(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.nextSibling;return n}function G(t,e){var n=e.nextSibling,o=e.parentNode;return n?o.insertBefore(t,n):o.appendChild(t),t}function Y(t,e){return i.a.each(e,(function(e,n){t.appendChild(n)})),t}function Z(t){return 0===t.offset}function X(t){return t.offset===U(t.node)}function Q(t){return Z(t)||X(t)}function J(t,e){for(;t&&t!==e;){if(0!==et(t))return!1;t=t.parentNode}return!0}function tt(t,e){if(!e)return!1;for(;t&&t!==e;){if(et(t)!==U(t.parentNode)-1)return!1;t=t.parentNode}return!0}function et(t){for(var e=0;t=t.previousSibling;)e+=1;return e}function nt(t){return!!(t&&t.childNodes&&t.childNodes.length)}function ot(t,e){var n,o;if(0===t.offset){if(S(t.node))return null;n=t.node.parentNode,o=et(t.node)}else nt(t.node)?o=U(n=t.node.childNodes[t.offset-1]):(n=t.node,o=e?0:t.offset-1);return{node:n,offset:o}}function it(t,e){var n,o;if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1)}else nt(t.node)?(n=t.node.childNodes[t.offset],o=0):(n=t.node,o=e?U(t.node):t.offset+1);return{node:n,offset:o}}function rt(t,e){var n,o;if(W(t.node))return{node:n=t.node.nextSibling,offset:o=0};if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1),S(n)&&(n=t.node.nextSibling,o=0)}else if(nt(t.node)){if(o=0,W(n=t.node.childNodes[t.offset]))return null}else if(n=t.node,o=e?U(t.node):t.offset+1,W(n))return null;return{node:n,offset:o}}function at(t){if(t.nextSibling&&t.parent===t.nextSibling.parent)return E(t.nextSibling)?t.nextSibling:at(t.nextSibling)}function st(t,e){return t.node===e.node&&t.offset===e.offset}function lt(t,e){var n=e&&e.isSkipPaddingBlankHTML,o=e&&e.isNotSplitEdgePoint,i=e&&e.isDiscardEmptySplits;if(i&&(n=!0),Q(t)&&(E(t.node)||o)){if(Z(t))return t.node;if(X(t))return t.node.nextSibling}if(E(t.node))return t.node.splitText(t.offset);var r=t.node.childNodes[t.offset],a=G(t.node.cloneNode(!1),t.node);return Y(a,_(r)),n||(K(t.node),K(a)),i&&(W(t.node)&&dt(t.node),W(a))?(dt(a),t.node.nextSibling):a}function ct(t,e,n){var o=q(e.node,g.eq(t));return o.length?1===o.length?lt(e,n):o.reduce((function(t,o){return t===e.node&&(t=lt(e,n)),lt({node:o,offset:t?et(t):U(o)},n)})):null}function ut(t){return document.createElement(t)}function dt(t,e){if(t&&t.parentNode){if(t.removeNode)return t.removeNode(e);var n=t.parentNode;if(!e){for(var o=[],i=0,r=t.childNodes.length;i<r;i++)o.push(t.childNodes[i]);for(var a=0,s=o.length;a<s;a++)n.insertBefore(o[a],t)}n.removeChild(t)}}var ht=T("TEXTAREA");function ft(t,e){var n=ht(t[0])?t.val():t.html();return e?n.replace(/[\n\r]/g,""):n}var pt={NBSP_CHAR:x,ZERO_WIDTH_NBSP_CHAR:"\ufeff",blank:j,emptyPara:"<p>".concat(j,"</p>"),makePredByNodeName:T,isEditable:S,isControlSizing:function(t){return t&&i()(t).hasClass("note-control-sizing")},isText:E,isElement:function(t){return t&&1===t.nodeType},isVoid:I,isPara:$,isPurePara:function(t){return $(t)&&!P(t)},isHeading:function(t){return t&&/^H[1-7]/.test(t.nodeName.toUpperCase())},isInline:A,isBlock:g.not(A),isBodyInline:function(t){return A(t)&&!V(t,$)},isBody:O,isParaInline:function(t){return A(t)&&!!V(t,$)},isPre:N,isList:F,isTable:R,isData:L,isCell:H,isBlockquote:z,isBodyContainer:B,isAnchor:M,isDiv:T("DIV"),isLi:P,isBR:T("BR"),isSpan:T("SPAN"),isB:T("B"),isU:T("U"),isS:T("S"),isI:T("I"),isImg:T("IMG"),isTextarea:ht,deepestChildIsEmpty:function(t){do{if(null===t.firstElementChild||""===t.firstElementChild.innerHTML)break}while(t=t.firstElementChild);return W(t)},isEmpty:W,isEmptyAnchor:g.and(M,W),isClosestSibling:function(t,e){return t.nextSibling===e||t.previousSibling===e},withClosestSiblings:function(t,e){e=e||g.ok;var n=[];return t.previousSibling&&e(t.previousSibling)&&n.push(t.previousSibling),n.push(t),t.nextSibling&&e(t.nextSibling)&&n.push(t.nextSibling),n},nodeLength:U,isLeftEdgePoint:Z,isRightEdgePoint:X,isEdgePoint:Q,isLeftEdgeOf:J,isRightEdgeOf:tt,isLeftEdgePointOf:function(t,e){return Z(t)&&J(t.node,e)},isRightEdgePointOf:function(t,e){return X(t)&&tt(t.node,e)},prevPoint:ot,nextPoint:it,nextPointWithEmptyNode:rt,isSamePoint:st,isVisiblePoint:function(t){if(E(t.node)||!nt(t.node)||W(t.node))return!0;var e=t.node.childNodes[t.offset-1],n=t.node.childNodes[t.offset];return!(e&&!I(e)||n&&!I(n))},prevPointUntil:function(t,e){for(;t;){if(e(t))return t;t=ot(t)}return null},nextPointUntil:function(t,e){for(;t;){if(e(t))return t;t=it(t)}return null},isCharPoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return e&&" "!==e&&e!==x},isSpacePoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return" "===e||e===x},walkPoint:function(t,e,n,o){for(var i=t;i&&(n(i),!st(i,e));){i=rt(i,o&&t.node!==i.node&&e.node!==i.node)}},ancestor:V,singleChildAncestor:function(t,e){for(t=t.parentNode;t&&1===U(t);){if(e(t))return t;if(S(t))break;t=t.parentNode}return null},listAncestor:q,lastAncestor:function(t,e){var n=q(t);return C.last(n.filter(e))},listNext:_,listPrev:function(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.previousSibling;return n},listDescendant:function(t,e){var n=[];return e=e||g.ok,function o(i){t!==i&&e(i)&&n.push(i);for(var r=0,a=i.childNodes.length;r<a;r++)o(i.childNodes[r])}(t),n},commonAncestor:function(t,e){for(var n=q(t),o=e;o;o=o.parentNode)if(n.indexOf(o)>-1)return o;return null},wrap:function(t,e){var n=t.parentNode,o=i()("<"+e+">")[0];return n.insertBefore(o,t),o.appendChild(t),o},insertAfter:G,appendChildNodes:Y,position:et,hasChildren:nt,makeOffsetPath:function(t,e){return q(e,g.eq(t)).map(et).reverse()},fromOffsetPath:function(t,e){for(var n=t,o=0,i=e.length;o<i;o++)n=n.childNodes.length<=e[o]?n.childNodes[n.childNodes.length-1]:n.childNodes[e[o]];return n},splitTree:ct,splitPoint:function(t,e){var n,o,i=e?$:B,r=q(t.node,i),a=C.last(r)||t.node;i(a)?(n=r[r.length-2],o=a):o=(n=a).parentNode;var s=n&&ct(n,t,{isSkipPaddingBlankHTML:e,isNotSplitEdgePoint:e});return s||o!==t.node||(s=t.node.childNodes[t.offset]),{rightNode:s,container:o}},create:ut,createText:function(t){return document.createTextNode(t)},remove:dt,removeWhile:function(t,e){for(;t&&!S(t)&&e(t);){var n=t.parentNode;dt(t),t=n}},replace:function(t,e){if(t.nodeName.toUpperCase()===e.toUpperCase())return t;var n=ut(e);return t.style.cssText&&(n.style.cssText=t.style.cssText),Y(n,C.from(t.childNodes)),G(n,t),dt(t),n},html:function(t,e){var n=ft(t);if(e){n=(n=n.replace(/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g,(function(t,e,n){n=n.toUpperCase();var o=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n)&&!!e,i=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);return t+(o||i?"\n":"")}))).trim()}return n},value:ft,posFromPlaceholder:function(t){var e=i()(t),n=e.offset(),o=e.outerHeight(!0);return{left:n.left,top:n.top+o}},attachEvents:function(t,e){Object.keys(e).forEach((function(n){t.on(n,e[n])}))},detachEvents:function(t,e){Object.keys(e).forEach((function(n){t.off(n,e[n])}))},isCustomStyleTag:function(t){return t&&!E(t)&&C.contains(t.classList,"note-styletag")}};function mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var vt=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e,this.memos={},this.modules={},this.layoutInfo={},this.options=i.a.extend(!0,{},n),i.a.summernote.ui=i.a.summernote.ui_template(this.options),this.ui=i.a.summernote.ui,this.initialize()}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){return this.layoutInfo=this.ui.createLayout(this.$note),this._initialize(),this.$note.hide(),this}},{key:"destroy",value:function(){this._destroy(),this.$note.removeData("summernote"),this.ui.removeLayout(this.$note,this.layoutInfo)}},{key:"reset",value:function(){var t=this.isDisabled();this.code(pt.emptyPara),this._destroy(),this._initialize(),t&&this.disable()}},{key:"_initialize",value:function(){var t=this;this.options.id=g.uniqueId(i.a.now()),this.options.container=this.options.container||this.layoutInfo.editor;var e=i.a.extend({},this.options.buttons);Object.keys(e).forEach((function(n){t.memo("button."+n,e[n])}));var n=i.a.extend({},this.options.modules,i.a.summernote.plugins||{});Object.keys(n).forEach((function(e){t.module(e,n[e],!0)})),Object.keys(this.modules).forEach((function(e){t.initializeModule(e)}))}},{key:"_destroy",value:function(){var t=this;Object.keys(this.modules).reverse().forEach((function(e){t.removeModule(e)})),Object.keys(this.memos).forEach((function(e){t.removeMemo(e)})),this.triggerEvent("destroy",this)}},{key:"code",value:function(t){var e=this.invoke("codeview.isActivated");if(void 0===t)return this.invoke("codeview.sync"),e?this.layoutInfo.codable.val():this.layoutInfo.editable.html();e?this.invoke("codeview.sync",t):this.layoutInfo.editable.html(t),this.$note.val(t),this.triggerEvent("change",t,this.layoutInfo.editable)}},{key:"isDisabled",value:function(){return"false"===this.layoutInfo.editable.attr("contenteditable")}},{key:"enable",value:function(){this.layoutInfo.editable.attr("contenteditable",!0),this.invoke("toolbar.activate",!0),this.triggerEvent("disable",!1),this.options.editing=!0}},{key:"disable",value:function(){this.invoke("codeview.isActivated")&&this.invoke("codeview.deactivate"),this.layoutInfo.editable.attr("contenteditable",!1),this.options.editing=!1,this.invoke("toolbar.deactivate",!0),this.triggerEvent("disable",!0)}},{key:"triggerEvent",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=this.options.callbacks[g.namespaceToCamel(t,"on")];n&&n.apply(this.$note[0],e),this.$note.trigger("summernote."+t,e)}},{key:"initializeModule",value:function(t){var e=this.modules[t];e.shouldInitialize=e.shouldInitialize||g.ok,e.shouldInitialize()&&(e.initialize&&e.initialize(),e.events&&pt.attachEvents(this.$note,e.events))}},{key:"module",value:function(t,e,n){if(1===arguments.length)return this.modules[t];this.modules[t]=new e(this),n||this.initializeModule(t)}},{key:"removeModule",value:function(t){var e=this.modules[t];e.shouldInitialize()&&(e.events&&pt.detachEvents(this.$note,e.events),e.destroy&&e.destroy()),delete this.modules[t]}},{key:"memo",value:function(t,e){if(1===arguments.length)return this.memos[t];this.memos[t]=e}},{key:"removeMemo",value:function(t){this.memos[t]&&this.memos[t].destroy&&this.memos[t].destroy(),delete this.memos[t]}},{key:"createInvokeHandlerAndUpdateState",value:function(t,e){var n=this;return function(o){n.createInvokeHandler(t,e)(o),n.invoke("buttons.updateCurrentStyle")}}},{key:"createInvokeHandler",value:function(t,e){var n=this;return function(o){o.preventDefault();var r=i()(o.target);n.invoke(t,e||r.closest("[data-value]").data("value"),r)}}},{key:"invoke",value:function(){var t=C.head(arguments),e=C.tail(C.from(arguments)),n=t.split("."),o=n.length>1,i=o&&C.head(n),r=o?C.last(n):C.head(n),a=this.modules[i||"editor"];return!i&&this[r]?this[r].apply(this,e):a&&a[r]&&a.shouldInitialize()?a[r].apply(a,e):void 0}}])&&mt(e.prototype,n),o&&mt(e,o),t}();function gt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function bt(t,e){var n,o,i=t.parentElement(),r=document.body.createTextRange(),a=C.from(i.childNodes);for(n=0;n<a.length;n++)if(!pt.isText(a[n])){if(r.moveToElementText(a[n]),r.compareEndPoints("StartToStart",t)>=0)break;o=a[n]}if(0!==n&&pt.isText(a[n-1])){var s=document.body.createTextRange(),l=null;s.moveToElementText(o||i),s.collapse(!o),l=o?o.nextSibling:i.firstChild;var c=t.duplicate();c.setEndPoint("StartToStart",s);for(var u=c.text.replace(/[\r\n]/g,"").length;u>l.nodeValue.length&&l.nextSibling;)u-=l.nodeValue.length,l=l.nextSibling;l.nodeValue;e&&l.nextSibling&&pt.isText(l.nextSibling)&&u===l.nodeValue.length&&(u-=l.nodeValue.length,l=l.nextSibling),i=l,n=u}return{cont:i,offset:n}}function yt(t){var e=document.body.createTextRange(),n=function t(e,n){var o,i;if(pt.isText(e)){var r=pt.listPrev(e,g.not(pt.isText)),a=C.last(r).previousSibling;o=a||e.parentNode,n+=C.sum(C.tail(r),pt.nodeLength),i=!a}else{if(o=e.childNodes[n]||e,pt.isText(o))return t(o,0);n=0,i=!1}return{node:o,collapseToStart:i,offset:n}}(t.node,t.offset);return e.moveToElementText(n.node),e.collapse(n.collapseToStart),e.moveStart("character",n.offset),e}i.a.fn.extend({summernote:function(){var t=i.a.type(C.head(arguments)),e="string"===t,n="object"===t,o=i.a.extend({},i.a.summernote.options,n?C.head(arguments):{});o.langInfo=i.a.extend(!0,{},i.a.summernote.lang["en-US"],i.a.summernote.lang[o.lang]),o.icons=i.a.extend(!0,{},i.a.summernote.options.icons,o.icons),o.tooltip="auto"===o.tooltip?!m.isSupportTouch:o.tooltip,this.each((function(t,e){var n=i()(e);if(!n.data("summernote")){var r=new vt(n,o);n.data("summernote",r),n.data("summernote").triggerEvent("init",r.layoutInfo)}}));var r=this.first();if(r.length){var a=r.data("summernote");if(e)return a.invoke.apply(a,C.from(arguments));o.focus&&a.invoke("editor.focus")}return this}});var kt=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sc=e,this.so=n,this.ec=o,this.eo=i,this.isOnEditable=this.makeIsOn(pt.isEditable),this.isOnList=this.makeIsOn(pt.isList),this.isOnAnchor=this.makeIsOn(pt.isAnchor),this.isOnCell=this.makeIsOn(pt.isCell),this.isOnData=this.makeIsOn(pt.isData)}var e,n,o;return e=t,(n=[{key:"nativeRange",value:function(){if(m.isW3CRangeSupport){var t=document.createRange();return t.setStart(this.sc,this.so),t.setEnd(this.ec,this.eo),t}var e=yt({node:this.sc,offset:this.so});return e.setEndPoint("EndToEnd",yt({node:this.ec,offset:this.eo})),e}},{key:"getPoints",value:function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}}},{key:"getStartPoint",value:function(){return{node:this.sc,offset:this.so}}},{key:"getEndPoint",value:function(){return{node:this.ec,offset:this.eo}}},{key:"select",value:function(){var t=this.nativeRange();if(m.isW3CRangeSupport){var e=document.getSelection();e.rangeCount>0&&e.removeAllRanges(),e.addRange(t)}else t.select();return this}},{key:"scrollIntoView",value:function(t){var e=i()(t).height();return t.scrollTop+e<this.sc.offsetTop&&(t.scrollTop+=Math.abs(t.scrollTop+e-this.sc.offsetTop)),this}},{key:"normalize",value:function(){var e=function(t,e){if(!t)return t;if(pt.isVisiblePoint(t)&&(!pt.isEdgePoint(t)||pt.isRightEdgePoint(t)&&!e||pt.isLeftEdgePoint(t)&&e||pt.isRightEdgePoint(t)&&e&&pt.isVoid(t.node.nextSibling)||pt.isLeftEdgePoint(t)&&!e&&pt.isVoid(t.node.previousSibling)||pt.isBlock(t.node)&&pt.isEmpty(t.node)))return t;var n=pt.ancestor(t.node,pt.isBlock),o=!1;if(!o){var i=pt.prevPoint(t)||{node:null};o=(pt.isLeftEdgePointOf(t,n)||pt.isVoid(i.node))&&!e}var r=!1;if(!r){var a=pt.nextPoint(t)||{node:null};r=(pt.isRightEdgePointOf(t,n)||pt.isVoid(a.node))&&e}if(o||r){if(pt.isVisiblePoint(t))return t;e=!e}return(e?pt.nextPointUntil(pt.nextPoint(t),pt.isVisiblePoint):pt.prevPointUntil(pt.prevPoint(t),pt.isVisiblePoint))||t},n=e(this.getEndPoint(),!1),o=this.isCollapsed()?n:e(this.getStartPoint(),!0);return new t(o.node,o.offset,n.node,n.offset)}},{key:"nodes",value:function(t,e){t=t||g.ok;var n=e&&e.includeAncestor,o=e&&e.fullyContains,i=this.getStartPoint(),r=this.getEndPoint(),a=[],s=[];return pt.walkPoint(i,r,(function(e){var i;pt.isEditable(e.node)||(o?(pt.isLeftEdgePoint(e)&&s.push(e.node),pt.isRightEdgePoint(e)&&C.contains(s,e.node)&&(i=e.node)):i=n?pt.ancestor(e.node,t):e.node,i&&t(i)&&a.push(i))}),!0),C.unique(a)}},{key:"commonAncestor",value:function(){return pt.commonAncestor(this.sc,this.ec)}},{key:"expand",value:function(e){var n=pt.ancestor(this.sc,e),o=pt.ancestor(this.ec,e);if(!n&&!o)return new t(this.sc,this.so,this.ec,this.eo);var i=this.getPoints();return n&&(i.sc=n,i.so=0),o&&(i.ec=o,i.eo=pt.nodeLength(o)),new t(i.sc,i.so,i.ec,i.eo)}},{key:"collapse",value:function(e){return e?new t(this.sc,this.so,this.sc,this.so):new t(this.ec,this.eo,this.ec,this.eo)}},{key:"splitText",value:function(){var e=this.sc===this.ec,n=this.getPoints();return pt.isText(this.ec)&&!pt.isEdgePoint(this.getEndPoint())&&this.ec.splitText(this.eo),pt.isText(this.sc)&&!pt.isEdgePoint(this.getStartPoint())&&(n.sc=this.sc.splitText(this.so),n.so=0,e&&(n.ec=n.sc,n.eo=this.eo-this.so)),new t(n.sc,n.so,n.ec,n.eo)}},{key:"deleteContents",value:function(){if(this.isCollapsed())return this;var e=this.splitText(),n=e.nodes(null,{fullyContains:!0}),o=pt.prevPointUntil(e.getStartPoint(),(function(t){return!C.contains(n,t.node)})),r=[];return i.a.each(n,(function(t,e){var n=e.parentNode;o.node!==n&&1===pt.nodeLength(n)&&r.push(n),pt.remove(e,!1)})),i.a.each(r,(function(t,e){pt.remove(e,!1)})),new t(o.node,o.offset,o.node,o.offset).normalize()}},{key:"makeIsOn",value:function(t){return function(){var e=pt.ancestor(this.sc,t);return!!e&&e===pt.ancestor(this.ec,t)}}},{key:"isLeftEdgeOf",value:function(t){if(!pt.isLeftEdgePoint(this.getStartPoint()))return!1;var e=pt.ancestor(this.sc,t);return e&&pt.isLeftEdgeOf(this.sc,e)}},{key:"isCollapsed",value:function(){return this.sc===this.ec&&this.so===this.eo}},{key:"wrapBodyInlineWithPara",value:function(){if(pt.isBodyContainer(this.sc)&&pt.isEmpty(this.sc))return this.sc.innerHTML=pt.emptyPara,new t(this.sc.firstChild,0,this.sc.firstChild,0);var e,n=this.normalize();if(pt.isParaInline(this.sc)||pt.isPara(this.sc))return n;if(pt.isInline(n.sc)){var o=pt.listAncestor(n.sc,g.not(pt.isInline));e=C.last(o),pt.isInline(e)||(e=o[o.length-2]||n.sc.childNodes[n.so])}else e=n.sc.childNodes[n.so>0?n.so-1:0];if(e){var i=pt.listPrev(e,pt.isParaInline).reverse();if((i=i.concat(pt.listNext(e.nextSibling,pt.isParaInline))).length){var r=pt.wrap(C.head(i),"p");pt.appendChildNodes(r,C.tail(i))}}return this.normalize()}},{key:"insertNode",value:function(t){var e=this;(pt.isText(t)||pt.isInline(t))&&(e=this.wrapBodyInlineWithPara().deleteContents());var n=pt.splitPoint(e.getStartPoint(),pt.isInline(t));return n.rightNode?(n.rightNode.parentNode.insertBefore(t,n.rightNode),pt.isEmpty(n.rightNode)&&pt.isPara(t)&&n.rightNode.parentNode.removeChild(n.rightNode)):n.container.appendChild(t),t}},{key:"pasteHTML",value:function(t){t=i.a.trim(t);var e=i()("<div></div>").html(t)[0],n=C.from(e.childNodes),o=this,r=!1;return o.so>=0&&(n=n.reverse(),r=!0),n=n.map((function(t){return o.insertNode(t)})),r&&(n=n.reverse()),n}},{key:"toString",value:function(){var t=this.nativeRange();return m.isW3CRangeSupport?t.toString():t.text}},{key:"getWordRange",value:function(e){var n=this.getEndPoint();if(!pt.isCharPoint(n))return this;var o=pt.prevPointUntil(n,(function(t){return!pt.isCharPoint(t)}));return e&&(n=pt.nextPointUntil(n,(function(t){return!pt.isCharPoint(t)}))),new t(o.node,o.offset,n.node,n.offset)}},{key:"getWordsRange",value:function(e){var n=this.getEndPoint(),o=function(t){return!pt.isCharPoint(t)&&!pt.isSpacePoint(t)};if(o(n))return this;var i=pt.prevPointUntil(n,o);return e&&(n=pt.nextPointUntil(n,o)),new t(i.node,i.offset,n.node,n.offset)}},{key:"getWordsMatchRange",value:function(e){var n=this.getEndPoint(),o=pt.prevPointUntil(n,(function(o){if(!pt.isCharPoint(o)&&!pt.isSpacePoint(o))return!0;var i=new t(o.node,o.offset,n.node,n.offset),r=e.exec(i.toString());return r&&0===r.index})),i=new t(o.node,o.offset,n.node,n.offset),r=i.toString(),a=e.exec(r);return a&&a[0].length===r.length?i:null}},{key:"bookmark",value:function(t){return{s:{path:pt.makeOffsetPath(t,this.sc),offset:this.so},e:{path:pt.makeOffsetPath(t,this.ec),offset:this.eo}}}},{key:"paraBookmark",value:function(t){return{s:{path:C.tail(pt.makeOffsetPath(C.head(t),this.sc)),offset:this.so},e:{path:C.tail(pt.makeOffsetPath(C.last(t),this.ec)),offset:this.eo}}}},{key:"getClientRects",value:function(){return this.nativeRange().getClientRects()}}])&>(e.prototype,n),o&>(e,o),t}(),wt={create:function(t,e,n,o){if(4===arguments.length)return new kt(t,e,n,o);if(2===arguments.length)return new kt(t,e,n=t,o=e);var i=this.createFromSelection();if(!i&&1===arguments.length){var r=arguments[0];return pt.isEditable(r)&&(r=r.lastChild),this.createFromBodyElement(r,pt.emptyPara===arguments[0].innerHTML)}return i},createFromBodyElement:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.createFromNode(t);return n.collapse(e)},createFromSelection:function(){var t,e,n,o;if(m.isW3CRangeSupport){var i=document.getSelection();if(!i||0===i.rangeCount)return null;if(pt.isBody(i.anchorNode))return null;var r=i.getRangeAt(0);t=r.startContainer,e=r.startOffset,n=r.endContainer,o=r.endOffset}else{var a=document.selection.createRange(),s=a.duplicate();s.collapse(!1);var l=a;l.collapse(!0);var c=bt(l,!0),u=bt(s,!1);pt.isText(c.node)&&pt.isLeftEdgePoint(c)&&pt.isTextNode(u.node)&&pt.isRightEdgePoint(u)&&u.node.nextSibling===c.node&&(c=u),t=c.cont,e=c.offset,n=u.cont,o=u.offset}return new kt(t,e,n,o)},createFromNode:function(t){var e=t,n=0,o=t,i=pt.nodeLength(o);return pt.isVoid(e)&&(n=pt.listPrev(e).length-1,e=e.parentNode),pt.isBR(o)?(i=pt.listPrev(o).length-1,o=o.parentNode):pt.isVoid(o)&&(i=pt.listPrev(o).length,o=o.parentNode),this.create(e,n,o,i)},createFromNodeBefore:function(t){return this.createFromNode(t).collapse(!0)},createFromNodeAfter:function(t){return this.createFromNode(t).collapse()},createFromBookmark:function(t,e){var n=pt.fromOffsetPath(t,e.s.path),o=e.s.offset,i=pt.fromOffsetPath(t,e.e.path),r=e.e.offset;return new kt(n,o,i,r)},createFromParaBookmark:function(t,e){var n=t.s.offset,o=t.e.offset,i=pt.fromOffsetPath(C.head(e),t.s.path),r=pt.fromOffsetPath(C.last(e),t.e.path);return new kt(i,n,r,o)}},Ct={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221,HOME:36,END:35,PAGEUP:33,PAGEDOWN:34},xt={isEdit:function(t){return C.contains([Ct.BACKSPACE,Ct.TAB,Ct.ENTER,Ct.SPACE,Ct.DELETE],t)},isMove:function(t){return C.contains([Ct.LEFT,Ct.UP,Ct.RIGHT,Ct.DOWN],t)},isNavigation:function(t){return C.contains([Ct.HOME,Ct.END,Ct.PAGEUP,Ct.PAGEDOWN],t)},nameFromCode:g.invertObject(Ct),code:Ct};function St(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Tt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.stack=[],this.stackOffset=-1,this.context=e,this.$editable=e.layoutInfo.editable,this.editable=this.$editable[0]}var e,n,o;return e=t,(n=[{key:"makeSnapshot",value:function(){var t=wt.create(this.editable);return{contents:this.$editable.html(),bookmark:t&&t.isOnEditable()?t.bookmark(this.editable):{s:{path:[],offset:0},e:{path:[],offset:0}}}}},{key:"applySnapshot",value:function(t){null!==t.contents&&this.$editable.html(t.contents),null!==t.bookmark&&wt.createFromBookmark(this.editable,t.bookmark).select()}},{key:"rewind",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset=0,this.applySnapshot(this.stack[this.stackOffset])}},{key:"commit",value:function(){this.stack=[],this.stackOffset=-1,this.recordUndo()}},{key:"reset",value:function(){this.stack=[],this.stackOffset=-1,this.$editable.html(""),this.recordUndo()}},{key:"undo",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset>0&&(this.stackOffset--,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"redo",value:function(){this.stack.length-1>this.stackOffset&&(this.stackOffset++,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"recordUndo",value:function(){this.stackOffset++,this.stack.length>this.stackOffset&&(this.stack=this.stack.slice(0,this.stackOffset)),this.stack.push(this.makeSnapshot()),this.stack.length>this.context.options.historyLimit&&(this.stack.shift(),this.stackOffset-=1)}}])&&St(e.prototype,n),o&&St(e,o),t}();function Et(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var It=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"jQueryCSS",value:function(t,e){if(m.jqueryVersion<1.9){var n={};return i.a.each(e,(function(e,o){n[o]=t.css(o)})),n}return t.css(e)}},{key:"fromNode",value:function(t){var e=this.jQueryCSS(t,["font-family","font-size","text-align","list-style-type","line-height"])||{},n=t[0].style.fontSize||e["font-size"];return e["font-size"]=parseInt(n,10),e["font-size-unit"]=n.match(/[a-z%]+$/),e}},{key:"stylePara",value:function(t,e){i.a.each(t.nodes(pt.isPara,{includeAncestor:!0}),(function(t,n){i()(n).css(e)}))}},{key:"styleNodes",value:function(t,e){t=t.splitText();var n=e&&e.nodeName||"SPAN",o=!(!e||!e.expandClosestSibling),r=!(!e||!e.onlyPartialContains);if(t.isCollapsed())return[t.insertNode(pt.create(n))];var a=pt.makePredByNodeName(n),s=t.nodes(pt.isText,{fullyContains:!0}).map((function(t){return pt.singleChildAncestor(t,a)||pt.wrap(t,n)}));if(o){if(r){var l=t.nodes();a=g.and(a,(function(t){return C.contains(l,t)}))}return s.map((function(t){var e=pt.withClosestSiblings(t,a),n=C.head(e),o=C.tail(e);return i.a.each(o,(function(t,e){pt.appendChildNodes(n,e.childNodes),pt.remove(e)})),C.head(e)}))}return s}},{key:"current",value:function(t){var e=i()(pt.isElement(t.sc)?t.sc:t.sc.parentNode),n=this.fromNode(e);try{n=i.a.extend(n,{"font-bold":document.queryCommandState("bold")?"bold":"normal","font-italic":document.queryCommandState("italic")?"italic":"normal","font-underline":document.queryCommandState("underline")?"underline":"normal","font-subscript":document.queryCommandState("subscript")?"subscript":"normal","font-superscript":document.queryCommandState("superscript")?"superscript":"normal","font-strikethrough":document.queryCommandState("strikethrough")?"strikethrough":"normal","font-family":document.queryCommandValue("fontname")||n["font-family"]})}catch(t){}if(t.isOnList()){var o=["circle","disc","disc-leading-zero","square"].indexOf(n["list-style-type"])>-1;n["list-style"]=o?"unordered":"ordered"}else n["list-style"]="none";var r=pt.ancestor(t.sc,pt.isPara);if(r&&r.style["line-height"])n["line-height"]=r.style.lineHeight;else{var a=parseInt(n["line-height"],10)/parseInt(n["font-size"],10);n["line-height"]=a.toFixed(1)}return n.anchor=t.isOnAnchor()&&pt.ancestor(t.sc,pt.isAnchor),n.ancestors=pt.listAncestor(t.sc,pt.isEditable),n.range=t,n}}])&&Et(e.prototype,n),o&&Et(e,o),t}();function $t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Nt=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"insertOrderedList",value:function(t){this.toggleList("OL",t)}},{key:"insertUnorderedList",value:function(t){this.toggleList("UL",t)}},{key:"indent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);if(pt.isLi(o)){var r=e.findList(o.previousSibling);r?n.map((function(t){return r.appendChild(t)})):(e.wrapList(n,o.parentNode.nodeName),n.map((function(t){return t.parentNode})).map((function(t){return e.appendToPrevious(t)})))}else i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(parseInt(e,10)||0)+25}))}))})),n.select()}},{key:"outdent",value:function(t){var e=this,n=wt.create(t).wrapBodyInlineWithPara(),o=n.nodes(pt.isPara,{includeAncestor:!0}),r=C.clusterBy(o,g.peq2("parentNode"));i.a.each(r,(function(t,n){var o=C.head(n);pt.isLi(o)?e.releaseList([n]):i.a.each(n,(function(t,e){i()(e).css("marginLeft",(function(t,e){return(e=parseInt(e,10)||0)>25?e-25:""}))}))})),n.select()}},{key:"toggleList",value:function(t,e){var n=this,o=wt.create(e).wrapBodyInlineWithPara(),r=o.nodes(pt.isPara,{includeAncestor:!0}),a=o.paraBookmark(r),s=C.clusterBy(r,g.peq2("parentNode"));if(C.find(r,pt.isPurePara)){var l=[];i.a.each(s,(function(e,o){l=l.concat(n.wrapList(o,t))})),r=l}else{var c=o.nodes(pt.isList,{includeAncestor:!0}).filter((function(e){return!i.a.nodeName(e,t)}));c.length?i.a.each(c,(function(e,n){pt.replace(n,t)})):r=this.releaseList(s,!0)}wt.createFromParaBookmark(a,r).select()}},{key:"wrapList",value:function(t,e){var n=C.head(t),o=C.last(t),i=pt.isList(n.previousSibling)&&n.previousSibling,r=pt.isList(o.nextSibling)&&o.nextSibling,a=i||pt.insertAfter(pt.create(e||"UL"),o);return t=t.map((function(t){return pt.isPurePara(t)?pt.replace(t,"LI"):t})),pt.appendChildNodes(a,t),r&&(pt.appendChildNodes(a,C.from(r.childNodes)),pt.remove(r)),t}},{key:"releaseList",value:function(t,e){var n=this,o=[];return i.a.each(t,(function(t,r){var a=C.head(r),s=C.last(r),l=e?pt.lastAncestor(a,pt.isList):a.parentNode,c=l.parentNode;if("LI"===l.parentNode.nodeName)r.map((function(t){var e=n.findNextSiblings(t);c.nextSibling?c.parentNode.insertBefore(t,c.nextSibling):c.parentNode.appendChild(t),e.length&&(n.wrapList(e,l.nodeName),t.appendChild(e[0].parentNode))})),0===l.children.length&&c.removeChild(l),0===c.childNodes.length&&c.parentNode.removeChild(c);else{var u=l.childNodes.length>1?pt.splitTree(l,{node:s.parentNode,offset:pt.position(s)+1},{isSkipPaddingBlankHTML:!0}):null,d=pt.splitTree(l,{node:a.parentNode,offset:pt.position(a)},{isSkipPaddingBlankHTML:!0});r=e?pt.listDescendant(d,pt.isLi):C.from(d.childNodes).filter(pt.isLi),!e&&pt.isList(l.parentNode)||(r=r.map((function(t){return pt.replace(t,"P")}))),i.a.each(C.from(r).reverse(),(function(t,e){pt.insertAfter(e,l)}));var h=C.compact([l,d,u]);i.a.each(h,(function(t,e){var n=[e].concat(pt.listDescendant(e,pt.isList));i.a.each(n.reverse(),(function(t,e){pt.nodeLength(e)||pt.remove(e,!0)}))}))}o=o.concat(r)})),o}},{key:"appendToPrevious",value:function(t){return t.previousSibling?pt.appendChildNodes(t.previousSibling,[t]):this.wrapList([t],"LI")}},{key:"findList",value:function(t){return t?C.find(t.children,(function(t){return["OL","UL"].indexOf(t.nodeName)>-1})):null}},{key:"findNextSiblings",value:function(t){for(var e=[];t.nextSibling;)e.push(t.nextSibling),t=t.nextSibling;return e}}])&&$t(e.prototype,n),o&&$t(e,o),t}();function Pt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Rt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.bullet=new Nt,this.options=e.options}var e,n,o;return e=t,(n=[{key:"insertTab",value:function(t,e){var n=pt.createText(new Array(e+1).join(pt.NBSP_CHAR));(t=t.deleteContents()).insertNode(n,!0),(t=wt.create(n,e)).select()}},{key:"insertParagraph",value:function(t,e){e=(e=(e=e||wt.create(t)).deleteContents()).wrapBodyInlineWithPara();var n,o=pt.ancestor(e.sc,pt.isPara);if(o){if(pt.isLi(o)&&(pt.isEmpty(o)||pt.deepestChildIsEmpty(o)))return void this.bullet.toggleList(o.parentNode.nodeName);var r=null;if(1===this.options.blockquoteBreakingLevel?r=pt.ancestor(o,pt.isBlockquote):2===this.options.blockquoteBreakingLevel&&(r=pt.lastAncestor(o,pt.isBlockquote)),r){n=i()(pt.emptyPara)[0],pt.isRightEdgePoint(e.getStartPoint())&&pt.isBR(e.sc.nextSibling)&&i()(e.sc.nextSibling).remove();var a=pt.splitTree(r,e.getStartPoint(),{isDiscardEmptySplits:!0});a?a.parentNode.insertBefore(n,a):pt.insertAfter(n,r)}else{n=pt.splitTree(o,e.getStartPoint());var s=pt.listDescendant(o,pt.isEmptyAnchor);s=s.concat(pt.listDescendant(n,pt.isEmptyAnchor)),i.a.each(s,(function(t,e){pt.remove(e)})),(pt.isHeading(n)||pt.isPre(n)||pt.isCustomStyleTag(n))&&pt.isEmpty(n)&&(n=pt.replace(n,"p"))}}else{var l=e.sc.childNodes[e.so];n=i()(pt.emptyPara)[0],l?e.sc.insertBefore(n,l):e.sc.appendChild(n)}wt.create(n,0).normalize().select().scrollIntoView(t)}}])&&Pt(e.prototype,n),o&&Pt(e,o),t}();function Lt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var At=function t(e,n,o,i){var r={colPos:0,rowPos:0},a=[],s=[];function l(t,e,n,o,i,r,s){var l={baseRow:n,baseCell:o,isRowSpan:i,isColSpan:r,isVirtual:s};a[t]||(a[t]=[]),a[t][e]=l}function c(t,e,n,o){return{baseCell:t.baseCell,action:e,virtualTable:{rowIndex:n,cellIndex:o}}}function u(t,e){if(!a[t])return e;if(!a[t][e])return e;for(var n=e;a[t][n];)if(n++,!a[t][n])return n}function d(t,e){var n=u(t.rowIndex,e.cellIndex),o=e.colSpan>1,i=e.rowSpan>1,a=t.rowIndex===r.rowPos&&e.cellIndex===r.colPos;l(t.rowIndex,n,t,e,i,o,!1);var s=e.attributes.rowSpan?parseInt(e.attributes.rowSpan.value,10):0;if(s>1)for(var c=1;c<s;c++){var d=t.rowIndex+c;h(d,n,e,a),l(d,n,t,e,!0,o,!0)}var f=e.attributes.colSpan?parseInt(e.attributes.colSpan.value,10):0;if(f>1)for(var p=1;p<f;p++){var m=u(t.rowIndex,n+p);h(t.rowIndex,m,e,a),l(t.rowIndex,m,t,e,i,!0,!0)}}function h(t,e,n,o){t===r.rowPos&&r.colPos>=n.cellIndex&&n.cellIndex<=e&&!o&&r.colPos++}function f(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SubtractSpanCount;break;case t.where.Row:if(!e.isVirtual&&e.isRowSpan)return t.resultAction.AddCell;if(e.isRowSpan)return t.resultAction.SubtractSpanCount}return t.resultAction.RemoveCell}function p(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SumSpanCount;if(e.isRowSpan&&e.isVirtual)return t.resultAction.Ignore;break;case t.where.Row:if(e.isRowSpan)return t.resultAction.SumSpanCount;if(e.isColSpan&&e.isVirtual)return t.resultAction.Ignore}return t.resultAction.AddCell}this.getActionList=function(){for(var e=n===t.where.Row?r.rowPos:-1,i=n===t.where.Column?r.colPos:-1,l=0,u=!0;u;){var d=e>=0?e:l,h=i>=0?i:l,m=a[d];if(!m)return u=!1,s;var v=m[h];if(!v)return u=!1,s;var g=t.resultAction.Ignore;switch(o){case t.requestAction.Add:g=p(v);break;case t.requestAction.Delete:g=f(v)}s.push(c(v,g,d,h)),l++}return s},e&&e.tagName&&("td"===e.tagName.toLowerCase()||"th"===e.tagName.toLowerCase())&&(r.colPos=e.cellIndex,e.parentElement&&e.parentElement.tagName&&"tr"===e.parentElement.tagName.toLowerCase()&&(r.rowPos=e.parentElement.rowIndex)),function(){for(var t=i.rows,e=0;e<t.length;e++)for(var n=t[e].cells,o=0;o<n.length;o++)d(t[e],n[o])}()};At.where={Row:0,Column:1},At.requestAction={Add:0,Delete:1},At.resultAction={Ignore:0,SubtractSpanCount:1,RemoveCell:2,AddCell:3,SumSpanCount:4};var Ft=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,n,o;return e=t,(n=[{key:"tab",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=pt.ancestor(n,pt.isTable),i=pt.listDescendant(o,pt.isCell),r=C[e?"prev":"next"](i,n);r&&wt.create(r,0).select()}},{key:"addRow",value:function(t,e){for(var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr"),r=this.recoverAttributes(o),a=i()("<tr"+r+"></tr>"),s=new At(n,At.where.Row,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),l=0;l<s.length;l++){var c=s[l],u=this.recoverAttributes(c.baseCell);switch(c.action){case At.resultAction.AddCell:a.append("<td"+u+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("top"===e&&(c.baseCell.parent?c.baseCell.closest("tr").rowIndex:0)<=o[0].rowIndex){var d=i()("<div></div>").append(i()("<td"+u+">"+pt.blank+"</td>").removeAttr("rowspan")).html();a.append(d);break}var h=parseInt(c.baseCell.rowSpan,10);h++,c.baseCell.setAttribute("rowSpan",h)}}if("top"===e)o.before(a);else{if(n.rowSpan>1){var f=o[0].rowIndex+(n.rowSpan-2);return void i()(i()(o).parent().find("tr")[f]).after(i()(a))}o.after(a)}}},{key:"addCol",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr");i()(o).siblings().push(o);for(var r=new At(n,At.where.Column,At.requestAction.Add,i()(o).closest("table")[0]).getActionList(),a=0;a<r.length;a++){var s=r[a],l=this.recoverAttributes(s.baseCell);switch(s.action){case At.resultAction.AddCell:"right"===e?i()(s.baseCell).after("<td"+l+">"+pt.blank+"</td>"):i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>");break;case At.resultAction.SumSpanCount:if("right"===e){var c=parseInt(s.baseCell.colSpan,10);c++,s.baseCell.setAttribute("colSpan",c)}else i()(s.baseCell).before("<td"+l+">"+pt.blank+"</td>")}}}},{key:"recoverAttributes",value:function(t){var e="";if(!t)return e;for(var n=t.attributes||[],o=0;o<n.length;o++)"id"!==n[o].name.toLowerCase()&&n[o].specified&&(e+=" "+n[o].name+"='"+n[o].value+"'");return e}},{key:"deleteRow",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=n[0].rowIndex,a=new At(e,At.where.Row,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),s=0;s<a.length;s++)if(a[s]){var l=a[s].baseCell,c=a[s].virtualTable,u=l.rowSpan&&l.rowSpan>1,d=u?parseInt(l.rowSpan,10):0;switch(a[s].action){case At.resultAction.Ignore:continue;case At.resultAction.AddCell:var h=n.next("tr")[0];if(!h)continue;var f=n[0].cells[o];u&&(d>2?(d--,h.insertBefore(f,h.cells[o]),h.cells[o].setAttribute("rowSpan",d),h.cells[o].innerHTML=""):2===d&&(h.insertBefore(f,h.cells[o]),h.cells[o].removeAttribute("rowSpan"),h.cells[o].innerHTML=""));continue;case At.resultAction.SubtractSpanCount:u&&(d>2?(d--,l.setAttribute("rowSpan",d),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")):2===d&&(l.removeAttribute("rowSpan"),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")));continue;case At.resultAction.RemoveCell:continue}}n.remove()}},{key:"deleteCol",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=new At(e,At.where.Column,At.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),a=0;a<r.length;a++)if(r[a])switch(r[a].action){case At.resultAction.Ignore:continue;case At.resultAction.SubtractSpanCount:var s=r[a].baseCell;if(s.colSpan&&s.colSpan>1){var l=s.colSpan?parseInt(s.colSpan,10):0;l>2?(l--,s.setAttribute("colSpan",l),s.cellIndex===o&&(s.innerHTML="")):2===l&&(s.removeAttribute("colSpan"),s.cellIndex===o&&(s.innerHTML=""))}continue;case At.resultAction.RemoveCell:pt.remove(r[a].baseCell,!0);continue}}},{key:"createTable",value:function(t,e,n){for(var o,r=[],a=0;a<t;a++)r.push("<td>"+pt.blank+"</td>");o=r.join("");for(var s,l=[],c=0;c<e;c++)l.push("<tr>"+o+"</tr>");s=l.join("");var u=i()("<table>"+s+"</table>");return n&&n.tableClassName&&u.addClass(n.tableClassName),u[0]}},{key:"deleteTable",value:function(t){var e=pt.ancestor(t.commonAncestor(),pt.isCell);i()(e).closest("table").remove()}}])&&Lt(e.prototype,n),o&&Lt(e,o),t}();function Dt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ht=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.editable=this.$editable[0],this.lastRange=null,this.snapshot=null,this.style=new It,this.table=new Ft,this.typing=new Rt(e),this.bullet=new Nt,this.history=new Tt(e),this.context.memo("help.escape",this.lang.help.escape),this.context.memo("help.undo",this.lang.help.undo),this.context.memo("help.redo",this.lang.help.redo),this.context.memo("help.tab",this.lang.help.tab),this.context.memo("help.untab",this.lang.help.untab),this.context.memo("help.insertParagraph",this.lang.help.insertParagraph),this.context.memo("help.insertOrderedList",this.lang.help.insertOrderedList),this.context.memo("help.insertUnorderedList",this.lang.help.insertUnorderedList),this.context.memo("help.indent",this.lang.help.indent),this.context.memo("help.outdent",this.lang.help.outdent),this.context.memo("help.formatPara",this.lang.help.formatPara),this.context.memo("help.insertHorizontalRule",this.lang.help.insertHorizontalRule),this.context.memo("help.fontName",this.lang.help.fontName);for(var o=["bold","italic","underline","strikethrough","superscript","subscript","justifyLeft","justifyCenter","justifyRight","justifyFull","formatBlock","removeFormat","backColor"],r=0,a=o.length;r<a;r++)this[o[r]]=function(t){return function(e){n.beforeCommand(),document.execCommand(t,!1,e),n.afterCommand(!0)}}(o[r]),this.context.memo("help."+o[r],this.lang.help[o[r]]);this.fontName=this.wrapCommand((function(t){return n.fontStyling("font-family",m.validFontName(t))})),this.fontSize=this.wrapCommand((function(t){var e=n.currentStyle()["font-size-unit"];return n.fontStyling("font-size",t+e)})),this.fontSizeUnit=this.wrapCommand((function(t){var e=n.currentStyle()["font-size"];return n.fontStyling("font-size",e+t)}));for(var s=1;s<=6;s++)this["formatH"+s]=function(t){return function(){n.formatBlock("H"+t)}}(s),this.context.memo("help.formatH"+s,this.lang.help["formatH"+s]);this.insertParagraph=this.wrapCommand((function(){n.typing.insertParagraph(n.editable)})),this.insertOrderedList=this.wrapCommand((function(){n.bullet.insertOrderedList(n.editable)})),this.insertUnorderedList=this.wrapCommand((function(){n.bullet.insertUnorderedList(n.editable)})),this.indent=this.wrapCommand((function(){n.bullet.indent(n.editable)})),this.outdent=this.wrapCommand((function(){n.bullet.outdent(n.editable)})),this.insertNode=this.wrapCommand((function(t){n.isLimited(i()(t).text().length)||(n.getLastRange().insertNode(t),n.setLastRange(wt.createFromNodeAfter(t).select()))})),this.insertText=this.wrapCommand((function(t){if(!n.isLimited(t.length)){var e=n.getLastRange().insertNode(pt.createText(t));n.setLastRange(wt.create(e,pt.nodeLength(e)).select())}})),this.pasteHTML=this.wrapCommand((function(t){if(!n.isLimited(t.length)){t=n.context.invoke("codeview.purify",t);var e=n.getLastRange().pasteHTML(t);n.setLastRange(wt.createFromNodeAfter(C.last(e)).select())}})),this.formatBlock=this.wrapCommand((function(t,e){var o=n.options.callbacks.onApplyCustomStyle;o?o.call(n,e,n.context,n.onFormatBlock):n.onFormatBlock(t,e)})),this.insertHorizontalRule=this.wrapCommand((function(){var t=n.getLastRange().insertNode(pt.create("HR"));t.nextSibling&&n.setLastRange(wt.create(t.nextSibling,0).normalize().select())})),this.lineHeight=this.wrapCommand((function(t){n.style.stylePara(n.getLastRange(),{lineHeight:t})})),this.createLink=this.wrapCommand((function(t){var e=t.url,o=t.text,r=t.isNewWindow,a=t.checkProtocol,s=t.range||n.getLastRange(),l=o.length-s.toString().length;if(!(l>0&&n.isLimited(l))){var c=s.toString()!==o;"string"==typeof e&&(e=e.trim()),n.options.onCreateLink?e=n.options.onCreateLink(e):a&&(e=/^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e)?e:n.options.defaultProtocol+e);var u=[];if(c){var d=(s=s.deleteContents()).insertNode(i()("<A>"+o+"</A>")[0]);u.push(d)}else u=n.style.styleNodes(s,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});i.a.each(u,(function(t,n){i()(n).attr("href",e),r?i()(n).attr("target","_blank"):i()(n).removeAttr("target")})),n.setLastRange(n.createRangeFromList(u).select())}})),this.color=this.wrapCommand((function(t){var e=t.foreColor,n=t.backColor;e&&document.execCommand("foreColor",!1,e),n&&document.execCommand("backColor",!1,n)})),this.foreColor=this.wrapCommand((function(t){document.execCommand("foreColor",!1,t)})),this.insertTable=this.wrapCommand((function(t){var e=t.split("x");n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0],e[1],n.options))})),this.removeMedia=this.wrapCommand((function(){var t=i()(n.restoreTarget()).parent();t.closest("figure").length?t.closest("figure").remove():t=i()(n.restoreTarget()).detach(),n.context.triggerEvent("media.delete",t,n.$editable)})),this.floatMe=this.wrapCommand((function(t){var e=i()(n.restoreTarget());e.toggleClass("note-float-left","left"===t),e.toggleClass("note-float-right","right"===t),e.css("float","none"===t?"":t)})),this.resize=this.wrapCommand((function(t){var e=i()(n.restoreTarget());0===(t=parseFloat(t))?e.css("width",""):e.css({width:100*t+"%",height:""})}))}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$editable.on("keydown",(function(e){if(e.keyCode===xt.code.ENTER&&t.context.triggerEvent("enter",e),t.context.triggerEvent("keydown",e),t.snapshot=t.history.makeSnapshot(),t.hasKeyShortCut=!1,e.isDefaultPrevented()||(t.options.shortcuts?t.hasKeyShortCut=t.handleKeyMap(e):t.preventDefaultEditableShortCuts(e)),t.isLimited(1,e)){var n=t.getLastRange();if(n.eo-n.so==0)return!1}t.setLastRange(),t.options.recordEveryKeystroke&&!1===t.hasKeyShortCut&&t.history.recordUndo()})).on("keyup",(function(e){t.setLastRange(),t.context.triggerEvent("keyup",e)})).on("focus",(function(e){t.setLastRange(),t.context.triggerEvent("focus",e)})).on("blur",(function(e){t.context.triggerEvent("blur",e)})).on("mousedown",(function(e){t.context.triggerEvent("mousedown",e)})).on("mouseup",(function(e){t.setLastRange(),t.history.recordUndo(),t.context.triggerEvent("mouseup",e)})).on("scroll",(function(e){t.context.triggerEvent("scroll",e)})).on("paste",(function(e){t.setLastRange(),t.context.triggerEvent("paste",e)})).on("input",(function(){t.isLimited(0)&&t.snapshot&&t.history.applySnapshot(t.snapshot)})),this.$editable.attr("spellcheck",this.options.spellCheck),this.$editable.attr("autocorrect",this.options.spellCheck),this.options.disableGrammar&&this.$editable.attr("data-gramm",!1),this.$editable.html(pt.html(this.$note)||pt.emptyPara),this.$editable.on(m.inputEventName,g.debounce((function(){t.context.triggerEvent("change",t.$editable.html(),t.$editable)}),10)),this.$editable.on("focusin",(function(e){t.context.triggerEvent("focusin",e)})).on("focusout",(function(e){t.context.triggerEvent("focusout",e)})),this.options.airMode?this.options.overrideContextMenu&&this.$editor.on("contextmenu",(function(e){return t.context.triggerEvent("contextmenu",e),!1})):(this.options.width&&this.$editor.outerWidth(this.options.width),this.options.height&&this.$editable.outerHeight(this.options.height),this.options.maxHeight&&this.$editable.css("max-height",this.options.maxHeight),this.options.minHeight&&this.$editable.css("min-height",this.options.minHeight)),this.history.recordUndo(),this.setLastRange()}},{key:"destroy",value:function(){this.$editable.off()}},{key:"handleKeyMap",value:function(t){var e=this.options.keyMap[m.isMac?"mac":"pc"],n=[];t.metaKey&&n.push("CMD"),t.ctrlKey&&!t.altKey&&n.push("CTRL"),t.shiftKey&&n.push("SHIFT");var o=xt.nameFromCode[t.keyCode];o&&n.push(o);var i=e[n.join("+")];if("TAB"!==o||this.options.tabDisable)if(i){if(!1!==this.context.invoke(i))return t.preventDefault(),!0}else xt.isEdit(t.keyCode)&&this.afterCommand();else this.afterCommand();return!1}},{key:"preventDefaultEditableShortCuts",value:function(t){(t.ctrlKey||t.metaKey)&&C.contains([66,73,85],t.keyCode)&&t.preventDefault()}},{key:"isLimited",value:function(t,e){return t=t||0,(void 0===e||!(xt.isMove(e.keyCode)||xt.isNavigation(e.keyCode)||e.ctrlKey||e.metaKey||C.contains([xt.code.BACKSPACE,xt.code.DELETE],e.keyCode)))&&this.options.maxTextLength>0&&this.$editable.text().length+t>this.options.maxTextLength}},{key:"createRange",value:function(){return this.focus(),this.setLastRange(),this.getLastRange()}},{key:"createRangeFromList",value:function(t){var e=wt.createFromNodeBefore(C.head(t)).getStartPoint(),n=wt.createFromNodeAfter(C.last(t)).getEndPoint();return wt.create(e.node,e.offset,n.node,n.offset)}},{key:"setLastRange",value:function(t){t?this.lastRange=t:(this.lastRange=wt.create(this.editable),0===i()(this.lastRange.sc).closest(".note-editable").length&&(this.lastRange=wt.createFromBodyElement(this.editable)))}},{key:"getLastRange",value:function(){return this.lastRange||this.setLastRange(),this.lastRange}},{key:"saveRange",value:function(t){t&&this.getLastRange().collapse().select()}},{key:"restoreRange",value:function(){this.lastRange&&(this.lastRange.select(),this.focus())}},{key:"saveTarget",value:function(t){this.$editable.data("target",t)}},{key:"clearTarget",value:function(){this.$editable.removeData("target")}},{key:"restoreTarget",value:function(){return this.$editable.data("target")}},{key:"currentStyle",value:function(){var t=wt.create();return t&&(t=t.normalize()),t?this.style.current(t):this.style.fromNode(this.$editable)}},{key:"styleFromNode",value:function(t){return this.style.fromNode(t)}},{key:"undo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.undo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"commit",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.commit(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"redo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.redo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"beforeCommand",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),document.execCommand("styleWithCSS",!1,this.options.styleWithCSS),this.focus()}},{key:"afterCommand",value:function(t){this.normalizeContent(),this.history.recordUndo(),t||this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"tab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t);else{if(0===this.options.tabSize)return!1;this.isLimited(this.options.tabSize)||(this.beforeCommand(),this.typing.insertTab(t,this.options.tabSize),this.afterCommand())}}},{key:"untab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t,!0);else if(0===this.options.tabSize)return!1}},{key:"wrapCommand",value:function(t){return function(){this.beforeCommand(),t.apply(this,arguments),this.afterCommand()}}},{key:"insertImage",value:function(t,e){var n,o=this;return(n=t,i.a.Deferred((function(t){var e=i()("<img>");e.one("load",(function(){e.off("error abort"),t.resolve(e)})).one("error abort",(function(){e.off("load").detach(),t.reject(e)})).css({display:"none"}).appendTo(document.body).attr("src",n)})).promise()).then((function(t){o.beforeCommand(),"function"==typeof e?e(t):("string"==typeof e&&t.attr("data-filename",e),t.css("width",Math.min(o.$editable.width(),t.width()))),t.show(),o.getLastRange().insertNode(t[0]),o.setLastRange(wt.createFromNodeAfter(t[0]).select()),o.afterCommand()})).fail((function(t){o.context.triggerEvent("image.upload.error",t)}))}},{key:"insertImagesAsDataURL",value:function(t){var e=this;i.a.each(t,(function(t,n){var o=n.name;e.options.maximumImageFileSize&&e.options.maximumImageFileSize<n.size?e.context.triggerEvent("image.upload.error",e.lang.image.maximumFileSizeError):function(t){return i.a.Deferred((function(e){i.a.extend(new FileReader,{onload:function(t){var n=t.target.result;e.resolve(n)},onerror:function(t){e.reject(t)}}).readAsDataURL(t)})).promise()}(n).then((function(t){return e.insertImage(t,o)})).fail((function(){e.context.triggerEvent("image.upload.error")}))}))}},{key:"insertImagesOrCallback",value:function(t){this.options.callbacks.onImageUpload?this.context.triggerEvent("image.upload",t):this.insertImagesAsDataURL(t)}},{key:"getSelectedText",value:function(){var t=this.getLastRange();return t.isOnAnchor()&&(t=wt.createFromNode(pt.ancestor(t.sc,pt.isAnchor))),t.toString()}},{key:"onFormatBlock",value:function(t,e){if(document.execCommand("FormatBlock",!1,m.isMSIE?"<"+t+">":t),e&&e.length&&(e[0].tagName.toUpperCase()!==t.toUpperCase()&&(e=e.find(t)),e&&e.length)){var n=e[0].className||"";if(n){var o=this.createRange();i()([o.sc,o.ec]).closest(t).addClass(n)}}}},{key:"formatPara",value:function(){this.formatBlock("P")}},{key:"fontStyling",value:function(t,e){var n=this.getLastRange();if(""!==n){var o=this.style.styleNodes(n);if(this.$editor.find(".note-status-output").html(""),i()(o).css(t,e),n.isCollapsed()){var r=C.head(o);r&&!pt.nodeLength(r)&&(r.innerHTML=pt.ZERO_WIDTH_NBSP_CHAR,wt.createFromNode(r.firstChild).select(),this.setLastRange(),this.$editable.data("bogus",r))}else this.setLastRange(this.createRangeFromList(o).select())}else{var a=i.a.now();this.$editor.find(".note-status-output").html('<div id="note-status-output-'+a+'" class="alert alert-info">'+this.lang.output.noSelection+"</div>"),setTimeout((function(){i()("#note-status-output-"+a).remove()}),5e3)}}},{key:"unlink",value:function(){var t=this.getLastRange();if(t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor);(t=wt.createFromNode(e)).select(),this.setLastRange(),this.beforeCommand(),document.execCommand("unlink"),this.afterCommand()}}},{key:"getLinkInfo",value:function(){var t=this.getLastRange().expand(pt.isAnchor),e=i()(C.head(t.nodes(pt.isAnchor))),n={range:t,text:t.toString(),url:e.length?e.attr("href"):""};return e.length&&(n.isNewWindow="_blank"===e.attr("target")),n}},{key:"addRow",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addRow(e,t),this.afterCommand())}},{key:"addCol",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addCol(e,t),this.afterCommand())}},{key:"deleteRow",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteRow(t),this.afterCommand())}},{key:"deleteCol",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteCol(t),this.afterCommand())}},{key:"deleteTable",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteTable(t),this.afterCommand())}},{key:"resizeTo",value:function(t,e,n){var o;if(n){var i=t.y/t.x,r=e.data("ratio");o={width:r>i?t.x:t.y/r,height:r>i?t.x*r:t.y}}else o={width:t.x,height:t.y};e.css(o)}},{key:"hasFocus",value:function(){return this.$editable.is(":focus")}},{key:"focus",value:function(){this.hasFocus()||this.$editable.focus()}},{key:"isEmpty",value:function(){return pt.isEmpty(this.$editable[0])||pt.emptyPara===this.$editable.html()}},{key:"empty",value:function(){this.context.invoke("code",pt.emptyPara)}},{key:"normalizeContent",value:function(){this.$editable[0].normalize()}}])&&Dt(e.prototype,n),o&&Dt(e,o),t}();function zt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Bt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editable=e.layoutInfo.editable}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.$editable.on("paste",this.pasteByEvent.bind(this))}},{key:"pasteByEvent",value:function(t){var e=this,n=t.originalEvent.clipboardData;if(n&&n.items&&n.items.length){var o=n.items.length>1?n.items[1]:C.head(n.items);"file"===o.kind&&-1!==o.type.indexOf("image/")?(this.context.invoke("editor.insertImagesOrCallback",[o.getAsFile()]),t.preventDefault()):"string"===o.kind&&this.context.invoke("editor.isLimited",n.getData("Text").length)&&t.preventDefault()}else if(window.clipboardData){var i=window.clipboardData.getData("text");this.context.invoke("editor.isLimited",i.length)&&t.preventDefault()}setTimeout((function(){e.context.invoke("editor.afterCommand")}),10)}}])&&zt(e.prototype,n),o&&zt(e,o),t}();function Mt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ot=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$eventListener=i()(document),this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.options=e.options,this.lang=this.options.langInfo,this.documentEventHandlers={},this.$dropzone=i()(['<div class="note-dropzone">','<div class="note-dropzone-message"></div>',"</div>"].join("")).prependTo(this.$editor)}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.options.disableDragAndDrop?(this.documentEventHandlers.onDrop=function(t){t.preventDefault()},this.$eventListener=this.$dropzone,this.$eventListener.on("drop",this.documentEventHandlers.onDrop)):this.attachDragAndDropEvent()}},{key:"attachDragAndDropEvent",value:function(){var t=this,e=i()(),n=this.$dropzone.find(".note-dropzone-message");this.documentEventHandlers.onDragenter=function(o){var i=t.context.invoke("codeview.isActivated"),r=t.$editor.width()>0&&t.$editor.height()>0;i||e.length||!r||(t.$editor.addClass("dragover"),t.$dropzone.width(t.$editor.width()),t.$dropzone.height(t.$editor.height()),n.text(t.lang.image.dragImageHere)),e=e.add(o.target)},this.documentEventHandlers.onDragleave=function(n){(e=e.not(n.target)).length&&"BODY"!==n.target.nodeName||(e=i()(),t.$editor.removeClass("dragover"))},this.documentEventHandlers.onDrop=function(){e=i()(),t.$editor.removeClass("dragover")},this.$eventListener.on("dragenter",this.documentEventHandlers.onDragenter).on("dragleave",this.documentEventHandlers.onDragleave).on("drop",this.documentEventHandlers.onDrop),this.$dropzone.on("dragenter",(function(){t.$dropzone.addClass("hover"),n.text(t.lang.image.dropImage)})).on("dragleave",(function(){t.$dropzone.removeClass("hover"),n.text(t.lang.image.dragImageHere)})),this.$dropzone.on("drop",(function(e){var n=e.originalEvent.dataTransfer;e.preventDefault(),n&&n.files&&n.files.length?(t.$editable.focus(),t.context.invoke("editor.insertImagesOrCallback",n.files)):i.a.each(n.types,(function(e,o){if(!(o.toLowerCase().indexOf("_moz_")>-1)){var r=n.getData(o);o.toLowerCase().indexOf("text")>-1?t.context.invoke("editor.pasteHTML",r):i()(r).each((function(e,n){t.context.invoke("editor.insertNode",n)}))}}))})).on("dragover",!1)}},{key:"destroy",value:function(){var t=this;Object.keys(this.documentEventHandlers).forEach((function(e){t.$eventListener.off(e.substr(2).toLowerCase(),t.documentEventHandlers[e])})),this.documentEventHandlers={}}}])&&Mt(e.prototype,n),o&&Mt(e,o),t}();function jt(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"==typeof t)return Ut(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ut(t,e)}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,r=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return r=t.done,t},e:function(t){a=!0,i=t},f:function(){try{r||null==o.return||o.return()}finally{if(a)throw i}}}}function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function Wt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Kt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.options=e.options,this.CodeMirrorConstructor=window.CodeMirror,this.options.codemirror.CodeMirrorConstructor&&(this.CodeMirrorConstructor=this.options.codemirror.CodeMirrorConstructor)}var e,n,o;return e=t,(n=[{key:"sync",value:function(t){var e=this.isActivated(),n=this.CodeMirrorConstructor;e&&(t?n?this.$codable.data("cmEditor").getDoc().setValue(t):this.$codable.val(t):n&&this.$codable.data("cmEditor").save())}},{key:"initialize",value:function(){var t=this;this.$codable.on("keyup",(function(e){e.keyCode===xt.code.ESCAPE&&t.deactivate()}))}},{key:"isActivated",value:function(){return this.$editor.hasClass("codeview")}},{key:"toggle",value:function(){this.isActivated()?this.deactivate():this.activate(),this.context.triggerEvent("codeview.toggled")}},{key:"purify",value:function(t){if(this.options.codeviewFilter&&(t=t.replace(this.options.codeviewFilterRegex,""),this.options.codeviewIframeFilter)){var e=this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);t=t.replace(/(<iframe.*?>.*?(?:<\/iframe>)?)/gi,(function(t){if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t))return"";var n,o=jt(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if(new RegExp('src="(https?:)?//'+i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+'/(.+)"').test(t))return t}}catch(t){o.e(t)}finally{o.f()}return""}))}return t}},{key:"activate",value:function(){var t=this,e=this.CodeMirrorConstructor;if(this.$codable.val(pt.html(this.$editable,this.options.prettifyHtml)),this.$codable.height(this.$editable.height()),this.context.invoke("toolbar.updateCodeview",!0),this.context.invoke("airPopover.updateCodeview",!0),this.$editor.addClass("codeview"),this.$codable.focus(),e){var n=e.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var o=new e.TernServer(this.options.codemirror.tern);n.ternServer=o,n.on("cursorActivity",(function(t){o.updateArgHints(t)}))}n.on("blur",(function(e){t.context.triggerEvent("blur.codeview",n.getValue(),e)})),n.on("change",(function(){t.context.triggerEvent("change.codeview",n.getValue(),n)})),n.setSize(null,this.$editable.outerHeight()),this.$codable.data("cmEditor",n)}else this.$codable.on("blur",(function(e){t.context.triggerEvent("blur.codeview",t.$codable.val(),e)})),this.$codable.on("input",(function(){t.context.triggerEvent("change.codeview",t.$codable.val(),t.$codable)}))}},{key:"deactivate",value:function(){if(this.CodeMirrorConstructor){var t=this.$codable.data("cmEditor");this.$codable.val(t.getValue()),t.toTextArea()}var e=this.purify(pt.value(this.$codable,this.options.prettifyHtml)||pt.emptyPara),n=this.$editable.html()!==e;this.$editable.html(e),this.$editable.height(this.options.height?this.$codable.height():"auto"),this.$editor.removeClass("codeview"),n&&this.context.triggerEvent("change",this.$editable.html(),this.$editable),this.$editable.focus(),this.context.invoke("toolbar.updateCodeview",!1),this.context.invoke("airPopover.updateCodeview",!1)}},{key:"destroy",value:function(){this.isActivated()&&this.deactivate()}}])&&Wt(e.prototype,n),o&&Wt(e,o),t}();function Vt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var qt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$document=i()(document),this.$statusbar=e.layoutInfo.statusbar,this.$editable=e.layoutInfo.editable,this.options=e.options}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.options.airMode||this.options.disableResizeEditor?this.destroy():this.$statusbar.on("mousedown",(function(e){e.preventDefault(),e.stopPropagation();var n=t.$editable.offset().top-t.$document.scrollTop(),o=function(e){var o=e.clientY-(n+24);o=t.options.minheight>0?Math.max(o,t.options.minheight):o,o=t.options.maxHeight>0?Math.min(o,t.options.maxHeight):o,t.$editable.height(o)};t.$document.on("mousemove",o).one("mouseup",(function(){t.$document.off("mousemove",o)}))}))}},{key:"destroy",value:function(){this.$statusbar.off(),this.$statusbar.addClass("locked")}}])&&Vt(e.prototype,n),o&&Vt(e,o),t}();function _t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Gt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$codable=e.layoutInfo.codable,this.$window=i()(window),this.$scrollbar=i()("html, body"),this.onResize=function(){n.resizeTo({h:n.$window.height()-n.$toolbar.outerHeight()})}}var e,n,o;return e=t,(n=[{key:"resizeTo",value:function(t){this.$editable.css("height",t.h),this.$codable.css("height",t.h),this.$codable.data("cmeditor")&&this.$codable.data("cmeditor").setsize(null,t.h)}},{key:"toggle",value:function(){this.$editor.toggleClass("fullscreen"),this.isFullscreen()?(this.$editable.data("orgHeight",this.$editable.css("height")),this.$editable.data("orgMaxHeight",this.$editable.css("maxHeight")),this.$editable.css("maxHeight",""),this.$window.on("resize",this.onResize).trigger("resize"),this.$scrollbar.css("overflow","hidden")):(this.$window.off("resize",this.onResize),this.resizeTo({h:this.$editable.data("orgHeight")}),this.$editable.css("maxHeight",this.$editable.css("orgMaxHeight")),this.$scrollbar.css("overflow","visible")),this.context.invoke("toolbar.updateFullscreen",this.isFullscreen())}},{key:"isFullscreen",value:function(){return this.$editor.hasClass("fullscreen")}}])&&_t(e.prototype,n),o&&_t(e,o),t}();function Yt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Zt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$document=i()(document),this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,this.lang=this.options.langInfo,this.events={"summernote.mousedown":function(t,e){n.update(e.target,e)&&e.preventDefault()},"summernote.keyup summernote.scroll summernote.change summernote.dialog.shown":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this;this.$handle=i()(['<div class="note-handle">','<div class="note-control-selection">','<div class="note-control-selection-bg"></div>','<div class="note-control-holder note-control-nw"></div>','<div class="note-control-holder note-control-ne"></div>','<div class="note-control-holder note-control-sw"></div>','<div class="',this.options.disableResizeImage?"note-control-holder":"note-control-sizing",' note-control-se"></div>',this.options.disableResizeImage?"":'<div class="note-control-selection-info"></div>',"</div>","</div>"].join("")).prependTo(this.$editingArea),this.$handle.on("mousedown",(function(e){if(pt.isControlSizing(e.target)){e.preventDefault(),e.stopPropagation();var n=t.$handle.find(".note-control-selection").data("target"),o=n.offset(),i=t.$document.scrollTop(),r=function(e){t.context.invoke("editor.resizeTo",{x:e.clientX-o.left,y:e.clientY-(o.top-i)},n,!e.shiftKey),t.update(n[0],e)};t.$document.on("mousemove",r).one("mouseup",(function(e){e.preventDefault(),t.$document.off("mousemove",r),t.context.invoke("editor.afterCommand")})),n.data("ratio")||n.data("ratio",n.height()/n.width())}})),this.$handle.on("wheel",(function(e){e.preventDefault(),t.update()}))}},{key:"destroy",value:function(){this.$handle.remove()}},{key:"update",value:function(t,e){if(this.context.isDisabled())return!1;var n=pt.isImg(t),o=this.$handle.find(".note-control-selection");if(this.context.invoke("imagePopover.update",t,e),n){var r=i()(t),a=r.position(),s={left:a.left+parseInt(r.css("marginLeft"),10),top:a.top+parseInt(r.css("marginTop"),10)},l={w:r.outerWidth(!1),h:r.outerHeight(!1)};o.css({display:"block",left:s.left,top:s.top,width:l.w,height:l.h}).data("target",r);var c=new Image;c.src=r.attr("src");var u=l.w+"x"+l.h+" ("+this.lang.image.original+": "+c.width+"x"+c.height+")";o.find(".note-control-selection-info").text(u),this.context.invoke("editor.saveTarget",t)}else this.hide();return n}},{key:"hide",value:function(){this.context.invoke("editor.clearTarget"),this.$handle.children().hide()}}])&&Yt(e.prototype,n),o&&Yt(e,o),t}();function Xt(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Qt=/^([A-Za-z][A-Za-z0-9+-.]*\:[\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i,Jt=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){this.lastWordRange=null}},{key:"destroy",value:function(){this.lastWordRange=null}},{key:"replace",value:function(){if(this.lastWordRange){var t=this.lastWordRange.toString(),e=t.match(Qt);if(e&&(e[1]||e[2])){var n=e[1]?t:"http://"+t,o=this.options.showDomainOnlyForAutolink?t.replace(/^(?:https?:\/\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\.)?/i,"").split("/")[0]:t,r=i()("<a />").html(o).attr("href",n)[0];this.context.options.linkTargetBlank&&i()(r).attr("target","_blank"),this.lastWordRange.insertNode(r),this.lastWordRange=null,this.context.invoke("editor.focus")}}}},{key:"handleKeydown",value:function(t){if(C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWordRange=e}}},{key:"handleKeyup",value:function(t){C.contains([xt.code.ENTER,xt.code.SPACE],t.keyCode)&&this.replace()}}])&&Xt(e.prototype,n),o&&Xt(e,o),t}();function te(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ee=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e.layoutInfo.note,this.events={"summernote.change":function(){n.$note.val(e.invoke("code"))}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return pt.isTextarea(this.$note[0])}}])&&te(e.prototype,n),o&&te(e,o),t}();function ne(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var oe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.options=e.options.replace||{},this.keys=[xt.code.ENTER,xt.code.SPACE,xt.code.PERIOD,xt.code.COMMA,xt.code.SEMICOLON,xt.code.SLASH],this.previousKeydownCode=null,this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.match}},{key:"initialize",value:function(){this.lastWord=null}},{key:"destroy",value:function(){this.lastWord=null}},{key:"replace",value:function(){if(this.lastWord){var t=this,e=this.lastWord.toString();this.options.match(e,(function(e){if(e){var n="";if("string"==typeof e?n=pt.createText(e):e instanceof jQuery?n=e[0]:e instanceof Node&&(n=e),!n)return;t.lastWord.insertNode(n),t.lastWord=null,t.context.invoke("editor.focus")}}))}}},{key:"handleKeydown",value:function(t){if(this.previousKeydownCode&&C.contains(this.keys,this.previousKeydownCode))this.previousKeydownCode=t.keyCode;else{if(C.contains(this.keys,t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWord=e}this.previousKeydownCode=t.keyCode}}},{key:"handleKeyup",value:function(t){C.contains(this.keys,t.keyCode)&&this.replace()}}])&&ne(e.prototype,n),o&&ne(e,o),t}();function ie(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var re=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$editingArea=e.layoutInfo.editingArea,this.options=e.options,!0===this.options.inheritPlaceholder&&(this.options.placeholder=this.context.$note.attr("placeholder")||this.options.placeholder),this.events={"summernote.init summernote.change":function(){n.update()},"summernote.codeview.toggled":function(){n.update()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!!this.options.placeholder}},{key:"initialize",value:function(){var t=this;this.$placeholder=i()('<div class="note-placeholder">'),this.$placeholder.on("click",(function(){t.context.invoke("focus")})).html(this.options.placeholder).prependTo(this.$editingArea),this.update()}},{key:"destroy",value:function(){this.$placeholder.remove()}},{key:"update",value:function(){var t=!this.context.invoke("codeview.isActivated")&&this.context.invoke("editor.isEmpty");this.$placeholder.toggle(t)}}])&&ie(e.prototype,n),o&&ie(e,o),t}();function ae(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var se=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.ui=i.a.summernote.ui,this.context=e,this.$toolbar=e.layoutInfo.toolbar,this.options=e.options,this.lang=this.options.langInfo,this.invertedKeyMap=g.invertObject(this.options.keyMap[m.isMac?"mac":"pc"])}var e,n,o;return e=t,(n=[{key:"representShortcut",value:function(t){var e=this.invertedKeyMap[t];return this.options.shortcuts&&e?(m.isMac&&(e=e.replace("CMD","⌘").replace("SHIFT","⇧"))," ("+(e=e.replace("BACKSLASH","\\").replace("SLASH","/").replace("LEFTBRACKET","[").replace("RIGHTBRACKET","]"))+")"):""}},{key:"button",value:function(t){return!this.options.tooltip&&t.tooltip&&delete t.tooltip,t.container=this.options.container,this.ui.button(t)}},{key:"initialize",value:function(){this.addToolbarButtons(),this.addImagePopoverButtons(),this.addLinkPopoverButtons(),this.addTablePopoverButtons(),this.fontInstalledMap={}}},{key:"destroy",value:function(){delete this.fontInstalledMap}},{key:"isFontInstalled",value:function(t){return Object.prototype.hasOwnProperty.call(this.fontInstalledMap,t)||(this.fontInstalledMap[t]=m.isFontInstalled(t)||C.contains(this.options.fontNamesIgnoreCheck,t)),this.fontInstalledMap[t]}},{key:"isFontDeservedToAdd",value:function(t){return""!==(t=t.toLowerCase())&&this.isFontInstalled(t)&&-1===m.genericFontFamilies.indexOf(t)}},{key:"colorPalette",value:function(t,e,n,o){var r=this;return this.ui.buttonGroup({className:"note-color "+t,children:[this.button({className:"note-current-color-button",contents:this.ui.icon(this.options.icons.font+" note-recent-color"),tooltip:e,click:function(t){var e=i()(t.currentTarget);n&&o?r.context.invoke("editor.color",{backColor:e.attr("data-backColor"),foreColor:e.attr("data-foreColor")}):n?r.context.invoke("editor.color",{backColor:e.attr("data-backColor")}):o&&r.context.invoke("editor.color",{foreColor:e.attr("data-foreColor")})},callback:function(t){var e=t.find(".note-recent-color");n&&(e.css("background-color",r.options.colorButton.backColor),t.attr("data-backColor",r.options.colorButton.backColor)),o?(e.css("color",r.options.colorButton.foreColor),t.attr("data-foreColor",r.options.colorButton.foreColor)):e.css("color","transparent")}}),this.button({className:"dropdown-toggle",contents:this.ui.dropdownButtonContents("",this.options),tooltip:this.lang.color.more,data:{toggle:"dropdown"}}),this.ui.dropdown({items:(n?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.background+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="backColor" data-value="transparent">',this.lang.color.transparent,"</button>","</div>",'<div class="note-holder" data-event="backColor">\x3c!-- back colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="backColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="backColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.backColor+'" data-event="backColorPalette">',"</div>",'<div class="note-holder-custom" id="backColorPalette" data-event="backColor"></div>',"</div>"].join(""):"")+(o?['<div class="note-palette">','<div class="note-palette-title">'+this.lang.color.foreground+"</div>","<div>",'<button type="button" class="note-color-reset btn btn-light btn-default" data-event="removeFormat" data-value="foreColor">',this.lang.color.resetToDefault,"</button>","</div>",'<div class="note-holder" data-event="foreColor">\x3c!-- fore colors --\x3e</div>',"<div>",'<button type="button" class="note-color-select btn btn-light btn-default" data-event="openPalette" data-value="foreColorPicker">',this.lang.color.cpSelect,"</button>",'<input type="color" id="foreColorPicker" class="note-btn note-color-select-btn" value="'+this.options.colorButton.foreColor+'" data-event="foreColorPalette">',"</div>",'<div class="note-holder-custom" id="foreColorPalette" data-event="foreColor"></div>',"</div>"].join(""):""),callback:function(t){t.find(".note-holder").each((function(t,e){var n=i()(e);n.append(r.ui.palette({colors:r.options.colors,colorsName:r.options.colorsName,eventName:n.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())}));var e=[["#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]];t.find(".note-holder-custom").each((function(t,n){var o=i()(n);o.append(r.ui.palette({colors:e,colorsName:e,eventName:o.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())})),t.find("input[type=color]").each((function(e,n){i()(n).change((function(){var e=t.find("#"+i()(this).data("event")).find(".note-color-btn").first(),n=this.value.toUpperCase();e.css("background-color",n).attr("aria-label",n).attr("data-value",n).attr("data-original-title",n),e.click()}))}))},click:function(e){e.stopPropagation();var n=i()("."+t).find(".note-dropdown-menu"),o=i()(e.target),a=o.data("event"),s=o.attr("data-value");if("openPalette"===a){var l=n.find("#"+s),c=i()(n.find("#"+l.data("event")).find(".note-color-row")[0]),u=c.find(".note-color-btn").last().detach(),d=l.val();u.css("background-color",d).attr("aria-label",d).attr("data-value",d).attr("data-original-title",d),c.prepend(u),l.click()}else{if(C.contains(["backColor","foreColor"],a)){var h="backColor"===a?"background-color":"color",f=o.closest(".note-color").find(".note-recent-color"),p=o.closest(".note-color").find(".note-current-color-button");f.css(h,s),p.attr("data-"+a,s)}r.context.invoke("editor."+a,s)}}})]}).render()}},{key:"addToolbarButtons",value:function(){var t=this;this.context.memo("button.style",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic),t.options),tooltip:t.lang.style.style,data:{toggle:"dropdown"}}),t.ui.dropdown({className:"dropdown-style",items:t.options.styleTags,title:t.lang.style.style,template:function(e){"string"==typeof e&&(e={tag:e,title:Object.prototype.hasOwnProperty.call(t.lang.style,e)?t.lang.style[e]:e});var n=e.tag,o=e.title;return"<"+n+(e.style?' style="'+e.style+'" ':"")+(e.className?' class="'+e.className+'"':"")+">"+o+"</"+n+">"},click:t.context.createInvokeHandler("editor.formatBlock")})]).render()}));for(var e=function(e,n){var o=t.options.styleTags[e];t.context.memo("button.style."+o,(function(){return t.button({className:"note-btn-style-"+o,contents:'<div data-value="'+o+'">'+o.toUpperCase()+"</div>",tooltip:t.lang.style[o],click:t.context.createInvokeHandler("editor.formatBlock")}).render()}))},n=0,o=this.options.styleTags.length;n<o;n++)e(n);this.context.memo("button.bold",(function(){return t.button({className:"note-btn-bold",contents:t.ui.icon(t.options.icons.bold),tooltip:t.lang.font.bold+t.representShortcut("bold"),click:t.context.createInvokeHandlerAndUpdateState("editor.bold")}).render()})),this.context.memo("button.italic",(function(){return t.button({className:"note-btn-italic",contents:t.ui.icon(t.options.icons.italic),tooltip:t.lang.font.italic+t.representShortcut("italic"),click:t.context.createInvokeHandlerAndUpdateState("editor.italic")}).render()})),this.context.memo("button.underline",(function(){return t.button({className:"note-btn-underline",contents:t.ui.icon(t.options.icons.underline),tooltip:t.lang.font.underline+t.representShortcut("underline"),click:t.context.createInvokeHandlerAndUpdateState("editor.underline")}).render()})),this.context.memo("button.clear",(function(){return t.button({contents:t.ui.icon(t.options.icons.eraser),tooltip:t.lang.font.clear+t.representShortcut("removeFormat"),click:t.context.createInvokeHandler("editor.removeFormat")}).render()})),this.context.memo("button.strikethrough",(function(){return t.button({className:"note-btn-strikethrough",contents:t.ui.icon(t.options.icons.strikethrough),tooltip:t.lang.font.strikethrough+t.representShortcut("strikethrough"),click:t.context.createInvokeHandlerAndUpdateState("editor.strikethrough")}).render()})),this.context.memo("button.superscript",(function(){return t.button({className:"note-btn-superscript",contents:t.ui.icon(t.options.icons.superscript),tooltip:t.lang.font.superscript,click:t.context.createInvokeHandlerAndUpdateState("editor.superscript")}).render()})),this.context.memo("button.subscript",(function(){return t.button({className:"note-btn-subscript",contents:t.ui.icon(t.options.icons.subscript),tooltip:t.lang.font.subscript,click:t.context.createInvokeHandlerAndUpdateState("editor.subscript")}).render()})),this.context.memo("button.fontname",(function(){var e=t.context.invoke("editor.currentStyle");return t.options.addDefaultFonts&&i.a.each(e["font-family"].split(","),(function(e,n){n=n.trim().replace(/['"]+/g,""),t.isFontDeservedToAdd(n)&&-1===t.options.fontNames.indexOf(n)&&t.options.fontNames.push(n)})),t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontname"></span>',t.options),tooltip:t.lang.font.name,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontname",checkClassName:t.options.icons.menuCheck,items:t.options.fontNames.filter(t.isFontInstalled.bind(t)),title:t.lang.font.name,template:function(t){return'<span style="font-family: '+m.validFontName(t)+'">'+t+"</span>"},click:t.context.createInvokeHandlerAndUpdateState("editor.fontName")})]).render()})),this.context.memo("button.fontsize",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsize"></span>',t.options),tooltip:t.lang.font.size,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsize",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizes,title:t.lang.font.size,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSize")})]).render()})),this.context.memo("button.fontsizeunit",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('<span class="note-current-fontsizeunit"></span>',t.options),tooltip:t.lang.font.sizeunit,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsizeunit",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizeUnits,title:t.lang.font.sizeunit,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit")})]).render()})),this.context.memo("button.color",(function(){return t.colorPalette("note-color-all",t.lang.color.recent,!0,!0)})),this.context.memo("button.forecolor",(function(){return t.colorPalette("note-color-fore",t.lang.color.foreground,!1,!0)})),this.context.memo("button.backcolor",(function(){return t.colorPalette("note-color-back",t.lang.color.background,!0,!1)})),this.context.memo("button.ul",(function(){return t.button({contents:t.ui.icon(t.options.icons.unorderedlist),tooltip:t.lang.lists.unordered+t.representShortcut("insertUnorderedList"),click:t.context.createInvokeHandler("editor.insertUnorderedList")}).render()})),this.context.memo("button.ol",(function(){return t.button({contents:t.ui.icon(t.options.icons.orderedlist),tooltip:t.lang.lists.ordered+t.representShortcut("insertOrderedList"),click:t.context.createInvokeHandler("editor.insertOrderedList")}).render()}));var r=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut("justifyLeft"),click:this.context.createInvokeHandler("editor.justifyLeft")}),a=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut("justifyCenter"),click:this.context.createInvokeHandler("editor.justifyCenter")}),s=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut("justifyRight"),click:this.context.createInvokeHandler("editor.justifyRight")}),l=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut("justifyFull"),click:this.context.createInvokeHandler("editor.justifyFull")}),c=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut("outdent"),click:this.context.createInvokeHandler("editor.outdent")}),u=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut("indent"),click:this.context.createInvokeHandler("editor.indent")});this.context.memo("button.justifyLeft",g.invoke(r,"render")),this.context.memo("button.justifyCenter",g.invoke(a,"render")),this.context.memo("button.justifyRight",g.invoke(s,"render")),this.context.memo("button.justifyFull",g.invoke(l,"render")),this.context.memo("button.outdent",g.invoke(c,"render")),this.context.memo("button.indent",g.invoke(u,"render")),this.context.memo("button.paragraph",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft),t.options),tooltip:t.lang.paragraph.paragraph,data:{toggle:"dropdown"}}),t.ui.dropdown([t.ui.buttonGroup({className:"note-align",children:[r,a,s,l]}),t.ui.buttonGroup({className:"note-list",children:[c,u]})])]).render()})),this.context.memo("button.height",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight),t.options),tooltip:t.lang.font.height,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({items:t.options.lineHeights,checkClassName:t.options.icons.menuCheck,className:"dropdown-line-height",title:t.lang.font.height,click:t.context.createInvokeHandler("editor.lineHeight")})]).render()})),this.context.memo("button.table",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table),t.options),tooltip:t.lang.table.table,data:{toggle:"dropdown"}}),t.ui.dropdown({title:t.lang.table.table,className:"note-table",items:['<div class="note-dimension-picker">','<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>','<div class="note-dimension-picker-highlighted"></div>','<div class="note-dimension-picker-unhighlighted"></div>',"</div>",'<div class="note-dimension-display">1 x 1</div>'].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.options.insertTableMaxSize.col+"em",height:t.options.insertTableMaxSize.row+"em"}).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove",t.tableMoveHandler.bind(t))}}).render()})),this.context.memo("button.link",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.link+t.representShortcut("linkDialog.show"),click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.picture",(function(){return t.button({contents:t.ui.icon(t.options.icons.picture),tooltip:t.lang.image.image,click:t.context.createInvokeHandler("imageDialog.show")}).render()})),this.context.memo("button.video",(function(){return t.button({contents:t.ui.icon(t.options.icons.video),tooltip:t.lang.video.video,click:t.context.createInvokeHandler("videoDialog.show")}).render()})),this.context.memo("button.hr",(function(){return t.button({contents:t.ui.icon(t.options.icons.minus),tooltip:t.lang.hr.insert+t.representShortcut("insertHorizontalRule"),click:t.context.createInvokeHandler("editor.insertHorizontalRule")}).render()})),this.context.memo("button.fullscreen",(function(){return t.button({className:"btn-fullscreen note-codeview-keep",contents:t.ui.icon(t.options.icons.arrowsAlt),tooltip:t.lang.options.fullscreen,click:t.context.createInvokeHandler("fullscreen.toggle")}).render()})),this.context.memo("button.codeview",(function(){return t.button({className:"btn-codeview note-codeview-keep",contents:t.ui.icon(t.options.icons.code),tooltip:t.lang.options.codeview,click:t.context.createInvokeHandler("codeview.toggle")}).render()})),this.context.memo("button.redo",(function(){return t.button({contents:t.ui.icon(t.options.icons.redo),tooltip:t.lang.history.redo+t.representShortcut("redo"),click:t.context.createInvokeHandler("editor.redo")}).render()})),this.context.memo("button.undo",(function(){return t.button({contents:t.ui.icon(t.options.icons.undo),tooltip:t.lang.history.undo+t.representShortcut("undo"),click:t.context.createInvokeHandler("editor.undo")}).render()})),this.context.memo("button.help",(function(){return t.button({contents:t.ui.icon(t.options.icons.question),tooltip:t.lang.options.help,click:t.context.createInvokeHandler("helpDialog.show")}).render()}))}},{key:"addImagePopoverButtons",value:function(){var t=this;this.context.memo("button.resizeFull",(function(){return t.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:t.lang.image.resizeFull,click:t.context.createInvokeHandler("editor.resize","1")}).render()})),this.context.memo("button.resizeHalf",(function(){return t.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:t.lang.image.resizeHalf,click:t.context.createInvokeHandler("editor.resize","0.5")}).render()})),this.context.memo("button.resizeQuarter",(function(){return t.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:t.lang.image.resizeQuarter,click:t.context.createInvokeHandler("editor.resize","0.25")}).render()})),this.context.memo("button.resizeNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.resizeNone,click:t.context.createInvokeHandler("editor.resize","0")}).render()})),this.context.memo("button.floatLeft",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatLeft),tooltip:t.lang.image.floatLeft,click:t.context.createInvokeHandler("editor.floatMe","left")}).render()})),this.context.memo("button.floatRight",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatRight),tooltip:t.lang.image.floatRight,click:t.context.createInvokeHandler("editor.floatMe","right")}).render()})),this.context.memo("button.floatNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.floatNone,click:t.context.createInvokeHandler("editor.floatMe","none")}).render()})),this.context.memo("button.removeMedia",(function(){return t.button({contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.image.remove,click:t.context.createInvokeHandler("editor.removeMedia")}).render()}))}},{key:"addLinkPopoverButtons",value:function(){var t=this;this.context.memo("button.linkDialogShow",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.edit,click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.unlink",(function(){return t.button({contents:t.ui.icon(t.options.icons.unlink),tooltip:t.lang.link.unlink,click:t.context.createInvokeHandler("editor.unlink")}).render()}))}},{key:"addTablePopoverButtons",value:function(){var t=this;this.context.memo("button.addRowUp",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowAbove),tooltip:t.lang.table.addRowAbove,click:t.context.createInvokeHandler("editor.addRow","top")}).render()})),this.context.memo("button.addRowDown",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowBelow),tooltip:t.lang.table.addRowBelow,click:t.context.createInvokeHandler("editor.addRow","bottom")}).render()})),this.context.memo("button.addColLeft",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colBefore),tooltip:t.lang.table.addColLeft,click:t.context.createInvokeHandler("editor.addCol","left")}).render()})),this.context.memo("button.addColRight",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colAfter),tooltip:t.lang.table.addColRight,click:t.context.createInvokeHandler("editor.addCol","right")}).render()})),this.context.memo("button.deleteRow",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowRemove),tooltip:t.lang.table.delRow,click:t.context.createInvokeHandler("editor.deleteRow")}).render()})),this.context.memo("button.deleteCol",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colRemove),tooltip:t.lang.table.delCol,click:t.context.createInvokeHandler("editor.deleteCol")}).render()})),this.context.memo("button.deleteTable",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.table.delTable,click:t.context.createInvokeHandler("editor.deleteTable")}).render()}))}},{key:"build",value:function(t,e){for(var n=0,o=e.length;n<o;n++){for(var i=e[n],r=Array.isArray(i)?i[0]:i,a=Array.isArray(i)?1===i.length?[i[0]]:i[1]:[i],s=this.ui.buttonGroup({className:"note-"+r}).render(),l=0,c=a.length;l<c;l++){var u=this.context.memo("button."+a[l]);u&&s.append("function"==typeof u?u(this.context):u)}s.appendTo(t)}}},{key:"updateCurrentStyle",value:function(t){var e=this,n=t||this.$toolbar,o=this.context.invoke("editor.currentStyle");if(this.updateBtnStates(n,{".note-btn-bold":function(){return"bold"===o["font-bold"]},".note-btn-italic":function(){return"italic"===o["font-italic"]},".note-btn-underline":function(){return"underline"===o["font-underline"]},".note-btn-subscript":function(){return"subscript"===o["font-subscript"]},".note-btn-superscript":function(){return"superscript"===o["font-superscript"]},".note-btn-strikethrough":function(){return"strikethrough"===o["font-strikethrough"]}}),o["font-family"]){var r=o["font-family"].split(",").map((function(t){return t.replace(/[\'\"]/g,"").replace(/\s+$/,"").replace(/^\s+/,"")})),a=C.find(r,this.isFontInstalled.bind(this));n.find(".dropdown-fontname a").each((function(t,e){var n=i()(e),o=n.data("value")+""==a+"";n.toggleClass("checked",o)})),n.find(".note-current-fontname").text(a).css("font-family",a)}if(o["font-size"]){var s=o["font-size"];n.find(".dropdown-fontsize a").each((function(t,e){var n=i()(e),o=n.data("value")+""==s+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsize").text(s);var l=o["font-size-unit"];n.find(".dropdown-fontsizeunit a").each((function(t,e){var n=i()(e),o=n.data("value")+""==l+"";n.toggleClass("checked",o)})),n.find(".note-current-fontsizeunit").text(l)}if(o["line-height"]){var c=o["line-height"];n.find(".dropdown-line-height li a").each((function(t,n){var o=i()(n).data("value")+""==c+"";e.className=o?"checked":""}))}}},{key:"updateBtnStates",value:function(t,e){var n=this;i.a.each(e,(function(e,o){n.ui.toggleBtnActive(t.find(e),o())}))}},{key:"tableMoveHandler",value:function(t){var e,n=i()(t.target.parentNode),o=n.next(),r=n.find(".note-dimension-picker-mousecatcher"),a=n.find(".note-dimension-picker-highlighted"),s=n.find(".note-dimension-picker-unhighlighted");if(void 0===t.offsetX){var l=i()(t.target).offset();e={x:t.pageX-l.left,y:t.pageY-l.top}}else e={x:t.offsetX,y:t.offsetY};var c=Math.ceil(e.x/18)||1,u=Math.ceil(e.y/18)||1;a.css({width:c+"em",height:u+"em"}),r.data("value",c+"x"+u),c>3&&c<this.options.insertTableMaxSize.col&&s.css({width:c+1+"em"}),u>3&&u<this.options.insertTableMaxSize.row&&s.css({height:u+1+"em"}),o.html(c+" x "+u)}}])&&ae(e.prototype,n),o&&ae(e,o),t}();function le(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ce=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.$window=i()(window),this.$document=i()(document),this.ui=i.a.summernote.ui,this.$note=e.layoutInfo.note,this.$editor=e.layoutInfo.editor,this.$toolbar=e.layoutInfo.toolbar,this.$editable=e.layoutInfo.editable,this.$statusbar=e.layoutInfo.statusbar,this.options=e.options,this.isFollowing=!1,this.followScroll=this.followScroll.bind(this)}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!this.options.airMode}},{key:"initialize",value:function(){var t=this;this.options.toolbar=this.options.toolbar||[],this.options.toolbar.length?this.context.invoke("buttons.build",this.$toolbar,this.options.toolbar):this.$toolbar.hide(),this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.changeContainer(!1),this.$note.on("summernote.keyup summernote.mouseup summernote.change",(function(){t.context.invoke("buttons.updateCurrentStyle")})),this.context.invoke("buttons.updateCurrentStyle"),this.options.followingToolbar&&this.$window.on("scroll resize",this.followScroll)}},{key:"destroy",value:function(){this.$toolbar.children().remove(),this.options.followingToolbar&&this.$window.off("scroll resize",this.followScroll)}},{key:"followScroll",value:function(){if(this.$editor.hasClass("fullscreen"))return!1;var t=this.$editor.outerHeight(),e=this.$editor.width(),n=this.$toolbar.height(),o=this.$statusbar.height(),r=0;this.options.otherStaticBar&&(r=i()(this.options.otherStaticBar).outerHeight());var a=this.$document.scrollTop(),s=this.$editor.offset().top,l=s-r,c=s+t-r-n-o;!this.isFollowing&&a>l&&a<c-n?(this.isFollowing=!0,this.$editable.css({marginTop:this.$toolbar.outerHeight()}),this.$toolbar.css({position:"fixed",top:r,width:e,zIndex:1e3})):this.isFollowing&&(a<l||a>c)&&(this.isFollowing=!1,this.$toolbar.css({position:"relative",top:0,width:"100%",zIndex:"auto"}),this.$editable.css({marginTop:""}))}},{key:"changeContainer",value:function(t){t?this.$toolbar.prependTo(this.$editor):this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.options.followingToolbar&&this.followScroll()}},{key:"updateFullscreen",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"),t),this.changeContainer(t)}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"),t),t?this.deactivate():this.activate()}},{key:"activate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!0)}},{key:"deactivate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!1)}}])&&le(e.prototype,n),o&&le(e,o),t}();function ue(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var de=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo,e.memo("help.linkDialog.show",this.options.langInfo.help["linkDialog.show"])}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group">','<label for="note-dialog-link-txt-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.textToDisplay,"</label>"),'<input id="note-dialog-link-txt-'.concat(this.options.id,'" class="note-link-text form-control note-form-control note-input" type="text"/>'),"</div>",'<div class="form-group note-form-group">','<label for="note-dialog-link-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.link.url,"</label>"),'<input id="note-dialog-link-url-'.concat(this.options.id,'" class="note-link-url form-control note-form-control note-input" type="text" value="http://"/>'),"</div>",this.options.disableLinkTarget?"":i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-open-in-new-window",text:this.lang.link.openInNewWindow,checked:!0}).render()).html(),i()("<div/>").append(this.ui.checkbox({className:"sn-checkbox-use-protocol",text:this.lang.link.useProtocol,checked:!0}).render()).html()].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-link-btn",'" value="').concat(this.lang.link.insert,'" disabled>');this.$dialog=this.ui.dialog({className:"link-dialog",title:this.lang.link.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"toggleLinkBtn",value:function(t,e,n){this.ui.toggleBtn(t,e.val()&&n.val())}},{key:"showLinkDialog",value:function(t){var e=this;return i.a.Deferred((function(n){var o=e.$dialog.find(".note-link-text"),i=e.$dialog.find(".note-link-url"),r=e.$dialog.find(".note-link-btn"),a=e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),s=e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");e.ui.onDialogShown(e.$dialog,(function(){e.context.triggerEvent("dialog.shown"),!t.url&&g.isValidUrl(t.text)&&(t.url=t.text),o.on("input paste propertychange",(function(){t.text=o.val(),e.toggleLinkBtn(r,o,i)})).val(t.text),i.on("input paste propertychange",(function(){t.text||o.val(i.val()),e.toggleLinkBtn(r,o,i)})).val(t.url),m.isSupportTouch||i.trigger("focus"),e.toggleLinkBtn(r,o,i),e.bindEnterKey(i,r),e.bindEnterKey(o,r);var l=void 0!==t.isNewWindow?t.isNewWindow:e.context.options.linkTargetBlank;a.prop("checked",l);var c=!t.url&&e.context.options.useProtocol;s.prop("checked",c),r.one("click",(function(r){r.preventDefault(),n.resolve({range:t.range,url:i.val(),text:o.val(),isNewWindow:a.is(":checked"),checkProtocol:s.is(":checked")}),e.ui.hideDialog(e.$dialog)}))})),e.ui.onDialogHidden(e.$dialog,(function(){o.off(),i.off(),r.off(),"pending"===n.state()&&n.reject()})),e.ui.showDialog(e.$dialog)})).promise()}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getLinkInfo");this.context.invoke("editor.saveRange"),this.showLinkDialog(e).then((function(e){t.context.invoke("editor.restoreRange"),t.context.invoke("editor.createLink",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}}])&&ue(e.prototype,n),o&&ue(e,o),t}();function he(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var fe=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.keyup summernote.mouseup summernote.change summernote.scroll":function(){n.update()},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.link)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-link-popover",callback:function(t){t.find(".popover-content,.note-popover-content").prepend('<span><a target="_blank"></a> </span>')}}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.link),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(){if(this.context.invoke("editor.hasFocus")){var t=this.context.invoke("editor.getLastRange");if(t.isCollapsed()&&t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor),n=i()(e).attr("href");this.$popover.find("a").attr("href",n).text(n);var o=pt.posFromPlaceholder(e),r=i()(this.options.container).offset();o.top-=r.top,o.left-=r.left,this.$popover.css({display:"block",left:o.left,top:o.top})}else this.hide()}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&he(e.prototype,n),o&&he(e,o),t}();function pe(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var me=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t="";if(this.options.maximumImageFileSize){var e=Math.floor(Math.log(this.options.maximumImageFileSize)/Math.log(1024)),n=1*(this.options.maximumImageFileSize/Math.pow(1024,e)).toFixed(2)+" "+" KMGTP"[e]+"B";t="<small>".concat(this.lang.image.maximumFileSize+" : "+n,"</small>")}var o=this.options.dialogsInBody?this.$body:this.options.container,i=['<div class="form-group note-form-group note-group-select-from-files">','<label for="note-dialog-image-file-'+this.options.id+'" class="note-form-label">'+this.lang.image.selectFromFiles+"</label>",'<input id="note-dialog-image-file-'+this.options.id+'" class="note-image-input form-control-file note-form-control note-input" ',' type="file" name="files" accept="image/*" multiple="multiple"/>',t,"</div>",'<div class="form-group note-group-image-url">','<label for="note-dialog-image-url-'+this.options.id+'" class="note-form-label">'+this.lang.image.url+"</label>",'<input id="note-dialog-image-url-'+this.options.id+'" class="note-image-url form-control note-form-control note-input" type="text"/>',"</div>"].join(""),r='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-image-btn",'" value="').concat(this.lang.image.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:i,footer:r}).render().appendTo(o)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showImageDialog().then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange"),"string"==typeof e?t.options.callbacks.onImageLinkInsert?t.context.triggerEvent("image.link.insert",e):t.context.invoke("editor.insertImage",e):t.context.invoke("editor.insertImagesOrCallback",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showImageDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-image-input"),o=t.$dialog.find(".note-image-url"),i=t.$dialog.find(".note-image-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.replaceWith(n.clone().on("change",(function(t){e.resolve(t.target.files||t.target.value)})).val("")),o.on("input paste propertychange",(function(){t.ui.toggleBtn(i,o.val())})).val(""),m.isSupportTouch||o.trigger("focus"),i.click((function(t){t.preventDefault(),e.resolve(o.val())})),t.bindEnterKey(o,i)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),i.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&pe(e.prototype,n),o&&pe(e,o),t}();function ve(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ge=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.editable=e.layoutInfo.editable[0],this.options=e.options,this.events={"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.image)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-image-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.image),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t,e){if(pt.isImg(t)){var n=i()(t).offset(),o=i()(this.options.container).offset(),r={};this.options.popatmouse?(r.left=e.pageX-20,r.top=e.pageY):r=n,r.top-=o.top,r.left-=o.left,this.$popover.css({display:"block",left:r.left,top:r.top})}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&ve(e.prototype,n),o&&ve(e,o),t}();function be(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var ye=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.events={"summernote.mousedown":function(t,e){n.update(e.target)},"summernote.keyup summernote.scroll summernote.change":function(){n.update()},"summernote.disable summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return!C.isEmpty(this.options.popover.table)}},{key:"initialize",value:function(){this.$popover=this.ui.popover({className:"note-table-popover"}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.table),m.isFF&&document.execCommand("enableInlineTableEditing",!1,!1),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){if(this.context.isDisabled())return!1;var e=pt.isCell(t);if(e){var n=pt.posFromPlaceholder(t),o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:n.left,top:n.top})}else this.hide();return e}},{key:"hide",value:function(){this.$popover.hide()}}])&&be(e.prototype,n),o&&be(e,o),t}();function ke(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var we=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<div class="form-group note-form-group row-fluid">','<label for="note-dialog-video-url-'.concat(this.options.id,'" class="note-form-label">').concat(this.lang.video.url,' <small class="text-muted">').concat(this.lang.video.providers,"</small></label>"),'<input id="note-dialog-video-url-'.concat(this.options.id,'" class="note-video-url form-control note-form-control note-input" type="text"/>'),"</div>"].join(""),n='<input type="button" href="#" class="'.concat("btn btn-primary note-btn note-btn-primary note-video-btn",'" value="').concat(this.lang.video.insert,'" disabled>');this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===xt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"createVideoNode",value:function(t){var e,n=t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),o=t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),r=t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),a=t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),s=t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),l=t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),c=t.match(/\/\/v\.qq\.com.*?vid=(.+)/),u=t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),d=t.match(/^.+.(mp4|m4v)$/),h=t.match(/^.+.(ogg|ogv)$/),f=t.match(/^.+.(webm)$/),p=t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);if(n&&11===n[1].length){var m=n[1],v=0;if(void 0!==n[2]){var g=n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);if(g)for(var b=[3600,60,1],y=0,k=b.length;y<k;y++)v+=void 0!==g[y+1]?b[y]*parseInt(g[y+1],10):0}e=i()("<iframe>").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+m+(v>0?"?start="+v:"")).attr("width","640").attr("height","360")}else if(o&&o[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src","https://instagram.com/p/"+o[1]+"/embed/").attr("width","612").attr("height","710").attr("scrolling","no").attr("allowtransparency","true");else if(r&&r[0].length)e=i()("<iframe>").attr("frameborder",0).attr("src",r[0]+"/embed/simple").attr("width","600").attr("height","600").attr("class","vine-embed");else if(a&&a[3].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("src","//player.vimeo.com/video/"+a[3]).attr("width","640").attr("height","360");else if(s&&s[2].length)e=i()("<iframe>").attr("frameborder",0).attr("src","//www.dailymotion.com/embed/video/"+s[2]).attr("width","640").attr("height","360");else if(l&&l[1].length)e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","498").attr("width","510").attr("src","//player.youku.com/embed/"+l[1]);else if(c&&c[1].length||u&&u[2].length){var w=c&&c[1].length?c[1]:u[2];e=i()("<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>").attr("frameborder",0).attr("height","310").attr("width","500").attr("src","https://v.qq.com/txp/iframe/player.html?vid="+w+"&auto=0")}else if(d||h||f)e=i()("<video controls>").attr("src",t).attr("width","640").attr("height","360");else{if(!p||!p[0].length)return!1;e=i()("<iframe>").attr("frameborder",0).attr("src","https://www.facebook.com/plugins/video.php?href="+encodeURIComponent(p[0])+"&show_text=0&width=560").attr("width","560").attr("height","301").attr("scrolling","no").attr("allowtransparency","true")}return e.addClass("note-video-clip"),e[0]}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getSelectedText");this.context.invoke("editor.saveRange"),this.showVideoDialog(e).then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange");var n=t.createVideoNode(e);n&&t.context.invoke("editor.insertNode",n)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showVideoDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-video-url"),o=t.$dialog.find(".note-video-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.on("input paste propertychange",(function(){t.ui.toggleBtn(o,n.val())})),m.isSupportTouch||n.trigger("focus"),o.click((function(t){t.preventDefault(),e.resolve(n.val())})),t.bindEnterKey(n,o)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&ke(e.prototype,n),o&&ke(e,o),t}();function Ce(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var xe=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$body=i()(document.body),this.$editor=e.layoutInfo.editor,this.options=e.options,this.lang=this.options.langInfo}var e,n,o;return e=t,(n=[{key:"initialize",value:function(){var t=this.options.dialogsInBody?this.$body:this.options.container,e=['<p class="text-center">','<a href="http://summernote.org/" target="_blank">Summernote 0.8.18</a> · ','<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ','<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>',"</p>"].join("");this.$dialog=this.ui.dialog({title:this.lang.options.help,fade:this.options.dialogsFade,body:this.createShortcutList(),footer:e,callback:function(t){t.find(".modal-body,.note-modal-body").css({"max-height":300,overflow:"scroll"})}}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"createShortcutList",value:function(){var t=this,e=this.options.keyMap[m.isMac?"mac":"pc"];return Object.keys(e).map((function(n){var o=e[n],r=i()('<div><div class="help-list-item"></div></div>');return r.append(i()("<label><kbd>"+n+"</kdb></label>").css({width:180,"margin-right":10})).append(i()("<span/>").html(t.context.memo("help."+o)||o)),r.html()})).join("")}},{key:"showHelpDialog",value:function(){var t=this;return i.a.Deferred((function(e){t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),e.resolve()})),t.ui.showDialog(t.$dialog)})).promise()}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showHelpDialog().then((function(){t.context.invoke("editor.restoreRange")}))}}])&&Ce(e.prototype,n),o&&Ce(e,o),t}();function Se(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Te=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.options=e.options,this.hidable=!0,this.onContextmenu=!1,this.pageX=null,this.pageY=null,this.events={"summernote.contextmenu":function(t){n.options.editing&&(t.preventDefault(),t.stopPropagation(),n.onContextmenu=!0,n.update(!0))},"summernote.mousedown":function(t,e){n.pageX=e.pageX,n.pageY=e.pageY},"summernote.keyup summernote.mouseup summernote.scroll":function(t,e){n.options.editing&&!n.onContextmenu&&(n.pageX=e.pageX,n.pageY=e.pageY,n.update()),n.onContextmenu=!1},"summernote.disable summernote.change summernote.dialog.shown summernote.blur":function(){n.hide()},"summernote.focusout":function(){n.$popover.is(":active,:focus")||n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.options.airMode&&!C.isEmpty(this.options.popover.air)}},{key:"initialize",value:function(){var t=this;this.$popover=this.ui.popover({className:"note-air-popover"}).render().appendTo(this.options.container);var e=this.$popover.find(".popover-content");this.context.invoke("buttons.build",e,this.options.popover.air),this.$popover.on("mousedown",(function(){t.hidable=!1})),this.$popover.on("mouseup",(function(){t.hidable=!0}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(t){var e=this.context.invoke("editor.currentStyle");if(!e.range||e.range.isCollapsed()&&!t)this.hide();else{var n={left:this.pageX,top:this.pageY},o=i()(this.options.container).offset();n.top-=o.top,n.left-=o.left,this.$popover.css({display:"block",left:Math.max(n.left,0)+-5,top:n.top+5}),this.context.invoke("buttons.updateCurrentStyle",this.$popover)}}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$popover.find(".btn-codeview"),t),t&&this.hide()}},{key:"hide",value:function(){this.hidable&&this.$popover.hide()}}])&&Se(e.prototype,n),o&&Se(e,o),t}();function Ee(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var Ie=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.context=e,this.ui=i.a.summernote.ui,this.$editable=e.layoutInfo.editable,this.options=e.options,this.hint=this.options.hint||[],this.direction=this.options.hintDirection||"bottom",this.hints=Array.isArray(this.hint)?this.hint:[this.hint],this.events={"summernote.keyup":function(t,e){e.isDefaultPrevented()||n.handleKeyup(e)},"summernote.keydown":function(t,e){n.handleKeydown(e)},"summernote.disable summernote.dialog.shown summernote.blur":function(){n.hide()}}}var e,n,o;return e=t,(n=[{key:"shouldInitialize",value:function(){return this.hints.length>0}},{key:"initialize",value:function(){var t=this;this.lastWordRange=null,this.matchingWord=null,this.$popover=this.ui.popover({className:"note-hint-popover",hideArrow:!0,direction:""}).render().appendTo(this.options.container),this.$popover.hide(),this.$content=this.$popover.find(".popover-content,.note-popover-content"),this.$content.on("click",".note-hint-item",(function(e){t.$content.find(".active").removeClass("active"),i()(e.currentTarget).addClass("active"),t.replace()})),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"selectItem",value:function(t){this.$content.find(".active").removeClass("active"),t.addClass("active"),this.$content[0].scrollTop=t[0].offsetTop-this.$content.innerHeight()/2}},{key:"moveDown",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.next();if(e.length)this.selectItem(e);else{var n=t.parent().next();n.length||(n=this.$content.find(".note-hint-group").first()),this.selectItem(n.find(".note-hint-item").first())}}},{key:"moveUp",value:function(){var t=this.$content.find(".note-hint-item.active"),e=t.prev();if(e.length)this.selectItem(e);else{var n=t.parent().prev();n.length||(n=this.$content.find(".note-hint-group").last()),this.selectItem(n.find(".note-hint-item").last())}}},{key:"replace",value:function(){var t=this.$content.find(".note-hint-item.active");if(t.length){var e=this.nodeFromItem(t);if(null!==this.matchingWord&&0===this.matchingWord.length)this.lastWordRange.so=this.lastWordRange.eo;else if(null!==this.matchingWord&&this.matchingWord.length>0&&!this.lastWordRange.isCollapsed()){var n=this.lastWordRange.eo-this.lastWordRange.so-this.matchingWord.length;n>0&&(this.lastWordRange.so+=n)}if(this.lastWordRange.insertNode(e),"next"===this.options.hintSelect){var o=document.createTextNode("");i()(e).after(o),wt.createFromNodeBefore(o).select()}else wt.createFromNodeAfter(e).select();this.lastWordRange=null,this.hide(),this.context.invoke("editor.focus")}}},{key:"nodeFromItem",value:function(t){var e=this.hints[t.data("index")],n=t.data("item"),o=e.content?e.content(n):n;return"string"==typeof o&&(o=pt.createText(o)),o}},{key:"createItemTemplates",value:function(t,e){var n=this.hints[t];return e.map((function(e){var o=i()('<div class="note-hint-item"/>');return o.append(n.template?n.template(e):e+""),o.data({index:t,item:e}),o}))}},{key:"handleKeydown",value:function(t){this.$popover.is(":visible")&&(t.keyCode===xt.code.ENTER?(t.preventDefault(),this.replace()):t.keyCode===xt.code.UP?(t.preventDefault(),this.moveUp()):t.keyCode===xt.code.DOWN&&(t.preventDefault(),this.moveDown()))}},{key:"searchKeyword",value:function(t,e,n){var o=this.hints[t];if(o&&o.match.test(e)&&o.search){var i=o.match.exec(e);this.matchingWord=i[0],o.search(i[1],n)}else n()}},{key:"createGroup",value:function(t,e){var n=this,o=i()('<div class="note-hint-group note-hint-group-'+t+'"></div>');return this.searchKeyword(t,e,(function(e){(e=e||[]).length&&(o.html(n.createItemTemplates(t,e)),n.show())})),o}},{key:"handleKeyup",value:function(t){var e=this;if(!C.contains([xt.code.ENTER,xt.code.UP,xt.code.DOWN],t.keyCode)){var n,o,r=this.context.invoke("editor.getLastRange");if("words"===this.options.hintMode){if(n=r.getWordsRange(r),o=n.toString(),this.hints.forEach((function(t){if(t.match.test(o))return n=r.getWordsMatchRange(t.match),!1})),!n)return void this.hide();o=n.toString()}else n=r.getWordRange(),o=n.toString();if(this.hints.length&&o){this.$content.empty();var a=g.rect2bnd(C.last(n.getClientRects())),s=i()(this.options.container).offset();a&&(a.top-=s.top,a.left-=s.left,this.$popover.hide(),this.lastWordRange=n,this.hints.forEach((function(t,n){t.match.test(o)&&e.createGroup(n,o).appendTo(e.$content)})),this.$content.find(".note-hint-item:first").addClass("active"),"top"===this.direction?this.$popover.css({left:a.left,top:a.top-this.$popover.outerHeight()-5}):this.$popover.css({left:a.left,top:a.top+a.height+5}))}else this.hide()}}},{key:"show",value:function(){this.$popover.show()}},{key:"hide",value:function(){this.$popover.hide()}}])&&Ee(e.prototype,n),o&&Ee(e,o),t}();i.a.summernote=i.a.extend(i.a.summernote,{version:"0.8.18",plugins:{},dom:pt,range:wt,lists:C,options:{langInfo:i.a.summernote.lang["en-US"],editing:!0,modules:{editor:Ht,clipboard:Bt,dropzone:Ot,codeview:Kt,statusbar:qt,fullscreen:Gt,handle:Zt,hintPopover:Ie,autoLink:Jt,autoSync:ee,autoReplace:oe,placeholder:re,buttons:se,toolbar:ce,linkDialog:de,linkPopover:fe,imageDialog:me,imagePopover:ge,tablePopover:ye,videoDialog:we,helpDialog:xe,airPopover:Te},buttons:{},lang:"en-US",followingToolbar:!1,toolbarPosition:"top",otherStaticBar:"",codeviewKeepButton:!1,toolbar:[["style",["style"]],["font",["bold","underline","clear"]],["fontname",["fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["table",["table"]],["insert",["link","picture","video"]],["view",["fullscreen","codeview","help"]]],popatmouse:!0,popover:{image:[["resize",["resizeFull","resizeHalf","resizeQuarter","resizeNone"]],["float",["floatLeft","floatRight","floatNone"]],["remove",["removeMedia"]]],link:[["link",["linkDialogShow","unlink"]]],table:[["add",["addRowDown","addRowUp","addColLeft","addColRight"]],["delete",["deleteRow","deleteCol","deleteTable"]]],air:[["color",["color"]],["font",["bold","underline","clear"]],["para",["ul","paragraph"]],["table",["table"]],["insert",["link","picture"]],["view",["fullscreen","codeview"]]]},airMode:!1,overrideContextMenu:!1,width:null,height:null,linkTargetBlank:!0,useProtocol:!0,defaultProtocol:"http://",focus:!1,tabDisabled:!1,tabSize:4,styleWithCSS:!1,shortcuts:!0,textareaAutoSync:!0,tooltip:"auto",container:null,maxTextLength:0,blockquoteBreakingLevel:2,spellCheck:!0,disableGrammar:!1,placeholder:null,inheritPlaceholder:!1,recordEveryKeystroke:!1,historyLimit:200,showDomainOnlyForAutolink:!1,hintMode:"word",hintSelect:"after",hintDirection:"bottom",styleTags:["p","blockquote","pre","h1","h2","h3","h4","h5","h6"],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Tahoma","Times New Roman","Verdana"],fontNamesIgnoreCheck:[],addDefaultFonts:!0,fontSizes:["8","9","10","11","12","14","18","24","36"],fontSizeUnits:["px","pt"],colors:[["#000000","#424242","#636363","#9C9C94","#CEC6CE","#EFEFEF","#F7F7F7","#FFFFFF"],["#FF0000","#FF9C00","#FFFF00","#00FF00","#00FFFF","#0000FF","#9C00FF","#FF00FF"],["#F7C6CE","#FFE7CE","#FFEFC6","#D6EFD6","#CEDEE7","#CEE7F7","#D6D6E7","#E7D6DE"],["#E79C9C","#FFC69C","#FFE79C","#B5D6A5","#A5C6CE","#9CC6EF","#B5A5D6","#D6A5BD"],["#E76363","#F7AD6B","#FFD663","#94BD7B","#73A5AD","#6BADDE","#8C7BC6","#C67BA5"],["#CE0000","#E79439","#EFC631","#6BA54A","#4A7B8C","#3984C6","#634AA5","#A54A7B"],["#9C0000","#B56308","#BD9400","#397B21","#104A5A","#085294","#311873","#731842"],["#630000","#7B3900","#846300","#295218","#083139","#003163","#21104A","#4A1031"]],colorsName:[["Black","Tundora","Dove Gray","Star Dust","Pale Slate","Gallery","Alabaster","White"],["Red","Orange Peel","Yellow","Green","Cyan","Blue","Electric Violet","Magenta"],["Azalea","Karry","Egg White","Zanah","Botticelli","Tropical Blue","Mischka","Twilight"],["Tonys Pink","Peach Orange","Cream Brulee","Sprout","Casper","Perano","Cold Purple","Careys Pink"],["Mandy","Rajah","Dandelion","Olivine","Gulf Stream","Viking","Blue Marguerite","Puce"],["Guardsman Red","Fire Bush","Golden Dream","Chelsea Cucumber","Smalt Blue","Boston Blue","Butterfly Bush","Cadillac"],["Sangria","Mai Tai","Buddha Gold","Forest Green","Eden","Venice Blue","Meteorite","Claret"],["Rosewood","Cinnamon","Olive","Parsley","Tiber","Midnight Blue","Valentino","Loulou"]],colorButton:{foreColor:"#000000",backColor:"#FFFF00"},lineHeights:["1.0","1.2","1.4","1.5","1.6","1.8","2.0","3.0"],tableClassName:"table table-bordered",insertTableMaxSize:{col:10,row:10},dialogsInBody:!1,dialogsFade:!1,maximumImageFileSize:null,callbacks:{onBeforeCommand:null,onBlur:null,onBlurCodeview:null,onChange:null,onChangeCodeview:null,onDialogShown:null,onEnter:null,onFocus:null,onImageLinkInsert:null,onImageUpload:null,onImageUploadError:null,onInit:null,onKeydown:null,onKeyup:null,onMousedown:null,onMouseup:null,onPaste:null,onScroll:null},codemirror:{mode:"text/html",htmlMode:!0,lineNumbers:!0},codeviewFilter:!1,codeviewFilterRegex:/<\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,codeviewIframeFilter:!0,codeviewIframeWhitelistSrc:[],codeviewIframeWhitelistSrcBase:["www.youtube.com","www.youtube-nocookie.com","www.facebook.com","vine.co","instagram.com","player.vimeo.com","www.dailymotion.com","player.youku.com","v.qq.com"],keyMap:{pc:{ESC:"escape",ENTER:"insertParagraph","CTRL+Z":"undo","CTRL+Y":"redo",TAB:"tab","SHIFT+TAB":"untab","CTRL+B":"bold","CTRL+I":"italic","CTRL+U":"underline","CTRL+SHIFT+S":"strikethrough","CTRL+BACKSLASH":"removeFormat","CTRL+SHIFT+L":"justifyLeft","CTRL+SHIFT+E":"justifyCenter","CTRL+SHIFT+R":"justifyRight","CTRL+SHIFT+J":"justifyFull","CTRL+SHIFT+NUM7":"insertUnorderedList","CTRL+SHIFT+NUM8":"insertOrderedList","CTRL+LEFTBRACKET":"outdent","CTRL+RIGHTBRACKET":"indent","CTRL+NUM0":"formatPara","CTRL+NUM1":"formatH1","CTRL+NUM2":"formatH2","CTRL+NUM3":"formatH3","CTRL+NUM4":"formatH4","CTRL+NUM5":"formatH5","CTRL+NUM6":"formatH6","CTRL+ENTER":"insertHorizontalRule","CTRL+K":"linkDialog.show"},mac:{ESC:"escape",ENTER:"insertParagraph","CMD+Z":"undo","CMD+SHIFT+Z":"redo",TAB:"tab","SHIFT+TAB":"untab","CMD+B":"bold","CMD+I":"italic","CMD+U":"underline","CMD+SHIFT+S":"strikethrough","CMD+BACKSLASH":"removeFormat","CMD+SHIFT+L":"justifyLeft","CMD+SHIFT+E":"justifyCenter","CMD+SHIFT+R":"justifyRight","CMD+SHIFT+J":"justifyFull","CMD+SHIFT+NUM7":"insertUnorderedList","CMD+SHIFT+NUM8":"insertOrderedList","CMD+LEFTBRACKET":"outdent","CMD+RIGHTBRACKET":"indent","CMD+NUM0":"formatPara","CMD+NUM1":"formatH1","CMD+NUM2":"formatH2","CMD+NUM3":"formatH3","CMD+NUM4":"formatH4","CMD+NUM5":"formatH5","CMD+NUM6":"formatH6","CMD+ENTER":"insertHorizontalRule","CMD+K":"linkDialog.show"}},icons:{align:"note-icon-align",alignCenter:"note-icon-align-center",alignJustify:"note-icon-align-justify",alignLeft:"note-icon-align-left",alignRight:"note-icon-align-right",rowBelow:"note-icon-row-below",colBefore:"note-icon-col-before",colAfter:"note-icon-col-after",rowAbove:"note-icon-row-above",rowRemove:"note-icon-row-remove",colRemove:"note-icon-col-remove",indent:"note-icon-align-indent",outdent:"note-icon-align-outdent",arrowsAlt:"note-icon-arrows-alt",bold:"note-icon-bold",caret:"note-icon-caret",circle:"note-icon-circle",close:"note-icon-close",code:"note-icon-code",eraser:"note-icon-eraser",floatLeft:"note-icon-float-left",floatRight:"note-icon-float-right",font:"note-icon-font",frame:"note-icon-frame",italic:"note-icon-italic",link:"note-icon-link",unlink:"note-icon-chain-broken",magic:"note-icon-magic",menuCheck:"note-icon-menu-check",minus:"note-icon-minus",orderedlist:"note-icon-orderedlist",pencil:"note-icon-pencil",picture:"note-icon-picture",question:"note-icon-question",redo:"note-icon-redo",rollback:"note-icon-rollback",square:"note-icon-square",strikethrough:"note-icon-strikethrough",subscript:"note-icon-subscript",superscript:"note-icon-superscript",table:"note-icon-table",textHeight:"note-icon-text-height",trash:"note-icon-trash",underline:"note-icon-underline",undo:"note-icon-undo",unorderedlist:"note-icon-unorderedlist",video:"note-icon-video"}}})},4:function(t,e,n){},52:function(t,e,n){"use strict";n.r(e);var o=n(0),i=n.n(o),r=n(1);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=r.a.create('<div class="note-editor note-frame panel panel-default"/>'),l=r.a.create('<div class="panel-heading note-toolbar" role="toolbar"/>'),c=r.a.create('<div class="note-editing-area"/>'),u=r.a.create('<textarea class="note-codable" aria-multiline="true"/>'),d=r.a.create('<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"/>'),h=r.a.create(['<output class="note-status-output" role="status" aria-live="polite"></output>','<div class="note-statusbar" role="status">','<div class="note-resizebar" aria-label="Resize">','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>','<div class="note-icon-bar"></div>',"</div>","</div>"].join("")),f=r.a.create('<div class="note-editor note-airframe"/>'),p=r.a.create(['<div class="note-editable" contentEditable="true" role="textbox" aria-multiline="true"></div>','<output class="note-status-output" role="status" aria-live="polite"></output>'].join("")),m=r.a.create('<div class="note-btn-group btn-group">'),v=r.a.create('<ul class="note-dropdown-menu dropdown-menu">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t,i="object"===a(t)?t.option:void 0;return'<li aria-label="'+n+'"><a href="#" '+('data-value="'+n+'"'+(void 0!==i?' data-option="'+i+'"':""))+">"+o+"</a></li>"})).join(""):e.items;t.html(n).attr({"aria-label":e.title}),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),g=function(t,e){return t+" "+C(e.icons.caret,"span")},b=r.a.create('<ul class="note-dropdown-menu dropdown-menu note-check">',(function(t,e){var n=Array.isArray(e.items)?e.items.map((function(t){var n="string"==typeof t?t:t.value||"",o=e.template?e.template(t):t;return'<li aria-label="'+t+'"><a href="#" data-value="'+n+'">'+C(e.checkClassName)+" "+o+"</a></li>"})).join(""):e.items;t.html(n).attr({"aria-label":e.title}),e&&e.codeviewKeepButton&&t.addClass("note-codeview-keep")})),y=r.a.create('<div class="modal note-modal" aria-hidden="false" tabindex="-1" role="dialog"/>',(function(t,e){e.fade&&t.addClass("fade"),t.attr({"aria-label":e.title}),t.html(['<div class="modal-dialog">','<div class="modal-content">',e.title?'<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close" aria-hidden="true">×</button><h4 class="modal-title">'+e.title+"</h4></div>":"",'<div class="modal-body">'+e.body+"</div>",e.footer?'<div class="modal-footer">'+e.footer+"</div>":"","</div>","</div>"].join(""))})),k=r.a.create(['<div class="note-popover popover in">','<div class="arrow"></div>','<div class="popover-content note-children-container"></div>',"</div>"].join(""),(function(t,e){var n=void 0!==e.direction?e.direction:"bottom";t.addClass(n),e.hideArrow&&t.find(".arrow").hide()})),w=r.a.create('<div class="checkbox"></div>',(function(t,e){t.html(["<label"+(e.id?' for="note-'+e.id+'"':"")+">",'<input type="checkbox"'+(e.id?' id="note-'+e.id+'"':""),e.checked?" checked":"",' aria-checked="'+(e.checked?"true":"false")+'"/>',e.text?e.text:"","</label>"].join(""))})),C=function(t,e){return"<"+(e=e||"i")+' class="'+t+'"></'+e+">"},x=function(t){return{editor:s,toolbar:l,editingArea:c,codable:u,editable:d,statusbar:h,airEditor:f,airEditable:p,buttonGroup:m,dropdown:v,dropdownButtonContents:g,dropdownCheck:b,dialog:y,popover:k,checkbox:w,icon:C,options:t,palette:function(e,n){return r.a.create('<div class="note-color-palette"/>',(function(e,n){for(var o=[],i=0,r=n.colors.length;i<r;i++){for(var a=n.eventName,s=n.colors[i],l=n.colorsName[i],c=[],u=0,d=s.length;u<d;u++){var h=s[u],f=l[u];c.push(['<button type="button" class="note-color-btn"','style="background-color:',h,'" ','data-event="',a,'" ','data-value="',h,'" ','title="',f,'" ','aria-label="',f,'" ','data-toggle="button" tabindex="-1"></button>'].join(""))}o.push('<div class="note-color-row">'+c.join("")+"</div>")}e.html(o.join("")),n.tooltip&&e.find(".note-color-btn").tooltip({container:n.container||t.container,trigger:"hover",placement:"bottom"})}))(e,n)},button:function(e,n){return r.a.create('<button type="button" class="note-btn btn btn-default btn-sm" tabindex="-1">',(function(e,n){n&&n.tooltip&&e.attr({title:n.tooltip,"aria-label":n.tooltip}).tooltip({container:n.container||t.container,trigger:"hover",placement:"bottom"}).on("click",(function(t){i()(t.currentTarget).tooltip("hide")})),n&&n.codeviewButton&&e.addClass("note-codeview-keep")}))(e,n)},toggleBtn:function(t,e){t.toggleClass("disabled",!e),t.attr("disabled",!e)},toggleBtnActive:function(t,e){t.toggleClass("active",e)},onDialogShown:function(t,e){t.one("shown.bs.modal",e)},onDialogHidden:function(t,e){t.one("hidden.bs.modal",e)},showDialog:function(t){t.modal("show")},hideDialog:function(t){t.modal("hide")},createLayout:function(e){var n=(t.airMode?f([c([u(),p()])]):"bottom"===t.toolbarPosition?s([c([u(),d()]),l(),h()]):s([l(),c([u(),d()]),h()])).render();return n.insertAfter(e),{note:e,editor:n,toolbar:n.find(".note-toolbar"),editingArea:n.find(".note-editing-area"),editable:n.find(".note-editable"),codable:n.find(".note-codable"),statusbar:n.find(".note-statusbar")}},removeLayout:function(t,e){t.html(e.editable.html()),e.editor.remove(),t.show()}}};n(3),n(4);i.a.summernote=i.a.extend(i.a.summernote,{ui_template:x,interface:"bs3"})}})})); +//# sourceMappingURL=summernote.min.js.map \ No newline at end of file diff --git a/admin/vendors/summernote/dist/summernote.min.js.map b/admin/vendors/summernote/dist/summernote.min.js.map new file mode 100644 index 0000000000000000000000000000000000000000..df2112f7e9bff64caabe1656281665ba1b77f665 --- /dev/null +++ b/admin/vendors/summernote/dist/summernote.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack:///./src/js/base/renderer.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/base/summernote-en-US.js","webpack:///./src/js/base/core/env.js","webpack:///./src/js/base/core/func.js","webpack:///./src/js/base/core/lists.js","webpack:///./src/js/base/core/dom.js","webpack:///./src/js/base/Context.js","webpack:///./src/js/base/core/range.js","webpack:///./src/js/summernote.js","webpack:///./src/js/base/core/key.js","webpack:///./src/js/base/editing/History.js","webpack:///./src/js/base/editing/Style.js","webpack:///./src/js/base/editing/Bullet.js","webpack:///./src/js/base/editing/Typing.js","webpack:///./src/js/base/editing/Table.js","webpack:///./src/js/base/module/Editor.js","webpack:///./src/js/base/core/async.js","webpack:///./src/js/base/module/Clipboard.js","webpack:///./src/js/base/module/Dropzone.js","webpack:///./src/js/base/module/Codeview.js","webpack:///./src/js/base/module/Statusbar.js","webpack:///./src/js/base/module/Fullscreen.js","webpack:///./src/js/base/module/Handle.js","webpack:///./src/js/base/module/AutoLink.js","webpack:///./src/js/base/module/AutoSync.js","webpack:///./src/js/base/module/AutoReplace.js","webpack:///./src/js/base/module/Placeholder.js","webpack:///./src/js/base/module/Buttons.js","webpack:///./src/js/base/module/Toolbar.js","webpack:///./src/js/base/module/LinkDialog.js","webpack:///./src/js/base/module/LinkPopover.js","webpack:///./src/js/base/module/ImageDialog.js","webpack:///./src/js/base/module/ImagePopover.js","webpack:///./src/js/base/module/TablePopover.js","webpack:///./src/js/base/module/VideoDialog.js","webpack:///./src/js/base/module/HelpDialog.js","webpack:///./src/js/base/module/AirPopover.js","webpack:///./src/js/base/module/HintPopover.js","webpack:///./src/js/base/settings.js","webpack:///./src/js/bs3/ui.js","webpack:///./src/js/bs3/settings.js"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__0__","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Renderer","markup","children","options","callback","this","$parent","$node","$","contents","html","className","addClass","data","each","k","v","attr","click","on","$container","find","forEach","child","render","length","append","arguments","Array","isArray","__webpack_amd_options__","summernote","lang","extend","font","bold","italic","underline","clear","height","strikethrough","subscript","superscript","size","sizeunit","image","insert","resizeFull","resizeHalf","resizeQuarter","resizeNone","floatLeft","floatRight","floatNone","shapeRounded","shapeCircle","shapeThumbnail","shapeNone","dragImageHere","dropImage","selectFromFiles","maximumFileSize","maximumFileSizeError","url","remove","original","video","videoLink","providers","link","unlink","edit","textToDisplay","openInNewWindow","useProtocol","table","addRowAbove","addRowBelow","addColLeft","addColRight","delRow","delCol","delTable","hr","style","blockquote","pre","h1","h2","h3","h4","h5","h6","lists","unordered","ordered","help","fullscreen","codeview","paragraph","outdent","indent","left","center","right","justify","color","recent","more","background","foreground","transparent","setTransparent","reset","resetToDefault","cpSelect","shortcut","shortcuts","close","textFormatting","action","paragraphFormatting","documentStyle","extraKeys","history","undo","redo","specialChar","select","output","noSelection","isSupportAmd","genericFontFamilies","validFontName","fontName","inArray","toLowerCase","browserVersion","userAgent","navigator","isMSIE","test","matches","exec","parseFloat","isEdge","isSupportTouch","MaxTouchPoints","msMaxTouchPoints","inputEventName","isMac","appVersion","indexOf","isFF","isPhantom","isWebkit","isChrome","isSafari","jqueryVersion","fn","jquery","isFontInstalled","testFontName","context","document","createElement","getContext","testSize","originalWidth","measureText","width","isW3CRangeSupport","createRange","idCounter","eq","itemA","itemB","eq2","peq2","propName","ok","fail","self","not","f","apply","and","fA","fB","item","invoke","obj","method","resetUniqueId","uniqueId","prefix","id","rect2bnd","rect","$document","top","scrollTop","scrollLeft","bottom","invertObject","inverted","namespaceToCamel","namespace","split","map","substring","toUpperCase","join","debounce","func","wait","immediate","timeout","args","later","callNow","clearTimeout","setTimeout","isValidUrl","head","array","last","tail","slice","contains","initial","prev","idx","next","pred","len","all","sum","reduce","memo","from","collection","result","isEmpty","clusterBy","aLast","compact","aResult","push","unique","results","NBSP_CHAR","String","fromCharCode","isEditable","node","hasClass","makePredByNodeName","nodeName","isText","nodeType","isVoid","isPara","isPre","isLi","isTable","isData","isInline","isBodyContainer","isList","isHr","isBlockquote","isCell","isAnchor","isBody","blankHTML","env","nodeLength","nodeValue","childNodes","innerHTML","paddingBlankHTML","ancestor","parentNode","listAncestor","ancestors","el","listNext","nodes","nextSibling","insertAfter","preceding","parent","insertBefore","appendChild","appendChildNodes","aChild","isLeftEdgePoint","point","offset","isRightEdgePoint","isEdgePoint","isLeftEdgeOf","position","isRightEdgeOf","previousSibling","hasChildren","prevPoint","isSkipInnerOffset","nextPoint","nextTextNode","getNextTextNode","nextPointWithEmptyNode","actual","isSamePoint","pointA","pointB","splitNode","isSkipPaddingBlankHTML","isNotSplitEdgePoint","isDiscardEmptySplits","splitText","childNode","clone","cloneNode","splitTree","isRemoveChild","removeNode","removeChild","isTextarea","stripLinebreaks","val","replace","ZERO_WIDTH_NBSP_CHAR","blank","emptyPara","isControlSizing","isElement","isPurePara","isHeading","isBlock","isBodyInline","isParaInline","isDiv","isBR","isSpan","isB","isU","isS","isI","isImg","deepestChildIsEmpty","firstElementChild","isEmptyAnchor","isClosestSibling","nodeA","nodeB","withClosestSiblings","siblings","isLeftEdgePointOf","isRightEdgePointOf","isVisiblePoint","leftNode","rightNode","prevPointUntil","nextPointUntil","isCharPoint","ch","charAt","isSpacePoint","walkPoint","startPoint","endPoint","handler","singleChildAncestor","lastAncestor","filter","listPrev","listDescendant","descendants","fnWalk","current","commonAncestor","wrap","wrapperName","wrapper","makeOffsetPath","reverse","fromOffsetPath","offsets","splitPoint","splitRoot","container","topAncestor","pivot","createText","text","createTextNode","removeWhile","newNode","cssText","isNewlineOnBlock","match","endSlash","isEndOfInlineContainer","isBlockNode","trim","posFromPlaceholder","placeholder","$placeholder","pos","outerHeight","attachEvents","events","keys","detachEvents","off","isCustomStyleTag","classList","Context","$note","memos","layoutInfo","ui","ui_template","initialize","createLayout","_initialize","hide","_destroy","removeData","removeLayout","disabled","isDisabled","code","dom","disable","now","editor","buttons","plugins","initializeModule","removeModule","removeMemo","triggerEvent","isActivated","undefined","codable","editable","editing","callbacks","trigger","shouldInitialize","ModuleClass","withoutIntialize","destroy","event","createInvokeHandler","preventDefault","$target","target","closest","splits","hasSeparator","moduleName","methodName","textRangeToPoint","textRange","isStart","prevContainer","parentElement","tester","body","createTextRange","moveToElementText","compareEndPoints","textRangeStart","curTextNode","collapse","firstChild","pointTester","duplicate","setEndPoint","textCount","cont","pointToTextRange","info","textRangeInfo","isCollapseToStart","prevTextNodes","collapseToStart","moveStart","type","isExternalAPICalled","hasInitOptions","langInfo","icons","tooltip","note","first","focus","WrappedRange","sc","so","ec","eo","isOnEditable","makeIsOn","isOnList","isOnAnchor","isOnCell","isOnData","w3cRange","setStart","setEnd","nativeRng","nativeRange","selection","getSelection","rangeCount","removeAllRanges","addRange","offsetTop","Math","abs","getVisiblePoint","isLeftToRight","block","hasRightNode","hasLeftNode","getEndPoint","isCollapsed","getStartPoint","includeAncestor","fullyContains","leftEdgeNodes","startAncestor","endAncestor","boundaryPoints","getPoints","isSameContainer","rng","emptyParents","normalize","inlineSiblings","concat","para","wrapBodyInlineWithPara","deleteContents","contentsContainer","reversed","insertNode","toString","findAfter","isNotTextPoint","regex","index","path","e","paras","getClientRects","wrappedRange","createFromSelection","bodyElement","lastChild","createFromBodyElement","createFromNode","anchorNode","getRangeAt","startContainer","startOffset","endContainer","endOffset","textRangeEnd","isTextNode","createFromNodeBefore","createFromNodeAfter","createFromBookmark","bookmark","createFromParaBookmark","KEY_MAP","isEdit","keyCode","BACKSPACE","TAB","ENTER","SPACE","DELETE","isMove","LEFT","UP","RIGHT","DOWN","isNavigation","HOME","END","PAGEUP","PAGEDOWN","nameFromCode","History","stack","stackOffset","$editable","range","snapshot","recordUndo","applySnapshot","makeSnapshot","historyLimit","shift","Style","$obj","propertyNames","propertyName","css","styleInfo","jQueryCSS","fontSize","parseInt","expandClosestSibling","onlyPartialContains","nodesInRange","tails","elem","$cont","fromNode","queryCommandState","queryCommandValue","isUnordered","lineHeight","toFixed","anchor","Bullet","toggleList","clustereds","previousList","findList","wrapList","appendToPrevious","releaseList","listName","paraBookmark","wrappedParas","diffLists","listNode","prevList","nextList","isEscapseToBody","releasedParas","headList","parentItem","newList","findNextSiblings","lastList","middleList","rootLists","rootList","listNodes","Typing","bullet","tabsize","tab","nextPara","blockquoteBreakingLevel","emptyAnchors","scrollIntoView","TableResultAction","where","domTable","_startPoint","_virtualTable","_actionCellList","setVirtualTablePosition","rowIndex","cellIndex","baseRow","baseCell","isRowSpan","isColSpan","isVirtualCell","objPosition","getActionCell","virtualTableCellObj","resultAction","virtualRowPosition","virtualColPosition","recoverCellIndex","newCellIndex","addCellInfoToVirtual","row","cell","cellHasColspan","colSpan","cellHasRowspan","rowSpan","isThisSelectedCell","rowPos","colPos","rowspanNumber","attributes","rp","rowspanIndex","adjustStartPoint","colspanNumber","cp","cellspanIndex","isSelectedCell","getDeleteResultActionToCell","Column","SubtractSpanCount","Row","isVirtual","AddCell","RemoveCell","getAddResultActionToCell","SumSpanCount","Ignore","getActionList","fixedRow","fixedCol","actualPosition","canContinue","rowPosition","colPosition","requestAction","Add","Delete","tagName","rows","cells","createVirtualTable","Table","isShift","nextCell","currentTr","trAttributes","recoverAttributes","actions","idCell","currentCell","tdAttributes","newTd","removeAttr","setAttribute","before","lastTrIndex","after","actionIndex","resultStr","attrList","specified","cellPos","virtualPosition","virtualTable","hasRowspan","nextRow","cloneRow","removeAttribute","colCount","rowCount","tdHTML","tds","idxCol","trHTML","trs","idxRow","$table","tableClassName","Editor","$editor","lastRange","typing","escape","untab","insertParagraph","insertOrderedList","insertUnorderedList","formatPara","insertHorizontalRule","commands","sCmd","beforeCommand","execCommand","afterCommand","wrapCommand","fontStyling","unit","currentStyle","fontSizeUnit","formatBlock","isLimited","getLastRange","setLastRange","insertText","textNode","pasteHTML","onApplyCustomStyle","onFormatBlock","hrNode","stylePara","createLink","linkInfo","linkUrl","linkText","isNewWindow","checkProtocol","additionalTextLength","isTextChanged","onCreateLink","defaultProtocol","anchors","styleNodes","createRangeFromList","colorInfo","foreColor","backColor","insertTable","dim","dimension","createTable","removeMedia","restoreTarget","detach","floatMe","toggleClass","resize","hasKeyShortCut","isDefaultPrevented","handleKeyMap","preventDefaultEditableShortCuts","recordEveryKeystroke","spellCheck","disableGrammar","airMode","overrideContextMenu","outerWidth","maxHeight","minHeight","keyMap","metaKey","ctrlKey","altKey","shiftKey","keyName","eventName","tabDisable","pad","maxTextLength","lst","thenCollapse","commit","styleWithCSS","isPreventTrigger","normalizeContent","tabSize","insertTab","src","param","Deferred","deferred","$img","one","resolve","reject","display","appendTo","promise","then","$image","min","show","files","file","filename","maximumImageFileSize","FileReader","onload","dataURL","onerror","err","readAsDataURL","readFileAsDataURL","insertImage","onImageUpload","insertImagesAsDataURL","currentRange","spans","firstSpan","noteStatusOutput","expand","$anchor","addRow","addCol","deleteRow","deleteCol","deleteTable","bKeepRatio","imageSize","newRatio","y","x","ratio","is","hasFocus","Clipboard","pasteByEvent","clipboardData","originalEvent","items","kind","getAsFile","getData","Dropzone","$eventListener","documentEventHandlers","$dropzone","prependTo","disableDragAndDrop","onDrop","attachDragAndDropEvent","$dropzoneMessage","onDragenter","isCodeview","hasEditorSize","add","onDragleave","removeClass","dataTransfer","types","content","substr","CodeView","$codable","CodeMirrorConstructor","CodeMirror","codemirror","getDoc","setValue","save","ESCAPE","deactivate","activate","codeviewFilter","codeviewFilterRegex","codeviewIframeFilter","whitelist","codeviewIframeWhitelistSrc","codeviewIframeWhitelistSrcBase","tag","RegExp","prettifyHtml","cmEditor","fromTextArea","tern","server","TernServer","ternServer","cm","updateArgHints","getValue","setSize","toTextArea","purify","isChange","Statusbar","$statusbar","statusbar","disableResizeEditor","stopPropagation","editableTop","onMouseMove","clientY","minheight","max","Fullscreen","$toolbar","toolbar","$window","$scrollbar","onResize","resizeTo","h","setsize","isFullscreen","Handle","$editingArea","editingArea","we","update","$handle","disableResizeImage","posStart","clientX","isImage","$selection","w","origImageObj","Image","sizingText","linkPattern","AutoLink","handleKeyup","handleKeydown","lastWordRange","keyword","urlText","showDomainOnlyForAutolink","linkTargetBlank","wordRange","getWordRange","AutoSync","AutoReplace","PERIOD","COMMA","SEMICOLON","SLASH","previousKeydownCode","lastWord","jQuery","Node","Placeholder","inheritPlaceholder","isShow","toggle","Buttons","invertedKeyMap","editorMethod","button","addToolbarButtons","addImagePopoverButtons","addLinkPopoverButtons","addTablePopoverButtons","fontInstalledMap","fontNamesIgnoreCheck","buttonGroup","icon","$button","currentTarget","$recentColor","colorButton","dropdownButtonContents","dropdown","$dropdown","$holder","palette","colors","colorsName","customColors","change","$chip","$picker","$palette","prepend","$color","$currentButton","magic","styleTags","title","template","styleIdx","styleLen","representShortcut","createInvokeHandlerAndUpdateState","eraser","addDefaultFonts","fontname","isFontDeservedToAdd","fontNames","dropdownCheck","checkClassName","menuCheck","fontSizes","fontSizeUnits","colorPalette","unorderedlist","orderedlist","justifyLeft","alignLeft","justifyCenter","alignCenter","justifyRight","alignRight","justifyFull","alignJustify","textHeight","lineHeights","insertTableMaxSize","col","mousedown","tableMoveHandler","picture","minus","arrowsAlt","question","rollback","trash","rowAbove","rowBelow","colBefore","colAfter","rowRemove","colRemove","groups","groupIdx","groupLen","group","groupName","$group","btn","updateBtnStates","$item","isChecked","infos","selector","toggleBtnActive","posOffset","$dimensionDisplay","$catcher","$highlighted","$unhighlighted","offsetX","posCatcher","pageX","pageY","offsetY","ceil","Toolbar","isFollowing","followScroll","toolbarContainer","changeContainer","followingToolbar","editorHeight","editorWidth","toolbarHeight","statusbarHeight","otherBarHeight","otherStaticBar","currentOffset","editorOffsetTop","activateOffset","deactivateOffsetBottom","marginTop","zIndex","isIncludeCodeview","$btn","toggleBtn","LinkDialog","$body","dialogsInBody","disableLinkTarget","checkbox","checked","footer","$dialog","dialog","fade","dialogsFade","hideDialog","$input","$linkBtn","$linkText","$linkUrl","$openInNewWindow","$useProtocol","onDialogShown","toggleLinkBtn","bindEnterKey","isNewWindowChecked","prop","useProtocolChecked","onDialogHidden","state","showDialog","showLinkDialog","LinkPopover","popover","$popover","$content","href","containerOffset","ImageDialog","imageLimitation","floor","log","readableSize","pow","showImageDialog","onImageLinkInsert","$imageInput","$imageUrl","$imageBtn","replaceWith","ImagePopover","popatmouse","TablePopover","VideoDialog","$video","ytMatch","igMatch","vMatch","vimMatch","dmMatch","youkuMatch","qqMatch","qqMatch2","mp4Match","oggMatch","webmMatch","fbMatch","youtubeId","start","ytMatchForStart","vid","encodeURIComponent","showVideoDialog","createVideoNode","$videoUrl","$videoBtn","HelpDialog","createShortcutList","command","$row","showHelpDialog","AirPopover","hidable","onContextmenu","air","forcelyOpen","HintPopover","hint","direction","hintDirection","hints","matchingWord","hideArrow","innerHeight","$current","$next","selectItem","$nextGroup","$prev","$prevGroup","nodeFromItem","rangeCompute","hintSelect","hintIdx","moveUp","moveDown","search","searchKeyword","createItemTemplates","hintMode","getWordsRange","getWordsMatchRange","empty","bnd","createGroup","version","Codeview","toolbarPosition","codeviewKeepButton","tabDisabled","textareaAutoSync","onBeforeCommand","onBlur","onBlurCodeview","onChange","onChangeCodeview","onEnter","onFocus","onImageUploadError","onInit","onKeydown","onKeyup","onMousedown","onMouseup","onPaste","onScroll","htmlMode","lineNumbers","pc","mac","renderer","airEditor","airEditable","option","caret","iconClassName","editorOptions","rowSize","colSize","colorName","placement","codeviewButton","isEnable","isActive","modal","interface"],"mappings":"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","file":"summernote.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"jquery\")) : factory(root[\"jQuery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","import $ from 'jquery';\n\nclass Renderer {\n constructor(markup, children, options, callback) {\n this.markup = markup;\n this.children = children;\n this.options = options;\n this.callback = callback;\n }\n\n render($parent) {\n const $node = $(this.markup);\n\n if (this.options && this.options.contents) {\n $node.html(this.options.contents);\n }\n\n if (this.options && this.options.className) {\n $node.addClass(this.options.className);\n }\n\n if (this.options && this.options.data) {\n $.each(this.options.data, (k, v) => {\n $node.attr('data-' + k, v);\n });\n }\n\n if (this.options && this.options.click) {\n $node.on('click', this.options.click);\n }\n\n if (this.children) {\n const $container = $node.find('.note-children-container');\n this.children.forEach((child) => {\n child.render($container.length ? $container : $node);\n });\n }\n\n if (this.callback) {\n this.callback($node, this.options);\n }\n\n if (this.options && this.options.callback) {\n this.options.callback($node);\n }\n\n if ($parent) {\n $parent.append($node);\n }\n\n return $node;\n }\n}\n\nexport default {\n create: (markup, callback) => {\n return function() {\n const options = typeof arguments[1] === 'object' ? arguments[1] : arguments[0];\n let children = Array.isArray(arguments[0]) ? arguments[0] : [];\n if (options && options.children) {\n children = options.children;\n }\n return new Renderer(markup, children, options, callback);\n };\n },\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import $ from 'jquery';\n\n$.summernote = $.summernote || {\n lang: {},\n};\n\n$.extend($.summernote.lang, {\n 'en-US': {\n font: {\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n clear: 'Remove Font Style',\n height: 'Line Height',\n name: 'Font Family',\n strikethrough: 'Strikethrough',\n subscript: 'Subscript',\n superscript: 'Superscript',\n size: 'Font Size',\n sizeunit: 'Font Size Unit',\n },\n image: {\n image: 'Picture',\n insert: 'Insert Image',\n resizeFull: 'Resize full',\n resizeHalf: 'Resize half',\n resizeQuarter: 'Resize quarter',\n resizeNone: 'Original size',\n floatLeft: 'Float Left',\n floatRight: 'Float Right',\n floatNone: 'Remove float',\n shapeRounded: 'Shape: Rounded',\n shapeCircle: 'Shape: Circle',\n shapeThumbnail: 'Shape: Thumbnail',\n shapeNone: 'Shape: None',\n dragImageHere: 'Drag image or text here',\n dropImage: 'Drop image or Text',\n selectFromFiles: 'Select from files',\n maximumFileSize: 'Maximum file size',\n maximumFileSizeError: 'Maximum file size exceeded.',\n url: 'Image URL',\n remove: 'Remove Image',\n original: 'Original',\n },\n video: {\n video: 'Video',\n videoLink: 'Video Link',\n insert: 'Insert Video',\n url: 'Video URL',\n providers: '(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)',\n },\n link: {\n link: 'Link',\n insert: 'Insert Link',\n unlink: 'Unlink',\n edit: 'Edit',\n textToDisplay: 'Text to display',\n url: 'To what URL should this link go?',\n openInNewWindow: 'Open in new window',\n useProtocol: 'Use default protocol',\n },\n table: {\n table: 'Table',\n addRowAbove: 'Add row above',\n addRowBelow: 'Add row below',\n addColLeft: 'Add column left',\n addColRight: 'Add column right',\n delRow: 'Delete row',\n delCol: 'Delete column',\n delTable: 'Delete table',\n },\n hr: {\n insert: 'Insert Horizontal Rule',\n },\n style: {\n style: 'Style',\n p: 'Normal',\n blockquote: 'Quote',\n pre: 'Code',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n },\n lists: {\n unordered: 'Unordered list',\n ordered: 'Ordered list',\n },\n options: {\n help: 'Help',\n fullscreen: 'Full Screen',\n codeview: 'Code View',\n },\n paragraph: {\n paragraph: 'Paragraph',\n outdent: 'Outdent',\n indent: 'Indent',\n left: 'Align left',\n center: 'Align center',\n right: 'Align right',\n justify: 'Justify full',\n },\n color: {\n recent: 'Recent Color',\n more: 'More Color',\n background: 'Background Color',\n foreground: 'Text Color',\n transparent: 'Transparent',\n setTransparent: 'Set transparent',\n reset: 'Reset',\n resetToDefault: 'Reset to default',\n cpSelect: 'Select',\n },\n shortcut: {\n shortcuts: 'Keyboard shortcuts',\n close: 'Close',\n textFormatting: 'Text formatting',\n action: 'Action',\n paragraphFormatting: 'Paragraph formatting',\n documentStyle: 'Document Style',\n extraKeys: 'Extra keys',\n },\n help: {\n 'escape': 'Escape',\n 'insertParagraph': 'Insert Paragraph',\n 'undo': 'Undo the last command',\n 'redo': 'Redo the last command',\n 'tab': 'Tab',\n 'untab': 'Untab',\n 'bold': 'Set a bold style',\n 'italic': 'Set a italic style',\n 'underline': 'Set a underline style',\n 'strikethrough': 'Set a strikethrough style',\n 'removeFormat': 'Clean a style',\n 'justifyLeft': 'Set left align',\n 'justifyCenter': 'Set center align',\n 'justifyRight': 'Set right align',\n 'justifyFull': 'Set full align',\n 'insertUnorderedList': 'Toggle unordered list',\n 'insertOrderedList': 'Toggle ordered list',\n 'outdent': 'Outdent on current paragraph',\n 'indent': 'Indent on current paragraph',\n 'formatPara': 'Change current block\\'s format as a paragraph(P tag)',\n 'formatH1': 'Change current block\\'s format as H1',\n 'formatH2': 'Change current block\\'s format as H2',\n 'formatH3': 'Change current block\\'s format as H3',\n 'formatH4': 'Change current block\\'s format as H4',\n 'formatH5': 'Change current block\\'s format as H5',\n 'formatH6': 'Change current block\\'s format as H6',\n 'insertHorizontalRule': 'Insert horizontal rule',\n 'linkDialog.show': 'Show Link Dialog',\n },\n history: {\n undo: 'Undo',\n redo: 'Redo',\n },\n specialChar: {\n specialChar: 'SPECIAL CHARACTERS',\n select: 'Select Special characters',\n },\n output: {\n noSelection: 'No Selection Made!',\n },\n },\n});\n","import $ from 'jquery';\nconst isSupportAmd = typeof define === 'function' && define.amd; // eslint-disable-line\n\n/**\n * returns whether font is installed or not.\n *\n * @param {String} fontName\n * @return {Boolean}\n */\nconst genericFontFamilies = ['sans-serif', 'serif', 'monospace', 'cursive', 'fantasy'];\n\nfunction validFontName(fontName) {\n return ($.inArray(fontName.toLowerCase(), genericFontFamilies) === -1) ? `'${fontName}'` : fontName;\n}\n\nfunction isFontInstalled(fontName) {\n const testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS';\n const testText = 'mmmmmmmmmmwwwww';\n const testSize = '200px';\n\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n\n context.font = testSize + \" '\" + testFontName + \"'\";\n const originalWidth = context.measureText(testText).width;\n\n context.font = testSize + ' ' + validFontName(fontName) + ', \"' + testFontName + '\"';\n const width = context.measureText(testText).width;\n\n return originalWidth !== width;\n}\n\nconst userAgent = navigator.userAgent;\nconst isMSIE = /MSIE|Trident/i.test(userAgent);\nlet browserVersion;\nif (isMSIE) {\n let matches = /MSIE (\\d+[.]\\d+)/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n matches = /Trident\\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);\n if (matches) {\n browserVersion = parseFloat(matches[1]);\n }\n}\n\nconst isEdge = /Edge\\/\\d+/.test(userAgent);\n\nconst isSupportTouch =\n (('ontouchstart' in window) ||\n (navigator.MaxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n\n// [workaround] IE doesn't have input events for contentEditable\n// - see: https://goo.gl/4bfIvA\nconst inputEventName = (isMSIE) ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input';\n\n/**\n * @class core.env\n *\n * Object which check platform and agent\n *\n * @singleton\n * @alternateClassName env\n */\nexport default {\n isMac: navigator.appVersion.indexOf('Mac') > -1,\n isMSIE,\n isEdge,\n isFF: !isEdge && /firefox/i.test(userAgent),\n isPhantom: /PhantomJS/i.test(userAgent),\n isWebkit: !isEdge && /webkit/i.test(userAgent),\n isChrome: !isEdge && /chrome/i.test(userAgent),\n isSafari: !isEdge && /safari/i.test(userAgent) && (!/chrome/i.test(userAgent)),\n browserVersion,\n jqueryVersion: parseFloat($.fn.jquery),\n isSupportAmd,\n isSupportTouch,\n isFontInstalled,\n isW3CRangeSupport: !!document.createRange,\n inputEventName,\n genericFontFamilies,\n validFontName,\n};\n","import $ from 'jquery';\n\n/**\n * @class core.func\n *\n * func utils (for high-order func's arg)\n *\n * @singleton\n * @alternateClassName func\n */\nfunction eq(itemA) {\n return function(itemB) {\n return itemA === itemB;\n };\n}\n\nfunction eq2(itemA, itemB) {\n return itemA === itemB;\n}\n\nfunction peq2(propName) {\n return function(itemA, itemB) {\n return itemA[propName] === itemB[propName];\n };\n}\n\nfunction ok() {\n return true;\n}\n\nfunction fail() {\n return false;\n}\n\nfunction not(f) {\n return function() {\n return !f.apply(f, arguments);\n };\n}\n\nfunction and(fA, fB) {\n return function(item) {\n return fA(item) && fB(item);\n };\n}\n\nfunction self(a) {\n return a;\n}\n\nfunction invoke(obj, method) {\n return function() {\n return obj[method].apply(obj, arguments);\n };\n}\n\nlet idCounter = 0;\n\n/**\n * reset globally-unique id\n *\n */\nfunction resetUniqueId() {\n idCounter = 0;\n}\n\n/**\n * generate a globally-unique id\n *\n * @param {String} [prefix]\n */\nfunction uniqueId(prefix) {\n const id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n/**\n * returns bnd (bounds) from rect\n *\n * - IE Compatibility Issue: http://goo.gl/sRLOAo\n * - Scroll Issue: http://goo.gl/sNjUc\n *\n * @param {Rect} rect\n * @return {Object} bounds\n * @return {Number} bounds.top\n * @return {Number} bounds.left\n * @return {Number} bounds.width\n * @return {Number} bounds.height\n */\nfunction rect2bnd(rect) {\n const $document = $(document);\n return {\n top: rect.top + $document.scrollTop(),\n left: rect.left + $document.scrollLeft(),\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n}\n\n/**\n * returns a copy of the object where the keys have become the values and the values the keys.\n * @param {Object} obj\n * @return {Object}\n */\nfunction invertObject(obj) {\n const inverted = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n inverted[obj[key]] = key;\n }\n }\n return inverted;\n}\n\n/**\n * @param {String} namespace\n * @param {String} [prefix]\n * @return {String}\n */\nfunction namespaceToCamel(namespace, prefix) {\n prefix = prefix || '';\n return prefix + namespace.split('.').map(function(name) {\n return name.substring(0, 1).toUpperCase() + name.substring(1);\n }).join('');\n}\n\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n * @param {Function} func\n * @param {Number} wait\n * @param {Boolean} immediate\n * @return {Function}\n */\nfunction debounce(func, wait, immediate) {\n let timeout;\n return function() {\n const context = this;\n const args = arguments;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\n/**\n *\n * @param {String} url\n * @return {Boolean}\n */\nfunction isValidUrl(url) {\n const expression = /[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/gi;\n return expression.test(url);\n}\n\nexport default {\n eq,\n eq2,\n peq2,\n ok,\n fail,\n self,\n not,\n and,\n invoke,\n resetUniqueId,\n uniqueId,\n rect2bnd,\n invertObject,\n namespaceToCamel,\n debounce,\n isValidUrl,\n};\n","import func from './func';\n\n/**\n * returns the first item of an array.\n *\n * @param {Array} array\n */\nfunction head(array) {\n return array[0];\n}\n\n/**\n * returns the last item of an array.\n *\n * @param {Array} array\n */\nfunction last(array) {\n return array[array.length - 1];\n}\n\n/**\n * returns everything but the last entry of the array.\n *\n * @param {Array} array\n */\nfunction initial(array) {\n return array.slice(0, array.length - 1);\n}\n\n/**\n * returns the rest of the items in an array.\n *\n * @param {Array} array\n */\nfunction tail(array) {\n return array.slice(1);\n}\n\n/**\n * returns item of array\n */\nfunction find(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n const item = array[idx];\n if (pred(item)) {\n return item;\n }\n }\n}\n\n/**\n * returns true if all of the values in the array pass the predicate truth test.\n */\nfunction all(array, pred) {\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!pred(array[idx])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * returns true if the value is present in the list.\n */\nfunction contains(array, item) {\n if (array && array.length && item) {\n if (array.indexOf) {\n return array.indexOf(item) !== -1;\n } else if (array.contains) {\n // `DOMTokenList` doesn't implement `.indexOf`, but it implements `.contains`\n return array.contains(item);\n }\n }\n return false;\n}\n\n/**\n * get sum from a list\n *\n * @param {Array} array - array\n * @param {Function} fn - iterator\n */\nfunction sum(array, fn) {\n fn = fn || func.self;\n return array.reduce(function(memo, v) {\n return memo + fn(v);\n }, 0);\n}\n\n/**\n * returns a copy of the collection with array type.\n * @param {Collection} collection - collection eg) node.childNodes, ...\n */\nfunction from(collection) {\n const result = [];\n const length = collection.length;\n let idx = -1;\n while (++idx < length) {\n result[idx] = collection[idx];\n }\n return result;\n}\n\n/**\n * returns whether list is empty or not\n */\nfunction isEmpty(array) {\n return !array || !array.length;\n}\n\n/**\n * cluster elements by predicate function.\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n * @param {Array[]}\n */\nfunction clusterBy(array, fn) {\n if (!array.length) { return []; }\n const aTail = tail(array);\n return aTail.reduce(function(memo, v) {\n const aLast = last(memo);\n if (fn(last(aLast), v)) {\n aLast[aLast.length] = v;\n } else {\n memo[memo.length] = [v];\n }\n return memo;\n }, [[head(array)]]);\n}\n\n/**\n * returns a copy of the array with all false values removed\n *\n * @param {Array} array - array\n * @param {Function} fn - predicate function for cluster rule\n */\nfunction compact(array) {\n const aResult = [];\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (array[idx]) { aResult.push(array[idx]); }\n }\n return aResult;\n}\n\n/**\n * produces a duplicate-free version of the array\n *\n * @param {Array} array\n */\nfunction unique(array) {\n const results = [];\n\n for (let idx = 0, len = array.length; idx < len; idx++) {\n if (!contains(results, array[idx])) {\n results.push(array[idx]);\n }\n }\n\n return results;\n}\n\n/**\n * returns next item.\n * @param {Array} array\n */\nfunction next(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx + 1];\n }\n return null;\n}\n\n/**\n * returns prev item.\n * @param {Array} array\n */\nfunction prev(array, item) {\n if (array && array.length && item) {\n const idx = array.indexOf(item);\n return idx === -1 ? null : array[idx - 1];\n }\n return null;\n}\n\n/**\n * @class core.list\n *\n * list utils\n *\n * @singleton\n * @alternateClassName list\n */\nexport default {\n head,\n last,\n initial,\n tail,\n prev,\n next,\n find,\n contains,\n all,\n sum,\n from,\n isEmpty,\n clusterBy,\n compact,\n unique,\n};\n","import $ from 'jquery';\nimport func from './func';\nimport lists from './lists';\nimport env from './env';\n\nconst NBSP_CHAR = String.fromCharCode(160);\nconst ZERO_WIDTH_NBSP_CHAR = '\\ufeff';\n\n/**\n * @method isEditable\n *\n * returns whether node is `note-editable` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEditable(node) {\n return node && $(node).hasClass('note-editable');\n}\n\n/**\n * @method isControlSizing\n *\n * returns whether node is `note-control-sizing` or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isControlSizing(node) {\n return node && $(node).hasClass('note-control-sizing');\n}\n\n/**\n * @method makePredByNodeName\n *\n * returns predicate which judge whether nodeName is same\n *\n * @param {String} nodeName\n * @return {Function}\n */\nfunction makePredByNodeName(nodeName) {\n nodeName = nodeName.toUpperCase();\n return function(node) {\n return node && node.nodeName.toUpperCase() === nodeName;\n };\n}\n\n/**\n * @method isText\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is text(3)\n */\nfunction isText(node) {\n return node && node.nodeType === 3;\n}\n\n/**\n * @method isElement\n *\n *\n *\n * @param {Node} node\n * @return {Boolean} true if node's type is element(1)\n */\nfunction isElement(node) {\n return node && node.nodeType === 1;\n}\n\n/**\n * ex) br, col, embed, hr, img, input, ...\n * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements\n */\nfunction isVoid(node) {\n return node && /^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT|^AUDIO|^VIDEO|^EMBED/.test(node.nodeName.toUpperCase());\n}\n\nfunction isPara(node) {\n if (isEditable(node)) {\n return false;\n }\n\n // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph\n return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nfunction isHeading(node) {\n return node && /^H[1-7]/.test(node.nodeName.toUpperCase());\n}\n\nconst isPre = makePredByNodeName('PRE');\n\nconst isLi = makePredByNodeName('LI');\n\nfunction isPurePara(node) {\n return isPara(node) && !isLi(node);\n}\n\nconst isTable = makePredByNodeName('TABLE');\n\nconst isData = makePredByNodeName('DATA');\n\nfunction isInline(node) {\n return !isBodyContainer(node) &&\n !isList(node) &&\n !isHr(node) &&\n !isPara(node) &&\n !isTable(node) &&\n !isBlockquote(node) &&\n !isData(node);\n}\n\nfunction isList(node) {\n return node && /^UL|^OL/.test(node.nodeName.toUpperCase());\n}\n\nconst isHr = makePredByNodeName('HR');\n\nfunction isCell(node) {\n return node && /^TD|^TH/.test(node.nodeName.toUpperCase());\n}\n\nconst isBlockquote = makePredByNodeName('BLOCKQUOTE');\n\nfunction isBodyContainer(node) {\n return isCell(node) || isBlockquote(node) || isEditable(node);\n}\n\nconst isAnchor = makePredByNodeName('A');\n\nfunction isParaInline(node) {\n return isInline(node) && !!ancestor(node, isPara);\n}\n\nfunction isBodyInline(node) {\n return isInline(node) && !ancestor(node, isPara);\n}\n\nconst isBody = makePredByNodeName('BODY');\n\n/**\n * returns whether nodeB is closest sibling of nodeA\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {Boolean}\n */\nfunction isClosestSibling(nodeA, nodeB) {\n return nodeA.nextSibling === nodeB ||\n nodeA.previousSibling === nodeB;\n}\n\n/**\n * returns array of closest siblings with node\n *\n * @param {Node} node\n * @param {function} [pred] - predicate function\n * @return {Node[]}\n */\nfunction withClosestSiblings(node, pred) {\n pred = pred || func.ok;\n\n const siblings = [];\n if (node.previousSibling && pred(node.previousSibling)) {\n siblings.push(node.previousSibling);\n }\n siblings.push(node);\n if (node.nextSibling && pred(node.nextSibling)) {\n siblings.push(node.nextSibling);\n }\n return siblings;\n}\n\n/**\n * blank HTML for cursor position\n * - [workaround] old IE only works with \n * - [workaround] IE11 and other browser works with bogus br\n */\nconst blankHTML = env.isMSIE && env.browserVersion < 11 ? ' ' : '<br>';\n\n/**\n * @method nodeLength\n *\n * returns #text's text size or element's childNodes size\n *\n * @param {Node} node\n */\nfunction nodeLength(node) {\n if (isText(node)) {\n return node.nodeValue.length;\n }\n\n if (node) {\n return node.childNodes.length;\n }\n\n return 0;\n}\n\n/**\n * returns whether deepest child node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction deepestChildIsEmpty(node) {\n do {\n if (node.firstElementChild === null || node.firstElementChild.innerHTML === '') break;\n } while ((node = node.firstElementChild));\n\n return isEmpty(node);\n}\n\n/**\n * returns whether node is empty or not.\n *\n * @param {Node} node\n * @return {Boolean}\n */\nfunction isEmpty(node) {\n const len = nodeLength(node);\n\n if (len === 0) {\n return true;\n } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) {\n // ex) <p><br></p>, <span><br></span>\n return true;\n } else if (lists.all(node.childNodes, isText) && node.innerHTML === '') {\n // ex) <p></p>, <span></span>\n return true;\n }\n\n return false;\n}\n\n/**\n * padding blankHTML if node is empty (for cursor position)\n */\nfunction paddingBlankHTML(node) {\n if (!isVoid(node) && !nodeLength(node)) {\n node.innerHTML = blankHTML;\n }\n}\n\n/**\n * find nearest ancestor predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction ancestor(node, pred) {\n while (node) {\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * find nearest ancestor only single child blood line and predicate hit\n *\n * @param {Node} node\n * @param {Function} pred - predicate function\n */\nfunction singleChildAncestor(node, pred) {\n node = node.parentNode;\n\n while (node) {\n if (nodeLength(node) !== 1) { break; }\n if (pred(node)) { return node; }\n if (isEditable(node)) { break; }\n\n node = node.parentNode;\n }\n return null;\n}\n\n/**\n * returns new array of ancestor nodes (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listAncestor(node, pred) {\n pred = pred || func.fail;\n\n const ancestors = [];\n ancestor(node, function(el) {\n if (!isEditable(el)) {\n ancestors.push(el);\n }\n\n return pred(el);\n });\n return ancestors;\n}\n\n/**\n * find farthest ancestor predicate hit\n */\nfunction lastAncestor(node, pred) {\n const ancestors = listAncestor(node);\n return lists.last(ancestors.filter(pred));\n}\n\n/**\n * returns common ancestor node between two nodes.\n *\n * @param {Node} nodeA\n * @param {Node} nodeB\n */\nfunction commonAncestor(nodeA, nodeB) {\n const ancestors = listAncestor(nodeA);\n for (let n = nodeB; n; n = n.parentNode) {\n if (ancestors.indexOf(n) > -1) return n;\n }\n return null; // difference document area\n}\n\n/**\n * listing all previous siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [optional] pred - predicate function\n */\nfunction listPrev(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.previousSibling;\n }\n return nodes;\n}\n\n/**\n * listing next siblings (until predicate hit).\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listNext(node, pred) {\n pred = pred || func.fail;\n\n const nodes = [];\n while (node) {\n if (pred(node)) { break; }\n nodes.push(node);\n node = node.nextSibling;\n }\n return nodes;\n}\n\n/**\n * listing descendant nodes\n *\n * @param {Node} node\n * @param {Function} [pred] - predicate function\n */\nfunction listDescendant(node, pred) {\n const descendants = [];\n pred = pred || func.ok;\n\n // start DFS(depth first search) with node\n (function fnWalk(current) {\n if (node !== current && pred(current)) {\n descendants.push(current);\n }\n for (let idx = 0, len = current.childNodes.length; idx < len; idx++) {\n fnWalk(current.childNodes[idx]);\n }\n })(node);\n\n return descendants;\n}\n\n/**\n * wrap node with new tag.\n *\n * @param {Node} node\n * @param {Node} tagName of wrapper\n * @return {Node} - wrapper\n */\nfunction wrap(node, wrapperName) {\n const parent = node.parentNode;\n const wrapper = $('<' + wrapperName + '>')[0];\n\n parent.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n}\n\n/**\n * insert node after preceding\n *\n * @param {Node} node\n * @param {Node} preceding - predicate function\n */\nfunction insertAfter(node, preceding) {\n const next = preceding.nextSibling;\n let parent = preceding.parentNode;\n if (next) {\n parent.insertBefore(node, next);\n } else {\n parent.appendChild(node);\n }\n return node;\n}\n\n/**\n * append elements.\n *\n * @param {Node} node\n * @param {Collection} aChild\n */\nfunction appendChildNodes(node, aChild) {\n $.each(aChild, function(idx, child) {\n node.appendChild(child);\n });\n return node;\n}\n\n/**\n * returns whether boundaryPoint is left edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isLeftEdgePoint(point) {\n return point.offset === 0;\n}\n\n/**\n * returns whether boundaryPoint is right edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isRightEdgePoint(point) {\n return point.offset === nodeLength(point.node);\n}\n\n/**\n * returns whether boundaryPoint is edge or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isEdgePoint(point) {\n return isLeftEdgePoint(point) || isRightEdgePoint(point);\n}\n\n/**\n * returns whether node is left edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgeOf(node, ancestor) {\n while (node && node !== ancestor) {\n if (position(node) !== 0) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether node is right edge of ancestor or not.\n *\n * @param {Node} node\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgeOf(node, ancestor) {\n if (!ancestor) {\n return false;\n }\n while (node && node !== ancestor) {\n if (position(node) !== nodeLength(node.parentNode) - 1) {\n return false;\n }\n node = node.parentNode;\n }\n\n return true;\n}\n\n/**\n * returns whether point is left edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isLeftEdgePointOf(point, ancestor) {\n return isLeftEdgePoint(point) && isLeftEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns whether point is right edge of ancestor or not.\n * @param {BoundaryPoint} point\n * @param {Node} ancestor\n * @return {Boolean}\n */\nfunction isRightEdgePointOf(point, ancestor) {\n return isRightEdgePoint(point) && isRightEdgeOf(point.node, ancestor);\n}\n\n/**\n * returns offset from parent.\n *\n * @param {Node} node\n */\nfunction position(node) {\n let offset = 0;\n while ((node = node.previousSibling)) {\n offset += 1;\n }\n return offset;\n}\n\nfunction hasChildren(node) {\n return !!(node && node.childNodes && node.childNodes.length);\n}\n\n/**\n * returns previous boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction prevPoint(point, isSkipInnerOffset) {\n let node;\n let offset;\n\n if (point.offset === 0) {\n if (isEditable(point.node)) {\n return null;\n }\n\n node = point.node.parentNode;\n offset = position(point.node);\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset - 1];\n offset = nodeLength(node);\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? 0 : point.offset - 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPoint(point, isSkipInnerOffset) {\n let node, offset;\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/**\n * returns next boundaryPoint with empty node\n *\n * @param {BoundaryPoint} point\n * @param {Boolean} isSkipInnerOffset\n * @return {BoundaryPoint}\n */\nfunction nextPointWithEmptyNode(point, isSkipInnerOffset) {\n let node, offset;\n\n // if node is empty string node, return current node's sibling.\n if (isEmpty(point.node)) {\n node = point.node.nextSibling;\n offset = 0;\n\n return {\n node: node,\n offset: offset,\n };\n }\n\n if (nodeLength(point.node) === point.offset) {\n if (isEditable(point.node)) {\n return null;\n }\n\n let nextTextNode = getNextTextNode(point.node);\n if (nextTextNode) {\n node = nextTextNode;\n offset = 0;\n } else {\n node = point.node.parentNode;\n offset = position(point.node) + 1;\n }\n\n // if next node is editable, return current node's sibling node.\n if (isEditable(node)) {\n node = point.node.nextSibling;\n offset = 0;\n }\n } else if (hasChildren(point.node)) {\n node = point.node.childNodes[point.offset];\n offset = 0;\n if (isEmpty(node)) {\n return null;\n }\n } else {\n node = point.node;\n offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1;\n\n if (isEmpty(node)) {\n return null;\n }\n }\n\n return {\n node: node,\n offset: offset,\n };\n}\n\n/*\n* returns the next Text node index or 0 if not found.\n*/\nfunction getNextTextNode(actual) {\n if (!actual.nextSibling) return undefined;\n if (actual.parent !== actual.nextSibling.parent) return undefined;\n if (isText(actual.nextSibling)) return actual.nextSibling;\n return getNextTextNode(actual.nextSibling);\n}\n\n/**\n * returns whether pointA and pointB is same or not.\n *\n * @param {BoundaryPoint} pointA\n * @param {BoundaryPoint} pointB\n * @return {Boolean}\n */\nfunction isSamePoint(pointA, pointB) {\n return pointA.node === pointB.node && pointA.offset === pointB.offset;\n}\n\n/**\n * returns whether point is visible (can set cursor) or not.\n *\n * @param {BoundaryPoint} point\n * @return {Boolean}\n */\nfunction isVisiblePoint(point) {\n if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) {\n return true;\n }\n\n const leftNode = point.node.childNodes[point.offset - 1];\n const rightNode = point.node.childNodes[point.offset];\n if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) {\n return true;\n }\n\n return false;\n}\n\n/**\n * @method prevPointUtil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction prevPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = prevPoint(point);\n }\n\n return null;\n}\n\n/**\n * @method nextPointUntil\n *\n * @param {BoundaryPoint} point\n * @param {Function} pred\n * @return {BoundaryPoint}\n */\nfunction nextPointUntil(point, pred) {\n while (point) {\n if (pred(point)) {\n return point;\n }\n\n point = nextPoint(point);\n }\n\n return null;\n}\n\n/**\n * returns whether point has character or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isCharPoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch && (ch !== ' ' && ch !== NBSP_CHAR);\n}\n\n/**\n * returns whether point has space or not.\n *\n * @param {Point} point\n * @return {Boolean}\n */\nfunction isSpacePoint(point) {\n if (!isText(point.node)) {\n return false;\n }\n\n const ch = point.node.nodeValue.charAt(point.offset - 1);\n return ch === ' ' || ch === NBSP_CHAR;\n}\n\n/**\n * @method walkPoint\n *\n * @param {BoundaryPoint} startPoint\n * @param {BoundaryPoint} endPoint\n * @param {Function} handler\n * @param {Boolean} isSkipInnerOffset\n */\nfunction walkPoint(startPoint, endPoint, handler, isSkipInnerOffset) {\n let point = startPoint;\n\n while (point) {\n handler(point);\n\n if (isSamePoint(point, endPoint)) {\n break;\n }\n\n const isSkipOffset = isSkipInnerOffset &&\n startPoint.node !== point.node &&\n endPoint.node !== point.node;\n point = nextPointWithEmptyNode(point, isSkipOffset);\n }\n}\n\n/**\n * @method makeOffsetPath\n *\n * return offsetPath(array of offset) from ancestor\n *\n * @param {Node} ancestor - ancestor node\n * @param {Node} node\n */\nfunction makeOffsetPath(ancestor, node) {\n const ancestors = listAncestor(node, func.eq(ancestor));\n return ancestors.map(position).reverse();\n}\n\n/**\n * @method fromOffsetPath\n *\n * return element from offsetPath(array of offset)\n *\n * @param {Node} ancestor - ancestor node\n * @param {array} offsets - offsetPath\n */\nfunction fromOffsetPath(ancestor, offsets) {\n let current = ancestor;\n for (let i = 0, len = offsets.length; i < len; i++) {\n if (current.childNodes.length <= offsets[i]) {\n current = current.childNodes[current.childNodes.length - 1];\n } else {\n current = current.childNodes[offsets[i]];\n }\n }\n return current;\n}\n\n/**\n * @method splitNode\n *\n * split element or #text\n *\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @param {Boolean} [options.isDiscardEmptySplits] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitNode(point, options) {\n let isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML;\n const isNotSplitEdgePoint = options && options.isNotSplitEdgePoint;\n const isDiscardEmptySplits = options && options.isDiscardEmptySplits;\n\n if (isDiscardEmptySplits) {\n isSkipPaddingBlankHTML = true;\n }\n\n // edge case\n if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) {\n if (isLeftEdgePoint(point)) {\n return point.node;\n } else if (isRightEdgePoint(point)) {\n return point.node.nextSibling;\n }\n }\n\n // split #text\n if (isText(point.node)) {\n return point.node.splitText(point.offset);\n } else {\n const childNode = point.node.childNodes[point.offset];\n const clone = insertAfter(point.node.cloneNode(false), point.node);\n appendChildNodes(clone, listNext(childNode));\n\n if (!isSkipPaddingBlankHTML) {\n paddingBlankHTML(point.node);\n paddingBlankHTML(clone);\n }\n\n if (isDiscardEmptySplits) {\n if (isEmpty(point.node)) {\n remove(point.node);\n }\n if (isEmpty(clone)) {\n remove(clone);\n return point.node.nextSibling;\n }\n }\n\n return clone;\n }\n}\n\n/**\n * @method splitTree\n *\n * split tree by point\n *\n * @param {Node} root - split root\n * @param {BoundaryPoint} point\n * @param {Object} [options]\n * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false\n * @param {Boolean} [options.isNotSplitEdgePoint] - default: false\n * @return {Node} right node of boundaryPoint\n */\nfunction splitTree(root, point, options) {\n // ex) [#text, <span>, <p>]\n const ancestors = listAncestor(point.node, func.eq(root));\n\n if (!ancestors.length) {\n return null;\n } else if (ancestors.length === 1) {\n return splitNode(point, options);\n }\n\n return ancestors.reduce(function(node, parent) {\n if (node === point.node) {\n node = splitNode(point, options);\n }\n\n return splitNode({\n node: parent,\n offset: node ? position(node) : nodeLength(parent),\n }, options);\n });\n}\n\n/**\n * split point\n *\n * @param {Point} point\n * @param {Boolean} isInline\n * @return {Object}\n */\nfunction splitPoint(point, isInline) {\n // find splitRoot, container\n // - inline: splitRoot is a child of paragraph\n // - block: splitRoot is a child of bodyContainer\n const pred = isInline ? isPara : isBodyContainer;\n const ancestors = listAncestor(point.node, pred);\n const topAncestor = lists.last(ancestors) || point.node;\n\n let splitRoot, container;\n if (pred(topAncestor)) {\n splitRoot = ancestors[ancestors.length - 2];\n container = topAncestor;\n } else {\n splitRoot = topAncestor;\n container = splitRoot.parentNode;\n }\n\n // if splitRoot is exists, split with splitTree\n let pivot = splitRoot && splitTree(splitRoot, point, {\n isSkipPaddingBlankHTML: isInline,\n isNotSplitEdgePoint: isInline,\n });\n\n // if container is point.node, find pivot with point.offset\n if (!pivot && container === point.node) {\n pivot = point.node.childNodes[point.offset];\n }\n\n return {\n rightNode: pivot,\n container: container,\n };\n}\n\nfunction create(nodeName) {\n return document.createElement(nodeName);\n}\n\nfunction createText(text) {\n return document.createTextNode(text);\n}\n\n/**\n * @method remove\n *\n * remove node, (isRemoveChild: remove child or not)\n *\n * @param {Node} node\n * @param {Boolean} isRemoveChild\n */\nfunction remove(node, isRemoveChild) {\n if (!node || !node.parentNode) { return; }\n if (node.removeNode) { return node.removeNode(isRemoveChild); }\n\n const parent = node.parentNode;\n if (!isRemoveChild) {\n const nodes = [];\n for (let i = 0, len = node.childNodes.length; i < len; i++) {\n nodes.push(node.childNodes[i]);\n }\n\n for (let i = 0, len = nodes.length; i < len; i++) {\n parent.insertBefore(nodes[i], node);\n }\n }\n\n parent.removeChild(node);\n}\n\n/**\n * @method removeWhile\n *\n * @param {Node} node\n * @param {Function} pred\n */\nfunction removeWhile(node, pred) {\n while (node) {\n if (isEditable(node) || !pred(node)) {\n break;\n }\n\n const parent = node.parentNode;\n remove(node);\n node = parent;\n }\n}\n\n/**\n * @method replace\n *\n * replace node with provided nodeName\n *\n * @param {Node} node\n * @param {String} nodeName\n * @return {Node} - new node\n */\nfunction replace(node, nodeName) {\n if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) {\n return node;\n }\n\n const newNode = create(nodeName);\n\n if (node.style.cssText) {\n newNode.style.cssText = node.style.cssText;\n }\n\n appendChildNodes(newNode, lists.from(node.childNodes));\n insertAfter(newNode, node);\n remove(node);\n\n return newNode;\n}\n\nconst isTextarea = makePredByNodeName('TEXTAREA');\n\n/**\n * @param {jQuery} $node\n * @param {Boolean} [stripLinebreaks] - default: false\n */\nfunction value($node, stripLinebreaks) {\n const val = isTextarea($node[0]) ? $node.val() : $node.html();\n if (stripLinebreaks) {\n return val.replace(/[\\n\\r]/g, '');\n }\n return val;\n}\n\n/**\n * @method html\n *\n * get the HTML contents of node\n *\n * @param {jQuery} $node\n * @param {Boolean} [isNewlineOnBlock]\n */\nfunction html($node, isNewlineOnBlock) {\n let markup = value($node);\n\n if (isNewlineOnBlock) {\n const regexTag = /<(\\/?)(\\b(?!!)[^>\\s]*)(.*?)(\\s*\\/?>)/g;\n markup = markup.replace(regexTag, function(match, endSlash, name) {\n name = name.toUpperCase();\n const isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) &&\n !!endSlash;\n const isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);\n\n return match + ((isEndOfInlineContainer || isBlockNode) ? '\\n' : '');\n });\n markup = markup.trim();\n }\n\n return markup;\n}\n\nfunction posFromPlaceholder(placeholder) {\n const $placeholder = $(placeholder);\n const pos = $placeholder.offset();\n const height = $placeholder.outerHeight(true); // include margin\n\n return {\n left: pos.left,\n top: pos.top + height,\n };\n}\n\nfunction attachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.on(key, events[key]);\n });\n}\n\nfunction detachEvents($node, events) {\n Object.keys(events).forEach(function(key) {\n $node.off(key, events[key]);\n });\n}\n\n/**\n * @method isCustomStyleTag\n *\n * assert if a node contains a \"note-styletag\" class,\n * which implies that's a custom-made style tag node\n *\n * @param {Node} an HTML DOM node\n */\nfunction isCustomStyleTag(node) {\n return node && !isText(node) && lists.contains(node.classList, 'note-styletag');\n}\n\nexport default {\n /** @property {String} NBSP_CHAR */\n NBSP_CHAR,\n /** @property {String} ZERO_WIDTH_NBSP_CHAR */\n ZERO_WIDTH_NBSP_CHAR,\n /** @property {String} blank */\n blank: blankHTML,\n /** @property {String} emptyPara */\n emptyPara: `<p>${blankHTML}</p>`,\n makePredByNodeName,\n isEditable,\n isControlSizing,\n isText,\n isElement,\n isVoid,\n isPara,\n isPurePara,\n isHeading,\n isInline,\n isBlock: func.not(isInline),\n isBodyInline,\n isBody,\n isParaInline,\n isPre,\n isList,\n isTable,\n isData,\n isCell,\n isBlockquote,\n isBodyContainer,\n isAnchor,\n isDiv: makePredByNodeName('DIV'),\n isLi,\n isBR: makePredByNodeName('BR'),\n isSpan: makePredByNodeName('SPAN'),\n isB: makePredByNodeName('B'),\n isU: makePredByNodeName('U'),\n isS: makePredByNodeName('S'),\n isI: makePredByNodeName('I'),\n isImg: makePredByNodeName('IMG'),\n isTextarea,\n deepestChildIsEmpty,\n isEmpty,\n isEmptyAnchor: func.and(isAnchor, isEmpty),\n isClosestSibling,\n withClosestSiblings,\n nodeLength,\n isLeftEdgePoint,\n isRightEdgePoint,\n isEdgePoint,\n isLeftEdgeOf,\n isRightEdgeOf,\n isLeftEdgePointOf,\n isRightEdgePointOf,\n prevPoint,\n nextPoint,\n nextPointWithEmptyNode,\n isSamePoint,\n isVisiblePoint,\n prevPointUntil,\n nextPointUntil,\n isCharPoint,\n isSpacePoint,\n walkPoint,\n ancestor,\n singleChildAncestor,\n listAncestor,\n lastAncestor,\n listNext,\n listPrev,\n listDescendant,\n commonAncestor,\n wrap,\n insertAfter,\n appendChildNodes,\n position,\n hasChildren,\n makeOffsetPath,\n fromOffsetPath,\n splitTree,\n splitPoint,\n create,\n createText,\n remove,\n removeWhile,\n replace,\n html,\n value,\n posFromPlaceholder,\n attachEvents,\n detachEvents,\n isCustomStyleTag,\n};\n","import $ from 'jquery';\nimport func from './core/func';\nimport lists from './core/lists';\nimport dom from './core/dom';\n\nexport default class Context {\n /**\n * @param {jQuery} $note\n * @param {Object} options\n */\n constructor($note, options) {\n this.$note = $note;\n\n this.memos = {};\n this.modules = {};\n this.layoutInfo = {};\n this.options = $.extend(true, {}, options);\n\n // init ui with options\n $.summernote.ui = $.summernote.ui_template(this.options);\n this.ui = $.summernote.ui;\n\n this.initialize();\n }\n\n /**\n * create layout and initialize modules and other resources\n */\n initialize() {\n this.layoutInfo = this.ui.createLayout(this.$note);\n this._initialize();\n this.$note.hide();\n return this;\n }\n\n /**\n * destroy modules and other resources and remove layout\n */\n destroy() {\n this._destroy();\n this.$note.removeData('summernote');\n this.ui.removeLayout(this.$note, this.layoutInfo);\n }\n\n /**\n * destory modules and other resources and initialize it again\n */\n reset() {\n const disabled = this.isDisabled();\n this.code(dom.emptyPara);\n this._destroy();\n this._initialize();\n\n if (disabled) {\n this.disable();\n }\n }\n\n _initialize() {\n // set own id\n this.options.id = func.uniqueId($.now());\n // set default container for tooltips, popovers, and dialogs\n this.options.container = this.options.container || this.layoutInfo.editor;\n\n // add optional buttons\n const buttons = $.extend({}, this.options.buttons);\n Object.keys(buttons).forEach((key) => {\n this.memo('button.' + key, buttons[key]);\n });\n\n const modules = $.extend({}, this.options.modules, $.summernote.plugins || {});\n\n // add and initialize modules\n Object.keys(modules).forEach((key) => {\n this.module(key, modules[key], true);\n });\n\n Object.keys(this.modules).forEach((key) => {\n this.initializeModule(key);\n });\n }\n\n _destroy() {\n // destroy modules with reversed order\n Object.keys(this.modules).reverse().forEach((key) => {\n this.removeModule(key);\n });\n\n Object.keys(this.memos).forEach((key) => {\n this.removeMemo(key);\n });\n // trigger custom onDestroy callback\n this.triggerEvent('destroy', this);\n }\n\n code(html) {\n const isActivated = this.invoke('codeview.isActivated');\n\n if (html === undefined) {\n this.invoke('codeview.sync');\n return isActivated ? this.layoutInfo.codable.val() : this.layoutInfo.editable.html();\n } else {\n if (isActivated) {\n this.invoke('codeview.sync', html);\n } else {\n this.layoutInfo.editable.html(html);\n }\n this.$note.val(html);\n this.triggerEvent('change', html, this.layoutInfo.editable);\n }\n }\n\n isDisabled() {\n return this.layoutInfo.editable.attr('contenteditable') === 'false';\n }\n\n enable() {\n this.layoutInfo.editable.attr('contenteditable', true);\n this.invoke('toolbar.activate', true);\n this.triggerEvent('disable', false);\n this.options.editing = true;\n }\n\n disable() {\n // close codeview if codeview is opend\n if (this.invoke('codeview.isActivated')) {\n this.invoke('codeview.deactivate');\n }\n this.layoutInfo.editable.attr('contenteditable', false);\n this.options.editing = false;\n this.invoke('toolbar.deactivate', true);\n\n this.triggerEvent('disable', true);\n }\n\n triggerEvent() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const callback = this.options.callbacks[func.namespaceToCamel(namespace, 'on')];\n if (callback) {\n callback.apply(this.$note[0], args);\n }\n this.$note.trigger('summernote.' + namespace, args);\n }\n\n initializeModule(key) {\n const module = this.modules[key];\n module.shouldInitialize = module.shouldInitialize || func.ok;\n if (!module.shouldInitialize()) {\n return;\n }\n\n // initialize module\n if (module.initialize) {\n module.initialize();\n }\n\n // attach events\n if (module.events) {\n dom.attachEvents(this.$note, module.events);\n }\n }\n\n module(key, ModuleClass, withoutIntialize) {\n if (arguments.length === 1) {\n return this.modules[key];\n }\n\n this.modules[key] = new ModuleClass(this);\n\n if (!withoutIntialize) {\n this.initializeModule(key);\n }\n }\n\n removeModule(key) {\n const module = this.modules[key];\n if (module.shouldInitialize()) {\n if (module.events) {\n dom.detachEvents(this.$note, module.events);\n }\n\n if (module.destroy) {\n module.destroy();\n }\n }\n\n delete this.modules[key];\n }\n\n memo(key, obj) {\n if (arguments.length === 1) {\n return this.memos[key];\n }\n this.memos[key] = obj;\n }\n\n removeMemo(key) {\n if (this.memos[key] && this.memos[key].destroy) {\n this.memos[key].destroy();\n }\n\n delete this.memos[key];\n }\n\n /**\n * Some buttons need to change their visual style immediately once they get pressed\n */\n createInvokeHandlerAndUpdateState(namespace, value) {\n return (event) => {\n this.createInvokeHandler(namespace, value)(event);\n this.invoke('buttons.updateCurrentStyle');\n };\n }\n\n createInvokeHandler(namespace, value) {\n return (event) => {\n event.preventDefault();\n const $target = $(event.target);\n this.invoke(namespace, value || $target.closest('[data-value]').data('value'), $target);\n };\n }\n\n invoke() {\n const namespace = lists.head(arguments);\n const args = lists.tail(lists.from(arguments));\n\n const splits = namespace.split('.');\n const hasSeparator = splits.length > 1;\n const moduleName = hasSeparator && lists.head(splits);\n const methodName = hasSeparator ? lists.last(splits) : lists.head(splits);\n\n const module = this.modules[moduleName || 'editor'];\n if (!moduleName && this[methodName]) {\n return this[methodName].apply(this, args);\n } else if (module && module[methodName] && module.shouldInitialize()) {\n return module[methodName].apply(module, args);\n }\n }\n}\n","import $ from 'jquery';\nimport env from './env';\nimport func from './func';\nimport lists from './lists';\nimport dom from './dom';\n\n/**\n * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js\n *\n * @param {TextRange} textRange\n * @param {Boolean} isStart\n * @return {BoundaryPoint}\n *\n * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx\n */\nfunction textRangeToPoint(textRange, isStart) {\n let container = textRange.parentElement();\n let offset;\n\n const tester = document.body.createTextRange();\n let prevContainer;\n const childNodes = lists.from(container.childNodes);\n for (offset = 0; offset < childNodes.length; offset++) {\n if (dom.isText(childNodes[offset])) {\n continue;\n }\n tester.moveToElementText(childNodes[offset]);\n if (tester.compareEndPoints('StartToStart', textRange) >= 0) {\n break;\n }\n prevContainer = childNodes[offset];\n }\n\n if (offset !== 0 && dom.isText(childNodes[offset - 1])) {\n const textRangeStart = document.body.createTextRange();\n let curTextNode = null;\n textRangeStart.moveToElementText(prevContainer || container);\n textRangeStart.collapse(!prevContainer);\n curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild;\n\n const pointTester = textRange.duplicate();\n pointTester.setEndPoint('StartToStart', textRangeStart);\n let textCount = pointTester.text.replace(/[\\r\\n]/g, '').length;\n\n while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n // [workaround] enforce IE to re-reference curTextNode, hack\n const dummy = curTextNode.nodeValue; // eslint-disable-line\n\n if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) &&\n textCount === curTextNode.nodeValue.length) {\n textCount -= curTextNode.nodeValue.length;\n curTextNode = curTextNode.nextSibling;\n }\n\n container = curTextNode;\n offset = textCount;\n }\n\n return {\n cont: container,\n offset: offset,\n };\n}\n\n/**\n * return TextRange from boundary point (inspired by google closure-library)\n * @param {BoundaryPoint} point\n * @return {TextRange}\n */\nfunction pointToTextRange(point) {\n const textRangeInfo = function(container, offset) {\n let node, isCollapseToStart;\n\n if (dom.isText(container)) {\n const prevTextNodes = dom.listPrev(container, func.not(dom.isText));\n const prevContainer = lists.last(prevTextNodes).previousSibling;\n node = prevContainer || container.parentNode;\n offset += lists.sum(lists.tail(prevTextNodes), dom.nodeLength);\n isCollapseToStart = !prevContainer;\n } else {\n node = container.childNodes[offset] || container;\n if (dom.isText(node)) {\n return textRangeInfo(node, 0);\n }\n\n offset = 0;\n isCollapseToStart = false;\n }\n\n return {\n node: node,\n collapseToStart: isCollapseToStart,\n offset: offset,\n };\n };\n\n const textRange = document.body.createTextRange();\n const info = textRangeInfo(point.node, point.offset);\n\n textRange.moveToElementText(info.node);\n textRange.collapse(info.collapseToStart);\n textRange.moveStart('character', info.offset);\n return textRange;\n}\n\n/**\n * Wrapped Range\n *\n * @constructor\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n */\nclass WrappedRange {\n constructor(sc, so, ec, eo) {\n this.sc = sc;\n this.so = so;\n this.ec = ec;\n this.eo = eo;\n\n // isOnEditable: judge whether range is on editable or not\n this.isOnEditable = this.makeIsOn(dom.isEditable);\n // isOnList: judge whether range is on list node or not\n this.isOnList = this.makeIsOn(dom.isList);\n // isOnAnchor: judge whether range is on anchor node or not\n this.isOnAnchor = this.makeIsOn(dom.isAnchor);\n // isOnCell: judge whether range is on cell node or not\n this.isOnCell = this.makeIsOn(dom.isCell);\n // isOnData: judge whether range is on data node or not\n this.isOnData = this.makeIsOn(dom.isData);\n }\n\n // nativeRange: get nativeRange from sc, so, ec, eo\n nativeRange() {\n if (env.isW3CRangeSupport) {\n const w3cRange = document.createRange();\n w3cRange.setStart(this.sc, this.so);\n w3cRange.setEnd(this.ec, this.eo);\n\n return w3cRange;\n } else {\n const textRange = pointToTextRange({\n node: this.sc,\n offset: this.so,\n });\n\n textRange.setEndPoint('EndToEnd', pointToTextRange({\n node: this.ec,\n offset: this.eo,\n }));\n\n return textRange;\n }\n }\n\n getPoints() {\n return {\n sc: this.sc,\n so: this.so,\n ec: this.ec,\n eo: this.eo,\n };\n }\n\n getStartPoint() {\n return {\n node: this.sc,\n offset: this.so,\n };\n }\n\n getEndPoint() {\n return {\n node: this.ec,\n offset: this.eo,\n };\n }\n\n /**\n * select update visible range\n */\n select() {\n const nativeRng = this.nativeRange();\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n selection.addRange(nativeRng);\n } else {\n nativeRng.select();\n }\n\n return this;\n }\n\n /**\n * Moves the scrollbar to start container(sc) of current range\n *\n * @return {WrappedRange}\n */\n scrollIntoView(container) {\n const height = $(container).height();\n if (container.scrollTop + height < this.sc.offsetTop) {\n container.scrollTop += Math.abs(container.scrollTop + height - this.sc.offsetTop);\n }\n\n return this;\n }\n\n /**\n * @return {WrappedRange}\n */\n normalize() {\n /**\n * @param {BoundaryPoint} point\n * @param {Boolean} isLeftToRight - true: prefer to choose right node\n * - false: prefer to choose left node\n * @return {BoundaryPoint}\n */\n const getVisiblePoint = function(point, isLeftToRight) {\n if (!point) {\n return point;\n }\n\n // Just use the given point [XXX:Adhoc]\n // - case 01. if the point is on the middle of the node\n // - case 02. if the point is on the right edge and prefer to choose left node\n // - case 03. if the point is on the left edge and prefer to choose right node\n // - case 04. if the point is on the right edge and prefer to choose right node but the node is void\n // - case 05. if the point is on the left edge and prefer to choose left node but the node is void\n // - case 06. if the point is on the block node and there is no children\n if (dom.isVisiblePoint(point)) {\n if (!dom.isEdgePoint(point) ||\n (dom.isRightEdgePoint(point) && !isLeftToRight) ||\n (dom.isLeftEdgePoint(point) && isLeftToRight) ||\n (dom.isRightEdgePoint(point) && isLeftToRight && dom.isVoid(point.node.nextSibling)) ||\n (dom.isLeftEdgePoint(point) && !isLeftToRight && dom.isVoid(point.node.previousSibling)) ||\n (dom.isBlock(point.node) && dom.isEmpty(point.node))) {\n return point;\n }\n }\n\n // point on block's edge\n const block = dom.ancestor(point.node, dom.isBlock);\n let hasRightNode = false;\n\n if (!hasRightNode) {\n const prevPoint = dom.prevPoint(point) || { node: null };\n hasRightNode = (dom.isLeftEdgePointOf(point, block) || dom.isVoid(prevPoint.node)) && !isLeftToRight;\n }\n\n let hasLeftNode = false;\n if (!hasLeftNode) {\n const nextPoint = dom.nextPoint(point) || { node: null };\n hasLeftNode = (dom.isRightEdgePointOf(point, block) || dom.isVoid(nextPoint.node)) && isLeftToRight;\n }\n\n if (hasRightNode || hasLeftNode) {\n // returns point already on visible point\n if (dom.isVisiblePoint(point)) {\n return point;\n }\n // reverse direction\n isLeftToRight = !isLeftToRight;\n }\n\n const nextPoint = isLeftToRight ? dom.nextPointUntil(dom.nextPoint(point), dom.isVisiblePoint)\n : dom.prevPointUntil(dom.prevPoint(point), dom.isVisiblePoint);\n return nextPoint || point;\n };\n\n const endPoint = getVisiblePoint(this.getEndPoint(), false);\n const startPoint = this.isCollapsed() ? endPoint : getVisiblePoint(this.getStartPoint(), true);\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns matched nodes on range\n *\n * @param {Function} [pred] - predicate function\n * @param {Object} [options]\n * @param {Boolean} [options.includeAncestor]\n * @param {Boolean} [options.fullyContains]\n * @return {Node[]}\n */\n nodes(pred, options) {\n pred = pred || func.ok;\n\n const includeAncestor = options && options.includeAncestor;\n const fullyContains = options && options.fullyContains;\n\n // TODO compare points and sort\n const startPoint = this.getStartPoint();\n const endPoint = this.getEndPoint();\n\n const nodes = [];\n const leftEdgeNodes = [];\n\n dom.walkPoint(startPoint, endPoint, function(point) {\n if (dom.isEditable(point.node)) {\n return;\n }\n\n let node;\n if (fullyContains) {\n if (dom.isLeftEdgePoint(point)) {\n leftEdgeNodes.push(point.node);\n }\n if (dom.isRightEdgePoint(point) && lists.contains(leftEdgeNodes, point.node)) {\n node = point.node;\n }\n } else if (includeAncestor) {\n node = dom.ancestor(point.node, pred);\n } else {\n node = point.node;\n }\n\n if (node && pred(node)) {\n nodes.push(node);\n }\n }, true);\n\n return lists.unique(nodes);\n }\n\n /**\n * returns commonAncestor of range\n * @return {Element} - commonAncestor\n */\n commonAncestor() {\n return dom.commonAncestor(this.sc, this.ec);\n }\n\n /**\n * returns expanded range by pred\n *\n * @param {Function} pred - predicate function\n * @return {WrappedRange}\n */\n expand(pred) {\n const startAncestor = dom.ancestor(this.sc, pred);\n const endAncestor = dom.ancestor(this.ec, pred);\n\n if (!startAncestor && !endAncestor) {\n return new WrappedRange(this.sc, this.so, this.ec, this.eo);\n }\n\n const boundaryPoints = this.getPoints();\n\n if (startAncestor) {\n boundaryPoints.sc = startAncestor;\n boundaryPoints.so = 0;\n }\n\n if (endAncestor) {\n boundaryPoints.ec = endAncestor;\n boundaryPoints.eo = dom.nodeLength(endAncestor);\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * @param {Boolean} isCollapseToStart\n * @return {WrappedRange}\n */\n collapse(isCollapseToStart) {\n if (isCollapseToStart) {\n return new WrappedRange(this.sc, this.so, this.sc, this.so);\n } else {\n return new WrappedRange(this.ec, this.eo, this.ec, this.eo);\n }\n }\n\n /**\n * splitText on range\n */\n splitText() {\n const isSameContainer = this.sc === this.ec;\n const boundaryPoints = this.getPoints();\n\n if (dom.isText(this.ec) && !dom.isEdgePoint(this.getEndPoint())) {\n this.ec.splitText(this.eo);\n }\n\n if (dom.isText(this.sc) && !dom.isEdgePoint(this.getStartPoint())) {\n boundaryPoints.sc = this.sc.splitText(this.so);\n boundaryPoints.so = 0;\n\n if (isSameContainer) {\n boundaryPoints.ec = boundaryPoints.sc;\n boundaryPoints.eo = this.eo - this.so;\n }\n }\n\n return new WrappedRange(\n boundaryPoints.sc,\n boundaryPoints.so,\n boundaryPoints.ec,\n boundaryPoints.eo\n );\n }\n\n /**\n * delete contents on range\n * @return {WrappedRange}\n */\n deleteContents() {\n if (this.isCollapsed()) {\n return this;\n }\n\n const rng = this.splitText();\n const nodes = rng.nodes(null, {\n fullyContains: true,\n });\n\n // find new cursor point\n const point = dom.prevPointUntil(rng.getStartPoint(), function(point) {\n return !lists.contains(nodes, point.node);\n });\n\n const emptyParents = [];\n $.each(nodes, function(idx, node) {\n // find empty parents\n const parent = node.parentNode;\n if (point.node !== parent && dom.nodeLength(parent) === 1) {\n emptyParents.push(parent);\n }\n dom.remove(node, false);\n });\n\n // remove empty parents\n $.each(emptyParents, function(idx, node) {\n dom.remove(node, false);\n });\n\n return new WrappedRange(\n point.node,\n point.offset,\n point.node,\n point.offset\n ).normalize();\n }\n\n /**\n * makeIsOn: return isOn(pred) function\n */\n makeIsOn(pred) {\n return function() {\n const ancestor = dom.ancestor(this.sc, pred);\n return !!ancestor && (ancestor === dom.ancestor(this.ec, pred));\n };\n }\n\n /**\n * @param {Function} pred\n * @return {Boolean}\n */\n isLeftEdgeOf(pred) {\n if (!dom.isLeftEdgePoint(this.getStartPoint())) {\n return false;\n }\n\n const node = dom.ancestor(this.sc, pred);\n return node && dom.isLeftEdgeOf(this.sc, node);\n }\n\n /**\n * returns whether range was collapsed or not\n */\n isCollapsed() {\n return this.sc === this.ec && this.so === this.eo;\n }\n\n /**\n * wrap inline nodes which children of body with paragraph\n *\n * @return {WrappedRange}\n */\n wrapBodyInlineWithPara() {\n if (dom.isBodyContainer(this.sc) && dom.isEmpty(this.sc)) {\n this.sc.innerHTML = dom.emptyPara;\n return new WrappedRange(this.sc.firstChild, 0, this.sc.firstChild, 0);\n }\n\n /**\n * [workaround] firefox often create range on not visible point. so normalize here.\n * - firefox: |<p>text</p>|\n * - chrome: <p>|text|</p>\n */\n const rng = this.normalize();\n if (dom.isParaInline(this.sc) || dom.isPara(this.sc)) {\n return rng;\n }\n\n // find inline top ancestor\n let topAncestor;\n if (dom.isInline(rng.sc)) {\n const ancestors = dom.listAncestor(rng.sc, func.not(dom.isInline));\n topAncestor = lists.last(ancestors);\n if (!dom.isInline(topAncestor)) {\n topAncestor = ancestors[ancestors.length - 2] || rng.sc.childNodes[rng.so];\n }\n } else {\n topAncestor = rng.sc.childNodes[rng.so > 0 ? rng.so - 1 : 0];\n }\n\n if (topAncestor) {\n // siblings not in paragraph\n let inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse();\n inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline));\n\n // wrap with paragraph\n if (inlineSiblings.length) {\n const para = dom.wrap(lists.head(inlineSiblings), 'p');\n dom.appendChildNodes(para, lists.tail(inlineSiblings));\n }\n }\n\n return this.normalize();\n }\n\n /**\n * insert node at current cursor\n *\n * @param {Node} node\n * @return {Node}\n */\n insertNode(node) {\n let rng = this;\n\n if (dom.isText(node) || dom.isInline(node)) {\n rng = this.wrapBodyInlineWithPara().deleteContents();\n }\n\n const info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node));\n if (info.rightNode) {\n info.rightNode.parentNode.insertBefore(node, info.rightNode);\n if (dom.isEmpty(info.rightNode) && dom.isPara(node)) {\n info.rightNode.parentNode.removeChild(info.rightNode);\n }\n } else {\n info.container.appendChild(node);\n }\n\n return node;\n }\n\n /**\n * insert html at current cursor\n */\n pasteHTML(markup) {\n markup = $.trim(markup);\n\n const contentsContainer = $('<div></div>').html(markup)[0];\n let childNodes = lists.from(contentsContainer.childNodes);\n\n // const rng = this.wrapBodyInlineWithPara().deleteContents();\n const rng = this;\n let reversed = false;\n\n if (rng.so >= 0) {\n childNodes = childNodes.reverse();\n reversed = true;\n }\n\n childNodes = childNodes.map(function(childNode) {\n return rng.insertNode(childNode);\n });\n\n if (reversed) {\n childNodes = childNodes.reverse();\n }\n return childNodes;\n }\n\n /**\n * returns text in range\n *\n * @return {String}\n */\n toString() {\n const nativeRng = this.nativeRange();\n return env.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text;\n }\n\n /**\n * returns range for word before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordRange(findAfter) {\n let endPoint = this.getEndPoint();\n\n if (!dom.isCharPoint(endPoint)) {\n return this;\n }\n\n const startPoint = dom.prevPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, function(point) {\n return !dom.isCharPoint(point);\n });\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor\n *\n * @param {Boolean} [findAfter] - find after cursor, default: false\n * @return {WrappedRange}\n */\n getWordsRange(findAfter) {\n var endPoint = this.getEndPoint();\n\n var isNotTextPoint = function(point) {\n return !dom.isCharPoint(point) && !dom.isSpacePoint(point);\n };\n\n if (isNotTextPoint(endPoint)) {\n return this;\n }\n\n var startPoint = dom.prevPointUntil(endPoint, isNotTextPoint);\n\n if (findAfter) {\n endPoint = dom.nextPointUntil(endPoint, isNotTextPoint);\n }\n\n return new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * returns range for words before cursor that match with a Regex\n *\n * example:\n * range: 'hi @Peter Pan'\n * regex: '/@[a-z ]+/i'\n * return range: '@Peter Pan'\n *\n * @param {RegExp} [regex]\n * @return {WrappedRange|null}\n */\n getWordsMatchRange(regex) {\n var endPoint = this.getEndPoint();\n\n var startPoint = dom.prevPointUntil(endPoint, function(point) {\n if (!dom.isCharPoint(point) && !dom.isSpacePoint(point)) {\n return true;\n }\n var rng = new WrappedRange(\n point.node,\n point.offset,\n endPoint.node,\n endPoint.offset\n );\n var result = regex.exec(rng.toString());\n return result && result.index === 0;\n });\n\n var rng = new WrappedRange(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n\n var text = rng.toString();\n var result = regex.exec(text);\n\n if (result && result[0].length === text.length) {\n return rng;\n } else {\n return null;\n }\n }\n\n /**\n * create offsetPath bookmark\n *\n * @param {Node} editable\n */\n bookmark(editable) {\n return {\n s: {\n path: dom.makeOffsetPath(editable, this.sc),\n offset: this.so,\n },\n e: {\n path: dom.makeOffsetPath(editable, this.ec),\n offset: this.eo,\n },\n };\n }\n\n /**\n * create offsetPath bookmark base on paragraph\n *\n * @param {Node[]} paras\n */\n paraBookmark(paras) {\n return {\n s: {\n path: lists.tail(dom.makeOffsetPath(lists.head(paras), this.sc)),\n offset: this.so,\n },\n e: {\n path: lists.tail(dom.makeOffsetPath(lists.last(paras), this.ec)),\n offset: this.eo,\n },\n };\n }\n\n /**\n * getClientRects\n * @return {Rect[]}\n */\n getClientRects() {\n const nativeRng = this.nativeRange();\n return nativeRng.getClientRects();\n }\n}\n\n/**\n * Data structure\n * * BoundaryPoint: a point of dom tree\n * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range\n *\n * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position\n */\nexport default {\n /**\n * create Range Object From arguments or Browser Selection\n *\n * @param {Node} sc - start container\n * @param {Number} so - start offset\n * @param {Node} ec - end container\n * @param {Number} eo - end offset\n * @return {WrappedRange}\n */\n create: function(sc, so, ec, eo) {\n if (arguments.length === 4) {\n return new WrappedRange(sc, so, ec, eo);\n } else if (arguments.length === 2) { // collapsed\n ec = sc;\n eo = so;\n return new WrappedRange(sc, so, ec, eo);\n } else {\n let wrappedRange = this.createFromSelection();\n\n if (!wrappedRange && arguments.length === 1) {\n let bodyElement = arguments[0];\n if (dom.isEditable(bodyElement)) {\n bodyElement = bodyElement.lastChild;\n }\n return this.createFromBodyElement(bodyElement, dom.emptyPara === arguments[0].innerHTML);\n }\n return wrappedRange;\n }\n },\n\n createFromBodyElement: function(bodyElement, isCollapseToStart = false) {\n var wrappedRange = this.createFromNode(bodyElement);\n return wrappedRange.collapse(isCollapseToStart);\n },\n\n createFromSelection: function() {\n let sc, so, ec, eo;\n if (env.isW3CRangeSupport) {\n const selection = document.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return null;\n } else if (dom.isBody(selection.anchorNode)) {\n // Firefox: returns entire body as range on initialization.\n // We won't never need it.\n return null;\n }\n\n const nativeRng = selection.getRangeAt(0);\n sc = nativeRng.startContainer;\n so = nativeRng.startOffset;\n ec = nativeRng.endContainer;\n eo = nativeRng.endOffset;\n } else { // IE8: TextRange\n const textRange = document.selection.createRange();\n const textRangeEnd = textRange.duplicate();\n textRangeEnd.collapse(false);\n const textRangeStart = textRange;\n textRangeStart.collapse(true);\n\n let startPoint = textRangeToPoint(textRangeStart, true);\n let endPoint = textRangeToPoint(textRangeEnd, false);\n\n // same visible point case: range was collapsed.\n if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) &&\n dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) &&\n endPoint.node.nextSibling === startPoint.node) {\n startPoint = endPoint;\n }\n\n sc = startPoint.cont;\n so = startPoint.offset;\n ec = endPoint.cont;\n eo = endPoint.offset;\n }\n\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from node\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNode: function(node) {\n let sc = node;\n let so = 0;\n let ec = node;\n let eo = dom.nodeLength(ec);\n\n // browsers can't target a picture or void node\n if (dom.isVoid(sc)) {\n so = dom.listPrev(sc).length - 1;\n sc = sc.parentNode;\n }\n if (dom.isBR(ec)) {\n eo = dom.listPrev(ec).length - 1;\n ec = ec.parentNode;\n } else if (dom.isVoid(ec)) {\n eo = dom.listPrev(ec).length;\n ec = ec.parentNode;\n }\n\n return this.create(sc, so, ec, eo);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeBefore: function(node) {\n return this.createFromNode(node).collapse(true);\n },\n\n /**\n * create WrappedRange from node after position\n *\n * @param {Node} node\n * @return {WrappedRange}\n */\n createFromNodeAfter: function(node) {\n return this.createFromNode(node).collapse();\n },\n\n /**\n * @method\n *\n * create WrappedRange from bookmark\n *\n * @param {Node} editable\n * @param {Object} bookmark\n * @return {WrappedRange}\n */\n createFromBookmark: function(editable, bookmark) {\n const sc = dom.fromOffsetPath(editable, bookmark.s.path);\n const so = bookmark.s.offset;\n const ec = dom.fromOffsetPath(editable, bookmark.e.path);\n const eo = bookmark.e.offset;\n return new WrappedRange(sc, so, ec, eo);\n },\n\n /**\n * @method\n *\n * create WrappedRange from paraBookmark\n *\n * @param {Object} bookmark\n * @param {Node[]} paras\n * @return {WrappedRange}\n */\n createFromParaBookmark: function(bookmark, paras) {\n const so = bookmark.s.offset;\n const eo = bookmark.e.offset;\n const sc = dom.fromOffsetPath(lists.head(paras), bookmark.s.path);\n const ec = dom.fromOffsetPath(lists.last(paras), bookmark.e.path);\n\n return new WrappedRange(sc, so, ec, eo);\n },\n};\n","import $ from 'jquery';\nimport env from './base/core/env';\nimport lists from './base/core/lists';\nimport Context from './base/Context';\n\n$.fn.extend({\n /**\n * Summernote API\n *\n * @param {Object|String}\n * @return {this}\n */\n summernote: function() {\n const type = $.type(lists.head(arguments));\n const isExternalAPICalled = type === 'string';\n const hasInitOptions = type === 'object';\n\n const options = $.extend({}, $.summernote.options, hasInitOptions ? lists.head(arguments) : {});\n\n // Update options\n options.langInfo = $.extend(true, {}, $.summernote.lang['en-US'], $.summernote.lang[options.lang]);\n options.icons = $.extend(true, {}, $.summernote.options.icons, options.icons);\n options.tooltip = options.tooltip === 'auto' ? !env.isSupportTouch : options.tooltip;\n\n this.each((idx, note) => {\n const $note = $(note);\n if (!$note.data('summernote')) {\n const context = new Context($note, options);\n $note.data('summernote', context);\n $note.data('summernote').triggerEvent('init', context.layoutInfo);\n }\n });\n\n const $note = this.first();\n if ($note.length) {\n const context = $note.data('summernote');\n if (isExternalAPICalled) {\n return context.invoke.apply(context, lists.from(arguments));\n } else if (options.focus) {\n context.invoke('editor.focus');\n }\n }\n\n return this;\n },\n});\n","import lists from './lists';\nimport func from './func';\n\nconst KEY_MAP = {\n 'BACKSPACE': 8,\n 'TAB': 9,\n 'ENTER': 13,\n 'ESCAPE': 27,\n 'SPACE': 32,\n 'DELETE': 46,\n\n // Arrow\n 'LEFT': 37,\n 'UP': 38,\n 'RIGHT': 39,\n 'DOWN': 40,\n\n // Number: 0-9\n 'NUM0': 48,\n 'NUM1': 49,\n 'NUM2': 50,\n 'NUM3': 51,\n 'NUM4': 52,\n 'NUM5': 53,\n 'NUM6': 54,\n 'NUM7': 55,\n 'NUM8': 56,\n\n // Alphabet: a-z\n 'B': 66,\n 'E': 69,\n 'I': 73,\n 'J': 74,\n 'K': 75,\n 'L': 76,\n 'R': 82,\n 'S': 83,\n 'U': 85,\n 'V': 86,\n 'Y': 89,\n 'Z': 90,\n\n 'SLASH': 191,\n 'LEFTBRACKET': 219,\n 'BACKSLASH': 220,\n 'RIGHTBRACKET': 221,\n\n // Navigation\n 'HOME': 36,\n 'END': 35,\n 'PAGEUP': 33,\n 'PAGEDOWN': 34,\n};\n\n/**\n * @class core.key\n *\n * Object for keycodes.\n *\n * @singleton\n * @alternateClassName key\n */\nexport default {\n /**\n * @method isEdit\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isEdit: (keyCode) => {\n return lists.contains([\n KEY_MAP.BACKSPACE,\n KEY_MAP.TAB,\n KEY_MAP.ENTER,\n KEY_MAP.SPACE,\n KEY_MAP.DELETE,\n ], keyCode);\n },\n /**\n * @method isMove\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isMove: (keyCode) => {\n return lists.contains([\n KEY_MAP.LEFT,\n KEY_MAP.UP,\n KEY_MAP.RIGHT,\n KEY_MAP.DOWN,\n ], keyCode);\n },\n /**\n * @method isNavigation\n *\n * @param {Number} keyCode\n * @return {Boolean}\n */\n isNavigation: (keyCode) => {\n return lists.contains([\n KEY_MAP.HOME,\n KEY_MAP.END,\n KEY_MAP.PAGEUP,\n KEY_MAP.PAGEDOWN,\n ], keyCode);\n },\n /**\n * @property {Object} nameFromCode\n * @property {String} nameFromCode.8 \"BACKSPACE\"\n */\n nameFromCode: func.invertObject(KEY_MAP),\n code: KEY_MAP,\n};\n","import range from '../core/range';\n\nexport default class History {\n constructor(context) {\n this.stack = [];\n this.stackOffset = -1;\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n this.editable = this.$editable[0];\n }\n\n makeSnapshot() {\n const rng = range.create(this.editable);\n const emptyBookmark = { s: { path: [], offset: 0 }, e: { path: [], offset: 0 } };\n\n return {\n contents: this.$editable.html(),\n bookmark: ((rng && rng.isOnEditable()) ? rng.bookmark(this.editable) : emptyBookmark),\n };\n }\n\n applySnapshot(snapshot) {\n if (snapshot.contents !== null) {\n this.$editable.html(snapshot.contents);\n }\n if (snapshot.bookmark !== null) {\n range.createFromBookmark(this.editable, snapshot.bookmark).select();\n }\n }\n\n /**\n * @method rewind\n * Rewinds the history stack back to the first snapshot taken.\n * Leaves the stack intact, so that \"Redo\" can still be used.\n */\n rewind() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n // Return to the first available snapshot.\n this.stackOffset = 0;\n\n // Apply that snapshot.\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n\n /**\n * @method commit\n * Resets history stack, but keeps current editor's content.\n */\n commit() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * @method reset\n * Resets the history stack completely; reverting to an empty editor.\n */\n reset() {\n // Clear the stack.\n this.stack = [];\n\n // Restore stackOffset to its original value.\n this.stackOffset = -1;\n\n // Clear the editable area.\n this.$editable.html('');\n\n // Record our first snapshot (of nothing).\n this.recordUndo();\n }\n\n /**\n * undo\n */\n undo() {\n // Create snap shot if not yet recorded\n if (this.$editable.html() !== this.stack[this.stackOffset].contents) {\n this.recordUndo();\n }\n\n if (this.stackOffset > 0) {\n this.stackOffset--;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * redo\n */\n redo() {\n if (this.stack.length - 1 > this.stackOffset) {\n this.stackOffset++;\n this.applySnapshot(this.stack[this.stackOffset]);\n }\n }\n\n /**\n * recorded undo\n */\n recordUndo() {\n this.stackOffset++;\n\n // Wash out stack after stackOffset\n if (this.stack.length > this.stackOffset) {\n this.stack = this.stack.slice(0, this.stackOffset);\n }\n\n // Create new snapshot and push it to the end\n this.stack.push(this.makeSnapshot());\n\n // If the stack size reachs to the limit, then slice it\n if (this.stack.length > this.context.options.historyLimit) {\n this.stack.shift();\n this.stackOffset -= 1;\n }\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class Style {\n /**\n * @method jQueryCSS\n *\n * [workaround] for old jQuery\n * passing an array of style properties to .css()\n * will result in an object of property-value pairs.\n * (compability with version < 1.9)\n *\n * @private\n * @param {jQuery} $obj\n * @param {Array} propertyNames - An array of one or more CSS properties.\n * @return {Object}\n */\n jQueryCSS($obj, propertyNames) {\n if (env.jqueryVersion < 1.9) {\n const result = {};\n $.each(propertyNames, (idx, propertyName) => {\n result[propertyName] = $obj.css(propertyName);\n });\n return result;\n }\n return $obj.css(propertyNames);\n }\n\n /**\n * returns style object from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n fromNode($node) {\n const properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height'];\n const styleInfo = this.jQueryCSS($node, properties) || {};\n\n const fontSize = $node[0].style.fontSize || styleInfo['font-size'];\n\n styleInfo['font-size'] = parseInt(fontSize, 10);\n styleInfo['font-size-unit'] = fontSize.match(/[a-z%]+$/);\n\n return styleInfo;\n }\n\n /**\n * paragraph level style\n *\n * @param {WrappedRange} rng\n * @param {Object} styleInfo\n */\n stylePara(rng, styleInfo) {\n $.each(rng.nodes(dom.isPara, {\n includeAncestor: true,\n }), (idx, para) => {\n $(para).css(styleInfo);\n });\n }\n\n /**\n * insert and returns styleNodes on range.\n *\n * @param {WrappedRange} rng\n * @param {Object} [options] - options for styleNodes\n * @param {String} [options.nodeName] - default: `SPAN`\n * @param {Boolean} [options.expandClosestSibling] - default: `false`\n * @param {Boolean} [options.onlyPartialContains] - default: `false`\n * @return {Node[]}\n */\n styleNodes(rng, options) {\n rng = rng.splitText();\n\n const nodeName = (options && options.nodeName) || 'SPAN';\n const expandClosestSibling = !!(options && options.expandClosestSibling);\n const onlyPartialContains = !!(options && options.onlyPartialContains);\n\n if (rng.isCollapsed()) {\n return [rng.insertNode(dom.create(nodeName))];\n }\n\n let pred = dom.makePredByNodeName(nodeName);\n const nodes = rng.nodes(dom.isText, {\n fullyContains: true,\n }).map((text) => {\n return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName);\n });\n\n if (expandClosestSibling) {\n if (onlyPartialContains) {\n const nodesInRange = rng.nodes();\n // compose with partial contains predication\n pred = func.and(pred, (node) => {\n return lists.contains(nodesInRange, node);\n });\n }\n\n return nodes.map((node) => {\n const siblings = dom.withClosestSiblings(node, pred);\n const head = lists.head(siblings);\n const tails = lists.tail(siblings);\n $.each(tails, (idx, elem) => {\n dom.appendChildNodes(head, elem.childNodes);\n dom.remove(elem);\n });\n return lists.head(siblings);\n });\n } else {\n return nodes;\n }\n }\n\n /**\n * get current style on cursor\n *\n * @param {WrappedRange} rng\n * @return {Object} - object contains style properties.\n */\n current(rng) {\n const $cont = $(!dom.isElement(rng.sc) ? rng.sc.parentNode : rng.sc);\n let styleInfo = this.fromNode($cont);\n\n // document.queryCommandState for toggle state\n // [workaround] prevent Firefox nsresult: \"0x80004005 (NS_ERROR_FAILURE)\"\n try {\n styleInfo = $.extend(styleInfo, {\n 'font-bold': document.queryCommandState('bold') ? 'bold' : 'normal',\n 'font-italic': document.queryCommandState('italic') ? 'italic' : 'normal',\n 'font-underline': document.queryCommandState('underline') ? 'underline' : 'normal',\n 'font-subscript': document.queryCommandState('subscript') ? 'subscript' : 'normal',\n 'font-superscript': document.queryCommandState('superscript') ? 'superscript' : 'normal',\n 'font-strikethrough': document.queryCommandState('strikethrough') ? 'strikethrough' : 'normal',\n 'font-family': document.queryCommandValue('fontname') || styleInfo['font-family'],\n });\n } catch (e) {\n // eslint-disable-next-line\n }\n\n // list-style-type to list-style(unordered, ordered)\n if (!rng.isOnList()) {\n styleInfo['list-style'] = 'none';\n } else {\n const orderedTypes = ['circle', 'disc', 'disc-leading-zero', 'square'];\n const isUnordered = orderedTypes.indexOf(styleInfo['list-style-type']) > -1;\n styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered';\n }\n\n const para = dom.ancestor(rng.sc, dom.isPara);\n if (para && para.style['line-height']) {\n styleInfo['line-height'] = para.style.lineHeight;\n } else {\n const lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10);\n styleInfo['line-height'] = lineHeight.toFixed(1);\n }\n\n styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor);\n styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable);\n styleInfo.range = rng;\n\n return styleInfo;\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport func from '../core/func';\nimport dom from '../core/dom';\nimport range from '../core/range';\n\nexport default class Bullet {\n /**\n * toggle ordered list\n */\n insertOrderedList(editable) {\n this.toggleList('OL', editable);\n }\n\n /**\n * toggle unordered list\n */\n insertUnorderedList(editable) {\n this.toggleList('UL', editable);\n }\n\n /**\n * indent\n */\n indent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n const previousList = this.findList(head.previousSibling);\n if (previousList) {\n paras\n .map(para => previousList.appendChild(para));\n } else {\n this.wrapList(paras, head.parentNode.nodeName);\n paras\n .map((para) => para.parentNode)\n .map((para) => this.appendToPrevious(para));\n }\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n return (parseInt(val, 10) || 0) + 25;\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * outdent\n */\n outdent(editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n const paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n if (dom.isLi(head)) {\n this.releaseList([paras]);\n } else {\n $.each(paras, (idx, para) => {\n $(para).css('marginLeft', (idx, val) => {\n val = (parseInt(val, 10) || 0);\n return val > 25 ? val - 25 : '';\n });\n });\n }\n });\n\n rng.select();\n }\n\n /**\n * toggle list\n *\n * @param {String} listName - OL or UL\n */\n toggleList(listName, editable) {\n const rng = range.create(editable).wrapBodyInlineWithPara();\n\n let paras = rng.nodes(dom.isPara, { includeAncestor: true });\n const bookmark = rng.paraBookmark(paras);\n const clustereds = lists.clusterBy(paras, func.peq2('parentNode'));\n\n // paragraph to list\n if (lists.find(paras, dom.isPurePara)) {\n let wrappedParas = [];\n $.each(clustereds, (idx, paras) => {\n wrappedParas = wrappedParas.concat(this.wrapList(paras, listName));\n });\n paras = wrappedParas;\n // list to paragraph or change list style\n } else {\n const diffLists = rng.nodes(dom.isList, {\n includeAncestor: true,\n }).filter((listNode) => {\n return !$.nodeName(listNode, listName);\n });\n\n if (diffLists.length) {\n $.each(diffLists, (idx, listNode) => {\n dom.replace(listNode, listName);\n });\n } else {\n paras = this.releaseList(clustereds, true);\n }\n }\n\n range.createFromParaBookmark(bookmark, paras).select();\n }\n\n /**\n * @param {Node[]} paras\n * @param {String} listName\n * @return {Node[]}\n */\n wrapList(paras, listName) {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const prevList = dom.isList(head.previousSibling) && head.previousSibling;\n const nextList = dom.isList(last.nextSibling) && last.nextSibling;\n\n const listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last);\n\n // P to LI\n paras = paras.map((para) => {\n return dom.isPurePara(para) ? dom.replace(para, 'LI') : para;\n });\n\n // append to list(<ul>, <ol>)\n dom.appendChildNodes(listNode, paras);\n\n if (nextList) {\n dom.appendChildNodes(listNode, lists.from(nextList.childNodes));\n dom.remove(nextList);\n }\n\n return paras;\n }\n\n /**\n * @method releaseList\n *\n * @param {Array[]} clustereds\n * @param {Boolean} isEscapseToBody\n * @return {Node[]}\n */\n releaseList(clustereds, isEscapseToBody) {\n let releasedParas = [];\n\n $.each(clustereds, (idx, paras) => {\n const head = lists.head(paras);\n const last = lists.last(paras);\n\n const headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : head.parentNode;\n const parentItem = headList.parentNode;\n\n if (headList.parentNode.nodeName === 'LI') {\n paras.map(para => {\n const newList = this.findNextSiblings(para);\n\n if (parentItem.nextSibling) {\n parentItem.parentNode.insertBefore(\n para,\n parentItem.nextSibling\n );\n } else {\n parentItem.parentNode.appendChild(para);\n }\n\n if (newList.length) {\n this.wrapList(newList, headList.nodeName);\n para.appendChild(newList[0].parentNode);\n }\n });\n\n if (headList.children.length === 0) {\n parentItem.removeChild(headList);\n }\n\n if (parentItem.childNodes.length === 0) {\n parentItem.parentNode.removeChild(parentItem);\n }\n } else {\n const lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, {\n node: last.parentNode,\n offset: dom.position(last) + 1,\n }, {\n isSkipPaddingBlankHTML: true,\n }) : null;\n\n const middleList = dom.splitTree(headList, {\n node: head.parentNode,\n offset: dom.position(head),\n }, {\n isSkipPaddingBlankHTML: true,\n });\n\n paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi)\n : lists.from(middleList.childNodes).filter(dom.isLi);\n\n // LI to P\n if (isEscapseToBody || !dom.isList(headList.parentNode)) {\n paras = paras.map((para) => {\n return dom.replace(para, 'P');\n });\n }\n\n $.each(lists.from(paras).reverse(), (idx, para) => {\n dom.insertAfter(para, headList);\n });\n\n // remove empty lists\n const rootLists = lists.compact([headList, middleList, lastList]);\n $.each(rootLists, (idx, rootList) => {\n const listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList));\n $.each(listNodes.reverse(), (idx, listNode) => {\n if (!dom.nodeLength(listNode)) {\n dom.remove(listNode, true);\n }\n });\n });\n }\n\n releasedParas = releasedParas.concat(paras);\n });\n\n return releasedParas;\n }\n\n /**\n * @method appendToPrevious\n *\n * Appends list to previous list item, if\n * none exist it wraps the list in a new list item.\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n appendToPrevious(node) {\n return node.previousSibling\n ? dom.appendChildNodes(node.previousSibling, [node])\n : this.wrapList([node], 'LI');\n }\n\n /**\n * @method findList\n *\n * Finds an existing list in list item\n *\n * @param {HTMLNode} ListItem\n * @return {Array[]}\n */\n findList(node) {\n return node\n ? lists.find(node.children, child => ['OL', 'UL'].indexOf(child.nodeName) > -1)\n : null;\n }\n\n /**\n * @method findNextSiblings\n *\n * Finds all list item siblings that follow it\n *\n * @param {HTMLNode} ListItem\n * @return {HTMLNode}\n */\n findNextSiblings(node) {\n const siblings = [];\n while (node.nextSibling) {\n siblings.push(node.nextSibling);\n node = node.nextSibling;\n }\n return siblings;\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport Bullet from '../editing/Bullet';\n\n/**\n * @class editing.Typing\n *\n * Typing\n *\n */\nexport default class Typing {\n constructor(context) {\n // a Bullet instance to toggle lists off\n this.bullet = new Bullet();\n this.options = context.options;\n }\n\n /**\n * insert tab\n *\n * @param {WrappedRange} rng\n * @param {Number} tabsize\n */\n insertTab(rng, tabsize) {\n const tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR));\n rng = rng.deleteContents();\n rng.insertNode(tab, true);\n\n rng = range.create(tab, tabsize);\n rng.select();\n }\n\n /**\n * insert paragraph\n *\n * @param {jQuery} $editable\n * @param {WrappedRange} rng Can be used in unit tests to \"mock\" the range\n *\n * blockquoteBreakingLevel\n * 0 - No break, the new paragraph remains inside the quote\n * 1 - Break the first blockquote in the ancestors list\n * 2 - Break all blockquotes, so that the new paragraph is not quoted (this is the default)\n */\n insertParagraph(editable, rng) {\n rng = rng || range.create(editable);\n\n // deleteContents on range.\n rng = rng.deleteContents();\n\n // Wrap range if it needs to be wrapped by paragraph\n rng = rng.wrapBodyInlineWithPara();\n\n // finding paragraph\n const splitRoot = dom.ancestor(rng.sc, dom.isPara);\n\n let nextPara;\n // on paragraph: split paragraph\n if (splitRoot) {\n // if it is an empty line with li\n if (dom.isLi(splitRoot) && (dom.isEmpty(splitRoot) || dom.deepestChildIsEmpty(splitRoot))) {\n // toggle UL/OL and escape\n this.bullet.toggleList(splitRoot.parentNode.nodeName);\n return;\n } else {\n let blockquote = null;\n if (this.options.blockquoteBreakingLevel === 1) {\n blockquote = dom.ancestor(splitRoot, dom.isBlockquote);\n } else if (this.options.blockquoteBreakingLevel === 2) {\n blockquote = dom.lastAncestor(splitRoot, dom.isBlockquote);\n }\n\n if (blockquote) {\n // We're inside a blockquote and options ask us to break it\n nextPara = $(dom.emptyPara)[0];\n // If the split is right before a <br>, remove it so that there's no \"empty line\"\n // after the split in the new blockquote created\n if (dom.isRightEdgePoint(rng.getStartPoint()) && dom.isBR(rng.sc.nextSibling)) {\n $(rng.sc.nextSibling).remove();\n }\n const split = dom.splitTree(blockquote, rng.getStartPoint(), { isDiscardEmptySplits: true });\n if (split) {\n split.parentNode.insertBefore(nextPara, split);\n } else {\n dom.insertAfter(nextPara, blockquote); // There's no split if we were at the end of the blockquote\n }\n } else {\n nextPara = dom.splitTree(splitRoot, rng.getStartPoint());\n\n // not a blockquote, just insert the paragraph\n let emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor);\n emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor));\n\n $.each(emptyAnchors, (idx, anchor) => {\n dom.remove(anchor);\n });\n\n // replace empty heading, pre or custom-made styleTag with P tag\n if ((dom.isHeading(nextPara) || dom.isPre(nextPara) || dom.isCustomStyleTag(nextPara)) && dom.isEmpty(nextPara)) {\n nextPara = dom.replace(nextPara, 'p');\n }\n }\n }\n // no paragraph: insert empty paragraph\n } else {\n const next = rng.sc.childNodes[rng.so];\n nextPara = $(dom.emptyPara)[0];\n if (next) {\n rng.sc.insertBefore(nextPara, next);\n } else {\n rng.sc.appendChild(nextPara);\n }\n }\n\n range.create(nextPara, 0).normalize().select().scrollIntoView(editable);\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport lists from '../core/lists';\n\n/**\n * @class Create a virtual table to create what actions to do in change.\n * @param {object} startPoint Cell selected to apply change.\n * @param {enum} where Where change will be applied Row or Col. Use enum: TableResultAction.where\n * @param {enum} action Action to be applied. Use enum: TableResultAction.requestAction\n * @param {object} domTable Dom element of table to make changes.\n */\nconst TableResultAction = function(startPoint, where, action, domTable) {\n const _startPoint = { 'colPos': 0, 'rowPos': 0 };\n const _virtualTable = [];\n const _actionCellList = [];\n\n /// ///////////////////////////////////////////\n // Private functions\n /// ///////////////////////////////////////////\n\n /**\n * Set the startPoint of action.\n */\n function setStartPoint() {\n if (!startPoint || !startPoint.tagName || (startPoint.tagName.toLowerCase() !== 'td' && startPoint.tagName.toLowerCase() !== 'th')) {\n // Impossible to identify start Cell point\n return;\n }\n _startPoint.colPos = startPoint.cellIndex;\n if (!startPoint.parentElement || !startPoint.parentElement.tagName || startPoint.parentElement.tagName.toLowerCase() !== 'tr') {\n // Impossible to identify start Row point\n return;\n }\n _startPoint.rowPos = startPoint.parentElement.rowIndex;\n }\n\n /**\n * Define virtual table position info object.\n *\n * @param {int} rowIndex Index position in line of virtual table.\n * @param {int} cellIndex Index position in column of virtual table.\n * @param {object} baseRow Row affected by this position.\n * @param {object} baseCell Cell affected by this position.\n * @param {bool} isSpan Inform if it is an span cell/row.\n */\n function setVirtualTablePosition(rowIndex, cellIndex, baseRow, baseCell, isRowSpan, isColSpan, isVirtualCell) {\n const objPosition = {\n 'baseRow': baseRow,\n 'baseCell': baseCell,\n 'isRowSpan': isRowSpan,\n 'isColSpan': isColSpan,\n 'isVirtual': isVirtualCell,\n };\n if (!_virtualTable[rowIndex]) {\n _virtualTable[rowIndex] = [];\n }\n _virtualTable[rowIndex][cellIndex] = objPosition;\n }\n\n /**\n * Create action cell object.\n *\n * @param {object} virtualTableCellObj Object of specific position on virtual table.\n * @param {enum} resultAction Action to be applied in that item.\n */\n function getActionCell(virtualTableCellObj, resultAction, virtualRowPosition, virtualColPosition) {\n return {\n 'baseCell': virtualTableCellObj.baseCell,\n 'action': resultAction,\n 'virtualTable': {\n 'rowIndex': virtualRowPosition,\n 'cellIndex': virtualColPosition,\n },\n };\n }\n\n /**\n * Recover free index of row to append Cell.\n *\n * @param {int} rowIndex Index of row to find free space.\n * @param {int} cellIndex Index of cell to find free space in table.\n */\n function recoverCellIndex(rowIndex, cellIndex) {\n if (!_virtualTable[rowIndex]) {\n return cellIndex;\n }\n if (!_virtualTable[rowIndex][cellIndex]) {\n return cellIndex;\n }\n\n let newCellIndex = cellIndex;\n while (_virtualTable[rowIndex][newCellIndex]) {\n newCellIndex++;\n if (!_virtualTable[rowIndex][newCellIndex]) {\n return newCellIndex;\n }\n }\n }\n\n /**\n * Recover info about row and cell and add information to virtual table.\n *\n * @param {object} row Row to recover information.\n * @param {object} cell Cell to recover information.\n */\n function addCellInfoToVirtual(row, cell) {\n const cellIndex = recoverCellIndex(row.rowIndex, cell.cellIndex);\n const cellHasColspan = (cell.colSpan > 1);\n const cellHasRowspan = (cell.rowSpan > 1);\n const isThisSelectedCell = (row.rowIndex === _startPoint.rowPos && cell.cellIndex === _startPoint.colPos);\n setVirtualTablePosition(row.rowIndex, cellIndex, row, cell, cellHasRowspan, cellHasColspan, false);\n\n // Add span rows to virtual Table.\n const rowspanNumber = cell.attributes.rowSpan ? parseInt(cell.attributes.rowSpan.value, 10) : 0;\n if (rowspanNumber > 1) {\n for (let rp = 1; rp < rowspanNumber; rp++) {\n const rowspanIndex = row.rowIndex + rp;\n adjustStartPoint(rowspanIndex, cellIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(rowspanIndex, cellIndex, row, cell, true, cellHasColspan, true);\n }\n }\n\n // Add span cols to virtual table.\n const colspanNumber = cell.attributes.colSpan ? parseInt(cell.attributes.colSpan.value, 10) : 0;\n if (colspanNumber > 1) {\n for (let cp = 1; cp < colspanNumber; cp++) {\n const cellspanIndex = recoverCellIndex(row.rowIndex, (cellIndex + cp));\n adjustStartPoint(row.rowIndex, cellspanIndex, cell, isThisSelectedCell);\n setVirtualTablePosition(row.rowIndex, cellspanIndex, row, cell, cellHasRowspan, true, true);\n }\n }\n }\n\n /**\n * Process validation and adjust of start point if needed\n *\n * @param {int} rowIndex\n * @param {int} cellIndex\n * @param {object} cell\n * @param {bool} isSelectedCell\n */\n function adjustStartPoint(rowIndex, cellIndex, cell, isSelectedCell) {\n if (rowIndex === _startPoint.rowPos && _startPoint.colPos >= cell.cellIndex && cell.cellIndex <= cellIndex && !isSelectedCell) {\n _startPoint.colPos++;\n }\n }\n\n /**\n * Create virtual table of cells with all cells, including span cells.\n */\n function createVirtualTable() {\n const rows = domTable.rows;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n const cells = rows[rowIndex].cells;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n addCellInfoToVirtual(rows[rowIndex], cells[cellIndex]);\n }\n }\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getDeleteResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n case TableResultAction.where.Row:\n if (!cell.isVirtual && cell.isRowSpan) {\n return TableResultAction.resultAction.AddCell;\n } else if (cell.isRowSpan) {\n return TableResultAction.resultAction.SubtractSpanCount;\n }\n break;\n }\n return TableResultAction.resultAction.RemoveCell;\n }\n\n /**\n * Get action to be applied on the cell.\n *\n * @param {object} cell virtual table cell to apply action\n */\n function getAddResultActionToCell(cell) {\n switch (where) {\n case TableResultAction.where.Column:\n if (cell.isColSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isRowSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n case TableResultAction.where.Row:\n if (cell.isRowSpan) {\n return TableResultAction.resultAction.SumSpanCount;\n } else if (cell.isColSpan && cell.isVirtual) {\n return TableResultAction.resultAction.Ignore;\n }\n break;\n }\n return TableResultAction.resultAction.AddCell;\n }\n\n function init() {\n setStartPoint();\n createVirtualTable();\n }\n\n /// ///////////////////////////////////////////\n // Public functions\n /// ///////////////////////////////////////////\n\n /**\n * Recover array os what to do in table.\n */\n this.getActionList = function() {\n const fixedRow = (where === TableResultAction.where.Row) ? _startPoint.rowPos : -1;\n const fixedCol = (where === TableResultAction.where.Column) ? _startPoint.colPos : -1;\n\n let actualPosition = 0;\n let canContinue = true;\n while (canContinue) {\n const rowPosition = (fixedRow >= 0) ? fixedRow : actualPosition;\n const colPosition = (fixedCol >= 0) ? fixedCol : actualPosition;\n const row = _virtualTable[rowPosition];\n if (!row) {\n canContinue = false;\n return _actionCellList;\n }\n const cell = row[colPosition];\n if (!cell) {\n canContinue = false;\n return _actionCellList;\n }\n\n // Define action to be applied in this cell\n let resultAction = TableResultAction.resultAction.Ignore;\n switch (action) {\n case TableResultAction.requestAction.Add:\n resultAction = getAddResultActionToCell(cell);\n break;\n case TableResultAction.requestAction.Delete:\n resultAction = getDeleteResultActionToCell(cell);\n break;\n }\n _actionCellList.push(getActionCell(cell, resultAction, rowPosition, colPosition));\n actualPosition++;\n }\n\n return _actionCellList;\n };\n\n init();\n};\n/**\n*\n* Where action occours enum.\n*/\nTableResultAction.where = { 'Row': 0, 'Column': 1 };\n/**\n*\n* Requested action to apply enum.\n*/\nTableResultAction.requestAction = { 'Add': 0, 'Delete': 1 };\n/**\n*\n* Result action to be executed enum.\n*/\nTableResultAction.resultAction = { 'Ignore': 0, 'SubtractSpanCount': 1, 'RemoveCell': 2, 'AddCell': 3, 'SumSpanCount': 4 };\n\n/**\n *\n * @class editing.Table\n *\n * Table\n *\n */\nexport default class Table {\n /**\n * handle tab key\n *\n * @param {WrappedRange} rng\n * @param {Boolean} isShift\n */\n tab(rng, isShift) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const table = dom.ancestor(cell, dom.isTable);\n const cells = dom.listDescendant(table, dom.isCell);\n\n const nextCell = lists[isShift ? 'prev' : 'next'](cells, cell);\n if (nextCell) {\n range.create(nextCell, 0).select();\n }\n }\n\n /**\n * Add a new row\n *\n * @param {WrappedRange} rng\n * @param {String} position (top/bottom)\n * @return {Node}\n */\n addRow(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n\n const currentTr = $(cell).closest('tr');\n const trAttributes = this.recoverAttributes(currentTr);\n const html = $('<tr' + trAttributes + '></tr>');\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Add, $(currentTr).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let idCell = 0; idCell < actions.length; idCell++) {\n const currentCell = actions[idCell];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n html.append('<td' + tdAttributes + '>' + dom.blank + '</td>');\n break;\n case TableResultAction.resultAction.SumSpanCount:\n {\n if (position === 'top') {\n const baseCellTr = currentCell.baseCell.parent;\n const isTopFromRowSpan = (!baseCellTr ? 0 : currentCell.baseCell.closest('tr').rowIndex) <= currentTr[0].rowIndex;\n if (isTopFromRowSpan) {\n const newTd = $('<div></div>').append($('<td' + tdAttributes + '>' + dom.blank + '</td>').removeAttr('rowspan')).html();\n html.append(newTd);\n break;\n }\n }\n let rowspanNumber = parseInt(currentCell.baseCell.rowSpan, 10);\n rowspanNumber++;\n currentCell.baseCell.setAttribute('rowSpan', rowspanNumber);\n }\n break;\n }\n }\n\n if (position === 'top') {\n currentTr.before(html);\n } else {\n const cellHasRowspan = (cell.rowSpan > 1);\n if (cellHasRowspan) {\n const lastTrIndex = currentTr[0].rowIndex + (cell.rowSpan - 2);\n $($(currentTr).parent().find('tr')[lastTrIndex]).after($(html));\n return;\n }\n currentTr.after(html);\n }\n }\n\n /**\n * Add a new col\n *\n * @param {WrappedRange} rng\n * @param {String} position (left/right)\n * @return {Node}\n */\n addCol(rng, position) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const rowsGroup = $(row).siblings();\n rowsGroup.push(row);\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Add, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n const currentCell = actions[actionIndex];\n const tdAttributes = this.recoverAttributes(currentCell.baseCell);\n switch (currentCell.action) {\n case TableResultAction.resultAction.AddCell:\n if (position === 'right') {\n $(currentCell.baseCell).after('<td' + tdAttributes + '>' + dom.blank + '</td>');\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n case TableResultAction.resultAction.SumSpanCount:\n if (position === 'right') {\n let colspanNumber = parseInt(currentCell.baseCell.colSpan, 10);\n colspanNumber++;\n currentCell.baseCell.setAttribute('colSpan', colspanNumber);\n } else {\n $(currentCell.baseCell).before('<td' + tdAttributes + '>' + dom.blank + '</td>');\n }\n break;\n }\n }\n }\n\n /*\n * Copy attributes from element.\n *\n * @param {object} Element to recover attributes.\n * @return {string} Copied string elements.\n */\n recoverAttributes(el) {\n let resultStr = '';\n\n if (!el) {\n return resultStr;\n }\n\n const attrList = el.attributes || [];\n\n for (let i = 0; i < attrList.length; i++) {\n if (attrList[i].name.toLowerCase() === 'id') {\n continue;\n }\n\n if (attrList[i].specified) {\n resultStr += ' ' + attrList[i].name + '=\\'' + attrList[i].value + '\\'';\n }\n }\n\n return resultStr;\n }\n\n /**\n * Delete current row\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteRow(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n const rowPos = row[0].rowIndex;\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Row,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n\n const baseCell = actions[actionIndex].baseCell;\n const virtualPosition = actions[actionIndex].virtualTable;\n const hasRowspan = (baseCell.rowSpan && baseCell.rowSpan > 1);\n let rowspanNumber = (hasRowspan) ? parseInt(baseCell.rowSpan, 10) : 0;\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.AddCell:\n {\n const nextRow = row.next('tr')[0];\n if (!nextRow) { continue; }\n const cloneRow = row[0].cells[cellPos];\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].setAttribute('rowSpan', rowspanNumber);\n nextRow.cells[cellPos].innerHTML = '';\n } else if (rowspanNumber === 2) {\n nextRow.insertBefore(cloneRow, nextRow.cells[cellPos]);\n nextRow.cells[cellPos].removeAttribute('rowSpan');\n nextRow.cells[cellPos].innerHTML = '';\n }\n }\n }\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n if (hasRowspan) {\n if (rowspanNumber > 2) {\n rowspanNumber--;\n baseCell.setAttribute('rowSpan', rowspanNumber);\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (rowspanNumber === 2) {\n baseCell.removeAttribute('rowSpan');\n if (virtualPosition.rowIndex !== rowPos && baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n // Do not need remove cell because row will be deleted.\n continue;\n }\n }\n row.remove();\n }\n\n /**\n * Delete current col\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteCol(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n const row = $(cell).closest('tr');\n const cellPos = row.children('td, th').index($(cell));\n\n const vTable = new TableResultAction(cell, TableResultAction.where.Column,\n TableResultAction.requestAction.Delete, $(row).closest('table')[0]);\n const actions = vTable.getActionList();\n\n for (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n if (!actions[actionIndex]) {\n continue;\n }\n switch (actions[actionIndex].action) {\n case TableResultAction.resultAction.Ignore:\n continue;\n case TableResultAction.resultAction.SubtractSpanCount:\n {\n const baseCell = actions[actionIndex].baseCell;\n const hasColspan = (baseCell.colSpan && baseCell.colSpan > 1);\n if (hasColspan) {\n let colspanNumber = (baseCell.colSpan) ? parseInt(baseCell.colSpan, 10) : 0;\n if (colspanNumber > 2) {\n colspanNumber--;\n baseCell.setAttribute('colSpan', colspanNumber);\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n } else if (colspanNumber === 2) {\n baseCell.removeAttribute('colSpan');\n if (baseCell.cellIndex === cellPos) { baseCell.innerHTML = ''; }\n }\n }\n }\n continue;\n case TableResultAction.resultAction.RemoveCell:\n dom.remove(actions[actionIndex].baseCell, true);\n continue;\n }\n }\n }\n\n /**\n * create empty table element\n *\n * @param {Number} rowCount\n * @param {Number} colCount\n * @return {Node}\n */\n createTable(colCount, rowCount, options) {\n const tds = [];\n let tdHTML;\n for (let idxCol = 0; idxCol < colCount; idxCol++) {\n tds.push('<td>' + dom.blank + '</td>');\n }\n tdHTML = tds.join('');\n\n const trs = [];\n let trHTML;\n for (let idxRow = 0; idxRow < rowCount; idxRow++) {\n trs.push('<tr>' + tdHTML + '</tr>');\n }\n trHTML = trs.join('');\n const $table = $('<table>' + trHTML + '</table>');\n if (options && options.tableClassName) {\n $table.addClass(options.tableClassName);\n }\n\n return $table[0];\n }\n\n /**\n * Delete current table\n *\n * @param {WrappedRange} rng\n * @return {Node}\n */\n deleteTable(rng) {\n const cell = dom.ancestor(rng.commonAncestor(), dom.isCell);\n $(cell).closest('table').remove();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport { readFileAsDataURL, createImage } from '../core/async';\nimport History from '../editing/History';\nimport Style from '../editing/Style';\nimport Typing from '../editing/Typing';\nimport Table from '../editing/Table';\nimport Bullet from '../editing/Bullet';\n\nconst KEY_BOGUS = 'bogus';\n\n/**\n * @class Editor\n */\nexport default class Editor {\n constructor(context) {\n this.context = context;\n\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.editable = this.$editable[0];\n this.lastRange = null;\n this.snapshot = null;\n\n this.style = new Style();\n this.table = new Table();\n this.typing = new Typing(context);\n this.bullet = new Bullet();\n this.history = new History(context);\n\n this.context.memo('help.escape', this.lang.help.escape);\n this.context.memo('help.undo', this.lang.help.undo);\n this.context.memo('help.redo', this.lang.help.redo);\n this.context.memo('help.tab', this.lang.help.tab);\n this.context.memo('help.untab', this.lang.help.untab);\n this.context.memo('help.insertParagraph', this.lang.help.insertParagraph);\n this.context.memo('help.insertOrderedList', this.lang.help.insertOrderedList);\n this.context.memo('help.insertUnorderedList', this.lang.help.insertUnorderedList);\n this.context.memo('help.indent', this.lang.help.indent);\n this.context.memo('help.outdent', this.lang.help.outdent);\n this.context.memo('help.formatPara', this.lang.help.formatPara);\n this.context.memo('help.insertHorizontalRule', this.lang.help.insertHorizontalRule);\n this.context.memo('help.fontName', this.lang.help.fontName);\n\n // native commands(with execCommand), generate function for execCommand\n const commands = [\n 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript',\n 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull',\n 'formatBlock', 'removeFormat', 'backColor',\n ];\n\n for (let idx = 0, len = commands.length; idx < len; idx++) {\n this[commands[idx]] = ((sCmd) => {\n return (value) => {\n this.beforeCommand();\n document.execCommand(sCmd, false, value);\n this.afterCommand(true);\n };\n })(commands[idx]);\n this.context.memo('help.' + commands[idx], this.lang.help[commands[idx]]);\n }\n\n this.fontName = this.wrapCommand((value) => {\n return this.fontStyling('font-family', env.validFontName(value));\n });\n\n this.fontSize = this.wrapCommand((value) => {\n const unit = this.currentStyle()['font-size-unit'];\n return this.fontStyling('font-size', value + unit);\n });\n\n this.fontSizeUnit = this.wrapCommand((value) => {\n const size = this.currentStyle()['font-size'];\n return this.fontStyling('font-size', size + value);\n });\n\n for (let idx = 1; idx <= 6; idx++) {\n this['formatH' + idx] = ((idx) => {\n return () => {\n this.formatBlock('H' + idx);\n };\n })(idx);\n this.context.memo('help.formatH' + idx, this.lang.help['formatH' + idx]);\n }\n\n this.insertParagraph = this.wrapCommand(() => {\n this.typing.insertParagraph(this.editable);\n });\n\n this.insertOrderedList = this.wrapCommand(() => {\n this.bullet.insertOrderedList(this.editable);\n });\n\n this.insertUnorderedList = this.wrapCommand(() => {\n this.bullet.insertUnorderedList(this.editable);\n });\n\n this.indent = this.wrapCommand(() => {\n this.bullet.indent(this.editable);\n });\n\n this.outdent = this.wrapCommand(() => {\n this.bullet.outdent(this.editable);\n });\n\n /**\n * insertNode\n * insert node\n * @param {Node} node\n */\n this.insertNode = this.wrapCommand((node) => {\n if (this.isLimited($(node).text().length)) {\n return;\n }\n const rng = this.getLastRange();\n rng.insertNode(node);\n this.setLastRange(range.createFromNodeAfter(node).select());\n });\n\n /**\n * insert text\n * @param {String} text\n */\n this.insertText = this.wrapCommand((text) => {\n if (this.isLimited(text.length)) {\n return;\n }\n const rng = this.getLastRange();\n const textNode = rng.insertNode(dom.createText(text));\n this.setLastRange(range.create(textNode, dom.nodeLength(textNode)).select());\n });\n\n /**\n * paste HTML\n * @param {String} markup\n */\n this.pasteHTML = this.wrapCommand((markup) => {\n if (this.isLimited(markup.length)) {\n return;\n }\n markup = this.context.invoke('codeview.purify', markup);\n const contents = this.getLastRange().pasteHTML(markup);\n this.setLastRange(range.createFromNodeAfter(lists.last(contents)).select());\n });\n\n /**\n * formatBlock\n *\n * @param {String} tagName\n */\n this.formatBlock = this.wrapCommand((tagName, $target) => {\n const onApplyCustomStyle = this.options.callbacks.onApplyCustomStyle;\n if (onApplyCustomStyle) {\n onApplyCustomStyle.call(this, $target, this.context, this.onFormatBlock);\n } else {\n this.onFormatBlock(tagName, $target);\n }\n });\n\n /**\n * insert horizontal rule\n */\n this.insertHorizontalRule = this.wrapCommand(() => {\n const hrNode = this.getLastRange().insertNode(dom.create('HR'));\n if (hrNode.nextSibling) {\n this.setLastRange(range.create(hrNode.nextSibling, 0).normalize().select());\n }\n });\n\n /**\n * lineHeight\n * @param {String} value\n */\n this.lineHeight = this.wrapCommand((value) => {\n this.style.stylePara(this.getLastRange(), {\n lineHeight: value,\n });\n });\n\n /**\n * create link (command)\n *\n * @param {Object} linkInfo\n */\n this.createLink = this.wrapCommand((linkInfo) => {\n let linkUrl = linkInfo.url;\n const linkText = linkInfo.text;\n const isNewWindow = linkInfo.isNewWindow;\n const checkProtocol = linkInfo.checkProtocol;\n let rng = linkInfo.range || this.getLastRange();\n const additionalTextLength = linkText.length - rng.toString().length;\n if (additionalTextLength > 0 && this.isLimited(additionalTextLength)) {\n return;\n }\n const isTextChanged = rng.toString() !== linkText;\n\n // handle spaced urls from input\n if (typeof linkUrl === 'string') {\n linkUrl = linkUrl.trim();\n }\n\n if (this.options.onCreateLink) {\n linkUrl = this.options.onCreateLink(linkUrl);\n } else if (checkProtocol) {\n // if url doesn't have any protocol and not even a relative or a label, use http:// as default\n linkUrl = /^([A-Za-z][A-Za-z0-9+-.]*\\:|#|\\/)/.test(linkUrl)\n ? linkUrl : this.options.defaultProtocol + linkUrl;\n }\n\n let anchors = [];\n if (isTextChanged) {\n rng = rng.deleteContents();\n const anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]);\n anchors.push(anchor);\n } else {\n anchors = this.style.styleNodes(rng, {\n nodeName: 'A',\n expandClosestSibling: true,\n onlyPartialContains: true,\n });\n }\n\n $.each(anchors, (idx, anchor) => {\n $(anchor).attr('href', linkUrl);\n if (isNewWindow) {\n $(anchor).attr('target', '_blank');\n } else {\n $(anchor).removeAttr('target');\n }\n });\n\n this.setLastRange(\n this.createRangeFromList(anchors).select()\n );\n });\n\n /**\n * setting color\n *\n * @param {Object} sObjColor color code\n * @param {String} sObjColor.foreColor foreground color\n * @param {String} sObjColor.backColor background color\n */\n this.color = this.wrapCommand((colorInfo) => {\n const foreColor = colorInfo.foreColor;\n const backColor = colorInfo.backColor;\n\n if (foreColor) { document.execCommand('foreColor', false, foreColor); }\n if (backColor) { document.execCommand('backColor', false, backColor); }\n });\n\n /**\n * Set foreground color\n *\n * @param {String} colorCode foreground color code\n */\n this.foreColor = this.wrapCommand((colorInfo) => {\n document.execCommand('foreColor', false, colorInfo);\n });\n\n /**\n * insert Table\n *\n * @param {String} dimension of table (ex : \"5x5\")\n */\n this.insertTable = this.wrapCommand((dim) => {\n const dimension = dim.split('x');\n\n const rng = this.getLastRange().deleteContents();\n rng.insertNode(this.table.createTable(dimension[0], dimension[1], this.options));\n });\n\n /**\n * remove media object and Figure Elements if media object is img with Figure.\n */\n this.removeMedia = this.wrapCommand(() => {\n let $target = $(this.restoreTarget()).parent();\n if ($target.closest('figure').length) {\n $target.closest('figure').remove();\n } else {\n $target = $(this.restoreTarget()).detach();\n }\n this.context.triggerEvent('media.delete', $target, this.$editable);\n });\n\n /**\n * float me\n *\n * @param {String} value\n */\n this.floatMe = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n $target.toggleClass('note-float-left', value === 'left');\n $target.toggleClass('note-float-right', value === 'right');\n $target.css('float', (value === 'none' ? '' : value));\n });\n\n /**\n * resize overlay element\n * @param {String} value\n */\n this.resize = this.wrapCommand((value) => {\n const $target = $(this.restoreTarget());\n value = parseFloat(value);\n if (value === 0) {\n $target.css('width', '');\n } else {\n $target.css({\n width: value * 100 + '%',\n height: '',\n });\n }\n });\n }\n\n initialize() {\n // bind custom events\n this.$editable.on('keydown', (event) => {\n if (event.keyCode === key.code.ENTER) {\n this.context.triggerEvent('enter', event);\n }\n this.context.triggerEvent('keydown', event);\n\n // keep a snapshot to limit text on input event\n this.snapshot = this.history.makeSnapshot();\n this.hasKeyShortCut = false;\n if (!event.isDefaultPrevented()) {\n if (this.options.shortcuts) {\n this.hasKeyShortCut = this.handleKeyMap(event);\n } else {\n this.preventDefaultEditableShortCuts(event);\n }\n }\n if (this.isLimited(1, event)) {\n const lastRange = this.getLastRange();\n if (lastRange.eo - lastRange.so === 0) {\n return false;\n }\n }\n this.setLastRange();\n\n // record undo in the key event except keyMap.\n if (this.options.recordEveryKeystroke) {\n if (this.hasKeyShortCut === false) {\n this.history.recordUndo();\n }\n }\n }).on('keyup', (event) => {\n this.setLastRange();\n this.context.triggerEvent('keyup', event);\n }).on('focus', (event) => {\n this.setLastRange();\n this.context.triggerEvent('focus', event);\n }).on('blur', (event) => {\n this.context.triggerEvent('blur', event);\n }).on('mousedown', (event) => {\n this.context.triggerEvent('mousedown', event);\n }).on('mouseup', (event) => {\n this.setLastRange();\n this.history.recordUndo();\n this.context.triggerEvent('mouseup', event);\n }).on('scroll', (event) => {\n this.context.triggerEvent('scroll', event);\n }).on('paste', (event) => {\n this.setLastRange();\n this.context.triggerEvent('paste', event);\n }).on('input', () => {\n // To limit composition characters (e.g. Korean)\n if (this.isLimited(0) && this.snapshot) {\n this.history.applySnapshot(this.snapshot);\n }\n });\n\n this.$editable.attr('spellcheck', this.options.spellCheck);\n\n this.$editable.attr('autocorrect', this.options.spellCheck);\n\n if (this.options.disableGrammar) {\n this.$editable.attr('data-gramm', false);\n }\n\n // init content before set event\n this.$editable.html(dom.html(this.$note) || dom.emptyPara);\n\n this.$editable.on(env.inputEventName, func.debounce(() => {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }, 10));\n\n this.$editable.on('focusin', (event) => {\n this.context.triggerEvent('focusin', event);\n }).on('focusout', (event) => {\n this.context.triggerEvent('focusout', event);\n });\n\n if (this.options.airMode) {\n if (this.options.overrideContextMenu) {\n this.$editor.on('contextmenu', (event) => {\n this.context.triggerEvent('contextmenu', event);\n return false;\n });\n }\n } else {\n if (this.options.width) {\n this.$editor.outerWidth(this.options.width);\n }\n if (this.options.height) {\n this.$editable.outerHeight(this.options.height);\n }\n if (this.options.maxHeight) {\n this.$editable.css('max-height', this.options.maxHeight);\n }\n if (this.options.minHeight) {\n this.$editable.css('min-height', this.options.minHeight);\n }\n }\n\n this.history.recordUndo();\n this.setLastRange();\n }\n\n destroy() {\n this.$editable.off();\n }\n\n handleKeyMap(event) {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n const keys = [];\n\n if (event.metaKey) { keys.push('CMD'); }\n if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); }\n if (event.shiftKey) { keys.push('SHIFT'); }\n\n const keyName = key.nameFromCode[event.keyCode];\n if (keyName) {\n keys.push(keyName);\n }\n\n const eventName = keyMap[keys.join('+')];\n\n if (keyName === 'TAB' && !this.options.tabDisable) {\n this.afterCommand();\n } else if (eventName) {\n if (this.context.invoke(eventName) !== false) {\n event.preventDefault();\n // if keyMap action was invoked\n return true;\n }\n } else if (key.isEdit(event.keyCode)) {\n this.afterCommand();\n }\n return false;\n }\n\n preventDefaultEditableShortCuts(event) {\n // B(Bold, 66) / I(Italic, 73) / U(Underline, 85)\n if ((event.ctrlKey || event.metaKey) &&\n lists.contains([66, 73, 85], event.keyCode)) {\n event.preventDefault();\n }\n }\n\n isLimited(pad, event) {\n pad = pad || 0;\n\n if (typeof event !== 'undefined') {\n if (key.isMove(event.keyCode) ||\n key.isNavigation(event.keyCode) ||\n (event.ctrlKey || event.metaKey) ||\n lists.contains([key.code.BACKSPACE, key.code.DELETE], event.keyCode)) {\n return false;\n }\n }\n\n if (this.options.maxTextLength > 0) {\n if ((this.$editable.text().length + pad) > this.options.maxTextLength) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * create range\n * @return {WrappedRange}\n */\n createRange() {\n this.focus();\n this.setLastRange();\n return this.getLastRange();\n }\n\n /**\n * create a new range from the list of elements\n *\n * @param {list} dom element list\n * @return {WrappedRange}\n */\n createRangeFromList(lst) {\n const startRange = range.createFromNodeBefore(lists.head(lst));\n const startPoint = startRange.getStartPoint();\n const endRange = range.createFromNodeAfter(lists.last(lst));\n const endPoint = endRange.getEndPoint();\n\n return range.create(\n startPoint.node,\n startPoint.offset,\n endPoint.node,\n endPoint.offset\n );\n }\n\n /**\n * set the last range\n *\n * if given rng is exist, set rng as the last range\n * or create a new range at the end of the document\n *\n * @param {WrappedRange} rng\n */\n setLastRange(rng) {\n if (rng) {\n this.lastRange = rng;\n } else {\n this.lastRange = range.create(this.editable);\n\n if ($(this.lastRange.sc).closest('.note-editable').length === 0) {\n this.lastRange = range.createFromBodyElement(this.editable);\n }\n }\n }\n\n /**\n * get the last range\n *\n * if there is a saved last range, return it\n * or create a new range and return it\n *\n * @return {WrappedRange}\n */\n getLastRange() {\n if (!this.lastRange) {\n this.setLastRange();\n }\n return this.lastRange;\n }\n\n /**\n * saveRange\n *\n * save current range\n *\n * @param {Boolean} [thenCollapse=false]\n */\n saveRange(thenCollapse) {\n if (thenCollapse) {\n this.getLastRange().collapse().select();\n }\n }\n\n /**\n * restoreRange\n *\n * restore lately range\n */\n restoreRange() {\n if (this.lastRange) {\n this.lastRange.select();\n this.focus();\n }\n }\n\n saveTarget(node) {\n this.$editable.data('target', node);\n }\n\n clearTarget() {\n this.$editable.removeData('target');\n }\n\n restoreTarget() {\n return this.$editable.data('target');\n }\n\n /**\n * currentStyle\n *\n * current style\n * @return {Object|Boolean} unfocus\n */\n currentStyle() {\n let rng = range.create();\n if (rng) {\n rng = rng.normalize();\n }\n return rng ? this.style.current(rng) : this.style.fromNode(this.$editable);\n }\n\n /**\n * style from node\n *\n * @param {jQuery} $node\n * @return {Object}\n */\n styleFromNode($node) {\n return this.style.fromNode($node);\n }\n\n /**\n * undo\n */\n undo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.undo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /*\n * commit\n */\n commit() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.commit();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * redo\n */\n redo() {\n this.context.triggerEvent('before.command', this.$editable.html());\n this.history.redo();\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n /**\n * before command\n */\n beforeCommand() {\n this.context.triggerEvent('before.command', this.$editable.html());\n\n // Set styleWithCSS before run a command\n document.execCommand('styleWithCSS', false, this.options.styleWithCSS);\n\n // keep focus on editable before command execution\n this.focus();\n }\n\n /**\n * after command\n * @param {Boolean} isPreventTrigger\n */\n afterCommand(isPreventTrigger) {\n this.normalizeContent();\n this.history.recordUndo();\n if (!isPreventTrigger) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n }\n\n /**\n * handle tab key\n */\n tab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n\n if (!this.isLimited(this.options.tabSize)) {\n this.beforeCommand();\n this.typing.insertTab(rng, this.options.tabSize);\n this.afterCommand();\n }\n }\n }\n\n /**\n * handle shift+tab key\n */\n untab() {\n const rng = this.getLastRange();\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.table.tab(rng, true);\n } else {\n if (this.options.tabSize === 0) {\n return false;\n }\n }\n }\n\n /**\n * run given function between beforeCommand and afterCommand\n */\n wrapCommand(fn) {\n return function() {\n this.beforeCommand();\n fn.apply(this, arguments);\n this.afterCommand();\n };\n }\n\n /**\n * insert image\n *\n * @param {String} src\n * @param {String|Function} param\n * @return {Promise}\n */\n insertImage(src, param) {\n return createImage(src, param).then(($image) => {\n this.beforeCommand();\n\n if (typeof param === 'function') {\n param($image);\n } else {\n if (typeof param === 'string') {\n $image.attr('data-filename', param);\n }\n $image.css('width', Math.min(this.$editable.width(), $image.width()));\n }\n\n $image.show();\n this.getLastRange().insertNode($image[0]);\n this.setLastRange(range.createFromNodeAfter($image[0]).select());\n this.afterCommand();\n }).fail((e) => {\n this.context.triggerEvent('image.upload.error', e);\n });\n }\n\n /**\n * insertImages\n * @param {File[]} files\n */\n insertImagesAsDataURL(files) {\n $.each(files, (idx, file) => {\n const filename = file.name;\n if (this.options.maximumImageFileSize && this.options.maximumImageFileSize < file.size) {\n this.context.triggerEvent('image.upload.error', this.lang.image.maximumFileSizeError);\n } else {\n readFileAsDataURL(file).then((dataURL) => {\n return this.insertImage(dataURL, filename);\n }).fail(() => {\n this.context.triggerEvent('image.upload.error');\n });\n }\n });\n }\n\n /**\n * insertImagesOrCallback\n * @param {File[]} files\n */\n insertImagesOrCallback(files) {\n const callbacks = this.options.callbacks;\n // If onImageUpload set,\n if (callbacks.onImageUpload) {\n this.context.triggerEvent('image.upload', files);\n // else insert Image as dataURL\n } else {\n this.insertImagesAsDataURL(files);\n }\n }\n\n /**\n * return selected plain text\n * @return {String} text\n */\n getSelectedText() {\n let rng = this.getLastRange();\n\n // if range on anchor, expand range with anchor\n if (rng.isOnAnchor()) {\n rng = range.createFromNode(dom.ancestor(rng.sc, dom.isAnchor));\n }\n\n return rng.toString();\n }\n\n onFormatBlock(tagName, $target) {\n // [workaround] for MSIE, IE need `<`\n document.execCommand('FormatBlock', false, env.isMSIE ? '<' + tagName + '>' : tagName);\n\n // support custom class\n if ($target && $target.length) {\n // find the exact element has given tagName\n if ($target[0].tagName.toUpperCase() !== tagName.toUpperCase()) {\n $target = $target.find(tagName);\n }\n\n if ($target && $target.length) {\n const className = $target[0].className || '';\n if (className) {\n const currentRange = this.createRange();\n\n const $parent = $([currentRange.sc, currentRange.ec]).closest(tagName);\n $parent.addClass(className);\n }\n }\n }\n }\n\n formatPara() {\n this.formatBlock('P');\n }\n\n fontStyling(target, value) {\n const rng = this.getLastRange();\n\n if (rng !== '') {\n const spans = this.style.styleNodes(rng);\n this.$editor.find('.note-status-output').html('');\n $(spans).css(target, value);\n\n // [workaround] added styled bogus span for style\n // - also bogus character needed for cursor position\n if (rng.isCollapsed()) {\n const firstSpan = lists.head(spans);\n if (firstSpan && !dom.nodeLength(firstSpan)) {\n firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR;\n range.createFromNode(firstSpan.firstChild).select();\n this.setLastRange();\n this.$editable.data(KEY_BOGUS, firstSpan);\n }\n } else {\n this.setLastRange(\n this.createRangeFromList(spans).select()\n );\n }\n } else {\n const noteStatusOutput = $.now();\n this.$editor.find('.note-status-output').html('<div id=\"note-status-output-' + noteStatusOutput + '\" class=\"alert alert-info\">' + this.lang.output.noSelection + '</div>');\n setTimeout(function() { $('#note-status-output-' + noteStatusOutput).remove(); }, 5000);\n }\n }\n\n /**\n * unlink\n *\n * @type command\n */\n unlink() {\n let rng = this.getLastRange();\n if (rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n rng = range.createFromNode(anchor);\n rng.select();\n this.setLastRange();\n\n this.beforeCommand();\n document.execCommand('unlink');\n this.afterCommand();\n }\n }\n\n /**\n * returns link info\n *\n * @return {Object}\n * @return {WrappedRange} return.range\n * @return {String} return.text\n * @return {Boolean} [return.isNewWindow=true]\n * @return {String} [return.url=\"\"]\n */\n getLinkInfo() {\n const rng = this.getLastRange().expand(dom.isAnchor);\n // Get the first anchor on range(for edit).\n const $anchor = $(lists.head(rng.nodes(dom.isAnchor)));\n const linkInfo = {\n range: rng,\n text: rng.toString(),\n url: $anchor.length ? $anchor.attr('href') : '',\n };\n\n // When anchor exists,\n if ($anchor.length) {\n // Set isNewWindow by checking its target.\n linkInfo.isNewWindow = $anchor.attr('target') === '_blank';\n }\n\n return linkInfo;\n }\n\n addRow(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addRow(rng, position);\n this.afterCommand();\n }\n }\n\n addCol(position) {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.addCol(rng, position);\n this.afterCommand();\n }\n }\n\n deleteRow() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteRow(rng);\n this.afterCommand();\n }\n }\n\n deleteCol() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteCol(rng);\n this.afterCommand();\n }\n }\n\n deleteTable() {\n const rng = this.getLastRange(this.$editable);\n if (rng.isCollapsed() && rng.isOnCell()) {\n this.beforeCommand();\n this.table.deleteTable(rng);\n this.afterCommand();\n }\n }\n\n /**\n * @param {Position} pos\n * @param {jQuery} $target - target element\n * @param {Boolean} [bKeepRatio] - keep ratio\n */\n resizeTo(pos, $target, bKeepRatio) {\n let imageSize;\n if (bKeepRatio) {\n const newRatio = pos.y / pos.x;\n const ratio = $target.data('ratio');\n imageSize = {\n width: ratio > newRatio ? pos.x : pos.y / ratio,\n height: ratio > newRatio ? pos.x * ratio : pos.y,\n };\n } else {\n imageSize = {\n width: pos.x,\n height: pos.y,\n };\n }\n\n $target.css(imageSize);\n }\n\n /**\n * returns whether editable area has focus or not.\n */\n hasFocus() {\n return this.$editable.is(':focus');\n }\n\n /**\n * set focus\n */\n focus() {\n // [workaround] Screen will move when page is scolled in IE.\n // - do focus when not focused\n if (!this.hasFocus()) {\n this.$editable.focus();\n }\n }\n\n /**\n * returns whether contents is empty or not.\n * @return {Boolean}\n */\n isEmpty() {\n return dom.isEmpty(this.$editable[0]) || dom.emptyPara === this.$editable.html();\n }\n\n /**\n * Removes all contents and restores the editable instance to an _emptyPara_.\n */\n empty() {\n this.context.invoke('code', dom.emptyPara);\n }\n\n /**\n * normalize content\n */\n normalizeContent() {\n this.$editable[0].normalize();\n }\n}\n","import $ from 'jquery';\n\n/**\n * @method readFileAsDataURL\n *\n * read contents of file as representing URL\n *\n * @param {File} file\n * @return {Promise} - then: dataUrl\n */\nexport function readFileAsDataURL(file) {\n return $.Deferred((deferred) => {\n $.extend(new FileReader(), {\n onload: (e) => {\n const dataURL = e.target.result;\n deferred.resolve(dataURL);\n },\n onerror: (err) => {\n deferred.reject(err);\n },\n }).readAsDataURL(file);\n }).promise();\n}\n\n/**\n * @method createImage\n *\n * create `<image>` from url string\n *\n * @param {String} url\n * @return {Promise} - then: $image\n */\nexport function createImage(url) {\n return $.Deferred((deferred) => {\n const $img = $('<img>');\n\n $img.one('load', () => {\n $img.off('error abort');\n deferred.resolve($img);\n }).one('error abort', () => {\n $img.off('load').detach();\n deferred.reject($img);\n }).css({\n display: 'none',\n }).appendTo(document.body).attr('src', url);\n }).promise();\n}\n","import lists from '../core/lists';\n\nexport default class Clipboard {\n constructor(context) {\n this.context = context;\n this.$editable = context.layoutInfo.editable;\n }\n\n initialize() {\n this.$editable.on('paste', this.pasteByEvent.bind(this));\n }\n\n /**\n * paste by clipboard event\n *\n * @param {Event} event\n */\n pasteByEvent(event) {\n const clipboardData = event.originalEvent.clipboardData;\n\n if (clipboardData && clipboardData.items && clipboardData.items.length) {\n const item = clipboardData.items.length > 1 ? clipboardData.items[1] : lists.head(clipboardData.items);\n if (item.kind === 'file' && item.type.indexOf('image/') !== -1) {\n // paste img file\n this.context.invoke('editor.insertImagesOrCallback', [item.getAsFile()]);\n event.preventDefault();\n } else if (item.kind === 'string') {\n // paste text with maxTextLength check\n if (this.context.invoke('editor.isLimited', clipboardData.getData('Text').length)) {\n event.preventDefault();\n }\n }\n } else if (window.clipboardData) {\n // for IE\n let text = window.clipboardData.getData('text');\n if (this.context.invoke('editor.isLimited', text.length)) {\n event.preventDefault();\n }\n }\n // Call editor.afterCommand after proceeding default event handler\n setTimeout(() => {\n this.context.invoke('editor.afterCommand');\n }, 10);\n }\n}\n","import $ from 'jquery';\n\nexport default class Dropzone {\n constructor(context) {\n this.context = context;\n this.$eventListener = $(document);\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.documentEventHandlers = {};\n\n this.$dropzone = $([\n '<div class=\"note-dropzone\">',\n '<div class=\"note-dropzone-message\"></div>',\n '</div>',\n ].join('')).prependTo(this.$editor);\n }\n\n /**\n * attach Drag and Drop Events\n */\n initialize() {\n if (this.options.disableDragAndDrop) {\n // prevent default drop event\n this.documentEventHandlers.onDrop = (e) => {\n e.preventDefault();\n };\n // do not consider outside of dropzone\n this.$eventListener = this.$dropzone;\n this.$eventListener.on('drop', this.documentEventHandlers.onDrop);\n } else {\n this.attachDragAndDropEvent();\n }\n }\n\n /**\n * attach Drag and Drop Events\n */\n attachDragAndDropEvent() {\n let collection = $();\n const $dropzoneMessage = this.$dropzone.find('.note-dropzone-message');\n\n this.documentEventHandlers.onDragenter = (e) => {\n const isCodeview = this.context.invoke('codeview.isActivated');\n const hasEditorSize = this.$editor.width() > 0 && this.$editor.height() > 0;\n if (!isCodeview && !collection.length && hasEditorSize) {\n this.$editor.addClass('dragover');\n this.$dropzone.width(this.$editor.width());\n this.$dropzone.height(this.$editor.height());\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n }\n collection = collection.add(e.target);\n };\n\n this.documentEventHandlers.onDragleave = (e) => {\n collection = collection.not(e.target);\n\n // If nodeName is BODY, then just make it over (fix for IE)\n if (!collection.length || e.target.nodeName === 'BODY') {\n collection = $();\n this.$editor.removeClass('dragover');\n }\n };\n\n this.documentEventHandlers.onDrop = () => {\n collection = $();\n this.$editor.removeClass('dragover');\n };\n\n // show dropzone on dragenter when dragging a object to document\n // -but only if the editor is visible, i.e. has a positive width and height\n this.$eventListener.on('dragenter', this.documentEventHandlers.onDragenter)\n .on('dragleave', this.documentEventHandlers.onDragleave)\n .on('drop', this.documentEventHandlers.onDrop);\n\n // change dropzone's message on hover.\n this.$dropzone.on('dragenter', () => {\n this.$dropzone.addClass('hover');\n $dropzoneMessage.text(this.lang.image.dropImage);\n }).on('dragleave', () => {\n this.$dropzone.removeClass('hover');\n $dropzoneMessage.text(this.lang.image.dragImageHere);\n });\n\n // attach dropImage\n this.$dropzone.on('drop', (event) => {\n const dataTransfer = event.originalEvent.dataTransfer;\n\n // stop the browser from opening the dropped content\n event.preventDefault();\n\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n this.$editable.focus();\n this.context.invoke('editor.insertImagesOrCallback', dataTransfer.files);\n } else {\n $.each(dataTransfer.types, (idx, type) => {\n // skip moz-specific types\n if (type.toLowerCase().indexOf('_moz_') > -1) {\n return;\n }\n const content = dataTransfer.getData(type);\n\n if (type.toLowerCase().indexOf('text') > -1) {\n this.context.invoke('editor.pasteHTML', content);\n } else {\n $(content).each((idx, item) => {\n this.context.invoke('editor.insertNode', item);\n });\n }\n });\n }\n }).on('dragover', false); // prevent default dragover event\n }\n\n destroy() {\n Object.keys(this.documentEventHandlers).forEach((key) => {\n this.$eventListener.off(key.substr(2).toLowerCase(), this.documentEventHandlers[key]);\n });\n this.documentEventHandlers = {};\n }\n}\n","import dom from '../core/dom';\nimport key from '../core/key';\n\n/**\n * @class Codeview\n */\nexport default class CodeView {\n constructor(context) {\n this.context = context;\n this.$editor = context.layoutInfo.editor;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n this.options = context.options;\n this.CodeMirrorConstructor = window.CodeMirror;\n\n if (this.options.codemirror.CodeMirrorConstructor) {\n this.CodeMirrorConstructor = this.options.codemirror.CodeMirrorConstructor;\n }\n }\n\n sync(html) {\n const isCodeview = this.isActivated();\n const CodeMirror = this.CodeMirrorConstructor;\n\n if (isCodeview) {\n if (html) {\n if (CodeMirror) {\n this.$codable.data('cmEditor').getDoc().setValue(html);\n } else {\n this.$codable.val(html);\n }\n } else {\n if (CodeMirror) {\n this.$codable.data('cmEditor').save();\n }\n }\n }\n }\n\n initialize() {\n this.$codable.on('keyup', (event) => {\n if (event.keyCode === key.code.ESCAPE) {\n this.deactivate();\n }\n });\n }\n\n /**\n * @return {Boolean}\n */\n isActivated() {\n return this.$editor.hasClass('codeview');\n }\n\n /**\n * toggle codeview\n */\n toggle() {\n if (this.isActivated()) {\n this.deactivate();\n } else {\n this.activate();\n }\n this.context.triggerEvent('codeview.toggled');\n }\n\n /**\n * purify input value\n * @param value\n * @returns {*}\n */\n purify(value) {\n if (this.options.codeviewFilter) {\n // filter code view regex\n value = value.replace(this.options.codeviewFilterRegex, '');\n // allow specific iframe tag\n if (this.options.codeviewIframeFilter) {\n const whitelist = this.options.codeviewIframeWhitelistSrc.concat(this.options.codeviewIframeWhitelistSrcBase);\n value = value.replace(/(<iframe.*?>.*?(?:<\\/iframe>)?)/gi, function(tag) {\n // remove if src attribute is duplicated\n if (/<.+src(?==?('|\"|\\s)?)[\\s\\S]+src(?=('|\"|\\s)?)[^>]*?>/i.test(tag)) {\n return '';\n }\n for (const src of whitelist) {\n // pass if src is trusted\n if ((new RegExp('src=\"(https?:)?\\/\\/' + src.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') + '\\/(.+)\"')).test(tag)) {\n return tag;\n }\n }\n return '';\n });\n }\n }\n return value;\n }\n\n /**\n * activate code view\n */\n activate() {\n const CodeMirror = this.CodeMirrorConstructor;\n this.$codable.val(dom.html(this.$editable, this.options.prettifyHtml));\n this.$codable.height(this.$editable.height());\n\n this.context.invoke('toolbar.updateCodeview', true);\n this.context.invoke('airPopover.updateCodeview', true);\n\n this.$editor.addClass('codeview');\n this.$codable.focus();\n\n // activate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = CodeMirror.fromTextArea(this.$codable[0], this.options.codemirror);\n\n // CodeMirror TernServer\n if (this.options.codemirror.tern) {\n const server = new CodeMirror.TernServer(this.options.codemirror.tern);\n cmEditor.ternServer = server;\n cmEditor.on('cursorActivity', (cm) => {\n server.updateArgHints(cm);\n });\n }\n\n cmEditor.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', cmEditor.getValue(), event);\n });\n cmEditor.on('change', () => {\n this.context.triggerEvent('change.codeview', cmEditor.getValue(), cmEditor);\n });\n\n // CodeMirror hasn't Padding.\n cmEditor.setSize(null, this.$editable.outerHeight());\n this.$codable.data('cmEditor', cmEditor);\n } else {\n this.$codable.on('blur', (event) => {\n this.context.triggerEvent('blur.codeview', this.$codable.val(), event);\n });\n this.$codable.on('input', () => {\n this.context.triggerEvent('change.codeview', this.$codable.val(), this.$codable);\n });\n }\n }\n\n /**\n * deactivate code view\n */\n deactivate() {\n const CodeMirror = this.CodeMirrorConstructor;\n // deactivate CodeMirror as codable\n if (CodeMirror) {\n const cmEditor = this.$codable.data('cmEditor');\n this.$codable.val(cmEditor.getValue());\n cmEditor.toTextArea();\n }\n\n const value = this.purify(dom.value(this.$codable, this.options.prettifyHtml) || dom.emptyPara);\n const isChange = this.$editable.html() !== value;\n\n this.$editable.html(value);\n this.$editable.height(this.options.height ? this.$codable.height() : 'auto');\n this.$editor.removeClass('codeview');\n\n if (isChange) {\n this.context.triggerEvent('change', this.$editable.html(), this.$editable);\n }\n\n this.$editable.focus();\n\n this.context.invoke('toolbar.updateCodeview', false);\n this.context.invoke('airPopover.updateCodeview', false);\n }\n\n destroy() {\n if (this.isActivated()) {\n this.deactivate();\n }\n }\n}\n","import $ from 'jquery';\nconst EDITABLE_PADDING = 24;\n\nexport default class Statusbar {\n constructor(context) {\n this.$document = $(document);\n this.$statusbar = context.layoutInfo.statusbar;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n }\n\n initialize() {\n if (this.options.airMode || this.options.disableResizeEditor) {\n this.destroy();\n return;\n }\n\n this.$statusbar.on('mousedown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n const editableTop = this.$editable.offset().top - this.$document.scrollTop();\n const onMouseMove = (event) => {\n let height = event.clientY - (editableTop + EDITABLE_PADDING);\n\n height = (this.options.minheight > 0) ? Math.max(height, this.options.minheight) : height;\n height = (this.options.maxHeight > 0) ? Math.min(height, this.options.maxHeight) : height;\n\n this.$editable.height(height);\n };\n\n this.$document.on('mousemove', onMouseMove).one('mouseup', () => {\n this.$document.off('mousemove', onMouseMove);\n });\n });\n }\n\n destroy() {\n this.$statusbar.off();\n this.$statusbar.addClass('locked');\n }\n}\n","import $ from 'jquery';\n\nexport default class Fullscreen {\n constructor(context) {\n this.context = context;\n\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$codable = context.layoutInfo.codable;\n\n this.$window = $(window);\n this.$scrollbar = $('html, body');\n\n this.onResize = () => {\n this.resizeTo({\n h: this.$window.height() - this.$toolbar.outerHeight(),\n });\n };\n }\n\n resizeTo(size) {\n this.$editable.css('height', size.h);\n this.$codable.css('height', size.h);\n if (this.$codable.data('cmeditor')) {\n this.$codable.data('cmeditor').setsize(null, size.h);\n }\n }\n\n /**\n * toggle fullscreen\n */\n toggle() {\n this.$editor.toggleClass('fullscreen');\n if (this.isFullscreen()) {\n this.$editable.data('orgHeight', this.$editable.css('height'));\n this.$editable.data('orgMaxHeight', this.$editable.css('maxHeight'));\n this.$editable.css('maxHeight', '');\n this.$window.on('resize', this.onResize).trigger('resize');\n this.$scrollbar.css('overflow', 'hidden');\n } else {\n this.$window.off('resize', this.onResize);\n this.resizeTo({ h: this.$editable.data('orgHeight') });\n this.$editable.css('maxHeight', this.$editable.css('orgMaxHeight'));\n this.$scrollbar.css('overflow', 'visible');\n }\n\n this.context.invoke('toolbar.updateFullscreen', this.isFullscreen());\n }\n\n isFullscreen() {\n return this.$editor.hasClass('fullscreen');\n }\n}\n","import $ from 'jquery';\nimport dom from '../core/dom';\n\nexport default class Handle {\n constructor(context) {\n this.context = context;\n this.$document = $(document);\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n this.events = {\n 'summernote.mousedown': (we, e) => {\n if (this.update(e.target, e)) {\n e.preventDefault();\n }\n },\n 'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n initialize() {\n this.$handle = $([\n '<div class=\"note-handle\">',\n '<div class=\"note-control-selection\">',\n '<div class=\"note-control-selection-bg\"></div>',\n '<div class=\"note-control-holder note-control-nw\"></div>',\n '<div class=\"note-control-holder note-control-ne\"></div>',\n '<div class=\"note-control-holder note-control-sw\"></div>',\n '<div class=\"',\n (this.options.disableResizeImage ? 'note-control-holder' : 'note-control-sizing'),\n ' note-control-se\"></div>',\n (this.options.disableResizeImage ? '' : '<div class=\"note-control-selection-info\"></div>'),\n '</div>',\n '</div>',\n ].join('')).prependTo(this.$editingArea);\n\n this.$handle.on('mousedown', (event) => {\n if (dom.isControlSizing(event.target)) {\n event.preventDefault();\n event.stopPropagation();\n\n const $target = this.$handle.find('.note-control-selection').data('target');\n const posStart = $target.offset();\n const scrollTop = this.$document.scrollTop();\n\n const onMouseMove = (event) => {\n this.context.invoke('editor.resizeTo', {\n x: event.clientX - posStart.left,\n y: event.clientY - (posStart.top - scrollTop),\n }, $target, !event.shiftKey);\n\n this.update($target[0], event);\n };\n\n this.$document\n .on('mousemove', onMouseMove)\n .one('mouseup', (e) => {\n e.preventDefault();\n this.$document.off('mousemove', onMouseMove);\n this.context.invoke('editor.afterCommand');\n });\n\n if (!$target.data('ratio')) { // original ratio.\n $target.data('ratio', $target.height() / $target.width());\n }\n }\n });\n\n // Listen for scrolling on the handle overlay.\n this.$handle.on('wheel', (e) => {\n e.preventDefault();\n this.update();\n });\n }\n\n destroy() {\n this.$handle.remove();\n }\n\n update(target, event) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isImage = dom.isImg(target);\n const $selection = this.$handle.find('.note-control-selection');\n\n this.context.invoke('imagePopover.update', target, event);\n\n if (isImage) {\n const $image = $(target);\n const position = $image.position();\n const pos = {\n left: position.left + parseInt($image.css('marginLeft'), 10),\n top: position.top + parseInt($image.css('marginTop'), 10),\n };\n\n // exclude margin\n const imageSize = {\n w: $image.outerWidth(false),\n h: $image.outerHeight(false),\n };\n\n $selection.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n width: imageSize.w,\n height: imageSize.h,\n }).data('target', $image); // save current image element.\n\n const origImageObj = new Image();\n origImageObj.src = $image.attr('src');\n\n const sizingText = imageSize.w + 'x' + imageSize.h + ' (' + this.lang.image.original + ': ' + origImageObj.width + 'x' + origImageObj.height + ')';\n $selection.find('.note-control-selection-info').text(sizingText);\n this.context.invoke('editor.saveTarget', target);\n } else {\n this.hide();\n }\n\n return isImage;\n }\n\n /**\n * hide\n *\n * @param {jQuery} $handle\n */\n hide() {\n this.context.invoke('editor.clearTarget');\n this.$handle.children().hide();\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport key from '../core/key';\n\nconst defaultScheme = 'http://';\nconst linkPattern = /^([A-Za-z][A-Za-z0-9+-.]*\\:[\\/]{2}|tel:|mailto:[A-Z0-9._%+-]+@)?(www\\.)?(.+)$/i;\n\nexport default class AutoLink {\n constructor(context) {\n this.context = context;\n this.options = context.options;\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n initialize() {\n this.lastWordRange = null;\n }\n\n destroy() {\n this.lastWordRange = null;\n }\n\n replace() {\n if (!this.lastWordRange) {\n return;\n }\n\n const keyword = this.lastWordRange.toString();\n const match = keyword.match(linkPattern);\n\n if (match && (match[1] || match[2])) {\n const link = match[1] ? keyword : defaultScheme + keyword;\n const urlText = this.options.showDomainOnlyForAutolink ?\n keyword.replace(/^(?:https?:\\/\\/)?(?:tel?:?)?(?:mailto?:?)?(?:www\\.)?/i, '').split('/')[0]\n : keyword;\n const node = $('<a />').html(urlText).attr('href', link)[0];\n if (this.context.options.linkTargetBlank) {\n $(node).attr('target', '_blank');\n }\n\n this.lastWordRange.insertNode(node);\n this.lastWordRange = null;\n this.context.invoke('editor.focus');\n }\n }\n\n handleKeydown(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWordRange = wordRange;\n }\n }\n\n handleKeyup(e) {\n if (lists.contains([key.code.ENTER, key.code.SPACE], e.keyCode)) {\n this.replace();\n }\n }\n}\n","import dom from '../core/dom';\n\n/**\n * textarea auto sync.\n */\nexport default class AutoSync {\n constructor(context) {\n this.$note = context.layoutInfo.note;\n this.events = {\n 'summernote.change': () => {\n this.$note.val(context.invoke('code'));\n },\n };\n }\n\n shouldInitialize() {\n return dom.isTextarea(this.$note[0]);\n }\n}\n","import lists from '../core/lists';\nimport dom from '../core/dom';\nimport key from '../core/key';\n\nexport default class AutoReplace {\n constructor(context) {\n this.context = context;\n this.options = context.options.replace || {};\n\n this.keys = [key.code.ENTER, key.code.SPACE, key.code.PERIOD, key.code.COMMA, key.code.SEMICOLON, key.code.SLASH];\n this.previousKeydownCode = null;\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.match;\n }\n\n initialize() {\n this.lastWord = null;\n }\n\n destroy() {\n this.lastWord = null;\n }\n\n replace() {\n if (!this.lastWord) {\n return;\n }\n\n const self = this;\n const keyword = this.lastWord.toString();\n this.options.match(keyword, function(match) {\n if (match) {\n let node = '';\n\n if (typeof match === 'string') {\n node = dom.createText(match);\n } else if (match instanceof jQuery) {\n node = match[0];\n } else if (match instanceof Node) {\n node = match;\n }\n\n if (!node) return;\n self.lastWord.insertNode(node);\n self.lastWord = null;\n self.context.invoke('editor.focus');\n }\n });\n }\n\n handleKeydown(e) {\n // this forces it to remember the last whole word, even if multiple termination keys are pressed\n // before the previous key is let go.\n if (this.previousKeydownCode && lists.contains(this.keys, this.previousKeydownCode)) {\n this.previousKeydownCode = e.keyCode;\n return;\n }\n\n if (lists.contains(this.keys, e.keyCode)) {\n const wordRange = this.context.invoke('editor.createRange').getWordRange();\n this.lastWord = wordRange;\n }\n this.previousKeydownCode = e.keyCode;\n }\n\n handleKeyup(e) {\n if (lists.contains(this.keys, e.keyCode)) {\n this.replace();\n }\n }\n}\n","import $ from 'jquery';\nexport default class Placeholder {\n constructor(context) {\n this.context = context;\n\n this.$editingArea = context.layoutInfo.editingArea;\n this.options = context.options;\n\n if (this.options.inheritPlaceholder === true) {\n // get placeholder value from the original element\n this.options.placeholder = this.context.$note.attr('placeholder') || this.options.placeholder;\n }\n\n this.events = {\n 'summernote.init summernote.change': () => {\n this.update();\n },\n 'summernote.codeview.toggled': () => {\n this.update();\n },\n };\n }\n\n shouldInitialize() {\n return !!this.options.placeholder;\n }\n\n initialize() {\n this.$placeholder = $('<div class=\"note-placeholder\">');\n this.$placeholder.on('click', () => {\n this.context.invoke('focus');\n }).html(this.options.placeholder).prependTo(this.$editingArea);\n\n this.update();\n }\n\n destroy() {\n this.$placeholder.remove();\n }\n\n update() {\n const isShow = !this.context.invoke('codeview.isActivated') && this.context.invoke('editor.isEmpty');\n this.$placeholder.toggle(isShow);\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport env from '../core/env';\n\nexport default class Buttons {\n constructor(context) {\n this.ui = $.summernote.ui;\n this.context = context;\n this.$toolbar = context.layoutInfo.toolbar;\n this.options = context.options;\n this.lang = this.options.langInfo;\n this.invertedKeyMap = func.invertObject(\n this.options.keyMap[env.isMac ? 'mac' : 'pc']\n );\n }\n\n representShortcut(editorMethod) {\n let shortcut = this.invertedKeyMap[editorMethod];\n if (!this.options.shortcuts || !shortcut) {\n return '';\n }\n\n if (env.isMac) {\n shortcut = shortcut.replace('CMD', '⌘').replace('SHIFT', '⇧');\n }\n\n shortcut = shortcut.replace('BACKSLASH', '\\\\')\n .replace('SLASH', '/')\n .replace('LEFTBRACKET', '[')\n .replace('RIGHTBRACKET', ']');\n\n return ' (' + shortcut + ')';\n }\n\n button(o) {\n if (!this.options.tooltip && o.tooltip) {\n delete o.tooltip;\n }\n o.container = this.options.container;\n return this.ui.button(o);\n }\n\n initialize() {\n this.addToolbarButtons();\n this.addImagePopoverButtons();\n this.addLinkPopoverButtons();\n this.addTablePopoverButtons();\n this.fontInstalledMap = {};\n }\n\n destroy() {\n delete this.fontInstalledMap;\n }\n\n isFontInstalled(name) {\n if (!Object.prototype.hasOwnProperty.call(this.fontInstalledMap, name)) {\n this.fontInstalledMap[name] = env.isFontInstalled(name) ||\n lists.contains(this.options.fontNamesIgnoreCheck, name);\n }\n return this.fontInstalledMap[name];\n }\n\n isFontDeservedToAdd(name) {\n name = name.toLowerCase();\n return (name !== '' && this.isFontInstalled(name) && env.genericFontFamilies.indexOf(name) === -1);\n }\n\n colorPalette(className, tooltip, backColor, foreColor) {\n return this.ui.buttonGroup({\n className: 'note-color ' + className,\n children: [\n this.button({\n className: 'note-current-color-button',\n contents: this.ui.icon(this.options.icons.font + ' note-recent-color'),\n tooltip: tooltip,\n click: (e) => {\n const $button = $(e.currentTarget);\n if (backColor && foreColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n foreColor: $button.attr('data-foreColor'),\n });\n } else if (backColor) {\n this.context.invoke('editor.color', {\n backColor: $button.attr('data-backColor'),\n });\n } else if (foreColor) {\n this.context.invoke('editor.color', {\n foreColor: $button.attr('data-foreColor'),\n });\n }\n },\n callback: ($button) => {\n const $recentColor = $button.find('.note-recent-color');\n if (backColor) {\n $recentColor.css('background-color', this.options.colorButton.backColor);\n $button.attr('data-backColor', this.options.colorButton.backColor);\n }\n if (foreColor) {\n $recentColor.css('color', this.options.colorButton.foreColor);\n $button.attr('data-foreColor', this.options.colorButton.foreColor);\n } else {\n $recentColor.css('color', 'transparent');\n }\n },\n }),\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('', this.options),\n tooltip: this.lang.color.more,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n items: (backColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.background + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"backColor\" data-value=\"transparent\">',\n this.lang.color.transparent,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"backColor\"><!-- back colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"backColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"backColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.backColor + '\" data-event=\"backColorPalette\">',\n '</div>',\n '<div class=\"note-holder-custom\" id=\"backColorPalette\" data-event=\"backColor\"></div>',\n '</div>',\n ].join('') : '') +\n (foreColor ? [\n '<div class=\"note-palette\">',\n '<div class=\"note-palette-title\">' + this.lang.color.foreground + '</div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-reset btn btn-light btn-default\" data-event=\"removeFormat\" data-value=\"foreColor\">',\n this.lang.color.resetToDefault,\n '</button>',\n '</div>',\n '<div class=\"note-holder\" data-event=\"foreColor\"><!-- fore colors --></div>',\n '<div>',\n '<button type=\"button\" class=\"note-color-select btn btn-light btn-default\" data-event=\"openPalette\" data-value=\"foreColorPicker\">',\n this.lang.color.cpSelect,\n '</button>',\n '<input type=\"color\" id=\"foreColorPicker\" class=\"note-btn note-color-select-btn\" value=\"' + this.options.colorButton.foreColor + '\" data-event=\"foreColorPalette\">',\n '</div>', // Fix missing Div, Commented to find easily if it's wrong\n '<div class=\"note-holder-custom\" id=\"foreColorPalette\" data-event=\"foreColor\"></div>',\n '</div>',\n ].join('') : ''),\n callback: ($dropdown) => {\n $dropdown.find('.note-holder').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: this.options.colors,\n colorsName: this.options.colorsName,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n /* TODO: do we have to record recent custom colors within cookies? */\n var customColors = [\n ['#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF'],\n ];\n $dropdown.find('.note-holder-custom').each((idx, item) => {\n const $holder = $(item);\n $holder.append(this.ui.palette({\n colors: customColors,\n colorsName: customColors,\n eventName: $holder.data('event'),\n container: this.options.container,\n tooltip: this.options.tooltip,\n }).render());\n });\n $dropdown.find('input[type=color]').each((idx, item) => {\n $(item).change(function() {\n const $chip = $dropdown.find('#' + $(this).data('event')).find('.note-color-btn').first();\n const color = this.value.toUpperCase();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $chip.click();\n });\n });\n },\n click: (event) => {\n event.stopPropagation();\n\n const $parent = $('.' + className).find('.note-dropdown-menu');\n const $button = $(event.target);\n const eventName = $button.data('event');\n const value = $button.attr('data-value');\n\n if (eventName === 'openPalette') {\n const $picker = $parent.find('#' + value);\n const $palette = $($parent.find('#' + $picker.data('event')).find('.note-color-row')[0]);\n\n // Shift palette chips\n const $chip = $palette.find('.note-color-btn').last().detach();\n\n // Set chip attributes\n const color = $picker.val();\n $chip.css('background-color', color)\n .attr('aria-label', color)\n .attr('data-value', color)\n .attr('data-original-title', color);\n $palette.prepend($chip);\n $picker.click();\n } else {\n if (lists.contains(['backColor', 'foreColor'], eventName)) {\n const key = eventName === 'backColor' ? 'background-color' : 'color';\n const $color = $button.closest('.note-color').find('.note-recent-color');\n const $currentButton = $button.closest('.note-color').find('.note-current-color-button');\n\n $color.css(key, value);\n $currentButton.attr('data-' + eventName, value);\n }\n this.context.invoke('editor.' + eventName, value);\n }\n },\n }),\n ],\n }).render();\n }\n\n addToolbarButtons() {\n this.context.memo('button.style', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n this.ui.icon(this.options.icons.magic), this.options\n ),\n tooltip: this.lang.style.style,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n className: 'dropdown-style',\n items: this.options.styleTags,\n title: this.lang.style.style,\n template: (item) => {\n // TBD: need to be simplified\n if (typeof item === 'string') {\n item = {\n tag: item,\n title: (Object.prototype.hasOwnProperty.call(this.lang.style, item) ? this.lang.style[item] : item),\n };\n }\n\n const tag = item.tag;\n const title = item.title;\n const style = item.style ? ' style=\"' + item.style + '\" ' : '';\n const className = item.className ? ' class=\"' + item.className + '\"' : '';\n\n return '<' + tag + style + className + '>' + title + '</' + tag + '>';\n },\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }),\n ]).render();\n });\n\n for (let styleIdx = 0, styleLen = this.options.styleTags.length; styleIdx < styleLen; styleIdx++) {\n const item = this.options.styleTags[styleIdx];\n\n this.context.memo('button.style.' + item, () => {\n return this.button({\n className: 'note-btn-style-' + item,\n contents: '<div data-value=\"' + item + '\">' + item.toUpperCase() + '</div>',\n tooltip: this.lang.style[item],\n click: this.context.createInvokeHandler('editor.formatBlock'),\n }).render();\n });\n }\n\n this.context.memo('button.bold', () => {\n return this.button({\n className: 'note-btn-bold',\n contents: this.ui.icon(this.options.icons.bold),\n tooltip: this.lang.font.bold + this.representShortcut('bold'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.bold'),\n }).render();\n });\n\n this.context.memo('button.italic', () => {\n return this.button({\n className: 'note-btn-italic',\n contents: this.ui.icon(this.options.icons.italic),\n tooltip: this.lang.font.italic + this.representShortcut('italic'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.italic'),\n }).render();\n });\n\n this.context.memo('button.underline', () => {\n return this.button({\n className: 'note-btn-underline',\n contents: this.ui.icon(this.options.icons.underline),\n tooltip: this.lang.font.underline + this.representShortcut('underline'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.underline'),\n }).render();\n });\n\n this.context.memo('button.clear', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.eraser),\n tooltip: this.lang.font.clear + this.representShortcut('removeFormat'),\n click: this.context.createInvokeHandler('editor.removeFormat'),\n }).render();\n });\n\n this.context.memo('button.strikethrough', () => {\n return this.button({\n className: 'note-btn-strikethrough',\n contents: this.ui.icon(this.options.icons.strikethrough),\n tooltip: this.lang.font.strikethrough + this.representShortcut('strikethrough'),\n click: this.context.createInvokeHandlerAndUpdateState('editor.strikethrough'),\n }).render();\n });\n\n this.context.memo('button.superscript', () => {\n return this.button({\n className: 'note-btn-superscript',\n contents: this.ui.icon(this.options.icons.superscript),\n tooltip: this.lang.font.superscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.superscript'),\n }).render();\n });\n\n this.context.memo('button.subscript', () => {\n return this.button({\n className: 'note-btn-subscript',\n contents: this.ui.icon(this.options.icons.subscript),\n tooltip: this.lang.font.subscript,\n click: this.context.createInvokeHandlerAndUpdateState('editor.subscript'),\n }).render();\n });\n\n this.context.memo('button.fontname', () => {\n const styleInfo = this.context.invoke('editor.currentStyle');\n\n if (this.options.addDefaultFonts) {\n // Add 'default' fonts into the fontnames array if not exist\n $.each(styleInfo['font-family'].split(','), (idx, fontname) => {\n fontname = fontname.trim().replace(/['\"]+/g, '');\n if (this.isFontDeservedToAdd(fontname)) {\n if (this.options.fontNames.indexOf(fontname) === -1) {\n this.options.fontNames.push(fontname);\n }\n }\n });\n }\n\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(\n '<span class=\"note-current-fontname\"></span>', this.options\n ),\n tooltip: this.lang.font.name,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontname',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontNames.filter(this.isFontInstalled.bind(this)),\n title: this.lang.font.name,\n template: (item) => {\n return '<span style=\"font-family: ' + env.validFontName(item) + '\">' + item + '</span>';\n },\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontName'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsize', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsize\"></span>', this.options),\n tooltip: this.lang.font.size,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsize',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizes,\n title: this.lang.font.size,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSize'),\n }),\n ]).render();\n });\n\n this.context.memo('button.fontsizeunit', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents('<span class=\"note-current-fontsizeunit\"></span>', this.options),\n tooltip: this.lang.font.sizeunit,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n className: 'dropdown-fontsizeunit',\n checkClassName: this.options.icons.menuCheck,\n items: this.options.fontSizeUnits,\n title: this.lang.font.sizeunit,\n click: this.context.createInvokeHandlerAndUpdateState('editor.fontSizeUnit'),\n }),\n ]).render();\n });\n\n this.context.memo('button.color', () => {\n return this.colorPalette('note-color-all', this.lang.color.recent, true, true);\n });\n\n this.context.memo('button.forecolor', () => {\n return this.colorPalette('note-color-fore', this.lang.color.foreground, false, true);\n });\n\n this.context.memo('button.backcolor', () => {\n return this.colorPalette('note-color-back', this.lang.color.background, true, false);\n });\n\n this.context.memo('button.ul', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unorderedlist),\n tooltip: this.lang.lists.unordered + this.representShortcut('insertUnorderedList'),\n click: this.context.createInvokeHandler('editor.insertUnorderedList'),\n }).render();\n });\n\n this.context.memo('button.ol', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.orderedlist),\n tooltip: this.lang.lists.ordered + this.representShortcut('insertOrderedList'),\n click: this.context.createInvokeHandler('editor.insertOrderedList'),\n }).render();\n });\n\n const justifyLeft = this.button({\n contents: this.ui.icon(this.options.icons.alignLeft),\n tooltip: this.lang.paragraph.left + this.representShortcut('justifyLeft'),\n click: this.context.createInvokeHandler('editor.justifyLeft'),\n });\n\n const justifyCenter = this.button({\n contents: this.ui.icon(this.options.icons.alignCenter),\n tooltip: this.lang.paragraph.center + this.representShortcut('justifyCenter'),\n click: this.context.createInvokeHandler('editor.justifyCenter'),\n });\n\n const justifyRight = this.button({\n contents: this.ui.icon(this.options.icons.alignRight),\n tooltip: this.lang.paragraph.right + this.representShortcut('justifyRight'),\n click: this.context.createInvokeHandler('editor.justifyRight'),\n });\n\n const justifyFull = this.button({\n contents: this.ui.icon(this.options.icons.alignJustify),\n tooltip: this.lang.paragraph.justify + this.representShortcut('justifyFull'),\n click: this.context.createInvokeHandler('editor.justifyFull'),\n });\n\n const outdent = this.button({\n contents: this.ui.icon(this.options.icons.outdent),\n tooltip: this.lang.paragraph.outdent + this.representShortcut('outdent'),\n click: this.context.createInvokeHandler('editor.outdent'),\n });\n\n const indent = this.button({\n contents: this.ui.icon(this.options.icons.indent),\n tooltip: this.lang.paragraph.indent + this.representShortcut('indent'),\n click: this.context.createInvokeHandler('editor.indent'),\n });\n\n this.context.memo('button.justifyLeft', func.invoke(justifyLeft, 'render'));\n this.context.memo('button.justifyCenter', func.invoke(justifyCenter, 'render'));\n this.context.memo('button.justifyRight', func.invoke(justifyRight, 'render'));\n this.context.memo('button.justifyFull', func.invoke(justifyFull, 'render'));\n this.context.memo('button.outdent', func.invoke(outdent, 'render'));\n this.context.memo('button.indent', func.invoke(indent, 'render'));\n\n this.context.memo('button.paragraph', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.alignLeft), this.options),\n tooltip: this.lang.paragraph.paragraph,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown([\n this.ui.buttonGroup({\n className: 'note-align',\n children: [justifyLeft, justifyCenter, justifyRight, justifyFull],\n }),\n this.ui.buttonGroup({\n className: 'note-list',\n children: [outdent, indent],\n }),\n ]),\n ]).render();\n });\n\n this.context.memo('button.height', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.textHeight), this.options),\n tooltip: this.lang.font.height,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdownCheck({\n items: this.options.lineHeights,\n checkClassName: this.options.icons.menuCheck,\n className: 'dropdown-line-height',\n title: this.lang.font.height,\n click: this.context.createInvokeHandler('editor.lineHeight'),\n }),\n ]).render();\n });\n\n this.context.memo('button.table', () => {\n return this.ui.buttonGroup([\n this.button({\n className: 'dropdown-toggle',\n contents: this.ui.dropdownButtonContents(this.ui.icon(this.options.icons.table), this.options),\n tooltip: this.lang.table.table,\n data: {\n toggle: 'dropdown',\n },\n }),\n this.ui.dropdown({\n title: this.lang.table.table,\n className: 'note-table',\n items: [\n '<div class=\"note-dimension-picker\">',\n '<div class=\"note-dimension-picker-mousecatcher\" data-event=\"insertTable\" data-value=\"1x1\"></div>',\n '<div class=\"note-dimension-picker-highlighted\"></div>',\n '<div class=\"note-dimension-picker-unhighlighted\"></div>',\n '</div>',\n '<div class=\"note-dimension-display\">1 x 1</div>',\n ].join(''),\n }),\n ], {\n callback: ($node) => {\n const $catcher = $node.find('.note-dimension-picker-mousecatcher');\n $catcher.css({\n width: this.options.insertTableMaxSize.col + 'em',\n height: this.options.insertTableMaxSize.row + 'em',\n }).mousedown(this.context.createInvokeHandler('editor.insertTable'))\n .on('mousemove', this.tableMoveHandler.bind(this));\n },\n }).render();\n });\n\n this.context.memo('button.link', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.link + this.representShortcut('linkDialog.show'),\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.picture', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.picture),\n tooltip: this.lang.image.image,\n click: this.context.createInvokeHandler('imageDialog.show'),\n }).render();\n });\n\n this.context.memo('button.video', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.video),\n tooltip: this.lang.video.video,\n click: this.context.createInvokeHandler('videoDialog.show'),\n }).render();\n });\n\n this.context.memo('button.hr', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.minus),\n tooltip: this.lang.hr.insert + this.representShortcut('insertHorizontalRule'),\n click: this.context.createInvokeHandler('editor.insertHorizontalRule'),\n }).render();\n });\n\n this.context.memo('button.fullscreen', () => {\n return this.button({\n className: 'btn-fullscreen note-codeview-keep',\n contents: this.ui.icon(this.options.icons.arrowsAlt),\n tooltip: this.lang.options.fullscreen,\n click: this.context.createInvokeHandler('fullscreen.toggle'),\n }).render();\n });\n\n this.context.memo('button.codeview', () => {\n return this.button({\n className: 'btn-codeview note-codeview-keep',\n contents: this.ui.icon(this.options.icons.code),\n tooltip: this.lang.options.codeview,\n click: this.context.createInvokeHandler('codeview.toggle'),\n }).render();\n });\n\n this.context.memo('button.redo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.redo),\n tooltip: this.lang.history.redo + this.representShortcut('redo'),\n click: this.context.createInvokeHandler('editor.redo'),\n }).render();\n });\n\n this.context.memo('button.undo', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.undo),\n tooltip: this.lang.history.undo + this.representShortcut('undo'),\n click: this.context.createInvokeHandler('editor.undo'),\n }).render();\n });\n\n this.context.memo('button.help', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.question),\n tooltip: this.lang.options.help,\n click: this.context.createInvokeHandler('helpDialog.show'),\n }).render();\n });\n }\n\n /**\n * image: [\n * ['imageResize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n * ['float', ['floatLeft', 'floatRight', 'floatNone']],\n * ['remove', ['removeMedia']],\n * ],\n */\n addImagePopoverButtons() {\n // Image Size Buttons\n this.context.memo('button.resizeFull', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">100%</span>',\n tooltip: this.lang.image.resizeFull,\n click: this.context.createInvokeHandler('editor.resize', '1'),\n }).render();\n });\n this.context.memo('button.resizeHalf', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">50%</span>',\n tooltip: this.lang.image.resizeHalf,\n click: this.context.createInvokeHandler('editor.resize', '0.5'),\n }).render();\n });\n this.context.memo('button.resizeQuarter', () => {\n return this.button({\n contents: '<span class=\"note-fontsize-10\">25%</span>',\n tooltip: this.lang.image.resizeQuarter,\n click: this.context.createInvokeHandler('editor.resize', '0.25'),\n }).render();\n });\n this.context.memo('button.resizeNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.resizeNone,\n click: this.context.createInvokeHandler('editor.resize', '0'),\n }).render();\n });\n\n // Float Buttons\n this.context.memo('button.floatLeft', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatLeft),\n tooltip: this.lang.image.floatLeft,\n click: this.context.createInvokeHandler('editor.floatMe', 'left'),\n }).render();\n });\n\n this.context.memo('button.floatRight', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.floatRight),\n tooltip: this.lang.image.floatRight,\n click: this.context.createInvokeHandler('editor.floatMe', 'right'),\n }).render();\n });\n\n this.context.memo('button.floatNone', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.rollback),\n tooltip: this.lang.image.floatNone,\n click: this.context.createInvokeHandler('editor.floatMe', 'none'),\n }).render();\n });\n\n // Remove Buttons\n this.context.memo('button.removeMedia', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.image.remove,\n click: this.context.createInvokeHandler('editor.removeMedia'),\n }).render();\n });\n }\n\n addLinkPopoverButtons() {\n this.context.memo('button.linkDialogShow', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.link),\n tooltip: this.lang.link.edit,\n click: this.context.createInvokeHandler('linkDialog.show'),\n }).render();\n });\n\n this.context.memo('button.unlink', () => {\n return this.button({\n contents: this.ui.icon(this.options.icons.unlink),\n tooltip: this.lang.link.unlink,\n click: this.context.createInvokeHandler('editor.unlink'),\n }).render();\n });\n }\n\n /**\n * table : [\n * ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n * ['delete', ['deleteRow', 'deleteCol', 'deleteTable']]\n * ],\n */\n addTablePopoverButtons() {\n this.context.memo('button.addRowUp', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowAbove),\n tooltip: this.lang.table.addRowAbove,\n click: this.context.createInvokeHandler('editor.addRow', 'top'),\n }).render();\n });\n this.context.memo('button.addRowDown', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowBelow),\n tooltip: this.lang.table.addRowBelow,\n click: this.context.createInvokeHandler('editor.addRow', 'bottom'),\n }).render();\n });\n this.context.memo('button.addColLeft', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colBefore),\n tooltip: this.lang.table.addColLeft,\n click: this.context.createInvokeHandler('editor.addCol', 'left'),\n }).render();\n });\n this.context.memo('button.addColRight', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colAfter),\n tooltip: this.lang.table.addColRight,\n click: this.context.createInvokeHandler('editor.addCol', 'right'),\n }).render();\n });\n this.context.memo('button.deleteRow', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.rowRemove),\n tooltip: this.lang.table.delRow,\n click: this.context.createInvokeHandler('editor.deleteRow'),\n }).render();\n });\n this.context.memo('button.deleteCol', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.colRemove),\n tooltip: this.lang.table.delCol,\n click: this.context.createInvokeHandler('editor.deleteCol'),\n }).render();\n });\n this.context.memo('button.deleteTable', () => {\n return this.button({\n className: 'btn-md',\n contents: this.ui.icon(this.options.icons.trash),\n tooltip: this.lang.table.delTable,\n click: this.context.createInvokeHandler('editor.deleteTable'),\n }).render();\n });\n }\n\n build($container, groups) {\n for (let groupIdx = 0, groupLen = groups.length; groupIdx < groupLen; groupIdx++) {\n const group = groups[groupIdx];\n const groupName = Array.isArray(group) ? group[0] : group;\n const buttons = Array.isArray(group) ? ((group.length === 1) ? [group[0]] : group[1]) : [group];\n\n const $group = this.ui.buttonGroup({\n className: 'note-' + groupName,\n }).render();\n\n for (let idx = 0, len = buttons.length; idx < len; idx++) {\n const btn = this.context.memo('button.' + buttons[idx]);\n if (btn) {\n $group.append(typeof btn === 'function' ? btn(this.context) : btn);\n }\n }\n $group.appendTo($container);\n }\n }\n\n /**\n * @param {jQuery} [$container]\n */\n updateCurrentStyle($container) {\n const $cont = $container || this.$toolbar;\n\n const styleInfo = this.context.invoke('editor.currentStyle');\n this.updateBtnStates($cont, {\n '.note-btn-bold': () => {\n return styleInfo['font-bold'] === 'bold';\n },\n '.note-btn-italic': () => {\n return styleInfo['font-italic'] === 'italic';\n },\n '.note-btn-underline': () => {\n return styleInfo['font-underline'] === 'underline';\n },\n '.note-btn-subscript': () => {\n return styleInfo['font-subscript'] === 'subscript';\n },\n '.note-btn-superscript': () => {\n return styleInfo['font-superscript'] === 'superscript';\n },\n '.note-btn-strikethrough': () => {\n return styleInfo['font-strikethrough'] === 'strikethrough';\n },\n });\n\n if (styleInfo['font-family']) {\n const fontNames = styleInfo['font-family'].split(',').map((name) => {\n return name.replace(/[\\'\\\"]/g, '')\n .replace(/\\s+$/, '')\n .replace(/^\\s+/, '');\n });\n const fontName = lists.find(fontNames, this.isFontInstalled.bind(this));\n\n $cont.find('.dropdown-fontname a').each((idx, item) => {\n const $item = $(item);\n // always compare string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontName + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontname').text(fontName).css('font-family', fontName);\n }\n\n if (styleInfo['font-size']) {\n const fontSize = styleInfo['font-size'];\n $cont.find('.dropdown-fontsize a').each((idx, item) => {\n const $item = $(item);\n // always compare with string to avoid creating another func.\n const isChecked = ($item.data('value') + '') === (fontSize + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsize').text(fontSize);\n\n const fontSizeUnit = styleInfo['font-size-unit'];\n $cont.find('.dropdown-fontsizeunit a').each((idx, item) => {\n const $item = $(item);\n const isChecked = ($item.data('value') + '') === (fontSizeUnit + '');\n $item.toggleClass('checked', isChecked);\n });\n $cont.find('.note-current-fontsizeunit').text(fontSizeUnit);\n }\n\n if (styleInfo['line-height']) {\n const lineHeight = styleInfo['line-height'];\n $cont.find('.dropdown-line-height li a').each((idx, item) => {\n // always compare with string to avoid creating another func.\n const isChecked = ($(item).data('value') + '') === (lineHeight + '');\n this.className = isChecked ? 'checked' : '';\n });\n }\n }\n\n updateBtnStates($container, infos) {\n $.each(infos, (selector, pred) => {\n this.ui.toggleBtnActive($container.find(selector), pred());\n });\n }\n\n tableMoveHandler(event) {\n const PX_PER_EM = 18;\n const $picker = $(event.target.parentNode); // target is mousecatcher\n const $dimensionDisplay = $picker.next();\n const $catcher = $picker.find('.note-dimension-picker-mousecatcher');\n const $highlighted = $picker.find('.note-dimension-picker-highlighted');\n const $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted');\n\n let posOffset;\n // HTML5 with jQuery - e.offsetX is undefined in Firefox\n if (event.offsetX === undefined) {\n const posCatcher = $(event.target).offset();\n posOffset = {\n x: event.pageX - posCatcher.left,\n y: event.pageY - posCatcher.top,\n };\n } else {\n posOffset = {\n x: event.offsetX,\n y: event.offsetY,\n };\n }\n\n const dim = {\n c: Math.ceil(posOffset.x / PX_PER_EM) || 1,\n r: Math.ceil(posOffset.y / PX_PER_EM) || 1,\n };\n\n $highlighted.css({ width: dim.c + 'em', height: dim.r + 'em' });\n $catcher.data('value', dim.c + 'x' + dim.r);\n\n if (dim.c > 3 && dim.c < this.options.insertTableMaxSize.col) {\n $unhighlighted.css({ width: dim.c + 1 + 'em' });\n }\n\n if (dim.r > 3 && dim.r < this.options.insertTableMaxSize.row) {\n $unhighlighted.css({ height: dim.r + 1 + 'em' });\n }\n\n $dimensionDisplay.html(dim.c + ' x ' + dim.r);\n }\n}\n","import $ from 'jquery';\nexport default class Toolbar {\n constructor(context) {\n this.context = context;\n\n this.$window = $(window);\n this.$document = $(document);\n\n this.ui = $.summernote.ui;\n this.$note = context.layoutInfo.note;\n this.$editor = context.layoutInfo.editor;\n this.$toolbar = context.layoutInfo.toolbar;\n this.$editable = context.layoutInfo.editable;\n this.$statusbar = context.layoutInfo.statusbar;\n this.options = context.options;\n\n this.isFollowing = false;\n this.followScroll = this.followScroll.bind(this);\n }\n\n shouldInitialize() {\n return !this.options.airMode;\n }\n\n initialize() {\n this.options.toolbar = this.options.toolbar || [];\n\n if (!this.options.toolbar.length) {\n this.$toolbar.hide();\n } else {\n this.context.invoke('buttons.build', this.$toolbar, this.options.toolbar);\n }\n\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n\n this.changeContainer(false);\n\n this.$note.on('summernote.keyup summernote.mouseup summernote.change', () => {\n this.context.invoke('buttons.updateCurrentStyle');\n });\n\n this.context.invoke('buttons.updateCurrentStyle');\n if (this.options.followingToolbar) {\n this.$window.on('scroll resize', this.followScroll);\n }\n }\n\n destroy() {\n this.$toolbar.children().remove();\n\n if (this.options.followingToolbar) {\n this.$window.off('scroll resize', this.followScroll);\n }\n }\n\n followScroll() {\n if (this.$editor.hasClass('fullscreen')) {\n return false;\n }\n\n const editorHeight = this.$editor.outerHeight();\n const editorWidth = this.$editor.width();\n const toolbarHeight = this.$toolbar.height();\n const statusbarHeight = this.$statusbar.height();\n\n // check if the web app is currently using another static bar\n let otherBarHeight = 0;\n if (this.options.otherStaticBar) {\n otherBarHeight = $(this.options.otherStaticBar).outerHeight();\n }\n\n const currentOffset = this.$document.scrollTop();\n const editorOffsetTop = this.$editor.offset().top;\n const editorOffsetBottom = editorOffsetTop + editorHeight;\n const activateOffset = editorOffsetTop - otherBarHeight;\n const deactivateOffsetBottom = editorOffsetBottom - otherBarHeight - toolbarHeight - statusbarHeight;\n\n if (!this.isFollowing &&\n (currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom - toolbarHeight)) {\n this.isFollowing = true;\n this.$editable.css({\n marginTop: this.$toolbar.outerHeight(),\n });\n this.$toolbar.css({\n position: 'fixed',\n top: otherBarHeight,\n width: editorWidth,\n zIndex: 1000,\n });\n } else if (this.isFollowing &&\n ((currentOffset < activateOffset) || (currentOffset > deactivateOffsetBottom))) {\n this.isFollowing = false;\n this.$toolbar.css({\n position: 'relative',\n top: 0,\n width: '100%',\n zIndex: 'auto',\n });\n this.$editable.css({\n marginTop: '',\n });\n }\n }\n\n changeContainer(isFullscreen) {\n if (isFullscreen) {\n this.$toolbar.prependTo(this.$editor);\n } else {\n if (this.options.toolbarContainer) {\n this.$toolbar.appendTo(this.options.toolbarContainer);\n }\n }\n if (this.options.followingToolbar) {\n this.followScroll();\n }\n }\n\n updateFullscreen(isFullscreen) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'), isFullscreen);\n\n this.changeContainer(isFullscreen);\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.deactivate();\n } else {\n this.activate();\n }\n }\n\n activate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, true);\n }\n\n deactivate(isIncludeCodeview) {\n let $btn = this.$toolbar.find('button');\n if (!isIncludeCodeview) {\n $btn = $btn.not('.note-codeview-keep');\n }\n this.ui.toggleBtn($btn, false);\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\nimport func from '../core/func';\n\nexport default class LinkDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n\n context.memo('help.linkDialog.show', this.options.langInfo.help['linkDialog.show']);\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-txt-${this.options.id}\" class=\"note-form-label\">${this.lang.link.textToDisplay}</label>`,\n `<input id=\"note-dialog-link-txt-${this.options.id}\" class=\"note-link-text form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n '<div class=\"form-group note-form-group\">',\n `<label for=\"note-dialog-link-url-${this.options.id}\" class=\"note-form-label\">${this.lang.link.url}</label>`,\n `<input id=\"note-dialog-link-url-${this.options.id}\" class=\"note-link-url form-control note-form-control note-input\" type=\"text\" value=\"http://\"/>`,\n '</div>',\n !this.options.disableLinkTarget\n ? $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-open-in-new-window',\n text: this.lang.link.openInNewWindow,\n checked: true,\n }).render()).html()\n : '',\n $('<div/>').append(this.ui.checkbox({\n className: 'sn-checkbox-use-protocol',\n text: this.lang.link.useProtocol,\n checked: true,\n }).render()).html(),\n ].join('');\n\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-link-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.link.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n className: 'link-dialog',\n title: this.lang.link.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n /**\n * toggle update button\n */\n toggleLinkBtn($linkBtn, $linkText, $linkUrl) {\n this.ui.toggleBtn($linkBtn, $linkText.val() && $linkUrl.val());\n }\n\n /**\n * Show link dialog and set event handlers on dialog controls.\n *\n * @param {Object} linkInfo\n * @return {Promise}\n */\n showLinkDialog(linkInfo) {\n return $.Deferred((deferred) => {\n const $linkText = this.$dialog.find('.note-link-text');\n const $linkUrl = this.$dialog.find('.note-link-url');\n const $linkBtn = this.$dialog.find('.note-link-btn');\n const $openInNewWindow = this.$dialog\n .find('.sn-checkbox-open-in-new-window input[type=checkbox]');\n const $useProtocol = this.$dialog\n .find('.sn-checkbox-use-protocol input[type=checkbox]');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // If no url was given and given text is valid URL then copy that into URL Field\n if (!linkInfo.url && func.isValidUrl(linkInfo.text)) {\n linkInfo.url = linkInfo.text;\n }\n\n $linkText.on('input paste propertychange', () => {\n // If linktext was modified by input events,\n // cloning text from linkUrl will be stopped.\n linkInfo.text = $linkText.val();\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.text);\n\n $linkUrl.on('input paste propertychange', () => {\n // Display same text on `Text to display` as default\n // when linktext has no text\n if (!linkInfo.text) {\n $linkText.val($linkUrl.val());\n }\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n }).val(linkInfo.url);\n\n if (!env.isSupportTouch) {\n $linkUrl.trigger('focus');\n }\n\n this.toggleLinkBtn($linkBtn, $linkText, $linkUrl);\n this.bindEnterKey($linkUrl, $linkBtn);\n this.bindEnterKey($linkText, $linkBtn);\n\n const isNewWindowChecked = linkInfo.isNewWindow !== undefined\n ? linkInfo.isNewWindow : this.context.options.linkTargetBlank;\n\n $openInNewWindow.prop('checked', isNewWindowChecked);\n\n const useProtocolChecked = linkInfo.url\n ? false : this.context.options.useProtocol;\n\n $useProtocol.prop('checked', useProtocolChecked);\n\n $linkBtn.one('click', (event) => {\n event.preventDefault();\n\n deferred.resolve({\n range: linkInfo.range,\n url: $linkUrl.val(),\n text: $linkText.val(),\n isNewWindow: $openInNewWindow.is(':checked'),\n checkProtocol: $useProtocol.is(':checked'),\n });\n this.ui.hideDialog(this.$dialog);\n });\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n // detach events\n $linkText.off();\n $linkUrl.off();\n $linkBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n /**\n * @param {Object} layoutInfo\n */\n show() {\n const linkInfo = this.context.invoke('editor.getLinkInfo');\n\n this.context.invoke('editor.saveRange');\n this.showLinkDialog(linkInfo).then((linkInfo) => {\n this.context.invoke('editor.restoreRange');\n this.context.invoke('editor.createLink', linkInfo);\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class LinkPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': () => {\n this.update();\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.link);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-link-popover',\n callback: ($node) => {\n const $content = $node.find('.popover-content,.note-popover-content');\n $content.prepend('<span><a target=\"_blank\"></a> </span>');\n },\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.link);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update() {\n // Prevent focusing on editable when invoke('code') is executed\n if (!this.context.invoke('editor.hasFocus')) {\n this.hide();\n return;\n }\n\n const rng = this.context.invoke('editor.getLastRange');\n if (rng.isCollapsed() && rng.isOnAnchor()) {\n const anchor = dom.ancestor(rng.sc, dom.isAnchor);\n const href = $(anchor).attr('href');\n this.$popover.find('a').attr('href', href).text(href);\n\n const pos = dom.posFromPlaceholder(anchor);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class ImageDialog {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n let imageLimitation = '';\n if (this.options.maximumImageFileSize) {\n const unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));\n const readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +\n ' ' + ' KMGTP'[unit] + 'B';\n imageLimitation = `<small>${this.lang.image.maximumFileSize + ' : ' + readableSize}</small>`;\n }\n\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group note-group-select-from-files\">',\n '<label for=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.selectFromFiles + '</label>',\n '<input id=\"note-dialog-image-file-' + this.options.id + '\" class=\"note-image-input form-control-file note-form-control note-input\" ',\n ' type=\"file\" name=\"files\" accept=\"image/*\" multiple=\"multiple\"/>',\n imageLimitation,\n '</div>',\n '<div class=\"form-group note-group-image-url\">',\n '<label for=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-form-label\">' + this.lang.image.url + '</label>',\n '<input id=\"note-dialog-image-url-' + this.options.id + '\" class=\"note-image-url form-control note-form-control note-input\" type=\"text\"/>',\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.image.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.image.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showImageDialog().then((data) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n if (typeof data === 'string') { // image url\n // If onImageLinkInsert set,\n if (this.options.callbacks.onImageLinkInsert) {\n this.context.triggerEvent('image.link.insert', data);\n } else {\n this.context.invoke('editor.insertImage', data);\n }\n } else { // array of files\n this.context.invoke('editor.insertImagesOrCallback', data);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show image dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showImageDialog() {\n return $.Deferred((deferred) => {\n const $imageInput = this.$dialog.find('.note-image-input');\n const $imageUrl = this.$dialog.find('.note-image-url');\n const $imageBtn = this.$dialog.find('.note-image-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n // Cloning imageInput to clear element.\n $imageInput.replaceWith($imageInput.clone().on('change', (event) => {\n deferred.resolve(event.target.files || event.target.value);\n }).val(''));\n\n $imageUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($imageBtn, $imageUrl.val());\n }).val('');\n\n if (!env.isSupportTouch) {\n $imageUrl.trigger('focus');\n }\n\n $imageBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($imageUrl.val());\n });\n\n this.bindEnterKey($imageUrl, $imageBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $imageInput.off();\n $imageUrl.off();\n $imageBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\n/**\n * Image popover module\n * mouse events that show/hide popover will be handled by Handle.js.\n * Handle.js will receive the events and invoke 'imagePopover.update'.\n */\nexport default class ImagePopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n\n this.editable = context.layoutInfo.editable[0];\n this.options = context.options;\n\n this.events = {\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.image);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-image-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n this.context.invoke('buttons.build', $content, this.options.popover.image);\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target, event) {\n if (dom.isImg(target)) {\n const position = $(target).offset();\n const containerOffset = $(this.options.container).offset();\n let pos = {};\n if (this.options.popatmouse) {\n pos.left = event.pageX - 20;\n pos.top = event.pageY;\n } else {\n pos = position;\n }\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\n\nexport default class TablePopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.options = context.options;\n this.events = {\n 'summernote.mousedown': (we, e) => {\n this.update(e.target);\n },\n 'summernote.keyup summernote.scroll summernote.change': () => {\n this.update();\n },\n 'summernote.disable summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return !lists.isEmpty(this.options.popover.table);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-table-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content,.note-popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.table);\n\n // [workaround] Disable Firefox's default table editor\n if (env.isFF) {\n document.execCommand('enableInlineTableEditing', false, false);\n }\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(target) {\n if (this.context.isDisabled()) {\n return false;\n }\n\n const isCell = dom.isCell(target);\n\n if (isCell) {\n const pos = dom.posFromPlaceholder(target);\n const containerOffset = $(this.options.container).offset();\n pos.top -= containerOffset.top;\n pos.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: pos.left,\n top: pos.top,\n });\n } else {\n this.hide();\n }\n\n return isCell;\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\nimport key from '../core/key';\n\nexport default class VideoDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<div class=\"form-group note-form-group row-fluid\">',\n `<label for=\"note-dialog-video-url-${this.options.id}\" class=\"note-form-label\">${this.lang.video.url} <small class=\"text-muted\">${this.lang.video.providers}</small></label>`,\n `<input id=\"note-dialog-video-url-${this.options.id}\" class=\"note-video-url form-control note-form-control note-input\" type=\"text\"/>`,\n '</div>',\n ].join('');\n const buttonClass = 'btn btn-primary note-btn note-btn-primary note-video-btn';\n const footer = `<input type=\"button\" href=\"#\" class=\"${buttonClass}\" value=\"${this.lang.video.insert}\" disabled>`;\n\n this.$dialog = this.ui.dialog({\n title: this.lang.video.insert,\n fade: this.options.dialogsFade,\n body: body,\n footer: footer,\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n bindEnterKey($input, $btn) {\n $input.on('keypress', (event) => {\n if (event.keyCode === key.code.ENTER) {\n event.preventDefault();\n $btn.trigger('click');\n }\n });\n }\n\n createVideoNode(url) {\n // video url patterns(youtube, instagram, vimeo, dailymotion, youku, mp4, ogg, webm)\n const ytRegExp = /\\/\\/(?:(?:www|m)\\.)?(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([\\w|-]{11})(?:(?:[\\?&]t=)(\\S+))?$/;\n const ytRegExpForStart = /^(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s)?$/;\n const ytMatch = url.match(ytRegExp);\n\n const igRegExp = /(?:www\\.|\\/\\/)instagram\\.com\\/p\\/(.[a-zA-Z0-9_-]*)/;\n const igMatch = url.match(igRegExp);\n\n const vRegExp = /\\/\\/vine\\.co\\/v\\/([a-zA-Z0-9]+)/;\n const vMatch = url.match(vRegExp);\n\n const vimRegExp = /\\/\\/(player\\.)?vimeo\\.com\\/([a-z]*\\/)*(\\d+)[?]?.*/;\n const vimMatch = url.match(vimRegExp);\n\n const dmRegExp = /.+dailymotion.com\\/(video|hub)\\/([^_]+)[^#]*(#video=([^_&]+))?/;\n const dmMatch = url.match(dmRegExp);\n\n const youkuRegExp = /\\/\\/v\\.youku\\.com\\/v_show\\/id_(\\w+)=*\\.html/;\n const youkuMatch = url.match(youkuRegExp);\n\n const qqRegExp = /\\/\\/v\\.qq\\.com.*?vid=(.+)/;\n const qqMatch = url.match(qqRegExp);\n\n const qqRegExp2 = /\\/\\/v\\.qq\\.com\\/x?\\/?(page|cover).*?\\/([^\\/]+)\\.html\\??.*/;\n const qqMatch2 = url.match(qqRegExp2);\n\n const mp4RegExp = /^.+.(mp4|m4v)$/;\n const mp4Match = url.match(mp4RegExp);\n\n const oggRegExp = /^.+.(ogg|ogv)$/;\n const oggMatch = url.match(oggRegExp);\n\n const webmRegExp = /^.+.(webm)$/;\n const webmMatch = url.match(webmRegExp);\n\n const fbRegExp = /(?:www\\.|\\/\\/)facebook\\.com\\/([^\\/]+)\\/videos\\/([0-9]+)/;\n const fbMatch = url.match(fbRegExp);\n\n let $video;\n if (ytMatch && ytMatch[1].length === 11) {\n const youtubeId = ytMatch[1];\n var start = 0;\n if (typeof ytMatch[2] !== 'undefined') {\n const ytMatchForStart = ytMatch[2].match(ytRegExpForStart);\n if (ytMatchForStart) {\n for (var n = [3600, 60, 1], i = 0, r = n.length; i < r; i++) {\n start += (typeof ytMatchForStart[i + 1] !== 'undefined' ? n[i] * parseInt(ytMatchForStart[i + 1], 10) : 0);\n }\n }\n }\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.youtube.com/embed/' + youtubeId + (start > 0 ? '?start=' + start : ''))\n .attr('width', '640').attr('height', '360');\n } else if (igMatch && igMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://instagram.com/p/' + igMatch[1] + '/embed/')\n .attr('width', '612').attr('height', '710')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else if (vMatch && vMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', vMatch[0] + '/embed/simple')\n .attr('width', '600').attr('height', '600')\n .attr('class', 'vine-embed');\n } else if (vimMatch && vimMatch[3].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('src', '//player.vimeo.com/video/' + vimMatch[3])\n .attr('width', '640').attr('height', '360');\n } else if (dmMatch && dmMatch[2].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', '//www.dailymotion.com/embed/video/' + dmMatch[2])\n .attr('width', '640').attr('height', '360');\n } else if (youkuMatch && youkuMatch[1].length) {\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '498')\n .attr('width', '510')\n .attr('src', '//player.youku.com/embed/' + youkuMatch[1]);\n } else if ((qqMatch && qqMatch[1].length) || (qqMatch2 && qqMatch2[2].length)) {\n const vid = ((qqMatch && qqMatch[1].length) ? qqMatch[1] : qqMatch2[2]);\n $video = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>')\n .attr('frameborder', 0)\n .attr('height', '310')\n .attr('width', '500')\n .attr('src', 'https://v.qq.com/txp/iframe/player.html?vid=' + vid + '&auto=0');\n } else if (mp4Match || oggMatch || webmMatch) {\n $video = $('<video controls>')\n .attr('src', url)\n .attr('width', '640').attr('height', '360');\n } else if (fbMatch && fbMatch[0].length) {\n $video = $('<iframe>')\n .attr('frameborder', 0)\n .attr('src', 'https://www.facebook.com/plugins/video.php?href=' + encodeURIComponent(fbMatch[0]) + '&show_text=0&width=560')\n .attr('width', '560').attr('height', '301')\n .attr('scrolling', 'no')\n .attr('allowtransparency', 'true');\n } else {\n // this is not a known video link. Now what, Cat? Now what?\n return false;\n }\n\n $video.addClass('note-video-clip');\n\n return $video[0];\n }\n\n show() {\n const text = this.context.invoke('editor.getSelectedText');\n this.context.invoke('editor.saveRange');\n this.showVideoDialog(text).then((url) => {\n // [workaround] hide dialog before restore range for IE range focus\n this.ui.hideDialog(this.$dialog);\n this.context.invoke('editor.restoreRange');\n\n // build node\n const $node = this.createVideoNode(url);\n\n if ($node) {\n // insert video node\n this.context.invoke('editor.insertNode', $node);\n }\n }).fail(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n\n /**\n * show video dialog\n *\n * @param {jQuery} $dialog\n * @return {Promise}\n */\n showVideoDialog(/* text */) {\n return $.Deferred((deferred) => {\n const $videoUrl = this.$dialog.find('.note-video-url');\n const $videoBtn = this.$dialog.find('.note-video-btn');\n\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n\n $videoUrl.on('input paste propertychange', () => {\n this.ui.toggleBtn($videoBtn, $videoUrl.val());\n });\n\n if (!env.isSupportTouch) {\n $videoUrl.trigger('focus');\n }\n\n $videoBtn.click((event) => {\n event.preventDefault();\n deferred.resolve($videoUrl.val());\n });\n\n this.bindEnterKey($videoUrl, $videoBtn);\n });\n\n this.ui.onDialogHidden(this.$dialog, () => {\n $videoUrl.off();\n $videoBtn.off();\n\n if (deferred.state() === 'pending') {\n deferred.reject();\n }\n });\n\n this.ui.showDialog(this.$dialog);\n });\n }\n}\n","import $ from 'jquery';\nimport env from '../core/env';\n\nexport default class HelpDialog {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$body = $(document.body);\n this.$editor = context.layoutInfo.editor;\n this.options = context.options;\n this.lang = this.options.langInfo;\n }\n\n initialize() {\n const $container = this.options.dialogsInBody ? this.$body : this.options.container;\n const body = [\n '<p class=\"text-center\">',\n '<a href=\"http://summernote.org/\" target=\"_blank\">Summernote @@VERSION@@</a> · ',\n '<a href=\"https://github.com/summernote/summernote\" target=\"_blank\">Project</a> · ',\n '<a href=\"https://github.com/summernote/summernote/issues\" target=\"_blank\">Issues</a>',\n '</p>',\n ].join('');\n\n this.$dialog = this.ui.dialog({\n title: this.lang.options.help,\n fade: this.options.dialogsFade,\n body: this.createShortcutList(),\n footer: body,\n callback: ($node) => {\n $node.find('.modal-body,.note-modal-body').css({\n 'max-height': 300,\n 'overflow': 'scroll',\n });\n },\n }).render().appendTo($container);\n }\n\n destroy() {\n this.ui.hideDialog(this.$dialog);\n this.$dialog.remove();\n }\n\n createShortcutList() {\n const keyMap = this.options.keyMap[env.isMac ? 'mac' : 'pc'];\n return Object.keys(keyMap).map((key) => {\n const command = keyMap[key];\n const $row = $('<div><div class=\"help-list-item\"></div></div>');\n $row.append($('<label><kbd>' + key + '</kdb></label>').css({\n 'width': 180,\n 'margin-right': 10,\n })).append($('<span/>').html(this.context.memo('help.' + command) || command));\n return $row.html();\n }).join('');\n }\n\n /**\n * show help dialog\n *\n * @return {Promise}\n */\n showHelpDialog() {\n return $.Deferred((deferred) => {\n this.ui.onDialogShown(this.$dialog, () => {\n this.context.triggerEvent('dialog.shown');\n deferred.resolve();\n });\n this.ui.showDialog(this.$dialog);\n }).promise();\n }\n\n show() {\n this.context.invoke('editor.saveRange');\n this.showHelpDialog().then(() => {\n this.context.invoke('editor.restoreRange');\n });\n }\n}\n","import $ from 'jquery';\nimport lists from '../core/lists';\n\nconst AIRMODE_POPOVER_X_OFFSET = -5;\nconst AIRMODE_POPOVER_Y_OFFSET = 5;\n\nexport default class AirPopover {\n constructor(context) {\n this.context = context;\n this.ui = $.summernote.ui;\n this.options = context.options;\n\n this.hidable = true;\n this.onContextmenu = false;\n this.pageX = null;\n this.pageY = null;\n\n this.events = {\n 'summernote.contextmenu': (e) => {\n if (this.options.editing) {\n e.preventDefault();\n e.stopPropagation();\n this.onContextmenu = true;\n this.update(true);\n }\n },\n 'summernote.mousedown': (we, e) => {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n },\n 'summernote.keyup summernote.mouseup summernote.scroll': (we, e) => {\n if (this.options.editing && !this.onContextmenu) {\n this.pageX = e.pageX;\n this.pageY = e.pageY;\n this.update();\n }\n this.onContextmenu = false;\n },\n 'summernote.disable summernote.change summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n 'summernote.focusout': () => {\n if (!this.$popover.is(':active,:focus')) {\n this.hide();\n }\n },\n };\n }\n\n shouldInitialize() {\n return this.options.airMode && !lists.isEmpty(this.options.popover.air);\n }\n\n initialize() {\n this.$popover = this.ui.popover({\n className: 'note-air-popover',\n }).render().appendTo(this.options.container);\n const $content = this.$popover.find('.popover-content');\n\n this.context.invoke('buttons.build', $content, this.options.popover.air);\n\n // disable hiding this popover preemptively by 'summernote.blur' event.\n this.$popover.on('mousedown', () => { this.hidable = false; });\n // (re-)enable hiding after 'summernote.blur' has been handled (aka. ignored).\n this.$popover.on('mouseup', () => { this.hidable = true; });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n update(forcelyOpen) {\n const styleInfo = this.context.invoke('editor.currentStyle');\n if (styleInfo.range && (!styleInfo.range.isCollapsed() || forcelyOpen)) {\n let rect = {\n left: this.pageX,\n top: this.pageY,\n };\n\n const containerOffset = $(this.options.container).offset();\n rect.top -= containerOffset.top;\n rect.left -= containerOffset.left;\n\n this.$popover.css({\n display: 'block',\n left: Math.max(rect.left, 0) + AIRMODE_POPOVER_X_OFFSET,\n top: rect.top + AIRMODE_POPOVER_Y_OFFSET,\n });\n this.context.invoke('buttons.updateCurrentStyle', this.$popover);\n } else {\n this.hide();\n }\n }\n\n updateCodeview(isCodeview) {\n this.ui.toggleBtnActive(this.$popover.find('.btn-codeview'), isCodeview);\n if (isCodeview) {\n this.hide();\n } \n }\n\n hide() {\n if (this.hidable) {\n this.$popover.hide();\n }\n }\n}\n","import $ from 'jquery';\nimport func from '../core/func';\nimport lists from '../core/lists';\nimport dom from '../core/dom';\nimport range from '../core/range';\nimport key from '../core/key';\n\nconst POPOVER_DIST = 5;\n\nexport default class HintPopover {\n constructor(context) {\n this.context = context;\n\n this.ui = $.summernote.ui;\n this.$editable = context.layoutInfo.editable;\n this.options = context.options;\n this.hint = this.options.hint || [];\n this.direction = this.options.hintDirection || 'bottom';\n this.hints = Array.isArray(this.hint) ? this.hint : [this.hint];\n\n this.events = {\n 'summernote.keyup': (we, e) => {\n if (!e.isDefaultPrevented()) {\n this.handleKeyup(e);\n }\n },\n 'summernote.keydown': (we, e) => {\n this.handleKeydown(e);\n },\n 'summernote.disable summernote.dialog.shown summernote.blur': () => {\n this.hide();\n },\n };\n }\n\n shouldInitialize() {\n return this.hints.length > 0;\n }\n\n initialize() {\n this.lastWordRange = null;\n this.matchingWord = null;\n this.$popover = this.ui.popover({\n className: 'note-hint-popover',\n hideArrow: true,\n direction: '',\n }).render().appendTo(this.options.container);\n\n this.$popover.hide();\n this.$content = this.$popover.find('.popover-content,.note-popover-content');\n this.$content.on('click', '.note-hint-item', (e) => {\n this.$content.find('.active').removeClass('active');\n $(e.currentTarget).addClass('active');\n this.replace();\n });\n\n this.$popover.on('mousedown', (e) => { e.preventDefault(); });\n }\n\n destroy() {\n this.$popover.remove();\n }\n\n selectItem($item) {\n this.$content.find('.active').removeClass('active');\n $item.addClass('active');\n\n this.$content[0].scrollTop = $item[0].offsetTop - (this.$content.innerHeight() / 2);\n }\n\n moveDown() {\n const $current = this.$content.find('.note-hint-item.active');\n const $next = $current.next();\n\n if ($next.length) {\n this.selectItem($next);\n } else {\n let $nextGroup = $current.parent().next();\n\n if (!$nextGroup.length) {\n $nextGroup = this.$content.find('.note-hint-group').first();\n }\n\n this.selectItem($nextGroup.find('.note-hint-item').first());\n }\n }\n\n moveUp() {\n const $current = this.$content.find('.note-hint-item.active');\n const $prev = $current.prev();\n\n if ($prev.length) {\n this.selectItem($prev);\n } else {\n let $prevGroup = $current.parent().prev();\n\n if (!$prevGroup.length) {\n $prevGroup = this.$content.find('.note-hint-group').last();\n }\n\n this.selectItem($prevGroup.find('.note-hint-item').last());\n }\n }\n\n replace() {\n const $item = this.$content.find('.note-hint-item.active');\n\n if ($item.length) {\n var node = this.nodeFromItem($item);\n // If matchingWord length = 0 -> capture OK / open hint / but as mention capture \"\" (\\w*)\n if (this.matchingWord !== null && this.matchingWord.length === 0) {\n this.lastWordRange.so = this.lastWordRange.eo;\n // Else si > 0 and normal case -> adjust range \"before\" for correct position of insertion\n } else if (this.matchingWord !== null && this.matchingWord.length > 0 && !this.lastWordRange.isCollapsed()) {\n let rangeCompute = this.lastWordRange.eo - this.lastWordRange.so - this.matchingWord.length;\n if (rangeCompute > 0) {\n this.lastWordRange.so += rangeCompute;\n }\n }\n this.lastWordRange.insertNode(node);\n\n if (this.options.hintSelect === 'next') {\n var blank = document.createTextNode('');\n $(node).after(blank);\n range.createFromNodeBefore(blank).select();\n } else {\n range.createFromNodeAfter(node).select();\n }\n\n this.lastWordRange = null;\n this.hide();\n this.context.invoke('editor.focus');\n }\n }\n\n nodeFromItem($item) {\n const hint = this.hints[$item.data('index')];\n const item = $item.data('item');\n let node = hint.content ? hint.content(item) : item;\n if (typeof node === 'string') {\n node = dom.createText(node);\n }\n return node;\n }\n\n createItemTemplates(hintIdx, items) {\n const hint = this.hints[hintIdx];\n return items.map((item /*, idx */) => {\n const $item = $('<div class=\"note-hint-item\"/>');\n $item.append(hint.template ? hint.template(item) : item + '');\n $item.data({\n 'index': hintIdx,\n 'item': item,\n });\n return $item;\n });\n }\n\n handleKeydown(e) {\n if (!this.$popover.is(':visible')) {\n return;\n }\n\n if (e.keyCode === key.code.ENTER) {\n e.preventDefault();\n this.replace();\n } else if (e.keyCode === key.code.UP) {\n e.preventDefault();\n this.moveUp();\n } else if (e.keyCode === key.code.DOWN) {\n e.preventDefault();\n this.moveDown();\n }\n }\n\n searchKeyword(index, keyword, callback) {\n const hint = this.hints[index];\n if (hint && hint.match.test(keyword) && hint.search) {\n const matches = hint.match.exec(keyword);\n this.matchingWord = matches[0];\n hint.search(matches[1], callback);\n } else {\n callback();\n }\n }\n\n createGroup(idx, keyword) {\n const $group = $('<div class=\"note-hint-group note-hint-group-' + idx + '\"></div>');\n this.searchKeyword(idx, keyword, (items) => {\n items = items || [];\n if (items.length) {\n $group.html(this.createItemTemplates(idx, items));\n this.show();\n }\n });\n\n return $group;\n }\n\n handleKeyup(e) {\n if (!lists.contains([key.code.ENTER, key.code.UP, key.code.DOWN], e.keyCode)) {\n let range = this.context.invoke('editor.getLastRange');\n let wordRange, keyword;\n if (this.options.hintMode === 'words') {\n wordRange = range.getWordsRange(range);\n keyword = wordRange.toString();\n\n this.hints.forEach((hint) => {\n if (hint.match.test(keyword)) {\n wordRange = range.getWordsMatchRange(hint.match);\n return false;\n }\n });\n\n if (!wordRange) {\n this.hide();\n return;\n }\n\n keyword = wordRange.toString();\n } else {\n wordRange = range.getWordRange();\n keyword = wordRange.toString();\n }\n\n if (this.hints.length && keyword) {\n this.$content.empty();\n\n const bnd = func.rect2bnd(lists.last(wordRange.getClientRects()));\n const containerOffset = $(this.options.container).offset();\n if (bnd) {\n bnd.top -= containerOffset.top;\n bnd.left -= containerOffset.left;\n\n this.$popover.hide();\n this.lastWordRange = wordRange;\n this.hints.forEach((hint, idx) => {\n if (hint.match.test(keyword)) {\n this.createGroup(idx, keyword).appendTo(this.$content);\n }\n });\n // select first .note-hint-item\n this.$content.find('.note-hint-item:first').addClass('active');\n\n // set position for popover after group is created\n if (this.direction === 'top') {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top - this.$popover.outerHeight() - POPOVER_DIST,\n });\n } else {\n this.$popover.css({\n left: bnd.left,\n top: bnd.top + bnd.height + POPOVER_DIST,\n });\n }\n }\n } else {\n this.hide();\n }\n }\n }\n\n show() {\n this.$popover.show();\n }\n\n hide() {\n this.$popover.hide();\n }\n}\n","import $ from 'jquery';\nimport './summernote-en-US';\nimport '../summernote';\nimport dom from './core/dom';\nimport range from './core/range';\nimport lists from './core/lists';\nimport Editor from './module/Editor';\nimport Clipboard from './module/Clipboard';\nimport Dropzone from './module/Dropzone';\nimport Codeview from './module/Codeview';\nimport Statusbar from './module/Statusbar';\nimport Fullscreen from './module/Fullscreen';\nimport Handle from './module/Handle';\nimport AutoLink from './module/AutoLink';\nimport AutoSync from './module/AutoSync';\nimport AutoReplace from './module/AutoReplace';\nimport Placeholder from './module/Placeholder';\nimport Buttons from './module/Buttons';\nimport Toolbar from './module/Toolbar';\nimport LinkDialog from './module/LinkDialog';\nimport LinkPopover from './module/LinkPopover';\nimport ImageDialog from './module/ImageDialog';\nimport ImagePopover from './module/ImagePopover';\nimport TablePopover from './module/TablePopover';\nimport VideoDialog from './module/VideoDialog';\nimport HelpDialog from './module/HelpDialog';\nimport AirPopover from './module/AirPopover';\nimport HintPopover from './module/HintPopover';\n\n$.summernote = $.extend($.summernote, {\n version: '@@VERSION@@',\n plugins: {},\n\n dom: dom,\n range: range,\n lists: lists,\n\n options: {\n langInfo: $.summernote.lang['en-US'],\n editing: true,\n modules: {\n 'editor': Editor,\n 'clipboard': Clipboard,\n 'dropzone': Dropzone,\n 'codeview': Codeview,\n 'statusbar': Statusbar,\n 'fullscreen': Fullscreen,\n 'handle': Handle,\n // FIXME: HintPopover must be front of autolink\n // - Script error about range when Enter key is pressed on hint popover\n 'hintPopover': HintPopover,\n 'autoLink': AutoLink,\n 'autoSync': AutoSync,\n 'autoReplace': AutoReplace,\n 'placeholder': Placeholder,\n 'buttons': Buttons,\n 'toolbar': Toolbar,\n 'linkDialog': LinkDialog,\n 'linkPopover': LinkPopover,\n 'imageDialog': ImageDialog,\n 'imagePopover': ImagePopover,\n 'tablePopover': TablePopover,\n 'videoDialog': VideoDialog,\n 'helpDialog': HelpDialog,\n 'airPopover': AirPopover,\n },\n\n buttons: {},\n\n lang: 'en-US',\n\n followingToolbar: false,\n toolbarPosition: 'top',\n otherStaticBar: '',\n\n // toolbar\n codeviewKeepButton: false,\n toolbar: [\n ['style', ['style']],\n ['font', ['bold', 'underline', 'clear']],\n ['fontname', ['fontname']],\n ['color', ['color']],\n ['para', ['ul', 'ol', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture', 'video']],\n ['view', ['fullscreen', 'codeview', 'help']],\n ],\n\n // popover\n popatmouse: true,\n popover: {\n image: [\n ['resize', ['resizeFull', 'resizeHalf', 'resizeQuarter', 'resizeNone']],\n ['float', ['floatLeft', 'floatRight', 'floatNone']],\n ['remove', ['removeMedia']],\n ],\n link: [\n ['link', ['linkDialogShow', 'unlink']],\n ],\n table: [\n ['add', ['addRowDown', 'addRowUp', 'addColLeft', 'addColRight']],\n ['delete', ['deleteRow', 'deleteCol', 'deleteTable']],\n ],\n air: [\n ['color', ['color']],\n ['font', ['bold', 'underline', 'clear']],\n ['para', ['ul', 'paragraph']],\n ['table', ['table']],\n ['insert', ['link', 'picture']],\n ['view', ['fullscreen', 'codeview']],\n ],\n },\n\n // air mode: inline editor\n airMode: false,\n overrideContextMenu: false, // TBD\n\n width: null,\n height: null,\n linkTargetBlank: true,\n useProtocol: true,\n defaultProtocol: 'http://',\n\n focus: false,\n tabDisabled: false,\n tabSize: 4,\n styleWithCSS: false,\n shortcuts: true,\n textareaAutoSync: true,\n tooltip: 'auto',\n container: null,\n maxTextLength: 0,\n blockquoteBreakingLevel: 2,\n spellCheck: true,\n disableGrammar: false,\n placeholder: null,\n inheritPlaceholder: false,\n // TODO: need to be documented\n recordEveryKeystroke: false,\n historyLimit: 200,\n\n // TODO: need to be documented\n showDomainOnlyForAutolink: false,\n\n // TODO: need to be documented\n hintMode: 'word',\n hintSelect: 'after',\n hintDirection: 'bottom',\n\n styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n fontNames: [\n 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New',\n 'Helvetica Neue', 'Helvetica', 'Impact', 'Lucida Grande',\n 'Tahoma', 'Times New Roman', 'Verdana',\n ],\n fontNamesIgnoreCheck: [],\n addDefaultFonts: true,\n\n fontSizes: ['8', '9', '10', '11', '12', '14', '18', '24', '36'],\n\n fontSizeUnits: ['px', 'pt'],\n\n // pallete colors(n x n)\n colors: [\n ['#000000', '#424242', '#636363', '#9C9C94', '#CEC6CE', '#EFEFEF', '#F7F7F7', '#FFFFFF'],\n ['#FF0000', '#FF9C00', '#FFFF00', '#00FF00', '#00FFFF', '#0000FF', '#9C00FF', '#FF00FF'],\n ['#F7C6CE', '#FFE7CE', '#FFEFC6', '#D6EFD6', '#CEDEE7', '#CEE7F7', '#D6D6E7', '#E7D6DE'],\n ['#E79C9C', '#FFC69C', '#FFE79C', '#B5D6A5', '#A5C6CE', '#9CC6EF', '#B5A5D6', '#D6A5BD'],\n ['#E76363', '#F7AD6B', '#FFD663', '#94BD7B', '#73A5AD', '#6BADDE', '#8C7BC6', '#C67BA5'],\n ['#CE0000', '#E79439', '#EFC631', '#6BA54A', '#4A7B8C', '#3984C6', '#634AA5', '#A54A7B'],\n ['#9C0000', '#B56308', '#BD9400', '#397B21', '#104A5A', '#085294', '#311873', '#731842'],\n ['#630000', '#7B3900', '#846300', '#295218', '#083139', '#003163', '#21104A', '#4A1031'],\n ],\n\n // http://chir.ag/projects/name-that-color/\n colorsName: [\n ['Black', 'Tundora', 'Dove Gray', 'Star Dust', 'Pale Slate', 'Gallery', 'Alabaster', 'White'],\n ['Red', 'Orange Peel', 'Yellow', 'Green', 'Cyan', 'Blue', 'Electric Violet', 'Magenta'],\n ['Azalea', 'Karry', 'Egg White', 'Zanah', 'Botticelli', 'Tropical Blue', 'Mischka', 'Twilight'],\n ['Tonys Pink', 'Peach Orange', 'Cream Brulee', 'Sprout', 'Casper', 'Perano', 'Cold Purple', 'Careys Pink'],\n ['Mandy', 'Rajah', 'Dandelion', 'Olivine', 'Gulf Stream', 'Viking', 'Blue Marguerite', 'Puce'],\n ['Guardsman Red', 'Fire Bush', 'Golden Dream', 'Chelsea Cucumber', 'Smalt Blue', 'Boston Blue', 'Butterfly Bush', 'Cadillac'],\n ['Sangria', 'Mai Tai', 'Buddha Gold', 'Forest Green', 'Eden', 'Venice Blue', 'Meteorite', 'Claret'],\n ['Rosewood', 'Cinnamon', 'Olive', 'Parsley', 'Tiber', 'Midnight Blue', 'Valentino', 'Loulou'],\n ],\n\n colorButton: {\n foreColor: '#000000',\n backColor: '#FFFF00',\n },\n\n lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'],\n\n tableClassName: 'table table-bordered',\n\n insertTableMaxSize: {\n col: 10,\n row: 10,\n },\n\n // By default, dialogs are attached in container.\n dialogsInBody: false,\n dialogsFade: false,\n\n maximumImageFileSize: null,\n\n callbacks: {\n onBeforeCommand: null,\n onBlur: null,\n onBlurCodeview: null,\n onChange: null,\n onChangeCodeview: null,\n onDialogShown: null,\n onEnter: null,\n onFocus: null,\n onImageLinkInsert: null,\n onImageUpload: null,\n onImageUploadError: null,\n onInit: null,\n onKeydown: null,\n onKeyup: null,\n onMousedown: null,\n onMouseup: null,\n onPaste: null,\n onScroll: null,\n },\n\n codemirror: {\n mode: 'text/html',\n htmlMode: true,\n lineNumbers: true,\n },\n\n codeviewFilter: false,\n codeviewFilterRegex: /<\\/*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|ilayer|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|t(?:itle|extarea)|xml)[^>]*?>/gi,\n codeviewIframeFilter: true,\n codeviewIframeWhitelistSrc: [],\n codeviewIframeWhitelistSrcBase: [\n 'www.youtube.com',\n 'www.youtube-nocookie.com',\n 'www.facebook.com',\n 'vine.co',\n 'instagram.com',\n 'player.vimeo.com',\n 'www.dailymotion.com',\n 'player.youku.com',\n 'v.qq.com',\n ],\n\n keyMap: {\n pc: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CTRL+Z': 'undo',\n 'CTRL+Y': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CTRL+B': 'bold',\n 'CTRL+I': 'italic',\n 'CTRL+U': 'underline',\n 'CTRL+SHIFT+S': 'strikethrough',\n 'CTRL+BACKSLASH': 'removeFormat',\n 'CTRL+SHIFT+L': 'justifyLeft',\n 'CTRL+SHIFT+E': 'justifyCenter',\n 'CTRL+SHIFT+R': 'justifyRight',\n 'CTRL+SHIFT+J': 'justifyFull',\n 'CTRL+SHIFT+NUM7': 'insertUnorderedList',\n 'CTRL+SHIFT+NUM8': 'insertOrderedList',\n 'CTRL+LEFTBRACKET': 'outdent',\n 'CTRL+RIGHTBRACKET': 'indent',\n 'CTRL+NUM0': 'formatPara',\n 'CTRL+NUM1': 'formatH1',\n 'CTRL+NUM2': 'formatH2',\n 'CTRL+NUM3': 'formatH3',\n 'CTRL+NUM4': 'formatH4',\n 'CTRL+NUM5': 'formatH5',\n 'CTRL+NUM6': 'formatH6',\n 'CTRL+ENTER': 'insertHorizontalRule',\n 'CTRL+K': 'linkDialog.show',\n },\n\n mac: {\n 'ESC': 'escape',\n 'ENTER': 'insertParagraph',\n 'CMD+Z': 'undo',\n 'CMD+SHIFT+Z': 'redo',\n 'TAB': 'tab',\n 'SHIFT+TAB': 'untab',\n 'CMD+B': 'bold',\n 'CMD+I': 'italic',\n 'CMD+U': 'underline',\n 'CMD+SHIFT+S': 'strikethrough',\n 'CMD+BACKSLASH': 'removeFormat',\n 'CMD+SHIFT+L': 'justifyLeft',\n 'CMD+SHIFT+E': 'justifyCenter',\n 'CMD+SHIFT+R': 'justifyRight',\n 'CMD+SHIFT+J': 'justifyFull',\n 'CMD+SHIFT+NUM7': 'insertUnorderedList',\n 'CMD+SHIFT+NUM8': 'insertOrderedList',\n 'CMD+LEFTBRACKET': 'outdent',\n 'CMD+RIGHTBRACKET': 'indent',\n 'CMD+NUM0': 'formatPara',\n 'CMD+NUM1': 'formatH1',\n 'CMD+NUM2': 'formatH2',\n 'CMD+NUM3': 'formatH3',\n 'CMD+NUM4': 'formatH4',\n 'CMD+NUM5': 'formatH5',\n 'CMD+NUM6': 'formatH6',\n 'CMD+ENTER': 'insertHorizontalRule',\n 'CMD+K': 'linkDialog.show',\n },\n },\n icons: {\n 'align': 'note-icon-align',\n 'alignCenter': 'note-icon-align-center',\n 'alignJustify': 'note-icon-align-justify',\n 'alignLeft': 'note-icon-align-left',\n 'alignRight': 'note-icon-align-right',\n 'rowBelow': 'note-icon-row-below',\n 'colBefore': 'note-icon-col-before',\n 'colAfter': 'note-icon-col-after',\n 'rowAbove': 'note-icon-row-above',\n 'rowRemove': 'note-icon-row-remove',\n 'colRemove': 'note-icon-col-remove',\n 'indent': 'note-icon-align-indent',\n 'outdent': 'note-icon-align-outdent',\n 'arrowsAlt': 'note-icon-arrows-alt',\n 'bold': 'note-icon-bold',\n 'caret': 'note-icon-caret',\n 'circle': 'note-icon-circle',\n 'close': 'note-icon-close',\n 'code': 'note-icon-code',\n 'eraser': 'note-icon-eraser',\n 'floatLeft': 'note-icon-float-left',\n 'floatRight': 'note-icon-float-right',\n 'font': 'note-icon-font',\n 'frame': 'note-icon-frame',\n 'italic': 'note-icon-italic',\n 'link': 'note-icon-link',\n 'unlink': 'note-icon-chain-broken',\n 'magic': 'note-icon-magic',\n 'menuCheck': 'note-icon-menu-check',\n 'minus': 'note-icon-minus',\n 'orderedlist': 'note-icon-orderedlist',\n 'pencil': 'note-icon-pencil',\n 'picture': 'note-icon-picture',\n 'question': 'note-icon-question',\n 'redo': 'note-icon-redo',\n 'rollback': 'note-icon-rollback',\n 'square': 'note-icon-square',\n 'strikethrough': 'note-icon-strikethrough',\n 'subscript': 'note-icon-subscript',\n 'superscript': 'note-icon-superscript',\n 'table': 'note-icon-table',\n 'textHeight': 'note-icon-text-height',\n 'trash': 'note-icon-trash',\n 'underline': 'note-icon-underline',\n 'undo': 'note-icon-undo',\n 'unorderedlist': 'note-icon-unorderedlist',\n 'video': 'note-icon-video',\n },\n },\n});\n","import $ from 'jquery';\nimport renderer from '../base/renderer';\n\nconst editor = renderer.create('<div class=\"note-editor note-frame panel panel-default\"/>');\nconst toolbar = renderer.create('<div class=\"panel-heading note-toolbar\" role=\"toolbar\"/>');\nconst editingArea = renderer.create('<div class=\"note-editing-area\"/>');\nconst codable = renderer.create('<textarea class=\"note-codable\" aria-multiline=\"true\"/>');\nconst editable = renderer.create('<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"/>');\nconst statusbar = renderer.create([\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n '<div class=\"note-statusbar\" role=\"status\">',\n '<div class=\"note-resizebar\" aria-label=\"Resize\">',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '<div class=\"note-icon-bar\"></div>',\n '</div>',\n '</div>',\n].join(''));\n\nconst airEditor = renderer.create('<div class=\"note-editor note-airframe\"/>');\nconst airEditable = renderer.create([\n '<div class=\"note-editable\" contentEditable=\"true\" role=\"textbox\" aria-multiline=\"true\"></div>',\n '<output class=\"note-status-output\" role=\"status\" aria-live=\"polite\"></output>',\n].join(''));\n\nconst buttonGroup = renderer.create('<div class=\"note-btn-group btn-group\">');\n\nconst dropdown = renderer.create('<ul class=\"note-dropdown-menu dropdown-menu\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n const option = (typeof item === 'object') ? item.option : undefined;\n\n const dataValue = 'data-value=\"' + value + '\"';\n const dataOption = (option !== undefined) ? ' data-option=\"' + option + '\"' : '';\n return '<li aria-label=\"' + value + '\"><a href=\"#\" ' + (dataValue + dataOption) + '>' + content + '</a></li>';\n }).join('') : options.items;\n\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dropdownButtonContents = function(contents, options) {\n return contents + ' ' + icon(options.icons.caret, 'span');\n};\n\nconst dropdownCheck = renderer.create('<ul class=\"note-dropdown-menu dropdown-menu note-check\">', function($node, options) {\n const markup = Array.isArray(options.items) ? options.items.map(function(item) {\n const value = (typeof item === 'string') ? item : (item.value || '');\n const content = options.template ? options.template(item) : item;\n return '<li aria-label=\"' + item + '\"><a href=\"#\" data-value=\"' + value + '\">' + icon(options.checkClassName) + ' ' + content + '</a></li>';\n }).join('') : options.items;\n $node.html(markup).attr({ 'aria-label': options.title });\n\n if (options && options.codeviewKeepButton) {\n $node.addClass('note-codeview-keep');\n }\n});\n\nconst dialog = renderer.create('<div class=\"modal note-modal\" aria-hidden=\"false\" tabindex=\"-1\" role=\"dialog\"/>', function($node, options) {\n if (options.fade) {\n $node.addClass('fade');\n }\n $node.attr({\n 'aria-label': options.title,\n });\n $node.html([\n '<div class=\"modal-dialog\">',\n '<div class=\"modal-content\">',\n (options.title ? '<div class=\"modal-header\">' +\n '<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\" aria-hidden=\"true\">×</button>' +\n '<h4 class=\"modal-title\">' + options.title + '</h4>' +\n '</div>' : ''),\n '<div class=\"modal-body\">' + options.body + '</div>',\n (options.footer ? '<div class=\"modal-footer\">' + options.footer + '</div>' : ''),\n '</div>',\n '</div>',\n ].join(''));\n});\n\nconst popover = renderer.create([\n '<div class=\"note-popover popover in\">',\n '<div class=\"arrow\"></div>',\n '<div class=\"popover-content note-children-container\"></div>',\n '</div>',\n].join(''), function($node, options) {\n const direction = typeof options.direction !== 'undefined' ? options.direction : 'bottom';\n\n $node.addClass(direction);\n\n if (options.hideArrow) {\n $node.find('.arrow').hide();\n }\n});\n\nconst checkbox = renderer.create('<div class=\"checkbox\"></div>', function($node, options) {\n $node.html([\n '<label' + (options.id ? ' for=\"note-' + options.id + '\"' : '') + '>',\n '<input type=\"checkbox\"' + (options.id ? ' id=\"note-' + options.id + '\"' : ''),\n (options.checked ? ' checked' : ''),\n ' aria-checked=\"' + (options.checked ? 'true' : 'false') + '\"/>',\n (options.text ? options.text : ''),\n '</label>',\n ].join(''));\n});\n\nconst icon = function(iconClassName, tagName) {\n tagName = tagName || 'i';\n return '<' + tagName + ' class=\"' + iconClassName + '\"></' + tagName+'>';\n};\n\nconst ui = function(editorOptions) {\n return {\n editor: editor,\n toolbar: toolbar,\n editingArea: editingArea,\n codable: codable,\n editable: editable,\n statusbar: statusbar,\n airEditor: airEditor,\n airEditable: airEditable,\n buttonGroup: buttonGroup,\n dropdown: dropdown,\n dropdownButtonContents: dropdownButtonContents,\n dropdownCheck: dropdownCheck,\n dialog: dialog,\n popover: popover,\n checkbox: checkbox,\n icon: icon,\n options: editorOptions,\n\n palette: function($node, options) {\n return renderer.create('<div class=\"note-color-palette\"/>', function($node, options) {\n const contents = [];\n for (let row = 0, rowSize = options.colors.length; row < rowSize; row++) {\n const eventName = options.eventName;\n const colors = options.colors[row];\n const colorsName = options.colorsName[row];\n const buttons = [];\n for (let col = 0, colSize = colors.length; col < colSize; col++) {\n const color = colors[col];\n const colorName = colorsName[col];\n buttons.push([\n '<button type=\"button\" class=\"note-color-btn\"',\n 'style=\"background-color:', color, '\" ',\n 'data-event=\"', eventName, '\" ',\n 'data-value=\"', color, '\" ',\n 'title=\"', colorName, '\" ',\n 'aria-label=\"', colorName, '\" ',\n 'data-toggle=\"button\" tabindex=\"-1\"></button>',\n ].join(''));\n }\n contents.push('<div class=\"note-color-row\">' + buttons.join('') + '</div>');\n }\n $node.html(contents.join(''));\n\n if (options.tooltip) {\n $node.find('.note-color-btn').tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n });\n }\n })($node, options);\n },\n\n button: function($node, options) {\n return renderer.create('<button type=\"button\" class=\"note-btn btn btn-default btn-sm\" tabindex=\"-1\">', function($node, options) {\n if (options && options.tooltip) {\n $node.attr({\n title: options.tooltip,\n 'aria-label': options.tooltip,\n }).tooltip({\n container: options.container || editorOptions.container,\n trigger: 'hover',\n placement: 'bottom',\n }).on('click', (e) => {\n $(e.currentTarget).tooltip('hide');\n });\n }\n if (options && options.codeviewButton) {\n $node.addClass('note-codeview-keep');\n }\n })($node, options);\n },\n\n toggleBtn: function($btn, isEnable) {\n $btn.toggleClass('disabled', !isEnable);\n $btn.attr('disabled', !isEnable);\n },\n\n toggleBtnActive: function($btn, isActive) {\n $btn.toggleClass('active', isActive);\n },\n\n onDialogShown: function($dialog, handler) {\n $dialog.one('shown.bs.modal', handler);\n },\n\n onDialogHidden: function($dialog, handler) {\n $dialog.one('hidden.bs.modal', handler);\n },\n\n showDialog: function($dialog) {\n $dialog.modal('show');\n },\n\n hideDialog: function($dialog) {\n $dialog.modal('hide');\n },\n\n createLayout: function($note) {\n const $editor = (editorOptions.airMode ? airEditor([\n editingArea([\n codable(),\n airEditable(),\n ]),\n ]) : (editorOptions.toolbarPosition === 'bottom'\n ? editor([\n editingArea([\n codable(),\n editable(),\n ]),\n toolbar(),\n statusbar(),\n ])\n : editor([\n toolbar(),\n editingArea([\n codable(),\n editable(),\n ]),\n statusbar(),\n ])\n )).render();\n\n $editor.insertAfter($note);\n\n return {\n note: $note,\n editor: $editor,\n toolbar: $editor.find('.note-toolbar'),\n editingArea: $editor.find('.note-editing-area'),\n editable: $editor.find('.note-editable'),\n codable: $editor.find('.note-codable'),\n statusbar: $editor.find('.note-statusbar'),\n };\n },\n\n removeLayout: function($note, layoutInfo) {\n $note.html(layoutInfo.editable.html());\n layoutInfo.editor.remove();\n $note.show();\n },\n };\n};\n\nexport default ui;\n","import $ from 'jquery';\nimport ui from './ui';\nimport '../base/settings.js';\n\nimport '../../styles/summernote-bs3.scss';\n\n$.summernote = $.extend($.summernote, {\n ui_template: ui,\n interface: 'bs3',\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000000000000000000000000000000000000..0acec35b49c4db2b17c49654e34c4cb0853f5f49 --- /dev/null +++ b/index.php @@ -0,0 +1,21 @@ +<?php +include 'admin/includes/config.php'; + +if ($installed == false) { + include 'admin/includes/notinstalled.php'; +} else { + include 'admin/includes/constants.php'; + require 'admin/includes/browser-check.php'; + $browser = new Browser(); + if( $browser->getBrowser() == Browser::BROWSER_CHROME && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; + } else { + $oldWebBrowser = true; + } + + $themeJsonFileContents = file_get_contents("themes/".getParameters("theme")."/theme.json"); + $themeJsonFileContents = json_decode($themeJsonFileContents); + include ('themes/'.getParameters("theme")."/".$themeJsonFileContents->index); +} + +?> diff --git a/themes/demo/assets/images/themeTopImage.jpg b/themes/demo/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae5e38d3a0badb88d1357b0eb06e42b7b6fbf75f Binary files /dev/null and b/themes/demo/assets/images/themeTopImage.jpg differ diff --git a/themes/demo/assets/includes/customFeatures.php b/themes/demo/assets/includes/customFeatures.php new file mode 100644 index 0000000000000000000000000000000000000000..4b6e253faa3d861ce1a76310055ce8be71a665ad --- /dev/null +++ b/themes/demo/assets/includes/customFeatures.php @@ -0,0 +1,8 @@ +<?php +function customSidebar (){ + echo ('<a href="themeFeature.php?p=feature1" class="list-group-item list-group-item-action bg-light">test</a>'); +} +function customPage($page){ + return "../themes/demo/assets/includes/".$page; +} +?> \ No newline at end of file diff --git a/themes/demo/assets/includes/feature1 b/themes/demo/assets/includes/feature1 new file mode 100644 index 0000000000000000000000000000000000000000..d41ee3bbc8b076c60f545f8e1821c0018e253451 --- /dev/null +++ b/themes/demo/assets/includes/feature1 @@ -0,0 +1,4 @@ +<div class="page-content container-fluid"> + <h1>Hey salut toi!</h1> + <p>Comment ça va? :)</p> +</div> \ No newline at end of file diff --git a/themes/demo/index.php b/themes/demo/index.php new file mode 100644 index 0000000000000000000000000000000000000000..d0fd56eb4d49cf17f3693748188ce60b29541b0e --- /dev/null +++ b/themes/demo/index.php @@ -0,0 +1,55 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title><?=getParameters("siteName")?></title> + <link rel="icon" type="image/png" href="admin/images/vbcms-logo-mini.png" /> + <link rel="stylesheet" type="text/css" href="admin/css/fonts.css"> +</head> +<body> + <style type="text/css"> + body{ + background-image: url("admin/images/black-back-pattern-10.jpg"); + color: white; + } + .centerDiv{ + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 50%; + height: 30%; + + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + font-family: "LTKaliber Bold"; + color: white; + font-size: 1.5em; + } + .centerDiv img{ + width: 20%; + } + .btn{ + background: #ed1c24; + border-radius: 10px; + padding: 20px 45px; + color: #ffffff; + display: inline-block; + font: normal bold 26px/1 "LTKaliber Bold"; + text-align: center; + } + a{ + text-decoration: none; + } + </style> + <div class="centerDiv"> + <img src="admin/images/vbcms-logo-dark.png"> + <p>Ceci est le thème par défaut. Changes le et profites fonctionnalités! :D</p> + <a class="btn" href="admin/themes.php">Changer le thème</a> + </div> +</body> +</html> \ No newline at end of file diff --git a/themes/demo/theme.json b/themes/demo/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..f1ca0f539b8921163dacf209318168c1d0290c8b --- /dev/null +++ b/themes/demo/theme.json @@ -0,0 +1,11 @@ +{ + "name": "demo", + "showname": "Démo", + "version": "1.0", + "compatible": "1.1a", + "author": "SofianeLasri", + "description": "Ceci est le thème de démo, change pour un autre thème. ;)", + "index": "index.php", + "features": [], + "include": "assets/includes/customFeatures.php" +} \ No newline at end of file diff --git a/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot new file mode 100644 index 0000000000000000000000000000000000000000..1fc7e1c07ecb7077d5eca9f6a67bd39aacdc55c1 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot differ diff --git a/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg new file mode 100644 index 0000000000000000000000000000000000000000..b51c9685a7d1c7f448bfd3d9a8dc09aff8452c0a --- /dev/null +++ b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg @@ -0,0 +1,4899 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Aug 27 15:54:36 2019 + By www +Copyright (c) 2008 - 2009 Linotype GmbH, www.linotype.com. All rights reserved. This font software may not be reproduced, modified, disclosed or transferred without the express written approval of Linotype GmbH. +</metadata> +<defs> +<font id="DINNextLTPro-Condensed" horiz-adv-x="386" > + <font-face + font-family="DIN Next LT Pro Condensed" + font-weight="400" + font-stretch="condensed" + units-per-em="1000" + panose-1="2 11 5 6 2 2 3 5 2 3" + ascent="750" + descent="-250" + x-height="479" + cap-height="680" + bbox="-82.6923 -210 835 903" + underline-thickness="50" + underline-position="-50" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="376" +d="M0 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10h-356q-10 0 -10 10zM48 52q0 -6 6 -6h267q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576zM171 222q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44q0 -11 -11 -9 +l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10h-33zM159 124v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10h-38q-10 0 -10 10z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="542" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM225 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41z" /> + <glyph glyph-name="ij" unicode="ij" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM321 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM213 -180h-12q-10 0 -10 10v52 +q0 10 10 10h11q21 2 30 13t9 37v527q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="napostrophe" unicode=""n" horiz-adv-x="393" +d="M12 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="488" +d="M141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57 +q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="fi" unicode="fi" horiz-adv-x="437" +d="M371 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM368 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18 +q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="fl" unicode="fl" horiz-adv-x="465" +d="M425 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10 +h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="681" +d="M615 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM612 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18 +q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53 +q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="709" +d="M669 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10 +h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10 +t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name=".notdef" horiz-adv-x="376" +d="M0 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10h-356q-10 0 -10 10zM48 52q0 -6 6 -6h267q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576zM171 222q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44q0 -11 -11 -9 +l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10h-33zM159 124v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10h-38q-10 0 -10 10z" /> + <glyph glyph-name=".null" horiz-adv-x="500" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="190" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="227" +d="M97 170q-10 0 -10 10l-16 490q0 10 10 10h65q10 0 10 -10l-16 -490q0 -10 -10 -10h-33zM71 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="254" +d="M163 506q-10 0 -10 10v154q0 10 10 10h40q10 0 10 -10v-154q0 -10 -10 -10h-40zM51 506q-10 0 -10 10v154q0 10 10 10h39q10 0 10 -10v-154q0 -10 -10 -10h-39z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="512" +d="M101 10l22 213h-53q-10 0 -10 10v38q0 10 10 10h59l15 141h-56q-10 0 -10 10v37q0 10 10 10h62l20 191q2 10 11 10h39q11 0 9 -10l-20 -191h115l20 191q2 10 11 10h39q11 0 9 -10l-20 -191h59q10 0 10 -10v-37q0 -10 -10 -10h-65l-15 -141h61q10 0 10 -10v-38 +q0 -10 -10 -10h-67l-22 -213q-2 -10 -11 -10h-39q-11 0 -9 10l22 213h-115l-22 -213q-2 -10 -11 -10h-39q-11 0 -9 10zM188 281h115l15 141h-115z" /> + <glyph glyph-name="dollar" unicode="$" +d="M42 162q0 10 8 11l52 9q11 1 11 -9q1 -54 16 -78.5t47 -29.5v254l-19 8q-62 24 -85 64t-23 120q0 168 127 177v41q0 10 10 10h15q10 0 10 -10v-41q61 -6 90 -45t34 -112q1 -9 -8 -11l-51 -8q-9 -2 -11 8q-3 45 -15 67t-39 27v-223l19 -7q62 -24 86 -65.5t24 -127.5 +q0 -100 -31 -147t-98 -52v-59q0 -10 -10 -10h-15q-10 0 -10 10v59q-67 4 -99 46t-35 124zM176 405v209q-28 -4 -40.5 -27.5t-12.5 -71.5t11 -71.5t42 -38.5zM211 65q29 4 42 30t13 87q0 54 -12 81t-43 42v-240z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="649" +d="M172 1l246 678q4 10 13 10h38q10 0 7 -10l-245 -678q-4 -10 -13 -10h-39q-10 0 -7 10zM154 329q-68 0 -87 58q-7 22 -7 121q0 98 7 120q19 58 87 58t86 -58q7 -22 7 -120q0 -99 -7 -121q-18 -58 -86 -58zM154 381q26 0 32 22q4 9 4 105q0 95 -4 104q-6 22 -32 22 +q-25 0 -33 -22q-4 -14 -4 -104q0 -91 4 -105q8 -22 33 -22zM408 52q-7 22 -7 120q0 99 7 121q19 58 87 58t86 -58q8 -22 8 -121q0 -98 -8 -120q-18 -58 -86 -58t-87 58zM462 68q8 -22 33 -22q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-25 0 -33 -22q-4 -14 -4 -105 +q0 -90 4 -104z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="533" +d="M66 139q0 48 28.5 98.5t95.5 129.5l-14 24q-62 107 -62 164q0 61 37 97.5t95 36.5q59 0 96 -36.5t37 -97.5q0 -41 -22.5 -84t-80.5 -111l87 -151l46 80q5 9 13 4l39 -22q8 -5 3 -14l-63 -113l28 -48q14 -26 31 -26h4q10 0 10 -10v-50q0 -10 -10 -10h-22q-24 0 -36.5 8 +t-25.5 31l-21 36q-60 -84 -149 -84q-67 0 -105.5 40t-38.5 108zM239 424q41 48 55 75.5t14 57.5q0 33 -16.5 51t-44.5 18t-44.5 -18t-16.5 -51q0 -39 53 -133zM138 141q0 -38 20.5 -59.5t55.5 -21.5q30 0 55 17.5t53 60.5l-95 165q-49 -57 -69 -92.5t-20 -69.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="141" +d="M51 506q-10 0 -10 10v154q0 10 10 10h39q10 0 10 -10v-154q0 -10 -10 -10h-39z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="255" +d="M157 -74q-89 187 -89 402t89 402q3 10 13 10h34q10 0 7 -10q-65 -192 -65 -402t65 -402q3 -10 -7 -10h-34q-10 0 -13 10z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="255" +d="M44 -74q66 195 66 402t-66 402q-3 10 7 10h35q8 0 13 -10q88 -185 88 -402t-88 -402q-5 -10 -13 -10h-35q-10 0 -7 10z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="326" +d="M149 396q-10 0 -10 10v91l-65 -39q-8 -5 -13 3l-14 26q-5 9 3 14l65 37l-65 37q-8 5 -3 14l14 26q5 8 13 3l65 -39v91q0 10 10 10h28q10 0 10 -10l-1 -91l66 39q8 5 13 -3l15 -26q5 -9 -3 -14l-67 -37l67 -37q8 -5 3 -14l-15 -26q-5 -8 -13 -3l-66 39l1 -91 +q0 -10 -10 -10h-28z" /> + <glyph glyph-name="plus" unicode="+" +d="M157 130v105q0 6 -6 6h-103q-10 0 -10 10v50q0 10 10 10h103q6 0 6 6v105q0 10 10 10h52q10 0 10 -10v-105q0 -6 6 -6h103q10 0 10 -10v-50q0 -10 -10 -10h-103q-6 0 -6 -6v-105q0 -10 -10 -10h-52q-10 0 -10 10z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="179" +d="M50 -93v187q0 10 10 10h59q10 0 10 -10v-75q0 -16 -6 -26l-54 -88q-4 -7 -11 -7q-8 0 -8 9z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="335" +d="M51 230q-10 0 -10 10v52q0 10 10 10h232q10 0 10 -10v-52q0 -10 -10 -10h-232z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="185" +d="M50 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="234" +d="M25 1l124 678q2 10 11 10h41q11 0 9 -10l-125 -678q-1 -10 -11 -10h-40q-11 0 -9 10z" /> + <glyph glyph-name="zero" unicode="0" +d="M61 80q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89t-132 89zM134 104q14 -40 59 -40q46 0 58 40q7 20 7 236t-7 236q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236t6 -236z" /> + <glyph glyph-name="one" unicode="1" +d="M178 10v577h-1l-86 -65q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v62q0 8 9 16l87 67q9 6 17 6h53q10 0 10 -10v-660q0 -10 -10 -10h-58q-10 0 -10 10z" /> + <glyph glyph-name="two" unicode="2" +d="M52 10v51q0 9 5 18l170 320q29 54 29 122q0 41 -5 55q-14 40 -60 40q-45 0 -59 -40q-5 -14 -5 -70q0 -12 -12 -10l-54 6q-9 2 -9 12q0 60 8 85q30 90 132 90t132 -89q9 -28 9 -79q0 -84 -41 -161l-156 -287v-1h187q10 0 10 -10v-52q0 -10 -10 -10h-261q-10 0 -10 10z" /> + <glyph glyph-name="three" unicode="3" +d="M59 81q-9 29 -9 80q0 11 10 12l54 5q12 2 12 -9q0 -51 5 -65q14 -40 59 -40q46 0 59 40q5 14 5 87q0 75 -5 88q-13 39 -63 39h-16q-10 0 -10 10v51q0 10 10 10h16q50 0 63 38q5 14 5 77q0 58 -5 72q-13 40 -59 40q-45 0 -59 -40q-5 -14 -5 -65q0 -11 -12 -9l-54 5 +q-10 1 -10 12q0 51 9 80q30 90 132 90t132 -89q8 -25 8 -96q0 -64 -7 -88q-12 -37 -51 -59v-2q38 -22 51 -60q7 -22 7 -104q0 -86 -8 -111q-30 -89 -132 -89t-132 90z" /> + <glyph glyph-name="four" unicode="4" +d="M37 112q-10 0 -10 10v51q0 6 2 12l140 487q3 8 12 8h58q10 0 7 -11l-139 -483v-2h110q6 0 6 6v190q0 10 10 10h57q10 0 10 -10v-190q0 -6 5 -6h46q10 0 10 -10v-52q0 -10 -10 -10h-45q-6 0 -6 -6v-96q0 -10 -10 -10h-57q-10 0 -10 10v96q0 6 -6 6h-180z" /> + <glyph glyph-name="five" unicode="5" +d="M62 81q-8 25 -8 72q0 11 9 12l54 5q12 2 12 -9q0 -43 5 -57q14 -40 59 -40q46 0 58 39q6 16 6 113q0 96 -6 112q-12 40 -58 40q-38 0 -57 -34q-5 -9 -15 -9h-49q-10 0 -10 10v335q0 10 10 10h253q10 0 10 -10v-52q0 -10 -10 -10h-186q-6 0 -6 -6v-193h1q28 31 77 31 +q87 0 113 -78q10 -30 10 -146q0 -104 -10 -136q-28 -89 -130 -89t-132 90z" /> + <glyph glyph-name="six" unicode="6" +d="M60 82q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91t-133 91zM134 104q14 -40 59 -40t59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91z" /> + <glyph glyph-name="seven" unicode="7" +d="M86 12l176 594v2h-134q-6 0 -6 -6v-75q0 -10 -10 -10h-52q-10 0 -10 10v143q0 10 10 10h270q10 0 10 -10v-53q0 -5 -2 -13l-174 -594q-3 -10 -13 -10h-59q-9 0 -6 12z" /> + <glyph glyph-name="eight" unicode="8" +d="M61 82q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91q-102 0 -132 91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM134 104q14 -40 59 -40t59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88z" /> + <glyph glyph-name="nine" unicode="9" +d="M115 11l107 279l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 29 -9 116q0 88 8 113q30 91 133 91t133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-109 -282q-3 -9 -12 -9h-60q-11 0 -6 11zM193 354q45 0 59 41q5 14 5 90q0 77 -5 91q-14 40 -59 40t-59 -40q-5 -14 -5 -91 +q0 -76 5 -90q14 -41 59 -41z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="198" +d="M66 376q-10 0 -10 10v83q0 10 10 10h66q10 0 10 -10v-83q0 -10 -10 -10h-66zM56 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10h-66q-10 0 -10 10z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="198" +d="M66 376q-10 0 -10 10v83q0 10 10 10h66q10 0 10 -10v-83q0 -10 -10 -10h-66zM59 -92v186q0 10 10 10h60q10 0 10 -10v-73q0 -14 -7 -27l-54 -88q-4 -7 -11 -7q-8 0 -8 9z" /> + <glyph glyph-name="less" unicode="<" +d="M48 240q-10 5 -10 15v42q0 10 10 15l290 118q10 3 10 -6v-55q0 -9 -10 -13l-202 -79v-2l202 -79q10 -4 10 -13v-55q0 -9 -10 -6z" /> + <glyph glyph-name="equal" unicode="=" +d="M48 329q-10 0 -10 10v49q0 10 10 10h290q10 0 10 -10v-49q0 -10 -10 -10h-290zM48 154q-10 0 -10 10v49q0 10 10 10h290q10 0 10 -10v-49q0 -10 -10 -10h-290z" /> + <glyph glyph-name="greater" unicode=">" +d="M48 122q-10 -4 -10 6v55q0 9 10 13l203 79v2l-203 79q-10 4 -10 13v55q0 10 10 6l290 -118q10 -4 10 -15v-42q0 -11 -10 -15z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="360" +d="M142 170q-10 0 -10 10v73q0 36 18 69l55 103q26 51 26 106q0 31 -5 45q-13 40 -57 40t-57 -40q-6 -16 -6 -70q0 -12 -11 -10l-55 6q-9 2 -9 12q0 59 9 86q14 42 48 65.5t82 23.5q100 0 130 -89q9 -31 9 -69q0 -65 -30 -121l-55 -105q-15 -29 -15 -55v-70q0 -10 -10 -10 +h-57zM128 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="673" +d="M59 70q-18 55 -18 198q0 144 18 199q30 91 103.5 142t173.5 51q101 0 174.5 -51t103.5 -142q18 -55 18 -199q0 -101 -9 -131q-26 -78 -109 -78q-76 0 -102 63h-1q-13 -33 -34.5 -48t-58.5 -15q-73 0 -94 66q-9 29 -9 138t9 138q21 66 92 66q52 0 74 -42h2v25q0 10 10 10 +h46q10 0 10 -10v-265q0 -68 56 -68q39 0 52 36q5 15 5 115q0 139 -15 184q-22 72 -80 111t-140 39q-81 0 -139 -39t-80 -111q-15 -45 -15 -184q0 -135 15 -183q24 -71 81.5 -111t137.5 -40q91 0 155 44q8 6 14 -2l20 -29q5 -9 -3 -14q-81 -56 -186 -56q-100 0 -173.5 51 +t-103.5 142zM285 156q12 -35 51 -35q40 0 52 35q5 15 5 107t-5 107q-12 35 -52 35q-39 0 -51 -35q-5 -15 -5 -107t5 -107z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="410" +d="M60 10v660q0 10 10 10h129q89 0 129 -41t40 -134q0 -114 -79 -149v-2q86 -27 86 -159q0 -107 -44 -151t-142 -44h-119q-10 0 -10 10zM147 386h48q49 0 70 23.5t21 85.5q0 64 -20 87t-73 23h-46q-6 0 -6 -6v-207q0 -6 6 -6zM141 81q0 -6 6 -6h45q56 0 78.5 26t22.5 95 +q0 67 -22.5 93t-75.5 26h-48q-6 0 -6 -6v-228z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="433" +d="M60 10v660q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106h-141q-10 0 -10 10zM141 81q0 -6 6 -6h56q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-518z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="367" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="364" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-216q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-286q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="417" +d="M62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29 +q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="440" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-278q0 -6 6 -6h146q6 0 6 6v278q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="342" +d="M25 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="424" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-312l155 314q4 8 13 8h65q10 0 6 -9l-135 -263l156 -398q3 -10 -6 -10h-66q-8 0 -11 7l-122 316l-55 -112v-201q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="358" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="541" +d="M60 10v660q0 10 10 10h62q11 0 14 -10l124 -416h4l121 416q3 10 15 10h61q10 0 10 -10v-660q0 -10 -10 -10h-54q-10 0 -10 10v471h-5l-103 -350q-3 -10 -12 -10h-33q-9 0 -12 10l-103 350h-5v-471q0 -10 -10 -10h-54q-10 0 -10 10z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="449" +d="M60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="407" +d="M131 0h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -47.5t45.5 -156.5q0 -107 -46 -155.5t-138 -48.5h-42q-6 0 -6 -6v-256q0 -10 -10 -10zM189 347q56 0 79.5 28.5t23.5 100.5q0 71 -23.5 100t-79.5 29h-42q-6 0 -6 -6v-246q0 -6 6 -6h42z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="422" +d="M407 24l-32 -38q-7 -8 -14 -1l-46 41q-41 -35 -104 -35q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181q0 -100 -2.5 -151.5t-6 -68.5t-11.5 -39l52 -43q8 -6 2 -14zM211 66q31 0 50 11l-53 46 +q-7 7 -1 15l27 32q6 7 14 1l40 -37q4 33 4 206q0 199 -9 225q-15 48 -72 48t-72 -48q-9 -26 -9 -225t9 -226q15 -48 72 -48z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="421" +d="M380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230 +q0 -6 6 -6h43z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="369" +d="M215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="389" +d="M222 0h-55q-8 0 -10 10l-135 660q-2 10 8 10h62q9 0 10 -10l93 -500h3l90 500q1 10 11 10h60q10 0 8 -10l-135 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="576" +d="M433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="392" +d="M363 0h-63q-9 0 -12 10l-91 243h-1l-92 -243q-3 -10 -11 -10h-64q-10 0 -7 10l133 344l-121 316q-3 10 7 10h62q9 0 12 -10l81 -219h1l80 219q3 10 12 10h63q10 0 7 -10l-122 -316l133 -344q3 -10 -7 -10z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="243" +d="M193 -84h-115q-10 0 -10 10v804q0 10 10 10h115q10 0 10 -10v-45q0 -10 -10 -10h-47q-6 0 -6 -6v-682q0 -6 6 -6h47q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="234" +d="M201 -9h-41q-10 0 -11 10l-124 678q-2 10 9 10h40q9 0 11 -10l125 -678q2 -10 -9 -10z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="243" +d="M165 -84h-115q-10 0 -10 10v45q0 10 10 10h48q6 0 6 6v682q0 6 -6 6h-48q-10 0 -10 10v45q0 10 10 10h115q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="asciicircum" unicode="^" +d="M344 272h-52q-9 0 -13 10l-84 287h-2l-85 -287q-3 -10 -13 -10h-52q-10 0 -7 10l122 388q3 10 14 10h43q11 0 14 -10l122 -388q3 -10 -7 -10z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="389" +d="M389 -124h-389v48h389v-48z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="390" +d="M264 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="389" +d="M227 -9q-67 0 -91 58h-1v-39q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-240h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="347" +d="M184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z +" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v240q0 10 10 10h57q10 0 10 -10v-660q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="244" +d="M141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-239h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM20 -180h-12q-10 0 -10 10v52q0 10 10 10h11q21 2 30 13t9 37v527q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="375" +d="M348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-415l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284q3 -10 -7 -10z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="221" +d="M182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="597" +d="M533 0h-57q-10 0 -10 10v319q0 87 -64 87q-63 0 -63 -85v-321q0 -10 -10 -10h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q73 0 96 -57h1q29 57 100 57q119 0 119 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="389" +d="M125 -180h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-39h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78q-67 0 -91 58h-1v-219q0 -10 -10 -10zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="389" +d="M321 -180h-57q-10 0 -10 10v219h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-639q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="273" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="343" +d="M172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15 +q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="243" +d="M203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="350" +d="M199 0h-49q-8 0 -11 10l-116 459q-3 10 7 10h60q8 0 10 -10l75 -328h2l74 328q2 10 11 10h57q10 0 8 -10l-116 -459q-3 -10 -12 -10z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="526" +d="M384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="354" +d="M325 0h-60q-9 0 -13 9l-75 163h-1l-74 -163q-4 -9 -13 -9h-60q-11 0 -5 11l114 237l-106 221q-5 10 5 10h60q9 0 13 -8l69 -148h1l66 148q4 8 13 8h59q10 0 5 -10l-107 -221l114 -237q6 -11 -5 -11z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="327" +d="M284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="292" +d="M242 -84h-21q-105 0 -105 112v198q0 36 -12.5 53.5t-42.5 18.5q-10 2 -10 10v45q0 10 10 10q30 2 42.5 19.5t12.5 53.5v193q0 111 105 111h21q10 0 10 -10v-45q0 -10 -10 -10h-10q-44 0 -44 -51v-170q0 -58 -10 -83.5t-41 -38.5v-3q31 -13 41 -38.5t10 -83.5v-175 +q0 -51 44 -51h10q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="236" +d="M139 -84h-43q-10 0 -10 10v804q0 10 10 10h43q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="292" +d="M72 -84h-22q-10 0 -10 10v45q0 10 10 10h10q45 0 45 51v175q0 58 10 83.5t41 38.5v3q-31 13 -41 38.5t-10 83.5v170q0 51 -45 51h-10q-10 0 -10 10v45q0 10 10 10h22q105 0 105 -111v-193q0 -37 12 -54t42 -19q10 0 10 -10v-45q0 -8 -10 -10q-30 -1 -42 -18t-12 -54v-198 +q0 -112 -105 -112z" /> + <glyph glyph-name="asciitilde" unicode="~" +d="M254 221q-30 0 -68 25q-33 22 -50 22q-16 0 -27 -9t-26 -33q-4 -7 -13 -3l-33 18q-8 5 -4 15q38 75 99 75q31 0 68 -25q32 -22 50 -22q16 0 27 9t26 33q4 7 13 3l32 -18q10 -5 4 -15q-37 -75 -98 -75z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="190" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="227" +d="M130 309q10 0 10 -10l16 -490q0 -10 -10 -10h-65q-10 0 -10 10l16 490q0 10 10 10h33zM156 469v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10z" /> + <glyph glyph-name="cent" unicode="¢" +d="M205 -100h-13q-10 0 -10 10v82q-91 6 -115 88q-12 37 -12 160q0 122 12 159q25 82 115 88v83q0 10 10 10h13q10 0 10 -10v-83q105 -8 121 -114q2 -9 -6 -11l-55 -11q-11 -2 -12 7q-10 49 -48 56v-349q39 8 48 56q2 10 12 7l55 -11q8 -2 6 -11q-7 -51 -38.5 -80t-82.5 -34 +v-82q0 -10 -10 -10zM139 103q12 -34 43 -38v349q-32 -6 -43 -37q-7 -25 -7 -137q0 -113 7 -137z" /> + <glyph glyph-name="sterling" unicode="£" +d="M339 0h-281q-10 0 -10 10v52q0 5 4 11q30 34 30 93v119q0 6 -6 6h-29q-10 0 -10 10v38q0 10 10 10h29q6 0 6 6v185q0 70 34 109.5t98 39.5q120 0 132 -139q0 -11 -8 -12l-54 -9q-10 -1 -12 8q-2 42 -15.5 60.5t-42.5 18.5q-54 0 -54 -74v-187q0 -6 6 -6h94q10 0 10 -10 +v-38q0 -10 -10 -10h-94q-6 0 -6 -6v-119q0 -64 -29 -92v-2h208q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="currency" unicode="¤" +d="M341 200l-25 -26q-7 -7 -14 0l-37 37q-32 -20 -72 -20q-41 0 -73 21l-37 -38q-8 -6 -14 0l-25 26q-7 7 0 14l37 37q-20 32 -20 72q0 41 21 72l-37 37q-6 6 0 14l25 25q7 7 14 0l37 -38q32 21 72 21q38 0 72 -21l37 38q7 7 14 0l25 -25q8 -8 0 -14l-38 -38q21 -32 21 -71 +q0 -41 -20 -72l37 -37q7 -7 0 -14zM193 246q33 0 54 21.5t21 55.5q0 33 -21 54.5t-54 21.5t-54 -21.5t-21 -54.5q0 -34 21 -55.5t54 -21.5z" /> + <glyph glyph-name="yen" unicode="¥" +d="M222 0h-57q-10 0 -10 10v129q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h88q6 0 6 6v51q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h80v3l-110 341q-3 10 7 10h61q9 0 12 -10l83 -283h2l81 283q3 10 12 10h60q10 0 7 -10l-111 -341v-3h80q10 0 10 -10v-39q0 -10 -10 -10 +h-87q-6 0 -6 -6v-51q0 -6 6 -6h87q10 0 10 -10v-39q0 -10 -10 -10h-87q-6 0 -6 -6v-129q0 -10 -10 -10z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="264" +d="M153 388h-43q-10 0 -10 10v332q0 10 10 10h43q10 0 10 -10v-332q0 -10 -10 -10zM153 -84h-43q-10 0 -10 10v336q0 10 10 10h43q10 0 10 -10v-336q0 -10 -10 -10z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="447" +d="M222 -189q-97 0 -123 80q-8 24 -8 69q0 10 8 10l52 5q9 0 9 -9q0 -36 5 -53q12 -37 58 -37t57 37q6 15 6 47q0 36 -6 52q-13 42 -91 64q-74 21 -96 86q-12 34 -12 91q0 47 10 77q19 57 69 74v1q-42 16 -58 63q-9 27 -9 72q0 44 8 68q27 81 123 81q95 0 121 -80 +q8 -24 8 -69q0 -10 -8 -10l-52 -5q-9 0 -9 9q0 40 -5 53q-12 37 -54 37q-43 0 -55 -37q-5 -17 -5 -47q0 -31 6 -47q7 -22 27.5 -36.5t61.5 -26.5q74 -21 96 -86q11 -36 11 -91q0 -47 -9 -77q-18 -56 -69 -74v-1q45 -17 60 -63q9 -28 9 -76q0 -46 -8 -70q-27 -81 -128 -81z +M224 139q50 0 64 45q7 20 7 69q0 48 -7 68q-13 45 -64 45q-49 0 -64 -45q-7 -25 -7 -68q0 -45 7 -69q15 -45 64 -45z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="390" +d="M293 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="719" +d="M360 -9q-109 0 -185.5 53.5t-108.5 149.5q-18 56 -18 146t18 146q32 96 108.5 149.5t185.5 53.5q108 0 184.5 -53.5t108.5 -149.5q18 -56 18 -146t-18 -146q-32 -96 -108.5 -149.5t-184.5 -53.5zM360 46q89 0 150 41.5t86 119.5q17 51 17 133t-17 133q-25 78 -86 119.5 +t-150 41.5t-150.5 -41.5t-86.5 -119.5q-17 -51 -17 -133t17 -133q25 -78 86.5 -119.5t150.5 -41.5zM363 143q-81 0 -104 72q-9 25 -9 125q0 99 9 125q23 72 104 72q45 0 74 -23.5t34 -60.5q2 -8 -6 -10l-42 -8q-8 -2 -10 6q-12 38 -50 38q-35 0 -45 -32q-6 -15 -6 -107 +t6 -107q10 -32 45 -32q38 0 50 38q2 8 10 6l42 -8q8 -2 6 -10q-5 -37 -34 -60.5t-74 -23.5z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="271" +d="M216 392h-33q-10 0 -10 10v19h-1q-5 -14 -21 -23.5t-36 -9.5q-34 0 -54 22t-20 62q0 49 25 72.5t69 23.5h32q6 0 6 6v13q0 27 -11 38.5t-34 11.5q-25 0 -51 -19q-9 -5 -14 3l-11 27q-4 7 4 13q33 26 80 26q45 0 67.5 -22.5t22.5 -73.5v-189q0 -10 -10 -10zM130 434 +q19 0 31 13t12 35v36q0 6 -6 6h-26q-48 0 -48 -47q0 -43 37 -43z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="445" +d="M374 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60q0 -4 -3.5 -5.5t-6.5 1.5zM200 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60 +q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M338 148h-51q-10 0 -10 10v77q0 6 -6 6h-223q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-143q0 -10 -10 -10z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="335" +d="M283 230h-232q-10 0 -10 10v52q0 10 10 10h232q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="432" +d="M216 303q-60 0 -102 29t-59 84q-10 36 -10 77q0 39 10 77q17 54 59 83t102 29t102 -29t59 -83q9 -34 9 -77q0 -45 -9 -77q-17 -54 -59 -83.5t-102 -29.5zM216 332q48 0 82 24t48 67q10 32 10 70q0 37 -10 69q-14 43 -48 67t-82 24t-82.5 -24t-48.5 -67q-9 -29 -9 -69 +q0 -41 9 -70q14 -43 48.5 -67t82.5 -24zM191 388h-18q-7 0 -7 7v198q0 7 7 7h43q60 0 60 -61q0 -39 -27 -53l30 -91q1 -7 -6 -7h-20q-7 0 -8 7l-25 82q-6 -1 -18 -1q-4 0 -4 -4v-77q0 -7 -7 -7zM213 507q16 0 23 7t7 25t-7 24.5t-23 6.5h-11q-4 0 -4 -4v-55q0 -4 4 -4h11z +" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="390" +d="M292 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="331" +d="M166 452q-50 0 -83 32.5t-33 82.5t33 83t83 33t82.5 -33t32.5 -83q0 -49 -32.5 -82t-82.5 -33zM166 500q29 0 47 19t18 48q0 30 -18 49t-47 19t-47.5 -19.5t-18.5 -48.5t18.5 -48t47.5 -19z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M219 137h-52q-10 0 -10 10v105q0 6 -6 6h-103q-10 0 -10 10v49q0 10 10 10h103q6 0 6 6v105q0 10 10 10h52q10 0 10 -10v-105q0 -6 6 -6h103q10 0 10 -10v-49q0 -10 -10 -10h-103q-6 0 -6 -6v-105q0 -10 -10 -10zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10 +v-50q0 -10 -10 -10z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="270" +d="M225 430h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="270" +d="M134 423q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="390" +d="M166 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="mu" unicode="μ" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="468" +d="M391 -180h-44q-10 0 -10 10v778q0 6 -6 6h-50q-6 0 -6 -6v-778q0 -10 -10 -10h-43q-10 0 -10 10v428q-69 9 -110.5 67t-41.5 144q0 90 51 150.5t137 60.5h143q10 0 10 -10v-840q0 -10 -10 -10z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="185" +d="M125 213h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="390" +d="M137 -142l57 142q4 10 13 10h42q10 0 7 -10l-48 -142q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="270" +d="M178 430h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="281" +d="M140 387q-70 0 -89 60q-7 21 -7 90t7 90q20 60 89 60q70 0 90 -60q7 -21 7 -90t-7 -90q-20 -60 -90 -60zM140 437q30 0 40 27q4 12 4 73t-4 73q-10 27 -40 27q-29 0 -39 -27q-4 -12 -4 -73t4 -73q10 -27 39 -27z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="445" +d="M245 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14zM71 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="705" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM576 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10 +h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="723" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM633 0h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4 +q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="750" +d="M621 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10zM278 -9h-39 +q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM179 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39 +q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="360" +d="M218 309q10 0 10 -10v-73q0 -36 -18 -69l-55 -103q-26 -51 -26 -106q0 -31 5 -45q13 -40 57 -40t57 40q6 16 6 70q0 12 11 10l55 -6q9 -1 9 -12q0 -59 -9 -86q-14 -42 -48 -65.5t-82 -23.5q-100 0 -130 89q-9 31 -9 69q0 65 30 121l55 105q15 28 15 55v70q0 10 10 10h57z +M232 469v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM225 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z +" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM223 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM314 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36 +q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM244 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24 +q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM300 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM155 777h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM202 731q-37 0 -61.5 24.5t-24.5 61.5t24 61.5t62 24.5q37 0 61.5 -24.5t24.5 -61.5t-24.5 -61.5 +t-61.5 -24.5zM202 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="629" +d="M589 0h-257q-10 0 -10 10v143q0 6 -6 6h-163l-56 -149q-3 -10 -13 -10h-59q-10 0 -7 10l251 660q3 10 12 10h308q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10zM319 597l-139 -368h136q6 0 6 6v362h-3z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="381" +d="M127 -152q-10 0 -7 10l54 136q-85 12 -113 97q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-12 -134 -123 -150 +l-45 -135q-4 -10 -16 -10h-48z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="367" +d="M220 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180 +q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="367" +d="M209 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180 +q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="367" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10zM309 752h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="367" +d="M294 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM149 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10 +v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM122 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM119 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM213 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM199 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM54 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="433" +d="M211 0h-141q-10 0 -10 10v296q0 6 -6 6h-29q-10 0 -10 10v44q0 10 10 10h29q6 0 6 6v288q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106zM203 75q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-217q0 -6 6 -6h65 +q10 0 10 -10v-44q0 -10 -10 -10h-65q-6 0 -6 -6v-225q0 -6 6 -6h56z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="449" +d="M266 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53 +q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="422" +d="M238 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101 +zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="422" +d="M224 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101z +M211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48zM323 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="422" +d="M252 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67 +q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="422" +d="M309 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM164 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101 +q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="multiply" unicode="×" +d="M325 176l-32 -33q-7 -7 -14 0l-82 82q-4 3 -8 0l-83 -82q-7 -7 -14 0l-32 33q-7 7 0 14l82 82q4 4 0 8l-82 82q-7 7 0 14l32 33q7 7 14 0l83 -82q4 -3 8 0l82 82q7 7 14 0l32 -33q9 -7 0 -14l-82 -82q-3 -4 0 -8l82 -82q9 -7 0 -14z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="422" +d="M73 -30h-21q-10 0 -7 10l32 78q-9 16 -15 34q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q64 0 106 -34l19 46q4 9 13 9h21q10 0 7 -10l-32 -78q8 -14 15 -34q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101q-66 0 -106 34l-19 -46 +q-4 -9 -13 -9zM131 340q0 -123 1 -154l148 386q-19 41 -69 41q-56 0 -71 -48q-9 -26 -9 -225zM211 67q55 0 72 48q8 27 8 225q0 122 -1 154l-148 -386q18 -41 69 -41z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="436" +d="M246 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503 +q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="436" +d="M232 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131 +t-116.5 -45z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM330 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10 +l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="436" +d="M316 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM171 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23 +t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM199 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="407" +d="M189 146h-42q-6 0 -6 -6v-130q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h61q10 0 10 -10v-110q0 -6 6 -6h42q93 0 138.5 -47.5t45.5 -156.5q0 -107 -46 -155.5t-138 -48.5zM189 221q56 0 79.5 28.5t23.5 100.5q0 71 -23.5 100t-79.5 29h-42q-6 0 -6 -6v-246 +q0 -6 6 -6h42z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="403" +d="M227 -3h-14q-10 0 -10 10v52q0 10 10 10h7q39 0 50 33q7 19 7 116q0 94 -7 115q-11 33 -50 33h-7q-10 0 -10 10v53q0 10 10 10h5q39 0 49 29q5 18 5 64q0 84 -68 84q-69 0 -69 -84v-522q0 -10 -10 -10h-57q-10 0 -10 10v514q0 79 36 122t109 43q70 0 108.5 -39.5 +t38.5 -112.5q0 -56 -11.5 -82t-44.5 -45v-2q38 -20 51 -59q9 -27 9 -131q0 -117 -11 -149q-22 -72 -116 -72z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM213 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM190 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM298 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM228 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM284 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM186 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14 +z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="565" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5 +q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45 +q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="347" +d="M94 -142l54 136q-69 13 -92 86q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -50 -33.5 -82 +t-74.5 -39l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM207 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="368" +d="M201 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8 +l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="368" +d="M297 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6 +q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="368" +d="M283 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM138 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10 +h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM119 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="193" +d="M118 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="193" +d="M209 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="193" +d="M195 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM50 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="374" +d="M294 580l-52 -17l28 -53q37 -72 48 -122.5t11 -154.5q0 -118 -10 -150q-30 -92 -132 -92q-50 0 -84.5 24t-47.5 68q-11 36 -11 146q0 113 12 152q28 86 115 86q31 0 48 -11h1l-45 86l-68 -22q-8 -3 -11 6l-12 35q-3 9 7 12l58 19l-41 78q-5 10 5 10h59q8 0 14 -10l29 -57 +l63 21q8 3 11 -6l12 -36q3 -9 -7 -12zM187 63q45 0 59 42q6 20 6 124q0 101 -7 125q-14 42 -58 42q-45 0 -59 -42q-6 -20 -6 -125q0 -104 6 -124q14 -42 59 -42z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10zM238 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18 +q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM214 557h-40q-10 0 -17 10 +l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="374" +d="M200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42 +t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="374" +d="M299 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63 +q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM229 581q-23 0 -49 19 +q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="374" +d="M285 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM140 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157 +q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="divide" unicode="÷" +d="M193 373q-23 0 -37.5 14.5t-14.5 37.5t14.5 38t37.5 15t37.5 -15t14.5 -38t-14.5 -37.5t-37.5 -14.5zM338 241h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10zM193 74q-23 0 -37.5 15t-14.5 38t14.5 37.5t37.5 14.5t37.5 -14.5t14.5 -37.5 +t-14.5 -38t-37.5 -15z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="374" +d="M187 -9q-50 0 -86 25l-17 -36q-5 -10 -13 -10h-18q-11 0 -8 10l30 63q-11 14 -20 40q-10 32 -10 157q0 124 10 157q30 91 132 91q50 0 86 -25l17 36q4 10 13 10h18q12 0 7 -10l-29 -63q13 -18 20 -39q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM121 240q0 -85 1 -103 +l115 255q-17 25 -50 25q-44 0 -60 -42q-6 -20 -6 -135zM187 62q45 0 59 43q7 20 7 135q0 82 -1 100l-115 -254q18 -24 50 -24z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM220 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="390" +d="M207 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="390" +d="M307 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319 +q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="390" +d="M293 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319 +q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM195 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10 +l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="389" +d="M125 -180h-57q-10 0 -10 10v840q0 10 10 10h57q10 0 10 -10v-240h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78q-67 0 -91 58h-1v-219q0 -10 -10 -10zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM276 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10 +v-72q0 -10 -10 -10zM131 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM299 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="amacron" unicode="ā" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM283 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM202 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32 +q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="abreve" unicode="ă" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="406" +d="M245 670l143 -660q2 -6 -5 -10q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15q-34 0 -55 19t-21 54q0 51 62 110q-4 1 -5 8l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10zM202 525 +l-61 -296h123l-59 296h-3z" /> + <glyph glyph-name="aogonek" unicode="ą" horiz-adv-x="371" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -7 -5 -11q-68 -60 -68 -95q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15q-34 0 -55 19t-21 54q0 52 63 113v46h-1q-10 -28 -34 -44 +t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM209 763h-38 +q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="cacute" unicode="ć" horiz-adv-x="347" +d="M200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137 +q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM317 752h-42 +q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" horiz-adv-x="347" +d="M296 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8 +q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="381" +d="M236 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8 +l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" horiz-adv-x="347" +d="M184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z +M206 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM223 750h-36 +q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="ccaron" unicode="č" horiz-adv-x="347" +d="M202 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8 +q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="433" +d="M216 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106h-141q-10 0 -10 10zM141 81 +q0 -6 6 -6h56q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-518z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="389" +d="M369 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v240q0 10 10 10h57q10 0 10 -10v-660q0 -10 -10 -10z +M189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="433" +d="M211 0h-141q-10 0 -10 10v296q0 6 -6 6h-29q-10 0 -10 10v44q0 10 10 10h29q6 0 6 6v288q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106zM203 75q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-217q0 -6 6 -6h65 +q10 0 10 -10v-44q0 -10 -10 -10h-65q-6 0 -6 -6v-225q0 -6 6 -6h56z" /> + <glyph glyph-name="dcroat" unicode="đ" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v114q0 6 -6 6h-79q-10 0 -10 10v41q0 10 10 10h79q6 0 6 6v53q0 10 10 10h57q10 0 10 -10v-53q0 -6 6 -6h24q10 0 10 -10v-41q0 -10 -10 -10h-24 +q-6 0 -6 -6v-534q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="367" +d="M291 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="emacron" unicode="ē" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM282 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="367" +d="M194 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10 +h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="ebreve" unicode="ĕ" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM185 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="367" +d="M222 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="edotaccent" unicode="ė" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM216 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="367" +d="M260 -181q-34 0 -55 19t-21 54q0 49 59 108h-173q-10 0 -10 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-11 +q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="eogonek" unicode="ę" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-9 -40 -34 -70q-60 -95 -60 -128q0 -26 21 -26q12 0 21 6q9 5 12 -3 +l15 -34q3 -8 -5 -13q-23 -15 -53 -15q-35 0 -55.5 19t-20.5 54q0 46 42 101q-12 -2 -20 -2zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="367" +d="M214 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55 +q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="ecaron" unicode="ě" horiz-adv-x="368" +d="M203 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6 +q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="417" +d="M62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29 +q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101zM319 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" horiz-adv-x="387" +d="M306 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78 +q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="417" +d="M207 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8 +q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gbreve" unicode="ğ" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42zM194 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="417" +d="M238 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48 +t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42zM226 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="417" +d="M179 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225 +q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" horiz-adv-x="387" +d="M221 572h-53q-10 0 -10 10v49q0 14 6 22l46 66q5 8 12 8q9 0 9 -10v-135q0 -10 -10 -10zM186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80 +q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="440" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-278q0 -6 6 -6h146q6 0 6 6v278q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10zM331 752h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-239h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10zM311 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10 +l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="440" +d="M370 0h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10v476q0 6 -6 6h-22q-10 0 -10 10v44q0 10 10 10h22q6 0 6 6v108q0 10 10 10h61q10 0 10 -10v-108q0 -6 6 -6h146q6 0 6 6v108q0 10 10 10h61q10 0 10 -10v-108q0 -6 6 -6h22 +q10 0 10 -10v-44q0 -10 -10 -10h-22q-6 0 -6 -6v-476q0 -10 -10 -10zM293 386q6 0 6 6v94q0 6 -6 6h-146q-6 0 -6 -6v-94q0 -6 6 -6h146z" /> + <glyph glyph-name="hbar" unicode="ħ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v534q0 6 -6 6h-23q-10 0 -10 10v41q0 10 10 10h23q6 0 6 6v53q0 10 10 10h57q10 0 10 -10v-53q0 -6 6 -6h80q10 0 10 -10v-41q0 -10 -10 -10h-80q-6 0 -6 -6v-113h1 +q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM143 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z +" /> + <glyph glyph-name="itilde" unicode="ĩ" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM138 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z +" /> + <glyph glyph-name="Imacron" unicode="Ī" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM198 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="imacron" unicode="ī" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM193 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ibreve" unicode="Ĭ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM101 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ibreve" unicode="ĭ" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM97 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Iogonek" unicode="Į" horiz-adv-x="201" +d="M90 -181q-34 0 -55 19t-21 54q0 50 56 109h-3q-7 0 -7 9v660q0 10 10 10h61q10 0 10 -10v-660q0 -5 -4 -9q-59 -64 -59 -97q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="iogonek" unicode="į" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM85 -181q-35 0 -56 19t-21 54q0 49 56 109v1q-6 0 -6 8v459q0 10 10 10h57q10 0 10 -10v-459q0 -5 -4 -9q-58 -63 -58 -97q0 -26 22 -26q11 0 20 6q9 5 12 -3l15 -34q4 -9 -5 -13 +q-22 -15 -52 -15z" /> + <glyph glyph-name="Idotaccent" unicode="İ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM133 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="342" +d="M25 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41zM352 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10 +l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="193" +d="M20 -180h-12q-10 0 -10 10v53q0 10 10 10l11 1q21 1 30 12t9 38v525q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120zM209 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="424" +d="M196 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h61q10 0 10 -10v-312l155 314q4 8 13 8h65q10 0 6 -9l-135 -263l156 -398q3 -10 -6 -10h-66q-8 0 -11 7l-122 316l-55 -112v-201q0 -10 -10 -10h-61 +q-10 0 -10 10z" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="375" +d="M174 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-415l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284 +q3 -10 -7 -10z" /> + <glyph glyph-name="kgreenlandic" unicode="ĸ" horiz-adv-x="375" +d="M348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-214l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284q3 -10 -7 -10z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="358" +d="M128 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="221" +d="M119 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="358" +d="M166 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="221" +d="M94 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="358" +d="M192 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="221" +d="M183 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="358" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10zM313 255h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="256" +d="M182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM257 263h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="358" +d="M229 388l-88 -61v-246q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10v265l-39 -27q-4 -2 -7 -0.5t-3 5.5v57q0 9 10 16l39 27v317q0 10 10 10h61q10 0 10 -10v-265l88 61q4 2 7 0.5t3 -5.5v-57q0 -9 -10 -16z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="221" +d="M182 388l-47 -33v-231q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10l-5 1q-66 2 -92.5 32t-26.5 99v176l-30 -20q-4 -2 -7 -0.5t-3 5.5v54q0 9 10 16l30 20v292q0 10 10 10h57q10 0 10 -10v-240l47 33q4 2 7 0.5t3 -5.5v-54q0 -9 -10 -16z" /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="449" +d="M236 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53 +q-10 0 -10 10z" /> + <glyph glyph-name="nacute" unicode="ń" horiz-adv-x="393" +d="M198 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="449" +d="M203 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z +" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" horiz-adv-x="393" +d="M168 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="449" +d="M242 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10 +l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="ncaron" unicode="ň" horiz-adv-x="393" +d="M214 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1 +q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Eng" unicode="Ŋ" horiz-adv-x="449" +d="M254 -180h-8q-10 0 -10 10v55q0 10 10 10l8 1q28 2 41 15.5t13 43.5v20l-170 545h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10v660q0 10 10 10h73q13 0 17 -10l152 -498h4v498q0 10 10 10h53q10 0 10 -10v-708q0 -74 -33 -108t-102 -34z" /> + <glyph glyph-name="eng" unicode="ŋ" horiz-adv-x="393" +d="M224 -180h-9q-10 0 -10 10v52q0 10 10 10h8q21 2 30 13t9 37v387q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-401q0 -120 -115 -120z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="422" +d="M308 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48 +q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="omacron" unicode="ō" horiz-adv-x="374" +d="M284 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42 +t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="422" +d="M211 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181 +t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="obreve" unicode="ŏ" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM187 563q-51 0 -80 30.5 +t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48zM291 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105q-7 -10 -18 -10zM167 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q5 0 6 -3t-2 -7l-79 -105q-8 -10 -19 -10z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" horiz-adv-x="374" +d="M258 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM134 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157 +t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="598" +d="M558 0h-257q-10 0 -10 10v21h-1q-26 -40 -90 -40q-106 0 -138 98q-8 24 -10.5 68t-2.5 183t2.5 183t10.5 68q32 98 138 98q64 0 90 -40h1v21q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156 +q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10zM211 67q55 0 72 48q8 27 8 225t-8 225q-17 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="576" +d="M391 -9q-72 0 -99 48h-2q-34 -48 -103 -48q-50 0 -84.5 24t-47.5 68q-10 32 -10 157q0 124 10 157q13 43 47.5 67t84.5 24q68 0 103 -47h1q35 47 102 47q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8 +l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM450 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="421" +d="M380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230 +q0 -6 6 -6h43zM206 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="273" +d="M165 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="421" +d="M189 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173 +l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230q0 -6 6 -6h43z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="273" +d="M69 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z +" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="421" +d="M208 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119 +q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230q0 -6 6 -6h43z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="273" +d="M161 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15 +q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM210 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="sacute" unicode="ś" horiz-adv-x="343" +d="M182 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5 +q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM307 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" horiz-adv-x="343" +d="M285 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135 +q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="392" +d="M113 -142l54 135q-125 14 -131 173q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7q-2 51 -20 75.5t-56 24.5 +q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125q0 -94 -29 -142t-96 -57l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="scedilla" unicode="ş" horiz-adv-x="343" +d="M90 -142l54 135q-99 14 -110 120q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15 +q54 -20 76 -54t22 -88t-26.5 -90.5t-75.5 -46.5l-46 -137q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM208 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="343" +d="M191 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135 +q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="369" +d="M159 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="243" +d="M113 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41 +q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="369" +d="M205 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112 +q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="243" +d="M191 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10 +h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="369" +d="M215 0h-61q-10 0 -10 10v366q0 6 -6 6h-68q-10 0 -10 10v50q0 10 10 10h68q6 0 6 6v141q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-141q0 -6 6 -6h68q10 0 10 -10v-50q0 -10 -10 -10h-68q-6 0 -6 -6v-366 +q0 -10 -10 -10z" /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="243" +d="M203 -5h-25q-55 0 -80 27t-25 87v169q0 6 -6 6h-22q-10 0 -10 10v40q0 10 10 10h22q6 0 6 6v62q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10h-47q-6 0 -6 -6v-62q0 -6 6 -6h34 +q10 0 10 -10v-40q0 -10 -10 -10h-34q-6 0 -6 -6v-168q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="436" +d="M259 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513 +q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="utilde" unicode="ũ" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM236 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18 +q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="436" +d="M315 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="umacron" unicode="ū" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM292 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="436" +d="M218 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513 +q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="ubreve" unicode="ŭ" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM195 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54 +q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM218 731q-37 0 -61.5 24.5t-24.5 61.5t24 61.5t62 24.5q37 0 61.5 -24.5t24.5 -61.5 +t-24.5 -61.5t-61.5 -24.5zM218 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="uring" unicode="ů" horiz-adv-x="390" +d="M195 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148 +v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM293 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105 +q-7 -10 -18 -10zM169 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q5 0 6 -3t-2 -7l-79 -105q-7 -10 -19 -10z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM269 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10z +M145 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="436" +d="M221 -181q-34 0 -55 19t-21 54q0 45 44 102q-60 8 -95 52t-35 121v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -75 -32.5 -119t-88.5 -53q-47 -60 -47 -91q0 -26 22 -26q11 0 20 6q10 6 13 -3 +l14 -34q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="uogonek" unicode="ų" horiz-adv-x="390" +d="M272 -181q-34 0 -55 19t-21 54q0 50 61 111q-2 2 -2 7v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -7 -6 -11q-66 -55 -66 -95q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34 +q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="576" +d="M433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10zM399 752h-42q-10 0 -17 10l-52 71 +h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="526" +d="M374 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1 +l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM299 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM290 557h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM285 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM140 777h-51q-10 0 -10 10v72q0 10 10 10h51 +q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10zM192 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z +" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="327" +d="M182 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="362" +d="M215 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="327" +d="M284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10zM199 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="362" +d="M202 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12 +l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="327" +d="M190 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163 +q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="florin" unicode="ƒ" +d="M324 337h-81l-49 -364q-11 -80 -45 -116.5t-105 -36.5h-17q-10 0 -10 10v53q0 10 10 10h13q37 0 54 16t23 59l49 369h-68q-10 0 -10 10v44q0 10 10 10h77l17 126q11 80 45 116.5t105 36.5h18q10 0 10 -10v-53q0 -10 -10 -10h-13q-37 0 -54 -16t-23 -59l-18 -131h72 +q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="Aringacute" unicode="Ǻ" horiz-adv-x="406" +d="M217 775h-40q-5 0 -6 3t2 7l82 93q9 10 21 10h55q5 0 6 -3t-2 -7l-99 -93q-9 -10 -19 -10zM379 0h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10l128 578l3 6q-31 25 -31 68q0 38 24 62t62 24q37 0 61.5 -24.5t24.5 -61.5q0 -42 -31 -68l3 -6 +l126 -578q2 -10 -9 -10zM204 613q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14q-21 0 -34.5 -14t-13.5 -35t13.5 -35t34.5 -14zM202 524l-60 -295h122l-59 295h-3z" /> + <glyph glyph-name="aringacute" unicode="ǻ" horiz-adv-x="371" +d="M197 775h-38q-5 0 -6 3t2 7l82 93q9 10 21 10h56q4 0 5.5 -3.5t-1.5 -6.5l-100 -93q-11 -10 -21 -10zM308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32 +q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5 +t-61.5 -24.5zM186 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="AEacute" unicode="Ǽ" horiz-adv-x="629" +d="M362 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM589 0h-257q-10 0 -10 10v143q0 6 -6 6h-163l-56 -149q-3 -10 -13 -10h-59q-10 0 -7 10l251 660q3 10 12 10h308q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212 +q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10zM319 597l-139 -368h136q6 0 6 6v362h-3z" /> + <glyph glyph-name="aeacute" unicode="ǽ" horiz-adv-x="565" +d="M304 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106 +q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40 +q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="Oslashacute" unicode="Ǿ" horiz-adv-x="422" +d="M73 -30h-21q-10 0 -7 10l32 78q-9 16 -15 34q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q64 0 106 -34l19 46q4 9 13 9h21q10 0 7 -10l-32 -78q8 -14 15 -34q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101q-66 0 -106 34l-19 -46 +q-4 -9 -13 -9zM131 340q0 -123 1 -154l148 386q-19 41 -69 41q-56 0 -71 -48q-9 -26 -9 -225zM211 67q55 0 72 48q8 27 8 225q0 122 -1 154l-148 -386q18 -41 69 -41zM224 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="oslashacute" unicode="ǿ" horiz-adv-x="374" +d="M187 -9q-50 0 -86 25l-17 -36q-5 -10 -13 -10h-18q-11 0 -8 10l30 63q-11 14 -20 40q-10 32 -10 157q0 124 10 157q30 91 132 91q50 0 86 -25l17 36q4 10 13 10h18q12 0 7 -10l-29 -63q13 -18 20 -39q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM121 240q0 -85 1 -103 +l115 255q-17 25 -50 25q-44 0 -60 -42q-6 -20 -6 -135zM187 62q45 0 59 43q7 20 7 135q0 82 -1 100l-115 -254q18 -24 50 -24zM200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="392" +d="M167 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16 +q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125z" /> + <glyph glyph-name="scommaaccent" unicode="ș" horiz-adv-x="343" +d="M144 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5 +t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="369" +d="M159 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="243" +d="M113 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41 +q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessj" unicode="ȷ" horiz-adv-x="193" +d="M20 -180h-12q-10 0 -10 10v53q0 10 10 10l11 1q21 1 30 12t9 38v525q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="390" +d="M307 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="390" +d="M213 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" horiz-adv-x="390" +d="M292 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve" unicode="˘" horiz-adv-x="390" +d="M195 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="dotaccent" unicode="˙" horiz-adv-x="390" +d="M226 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="390" +d="M195 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="ogonek" unicode="˛" horiz-adv-x="390" +d="M205 -181q-34 0 -55 19t-21 54q0 47 59 108q10 10 17 10h54q4 0 5 -3.5t-3 -6.5q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="390" +d="M236 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="hungarumlaut" unicode="˝" horiz-adv-x="390" +d="M258 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM134 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="Delta" unicode="∆" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="pi" unicode="π" horiz-adv-x="406" +d="M369 -6h-8q-52 0 -74.5 25t-22.5 82v300q0 6 -6 6h-106q-6 0 -6 -6v-391q0 -10 -10 -10h-57q-10 0 -10 10v391q0 6 -7 6h-34q-10 0 -10 10v52q0 10 10 10h352q10 0 10 -10v-52q0 -10 -10 -10h-35q-6 0 -6 -6v-302q0 -19 5.5 -26t20.5 -7h4q10 0 10 -10v-52q0 -10 -10 -10 +z" /> + <glyph glyph-name="Wgrave" unicode="Ẁ" horiz-adv-x="576" +d="M308 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10 +l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wgrave" unicode="ẁ" horiz-adv-x="526" +d="M384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10zM286 557h-40q-10 0 -17 10 +l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="Wacute" unicode="Ẃ" horiz-adv-x="576" +d="M307 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2 +l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wacute" unicode="ẃ" horiz-adv-x="526" +d="M283 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326 +q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Wdieresis" unicode="Ẅ" horiz-adv-x="576" +d="M385 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM240 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61 +q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wdieresis" unicode="ẅ" horiz-adv-x="526" +d="M360 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM215 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60 +q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Ygrave" unicode="Ỳ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM222 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="ygrave" unicode="ỳ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM209 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59 +q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="392" +d="M365 234h-338q-10 0 -10 10v44q0 10 10 10h338q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="579" +d="M552 234h-525q-10 0 -10 10v44q0 10 10 10h525q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="156" +d="M105 509h-54q-10 0 -10 10v64q0 13 6 23l48 67q5 8 12 8q8 0 8 -9v-153q0 -10 -10 -10z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="156" +d="M49 506q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -7 -12 -7z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="156" +d="M49 -89q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-67q0 -12 -7 -23l-47 -67q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="272" +d="M221 506h-54q-10 0 -10 10v68q0 13 7 23l47 66q5 8 11 8q9 0 9 -9v-156q0 -10 -10 -10zM105 506h-54q-10 0 -10 10v68q0 15 6 23l48 66q5 8 11 8q9 0 9 -9v-156q0 -10 -10 -10z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="272" +d="M166 506q-9 0 -9 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-4 -7 -11 -7zM49 506q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="272" +d="M166 -91q-9 0 -9 9v156q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-5 -8 -11 -8zM49 -91q-8 0 -8 9v156q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -8 -12 -8z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="478" +d="M267 -180h-55q-10 0 -10 10v534q0 6 -6 6h-113q-10 0 -10 10v49q0 10 10 10h113q6 0 6 6v225q0 10 10 10h55q10 0 10 -10v-225q0 -6 6 -6h113q10 0 10 -10v-49q0 -10 -10 -10h-113q-6 0 -6 -6v-534q0 -10 -10 -10z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="478" +d="M267 -180h-55q-10 0 -10 10v196q0 6 -6 6h-113q-10 0 -10 10v50q0 10 10 10h113q6 0 6 6v285q0 6 -6 6h-113q-10 0 -10 10v50q0 10 10 10h113q6 0 6 6v195q0 10 10 10h55q10 0 10 -10v-195q0 -6 6 -6h113q10 0 10 -10v-50q0 -10 -10 -10h-113q-6 0 -6 -6v-285q0 -6 6 -6 +h113q10 0 10 -10v-50q0 -10 -10 -10h-113q-6 0 -6 -6v-196q0 -10 -10 -10z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="417" +d="M209 192q-49 0 -82.5 33t-33.5 83t33 83t83 33t82.5 -33t32.5 -83t-33 -83t-82 -33z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="537" +d="M482 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10zM303 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10zM124 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="895" +d="M218 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM153 329q-68 0 -86 58q-7 22 -7 121q0 98 7 120q18 58 86 58q69 0 87 -58q7 -22 7 -120q0 -99 -7 -121q-18 -58 -87 -58zM153 381q27 0 33 22q4 14 4 105q0 90 -4 104q-6 22 -33 22 +q-26 0 -32 -22q-4 -9 -4 -104q0 -96 4 -105q6 -22 32 -22zM741 -6q-68 0 -87 58q-7 22 -7 120q0 99 7 121q19 58 87 58t86 -58q8 -22 8 -121q0 -98 -8 -120q-18 -58 -86 -58zM495 -6q-69 0 -87 58q-7 22 -7 120q0 99 7 121q18 58 87 58q68 0 86 -58q7 -22 7 -121 +q0 -98 -7 -120q-18 -58 -86 -58zM741 46q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-25 0 -33 -22q-4 -14 -4 -105q0 -90 4 -104q8 -22 33 -22zM495 46q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-27 0 -33 -22q-4 -14 -4 -105q0 -90 4 -104q6 -22 33 -22z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="271" +d="M200 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="271" +d="M71 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="140" +d="M-36 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="zero.superior" unicode="⁰" horiz-adv-x="270" +d="M135 423q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 479q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="four.superior" unicode="⁴" horiz-adv-x="270" +d="M204 430h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.superior" unicode="⁵" horiz-adv-x="270" +d="M135 423q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.superior" unicode="⁶" horiz-adv-x="270" +d="M135 423q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 479q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.superior" unicode="⁷" horiz-adv-x="270" +d="M117 430h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.superior" unicode="⁸" horiz-adv-x="270" +d="M135 423q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 670q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 479q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.superior" unicode="⁹" horiz-adv-x="270" +d="M131 430h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 647q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="zero.inferior" unicode="₀" horiz-adv-x="270" +d="M135 -163q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 -107q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.inferior" unicode="₁" horiz-adv-x="270" +d="M178 -156h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.inferior" unicode="₂" horiz-adv-x="270" +d="M225 -156h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.inferior" unicode="₃" horiz-adv-x="270" +d="M134 -163q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 11 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.inferior" unicode="₄" horiz-adv-x="270" +d="M204 -156h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.inferior" unicode="₅" horiz-adv-x="270" +d="M135 -163q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 10 3 58t-3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.inferior" unicode="₆" horiz-adv-x="270" +d="M135 -163q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 -107q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.inferior" unicode="₇" horiz-adv-x="270" +d="M117 -156h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.inferior" unicode="₈" horiz-adv-x="270" +d="M135 -163q-75 0 -96 61q-5 16 -5 63q0 40 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 84q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 -107q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -10 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.inferior" unicode="₉" horiz-adv-x="270" +d="M131 -156h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 61q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="Euro" unicode="€" +d="M214 -9q-101 0 -131 93q-11 32 -11 161q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6v54q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6q0 123 11 155q30 93 131 93q62 0 99.5 -37.5t44.5 -98.5q2 -11 -7 -12l-54 -10q-10 -3 -12 7q-11 78 -69 78 +q-45 0 -60 -42q-7 -22 -7 -133q0 -6 6 -6h142q10 0 10 -10l-10 -39q-2 -10 -10 -10h-132q-6 0 -6 -6v-54q0 -6 6 -6h127q10 0 10 -10l-10 -39q-3 -10 -10 -10h-117q-6 0 -6 -6q0 -115 7 -139q15 -42 60 -42q58 0 69 78q2 10 12 7l54 -10q9 -1 7 -12q-7 -61 -44.5 -98.5 +t-99.5 -37.5z" /> + <glyph glyph-name="afii61289" unicode="ℓ" horiz-adv-x="385" +d="M94 195q-7 -7 -14 0l-27 30q-7 7 1 14l70 74v207q0 83 28.5 126.5t82.5 43.5q47 0 73.5 -31.5t26.5 -87.5q0 -119 -134 -265v-201q0 -48 33 -48q16 0 34 15q9 7 14 -1l19 -28q6 -8 -2 -16q-37 -37 -85 -37q-90 0 -90 120v116zM201 542v-143q69 91 69 173q0 58 -32 58 +q-37 0 -37 -88z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="645" +d="M575 286h-36q-10 0 -10 10v232h-1l-51 -168q-3 -10 -11 -10h-22q-8 0 -11 10l-50 168h-1v-232q0 -10 -10 -10h-37q-10 0 -10 10v374q0 10 10 10h42q9 0 12 -10l67 -232h1l65 232q3 10 12 10h41q10 0 10 -10v-374q0 -10 -10 -10zM188 286h-40q-10 0 -10 10v322q0 5 -5 5 +h-60q-10 0 -10 10v37q0 10 10 10h190q10 0 10 -10v-37q0 -10 -10 -10h-60q-5 0 -5 -5v-322q0 -10 -10 -10z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="587" +d="M292 -9q-104 0 -168 72t-64 178t64 176.5t168 70.5q105 0 169 -68.5t65 -178.5h-364v-164q54 -52 130 -52q110 0 173 108l33 -20q-43 -65 -89.5 -93.5t-116.5 -28.5zM424 273v130q-58 55 -132 55q-77 0 -130 -55v-130h262z" /> + <glyph glyph-name="onethird" unicode="⅓" horiz-adv-x="723" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM542 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4 +q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60 +q6 -20 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="twothirds" unicode="⅔" horiz-adv-x="782" +d="M269 274h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z +M291 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM601 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21 +q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -20 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="oneeighth" unicode="⅛" horiz-adv-x="726" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM545 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44 +q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM545 240q27 0 35 23q4 9 4 36q0 26 -4 35q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM545 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44 +q0 -35 3 -45q9 -23 36 -23zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threeeighths" unicode="⅜" horiz-adv-x="771" +d="M590 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM590 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM590 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM278 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z +M179 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="fiveeighths" unicode="⅝" horiz-adv-x="771" +d="M590 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM590 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM590 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM278 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z +M179 267q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="seveneighths" unicode="⅞" horiz-adv-x="722" +d="M540 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM540 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM540 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM160 274h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89 +q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10zM228 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="partialdiff" unicode="∂" horiz-adv-x="409" +d="M182 -10q-65 0 -101 56t-36 148q0 100 42.5 163.5t113.5 63.5q59 0 91 -43h2q-2 114 -30.5 179t-81.5 65q-33 0 -66 -24q-9 -7 -14 2l-25 38q-5 8 3 14q52 38 108 38q87 0 131.5 -84t44.5 -237q0 -185 -46 -282t-136 -97zM189 59q91 0 103 240q-33 54 -81 54 +q-44 0 -69.5 -42.5t-25.5 -112.5q0 -139 73 -139z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="512" +d="M443 -180h-61q-10 0 -10 10v828q0 6 -6 6h-221q-6 0 -6 -6v-828q0 -10 -10 -10h-61q-10 0 -10 10v900q0 10 10 10h375q10 0 10 -10v-900q0 -10 -10 -10z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="458" +d="M411 -180h-365q-10 0 -10 10v54q0 5 2 9l176 427l-171 343q-3 6 -3 11v56q0 10 10 10h351q10 0 10 -10v-56q0 -10 -10 -10h-268l166 -331q3 -7 0 -14l-177 -423h289q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="minus" unicode="−" +d="M338 241h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="140" +d="M-36 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="185" +d="M125 213h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="551" +d="M306 -180h-47q-7 0 -12 10l-113 275q-3 6 -9 3l-59 -25q-10 -5 -13 4l-17 40q-4 10 4 13l116 52q10 5 14 -4l105 -260h3l189 802q3 10 12 10h49q11 0 8 -10l-218 -900q-3 -10 -12 -10z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="648" +d="M486 97q-47 0 -83.5 23.5t-78.5 76.5q-44 -54 -80.5 -77t-80.5 -23q-65 0 -104.5 41t-39.5 109t40 109t104 41q45 0 81 -23.5t80 -77.5q46 56 81.5 78.5t79.5 22.5q65 0 105 -41t40 -109t-40 -109t-104 -41zM483 156q39 0 62 25.5t23 66.5q0 40 -23.5 65t-62.5 25 +q-27 0 -54 -20t-66 -71q39 -50 65 -70.5t56 -20.5zM165 156q28 0 55 20t66 71q-69 91 -120 91q-39 0 -62.5 -24.5t-23.5 -65.5t23 -66.5t62 -25.5z" /> + <glyph glyph-name="integral" unicode="∫" horiz-adv-x="292" +d="M54 -180q-13 0 -18 1q-10 0 -10 10v54q0 10 10 10h12q31 0 45 19t14 64v599q0 163 131 163q13 0 18 -1q10 0 10 -10v-54q0 -10 -10 -10h-13q-31 0 -44.5 -19t-13.5 -64v-599q0 -163 -131 -163z" /> + <glyph glyph-name="approxequal" unicode="≈" +d="M254 304q-29 0 -69 25q-31 21 -48 21t-27.5 -8.5t-25.5 -32.5q-5 -8 -14 -3l-33 18q-8 5 -4 14q41 76 99 76q37 0 69 -25q29 -22 48 -22q16 0 27.5 9t25.5 33q5 8 14 3l32 -18q10 -5 4 -15q-40 -75 -98 -75zM254 139q-31 0 -69 26q-31 21 -48 21t-27.5 -8.5t-25.5 -32.5 +q-5 -8 -14 -4l-33 19q-8 5 -4 14q42 76 99 76q31 0 69 -26q34 -21 48 -21q16 0 27.5 8.5t25.5 32.5q5 8 14 4l32 -18q10 -5 4 -15q-40 -76 -98 -76z" /> + <glyph glyph-name="notequal" unicode="≠" +d="M338 329h-90l-50 -106h140q10 0 10 -10v-49q0 -10 -10 -10h-173l-37 -78q-4 -10 -13 -10h-39q-12 0 -7 10l37 78h-58q-10 0 -10 10v49q0 10 10 10h91l50 106h-141q-10 0 -10 10v49q0 10 10 10h174l36 76q4 10 13 10h39q12 0 7 -10l-36 -76h57q10 0 10 -10v-49 +q0 -10 -10 -10z" /> + <glyph glyph-name="lessequal" unicode="≤" +d="M338 135l-290 118q-10 3 -10 14v44q0 11 10 14l290 119q10 3 10 -7v-54q0 -9 -10 -13l-202 -80v-2l202 -79q10 -4 10 -13v-54q0 -10 -10 -7zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="greaterequal" unicode="≥" +d="M48 135q-10 -4 -10 7v54q0 9 10 13l203 79v2l-203 80q-10 4 -10 13v54q0 11 10 7l290 -119q10 -3 10 -14v-44q0 -11 -10 -14zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="lozenge" unicode="◊" horiz-adv-x="429" +d="M240 -52h-51q-9 0 -13 10l-150 364q-3 7 0 14l150 364q4 10 13 10h51q9 0 13 -10l150 -364q3 -7 0 -14l-150 -364q-4 -10 -13 -10zM216 33h2l116 296l-119 295h-2l-118 -295z" /> + <glyph glyph-name="uniF8FF" unicode="" horiz-adv-x="376" +d="M366 0h-356q-10 0 -10 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10zM321 46q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576q0 -6 6 -6h267zM204 222h-33q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44 +q0 -11 -11 -9l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10zM207 114h-38q-10 0 -10 10v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10z" /> + <glyph glyph-name="CR" horiz-adv-x="0" + /> + <glyph glyph-name="grave.cap" horiz-adv-x="390" +d="M268 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="acute.cap" horiz-adv-x="390" +d="M167 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="circumflex.cap" horiz-adv-x="390" +d="M307 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron.cap" horiz-adv-x="390" +d="M213 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="caron.alt" horiz-adv-x="390" +d="M168 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7z" /> + <glyph glyph-name="tilde.cap" horiz-adv-x="390" +d="M236 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="dieresis.cap" horiz-adv-x="390" +d="M293 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="macron.cap" horiz-adv-x="390" +d="M292 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve.cap" horiz-adv-x="390" +d="M195 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ring.cap" horiz-adv-x="390" +d="M195 731q-37 0 -61.5 24.5t-24.5 61.5t24.5 61.5t61.5 24.5t61.5 -24.5t24.5 -61.5t-24.5 -61.5t-61.5 -24.5zM195 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="hungarumlaut.cap" horiz-adv-x="390" +d="M262 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105q-8 -10 -18 -10zM138 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q4 0 5.5 -3t-1.5 -7l-79 -105q-7 -10 -19 -10z" /> + <glyph glyph-name="dotaccent.cap" horiz-adv-x="390" +d="M226 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="commaaccent" horiz-adv-x="390" +d="M167 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="commaaccent.alt" horiz-adv-x="390" +d="M222 572h-53q-10 0 -10 10v49q0 14 6 22l46 66q5 8 12 8q9 0 9 -10v-135q0 -10 -10 -10z" /> + <glyph glyph-name="uni0394" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="uni03A9" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="uni03BC" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="exclam.sc" horiz-adv-x="206" +d="M120 170h-34q-10 0 -10 10l-15 329q0 10 10 10h64q10 0 10 -10l-15 -329q0 -10 -10 -10zM136 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="dollar.sc" horiz-adv-x="362" +d="M188 -56h-15q-10 0 -10 10v38q-117 7 -126 134q0 11 8 12l49 8q9 1 11 -8q4 -73 58 -80v178l-13 4q-57 17 -82 50.5t-25 94.5q0 66 31 102t89 40v27q0 10 10 10h15q10 0 10 -10v-27q104 -10 116 -127q0 -11 -8 -12l-47 -7q-9 -2 -11 8q-8 63 -50 70v-159l10 -3 +q61 -19 85.5 -53.5t24.5 -101.5q0 -142 -120 -150v-38q0 -10 -10 -10zM114 387q0 -31 10.5 -48t38.5 -28v149q-49 -7 -49 -73zM248 141q0 61 -50 83v-165q26 5 38 23.5t12 58.5z" /> + <glyph glyph-name="percent.sc" horiz-adv-x="623" +d="M223 -9h-39q-10 0 -7 10l211 516q4 10 13 10h38q10 0 7 -10l-211 -516q-3 -10 -12 -10zM154 255q-65 0 -81 52q-7 20 -7 83q0 64 7 82q17 53 81 53t82 -53q7 -23 7 -82q0 -58 -7 -83q-18 -52 -82 -52zM154 305q21 0 29 19q3 10 3 66q0 54 -3 65q-8 19 -29 19 +q-22 0 -28 -19q-3 -11 -3 -65q0 -56 3 -66q6 -19 28 -19zM469 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t81 -53q7 -18 7 -82t-7 -82q-17 -53 -81 -53zM469 44q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-4 -9 -4 -65t4 -65q6 -20 28 -20z" /> + <glyph glyph-name="ampersand.sc" horiz-adv-x="483" +d="M419 -4h-21q-24 0 -35.5 5.5t-22.5 21.5l-23 31q-54 -63 -127 -63q-59 0 -92 32t-33 86q0 38 19.5 74.5t73.5 92.5l-12 17q-30 42 -41.5 68t-11.5 53q0 49 34 81.5t88 32.5q53 0 86.5 -32.5t33.5 -81.5q0 -29 -18 -58.5t-69 -83.5l72 -97l40 65q5 8 14 4l38 -25 +q9 -5 4 -14l-55 -87l26 -34q13 -19 29 -19h3q10 0 10 -10v-49q0 -10 -10 -10zM165 416q0 -29 43 -89q34 34 45 52.5t11 36.5q0 22 -13 36t-36 14q-22 0 -36 -14.5t-14 -35.5zM197 60q40 0 80 50l-79 110q-35 -37 -48 -58.5t-13 -44.5q0 -26 16 -41.5t44 -15.5z" /> + <glyph glyph-name="zero.sc" horiz-adv-x="362" +d="M181 -9q-47 0 -79 22t-45 62q-9 26 -9 185t9 185q27 83 124 83t124 -83q9 -26 9 -185t-9 -185q-13 -40 -45 -62t-79 -22zM181 64q39 0 51 35q5 17 5 161q0 143 -5 161q-12 35 -51 35t-51 -35q-5 -18 -5 -161q0 -144 5 -161q12 -35 51 -35z" /> + <glyph glyph-name="one.sc" horiz-adv-x="362" +d="M226 0h-58q-10 0 -10 10v419h-1l-78 -46q-11 -5 -11 7v60q0 8 7 14l79 50q8 5 16 5h56q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="two.sc" horiz-adv-x="362" +d="M303 0h-245q-9 0 -9 9v51q0 8 3 12l155 219q17 24 22.5 42t5.5 51q0 27 -4 38q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -42q0 -11 -12 -9l-54 5q-9 2 -9 12q0 38 6 57q27 83 125 83t124 -83q9 -25 9 -62q0 -45 -10.5 -73.5t-34.5 -62.5l-126 -174v-1h161q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.sc" horiz-adv-x="362" +d="M179 -9q-98 0 -125 83q-6 19 -6 49q0 11 9 12l54 5q12 2 12 -9q0 -22 4 -34q12 -33 52 -33q39 0 51 33q4 12 4 53q0 38 -3 49q-11 33 -56 33h-13q-10 0 -10 10v51q0 10 10 10h13q45 0 56 32q3 11 3 42q0 34 -4 45q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -33 +q0 -12 -12 -10l-54 6q-9 1 -9 12q0 29 6 48q27 83 125 83t124 -83q9 -25 9 -68q0 -36 -6 -54q-11 -33 -47 -52v-2q36 -19 47 -53q6 -18 6 -66q0 -51 -9 -76q-26 -83 -124 -83z" /> + <glyph glyph-name="four.sc" horiz-adv-x="362" +d="M274 0h-56q-10 0 -10 10v60q0 6 -6 6h-165q-10 0 -10 10v52q0 5 2 11l127 362q3 8 12 8h58q11 0 8 -11l-126 -358v-2h94q6 0 6 6v134q0 10 10 10h56q10 0 10 -10v-134q0 -6 5 -6h37q10 0 10 -10v-52q0 -10 -10 -10h-36q-6 0 -6 -6v-60q0 -10 -10 -10z" /> + <glyph glyph-name="five.sc" horiz-adv-x="362" +d="M181 -9q-99 0 -125 83q-6 16 -6 39q0 11 10 12l53 5q11 1 13 -9q0 -12 4 -24q11 -33 51 -33q39 0 51 33q4 16 4 68q0 55 -5 68q-12 33 -50 33q-33 0 -49 -22q-5 -8 -16 -8h-47q-10 0 -10 10v263q0 10 10 10h235q10 0 10 -10v-52q0 -10 -10 -10h-169q-6 0 -6 -6v-124h1 +q24 21 70 21q82 0 106 -74q8 -26 8 -99q0 -67 -9 -92q-26 -82 -124 -82z" /> + <glyph glyph-name="six.sc" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 86 29 148l99 212q4 9 15 9h58q11 0 6 -10l-98 -206l2 -1q14 7 39 7q83 0 108 -76q8 -27 8 -83q0 -49 -8 -76q-28 -83 -125 -83zM181 64q39 0 51 33q5 15 5 53t-5 53q-12 33 -51 33t-51 -33q-5 -15 -5 -53t5 -53q12 -33 51 -33z" /> + <glyph glyph-name="seven.sc" horiz-adv-x="362" +d="M150 0h-56q-12 0 -7 12l159 434v1h-115q-6 0 -6 -6v-46q0 -10 -10 -10h-52q-10 0 -10 10v114q0 10 10 10h250q10 0 10 -10v-54q0 -6 -3 -12l-156 -433q-3 -10 -14 -10z" /> + <glyph glyph-name="eight.sc" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 42 7 67q14 39 42 54v2q-29 15 -42 54q-7 25 -7 55q0 36 8 63q28 83 125 83t125 -83q8 -27 8 -63q0 -30 -7 -55q-13 -39 -42 -54v-2q28 -15 42 -54q7 -25 7 -67q0 -49 -8 -76q-28 -83 -125 -83zM181 308q39 0 51 34q5 13 5 40t-5 40 +q-12 34 -51 34t-51 -34q-5 -13 -5 -40t5 -40q12 -34 51 -34zM181 64q39 0 51 33q5 15 5 53q0 39 -5 52q-12 34 -51 34t-51 -34q-5 -13 -5 -52q0 -38 5 -53q12 -33 51 -33z" /> + <glyph glyph-name="nine.sc" horiz-adv-x="362" +d="M171 0h-58q-11 0 -6 11l98 205l-2 1q-12 -6 -39 -6q-83 0 -108 75q-8 29 -8 83q0 49 8 76q28 83 125 83t125 -83q8 -27 8 -76q0 -85 -29 -148l-99 -212q-4 -9 -15 -9zM181 283q39 0 51 34q5 13 5 52q0 40 -5 53q-12 34 -51 34t-51 -34q-5 -13 -5 -53q0 -39 5 -52 +q12 -34 51 -34z" /> + <glyph glyph-name="question.sc" horiz-adv-x="313" +d="M184 156h-59q-10 0 -10 10v34q0 33 16 55l47 65q28 40 28 74q0 16 -4 30q-12 32 -50 32q-37 0 -49 -32q-4 -10 -5 -41q0 -11 -10 -9l-56 7q-9 1 -9 10q0 37 8 61q13 37 45 56.5t77 19.5q95 0 122 -78q8 -21 8 -52q0 -54 -30 -94l-46 -64q-13 -18 -13 -45v-29 +q0 -10 -10 -10zM187 0h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="a.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="b.sc" horiz-adv-x="382" +d="M180 0h-111q-10 0 -10 10v499q0 10 10 10h120q82 0 117.5 -31t35.5 -101q0 -92 -69 -116v-1q76 -17 76 -121q0 -80 -40 -114.5t-129 -34.5zM183 301q43 0 61.5 16.5t18.5 56.5q0 42 -17.5 58t-62.5 16h-41q-6 0 -6 -6v-135q0 -6 6 -6h41zM182 71q50 0 69.5 17.5 +t19.5 62.5t-19.5 62.5t-66.5 17.5h-43q-6 0 -6 -6v-148q0 -6 6 -6h40z" /> + <glyph glyph-name="c.sc" horiz-adv-x="369" +d="M192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="d.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v499q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-363q0 -6 6 -6h51z" /> + <glyph glyph-name="e.sc" horiz-adv-x="344" +d="M305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="f.sc" horiz-adv-x="342" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-138q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-209q0 -10 -10 -10z" /> + <glyph glyph-name="g.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25z" /> + <glyph glyph-name="h.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-202q0 -6 6 -6h129q6 0 6 6v202q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="i.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="j.sc" horiz-adv-x="319" +d="M121 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5z" /> + <glyph glyph-name="k.sc" horiz-adv-x="396" +d="M370 0h-63q-8 0 -11 7l-108 232l-52 -85v-144q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-235l140 238q4 7 13 7h61q10 0 5 -9l-122 -198l142 -302q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="l.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="m.sc" horiz-adv-x="508" +d="M439 0h-51q-10 0 -10 10v347h-4l-92 -255q-3 -10 -12 -10h-32q-9 0 -12 10l-92 255h-4v-347q0 -10 -10 -10h-51q-10 0 -10 10v499q0 10 10 10h58q12 0 15 -10l111 -307h4l109 307q4 10 16 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="n.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="o.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="p.sc" horiz-adv-x="379" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h122q158 0 158 -157q0 -158 -158 -158h-49q-6 0 -6 -6v-188q0 -10 -10 -10zM184 275q47 0 67.5 19.5t20.5 67.5q0 47 -20.5 66.5t-67.5 19.5h-42q-6 0 -6 -6v-161q0 -6 6 -6h42z" /> + <glyph glyph-name="q.sc" horiz-adv-x="392" +d="M360 9l-28 -28q-7 -7 -14 1l-33 39q-38 -30 -89 -30q-52 0 -88 24.5t-50 68.5q-11 32 -11 176q0 143 11 176q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -176q0 -162 -24 -198l39 -39q6 -8 0 -14zM196 60q28 0 44 10l-42 44q-8 8 0 14l24 24q8 6 14 -1l28 -32h2 +q3 25 3 141q0 133 -7 153q-14 44 -66 44t-66 -44q-7 -20 -7 -153q0 -135 7 -153q14 -47 66 -47z" /> + <glyph glyph-name="r.sc" horiz-adv-x="395" +d="M352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153 +q0 -6 6 -6h41z" /> + <glyph glyph-name="s.sc" horiz-adv-x="363" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="t.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10z" /> + <glyph glyph-name="u.sc" horiz-adv-x="409" +d="M205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="v.sc" horiz-adv-x="359" +d="M206 0h-52q-8 0 -10 10l-123 499q-2 10 9 10h57q10 0 11 -10l82 -369h3l80 369q1 10 11 10h56q10 0 8 -10l-122 -499q-2 -10 -10 -10z" /> + <glyph glyph-name="w.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10z" /> + <glyph glyph-name="x.sc" horiz-adv-x="370" +d="M340 0h-60q-9 0 -13 10l-81 176h-2l-80 -176q-4 -10 -14 -10h-60q-5 0 -6.5 3t0.5 8l120 260l-109 238q-5 10 7 10h59q9 0 13 -9l71 -158h2l71 158q4 9 13 9h57q12 0 7 -10l-109 -238l120 -260q2 -5 0.5 -8t-6.5 -3z" /> + <glyph glyph-name="y.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10z" /> + <glyph glyph-name="z.sc" horiz-adv-x="337" +d="M295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="agrave.sc" horiz-adv-x="370" +d="M204 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aacute.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM204 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM298 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123 +q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde.sc" horiz-adv-x="370" +d="M227 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99 +q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="adieresis.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM284 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 628h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM283 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.sc" horiz-adv-x="370" +d="M186 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499 +q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aring.sc" horiz-adv-x="370" +d="M186 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM186 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10 +h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aringacute.sc" horiz-adv-x="370" +d="M200 701h-39q-5 0 -6.5 3t1.5 7l76 106q7 10 16 10h59q5 0 6 -3t-2 -7l-93 -106q-10 -10 -18 -10zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l126 483q-42 24 -42 76q0 37 24.5 61.5t61.5 24.5t61.5 -24.5t24.5 -61.5q0 -51 -41 -76 +l125 -483q3 -10 -8 -10zM185 519q21 0 34.5 14t13.5 36q0 21 -13.5 35t-34.5 14t-34 -14t-13 -35q0 -22 13 -36t34 -14zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aogonek.sc" horiz-adv-x="370" +d="M295 -181q-34 0 -55 19t-21 54q0 49 63 110l-3 8l-24 99h-140l-24 -99q-2 -10 -10 -10h-58q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q1 -7 -4 -10q-67 -58 -67 -96q0 -26 21 -26q12 0 21 6q9 5 12 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15zM238 180 +l-51 212h-3l-52 -212h106z" /> + <glyph glyph-name="ae.sc" horiz-adv-x="559" +d="M520 0h-236q-10 0 -10 10v93q0 6 -6 6h-133l-40 -99q-5 -10 -13 -10h-60q-10 0 -7 10l205 499q4 10 13 10h287q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52 +q0 -10 -10 -10zM271 447l-108 -267h105q6 0 6 6v261h-3z" /> + <glyph glyph-name="aeacute.sc" horiz-adv-x="559" +d="M520 0h-236q-10 0 -10 10v93q0 6 -6 6h-133l-40 -99q-5 -10 -13 -10h-60q-10 0 -7 10l205 499q4 10 13 10h287q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52 +q0 -10 -10 -10zM271 447l-108 -267h105q6 0 6 6v261h-3zM316 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="cacute.sc" horiz-adv-x="369" +d="M200 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45 +q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="ccircumflex.sc" horiz-adv-x="369" +d="M192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-8 -61 -45.5 -93.5t-96.5 -32.5zM304 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ccaron.sc" horiz-adv-x="369" +d="M210 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9 +q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="cdotaccent.sc" horiz-adv-x="369" +d="M220 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45 +q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="ccedilla.sc" horiz-adv-x="369" +d="M102 -142l54 137q-75 15 -98 90q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-7 -54 -37.5 -85.5t-78.5 -38.5l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="dcaron.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v499q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-363q0 -6 6 -6h51zM210 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42 +q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="dcroat.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v216q0 6 -6 6h-25q-10 0 -10 10v41q0 10 10 10h25q6 0 6 6v210q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-142 +q0 -6 6 -6h52q10 0 10 -10v-41q0 -10 -10 -10h-52q-6 0 -6 -6v-148q0 -6 6 -6h51z" /> + <glyph glyph-name="eth.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v216q0 6 -6 6h-25q-10 0 -10 10v41q0 10 10 10h25q6 0 6 6v210q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-142 +q0 -6 6 -6h52q10 0 10 -10v-41q0 -10 -10 -10h-52q-6 0 -6 -6v-148q0 -6 6 -6h51z" /> + <glyph glyph-name="egrave.sc" horiz-adv-x="344" +d="M213 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6 +h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="eacute.sc" horiz-adv-x="344" +d="M194 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6 +h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ecircumflex.sc" horiz-adv-x="344" +d="M305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10zM300 597h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ecaron.sc" horiz-adv-x="344" +d="M206 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52 +q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="edieresis.sc" horiz-adv-x="344" +d="M284 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6 +h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="emacron.sc" horiz-adv-x="344" +d="M281 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ebreve.sc" horiz-adv-x="344" +d="M184 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10 +v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="edotaccent.sc" horiz-adv-x="344" +d="M211 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="eogonek.sc" horiz-adv-x="344" +d="M244 -181q-34 0 -55 19t-21 54q0 47 59 108h-158q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10h-5 +q-68 -59 -68 -96q0 -26 22 -26q10 0 21 6q9 5 12 -3l15 -34q3 -8 -5 -13q-23 -15 -53 -15z" /> + <glyph glyph-name="gcircumflex.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM308 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="gbreve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM196 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="gdotaccent.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM227 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="gcommaaccent.sc" horiz-adv-x="392" +d="M168 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45 +q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25z" /> + <glyph glyph-name="hcircumflex.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-202q0 -6 6 -6h129q6 0 6 6v202q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM318 597h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="hbar.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v364q0 6 -6 6h-33q-10 0 -10 10v41q0 10 10 10h33q6 0 6 6v62q0 10 10 10h57q10 0 10 -10v-62q0 -6 6 -6h129q6 0 6 6v62q0 10 10 10h57q10 0 10 -10v-62q0 -6 6 -6h33 +q10 0 10 -10v-41q0 -10 -10 -10h-33q-6 0 -6 -6v-364q0 -10 -10 -10zM271 301q6 0 6 6v67q0 6 -6 6h-129q-6 0 -6 -6v-67q0 -6 6 -6h129z" /> + <glyph glyph-name="igrave.sc" horiz-adv-x="195" +d="M123 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="iacute.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM115 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10z" /> + <glyph glyph-name="ibreve.sc" horiz-adv-x="195" +d="M98 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM210 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="itilde.sc" horiz-adv-x="195" +d="M140 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10 +v-499q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM195 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM50 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="imacron.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM195 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="idotaccent.sc" horiz-adv-x="195" +d="M129 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="iogonek.sc" horiz-adv-x="195" +d="M86 -181q-35 0 -56 19t-21 54q0 50 56 109q-6 0 -6 9v499q0 10 10 10h57q10 0 10 -10v-499q0 -4 -3 -9q-59 -63 -59 -97q0 -26 22 -26q11 0 20 6q9 5 12 -3l15 -34q3 -9 -5 -13q-22 -15 -52 -15z" /> + <glyph glyph-name="jcircumflex.sc" horiz-adv-x="319" +d="M121 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5zM327 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="kcommaaccent.sc" horiz-adv-x="396" +d="M181 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM370 0h-63q-8 0 -11 7l-108 232l-52 -85v-144q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-235l140 238q4 7 13 7h61q10 0 5 -9l-122 -198l142 -302 +q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="lacute.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM122 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="lcaron.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM189 364q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7z" /> + <glyph glyph-name="lcommaaccent.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM152 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="lslash.sc" horiz-adv-x="331" +d="M207 294l-71 -49v-167q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10h-232q-10 0 -10 10v185l-34 -23q-4 -2 -7 -0.5t-3 5.5v54q0 9 10 16l34 23v239q0 10 10 10h57q10 0 10 -10v-189l71 49q4 2 7 0.5t3 -5.5v-54q0 -9 -10 -16z" /> + <glyph glyph-name="ldot.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM296 211h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="nacute.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM216 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ncaron.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM229 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42 +q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="ntilde.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM253 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18 +q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="ncommaaccent.sc" horiz-adv-x="424" +d="M190 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10z +" /> + <glyph glyph-name="ograve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM213 597h-40 +q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="oacute.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM207 597h-40 +q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ocircumflex.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM308 597h-42 +q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="otilde.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM237 621 +q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="odieresis.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM294 628h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM149 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="omacron.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM293 643h-194 +q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="obreve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM196 603 +q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ohungarumlaut.sc" horiz-adv-x="392" +d="M268 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM145 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5 +q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="oslash.sc" horiz-adv-x="392" +d="M69 -30h-21q-11 0 -6 10l33 68q-12 18 -17 37q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q56 0 94 -30l20 41q6 10 14 10h20q10 0 7 -10l-34 -69q11 -16 17 -35q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25q-57 0 -95 29l-19 -40q-6 -10 -13 -10zM124 260 +q0 -87 1 -108l129 274q-16 30 -58 30q-50 0 -65 -45q-7 -25 -7 -151zM196 64q50 0 65 44q7 21 7 152q0 86 -1 107l-130 -274q17 -29 59 -29z" /> + <glyph glyph-name="oslashacute.sc" horiz-adv-x="392" +d="M207 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM69 -30h-21q-11 0 -6 10l33 68q-12 18 -17 37q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q56 0 94 -30l20 41q6 10 14 10h20q10 0 7 -10l-34 -69q11 -16 17 -35q11 -33 11 -175 +t-11 -175q-14 -44 -50 -69t-88 -25q-57 0 -95 29l-19 -40q-6 -10 -13 -10zM124 260q0 -87 1 -108l129 274q-16 30 -58 30q-50 0 -65 -45q-7 -25 -7 -151zM196 64q50 0 65 44q7 21 7 152q0 86 -1 107l-130 -274q17 -29 59 -29z" /> + <glyph glyph-name="oe.sc" horiz-adv-x="553" +d="M514 0h-236q-10 0 -10 10v21h-1q-22 -40 -86 -40q-96 0 -123 89q-11 33 -11 180q0 146 11 179q27 89 123 89q64 0 86 -40h1v21q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142 +q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="racute.sc" horiz-adv-x="395" +d="M196 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10 +zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="rcaron.sc" horiz-adv-x="395" +d="M201 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5 +t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="rcommaaccent.sc" horiz-adv-x="395" +d="M173 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220 +q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="sacute.sc" horiz-adv-x="363" +d="M190 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38 +q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="scircumflex.sc" horiz-adv-x="363" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5zM294 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="scaron.sc" horiz-adv-x="363" +d="M200 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12 +q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="scedilla.sc" horiz-adv-x="363" +d="M105 -152q-10 0 -7 10l54 136q-107 15 -116 133q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-9 -2 -11 9q-9 68 -69 68 +q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -137 -115 -151l-45 -135q-4 -10 -16 -10h-48z" /> + <glyph glyph-name="scommaaccent.sc" horiz-adv-x="363" +d="M154 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38 +q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="tcaron.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10zM191 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123 +q-6 -10 -17 -10z" /> + <glyph glyph-name="tcommaaccent.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10zM144 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="tbar.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v277q0 6 -6 6h-43q-10 0 -10 10v42q0 10 10 10h43q6 0 6 6v80q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-80q0 -6 6 -6h43q10 0 10 -10v-42q0 -10 -10 -10h-43q-6 0 -6 -6v-277 +q0 -10 -10 -10z" /> + <glyph glyph-name="thorn.sc" horiz-adv-x="379" +d="M142 429h49q158 0 158 -157q0 -158 -158 -158h-49q-6 0 -6 -6v-98q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-74q0 -6 6 -6zM184 185q47 0 67.5 19.5t20.5 67.5q0 47 -20.5 66.5t-67.5 19.5h-42q-6 0 -6 -6v-161q0 -6 6 -6h42z" /> + <glyph glyph-name="ugrave.sc" horiz-adv-x="409" +d="M229 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uacute.sc" horiz-adv-x="409" +d="M219 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="ucircumflex.sc" horiz-adv-x="409" +d="M205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40zM316 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36 +q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="utilde.sc" horiz-adv-x="409" +d="M246 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57 +q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="udieresis.sc" horiz-adv-x="409" +d="M302 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM157 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364 +q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="umacron.sc" horiz-adv-x="409" +d="M301 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="ubreve.sc" horiz-adv-x="409" +d="M204 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57 +q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uring.sc" horiz-adv-x="409" +d="M204 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM204 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57 +q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uhungarumlaut.sc" horiz-adv-x="409" +d="M277 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM154 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81 +q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uogonek.sc" horiz-adv-x="409" +d="M206 -181q-34 0 -55 19t-21 54q0 42 45 103q-54 8 -85.5 46.5t-31.5 102.5v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -62 -29 -100t-81 -49q-47 -59 -47 -91q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34 +q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="wacute.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM283 597h-40q-10 0 -5 10l69 123 +q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10z" /> + <glyph glyph-name="wcircumflex.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM375 597h-42q-10 0 -17 10l-52 71 +h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="wdieresis.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM361 628h-51q-10 0 -10 10v72 +q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM216 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="wgrave.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM285 597h-40q-9 0 -17 10l-87 123 +q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="yacute.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM190 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ycircumflex.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM284 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="ydieresis.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM270 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM125 628h-51q-10 0 -10 10v72q0 10 10 10h51 +q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="ygrave.sc" horiz-adv-x="343" +d="M196 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10z" /> + <glyph glyph-name="zacute.sc" horiz-adv-x="337" +d="M180 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron.sc" horiz-adv-x="337" +d="M188 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent.sc" horiz-adv-x="337" +d="M202 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ij.sc" horiz-adv-x="514" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM316 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5z" /> + <glyph glyph-name="germandbls.sc" horiz-adv-x="726" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5zM549 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127 +q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="eng.sc" horiz-adv-x="424" +d="M237 -180h-9q-10 0 -10 10v52q0 10 10 10h9q29 2 40 13.5t11 40.5v30l-156 411h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q12 0 16 -10l137 -373h4v373q0 10 10 10h50q10 0 10 -10v-552q0 -74 -29.5 -105.5t-98.5 -31.5z" /> + <glyph glyph-name="grave.sc" horiz-adv-x="390" +d="M264 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="acute.sc" horiz-adv-x="390" +d="M166 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="circumflex.sc" horiz-adv-x="390" +d="M307 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron.sc" horiz-adv-x="390" +d="M213 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="tilde.sc" horiz-adv-x="390" +d="M236 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="dieresis.sc" horiz-adv-x="390" +d="M293 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="macron.sc" horiz-adv-x="389" +d="M293 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve.sc" horiz-adv-x="390" +d="M195 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ring.sc" horiz-adv-x="390" +d="M195 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14z" /> + <glyph glyph-name="hungarumlaut.sc" horiz-adv-x="390" +d="M226 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM103 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="dotaccent.sc" horiz-adv-x="390" +d="M226 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="exclamdown.sc" horiz-adv-x="206" +d="M120 344h-34q-10 0 -10 -10l-15 -329q0 -10 10 -10h64q10 0 10 10l-15 329q0 10 -10 10zM136 514h-66q-10 0 -10 -10v-84q0 -10 10 -10h66q10 0 10 10v84q0 10 -10 10z" /> + <glyph glyph-name="questiondown.sc" horiz-adv-x="313" +d="M129 358h59q10 0 10 -10v-34q0 -33 -16 -55l-47 -65q-28 -40 -28 -74q0 -16 4 -30q12 -32 50 -32q37 0 49 32q4 10 5 41q0 11 10 9l56 -7q9 -1 9 -10q0 -37 -8 -61q-13 -37 -45 -56.5t-77 -19.5q-95 0 -122 78q-8 21 -8 52q0 54 30 94l46 64q13 18 13 45v29q0 10 10 10z +M126 514h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10z" /> + <glyph glyph-name="Euro.sc" horiz-adv-x="362" +d="M200 -9q-95 0 -122 88q-9 27 -9 100q0 6 -6 6h-33q-10 0 -10 10v35q0 10 10 10h33q6 0 6 6v32q0 6 -6 6h-33q-10 0 -10 10v35q0 10 10 10h33q6 0 6 6q0 69 9 96q27 87 122 87q57 0 89.5 -28.5t39.5 -77.5q2 -9 -7 -11l-52 -11q-10 -2 -12 8q-9 49 -56 49q-41 0 -52 -39 +q-5 -17 -5 -73q0 -6 6 -6h111q10 0 10 -10l-10 -35q-3 -10 -10 -10h-101q-6 0 -6 -6v-32q0 -6 6 -6h101q10 0 10 -10l-10 -35q-3 -10 -10 -10h-91q-6 0 -6 -6q0 -61 5 -78q11 -39 52 -39q47 0 56 49q2 10 12 8l52 -10q9 -2 7 -11q-7 -49 -39.5 -78t-89.5 -29z" /> + <glyph glyph-name="cent.sc" horiz-adv-x="362" +d="M194 -76h-13q-10 0 -10 10v58q-86 6 -109 84q-9 29 -9 107q0 79 9 107q24 78 109 84v60q0 10 10 10h13q10 0 10 -10v-60q46 -4 75.5 -30t36.5 -66q2 -9 -7 -12l-53 -10q-8 -3 -12 7q-9 32 -40 38v-236q30 5 40 38q3 8 12 7l53 -10q9 -3 7 -12q-7 -40 -36.5 -66t-75.5 -30 +v-58q0 -10 -10 -10zM136 98q8 -27 35 -33v235q-28 -6 -35 -32q-6 -18 -6 -85t6 -85z" /> + <glyph glyph-name="sterling.sc" horiz-adv-x="362" +d="M317 0h-257q-10 0 -10 10v52q0 7 4 11q26 27 26 69v67q0 6 -6 6h-26q-10 0 -10 10v39q0 10 10 10h26q6 0 6 6v118q0 60 32 95t92 35q55 0 85.5 -30t35.5 -80q2 -10 -9 -11l-53 -10q-9 -2 -11 8q-4 51 -48 51q-47 0 -47 -61v-115q0 -6 6 -6h84q10 0 10 -10v-39 +q0 -10 -10 -10h-84q-6 0 -6 -6v-67q0 -47 -24 -68v-2h184q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="florin.sc" horiz-adv-x="362" +d="M315 273h-80l-48 -262q-14 -81 -47.5 -114.5t-103.5 -33.5h-15q-10 0 -10 10v53q0 10 10 10h6q40 0 57.5 14.5t25.5 58.5l47 264h-58q-10 0 -10 10v42q0 10 10 10h69l7 36q15 81 47.5 114.5t102.5 33.5h16q10 0 10 -10v-53q0 -10 -10 -10h-7q-38 0 -55.5 -15t-25.5 -58 +l-7 -38h69q10 0 10 -10v-42q0 -10 -10 -10z" /> + <glyph glyph-name="yen.sc" horiz-adv-x="362" +d="M209 0h-57q-10 0 -10 10v89q0 6 -6 6h-78q-10 0 -10 10v35q0 10 10 10h78q6 0 6 6v30q0 6 -6 6h-78q-10 0 -10 10v35q0 10 10 10h70v2l-98 250q-3 10 7 10h60q9 0 12 -10l73 -197h2l69 197q3 10 12 10h59q11 0 8 -10l-99 -250v-2h70q10 0 10 -10v-35q0 -10 -10 -10h-78 +q-6 0 -6 -6v-30q0 -6 6 -6h78q10 0 10 -10v-35q0 -10 -10 -10h-78q-6 0 -6 -6v-89q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand.sc" horiz-adv-x="843" +d="M222 -10h-38q-11 0 -8 10l213 519q3 10 12 10h38q11 0 8 -10l-212 -519q-4 -10 -13 -10zM154 255q-65 0 -81 52q-7 20 -7 83q0 64 7 82q17 53 81 53t82 -53q7 -23 7 -82q0 -58 -7 -83q-18 -52 -82 -52zM154 305q21 0 29 19q3 10 3 66q0 54 -3 65q-8 19 -29 19 +q-22 0 -28 -19q-3 -11 -3 -65q0 -56 3 -66q6 -19 28 -19zM689 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t82 -53q6 -19 6 -82t-6 -82q-18 -53 -82 -53zM469 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t81 -53q7 -18 7 -82t-7 -82q-17 -53 -81 -53zM689 44 +q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-3 -10 -3 -65t3 -65q6 -20 28 -20zM469 44q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-4 -9 -4 -65t4 -65q6 -20 28 -20z" /> + <glyph glyph-name="parenleft.sc" horiz-adv-x="245" +d="M192 -84h-36q-9 0 -12 10q-74 162 -74 334q0 171 74 333q3 10 12 10h36q10 0 7 -10q-53 -167 -53 -333q0 -167 53 -334q3 -10 -7 -10z" /> + <glyph glyph-name="parenright.sc" horiz-adv-x="245" +d="M89 -84h-36q-10 0 -7 10q53 167 53 334q0 166 -53 333q-3 10 7 10h36q9 0 12 -10q74 -162 74 -333q0 -172 -74 -334q-3 -10 -12 -10z" /> + <glyph glyph-name="bracketleft.sc" horiz-adv-x="244" +d="M203 -84h-116q-10 0 -10 10v667q0 10 10 10h116q10 0 10 -10v-45q0 -10 -10 -10h-48q-6 0 -6 -6v-545q0 -6 6 -6h48q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="bracketright.sc" horiz-adv-x="244" +d="M157 -84h-115q-10 0 -10 10v45q0 10 10 10h48q6 0 6 6v545q0 6 -6 6h-48q-10 0 -10 10v45q0 10 10 10h115q10 0 10 -10v-667q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft.sc" horiz-adv-x="284" +d="M244 -84h-22q-105 0 -105 112v129q0 37 -12 54t-42 19q-10 0 -10 10v45q0 8 10 10q30 1 42 18t12 54v125q0 111 105 111h22q10 0 10 -10v-45q0 -10 -10 -10h-10q-44 0 -44 -51v-101q0 -58 -10 -83.5t-41 -38.5v-3q31 -14 41 -39t10 -83v-107q0 -51 44 -51h10q10 0 10 -10 +v-45q0 -10 -10 -10z" /> + <glyph glyph-name="braceright.sc" horiz-adv-x="284" +d="M62 -84h-22q-10 0 -10 10v45q0 10 10 10h10q45 0 45 51v107q0 58 10 83t41 39v3q-31 13 -41 38.5t-10 83.5v101q0 51 -45 51h-10q-10 0 -10 10v45q0 10 10 10h22q105 0 105 -111v-125q0 -37 12 -54t42 -18q10 -2 10 -10v-45q0 -10 -10 -10q-30 -2 -42 -19t-12 -54v-129 +q0 -112 -105 -112z" /> + <glyph glyph-name="zero.onum" +d="M193 -9q-104 0 -132 88q-10 31 -10 161q0 129 10 160q28 88 132 88t132 -88q10 -31 10 -160q0 -130 -10 -161q-28 -88 -132 -88zM193 64q47 0 59 39q6 23 6 137q0 116 -6 137q-14 39 -59 39q-47 0 -59 -39q-6 -17 -6 -137t6 -137q12 -39 59 -39z" /> + <glyph glyph-name="one.onum" +d="M248 0h-57q-10 0 -10 10v386h-2l-90 -39q-11 -4 -11 7v56q0 10 8 14l93 42q6 3 15 3h54q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="two.onum" +d="M322 0h-261q-10 0 -10 10v51q0 10 7 17l153 151q25 24 34.5 46t9.5 59q0 28 -5 42q-14 40 -59 40t-59 -40q-5 -14 -5 -59q0 -11 -12 -9l-54 5q-10 1 -10 12q0 45 9 74q30 89 132 89t132 -89q8 -25 8 -65q0 -53 -14 -85.5t-47 -64.5l-113 -111v-1h164q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.onum" +d="M187 -189q-102 0 -131 91q-9 28 -9 79q0 11 10 12l54 6q11 2 11 -10q0 -49 6 -65q12 -40 59 -40q45 0 59 40q5 18 5 100q0 84 -6 100q-13 39 -61 39h-25q-10 0 -10 10v52q0 7 4 15l92 166v1h-185q-10 0 -10 10v52q0 10 10 10h258q10 0 10 -10v-51q0 -6 -3 -14l-96 -169 +v-2q68 -7 90 -75q9 -32 9 -134q0 -95 -9 -124q-30 -89 -132 -89z" /> + <glyph glyph-name="four.onum" +d="M291 -180h-58q-10 0 -10 10v164q0 6 -6 6h-183q-10 0 -10 10v51q0 5 2 11l133 411q3 8 12 8h58q10 0 7 -11l-129 -406v-2h110q6 0 6 6v143q0 10 10 10h58q10 0 10 -10v-143q0 -6 5 -6h47q10 0 10 -10v-52q0 -10 -10 -10h-46q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onum" +d="M195 -189q-102 0 -131 91q-9 29 -9 71q0 11 10 12l54 5q12 2 12 -9q0 -43 5 -57q12 -40 59 -40q45 0 59 40q5 18 5 104q0 85 -5 103q-14 41 -59 41q-39 0 -58 -34q-5 -9 -15 -9h-48q-10 0 -10 10v330q0 10 10 10h252q10 0 10 -10v-52q0 -10 -10 -10h-185q-6 0 -6 -6v-188 +h1q26 31 77 31q88 0 114 -79q9 -32 9 -137q0 -99 -9 -128q-30 -89 -132 -89z" /> + <glyph glyph-name="six.onum" +d="M193 -9q-103 0 -133 91q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91zM193 64q45 0 59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91q14 -40 59 -40z" /> + <glyph glyph-name="seven.onum" +d="M159 -180h-58q-11 0 -6 12l169 573v2h-134q-6 0 -6 -6v-74q0 -10 -10 -10h-52q-10 0 -10 10v142q0 10 10 10h270q10 0 10 -10v-51q0 -6 -2 -14l-168 -574q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onum" +d="M193 -9q-102 0 -132 91q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM193 64q45 0 59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88q14 -40 59 -40z" /> + <glyph glyph-name="nine.onum" +d="M193 488q103 0 133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-102 -261q-3 -9 -12 -9h-60q-11 0 -6 11l100 258l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 28 -9 116t8 113q30 91 133 91zM193 415q-45 0 -59 -40q-5 -14 -5 -91q0 -76 5 -90q14 -41 59 -41t59 41 +q5 14 5 90q0 77 -5 91q-14 40 -59 40z" /> + <glyph glyph-name="zero.scprop" horiz-adv-x="362" +d="M181 -9q-47 0 -79 22t-45 62q-9 26 -9 185t9 185q27 83 124 83t124 -83q9 -26 9 -185t-9 -185q-13 -40 -45 -62t-79 -22zM181 64q39 0 51 35q5 17 5 161q0 143 -5 161q-12 35 -51 35t-51 -35q-5 -18 -5 -161q0 -144 5 -161q12 -35 51 -35z" /> + <glyph glyph-name="one.scprop" horiz-adv-x="279" +d="M191 0h-58q-10 0 -10 10v419h-1l-78 -46q-11 -5 -11 7v60q0 8 7 14l79 50q8 5 16 5h56q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="two.scprop" horiz-adv-x="356" +d="M301 0h-245q-9 0 -9 9v51q0 8 3 12l155 219q17 24 22.5 42t5.5 51q0 27 -4 38q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -42q0 -11 -12 -9l-54 5q-9 2 -9 12q0 38 6 57q27 83 125 83t124 -83q9 -25 9 -62q0 -45 -10.5 -73.5t-34.5 -62.5l-126 -174v-1h161q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.scprop" horiz-adv-x="358" +d="M177 -9q-98 0 -125 83q-6 19 -6 49q0 11 9 12l54 5q12 2 12 -9q0 -22 4 -34q12 -33 52 -33q39 0 51 33q4 12 4 53q0 38 -3 49q-11 33 -56 33h-13q-10 0 -10 10v51q0 10 10 10h13q45 0 56 32q3 11 3 42q0 34 -4 45q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -33 +q0 -12 -12 -10l-54 6q-9 1 -9 12q0 29 6 48q27 83 125 83t124 -83q9 -25 9 -68q0 -36 -6 -54q-11 -33 -47 -52v-2q36 -19 47 -53q6 -18 6 -66q0 -51 -9 -76q-26 -83 -124 -83z" /> + <glyph glyph-name="four.scprop" horiz-adv-x="355" +d="M274 0h-56q-10 0 -10 10v60q0 6 -6 6h-165q-10 0 -10 10v52q0 5 2 11l127 362q3 8 12 8h58q11 0 8 -11l-126 -358v-2h94q6 0 6 6v134q0 10 10 10h56q10 0 10 -10v-134q0 -6 5 -6h37q10 0 10 -10v-52q0 -10 -10 -10h-36q-6 0 -6 -6v-60q0 -10 -10 -10z" /> + <glyph glyph-name="five.scprop" horiz-adv-x="361" +d="M182 -9q-99 0 -125 83q-6 16 -6 39q0 11 10 12l53 5q11 1 13 -9q0 -12 4 -24q11 -33 51 -33q39 0 51 33q4 16 4 68q0 55 -5 68q-12 33 -50 33q-33 0 -49 -22q-5 -8 -16 -8h-47q-10 0 -10 10v263q0 10 10 10h235q10 0 10 -10v-52q0 -10 -10 -10h-169q-6 0 -6 -6v-124h1 +q24 21 70 21q82 0 106 -74q8 -26 8 -99q0 -67 -9 -92q-26 -82 -124 -82z" /> + <glyph glyph-name="six.scprop" horiz-adv-x="358" +d="M179 -9q-97 0 -125 83q-8 27 -8 76q0 86 29 148l99 212q4 9 15 9h58q11 0 6 -10l-98 -206l2 -1q14 7 39 7q83 0 108 -76q8 -27 8 -83q0 -49 -8 -76q-28 -83 -125 -83zM179 64q39 0 51 33q5 15 5 53t-5 53q-12 33 -51 33t-51 -33q-5 -15 -5 -53t5 -53q12 -33 51 -33z" /> + <glyph glyph-name="seven.scprop" horiz-adv-x="347" +d="M140 0h-56q-12 0 -7 12l159 434v1h-115q-6 0 -6 -6v-46q0 -10 -10 -10h-52q-10 0 -10 10v114q0 10 10 10h250q10 0 10 -10v-54q0 -6 -3 -12l-156 -433q-3 -10 -14 -10z" /> + <glyph glyph-name="eight.scprop" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 42 7 67q14 39 42 54v2q-29 15 -42 54q-7 25 -7 55q0 36 8 63q28 83 125 83t125 -83q8 -27 8 -63q0 -30 -7 -55q-13 -39 -42 -54v-2q28 -15 42 -54q7 -25 7 -67q0 -49 -8 -76q-28 -83 -125 -83zM181 308q39 0 51 34q5 13 5 40t-5 40 +q-12 34 -51 34t-51 -34q-5 -13 -5 -40t5 -40q12 -34 51 -34zM181 64q39 0 51 33q5 15 5 53q0 39 -5 52q-12 34 -51 34t-51 -34q-5 -13 -5 -52q0 -38 5 -53q12 -33 51 -33z" /> + <glyph glyph-name="nine.scprop" horiz-adv-x="358" +d="M169 0h-58q-11 0 -6 11l98 205l-2 1q-12 -6 -39 -6q-83 0 -108 75q-8 29 -8 83q0 49 8 76q28 83 125 83t125 -83q8 -27 8 -76q0 -85 -29 -148l-99 -212q-4 -9 -15 -9zM179 283q39 0 51 34q5 13 5 52q0 40 -5 53q-12 34 -51 34t-51 -34q-5 -13 -5 -53q0 -39 5 -52 +q12 -34 51 -34z" /> + <glyph glyph-name="zero.prop" +d="M61 80q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89t-132 89zM134 104q14 -40 59 -40q46 0 58 40q7 20 7 236t-7 236q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236t6 -236z" /> + <glyph glyph-name="one.prop" horiz-adv-x="318" +d="M142 10v577h-1l-86 -65q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v62q0 8 9 16l87 67q9 6 17 6h53q10 0 10 -10v-660q0 -10 -10 -10h-58q-10 0 -10 10z" /> + <glyph glyph-name="two.prop" horiz-adv-x="375" +d="M46 10v51q0 9 5 18l170 320q29 54 29 122q0 41 -5 55q-14 40 -60 40q-45 0 -59 -40q-5 -14 -5 -70q0 -12 -12 -10l-54 6q-9 2 -9 12q0 60 8 85q30 90 132 90t132 -89q9 -28 9 -79q0 -84 -41 -161l-156 -287v-1h187q10 0 10 -10v-52q0 -10 -10 -10h-261q-10 0 -10 10z" /> + <glyph glyph-name="three.prop" horiz-adv-x="377" +d="M55 81q-9 29 -9 80q0 11 10 12l54 5q12 2 12 -9q0 -51 5 -65q14 -40 59 -40q46 0 59 40q5 14 5 87q0 75 -5 88q-13 39 -63 39h-16q-10 0 -10 10v51q0 10 10 10h16q50 0 63 38q5 14 5 77q0 58 -5 72q-13 40 -59 40q-45 0 -59 -40q-5 -14 -5 -65q0 -11 -12 -9l-54 5 +q-10 1 -10 12q0 51 9 80q30 90 132 90t132 -89q8 -25 8 -96q0 -64 -7 -88q-12 -37 -51 -59v-2q38 -22 51 -60q7 -22 7 -104q0 -86 -8 -111q-30 -89 -132 -89t-132 90z" /> + <glyph glyph-name="four.prop" horiz-adv-x="388" +d="M40 112q-10 0 -10 10v51q0 6 2 12l140 487q3 8 12 8h58q10 0 7 -11l-139 -483v-2h110q6 0 6 6v190q0 10 10 10h57q10 0 10 -10v-190q0 -6 5 -6h46q10 0 10 -10v-52q0 -10 -10 -10h-45q-6 0 -6 -6v-96q0 -10 -10 -10h-57q-10 0 -10 10v96q0 6 -6 6h-180z" /> + <glyph glyph-name="five.prop" horiz-adv-x="383" +d="M63 81q-8 25 -8 72q0 11 9 12l54 5q12 2 12 -9q0 -43 5 -57q14 -40 59 -40q46 0 58 39q6 16 6 113q0 96 -6 112q-12 40 -58 40q-38 0 -57 -34q-5 -9 -15 -9h-49q-10 0 -10 10v335q0 10 10 10h253q10 0 10 -10v-52q0 -10 -10 -10h-186q-6 0 -6 -6v-193h1q28 31 77 31 +q87 0 113 -78q10 -30 10 -146q0 -104 -10 -136q-28 -89 -130 -89t-132 90z" /> + <glyph glyph-name="six.prop" horiz-adv-x="382" +d="M58 82q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91t-133 91zM132 104q14 -40 59 -40t59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91z" /> + <glyph glyph-name="seven.prop" horiz-adv-x="370" +d="M84 12l176 594v2h-134q-6 0 -6 -6v-75q0 -10 -10 -10h-52q-10 0 -10 10v143q0 10 10 10h270q10 0 10 -10v-53q0 -5 -2 -13l-174 -594q-3 -10 -13 -10h-59q-9 0 -6 12z" /> + <glyph glyph-name="eight.prop" +d="M61 82q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91q-102 0 -132 91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM134 104q14 -40 59 -40t59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88z" /> + <glyph glyph-name="nine.prop" horiz-adv-x="382" +d="M113 11l107 279l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 29 -9 116q0 88 8 113q30 91 133 91t133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-109 -282q-3 -9 -12 -9h-60q-11 0 -6 11zM191 354q45 0 59 41q5 14 5 90q0 77 -5 91q-14 40 -59 40t-59 -40q-5 -14 -5 -91 +q0 -76 5 -90q14 -41 59 -41z" /> + <glyph glyph-name="Euro.prop" horiz-adv-x="407" +d="M228 -9q-101 0 -131 93q-11 32 -11 161q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6v54q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6q0 123 11 155q30 93 131 93q62 0 99.5 -37.5t44.5 -98.5q2 -11 -7 -12l-54 -10q-10 -3 -12 7q-11 78 -69 78 +q-45 0 -60 -42q-7 -22 -7 -133q0 -6 6 -6h142q10 0 10 -10l-10 -39q-2 -10 -10 -10h-132q-6 0 -6 -6v-54q0 -6 6 -6h127q10 0 10 -10l-10 -39q-3 -10 -10 -10h-117q-6 0 -6 -6q0 -115 7 -139q15 -42 60 -42q58 0 69 78q2 10 12 7l54 -10q9 -1 7 -12q-7 -61 -44.5 -98.5 +t-99.5 -37.5z" /> + <glyph glyph-name="cent.prop" horiz-adv-x="362" +d="M198 -100h-13q-10 0 -10 10v82q-91 6 -115 88q-12 37 -12 160q0 122 12 159q25 82 115 88v83q0 10 10 10h13q10 0 10 -10v-83q105 -8 121 -114q2 -9 -6 -11l-55 -11q-11 -2 -12 7q-10 49 -48 56v-349q39 8 48 56q2 10 12 7l55 -11q8 -2 6 -11q-7 -51 -38.5 -80t-82.5 -34 +v-82q0 -10 -10 -10zM132 103q12 -34 43 -38v349q-32 -6 -43 -37q-7 -25 -7 -137q0 -113 7 -137z" /> + <glyph glyph-name="dollar.prop" horiz-adv-x="388" +d="M43 162q0 10 8 11l52 9q11 1 11 -9q1 -54 16 -78.5t47 -29.5v254l-19 8q-62 24 -85 64t-23 120q0 168 127 177v41q0 10 10 10h15q10 0 10 -10v-41q61 -6 90 -45t34 -112q1 -9 -8 -11l-51 -8q-9 -2 -11 8q-3 45 -15 67t-39 27v-223l19 -7q62 -24 86 -65.5t24 -127.5 +q0 -100 -31 -147t-98 -52v-59q0 -10 -10 -10h-15q-10 0 -10 10v59q-67 4 -99 46t-35 124zM177 405v209q-28 -4 -40.5 -27.5t-12.5 -71.5t11 -71.5t42 -38.5zM212 65q29 4 42 30t13 87q0 54 -12 81t-43 42v-240z" /> + <glyph glyph-name="sterling.prop" horiz-adv-x="405" +d="M347 0h-281q-10 0 -10 10v52q0 5 4 11q30 34 30 93v119q0 6 -6 6h-29q-10 0 -10 10v38q0 10 10 10h29q6 0 6 6v185q0 70 34 109.5t98 39.5q120 0 132 -139q0 -11 -8 -12l-54 -9q-10 -1 -12 8q-2 42 -15.5 60.5t-42.5 18.5q-54 0 -54 -74v-187q0 -6 6 -6h94q10 0 10 -10 +v-38q0 -10 -10 -10h-94q-6 0 -6 -6v-119q0 -64 -29 -92v-2h208q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="florin.prop" horiz-adv-x="410" +d="M334 337h-81l-49 -364q-11 -80 -45 -116.5t-105 -36.5h-17q-10 0 -10 10v53q0 10 10 10h13q37 0 54 16t23 59l49 369h-68q-10 0 -10 10v44q0 10 10 10h77l17 126q11 80 45 116.5t105 36.5h18q10 0 10 -10v-53q0 -10 -10 -10h-13q-37 0 -54 -16t-23 -59l-18 -131h72 +q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="yen.prop" horiz-adv-x="381" +d="M219 0h-57q-10 0 -10 10v129q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h88q6 0 6 6v51q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h80v3l-110 341q-3 10 7 10h61q9 0 12 -10l83 -283h2l81 283q3 10 12 10h60q10 0 7 -10l-111 -341v-3h80q10 0 10 -10v-39q0 -10 -10 -10 +h-87q-6 0 -6 -6v-51q0 -6 6 -6h87q10 0 10 -10v-39q0 -10 -10 -10h-87q-6 0 -6 -6v-129q0 -10 -10 -10z" /> + <glyph glyph-name="zero.onumprop" +d="M193 -9q-104 0 -132 88q-10 31 -10 161q0 129 10 160q28 88 132 88t132 -88q10 -31 10 -160q0 -130 -10 -161q-28 -88 -132 -88zM193 64q47 0 59 39q6 23 6 137q0 116 -6 137q-14 39 -59 39q-47 0 -59 -39q-6 -17 -6 -137t6 -137q12 -39 59 -39z" /> + <glyph glyph-name="one.onumprop" horiz-adv-x="294" +d="M196 0h-57q-10 0 -10 10v386h-2l-90 -39q-11 -4 -11 7v56q0 10 8 14l93 42q6 3 15 3h54q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="two.onumprop" horiz-adv-x="380" +d="M319 0h-261q-10 0 -10 10v51q0 10 7 17l153 151q25 24 34.5 46t9.5 59q0 28 -5 42q-14 40 -59 40t-59 -40q-5 -14 -5 -59q0 -11 -12 -9l-54 5q-10 1 -10 12q0 45 9 74q30 89 132 89t132 -89q8 -25 8 -65q0 -53 -14 -85.5t-47 -64.5l-113 -111v-1h164q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.onumprop" horiz-adv-x="379" +d="M187 -189q-102 0 -131 91q-9 28 -9 79q0 11 10 12l54 6q11 2 11 -10q0 -49 6 -65q12 -40 59 -40q45 0 59 40q5 18 5 100q0 84 -6 100q-13 39 -61 39h-25q-10 0 -10 10v52q0 7 4 15l92 166v1h-185q-10 0 -10 10v52q0 10 10 10h258q10 0 10 -10v-51q0 -6 -3 -14l-96 -169 +v-2q68 -7 90 -75q9 -32 9 -134q0 -95 -9 -124q-30 -89 -132 -89z" /> + <glyph glyph-name="four.onumprop" horiz-adv-x="389" +d="M293 -180h-58q-10 0 -10 10v164q0 6 -6 6h-183q-10 0 -10 10v51q0 5 2 11l133 411q3 8 12 8h58q10 0 7 -11l-129 -406v-2h110q6 0 6 6v143q0 10 10 10h58q10 0 10 -10v-143q0 -6 5 -6h47q10 0 10 -10v-52q0 -10 -10 -10h-46q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onumprop" horiz-adv-x="383" +d="M195 -189q-102 0 -131 91q-9 29 -9 71q0 11 10 12l54 5q12 2 12 -9q0 -43 5 -57q12 -40 59 -40q45 0 59 40q5 18 5 104q0 85 -5 103q-14 41 -59 41q-39 0 -58 -34q-5 -9 -15 -9h-48q-10 0 -10 10v330q0 10 10 10h252q10 0 10 -10v-52q0 -10 -10 -10h-185q-6 0 -6 -6v-188 +h1q26 31 77 31q88 0 114 -79q9 -32 9 -137q0 -99 -9 -128q-30 -89 -132 -89z" /> + <glyph glyph-name="six.onumprop" horiz-adv-x="382" +d="M191 -9q-103 0 -133 91q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91zM191 64q45 0 59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91q14 -40 59 -40z" /> + <glyph glyph-name="seven.onumprop" horiz-adv-x="373" +d="M153 -180h-58q-11 0 -6 12l169 573v2h-134q-6 0 -6 -6v-74q0 -10 -10 -10h-52q-10 0 -10 10v142q0 10 10 10h270q10 0 10 -10v-51q0 -6 -2 -14l-168 -574q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onumprop" +d="M193 -9q-102 0 -132 91q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM193 64q45 0 59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88q14 -40 59 -40z" /> + <glyph glyph-name="nine.onumprop" horiz-adv-x="382" +d="M191 488q103 0 133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-102 -261q-3 -9 -12 -9h-60q-11 0 -6 11l100 258l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 28 -9 116t8 113q30 91 133 91zM191 415q-45 0 -59 -40q-5 -14 -5 -91q0 -76 5 -90q14 -41 59 -41t59 41 +q5 14 5 90q0 77 -5 91q-14 40 -59 40z" /> + <glyph glyph-name="one.superior" horiz-adv-x="270" +d="M178 430h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.superior" horiz-adv-x="270" +d="M225 430h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.superior" horiz-adv-x="270" +d="M134 423q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="a.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="agrave.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM216 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="aacute.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM195 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM313 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM242 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="adieresis.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM299 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM154 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM298 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM201 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="aring.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM201 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM201 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="aringacute.alt01" horiz-adv-x="389" +d="M212 775h-38q-4 0 -5.5 3t1.5 7l82 93q9 10 21 10h56q4 0 5.5 -3.5t-1.5 -6.5l-100 -93q-11 -10 -21 -10zM321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459 +q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42zM201 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM201 583q20 0 33.5 14 +t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="aogonek.alt01" horiz-adv-x="389" +d="M271 -181q-35 0 -56 19t-21 54q0 50 61 109q-1 2 -1 9v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -7 -6 -11q-66 -55 -66 -95q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34q4 -9 -5 -13 +q-23 -15 -52 -15zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="ae.alt01" horiz-adv-x="565" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5 +q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45 +q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="aeacute.alt01" horiz-adv-x="565" +d="M304 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106 +q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40 +q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="germandbls.alt01" horiz-adv-x="426" +d="M186 -180q-10 0 -10 10v52q0 10 10 10q85 0 108 68q8 24 8 101q0 74 -6 92q-17 51 -81 54q-10 0 -10 10v49q0 8 5 16l76 126v2h-145q-6 0 -6 -6v-394q0 -10 -10 -10h-57q-10 0 -10 10v538q0 132 124 132h19q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77 +q0 -6 6 -6h225q10 0 10 -10v-41q0 -7 -3 -13l-88 -143v-2q63 -16 83 -77q12 -36 12 -132q0 -87 -12 -125q-39 -116 -182 -116z" /> + <glyph glyph-name="q.alt01" horiz-adv-x="389" +d="M321 -180h-57q-10 0 -10 10v219h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-562h1l51 51q6 6 14 0l28 -30q6 -6 -1 -14l-94 -91q-4 -3 -9 -3zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134 +q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="C.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z" /> + <glyph glyph-name="Cacute.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M221 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Ccircumflex.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M319 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Ccaron.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M225 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="Cdotaccent.alt01" horiz-adv-x="406" +d="M239 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226 +q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z" /> + <glyph glyph-name="Ccedilla.alt01" horiz-adv-x="406" +d="M119 -142l54 136q-86 13 -112 97q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -179 -130 -194 +l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="G.alt01" horiz-adv-x="422" +d="M211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53 +q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gcircumflex.alt01" horiz-adv-x="422" +d="M211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53 +q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102zM323 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Gbreve.alt01" horiz-adv-x="422" +d="M211 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59 +q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gdotaccent.alt01" horiz-adv-x="422" +d="M243 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225 +t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gcommaaccent.alt01" horiz-adv-x="422" +d="M183 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5 +q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="I.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Igrave.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM142 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58 +q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM134 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3 +t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Ibreve.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM118 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10 +q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Icircumflex.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM230 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10 +h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Itilde.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM160 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27 +q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Idieresis.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM216 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72 +q0 -10 -10 -10zM71 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Imacron.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM215 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43 +q0 -10 -10 -10z" /> + <glyph glyph-name="Idotaccent.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM150 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72 +q0 -10 -10 -10z" /> + <glyph glyph-name="Iogonek.alt01" horiz-adv-x="236" +d="M117 -181q-34 0 -55 19t-21 54q0 52 46 108h-45q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10h-39q-50 -61 -50 -96 +q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="Z.alt01" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute.alt01" horiz-adv-x="362" +d="M192 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228 +h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron.alt01" horiz-adv-x="362" +d="M202 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55 +q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent.alt01" horiz-adv-x="362" +d="M215 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45 +q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zero.alt01" +d="M193 -9q-103 0 -132 89q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89zM128 340v-105l128 288q-1 37 -5 53q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236zM193 64q46 0 58 40q7 20 7 236v105l-129 -288q1 -39 5 -53 +q14 -40 59 -40z" /> + <glyph glyph-name="one.alt01" +d="M327 0h-248q-10 0 -10 10v53q0 10 10 10h79q6 0 6 6v508h-1l-86 -65q-11 -7 -11 7v62q0 8 7 14l89 69q7 6 14 6h55q10 0 10 -10v-591q0 -6 6 -6h80q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt01" +d="M196 -9q-102 0 -132 91q-9 29 -9 126v329q0 72 39 112t106 40q65 0 114 -37q7 -6 2 -14l-28 -45q-5 -9 -14 -2q-35 25 -69 25q-35 0 -54 -20.5t-19 -58.5v-142h2q24 28 72 28q94 0 122 -83q9 -29 9 -132q0 -101 -8 -126q-30 -91 -133 -91zM196 64q45 0 59 40q5 14 5 104 +q0 88 -5 102q-14 41 -59 41t-59 -41q-5 -14 -5 -102q0 -90 5 -104q14 -40 59 -40z" /> + <glyph glyph-name="seven.alt01" +d="M310 309h-62l-87 -299q-3 -10 -13 -10h-59q-9 0 -6 12l88 297h-68q-10 0 -10 10v45q0 10 10 10h87l69 232v2h-202q-10 0 -10 10v52q0 10 10 10h270q10 0 10 -10v-52q0 -6 -2 -14l-68 -230h43q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt01" +d="M190 689q102 0 132 -91q9 -28 9 -126v-329q0 -72 -39 -112t-106 -40q-65 0 -114 37q-7 6 -2 14l28 45q5 9 14 2q35 -25 69 -25q35 0 54 20.5t19 58.5v142h-2q-24 -28 -72 -28q-94 0 -122 83q-9 28 -9 132q0 101 8 126q30 91 133 91zM190 616q-45 0 -59 -40 +q-5 -14 -5 -104q0 -88 5 -102q14 -41 59 -41t59 41q5 14 5 102q0 90 -5 104q-14 40 -59 40z" /> + <glyph glyph-name="zero.alt02" +d="M193 -9q-103 0 -132 89q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89zM128 340v-105l128 288q-1 37 -5 53q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236zM193 64q46 0 58 40q7 20 7 236v105l-129 -288q1 -39 5 -53 +q14 -40 59 -40z" /> + <glyph glyph-name="one.alt02" horiz-adv-x="337" +d="M305 0h-248q-10 0 -10 10v53q0 10 10 10h79q6 0 6 6v508h-1l-86 -65q-11 -7 -11 7v62q0 8 7 14l89 69q8 6 14 6h55q10 0 10 -10v-591q0 -6 6 -6h80q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt02" horiz-adv-x="380" +d="M191 -9q-102 0 -132 91q-9 29 -9 126v329q0 72 39 112t106 40q65 0 114 -37q7 -6 2 -14l-28 -45q-5 -9 -14 -2q-35 25 -69 25q-35 0 -54 -20.5t-19 -58.5v-142h2q24 28 72 28q94 0 122 -83q9 -29 9 -132q0 -101 -8 -126q-30 -91 -133 -91zM191 64q45 0 59 40q5 14 5 104 +q0 88 -5 102q-14 41 -59 41t-59 -41q-5 -14 -5 -102q0 -90 5 -104q14 -40 59 -40z" /> + <glyph glyph-name="seven.alt02" horiz-adv-x="366" +d="M303 309h-62l-87 -299q-3 -10 -13 -10h-59q-9 0 -6 12l88 297h-68q-10 0 -10 10v45q0 10 10 10h87l69 232v2h-202q-10 0 -10 10v52q0 10 10 10h270q10 0 10 -10v-52q0 -6 -2 -14l-68 -230h43q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt02" horiz-adv-x="380" +d="M189 689q102 0 132 -91q9 -28 9 -126v-329q0 -72 -39 -112t-106 -40q-65 0 -114 37q-7 6 -2 14l28 45q5 9 14 2q35 -25 69 -25q35 0 54 20.5t19 58.5v142h-2q-24 -28 -72 -28q-94 0 -122 83q-9 28 -9 132q0 101 8 126q30 91 133 91zM189 616q-45 0 -59 -40 +q-5 -14 -5 -104q0 -88 5 -102q14 -41 59 -41t59 41q5 14 5 102q0 90 -5 104q-14 40 -59 40z" /> + <glyph glyph-name="zero.nominator" horiz-adv-x="270" +d="M135 267q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 323q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.nominator" horiz-adv-x="270" +d="M178 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.nominator" horiz-adv-x="270" +d="M225 274h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.nominator" horiz-adv-x="270" +d="M134 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.nominator" horiz-adv-x="270" +d="M204 274h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 323q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.nominator" horiz-adv-x="270" +d="M117 274h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 514q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 323q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.nominator" horiz-adv-x="270" +d="M131 274h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 491q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="zero.denominator" horiz-adv-x="270" +d="M135 -7q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 49q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.denominator" horiz-adv-x="270" +d="M178 0h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.denominator" horiz-adv-x="270" +d="M225 0h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.denominator" horiz-adv-x="270" +d="M134 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.denominator" horiz-adv-x="270" +d="M204 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 49q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47q9 -23 36 -23z +" /> + <glyph glyph-name="seven.denominator" horiz-adv-x="270" +d="M117 0h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.denominator" horiz-adv-x="270" +d="M131 0h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 217q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <hkern u1=" " u2="Ỳ" k="15" /> + <hkern u1=" " u2="Ẅ" k="15" /> + <hkern u1=" " u2="Ẃ" k="15" /> + <hkern u1=" " u2="Ẁ" k="15" /> + <hkern u1=" " u2="Ț" k="10" /> + <hkern u1=" " u2="Ÿ" k="15" /> + <hkern u1=" " u2="Ŷ" k="15" /> + <hkern u1=" " u2="Ŵ" k="15" /> + <hkern u1=" " u2="Ŧ" k="10" /> + <hkern u1=" " u2="Ť" k="10" /> + <hkern u1=" " u2="Ţ" k="10" /> + <hkern u1=" " u2="Ý" k="15" /> + <hkern u1=" " u2="Y" k="15" /> + <hkern u1=" " u2="X" k="4" /> + <hkern u1=" " u2="W" k="15" /> + <hkern u1=" " u2="V" k="22" /> + <hkern u1=" " u2="T" k="10" /> + <hkern u1=""" u2="ï" k="-56" /> + <hkern u1=""" u2="y" k="-3" /> + <hkern u1=""" u2="v" k="-3" /> + <hkern u1="'" u2="ï" k="-56" /> + <hkern u1="'" u2="y" k="-3" /> + <hkern u1="'" u2="v" k="-3" /> + <hkern u1="," u2=" " k="16" /> + <hkern u1="-" u2="Ŧ" k="47" /> + <hkern u1="-" u2="y" k="17" /> + <hkern u1="-" u2="x" k="40" /> + <hkern u1="-" u2="v" k="16" /> + <hkern u1="-" u2="X" k="46" /> + <hkern u1="-" u2="V" k="36" /> + <hkern u1="." u2=" " k="16" /> + <hkern u1="A" g2="v.sc" k="13" /> + <hkern u1="A" u2="®" k="40" /> + <hkern u1="A" u2="«" k="13" /> + <hkern u1="A" u2="y" k="20" /> + <hkern u1="A" u2="v" k="24" /> + <hkern u1="A" u2="V" k="36" /> + <hkern u1="A" u2="?" k="40" /> + <hkern u1="B" g2="jcircumflex.sc" k="13" /> + <hkern u1="B" g2="aeacute.sc" k="7" /> + <hkern u1="B" g2="ae.sc" k="7" /> + <hkern u1="B" g2="j.sc" k="13" /> + <hkern u1="B" u2="Ỳ" k="16" /> + <hkern u1="B" u2="Ẅ" k="4" /> + <hkern u1="B" u2="Ẃ" k="4" /> + <hkern u1="B" u2="Ẁ" k="4" /> + <hkern u1="B" u2="Ǽ" k="24" /> + <hkern u1="B" u2="Ǻ" k="4" /> + <hkern u1="B" u2="Ÿ" k="16" /> + <hkern u1="B" u2="Ŷ" k="16" /> + <hkern u1="B" u2="Ŵ" k="4" /> + <hkern u1="B" u2="Ĵ" k="11" /> + <hkern u1="B" u2="Ą" k="4" /> + <hkern u1="B" u2="Ă" k="4" /> + <hkern u1="B" u2="Ā" k="4" /> + <hkern u1="B" u2="Ý" k="16" /> + <hkern u1="B" u2="Æ" k="24" /> + <hkern u1="B" u2="Å" k="4" /> + <hkern u1="B" u2="Ä" k="4" /> + <hkern u1="B" u2="Ã" k="4" /> + <hkern u1="B" u2="Â" k="4" /> + <hkern u1="B" u2="Á" k="4" /> + <hkern u1="B" u2="À" k="4" /> + <hkern u1="B" u2="Y" k="16" /> + <hkern u1="B" u2="X" k="16" /> + <hkern u1="B" u2="W" k="4" /> + <hkern u1="B" u2="V" k="6" /> + <hkern u1="B" u2="J" k="11" /> + <hkern u1="B" u2="A" k="4" /> + <hkern u1="C" u2="y" k="12" /> + <hkern u1="D" u2="X" k="18" /> + <hkern u1="D" u2="V" k="14" /> + <hkern u1="F" g2="aogonek.alt01" k="7" /> + <hkern u1="F" g2="aringacute.alt01" k="7" /> + <hkern u1="F" g2="aring.alt01" k="7" /> + <hkern u1="F" g2="abreve.alt01" k="7" /> + <hkern u1="F" g2="amacron.alt01" k="7" /> + <hkern u1="F" g2="adieresis.alt01" k="7" /> + <hkern u1="F" g2="atilde.alt01" k="7" /> + <hkern u1="F" g2="acircumflex.alt01" k="7" /> + <hkern u1="F" g2="aacute.alt01" k="7" /> + <hkern u1="F" g2="agrave.alt01" k="7" /> + <hkern u1="F" g2="a.alt01" k="7" /> + <hkern u1="F" g2="jcircumflex.sc" k="51" /> + <hkern u1="F" g2="aeacute.sc" k="53" /> + <hkern u1="F" g2="ae.sc" k="53" /> + <hkern u1="F" g2="aogonek.sc" k="28" /> + <hkern u1="F" g2="aringacute.sc" k="28" /> + <hkern u1="F" g2="aring.sc" k="28" /> + <hkern u1="F" g2="abreve.sc" k="28" /> + <hkern u1="F" g2="amacron.sc" k="28" /> + <hkern u1="F" g2="adieresis.sc" k="28" /> + <hkern u1="F" g2="atilde.sc" k="28" /> + <hkern u1="F" g2="acircumflex.sc" k="28" /> + <hkern u1="F" g2="aacute.sc" k="28" /> + <hkern u1="F" g2="agrave.sc" k="28" /> + <hkern u1="F" g2="j.sc" k="51" /> + <hkern u1="F" g2="a.sc" k="28" /> + <hkern u1="F" u2="…" k="74" /> + <hkern u1="F" u2="ș" k="9" /> + <hkern u1="F" u2="ǿ" k="7" /> + <hkern u1="F" u2="ǽ" k="30" /> + <hkern u1="F" u2="Ǽ" k="53" /> + <hkern u1="F" u2="ǻ" k="30" /> + <hkern u1="F" u2="Ǻ" k="25" /> + <hkern u1="F" u2="ų" k="18" /> + <hkern u1="F" u2="ű" k="18" /> + <hkern u1="F" u2="ů" k="18" /> + <hkern u1="F" u2="ŭ" k="18" /> + <hkern u1="F" u2="ū" k="18" /> + <hkern u1="F" u2="ũ" k="18" /> + <hkern u1="F" u2="š" k="9" /> + <hkern u1="F" u2="ş" k="9" /> + <hkern u1="F" u2="ŝ" k="9" /> + <hkern u1="F" u2="ś" k="9" /> + <hkern u1="F" u2="ř" k="18" /> + <hkern u1="F" u2="ŗ" k="18" /> + <hkern u1="F" u2="ŕ" k="18" /> + <hkern u1="F" u2="œ" k="24" /> + <hkern u1="F" u2="ő" k="24" /> + <hkern u1="F" u2="ŏ" k="24" /> + <hkern u1="F" u2="ō" k="24" /> + <hkern u1="F" u2="ŋ" k="18" /> + <hkern u1="F" u2="ň" k="18" /> + <hkern u1="F" u2="ņ" k="18" /> + <hkern u1="F" u2="ń" k="18" /> + <hkern u1="F" u2="Ĵ" k="55" /> + <hkern u1="F" u2="ı" k="18" /> + <hkern u1="F" u2="ģ" k="7" /> + <hkern u1="F" u2="ġ" k="7" /> + <hkern u1="F" u2="ğ" k="7" /> + <hkern u1="F" u2="ĝ" k="7" /> + <hkern u1="F" u2="ě" k="24" /> + <hkern u1="F" u2="ę" k="24" /> + <hkern u1="F" u2="ė" k="24" /> + <hkern u1="F" u2="ĕ" k="24" /> + <hkern u1="F" u2="ē" k="24" /> + <hkern u1="F" u2="đ" k="7" /> + <hkern u1="F" u2="ď" k="7" /> + <hkern u1="F" u2="č" k="24" /> + <hkern u1="F" u2="ċ" k="24" /> + <hkern u1="F" u2="ĉ" k="24" /> + <hkern u1="F" u2="ć" k="24" /> + <hkern u1="F" u2="ą" k="30" /> + <hkern u1="F" u2="Ą" k="25" /> + <hkern u1="F" u2="ă" k="30" /> + <hkern u1="F" u2="Ă" k="25" /> + <hkern u1="F" u2="ā" k="30" /> + <hkern u1="F" u2="Ā" k="25" /> + <hkern u1="F" u2="ü" k="18" /> + <hkern u1="F" u2="û" k="18" /> + <hkern u1="F" u2="ú" k="18" /> + <hkern u1="F" u2="ù" k="18" /> + <hkern u1="F" u2="ø" k="7" /> + <hkern u1="F" u2="ö" k="24" /> + <hkern u1="F" u2="õ" k="24" /> + <hkern u1="F" u2="ô" k="24" /> + <hkern u1="F" u2="ó" k="24" /> + <hkern u1="F" u2="ò" k="24" /> + <hkern u1="F" u2="ñ" k="18" /> + <hkern u1="F" u2="ð" k="7" /> + <hkern u1="F" u2="ë" k="24" /> + <hkern u1="F" u2="ê" k="24" /> + <hkern u1="F" u2="é" k="24" /> + <hkern u1="F" u2="è" k="24" /> + <hkern u1="F" u2="ç" k="24" /> + <hkern u1="F" u2="æ" k="30" /> + <hkern u1="F" u2="å" k="30" /> + <hkern u1="F" u2="ä" k="30" /> + <hkern u1="F" u2="ã" k="30" /> + <hkern u1="F" u2="â" k="30" /> + <hkern u1="F" u2="á" k="30" /> + <hkern u1="F" u2="à" k="30" /> + <hkern u1="F" u2="Æ" k="53" /> + <hkern u1="F" u2="Å" k="25" /> + <hkern u1="F" u2="Ä" k="25" /> + <hkern u1="F" u2="Ã" k="25" /> + <hkern u1="F" u2="Â" k="25" /> + <hkern u1="F" u2="Á" k="25" /> + <hkern u1="F" u2="À" k="25" /> + <hkern u1="F" u2="y" k="18" /> + <hkern u1="F" u2="u" k="18" /> + <hkern u1="F" u2="s" k="9" /> + <hkern u1="F" u2="r" k="18" /> + <hkern u1="F" u2="q" k="7" /> + <hkern u1="F" u2="p" k="18" /> + <hkern u1="F" u2="o" k="24" /> + <hkern u1="F" u2="n" k="18" /> + <hkern u1="F" u2="m" k="18" /> + <hkern u1="F" u2="g" k="7" /> + <hkern u1="F" u2="e" k="24" /> + <hkern u1="F" u2="d" k="7" /> + <hkern u1="F" u2="c" k="24" /> + <hkern u1="F" u2="a" k="30" /> + <hkern u1="F" u2="J" k="55" /> + <hkern u1="F" u2="A" k="25" /> + <hkern u1="F" u2="." k="74" /> + <hkern u1="F" u2="," k="74" /> + <hkern u1="G" u2="X" k="16" /> + <hkern u1="G" u2="V" k="12" /> + <hkern u1="H" u2="ï" k="-13" /> + <hkern u1="I" u2="ï" k="-13" /> + <hkern u1="K" g2="v.sc" k="29" /> + <hkern u1="K" u2="®" k="49" /> + <hkern u1="K" u2="«" k="50" /> + <hkern u1="K" u2="y" k="19" /> + <hkern u1="K" u2="v" k="27" /> + <hkern u1="L" g2="v.sc" k="29" /> + <hkern u1="L" u2="®" k="40" /> + <hkern u1="L" u2="«" k="20" /> + <hkern u1="L" u2="y" k="20" /> + <hkern u1="L" u2="v" k="38" /> + <hkern u1="L" u2="V" k="50" /> + <hkern u1="L" u2="?" k="13" /> + <hkern u1="M" u2="ï" k="-13" /> + <hkern u1="N" u2="ï" k="-13" /> + <hkern u1="O" u2="X" k="16" /> + <hkern u1="O" u2="V" k="12" /> + <hkern u1="P" g2="jcircumflex.sc" k="61" /> + <hkern u1="P" g2="aeacute.sc" k="76" /> + <hkern u1="P" g2="ae.sc" k="76" /> + <hkern u1="P" g2="aogonek.sc" k="43" /> + <hkern u1="P" g2="aringacute.sc" k="43" /> + <hkern u1="P" g2="aring.sc" k="43" /> + <hkern u1="P" g2="abreve.sc" k="43" /> + <hkern u1="P" g2="amacron.sc" k="43" /> + <hkern u1="P" g2="adieresis.sc" k="43" /> + <hkern u1="P" g2="atilde.sc" k="43" /> + <hkern u1="P" g2="acircumflex.sc" k="43" /> + <hkern u1="P" g2="aacute.sc" k="43" /> + <hkern u1="P" g2="agrave.sc" k="43" /> + <hkern u1="P" g2="j.sc" k="61" /> + <hkern u1="P" g2="a.sc" k="43" /> + <hkern u1="P" u2="…" k="114" /> + <hkern u1="P" u2="”" k="-20" /> + <hkern u1="P" u2="“" k="-20" /> + <hkern u1="P" u2="’" k="-20" /> + <hkern u1="P" u2="‘" k="-20" /> + <hkern u1="P" u2="Ỳ" k="8" /> + <hkern u1="P" u2="ǽ" k="18" /> + <hkern u1="P" u2="Ǽ" k="93" /> + <hkern u1="P" u2="ǻ" k="18" /> + <hkern u1="P" u2="Ǻ" k="46" /> + <hkern u1="P" u2="Ÿ" k="8" /> + <hkern u1="P" u2="Ŷ" k="8" /> + <hkern u1="P" u2="œ" k="6" /> + <hkern u1="P" u2="ő" k="6" /> + <hkern u1="P" u2="ŏ" k="6" /> + <hkern u1="P" u2="ō" k="6" /> + <hkern u1="P" u2="Ĵ" k="72" /> + <hkern u1="P" u2="ě" k="6" /> + <hkern u1="P" u2="ę" k="6" /> + <hkern u1="P" u2="ė" k="6" /> + <hkern u1="P" u2="ĕ" k="6" /> + <hkern u1="P" u2="ē" k="6" /> + <hkern u1="P" u2="č" k="6" /> + <hkern u1="P" u2="ċ" k="6" /> + <hkern u1="P" u2="ĉ" k="6" /> + <hkern u1="P" u2="ć" k="6" /> + <hkern u1="P" u2="ą" k="18" /> + <hkern u1="P" u2="Ą" k="46" /> + <hkern u1="P" u2="ă" k="18" /> + <hkern u1="P" u2="Ă" k="46" /> + <hkern u1="P" u2="ā" k="18" /> + <hkern u1="P" u2="Ā" k="46" /> + <hkern u1="P" u2="ö" k="6" /> + <hkern u1="P" u2="õ" k="6" /> + <hkern u1="P" u2="ô" k="6" /> + <hkern u1="P" u2="ó" k="6" /> + <hkern u1="P" u2="ò" k="6" /> + <hkern u1="P" u2="ë" k="6" /> + <hkern u1="P" u2="ê" k="6" /> + <hkern u1="P" u2="é" k="6" /> + <hkern u1="P" u2="è" k="6" /> + <hkern u1="P" u2="ç" k="6" /> + <hkern u1="P" u2="æ" k="18" /> + <hkern u1="P" u2="å" k="18" /> + <hkern u1="P" u2="ä" k="18" /> + <hkern u1="P" u2="ã" k="18" /> + <hkern u1="P" u2="â" k="18" /> + <hkern u1="P" u2="á" k="18" /> + <hkern u1="P" u2="à" k="18" /> + <hkern u1="P" u2="Ý" k="8" /> + <hkern u1="P" u2="Æ" k="93" /> + <hkern u1="P" u2="Å" k="46" /> + <hkern u1="P" u2="Ä" k="46" /> + <hkern u1="P" u2="Ã" k="46" /> + <hkern u1="P" u2="Â" k="46" /> + <hkern u1="P" u2="Á" k="46" /> + <hkern u1="P" u2="À" k="46" /> + <hkern u1="P" u2="o" k="6" /> + <hkern u1="P" u2="e" k="6" /> + <hkern u1="P" u2="c" k="6" /> + <hkern u1="P" u2="a" k="18" /> + <hkern u1="P" u2="Y" k="8" /> + <hkern u1="P" u2="X" k="20" /> + <hkern u1="P" u2="J" k="72" /> + <hkern u1="P" u2="A" k="46" /> + <hkern u1="P" u2="." k="114" /> + <hkern u1="P" u2="," k="114" /> + <hkern u1="P" u2="'" k="-20" /> + <hkern u1="P" u2=""" k="-20" /> + <hkern u1="Q" u2="…" k="-23" /> + <hkern u1="Q" u2="Ỳ" k="24" /> + <hkern u1="Q" u2="Ẅ" k="11" /> + <hkern u1="Q" u2="Ẃ" k="11" /> + <hkern u1="Q" u2="Ẁ" k="11" /> + <hkern u1="Q" u2="Ÿ" k="24" /> + <hkern u1="Q" u2="Ŷ" k="24" /> + <hkern u1="Q" u2="Ŵ" k="11" /> + <hkern u1="Q" u2="Ý" k="24" /> + <hkern u1="Q" u2="Y" k="24" /> + <hkern u1="Q" u2="W" k="11" /> + <hkern u1="Q" u2="V" k="15" /> + <hkern u1="Q" u2=";" k="-23" /> + <hkern u1="Q" u2=":" k="-23" /> + <hkern u1="Q" u2="." k="-23" /> + <hkern u1="Q" u2="," k="-23" /> + <hkern u1="Q" u2="!" k="-14" /> + <hkern u1="R" u2="«" k="20" /> + <hkern u1="R" u2="V" k="12" /> + <hkern u1="S" u2="y" k="3" /> + <hkern u1="S" u2="x" k="6" /> + <hkern u1="S" u2="v" k="7" /> + <hkern u1="T" g2="z.sc" k="28" /> + <hkern u1="T" g2="x.sc" k="44" /> + <hkern u1="T" g2="v.sc" k="33" /> + <hkern u1="T" u2="ï" k="-19" /> + <hkern u1="T" u2="«" k="43" /> + <hkern u1="T" u2="y" k="27" /> + <hkern u1="T" u2="x" k="31" /> + <hkern u1="T" u2="v" k="35" /> + <hkern u1="T" u2="?" k="-20" /> + <hkern u1="T" u2=" " k="10" /> + <hkern u1="V" g2="Gcommaaccent.alt01" k="12" /> + <hkern u1="V" g2="Gdotaccent.alt01" k="12" /> + <hkern u1="V" g2="Gbreve.alt01" k="12" /> + <hkern u1="V" g2="Gcircumflex.alt01" k="12" /> + <hkern u1="V" g2="G.alt01" k="12" /> + <hkern u1="V" g2="Ccedilla.alt01" k="12" /> + <hkern u1="V" g2="Cdotaccent.alt01" k="12" /> + <hkern u1="V" g2="Ccaron.alt01" k="12" /> + <hkern u1="V" g2="Ccircumflex.alt01" k="12" /> + <hkern u1="V" g2="Cacute.alt01" k="12" /> + <hkern u1="V" g2="C.alt01" k="12" /> + <hkern u1="V" g2="aogonek.alt01" k="36" /> + <hkern u1="V" g2="aringacute.alt01" k="36" /> + <hkern u1="V" g2="aring.alt01" k="36" /> + <hkern u1="V" g2="abreve.alt01" k="36" /> + <hkern u1="V" g2="amacron.alt01" k="36" /> + <hkern u1="V" g2="adieresis.alt01" k="36" /> + <hkern u1="V" g2="atilde.alt01" k="36" /> + <hkern u1="V" g2="acircumflex.alt01" k="36" /> + <hkern u1="V" g2="aacute.alt01" k="36" /> + <hkern u1="V" g2="agrave.alt01" k="36" /> + <hkern u1="V" g2="a.alt01" k="36" /> + <hkern u1="V" g2="eng.sc" k="10" /> + <hkern u1="V" g2="germandbls.sc" k="10" /> + <hkern u1="V" g2="ij.sc" k="10" /> + <hkern u1="V" g2="uogonek.sc" k="11" /> + <hkern u1="V" g2="uhungarumlaut.sc" k="11" /> + <hkern u1="V" g2="uring.sc" k="11" /> + <hkern u1="V" g2="ubreve.sc" k="11" /> + <hkern u1="V" g2="umacron.sc" k="11" /> + <hkern u1="V" g2="udieresis.sc" k="11" /> + <hkern u1="V" g2="utilde.sc" k="11" /> + <hkern u1="V" g2="ucircumflex.sc" k="11" /> + <hkern u1="V" g2="uacute.sc" k="11" /> + <hkern u1="V" g2="ugrave.sc" k="11" /> + <hkern u1="V" g2="thorn.sc" k="10" /> + <hkern u1="V" g2="scommaaccent.sc" k="10" /> + <hkern u1="V" g2="scedilla.sc" k="10" /> + <hkern u1="V" g2="scaron.sc" k="10" /> + <hkern u1="V" g2="scircumflex.sc" k="10" /> + <hkern u1="V" g2="sacute.sc" k="10" /> + <hkern u1="V" g2="rcommaaccent.sc" k="10" /> + <hkern u1="V" g2="rcaron.sc" k="10" /> + <hkern u1="V" g2="racute.sc" k="10" /> + <hkern u1="V" g2="oslash.sc" k="14" /> + <hkern u1="V" g2="ohungarumlaut.sc" k="14" /> + <hkern u1="V" g2="obreve.sc" k="14" /> + <hkern u1="V" g2="omacron.sc" k="14" /> + <hkern u1="V" g2="odieresis.sc" k="14" /> + <hkern u1="V" g2="otilde.sc" k="14" /> + <hkern u1="V" g2="ocircumflex.sc" k="14" /> + <hkern u1="V" g2="oacute.sc" k="14" /> + <hkern u1="V" g2="ograve.sc" k="14" /> + <hkern u1="V" g2="ncommaaccent.sc" k="10" /> + <hkern u1="V" g2="ntilde.sc" k="10" /> + <hkern u1="V" g2="ncaron.sc" k="10" /> + <hkern u1="V" g2="nacute.sc" k="10" /> + <hkern u1="V" g2="ldot.sc" k="10" /> + <hkern u1="V" g2="lslash.sc" k="10" /> + <hkern u1="V" g2="lcommaaccent.sc" k="10" /> + <hkern u1="V" g2="lcaron.sc" k="10" /> + <hkern u1="V" g2="lacute.sc" k="10" /> + <hkern u1="V" g2="kcommaaccent.sc" k="10" /> + <hkern u1="V" g2="jcircumflex.sc" k="50" /> + <hkern u1="V" g2="iogonek.sc" k="10" /> + <hkern u1="V" g2="idotaccent.sc" k="10" /> + <hkern u1="V" g2="imacron.sc" k="10" /> + <hkern u1="V" g2="idieresis.sc" k="10" /> + <hkern u1="V" g2="itilde.sc" k="10" /> + <hkern u1="V" g2="icircumflex.sc" k="10" /> + <hkern u1="V" g2="ibreve.sc" k="10" /> + <hkern u1="V" g2="iacute.sc" k="10" /> + <hkern u1="V" g2="igrave.sc" k="10" /> + <hkern u1="V" g2="hbar.sc" k="10" /> + <hkern u1="V" g2="hcircumflex.sc" k="10" /> + <hkern u1="V" g2="gcommaaccent.sc" k="14" /> + <hkern u1="V" g2="gdotaccent.sc" k="14" /> + <hkern u1="V" g2="gbreve.sc" k="14" /> + <hkern u1="V" g2="gcircumflex.sc" k="14" /> + <hkern u1="V" g2="eogonek.sc" k="10" /> + <hkern u1="V" g2="edotaccent.sc" k="10" /> + <hkern u1="V" g2="ebreve.sc" k="10" /> + <hkern u1="V" g2="emacron.sc" k="10" /> + <hkern u1="V" g2="edieresis.sc" k="10" /> + <hkern u1="V" g2="ecaron.sc" k="10" /> + <hkern u1="V" g2="ecircumflex.sc" k="10" /> + <hkern u1="V" g2="eacute.sc" k="10" /> + <hkern u1="V" g2="egrave.sc" k="10" /> + <hkern u1="V" g2="eth.sc" k="10" /> + <hkern u1="V" g2="dcroat.sc" k="10" /> + <hkern u1="V" g2="dcaron.sc" k="10" /> + <hkern u1="V" g2="ccedilla.sc" k="14" /> + <hkern u1="V" g2="cdotaccent.sc" k="14" /> + <hkern u1="V" g2="ccaron.sc" k="14" /> + <hkern u1="V" g2="ccircumflex.sc" k="14" /> + <hkern u1="V" g2="cacute.sc" k="14" /> + <hkern u1="V" g2="aeacute.sc" k="66" /> + <hkern u1="V" g2="ae.sc" k="66" /> + <hkern u1="V" g2="aogonek.sc" k="40" /> + <hkern u1="V" g2="aringacute.sc" k="40" /> + <hkern u1="V" g2="aring.sc" k="40" /> + <hkern u1="V" g2="abreve.sc" k="40" /> + <hkern u1="V" g2="amacron.sc" k="40" /> + <hkern u1="V" g2="adieresis.sc" k="40" /> + <hkern u1="V" g2="atilde.sc" k="40" /> + <hkern u1="V" g2="acircumflex.sc" k="40" /> + <hkern u1="V" g2="aacute.sc" k="40" /> + <hkern u1="V" g2="agrave.sc" k="40" /> + <hkern u1="V" g2="z.sc" k="4" /> + <hkern u1="V" g2="x.sc" k="10" /> + <hkern u1="V" g2="u.sc" k="11" /> + <hkern u1="V" g2="s.sc" k="10" /> + <hkern u1="V" g2="r.sc" k="10" /> + <hkern u1="V" g2="q.sc" k="14" /> + <hkern u1="V" g2="p.sc" k="10" /> + <hkern u1="V" g2="o.sc" k="14" /> + <hkern u1="V" g2="n.sc" k="10" /> + <hkern u1="V" g2="m.sc" k="10" /> + <hkern u1="V" g2="l.sc" k="10" /> + <hkern u1="V" g2="k.sc" k="10" /> + <hkern u1="V" g2="j.sc" k="50" /> + <hkern u1="V" g2="i.sc" k="10" /> + <hkern u1="V" g2="h.sc" k="10" /> + <hkern u1="V" g2="g.sc" k="14" /> + <hkern u1="V" g2="f.sc" k="10" /> + <hkern u1="V" g2="e.sc" k="10" /> + <hkern u1="V" g2="d.sc" k="10" /> + <hkern u1="V" g2="c.sc" k="14" /> + <hkern u1="V" g2="b.sc" k="10" /> + <hkern u1="V" g2="a.sc" k="40" /> + <hkern u1="V" g2="f_f_l" k="4" /> + <hkern u1="V" g2="f_f_i" k="4" /> + <hkern u1="V" g2="fl" k="4" /> + <hkern u1="V" g2="fi" k="4" /> + <hkern u1="V" g2="f_f" k="4" /> + <hkern u1="V" u2="∙" k="27" /> + <hkern u1="V" u2="›" k="23" /> + <hkern u1="V" u2="…" k="83" /> + <hkern u1="V" u2="•" k="27" /> + <hkern u1="V" u2="—" k="36" /> + <hkern u1="V" u2="–" k="36" /> + <hkern u1="V" u2="ẅ" k="8" /> + <hkern u1="V" u2="ẃ" k="8" /> + <hkern u1="V" u2="ẁ" k="8" /> + <hkern u1="V" u2="ț" k="4" /> + <hkern u1="V" u2="ș" k="35" /> + <hkern u1="V" u2="Ș" k="9" /> + <hkern u1="V" u2="ǿ" k="37" /> + <hkern u1="V" u2="Ǿ" k="12" /> + <hkern u1="V" u2="ǽ" k="25" /> + <hkern u1="V" u2="Ǽ" k="80" /> + <hkern u1="V" u2="ǻ" k="25" /> + <hkern u1="V" u2="Ǻ" k="36" /> + <hkern u1="V" u2="ž" k="18" /> + <hkern u1="V" u2="ż" k="18" /> + <hkern u1="V" u2="ź" k="18" /> + <hkern u1="V" u2="ŵ" k="8" /> + <hkern u1="V" u2="ų" k="23" /> + <hkern u1="V" u2="ű" k="23" /> + <hkern u1="V" u2="ů" k="23" /> + <hkern u1="V" u2="ŭ" k="23" /> + <hkern u1="V" u2="ū" k="23" /> + <hkern u1="V" u2="ũ" k="23" /> + <hkern u1="V" u2="ŧ" k="4" /> + <hkern u1="V" u2="ť" k="4" /> + <hkern u1="V" u2="ţ" k="4" /> + <hkern u1="V" u2="š" k="35" /> + <hkern u1="V" u2="Š" k="9" /> + <hkern u1="V" u2="ş" k="35" /> + <hkern u1="V" u2="Ş" k="9" /> + <hkern u1="V" u2="ŝ" k="35" /> + <hkern u1="V" u2="Ŝ" k="9" /> + <hkern u1="V" u2="ś" k="35" /> + <hkern u1="V" u2="Ś" k="9" /> + <hkern u1="V" u2="ř" k="24" /> + <hkern u1="V" u2="ŗ" k="24" /> + <hkern u1="V" u2="ŕ" k="24" /> + <hkern u1="V" u2="œ" k="37" /> + <hkern u1="V" u2="Œ" k="12" /> + <hkern u1="V" u2="ő" k="37" /> + <hkern u1="V" u2="Ő" k="12" /> + <hkern u1="V" u2="ŏ" k="37" /> + <hkern u1="V" u2="Ŏ" k="12" /> + <hkern u1="V" u2="ō" k="37" /> + <hkern u1="V" u2="Ō" k="12" /> + <hkern u1="V" u2="ŋ" k="24" /> + <hkern u1="V" u2="ň" k="24" /> + <hkern u1="V" u2="ņ" k="24" /> + <hkern u1="V" u2="ń" k="24" /> + <hkern u1="V" u2="Ĵ" k="56" /> + <hkern u1="V" u2="ı" k="24" /> + <hkern u1="V" u2="ģ" k="36" /> + <hkern u1="V" u2="Ģ" k="12" /> + <hkern u1="V" u2="ġ" k="36" /> + <hkern u1="V" u2="Ġ" k="12" /> + <hkern u1="V" u2="ğ" k="36" /> + <hkern u1="V" u2="Ğ" k="12" /> + <hkern u1="V" u2="ĝ" k="36" /> + <hkern u1="V" u2="Ĝ" k="12" /> + <hkern u1="V" u2="ě" k="37" /> + <hkern u1="V" u2="ę" k="37" /> + <hkern u1="V" u2="ė" k="37" /> + <hkern u1="V" u2="ĕ" k="37" /> + <hkern u1="V" u2="ē" k="37" /> + <hkern u1="V" u2="đ" k="36" /> + <hkern u1="V" u2="ď" k="36" /> + <hkern u1="V" u2="č" k="37" /> + <hkern u1="V" u2="Č" k="12" /> + <hkern u1="V" u2="ċ" k="37" /> + <hkern u1="V" u2="Ċ" k="12" /> + <hkern u1="V" u2="ĉ" k="37" /> + <hkern u1="V" u2="Ĉ" k="12" /> + <hkern u1="V" u2="ć" k="37" /> + <hkern u1="V" u2="Ć" k="12" /> + <hkern u1="V" u2="ą" k="25" /> + <hkern u1="V" u2="Ą" k="36" /> + <hkern u1="V" u2="ă" k="25" /> + <hkern u1="V" u2="Ă" k="36" /> + <hkern u1="V" u2="ā" k="25" /> + <hkern u1="V" u2="Ā" k="36" /> + <hkern u1="V" u2="ü" k="23" /> + <hkern u1="V" u2="û" k="23" /> + <hkern u1="V" u2="ú" k="23" /> + <hkern u1="V" u2="ù" k="23" /> + <hkern u1="V" u2="ø" k="37" /> + <hkern u1="V" u2="ö" k="37" /> + <hkern u1="V" u2="õ" k="37" /> + <hkern u1="V" u2="ô" k="37" /> + <hkern u1="V" u2="ó" k="37" /> + <hkern u1="V" u2="ò" k="37" /> + <hkern u1="V" u2="ñ" k="24" /> + <hkern u1="V" u2="ð" k="36" /> + <hkern u1="V" u2="ì" k="-10" /> + <hkern u1="V" u2="ë" k="37" /> + <hkern u1="V" u2="ê" k="37" /> + <hkern u1="V" u2="é" k="37" /> + <hkern u1="V" u2="è" k="37" /> + <hkern u1="V" u2="ç" k="37" /> + <hkern u1="V" u2="æ" k="25" /> + <hkern u1="V" u2="å" k="25" /> + <hkern u1="V" u2="ä" k="25" /> + <hkern u1="V" u2="ã" k="25" /> + <hkern u1="V" u2="â" k="25" /> + <hkern u1="V" u2="á" k="25" /> + <hkern u1="V" u2="à" k="25" /> + <hkern u1="V" u2="Ø" k="12" /> + <hkern u1="V" u2="Ö" k="12" /> + <hkern u1="V" u2="Õ" k="12" /> + <hkern u1="V" u2="Ô" k="12" /> + <hkern u1="V" u2="Ó" k="12" /> + <hkern u1="V" u2="Ò" k="12" /> + <hkern u1="V" u2="Ç" k="12" /> + <hkern u1="V" u2="Æ" k="80" /> + <hkern u1="V" u2="Å" k="36" /> + <hkern u1="V" u2="Ä" k="36" /> + <hkern u1="V" u2="Ã" k="36" /> + <hkern u1="V" u2="Â" k="36" /> + <hkern u1="V" u2="Á" k="36" /> + <hkern u1="V" u2="À" k="36" /> + <hkern u1="V" u2="»" k="23" /> + <hkern u1="V" u2="·" k="27" /> + <hkern u1="V" u2="®" k="11" /> + <hkern u1="V" u2="­" k="36" /> + <hkern u1="V" u2="«" k="43" /> + <hkern u1="V" u2="z" k="18" /> + <hkern u1="V" u2="y" k="8" /> + <hkern u1="V" u2="x" k="15" /> + <hkern u1="V" u2="w" k="8" /> + <hkern u1="V" u2="v" k="8" /> + <hkern u1="V" u2="u" k="23" /> + <hkern u1="V" u2="t" k="4" /> + <hkern u1="V" u2="s" k="35" /> + <hkern u1="V" u2="r" k="24" /> + <hkern u1="V" u2="q" k="36" /> + <hkern u1="V" u2="p" k="24" /> + <hkern u1="V" u2="o" k="37" /> + <hkern u1="V" u2="n" k="24" /> + <hkern u1="V" u2="m" k="24" /> + <hkern u1="V" u2="g" k="36" /> + <hkern u1="V" u2="f" k="4" /> + <hkern u1="V" u2="e" k="37" /> + <hkern u1="V" u2="d" k="36" /> + <hkern u1="V" u2="c" k="37" /> + <hkern u1="V" u2="a" k="25" /> + <hkern u1="V" u2="S" k="9" /> + <hkern u1="V" u2="Q" k="12" /> + <hkern u1="V" u2="O" k="12" /> + <hkern u1="V" u2="J" k="56" /> + <hkern u1="V" u2="G" k="12" /> + <hkern u1="V" u2="C" k="12" /> + <hkern u1="V" u2="A" k="36" /> + <hkern u1="V" u2=";" k="19" /> + <hkern u1="V" u2=":" k="19" /> + <hkern u1="V" u2="." k="83" /> + <hkern u1="V" u2="-" k="36" /> + <hkern u1="V" u2="," k="83" /> + <hkern u1="V" u2=" " k="25" /> + <hkern u1="W" g2="z.sc" k="7" /> + <hkern u1="W" g2="x.sc" k="7" /> + <hkern u1="W" u2="®" k="4" /> + <hkern u1="W" u2="«" k="40" /> + <hkern u1="W" u2="y" k="4" /> + <hkern u1="W" u2="x" k="16" /> + <hkern u1="W" u2="v" k="3" /> + <hkern u1="W" u2=" " k="18" /> + <hkern u1="X" g2="Gcommaaccent.alt01" k="17" /> + <hkern u1="X" g2="Gdotaccent.alt01" k="17" /> + <hkern u1="X" g2="Gbreve.alt01" k="17" /> + <hkern u1="X" g2="Gcircumflex.alt01" k="17" /> + <hkern u1="X" g2="G.alt01" k="17" /> + <hkern u1="X" g2="Ccedilla.alt01" k="17" /> + <hkern u1="X" g2="Cdotaccent.alt01" k="17" /> + <hkern u1="X" g2="Ccaron.alt01" k="17" /> + <hkern u1="X" g2="Ccircumflex.alt01" k="17" /> + <hkern u1="X" g2="Cacute.alt01" k="17" /> + <hkern u1="X" g2="C.alt01" k="17" /> + <hkern u1="X" g2="aogonek.alt01" k="10" /> + <hkern u1="X" g2="aringacute.alt01" k="10" /> + <hkern u1="X" g2="aring.alt01" k="10" /> + <hkern u1="X" g2="abreve.alt01" k="10" /> + <hkern u1="X" g2="amacron.alt01" k="10" /> + <hkern u1="X" g2="adieresis.alt01" k="10" /> + <hkern u1="X" g2="atilde.alt01" k="10" /> + <hkern u1="X" g2="acircumflex.alt01" k="10" /> + <hkern u1="X" g2="aacute.alt01" k="10" /> + <hkern u1="X" g2="agrave.alt01" k="10" /> + <hkern u1="X" g2="a.alt01" k="10" /> + <hkern u1="X" g2="ygrave.sc" k="14" /> + <hkern u1="X" g2="ydieresis.sc" k="14" /> + <hkern u1="X" g2="ycircumflex.sc" k="14" /> + <hkern u1="X" g2="yacute.sc" k="14" /> + <hkern u1="X" g2="wgrave.sc" k="12" /> + <hkern u1="X" g2="wdieresis.sc" k="12" /> + <hkern u1="X" g2="wcircumflex.sc" k="12" /> + <hkern u1="X" g2="wacute.sc" k="12" /> + <hkern u1="X" g2="tbar.sc" k="7" /> + <hkern u1="X" g2="tcommaaccent.sc" k="7" /> + <hkern u1="X" g2="tcaron.sc" k="7" /> + <hkern u1="X" g2="oslash.sc" k="4" /> + <hkern u1="X" g2="ohungarumlaut.sc" k="4" /> + <hkern u1="X" g2="obreve.sc" k="4" /> + <hkern u1="X" g2="omacron.sc" k="4" /> + <hkern u1="X" g2="odieresis.sc" k="4" /> + <hkern u1="X" g2="otilde.sc" k="4" /> + <hkern u1="X" g2="ocircumflex.sc" k="4" /> + <hkern u1="X" g2="oacute.sc" k="4" /> + <hkern u1="X" g2="ograve.sc" k="4" /> + <hkern u1="X" g2="gcommaaccent.sc" k="4" /> + <hkern u1="X" g2="gdotaccent.sc" k="4" /> + <hkern u1="X" g2="gbreve.sc" k="4" /> + <hkern u1="X" g2="gcircumflex.sc" k="4" /> + <hkern u1="X" g2="ccedilla.sc" k="4" /> + <hkern u1="X" g2="cdotaccent.sc" k="4" /> + <hkern u1="X" g2="ccaron.sc" k="4" /> + <hkern u1="X" g2="ccircumflex.sc" k="4" /> + <hkern u1="X" g2="cacute.sc" k="4" /> + <hkern u1="X" g2="y.sc" k="14" /> + <hkern u1="X" g2="w.sc" k="12" /> + <hkern u1="X" g2="v.sc" k="16" /> + <hkern u1="X" g2="t.sc" k="7" /> + <hkern u1="X" g2="q.sc" k="4" /> + <hkern u1="X" g2="o.sc" k="4" /> + <hkern u1="X" g2="g.sc" k="4" /> + <hkern u1="X" g2="c.sc" k="4" /> + <hkern u1="X" u2="∙" k="37" /> + <hkern u1="X" u2="›" k="10" /> + <hkern u1="X" u2="•" k="37" /> + <hkern u1="X" u2="—" k="46" /> + <hkern u1="X" u2="–" k="46" /> + <hkern u1="X" u2="ẅ" k="27" /> + <hkern u1="X" u2="ẃ" k="27" /> + <hkern u1="X" u2="ẁ" k="27" /> + <hkern u1="X" u2="ŵ" k="27" /> + <hkern u1="X" u2="œ" k="14" /> + <hkern u1="X" u2="Œ" k="17" /> + <hkern u1="X" u2="ő" k="14" /> + <hkern u1="X" u2="Ő" k="17" /> + <hkern u1="X" u2="ŏ" k="14" /> + <hkern u1="X" u2="Ŏ" k="17" /> + <hkern u1="X" u2="ō" k="14" /> + <hkern u1="X" u2="Ō" k="17" /> + <hkern u1="X" u2="Ģ" k="17" /> + <hkern u1="X" u2="Ġ" k="17" /> + <hkern u1="X" u2="Ğ" k="17" /> + <hkern u1="X" u2="Ĝ" k="17" /> + <hkern u1="X" u2="ě" k="14" /> + <hkern u1="X" u2="ę" k="14" /> + <hkern u1="X" u2="ė" k="14" /> + <hkern u1="X" u2="ĕ" k="14" /> + <hkern u1="X" u2="ē" k="14" /> + <hkern u1="X" u2="đ" k="10" /> + <hkern u1="X" u2="ď" k="10" /> + <hkern u1="X" u2="č" k="14" /> + <hkern u1="X" u2="Č" k="17" /> + <hkern u1="X" u2="ċ" k="14" /> + <hkern u1="X" u2="Ċ" k="17" /> + <hkern u1="X" u2="ĉ" k="14" /> + <hkern u1="X" u2="Ĉ" k="17" /> + <hkern u1="X" u2="ć" k="14" /> + <hkern u1="X" u2="Ć" k="17" /> + <hkern u1="X" u2="ö" k="14" /> + <hkern u1="X" u2="õ" k="14" /> + <hkern u1="X" u2="ô" k="14" /> + <hkern u1="X" u2="ó" k="14" /> + <hkern u1="X" u2="ò" k="14" /> + <hkern u1="X" u2="ð" k="10" /> + <hkern u1="X" u2="ë" k="14" /> + <hkern u1="X" u2="ê" k="14" /> + <hkern u1="X" u2="é" k="14" /> + <hkern u1="X" u2="è" k="14" /> + <hkern u1="X" u2="ç" k="14" /> + <hkern u1="X" u2="Ö" k="17" /> + <hkern u1="X" u2="Õ" k="17" /> + <hkern u1="X" u2="Ô" k="17" /> + <hkern u1="X" u2="Ó" k="17" /> + <hkern u1="X" u2="Ò" k="17" /> + <hkern u1="X" u2="Ç" k="17" /> + <hkern u1="X" u2="»" k="10" /> + <hkern u1="X" u2="·" k="37" /> + <hkern u1="X" u2="®" k="20" /> + <hkern u1="X" u2="­" k="46" /> + <hkern u1="X" u2="«" k="46" /> + <hkern u1="X" u2="y" k="26" /> + <hkern u1="X" u2="w" k="27" /> + <hkern u1="X" u2="v" k="30" /> + <hkern u1="X" u2="q" k="10" /> + <hkern u1="X" u2="o" k="14" /> + <hkern u1="X" u2="e" k="14" /> + <hkern u1="X" u2="d" k="10" /> + <hkern u1="X" u2="c" k="14" /> + <hkern u1="X" u2="Q" k="17" /> + <hkern u1="X" u2="O" k="17" /> + <hkern u1="X" u2="G" k="17" /> + <hkern u1="X" u2="C" k="17" /> + <hkern u1="X" u2="-" k="46" /> + <hkern u1="X" u2=" " k="3" /> + <hkern u1="Y" g2="z.sc" k="10" /> + <hkern u1="Y" g2="x.sc" k="18" /> + <hkern u1="Y" g2="v.sc" k="9" /> + <hkern u1="Y" u2="®" k="14" /> + <hkern u1="Y" u2="«" k="60" /> + <hkern u1="Y" u2="y" k="20" /> + <hkern u1="Y" u2="x" k="36" /> + <hkern u1="Y" u2="v" k="21" /> + <hkern u1="Y" u2=" " k="15" /> + <hkern u1="Z" u2="y" k="18" /> + <hkern u1="Z" u2="v" k="6" /> + <hkern u1="a" u2="y" k="4" /> + <hkern u1="a" u2="v" k="4" /> + <hkern u1="b" u2="y" k="4" /> + <hkern u1="b" u2="x" k="9" /> + <hkern u1="b" u2="v" k="4" /> + <hkern u1="c" u2="y" k="3" /> + <hkern u1="c" u2="x" k="3" /> + <hkern u1="c" u2="v" k="3" /> + <hkern u1="d" g2="napostrophe" k="-32" /> + <hkern u1="d" u2="ï" k="-13" /> + <hkern u1="e" u2="y" k="6" /> + <hkern u1="e" u2="x" k="4" /> + <hkern u1="e" u2="v" k="4" /> + <hkern u1="f" u2="…" k="39" /> + <hkern u1="f" u2="”" k="-24" /> + <hkern u1="f" u2="“" k="-24" /> + <hkern u1="f" u2="’" k="-24" /> + <hkern u1="f" u2="‘" k="-24" /> + <hkern u1="f" u2="—" k="4" /> + <hkern u1="f" u2="–" k="4" /> + <hkern u1="f" u2="ǿ" k="6" /> + <hkern u1="f" u2="ǽ" k="6" /> + <hkern u1="f" u2="ǻ" k="6" /> + <hkern u1="f" u2="œ" k="6" /> + <hkern u1="f" u2="ő" k="6" /> + <hkern u1="f" u2="ŏ" k="6" /> + <hkern u1="f" u2="ō" k="6" /> + <hkern u1="f" u2="ě" k="6" /> + <hkern u1="f" u2="ę" k="6" /> + <hkern u1="f" u2="ė" k="6" /> + <hkern u1="f" u2="ĕ" k="6" /> + <hkern u1="f" u2="ē" k="6" /> + <hkern u1="f" u2="č" k="6" /> + <hkern u1="f" u2="ċ" k="6" /> + <hkern u1="f" u2="ĉ" k="6" /> + <hkern u1="f" u2="ć" k="6" /> + <hkern u1="f" u2="ą" k="6" /> + <hkern u1="f" u2="ă" k="6" /> + <hkern u1="f" u2="ā" k="6" /> + <hkern u1="f" u2="ø" k="6" /> + <hkern u1="f" u2="ö" k="6" /> + <hkern u1="f" u2="õ" k="6" /> + <hkern u1="f" u2="ô" k="6" /> + <hkern u1="f" u2="ó" k="6" /> + <hkern u1="f" u2="ò" k="6" /> + <hkern u1="f" u2="ë" k="6" /> + <hkern u1="f" u2="ê" k="6" /> + <hkern u1="f" u2="é" k="6" /> + <hkern u1="f" u2="è" k="6" /> + <hkern u1="f" u2="ç" k="6" /> + <hkern u1="f" u2="æ" k="6" /> + <hkern u1="f" u2="å" k="6" /> + <hkern u1="f" u2="ä" k="6" /> + <hkern u1="f" u2="ã" k="6" /> + <hkern u1="f" u2="â" k="6" /> + <hkern u1="f" u2="á" k="6" /> + <hkern u1="f" u2="à" k="6" /> + <hkern u1="f" u2="­" k="4" /> + <hkern u1="f" u2="o" k="6" /> + <hkern u1="f" u2="e" k="6" /> + <hkern u1="f" u2="c" k="6" /> + <hkern u1="f" u2="a" k="6" /> + <hkern u1="f" u2="?" k="-24" /> + <hkern u1="f" u2="." k="39" /> + <hkern u1="f" u2="-" k="4" /> + <hkern u1="f" u2="," k="39" /> + <hkern u1="f" u2="'" k="-24" /> + <hkern u1="f" u2=""" k="-24" /> + <hkern u1="h" u2="y" k="7" /> + <hkern u1="h" u2="v" k="8" /> + <hkern u1="k" u2="y" k="18" /> + <hkern u1="l" u2="®" k="23" /> + <hkern u1="l" u2="«" k="10" /> + <hkern u1="l" u2="y" k="15" /> + <hkern u1="l" u2="v" k="19" /> + <hkern u1="m" u2="y" k="7" /> + <hkern u1="m" u2="v" k="8" /> + <hkern u1="n" u2="y" k="7" /> + <hkern u1="n" u2="v" k="8" /> + <hkern u1="o" u2="y" k="6" /> + <hkern u1="o" u2="x" k="10" /> + <hkern u1="o" u2="v" k="5" /> + <hkern u1="p" u2="y" k="4" /> + <hkern u1="p" u2="x" k="9" /> + <hkern u1="p" u2="v" k="4" /> + <hkern u1="r" u2="?" k="-20" /> + <hkern u1="s" u2="v" k="3" /> + <hkern u1="v" g2="aogonek.alt01" k="4" /> + <hkern u1="v" g2="aringacute.alt01" k="4" /> + <hkern u1="v" g2="aring.alt01" k="4" /> + <hkern u1="v" g2="abreve.alt01" k="4" /> + <hkern u1="v" g2="amacron.alt01" k="4" /> + <hkern u1="v" g2="adieresis.alt01" k="4" /> + <hkern u1="v" g2="atilde.alt01" k="4" /> + <hkern u1="v" g2="acircumflex.alt01" k="4" /> + <hkern u1="v" g2="aacute.alt01" k="4" /> + <hkern u1="v" g2="agrave.alt01" k="4" /> + <hkern u1="v" g2="a.alt01" k="4" /> + <hkern u1="v" u2="…" k="40" /> + <hkern u1="v" u2="”" k="-3" /> + <hkern u1="v" u2="“" k="-3" /> + <hkern u1="v" u2="’" k="-3" /> + <hkern u1="v" u2="‘" k="-3" /> + <hkern u1="v" u2="—" k="16" /> + <hkern u1="v" u2="–" k="16" /> + <hkern u1="v" u2="ș" k="5" /> + <hkern u1="v" u2="ǿ" k="6" /> + <hkern u1="v" u2="š" k="5" /> + <hkern u1="v" u2="ş" k="5" /> + <hkern u1="v" u2="ŝ" k="5" /> + <hkern u1="v" u2="ś" k="5" /> + <hkern u1="v" u2="œ" k="6" /> + <hkern u1="v" u2="ő" k="6" /> + <hkern u1="v" u2="ŏ" k="6" /> + <hkern u1="v" u2="ō" k="6" /> + <hkern u1="v" u2="ģ" k="4" /> + <hkern u1="v" u2="ġ" k="4" /> + <hkern u1="v" u2="ğ" k="4" /> + <hkern u1="v" u2="ĝ" k="4" /> + <hkern u1="v" u2="ě" k="6" /> + <hkern u1="v" u2="ę" k="6" /> + <hkern u1="v" u2="ė" k="6" /> + <hkern u1="v" u2="ĕ" k="6" /> + <hkern u1="v" u2="ē" k="6" /> + <hkern u1="v" u2="đ" k="4" /> + <hkern u1="v" u2="ď" k="4" /> + <hkern u1="v" u2="č" k="6" /> + <hkern u1="v" u2="ċ" k="6" /> + <hkern u1="v" u2="ĉ" k="6" /> + <hkern u1="v" u2="ć" k="6" /> + <hkern u1="v" u2="ø" k="6" /> + <hkern u1="v" u2="ö" k="6" /> + <hkern u1="v" u2="õ" k="6" /> + <hkern u1="v" u2="ô" k="6" /> + <hkern u1="v" u2="ó" k="6" /> + <hkern u1="v" u2="ò" k="6" /> + <hkern u1="v" u2="ð" k="4" /> + <hkern u1="v" u2="ë" k="6" /> + <hkern u1="v" u2="ê" k="6" /> + <hkern u1="v" u2="é" k="6" /> + <hkern u1="v" u2="è" k="6" /> + <hkern u1="v" u2="ç" k="6" /> + <hkern u1="v" u2="­" k="16" /> + <hkern u1="v" u2="«" k="7" /> + <hkern u1="v" u2="s" k="5" /> + <hkern u1="v" u2="q" k="4" /> + <hkern u1="v" u2="o" k="6" /> + <hkern u1="v" u2="g" k="4" /> + <hkern u1="v" u2="e" k="6" /> + <hkern u1="v" u2="d" k="4" /> + <hkern u1="v" u2="c" k="6" /> + <hkern u1="v" u2="." k="40" /> + <hkern u1="v" u2="-" k="16" /> + <hkern u1="v" u2="," k="40" /> + <hkern u1="v" u2="'" k="-3" /> + <hkern u1="v" u2=""" k="-3" /> + <hkern u1="w" u2="«" k="7" /> + <hkern u1="x" g2="aogonek.alt01" k="9" /> + <hkern u1="x" g2="aringacute.alt01" k="9" /> + <hkern u1="x" g2="aring.alt01" k="9" /> + <hkern u1="x" g2="abreve.alt01" k="9" /> + <hkern u1="x" g2="amacron.alt01" k="9" /> + <hkern u1="x" g2="adieresis.alt01" k="9" /> + <hkern u1="x" g2="atilde.alt01" k="9" /> + <hkern u1="x" g2="acircumflex.alt01" k="9" /> + <hkern u1="x" g2="aacute.alt01" k="9" /> + <hkern u1="x" g2="agrave.alt01" k="9" /> + <hkern u1="x" g2="a.alt01" k="9" /> + <hkern u1="x" u2="—" k="40" /> + <hkern u1="x" u2="–" k="40" /> + <hkern u1="x" u2="ǿ" k="7" /> + <hkern u1="x" u2="œ" k="10" /> + <hkern u1="x" u2="ő" k="10" /> + <hkern u1="x" u2="ŏ" k="10" /> + <hkern u1="x" u2="ō" k="10" /> + <hkern u1="x" u2="ģ" k="9" /> + <hkern u1="x" u2="ġ" k="9" /> + <hkern u1="x" u2="ğ" k="9" /> + <hkern u1="x" u2="ĝ" k="9" /> + <hkern u1="x" u2="ě" k="10" /> + <hkern u1="x" u2="ę" k="10" /> + <hkern u1="x" u2="ė" k="10" /> + <hkern u1="x" u2="ĕ" k="10" /> + <hkern u1="x" u2="ē" k="10" /> + <hkern u1="x" u2="đ" k="9" /> + <hkern u1="x" u2="ď" k="9" /> + <hkern u1="x" u2="č" k="10" /> + <hkern u1="x" u2="ċ" k="10" /> + <hkern u1="x" u2="ĉ" k="10" /> + <hkern u1="x" u2="ć" k="10" /> + <hkern u1="x" u2="ø" k="7" /> + <hkern u1="x" u2="ö" k="10" /> + <hkern u1="x" u2="õ" k="10" /> + <hkern u1="x" u2="ô" k="10" /> + <hkern u1="x" u2="ó" k="10" /> + <hkern u1="x" u2="ò" k="10" /> + <hkern u1="x" u2="ð" k="9" /> + <hkern u1="x" u2="ë" k="10" /> + <hkern u1="x" u2="ê" k="10" /> + <hkern u1="x" u2="é" k="10" /> + <hkern u1="x" u2="è" k="10" /> + <hkern u1="x" u2="ç" k="10" /> + <hkern u1="x" u2="­" k="40" /> + <hkern u1="x" u2="«" k="16" /> + <hkern u1="x" u2="q" k="9" /> + <hkern u1="x" u2="o" k="10" /> + <hkern u1="x" u2="g" k="9" /> + <hkern u1="x" u2="e" k="10" /> + <hkern u1="x" u2="d" k="9" /> + <hkern u1="x" u2="c" k="10" /> + <hkern u1="x" u2="-" k="40" /> + <hkern u1="y" g2="aogonek.alt01" k="8" /> + <hkern u1="y" g2="aringacute.alt01" k="8" /> + <hkern u1="y" g2="aring.alt01" k="8" /> + <hkern u1="y" g2="abreve.alt01" k="8" /> + <hkern u1="y" g2="amacron.alt01" k="8" /> + <hkern u1="y" g2="adieresis.alt01" k="8" /> + <hkern u1="y" g2="atilde.alt01" k="8" /> + <hkern u1="y" g2="acircumflex.alt01" k="8" /> + <hkern u1="y" g2="aacute.alt01" k="8" /> + <hkern u1="y" g2="agrave.alt01" k="8" /> + <hkern u1="y" g2="a.alt01" k="8" /> + <hkern u1="y" u2="…" k="40" /> + <hkern u1="y" u2="“" k="-3" /> + <hkern u1="y" u2="‘" k="-3" /> + <hkern u1="y" u2="—" k="17" /> + <hkern u1="y" u2="–" k="17" /> + <hkern u1="y" u2="ș" k="4" /> + <hkern u1="y" u2="ǿ" k="12" /> + <hkern u1="y" u2="ǽ" k="6" /> + <hkern u1="y" u2="ǻ" k="6" /> + <hkern u1="y" u2="š" k="4" /> + <hkern u1="y" u2="ş" k="4" /> + <hkern u1="y" u2="ŝ" k="4" /> + <hkern u1="y" u2="ś" k="4" /> + <hkern u1="y" u2="œ" k="12" /> + <hkern u1="y" u2="ő" k="12" /> + <hkern u1="y" u2="ŏ" k="12" /> + <hkern u1="y" u2="ō" k="12" /> + <hkern u1="y" u2="ģ" k="9" /> + <hkern u1="y" u2="ġ" k="9" /> + <hkern u1="y" u2="ğ" k="9" /> + <hkern u1="y" u2="ĝ" k="9" /> + <hkern u1="y" u2="ě" k="12" /> + <hkern u1="y" u2="ę" k="12" /> + <hkern u1="y" u2="ė" k="12" /> + <hkern u1="y" u2="ĕ" k="12" /> + <hkern u1="y" u2="ē" k="12" /> + <hkern u1="y" u2="đ" k="8" /> + <hkern u1="y" u2="ď" k="8" /> + <hkern u1="y" u2="č" k="12" /> + <hkern u1="y" u2="ċ" k="12" /> + <hkern u1="y" u2="ĉ" k="12" /> + <hkern u1="y" u2="ć" k="12" /> + <hkern u1="y" u2="ą" k="6" /> + <hkern u1="y" u2="ă" k="6" /> + <hkern u1="y" u2="ā" k="6" /> + <hkern u1="y" u2="ø" k="12" /> + <hkern u1="y" u2="ö" k="12" /> + <hkern u1="y" u2="õ" k="12" /> + <hkern u1="y" u2="ô" k="12" /> + <hkern u1="y" u2="ó" k="12" /> + <hkern u1="y" u2="ò" k="12" /> + <hkern u1="y" u2="ð" k="8" /> + <hkern u1="y" u2="ë" k="12" /> + <hkern u1="y" u2="ê" k="12" /> + <hkern u1="y" u2="é" k="12" /> + <hkern u1="y" u2="è" k="12" /> + <hkern u1="y" u2="ç" k="12" /> + <hkern u1="y" u2="æ" k="6" /> + <hkern u1="y" u2="å" k="6" /> + <hkern u1="y" u2="ä" k="6" /> + <hkern u1="y" u2="ã" k="6" /> + <hkern u1="y" u2="â" k="6" /> + <hkern u1="y" u2="á" k="6" /> + <hkern u1="y" u2="à" k="6" /> + <hkern u1="y" u2="­" k="17" /> + <hkern u1="y" u2="«" k="8" /> + <hkern u1="y" u2="s" k="4" /> + <hkern u1="y" u2="q" k="8" /> + <hkern u1="y" u2="o" k="12" /> + <hkern u1="y" u2="g" k="9" /> + <hkern u1="y" u2="e" k="12" /> + <hkern u1="y" u2="d" k="8" /> + <hkern u1="y" u2="c" k="12" /> + <hkern u1="y" u2="a" k="6" /> + <hkern u1="y" u2="." k="40" /> + <hkern u1="y" u2="-" k="17" /> + <hkern u1="y" u2="," k="40" /> + <hkern u1="y" u2="'" k="-3" /> + <hkern u1="y" u2=""" k="-3" /> + <hkern u1="¡" u2="Ỳ" k="30" /> + <hkern u1="¡" u2="Ẅ" k="14" /> + <hkern u1="¡" u2="Ẃ" k="14" /> + <hkern u1="¡" u2="Ẁ" k="14" /> + <hkern u1="¡" u2="ȷ" k="-16" /> + <hkern u1="¡" u2="Ț" k="23" /> + <hkern u1="¡" u2="Ÿ" k="30" /> + <hkern u1="¡" u2="Ŷ" k="30" /> + <hkern u1="¡" u2="Ŵ" k="14" /> + <hkern u1="¡" u2="Ŧ" k="23" /> + <hkern u1="¡" u2="Ť" k="23" /> + <hkern u1="¡" u2="Ţ" k="23" /> + <hkern u1="¡" u2="ĵ" k="-16" /> + <hkern u1="¡" u2="Ý" k="30" /> + <hkern u1="¡" u2="j" k="-16" /> + <hkern u1="¡" u2="Y" k="30" /> + <hkern u1="¡" u2="W" k="14" /> + <hkern u1="¡" u2="V" k="19" /> + <hkern u1="¡" u2="T" k="23" /> + <hkern u1="«" u2="X" k="10" /> + <hkern u1="«" u2="V" k="23" /> + <hkern u1="­" u2="Ŧ" k="47" /> + <hkern u1="­" u2="y" k="17" /> + <hkern u1="­" u2="x" k="40" /> + <hkern u1="­" u2="v" k="16" /> + <hkern u1="­" u2="X" k="46" /> + <hkern u1="­" u2="V" k="36" /> + <hkern u1="·" u2="X" k="37" /> + <hkern u1="·" u2="V" k="27" /> + <hkern u1="»" u2="Ỳ" k="60" /> + <hkern u1="»" u2="ẅ" k="7" /> + <hkern u1="»" u2="Ẅ" k="40" /> + <hkern u1="»" u2="ẃ" k="7" /> + <hkern u1="»" u2="Ẃ" k="40" /> + <hkern u1="»" u2="ẁ" k="7" /> + <hkern u1="»" u2="Ẁ" k="40" /> + <hkern u1="»" u2="Ț" k="43" /> + <hkern u1="»" u2="Ǻ" k="13" /> + <hkern u1="»" u2="Ÿ" k="60" /> + <hkern u1="»" u2="Ŷ" k="60" /> + <hkern u1="»" u2="ŵ" k="7" /> + <hkern u1="»" u2="Ŵ" k="40" /> + <hkern u1="»" u2="Ŧ" k="43" /> + <hkern u1="»" u2="Ť" k="43" /> + <hkern u1="»" u2="Ţ" k="43" /> + <hkern u1="»" u2="Ĵ" k="16" /> + <hkern u1="»" u2="Ą" k="13" /> + <hkern u1="»" u2="Ă" k="13" /> + <hkern u1="»" u2="Ā" k="13" /> + <hkern u1="»" u2="Ý" k="60" /> + <hkern u1="»" u2="Å" k="13" /> + <hkern u1="»" u2="Ä" k="13" /> + <hkern u1="»" u2="Ã" k="13" /> + <hkern u1="»" u2="Â" k="13" /> + <hkern u1="»" u2="Á" k="13" /> + <hkern u1="»" u2="À" k="13" /> + <hkern u1="»" u2="y" k="8" /> + <hkern u1="»" u2="x" k="16" /> + <hkern u1="»" u2="w" k="7" /> + <hkern u1="»" u2="v" k="7" /> + <hkern u1="»" u2="Y" k="60" /> + <hkern u1="»" u2="X" k="46" /> + <hkern u1="»" u2="W" k="40" /> + <hkern u1="»" u2="V" k="43" /> + <hkern u1="»" u2="T" k="43" /> + <hkern u1="»" u2="J" k="16" /> + <hkern u1="»" u2="A" k="13" /> + <hkern u1="¿" u2="Ỳ" k="62" /> + <hkern u1="¿" u2="Ẅ" k="50" /> + <hkern u1="¿" u2="Ẃ" k="50" /> + <hkern u1="¿" u2="Ẁ" k="50" /> + <hkern u1="¿" u2="ȷ" k="-60" /> + <hkern u1="¿" u2="Ț" k="56" /> + <hkern u1="¿" u2="Ÿ" k="62" /> + <hkern u1="¿" u2="Ŷ" k="62" /> + <hkern u1="¿" u2="Ŵ" k="50" /> + <hkern u1="¿" u2="Ŧ" k="56" /> + <hkern u1="¿" u2="Ť" k="56" /> + <hkern u1="¿" u2="Ţ" k="56" /> + <hkern u1="¿" u2="ĵ" k="-60" /> + <hkern u1="¿" u2="Ý" k="62" /> + <hkern u1="¿" u2="j" k="-60" /> + <hkern u1="¿" u2="Y" k="62" /> + <hkern u1="¿" u2="W" k="50" /> + <hkern u1="¿" u2="V" k="53" /> + <hkern u1="¿" u2="T" k="56" /> + <hkern u1="À" g2="v.sc" k="13" /> + <hkern u1="À" u2="®" k="40" /> + <hkern u1="À" u2="«" k="13" /> + <hkern u1="À" u2="y" k="20" /> + <hkern u1="À" u2="v" k="24" /> + <hkern u1="À" u2="V" k="36" /> + <hkern u1="À" u2="?" k="40" /> + <hkern u1="Á" g2="v.sc" k="13" /> + <hkern u1="Á" u2="®" k="40" /> + <hkern u1="Á" u2="«" k="13" /> + <hkern u1="Á" u2="y" k="20" /> + <hkern u1="Á" u2="v" k="24" /> + <hkern u1="Á" u2="V" k="36" /> + <hkern u1="Á" u2="?" k="40" /> + <hkern u1="Â" g2="v.sc" k="13" /> + <hkern u1="Â" u2="®" k="40" /> + <hkern u1="Â" u2="«" k="13" /> + <hkern u1="Â" u2="y" k="20" /> + <hkern u1="Â" u2="v" k="24" /> + <hkern u1="Â" u2="V" k="36" /> + <hkern u1="Â" u2="?" k="40" /> + <hkern u1="Ã" g2="v.sc" k="13" /> + <hkern u1="Ã" u2="®" k="40" /> + <hkern u1="Ã" u2="«" k="13" /> + <hkern u1="Ã" u2="y" k="20" /> + <hkern u1="Ã" u2="v" k="24" /> + <hkern u1="Ã" u2="V" k="36" /> + <hkern u1="Ã" u2="?" k="40" /> + <hkern u1="Ä" g2="v.sc" k="13" /> + <hkern u1="Ä" u2="®" k="40" /> + <hkern u1="Ä" u2="«" k="13" /> + <hkern u1="Ä" u2="y" k="20" /> + <hkern u1="Ä" u2="v" k="24" /> + <hkern u1="Ä" u2="V" k="36" /> + <hkern u1="Ä" u2="?" k="40" /> + <hkern u1="Å" g2="v.sc" k="13" /> + <hkern u1="Å" u2="®" k="40" /> + <hkern u1="Å" u2="«" k="13" /> + <hkern u1="Å" u2="y" k="20" /> + <hkern u1="Å" u2="v" k="24" /> + <hkern u1="Å" u2="V" k="36" /> + <hkern u1="Å" u2="?" k="40" /> + <hkern u1="Ç" u2="y" k="12" /> + <hkern u1="Ì" u2="ï" k="-13" /> + <hkern u1="Í" u2="ï" k="-13" /> + <hkern u1="Î" u2="ï" k="-13" /> + <hkern u1="Ï" u2="ï" k="-13" /> + <hkern u1="Ð" u2="X" k="18" /> + <hkern u1="Ð" u2="V" k="14" /> + <hkern u1="Ñ" u2="ï" k="-13" /> + <hkern u1="Ò" u2="X" k="16" /> + <hkern u1="Ò" u2="V" k="12" /> + <hkern u1="Ó" u2="X" k="16" /> + <hkern u1="Ó" u2="V" k="12" /> + <hkern u1="Ô" u2="X" k="16" /> + <hkern u1="Ô" u2="V" k="12" /> + <hkern u1="Õ" u2="X" k="16" /> + <hkern u1="Õ" u2="V" k="12" /> + <hkern u1="Ö" u2="X" k="16" /> + <hkern u1="Ö" u2="V" k="12" /> + <hkern u1="Ý" g2="z.sc" k="10" /> + <hkern u1="Ý" g2="x.sc" k="18" /> + <hkern u1="Ý" g2="v.sc" k="9" /> + <hkern u1="Ý" u2="®" k="14" /> + <hkern u1="Ý" u2="«" k="60" /> + <hkern u1="Ý" u2="y" k="20" /> + <hkern u1="Ý" u2="x" k="36" /> + <hkern u1="Ý" u2="v" k="21" /> + <hkern u1="Ý" u2=" " k="15" /> + <hkern u1="Þ" g2="aeacute.sc" k="49" /> + <hkern u1="Þ" g2="ae.sc" k="49" /> + <hkern u1="Þ" g2="aogonek.sc" k="20" /> + <hkern u1="Þ" g2="aringacute.sc" k="20" /> + <hkern u1="Þ" g2="aring.sc" k="20" /> + <hkern u1="Þ" g2="abreve.sc" k="20" /> + <hkern u1="Þ" g2="amacron.sc" k="20" /> + <hkern u1="Þ" g2="adieresis.sc" k="20" /> + <hkern u1="Þ" g2="atilde.sc" k="20" /> + <hkern u1="Þ" g2="acircumflex.sc" k="20" /> + <hkern u1="Þ" g2="aacute.sc" k="20" /> + <hkern u1="Þ" g2="agrave.sc" k="20" /> + <hkern u1="Þ" g2="a.sc" k="20" /> + <hkern u1="Þ" u2="…" k="60" /> + <hkern u1="Þ" u2="Ỳ" k="21" /> + <hkern u1="Þ" u2="Ẅ" k="6" /> + <hkern u1="Þ" u2="Ẃ" k="6" /> + <hkern u1="Þ" u2="Ẁ" k="6" /> + <hkern u1="Þ" u2="Ǽ" k="48" /> + <hkern u1="Þ" u2="Ǻ" k="18" /> + <hkern u1="Þ" u2="Ÿ" k="21" /> + <hkern u1="Þ" u2="Ŷ" k="21" /> + <hkern u1="Þ" u2="Ŵ" k="6" /> + <hkern u1="Þ" u2="Ą" k="18" /> + <hkern u1="Þ" u2="Ă" k="18" /> + <hkern u1="Þ" u2="Ā" k="18" /> + <hkern u1="Þ" u2="Ý" k="21" /> + <hkern u1="Þ" u2="Æ" k="48" /> + <hkern u1="Þ" u2="Å" k="18" /> + <hkern u1="Þ" u2="Ä" k="18" /> + <hkern u1="Þ" u2="Ã" k="18" /> + <hkern u1="Þ" u2="Â" k="18" /> + <hkern u1="Þ" u2="Á" k="18" /> + <hkern u1="Þ" u2="À" k="18" /> + <hkern u1="Þ" u2="Y" k="21" /> + <hkern u1="Þ" u2="X" k="20" /> + <hkern u1="Þ" u2="W" k="6" /> + <hkern u1="Þ" u2="V" k="14" /> + <hkern u1="Þ" u2="A" k="18" /> + <hkern u1="Þ" u2="." k="60" /> + <hkern u1="Þ" u2="," k="60" /> + <hkern u1="à" u2="y" k="4" /> + <hkern u1="à" u2="v" k="4" /> + <hkern u1="á" u2="y" k="4" /> + <hkern u1="á" u2="v" k="4" /> + <hkern u1="â" u2="y" k="4" /> + <hkern u1="â" u2="v" k="4" /> + <hkern u1="ã" u2="y" k="4" /> + <hkern u1="ã" u2="v" k="4" /> + <hkern u1="ä" u2="y" k="4" /> + <hkern u1="ä" u2="v" k="4" /> + <hkern u1="å" u2="y" k="4" /> + <hkern u1="å" u2="v" k="4" /> + <hkern u1="æ" u2="y" k="6" /> + <hkern u1="æ" u2="x" k="4" /> + <hkern u1="æ" u2="v" k="4" /> + <hkern u1="ç" u2="y" k="3" /> + <hkern u1="ç" u2="x" k="3" /> + <hkern u1="ç" u2="v" k="3" /> + <hkern u1="è" u2="y" k="6" /> + <hkern u1="è" u2="x" k="4" /> + <hkern u1="è" u2="v" k="4" /> + <hkern u1="é" u2="y" k="6" /> + <hkern u1="é" u2="x" k="4" /> + <hkern u1="é" u2="v" k="4" /> + <hkern u1="ê" u2="y" k="6" /> + <hkern u1="ê" u2="x" k="4" /> + <hkern u1="ê" u2="v" k="4" /> + <hkern u1="ë" u2="y" k="6" /> + <hkern u1="ë" u2="x" k="4" /> + <hkern u1="ë" u2="v" k="4" /> + <hkern u1="ï" u2="”" k="-56" /> + <hkern u1="ï" u2="“" k="-56" /> + <hkern u1="ï" u2="’" k="-56" /> + <hkern u1="ï" u2="‘" k="-56" /> + <hkern u1="ï" u2="ķ" k="-13" /> + <hkern u1="ï" u2="ħ" k="-13" /> + <hkern u1="ï" u2="ĥ" k="-13" /> + <hkern u1="ï" u2="þ" k="-13" /> + <hkern u1="ï" u2="k" k="-13" /> + <hkern u1="ï" u2="h" k="-13" /> + <hkern u1="ï" u2="b" k="-13" /> + <hkern u1="ï" u2="'" k="-56" /> + <hkern u1="ï" u2=""" k="-56" /> + <hkern u1="ñ" u2="y" k="7" /> + <hkern u1="ñ" u2="v" k="8" /> + <hkern u1="ò" u2="y" k="6" /> + <hkern u1="ò" u2="x" k="10" /> + <hkern u1="ò" u2="v" k="5" /> + <hkern u1="ó" u2="y" k="6" /> + <hkern u1="ó" u2="x" k="10" /> + <hkern u1="ó" u2="v" k="5" /> + <hkern u1="ô" u2="y" k="6" /> + <hkern u1="ô" u2="x" k="10" /> + <hkern u1="ô" u2="v" k="5" /> + <hkern u1="õ" u2="y" k="6" /> + <hkern u1="õ" u2="x" k="10" /> + <hkern u1="õ" u2="v" k="5" /> + <hkern u1="ö" u2="y" k="6" /> + <hkern u1="ö" u2="x" k="10" /> + <hkern u1="ö" u2="v" k="5" /> + <hkern u1="ø" u2="x" k="7" /> + <hkern u1="þ" u2="y" k="4" /> + <hkern u1="þ" u2="x" k="9" /> + <hkern u1="þ" u2="v" k="4" /> + <hkern u1="Ā" g2="v.sc" k="13" /> + <hkern u1="Ā" u2="®" k="40" /> + <hkern u1="Ā" u2="«" k="13" /> + <hkern u1="Ā" u2="y" k="20" /> + <hkern u1="Ā" u2="v" k="24" /> + <hkern u1="Ā" u2="V" k="36" /> + <hkern u1="Ā" u2="?" k="40" /> + <hkern u1="ā" u2="y" k="4" /> + <hkern u1="ā" u2="v" k="4" /> + <hkern u1="Ă" g2="v.sc" k="13" /> + <hkern u1="Ă" u2="®" k="40" /> + <hkern u1="Ă" u2="«" k="13" /> + <hkern u1="Ă" u2="y" k="20" /> + <hkern u1="Ă" u2="v" k="24" /> + <hkern u1="Ă" u2="V" k="36" /> + <hkern u1="Ă" u2="?" k="40" /> + <hkern u1="ă" u2="y" k="4" /> + <hkern u1="ă" u2="v" k="4" /> + <hkern u1="Ą" g2="v.sc" k="13" /> + <hkern u1="Ą" u2="®" k="40" /> + <hkern u1="Ą" u2="«" k="13" /> + <hkern u1="Ą" u2="y" k="20" /> + <hkern u1="Ą" u2="v" k="24" /> + <hkern u1="Ą" u2="V" k="36" /> + <hkern u1="Ą" u2="?" k="40" /> + <hkern u1="ą" u2="y" k="4" /> + <hkern u1="ą" u2="v" k="4" /> + <hkern u1="Ć" u2="y" k="12" /> + <hkern u1="ć" u2="y" k="3" /> + <hkern u1="ć" u2="x" k="3" /> + <hkern u1="ć" u2="v" k="3" /> + <hkern u1="Ĉ" u2="y" k="12" /> + <hkern u1="ĉ" u2="y" k="3" /> + <hkern u1="ĉ" u2="x" k="3" /> + <hkern u1="ĉ" u2="v" k="3" /> + <hkern u1="Ċ" u2="y" k="12" /> + <hkern u1="ċ" u2="y" k="3" /> + <hkern u1="ċ" u2="x" k="3" /> + <hkern u1="ċ" u2="v" k="3" /> + <hkern u1="Č" u2="y" k="12" /> + <hkern u1="č" u2="y" k="3" /> + <hkern u1="č" u2="x" k="3" /> + <hkern u1="č" u2="v" k="3" /> + <hkern u1="Ď" u2="X" k="18" /> + <hkern u1="Ď" u2="V" k="14" /> + <hkern u1="ď" u2="y" k="-16" /> + <hkern u1="ď" u2="x" k="-16" /> + <hkern u1="ď" u2="v" k="-19" /> + <hkern u1="ď" u2="?" k="-75" /> + <hkern u1="ď" u2="!" k="-59" /> + <hkern u1="Đ" u2="X" k="18" /> + <hkern u1="Đ" u2="V" k="14" /> + <hkern u1="đ" g2="napostrophe" k="-32" /> + <hkern u1="đ" u2="ï" k="-13" /> + <hkern u1="ē" u2="y" k="6" /> + <hkern u1="ē" u2="x" k="4" /> + <hkern u1="ē" u2="v" k="4" /> + <hkern u1="ĕ" u2="y" k="6" /> + <hkern u1="ĕ" u2="x" k="4" /> + <hkern u1="ĕ" u2="v" k="4" /> + <hkern u1="ė" u2="y" k="6" /> + <hkern u1="ė" u2="x" k="4" /> + <hkern u1="ė" u2="v" k="4" /> + <hkern u1="ę" u2="y" k="6" /> + <hkern u1="ę" u2="x" k="4" /> + <hkern u1="ę" u2="v" k="4" /> + <hkern u1="ě" u2="y" k="6" /> + <hkern u1="ě" u2="x" k="4" /> + <hkern u1="ě" u2="v" k="4" /> + <hkern u1="Ĝ" u2="X" k="16" /> + <hkern u1="Ĝ" u2="V" k="12" /> + <hkern u1="Ğ" u2="X" k="16" /> + <hkern u1="Ğ" u2="V" k="12" /> + <hkern u1="Ġ" u2="X" k="16" /> + <hkern u1="Ġ" u2="V" k="12" /> + <hkern u1="Ģ" u2="X" k="16" /> + <hkern u1="Ģ" u2="V" k="12" /> + <hkern u1="Ĥ" u2="ï" k="-13" /> + <hkern u1="ĥ" u2="y" k="7" /> + <hkern u1="ĥ" u2="v" k="8" /> + <hkern u1="Ħ" u2="ï" k="-13" /> + <hkern u1="ħ" u2="y" k="7" /> + <hkern u1="ħ" u2="v" k="8" /> + <hkern u1="Ĩ" u2="ï" k="-13" /> + <hkern u1="Ī" u2="ï" k="-13" /> + <hkern u1="Ĭ" u2="ï" k="-13" /> + <hkern u1="Į" u2="ï" k="-13" /> + <hkern u1="İ" u2="ï" k="-13" /> + <hkern u1="Ķ" g2="v.sc" k="29" /> + <hkern u1="Ķ" u2="®" k="49" /> + <hkern u1="Ķ" u2="«" k="50" /> + <hkern u1="Ķ" u2="y" k="19" /> + <hkern u1="Ķ" u2="v" k="27" /> + <hkern u1="ķ" u2="y" k="18" /> + <hkern u1="ĸ" u2="y" k="18" /> + <hkern u1="Ĺ" g2="v.sc" k="29" /> + <hkern u1="Ĺ" u2="®" k="40" /> + <hkern u1="Ĺ" u2="«" k="20" /> + <hkern u1="Ĺ" u2="y" k="20" /> + <hkern u1="Ĺ" u2="v" k="38" /> + <hkern u1="Ĺ" u2="V" k="50" /> + <hkern u1="Ĺ" u2="?" k="13" /> + <hkern u1="ĺ" u2="®" k="23" /> + <hkern u1="ĺ" u2="«" k="10" /> + <hkern u1="ĺ" u2="y" k="15" /> + <hkern u1="ĺ" u2="v" k="19" /> + <hkern u1="Ļ" g2="v.sc" k="29" /> + <hkern u1="Ļ" u2="®" k="40" /> + <hkern u1="Ļ" u2="«" k="20" /> + <hkern u1="Ļ" u2="y" k="20" /> + <hkern u1="Ļ" u2="v" k="38" /> + <hkern u1="Ļ" u2="V" k="50" /> + <hkern u1="Ļ" u2="?" k="13" /> + <hkern u1="ļ" u2="®" k="23" /> + <hkern u1="ļ" u2="«" k="10" /> + <hkern u1="ļ" u2="y" k="15" /> + <hkern u1="ļ" u2="v" k="19" /> + <hkern u1="Ľ" g2="v.sc" k="29" /> + <hkern u1="Ľ" u2="®" k="40" /> + <hkern u1="Ľ" u2="«" k="20" /> + <hkern u1="Ľ" u2="y" k="20" /> + <hkern u1="Ľ" u2="v" k="38" /> + <hkern u1="Ľ" u2="V" k="50" /> + <hkern u1="Ľ" u2="?" k="13" /> + <hkern u1="ľ" g2="f_f_l" k="-26" /> + <hkern u1="ľ" g2="f_f_i" k="-26" /> + <hkern u1="ľ" g2="fl" k="-26" /> + <hkern u1="ľ" g2="fi" k="-26" /> + <hkern u1="ľ" g2="f_f" k="-26" /> + <hkern u1="ľ" u2="”" k="-56" /> + <hkern u1="ľ" u2="“" k="-56" /> + <hkern u1="ľ" u2="’" k="-56" /> + <hkern u1="ľ" u2="‘" k="-56" /> + <hkern u1="ľ" u2="ẅ" k="-17" /> + <hkern u1="ľ" u2="ẃ" k="-17" /> + <hkern u1="ľ" u2="ẁ" k="-17" /> + <hkern u1="ľ" u2="ȷ" k="-35" /> + <hkern u1="ľ" u2="ț" k="-29" /> + <hkern u1="ľ" u2="ŵ" k="-17" /> + <hkern u1="ľ" u2="ų" k="-7" /> + <hkern u1="ľ" u2="ű" k="-7" /> + <hkern u1="ľ" u2="ů" k="-7" /> + <hkern u1="ľ" u2="ŭ" k="-7" /> + <hkern u1="ľ" u2="ū" k="-7" /> + <hkern u1="ľ" u2="ũ" k="-7" /> + <hkern u1="ľ" u2="ŧ" k="-29" /> + <hkern u1="ľ" u2="ť" k="-29" /> + <hkern u1="ľ" u2="ţ" k="-29" /> + <hkern u1="ľ" u2="ř" k="-7" /> + <hkern u1="ľ" u2="ŗ" k="-7" /> + <hkern u1="ľ" u2="ŕ" k="-7" /> + <hkern u1="ľ" u2="ŋ" k="-7" /> + <hkern u1="ľ" u2="ň" k="-7" /> + <hkern u1="ľ" u2="ņ" k="-7" /> + <hkern u1="ľ" u2="ń" k="-7" /> + <hkern u1="ľ" u2="ł" k="-33" /> + <hkern u1="ľ" u2="ŀ" k="-33" /> + <hkern u1="ľ" u2="ľ" k="-33" /> + <hkern u1="ľ" u2="ļ" k="-33" /> + <hkern u1="ľ" u2="ĺ" k="-33" /> + <hkern u1="ľ" u2="ķ" k="-33" /> + <hkern u1="ľ" u2="ĵ" k="-35" /> + <hkern u1="ľ" u2="ı" k="-7" /> + <hkern u1="ľ" u2="į" k="-33" /> + <hkern u1="ľ" u2="ĭ" k="-33" /> + <hkern u1="ľ" u2="ī" k="-33" /> + <hkern u1="ľ" u2="ĩ" k="-33" /> + <hkern u1="ľ" u2="ħ" k="-33" /> + <hkern u1="ľ" u2="ĥ" k="-33" /> + <hkern u1="ľ" u2="þ" k="-33" /> + <hkern u1="ľ" u2="ü" k="-7" /> + <hkern u1="ľ" u2="û" k="-7" /> + <hkern u1="ľ" u2="ú" k="-7" /> + <hkern u1="ľ" u2="ù" k="-7" /> + <hkern u1="ľ" u2="ñ" k="-7" /> + <hkern u1="ľ" u2="ï" k="-33" /> + <hkern u1="ľ" u2="î" k="-33" /> + <hkern u1="ľ" u2="í" k="-33" /> + <hkern u1="ľ" u2="ì" k="-33" /> + <hkern u1="ľ" u2="}" k="-42" /> + <hkern u1="ľ" u2="y" k="-13" /> + <hkern u1="ľ" u2="x" k="-13" /> + <hkern u1="ľ" u2="w" k="-17" /> + <hkern u1="ľ" u2="v" k="-17" /> + <hkern u1="ľ" u2="u" k="-7" /> + <hkern u1="ľ" u2="t" k="-29" /> + <hkern u1="ľ" u2="r" k="-7" /> + <hkern u1="ľ" u2="p" k="-7" /> + <hkern u1="ľ" u2="n" k="-7" /> + <hkern u1="ľ" u2="m" k="-7" /> + <hkern u1="ľ" u2="l" k="-33" /> + <hkern u1="ľ" u2="k" k="-33" /> + <hkern u1="ľ" u2="j" k="-35" /> + <hkern u1="ľ" u2="i" k="-33" /> + <hkern u1="ľ" u2="h" k="-33" /> + <hkern u1="ľ" u2="f" k="-26" /> + <hkern u1="ľ" u2="b" k="-33" /> + <hkern u1="ľ" u2="]" k="-42" /> + <hkern u1="ľ" u2="?" k="-59" /> + <hkern u1="ľ" u2=")" k="-42" /> + <hkern u1="ľ" u2="'" k="-56" /> + <hkern u1="ľ" u2=""" k="-56" /> + <hkern u1="ľ" u2="!" k="-43" /> + <hkern u1="Ł" g2="v.sc" k="29" /> + <hkern u1="Ł" u2="®" k="40" /> + <hkern u1="Ł" u2="«" k="20" /> + <hkern u1="Ł" u2="y" k="20" /> + <hkern u1="Ł" u2="v" k="38" /> + <hkern u1="Ł" u2="V" k="50" /> + <hkern u1="Ł" u2="?" k="13" /> + <hkern u1="ł" u2="®" k="23" /> + <hkern u1="ł" u2="«" k="10" /> + <hkern u1="ł" u2="y" k="15" /> + <hkern u1="ł" u2="v" k="19" /> + <hkern u1="Ń" u2="ï" k="-13" /> + <hkern u1="ń" u2="y" k="7" /> + <hkern u1="ń" u2="v" k="8" /> + <hkern u1="Ņ" u2="ï" k="-13" /> + <hkern u1="ņ" u2="y" k="7" /> + <hkern u1="ņ" u2="v" k="8" /> + <hkern u1="Ň" u2="ï" k="-13" /> + <hkern u1="ň" u2="y" k="7" /> + <hkern u1="ň" u2="v" k="8" /> + <hkern g1="napostrophe" u2="y" k="7" /> + <hkern g1="napostrophe" u2="v" k="8" /> + <hkern u1="Ŋ" u2="ï" k="-13" /> + <hkern u1="ŋ" u2="y" k="7" /> + <hkern u1="ŋ" u2="v" k="8" /> + <hkern u1="Ō" u2="X" k="16" /> + <hkern u1="Ō" u2="V" k="12" /> + <hkern u1="ō" u2="y" k="6" /> + <hkern u1="ō" u2="x" k="10" /> + <hkern u1="ō" u2="v" k="5" /> + <hkern u1="Ŏ" u2="X" k="16" /> + <hkern u1="Ŏ" u2="V" k="12" /> + <hkern u1="ŏ" u2="y" k="6" /> + <hkern u1="ŏ" u2="x" k="10" /> + <hkern u1="ŏ" u2="v" k="5" /> + <hkern u1="Ő" u2="X" k="16" /> + <hkern u1="Ő" u2="V" k="12" /> + <hkern u1="ő" u2="y" k="6" /> + <hkern u1="ő" u2="x" k="10" /> + <hkern u1="ő" u2="v" k="5" /> + <hkern u1="œ" u2="y" k="6" /> + <hkern u1="œ" u2="x" k="4" /> + <hkern u1="œ" u2="v" k="4" /> + <hkern u1="Ŕ" u2="«" k="20" /> + <hkern u1="Ŕ" u2="V" k="12" /> + <hkern u1="ŕ" u2="?" k="-20" /> + <hkern u1="Ŗ" u2="«" k="20" /> + <hkern u1="Ŗ" u2="V" k="12" /> + <hkern u1="ŗ" u2="?" k="-20" /> + <hkern u1="Ř" u2="«" k="20" /> + <hkern u1="Ř" u2="V" k="12" /> + <hkern u1="ř" u2="?" k="-20" /> + <hkern u1="Ś" u2="y" k="3" /> + <hkern u1="Ś" u2="x" k="6" /> + <hkern u1="Ś" u2="v" k="7" /> + <hkern u1="ś" u2="v" k="3" /> + <hkern u1="Ŝ" u2="y" k="3" /> + <hkern u1="Ŝ" u2="x" k="6" /> + <hkern u1="Ŝ" u2="v" k="7" /> + <hkern u1="ŝ" u2="v" k="3" /> + <hkern u1="Ş" u2="y" k="3" /> + <hkern u1="Ş" u2="x" k="6" /> + <hkern u1="Ş" u2="v" k="7" /> + <hkern u1="ş" u2="v" k="3" /> + <hkern u1="Š" u2="y" k="3" /> + <hkern u1="Š" u2="x" k="6" /> + <hkern u1="Š" u2="v" k="7" /> + <hkern u1="š" u2="v" k="3" /> + <hkern u1="Ţ" g2="z.sc" k="28" /> + <hkern u1="Ţ" g2="x.sc" k="44" /> + <hkern u1="Ţ" g2="v.sc" k="33" /> + <hkern u1="Ţ" u2="ï" k="-19" /> + <hkern u1="Ţ" u2="«" k="43" /> + <hkern u1="Ţ" u2="y" k="27" /> + <hkern u1="Ţ" u2="x" k="31" /> + <hkern u1="Ţ" u2="v" k="35" /> + <hkern u1="Ţ" u2="?" k="-20" /> + <hkern u1="Ţ" u2=" " k="10" /> + <hkern u1="Ť" g2="z.sc" k="28" /> + <hkern u1="Ť" g2="x.sc" k="44" /> + <hkern u1="Ť" g2="v.sc" k="33" /> + <hkern u1="Ť" u2="ï" k="-19" /> + <hkern u1="Ť" u2="«" k="43" /> + <hkern u1="Ť" u2="y" k="27" /> + <hkern u1="Ť" u2="x" k="31" /> + <hkern u1="Ť" u2="v" k="35" /> + <hkern u1="Ť" u2="?" k="-20" /> + <hkern u1="Ť" u2=" " k="10" /> + <hkern u1="ť" u2="y" k="-16" /> + <hkern u1="ť" u2="x" k="-16" /> + <hkern u1="ť" u2="v" k="-19" /> + <hkern u1="ť" u2="?" k="-75" /> + <hkern u1="ť" u2="!" k="-59" /> + <hkern u1="Ŧ" g2="z.sc" k="28" /> + <hkern u1="Ŧ" g2="x.sc" k="44" /> + <hkern u1="Ŧ" g2="v.sc" k="33" /> + <hkern u1="Ŧ" u2="—" k="47" /> + <hkern u1="Ŧ" u2="–" k="47" /> + <hkern u1="Ŧ" u2="ï" k="-19" /> + <hkern u1="Ŧ" u2="­" k="47" /> + <hkern u1="Ŧ" u2="«" k="43" /> + <hkern u1="Ŧ" u2="y" k="27" /> + <hkern u1="Ŧ" u2="x" k="31" /> + <hkern u1="Ŧ" u2="v" k="35" /> + <hkern u1="Ŧ" u2="?" k="-20" /> + <hkern u1="Ŧ" u2="-" k="47" /> + <hkern u1="Ŧ" u2=" " k="10" /> + <hkern u1="Ŵ" g2="z.sc" k="7" /> + <hkern u1="Ŵ" g2="x.sc" k="7" /> + <hkern u1="Ŵ" u2="®" k="4" /> + <hkern u1="Ŵ" u2="«" k="40" /> + <hkern u1="Ŵ" u2="y" k="4" /> + <hkern u1="Ŵ" u2="x" k="16" /> + <hkern u1="Ŵ" u2="v" k="3" /> + <hkern u1="Ŵ" u2=" " k="18" /> + <hkern u1="ŵ" u2="«" k="7" /> + <hkern u1="Ŷ" g2="z.sc" k="10" /> + <hkern u1="Ŷ" g2="x.sc" k="18" /> + <hkern u1="Ŷ" g2="v.sc" k="9" /> + <hkern u1="Ŷ" u2="®" k="14" /> + <hkern u1="Ŷ" u2="«" k="60" /> + <hkern u1="Ŷ" u2="y" k="20" /> + <hkern u1="Ŷ" u2="x" k="36" /> + <hkern u1="Ŷ" u2="v" k="21" /> + <hkern u1="Ŷ" u2=" " k="15" /> + <hkern u1="Ÿ" g2="z.sc" k="10" /> + <hkern u1="Ÿ" g2="x.sc" k="18" /> + <hkern u1="Ÿ" g2="v.sc" k="9" /> + <hkern u1="Ÿ" u2="®" k="14" /> + <hkern u1="Ÿ" u2="«" k="60" /> + <hkern u1="Ÿ" u2="y" k="20" /> + <hkern u1="Ÿ" u2="x" k="36" /> + <hkern u1="Ÿ" u2="v" k="21" /> + <hkern u1="Ÿ" u2=" " k="15" /> + <hkern u1="Ź" u2="y" k="18" /> + <hkern u1="Ź" u2="v" k="6" /> + <hkern u1="Ż" u2="y" k="18" /> + <hkern u1="Ż" u2="v" k="6" /> + <hkern u1="Ž" u2="y" k="18" /> + <hkern u1="Ž" u2="v" k="6" /> + <hkern u1="Ǻ" g2="v.sc" k="13" /> + <hkern u1="Ǻ" u2="®" k="40" /> + <hkern u1="Ǻ" u2="«" k="13" /> + <hkern u1="Ǻ" u2="y" k="20" /> + <hkern u1="Ǻ" u2="v" k="24" /> + <hkern u1="Ǻ" u2="V" k="36" /> + <hkern u1="Ǻ" u2="?" k="40" /> + <hkern u1="ǻ" u2="y" k="4" /> + <hkern u1="ǻ" u2="v" k="4" /> + <hkern u1="ǽ" u2="y" k="6" /> + <hkern u1="ǽ" u2="x" k="4" /> + <hkern u1="ǽ" u2="v" k="4" /> + <hkern u1="ǿ" u2="x" k="7" /> + <hkern u1="Ș" u2="y" k="3" /> + <hkern u1="Ș" u2="x" k="6" /> + <hkern u1="Ș" u2="v" k="7" /> + <hkern u1="ș" u2="v" k="3" /> + <hkern u1="Ț" g2="z.sc" k="28" /> + <hkern u1="Ț" g2="x.sc" k="44" /> + <hkern u1="Ț" g2="v.sc" k="33" /> + <hkern u1="Ț" u2="ï" k="-19" /> + <hkern u1="Ț" u2="«" k="43" /> + <hkern u1="Ț" u2="y" k="27" /> + <hkern u1="Ț" u2="x" k="31" /> + <hkern u1="Ț" u2="v" k="35" /> + <hkern u1="Ț" u2="?" k="-20" /> + <hkern u1="Ț" u2=" " k="10" /> + <hkern u1="Ẁ" g2="z.sc" k="7" /> + <hkern u1="Ẁ" g2="x.sc" k="7" /> + <hkern u1="Ẁ" u2="®" k="4" /> + <hkern u1="Ẁ" u2="«" k="40" /> + <hkern u1="Ẁ" u2="y" k="4" /> + <hkern u1="Ẁ" u2="x" k="16" /> + <hkern u1="Ẁ" u2="v" k="3" /> + <hkern u1="Ẁ" u2=" " k="18" /> + <hkern u1="ẁ" u2="«" k="7" /> + <hkern u1="Ẃ" g2="z.sc" k="7" /> + <hkern u1="Ẃ" g2="x.sc" k="7" /> + <hkern u1="Ẃ" u2="®" k="4" /> + <hkern u1="Ẃ" u2="«" k="40" /> + <hkern u1="Ẃ" u2="y" k="4" /> + <hkern u1="Ẃ" u2="x" k="16" /> + <hkern u1="Ẃ" u2="v" k="3" /> + <hkern u1="Ẃ" u2=" " k="18" /> + <hkern u1="ẃ" u2="«" k="7" /> + <hkern u1="Ẅ" g2="z.sc" k="7" /> + <hkern u1="Ẅ" g2="x.sc" k="7" /> + <hkern u1="Ẅ" u2="®" k="4" /> + <hkern u1="Ẅ" u2="«" k="40" /> + <hkern u1="Ẅ" u2="y" k="4" /> + <hkern u1="Ẅ" u2="x" k="16" /> + <hkern u1="Ẅ" u2="v" k="3" /> + <hkern u1="Ẅ" u2=" " k="18" /> + <hkern u1="ẅ" u2="«" k="7" /> + <hkern u1="Ỳ" g2="z.sc" k="10" /> + <hkern u1="Ỳ" g2="x.sc" k="18" /> + <hkern u1="Ỳ" g2="v.sc" k="9" /> + <hkern u1="Ỳ" u2="®" k="14" /> + <hkern u1="Ỳ" u2="«" k="60" /> + <hkern u1="Ỳ" u2="y" k="20" /> + <hkern u1="Ỳ" u2="x" k="36" /> + <hkern u1="Ỳ" u2="v" k="21" /> + <hkern u1="Ỳ" u2=" " k="15" /> + <hkern u1="–" u2="Ŧ" k="47" /> + <hkern u1="–" u2="y" k="17" /> + <hkern u1="–" u2="x" k="40" /> + <hkern u1="–" u2="v" k="16" /> + <hkern u1="–" u2="X" k="46" /> + <hkern u1="–" u2="V" k="36" /> + <hkern u1="—" u2="Ŧ" k="47" /> + <hkern u1="—" u2="y" k="17" /> + <hkern u1="—" u2="x" k="40" /> + <hkern u1="—" u2="v" k="16" /> + <hkern u1="—" u2="X" k="46" /> + <hkern u1="—" u2="V" k="36" /> + <hkern u1="‘" u2="ï" k="-56" /> + <hkern u1="‘" u2="y" k="-3" /> + <hkern u1="‘" u2="v" k="-3" /> + <hkern u1="’" u2="ï" k="-56" /> + <hkern u1="‚" u2="y" k="50" /> + <hkern u1="‚" u2="v" k="64" /> + <hkern u1="‚" u2="X" k="-18" /> + <hkern u1="‚" u2="V" k="90" /> + <hkern u1="“" u2="ï" k="-56" /> + <hkern u1="“" u2="y" k="-3" /> + <hkern u1="“" u2="v" k="-3" /> + <hkern u1="”" u2="ï" k="-56" /> + <hkern u1="„" u2="y" k="50" /> + <hkern u1="„" u2="v" k="64" /> + <hkern u1="„" u2="X" k="-18" /> + <hkern u1="„" u2="V" k="90" /> + <hkern u1="•" u2="X" k="37" /> + <hkern u1="•" u2="V" k="27" /> + <hkern u1="…" u2=" " k="16" /> + <hkern u1="‹" u2="X" k="10" /> + <hkern u1="‹" u2="V" k="23" /> + <hkern u1="∙" u2="X" k="37" /> + <hkern u1="∙" u2="V" k="27" /> + <hkern g1="fl" u2="®" k="23" /> + <hkern g1="fl" u2="«" k="10" /> + <hkern g1="fl" u2="y" k="15" /> + <hkern g1="fl" u2="v" k="19" /> + <hkern g1="f_f_l" u2="®" k="23" /> + <hkern g1="f_f_l" u2="«" k="10" /> + <hkern g1="f_f_l" u2="y" k="15" /> + <hkern g1="f_f_l" u2="v" k="19" /> + <hkern g1="a.sc" g2="v.sc" k="27" /> + <hkern g1="b.sc" g2="ygrave.sc" k="4" /> + <hkern g1="b.sc" g2="ydieresis.sc" k="4" /> + <hkern g1="b.sc" g2="ycircumflex.sc" k="4" /> + <hkern g1="b.sc" g2="yacute.sc" k="4" /> + <hkern g1="b.sc" g2="y.sc" k="4" /> + <hkern g1="b.sc" g2="x.sc" k="4" /> + <hkern g1="d.sc" g2="x.sc" k="5" /> + <hkern g1="d.sc" g2="v.sc" k="6" /> + <hkern g1="f.sc" g2="jcircumflex.sc" k="50" /> + <hkern g1="f.sc" g2="aeacute.sc" k="43" /> + <hkern g1="f.sc" g2="ae.sc" k="43" /> + <hkern g1="f.sc" g2="aogonek.sc" k="11" /> + <hkern g1="f.sc" g2="aringacute.sc" k="11" /> + <hkern g1="f.sc" g2="aring.sc" k="11" /> + <hkern g1="f.sc" g2="abreve.sc" k="11" /> + <hkern g1="f.sc" g2="amacron.sc" k="11" /> + <hkern g1="f.sc" g2="adieresis.sc" k="11" /> + <hkern g1="f.sc" g2="atilde.sc" k="11" /> + <hkern g1="f.sc" g2="acircumflex.sc" k="11" /> + <hkern g1="f.sc" g2="aacute.sc" k="11" /> + <hkern g1="f.sc" g2="agrave.sc" k="11" /> + <hkern g1="f.sc" g2="j.sc" k="50" /> + <hkern g1="f.sc" g2="a.sc" k="11" /> + <hkern g1="l.sc" g2="v.sc" k="25" /> + <hkern g1="p.sc" g2="ygrave.sc" k="6" /> + <hkern g1="p.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="p.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="p.sc" g2="yacute.sc" k="6" /> + <hkern g1="p.sc" g2="jcircumflex.sc" k="66" /> + <hkern g1="p.sc" g2="aeacute.sc" k="68" /> + <hkern g1="p.sc" g2="ae.sc" k="68" /> + <hkern g1="p.sc" g2="aogonek.sc" k="24" /> + <hkern g1="p.sc" g2="aringacute.sc" k="24" /> + <hkern g1="p.sc" g2="aring.sc" k="24" /> + <hkern g1="p.sc" g2="abreve.sc" k="24" /> + <hkern g1="p.sc" g2="amacron.sc" k="24" /> + <hkern g1="p.sc" g2="adieresis.sc" k="24" /> + <hkern g1="p.sc" g2="atilde.sc" k="24" /> + <hkern g1="p.sc" g2="acircumflex.sc" k="24" /> + <hkern g1="p.sc" g2="aacute.sc" k="24" /> + <hkern g1="p.sc" g2="agrave.sc" k="24" /> + <hkern g1="p.sc" g2="y.sc" k="6" /> + <hkern g1="p.sc" g2="x.sc" k="10" /> + <hkern g1="p.sc" g2="j.sc" k="66" /> + <hkern g1="p.sc" g2="a.sc" k="24" /> + <hkern g1="q.sc" g2="ygrave.sc" k="6" /> + <hkern g1="q.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="q.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="q.sc" g2="yacute.sc" k="6" /> + <hkern g1="q.sc" g2="y.sc" k="6" /> + <hkern g1="r.sc" g2="v.sc" k="4" /> + <hkern g1="v.sc" g2="jcircumflex.sc" k="56" /> + <hkern g1="v.sc" g2="aeacute.sc" k="54" /> + <hkern g1="v.sc" g2="ae.sc" k="54" /> + <hkern g1="v.sc" g2="aogonek.sc" k="27" /> + <hkern g1="v.sc" g2="aringacute.sc" k="27" /> + <hkern g1="v.sc" g2="aring.sc" k="27" /> + <hkern g1="v.sc" g2="abreve.sc" k="27" /> + <hkern g1="v.sc" g2="amacron.sc" k="27" /> + <hkern g1="v.sc" g2="adieresis.sc" k="27" /> + <hkern g1="v.sc" g2="atilde.sc" k="27" /> + <hkern g1="v.sc" g2="acircumflex.sc" k="27" /> + <hkern g1="v.sc" g2="aacute.sc" k="27" /> + <hkern g1="v.sc" g2="agrave.sc" k="27" /> + <hkern g1="v.sc" g2="j.sc" k="56" /> + <hkern g1="v.sc" g2="a.sc" k="27" /> + <hkern g1="x.sc" g2="oslash.sc" k="4" /> + <hkern g1="x.sc" g2="ohungarumlaut.sc" k="4" /> + <hkern g1="x.sc" g2="obreve.sc" k="4" /> + <hkern g1="x.sc" g2="omacron.sc" k="4" /> + <hkern g1="x.sc" g2="odieresis.sc" k="4" /> + <hkern g1="x.sc" g2="otilde.sc" k="4" /> + <hkern g1="x.sc" g2="ocircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="oacute.sc" k="4" /> + <hkern g1="x.sc" g2="ograve.sc" k="4" /> + <hkern g1="x.sc" g2="gcommaaccent.sc" k="4" /> + <hkern g1="x.sc" g2="gdotaccent.sc" k="4" /> + <hkern g1="x.sc" g2="gbreve.sc" k="4" /> + <hkern g1="x.sc" g2="gcircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="ccedilla.sc" k="4" /> + <hkern g1="x.sc" g2="cdotaccent.sc" k="4" /> + <hkern g1="x.sc" g2="ccaron.sc" k="4" /> + <hkern g1="x.sc" g2="ccircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="cacute.sc" k="4" /> + <hkern g1="x.sc" g2="q.sc" k="4" /> + <hkern g1="x.sc" g2="o.sc" k="4" /> + <hkern g1="x.sc" g2="g.sc" k="4" /> + <hkern g1="x.sc" g2="c.sc" k="4" /> + <hkern g1="agrave.sc" g2="v.sc" k="27" /> + <hkern g1="aacute.sc" g2="v.sc" k="27" /> + <hkern g1="acircumflex.sc" g2="v.sc" k="27" /> + <hkern g1="atilde.sc" g2="v.sc" k="27" /> + <hkern g1="adieresis.sc" g2="v.sc" k="27" /> + <hkern g1="amacron.sc" g2="v.sc" k="27" /> + <hkern g1="abreve.sc" g2="v.sc" k="27" /> + <hkern g1="aring.sc" g2="v.sc" k="27" /> + <hkern g1="aringacute.sc" g2="v.sc" k="27" /> + <hkern g1="aogonek.sc" g2="v.sc" k="27" /> + <hkern g1="dcaron.sc" g2="x.sc" k="5" /> + <hkern g1="dcaron.sc" g2="v.sc" k="6" /> + <hkern g1="dcroat.sc" g2="x.sc" k="5" /> + <hkern g1="dcroat.sc" g2="v.sc" k="6" /> + <hkern g1="eth.sc" g2="x.sc" k="5" /> + <hkern g1="eth.sc" g2="v.sc" k="6" /> + <hkern g1="lacute.sc" g2="v.sc" k="25" /> + <hkern g1="lcaron.sc" g2="v.sc" k="25" /> + <hkern g1="lcommaaccent.sc" g2="v.sc" k="25" /> + <hkern g1="lslash.sc" g2="v.sc" k="25" /> + <hkern g1="racute.sc" g2="v.sc" k="4" /> + <hkern g1="rcaron.sc" g2="v.sc" k="4" /> + <hkern g1="rcommaaccent.sc" g2="v.sc" k="4" /> + <hkern g1="thorn.sc" g2="ygrave.sc" k="6" /> + <hkern g1="thorn.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="thorn.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="thorn.sc" g2="yacute.sc" k="6" /> + <hkern g1="thorn.sc" g2="jcircumflex.sc" k="36" /> + <hkern g1="thorn.sc" g2="aeacute.sc" k="36" /> + <hkern g1="thorn.sc" g2="ae.sc" k="36" /> + <hkern g1="thorn.sc" g2="aogonek.sc" k="10" /> + <hkern g1="thorn.sc" g2="aringacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="aring.sc" k="10" /> + <hkern g1="thorn.sc" g2="abreve.sc" k="10" /> + <hkern g1="thorn.sc" g2="amacron.sc" k="10" /> + <hkern g1="thorn.sc" g2="adieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="atilde.sc" k="10" /> + <hkern g1="thorn.sc" g2="acircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="aacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="agrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="y.sc" k="6" /> + <hkern g1="thorn.sc" g2="x.sc" k="10" /> + <hkern g1="thorn.sc" g2="j.sc" k="36" /> + <hkern g1="thorn.sc" g2="a.sc" k="10" /> + <hkern g1="four.prop" u2="…" k="-20" /> + <hkern g1="four.prop" u2="." k="-20" /> + <hkern g1="four.prop" u2="," k="-20" /> + <hkern g1="seven.prop" g2="four.prop" k="31" /> + <hkern g1="seven.prop" u2="…" k="60" /> + <hkern g1="seven.prop" u2="." k="60" /> + <hkern g1="seven.prop" u2="," k="60" /> + <hkern g1="four.onumprop" u2="…" k="-30" /> + <hkern g1="four.onumprop" u2="." k="-30" /> + <hkern g1="four.onumprop" u2="," k="-30" /> + <hkern g1="seven.onumprop" u2="…" k="20" /> + <hkern g1="seven.onumprop" u2="." k="20" /> + <hkern g1="seven.onumprop" u2="," k="20" /> + <hkern g1="q.alt01" u2="ȷ" k="-48" /> + <hkern g1="q.alt01" u2="ĵ" k="-48" /> + <hkern g1="q.alt01" u2="ģ" k="-16" /> + <hkern g1="q.alt01" u2="ġ" k="-16" /> + <hkern g1="q.alt01" u2="ğ" k="-16" /> + <hkern g1="q.alt01" u2="ĝ" k="-16" /> + <hkern g1="q.alt01" u2="p" k="-22" /> + <hkern g1="q.alt01" u2="j" k="-48" /> + <hkern g1="q.alt01" u2="g" k="-16" /> + <hkern g1="C.alt01" u2="X" k="15" /> + <hkern g1="C.alt01" u2="V" k="4" /> + <hkern g1="Cacute.alt01" u2="X" k="15" /> + <hkern g1="Cacute.alt01" u2="V" k="4" /> + <hkern g1="Ccircumflex.alt01" u2="X" k="15" /> + <hkern g1="Ccircumflex.alt01" u2="V" k="4" /> + <hkern g1="Ccaron.alt01" u2="X" k="15" /> + <hkern g1="Ccaron.alt01" u2="V" k="4" /> + <hkern g1="Cdotaccent.alt01" u2="X" k="15" /> + <hkern g1="Cdotaccent.alt01" u2="V" k="4" /> + <hkern g1="Ccedilla.alt01" u2="X" k="15" /> + <hkern g1="Ccedilla.alt01" u2="V" k="4" /> + <hkern g1="G.alt01" u2="X" k="16" /> + <hkern g1="G.alt01" u2="V" k="12" /> + <hkern g1="Gcircumflex.alt01" u2="X" k="16" /> + <hkern g1="Gcircumflex.alt01" u2="V" k="12" /> + <hkern g1="Gbreve.alt01" u2="X" k="16" /> + <hkern g1="Gbreve.alt01" u2="V" k="12" /> + <hkern g1="Gdotaccent.alt01" u2="X" k="16" /> + <hkern g1="Gdotaccent.alt01" u2="V" k="12" /> + <hkern g1="Gcommaaccent.alt01" u2="X" k="16" /> + <hkern g1="Gcommaaccent.alt01" u2="V" k="12" /> + <hkern g1="Z.alt01" u2="y" k="18" /> + <hkern g1="Z.alt01" u2="v" k="6" /> + <hkern g1="Zacute.alt01" u2="y" k="18" /> + <hkern g1="Zacute.alt01" u2="v" k="6" /> + <hkern g1="Zcaron.alt01" u2="y" k="18" /> + <hkern g1="Zcaron.alt01" u2="v" k="6" /> + <hkern g1="Zdotaccent.alt01" u2="y" k="18" /> + <hkern g1="Zdotaccent.alt01" u2="v" k="6" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="AE,AEacute" + k="25" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="J,Jcircumflex" + k="15" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-12" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="4" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="comma,period,ellipsis" + k="19" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="9" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="26" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="AE,AEacute" + k="30" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="J,Jcircumflex" + k="21" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="j.sc,jcircumflex.sc" + k="15" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="ae.sc,aeacute.sc" + k="18" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="9" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="11" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="AE,AEacute" + k="28" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="J,Jcircumflex" + k="16" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="2" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="ae.sc,aeacute.sc" + k="8" /> + <hkern g1="Oslash,Oslashacute" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="14" /> + <hkern g1="Oslash,Oslashacute" + g2="AE,AEacute" + k="28" /> + <hkern g1="J,IJ,Jcircumflex" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="J,IJ,Jcircumflex" + g2="AE,AEacute" + k="20" /> + <hkern g1="J,IJ,Jcircumflex" + g2="J,Jcircumflex" + k="17" /> + <hkern g1="J,IJ,Jcircumflex" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="J,IJ,Jcircumflex" + g2="ae.sc,aeacute.sc" + k="11" /> + <hkern g1="J,IJ,Jcircumflex" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="5" /> + <hkern g1="K,Kcommaaccent" + g2="quoteright,quotedblright" + k="5" /> + <hkern g1="K,Kcommaaccent" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="23" /> + <hkern g1="K,Kcommaaccent" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="14" /> + <hkern g1="K,Kcommaaccent" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="10" /> + <hkern g1="K,Kcommaaccent" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="20" /> + <hkern g1="K,Kcommaaccent" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="periodcentered,bullet,uni2219" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="K,Kcommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="26" /> + <hkern g1="K,Kcommaaccent" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="8" /> + <hkern g1="K,Kcommaaccent" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="guillemotright,guilsinglright" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="2" /> + <hkern g1="K,Kcommaaccent" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="hyphen,uni00AD,endash,emdash" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="comma,period,ellipsis" + k="-12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="30" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="50" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="10" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="30" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="18" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="40" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="periodcentered,bullet,uni2219" + k="14" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="34" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="11" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="8" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="18" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="periodcentered,bullet,uni2219" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="guillemotright,guilsinglright" + k="7" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="-20" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="3" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="6" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="AE,AEacute" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="hyphen,uni00AD,endash,emdash" + k="82" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="comma,period,ellipsis" + k="96" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="colon,semicolon" + k="20" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-23" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quoteright,quotedblright" + k="-23" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="18" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="8" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="27" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="29" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="periodcentered,bullet,uni2219" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="7" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="33" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="46" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="AE,AEacute" + k="77" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="J,Jcircumflex" + k="78" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="j.sc,jcircumflex.sc" + k="65" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="ae.sc,aeacute.sc" + k="55" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="40" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="43" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="oslash,oslashacute" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="36" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="comma,period,ellipsis" + k="20" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="AE,AEacute" + k="20" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="J,Jcircumflex" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="comma,period,ellipsis" + k="79" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="colon,semicolon" + k="22" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="31" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="30" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="periodcentered,bullet,uni2219" + k="21" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="4" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="16" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="AE,AEacute" + k="68" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="J,Jcircumflex" + k="54" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="j.sc,jcircumflex.sc" + k="46" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="ae.sc,aeacute.sc" + k="47" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="27" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="guillemotright,guilsinglright" + k="16" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="30" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="29" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="25" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="14" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="oslash,oslashacute" + k="36" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="17" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="Oslash,Oslashacute" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="z,zacute,zdotaccent,zcaron" + k="16" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="hyphen,uni00AD,endash,emdash" + k="76" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="comma,period,ellipsis" + k="96" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="colon,semicolon" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="22" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="38" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="7" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="10" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="52" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="periodcentered,bullet,uni2219" + k="61" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="10" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="25" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="42" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="AE,AEacute" + k="80" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="J,Jcircumflex" + k="60" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="j.sc,jcircumflex.sc" + k="54" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="ae.sc,aeacute.sc" + k="60" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="11" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="guillemotright,guilsinglright" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="52" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="44" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="27" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="oslash,oslashacute" + k="57" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="Oslash,Oslashacute" + k="24" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="z,zacute,zdotaccent,zcaron" + k="32" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="18" /> + <hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="b,p,thorn" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="b,p,thorn" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="1" /> + <hkern g1="b,p,thorn" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="1" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="8" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="hyphen,uni00AD,endash,emdash" + k="31" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="hyphen,uni00AD,endash,emdash" + k="17" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="comma,period,ellipsis" + k="-16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="34" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="22" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="11" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="2" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="15" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="guillemotright,guilsinglright" + k="7" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="14" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="comma,period,ellipsis" + k="50" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quoteright,quotedblright" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="7" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="oslash,oslashacute" + k="10" /> + <hkern g1="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="hyphen,uni00AD,endash,emdash" + k="12" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="comma,period,ellipsis" + k="-12" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-4" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quoteright,quotedblright" + k="-4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="comma,period,ellipsis" + k="36" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quoteright,quotedblright" + k="-3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="oslash,oslashacute" + k="4" /> + <hkern g1="dcaron,tcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-72" /> + <hkern g1="dcaron,tcaron" + g2="quoteright,quotedblright" + k="-72" /> + <hkern g1="dcaron,tcaron" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="-29" /> + <hkern g1="dcaron,tcaron" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="-10" /> + <hkern g1="dcaron,tcaron" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-32" /> + <hkern g1="dcaron,tcaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-19" /> + <hkern g1="dcaron,tcaron" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="-10" /> + <hkern g1="dcaron,tcaron" + g2="parenright,bracketright,braceright" + k="-51" /> + <hkern g1="dcaron,tcaron" + g2="b,h,k,thorn,hcircumflex,hbar,kcommaaccent" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="j,jcircumflex,dotlessj" + k="-42" /> + <hkern g1="comma,period,ellipsis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="64" /> + <hkern g1="comma,period,ellipsis" + g2="quoteright,quotedblright" + k="64" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="82" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="24" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="76" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="9" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="J,Jcircumflex" + k="50" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="38" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="21" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="61" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="22" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="J,Jcircumflex" + k="33" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="14" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="16" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="37" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="J,Jcircumflex" + k="4" /> + <hkern g1="parenleft,bracketleft,braceleft" + g2="j,jcircumflex,dotlessj" + k="-16" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="comma,period,ellipsis" + k="64" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-23" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-5" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-3" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="69" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="J,Jcircumflex" + k="64" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="j.sc,jcircumflex.sc" + k="48" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quoteright,quotedblright" + g2="comma,period,ellipsis" + k="70" /> + <hkern g1="quoteright,quotedblright" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="12" /> + <hkern g1="quoteright,quotedblright" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-23" /> + <hkern g1="quoteright,quotedblright" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="quoteright,quotedblright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="74" /> + <hkern g1="quoteright,quotedblright" + g2="J,Jcircumflex" + k="67" /> + <hkern g1="quoteright,quotedblright" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="74" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="60" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="-10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="j,jcircumflex,dotlessj" + k="-50" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="25" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="16" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="28" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="5" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="3" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="5" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="6" /> + <hkern g1="g.sc,o.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="6" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="ae.sc,aeacute.sc" + k="13" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="5" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="4" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="30" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="27" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="6" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="j.sc,jcircumflex.sc" + k="4" /> + <hkern g1="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + g2="ae.sc,aeacute.sc" + k="7" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="j.sc,jcircumflex.sc" + k="49" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="25" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="j.sc,jcircumflex.sc" + k="7" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="ae.sc,aeacute.sc" + k="9" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="5" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="j.sc,jcircumflex.sc" + k="36" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="ae.sc,aeacute.sc" + k="36" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="16" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="j.sc,jcircumflex.sc" + k="42" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="ae.sc,aeacute.sc" + k="50" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="28" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + </font> +</defs></svg> diff --git a/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d52376d3b1952d78505ea8a5ec7155487c285ef8 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf differ diff --git a/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff new file mode 100644 index 0000000000000000000000000000000000000000..a438ad56aa08d0db3cc1e64b4c65a81e6854a650 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff differ diff --git a/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff2 b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..71e5bb3031b7236d6023d84b1ffdedbeae874616 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff2 differ diff --git a/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot new file mode 100644 index 0000000000000000000000000000000000000000..d711d260b59db001445d015074c77e7d5290b981 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot differ diff --git a/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg new file mode 100644 index 0000000000000000000000000000000000000000..5e39806f6e52131493b30e762f02111d917df85d --- /dev/null +++ b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg @@ -0,0 +1,5048 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Aug 27 15:55:25 2019 + By www +Copyright (c) 2008 - 2009 Linotype GmbH, www.linotype.com. All rights reserved. This font software may not be reproduced, modified, disclosed or transferred without the express written approval of Linotype GmbH. +</metadata> +<defs> +<font id="DINNextLTPro-MediumCond" horiz-adv-x="398" > + <font-face + font-family="DIN Next LT Pro Medium Cond" + font-weight="500" + font-stretch="condensed" + units-per-em="1000" + panose-1="2 11 6 6 2 2 3 5 2 3" + ascent="750" + descent="-250" + x-height="482" + cap-height="680" + bbox="-92.6923 -221 872 902" + underline-thickness="50" + underline-position="-50" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="388" +d="M0 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10h-368q-10 0 -10 10zM59 61q0 -6 6 -6h259q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558zM168 224q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10h-48zM158 124v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10h-48q-10 0 -10 10z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="567" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM229 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45z" /> + <glyph glyph-name="ij" unicode="ij" horiz-adv-x="408" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM347 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM215 -180h-15q-10 0 -10 10v72 +q0 10 10 10l14 1q22 2 31.5 13.5t9.5 42.5v503q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="napostrophe" unicode=""n" horiz-adv-x="405" +d="M-7 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="512" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10z" /> + <glyph glyph-name="fi" unicode="fi" horiz-adv-x="460" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM399 574h-82 +q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM399 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="fl" unicode="fl" horiz-adv-x="489" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM453 -6h-3 +q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="716" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM655 574h-82q-10 0 -10 10 +v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM655 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="745" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM709 -6h-3q-79 2 -111 35.5 +t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name=".notdef" horiz-adv-x="388" +d="M0 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10h-368q-10 0 -10 10zM59 61q0 -6 6 -6h259q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558zM168 224q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10h-48zM158 124v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10h-48q-10 0 -10 10z" /> + <glyph glyph-name=".null" horiz-adv-x="500" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="194" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="241" +d="M97 170q-10 0 -10 10l-22 490q0 10 10 10h91q10 0 10 -10l-22 -490q0 -10 -10 -10h-47zM68 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="278" +d="M173 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55zM50 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="509" +d="M90 10l21 206h-50q-10 0 -10 10v52q0 10 10 10h58l13 122h-52q-10 0 -10 10v52q0 10 10 10h59l20 188q2 10 11 10h57q11 0 9 -10l-20 -188h97l20 188q2 10 11 10h57q11 0 9 -10l-20 -188h58q10 0 10 -10v-52q0 -10 -10 -10h-65l-13 -122h59q10 0 10 -10v-52 +q0 -10 -10 -10h-67l-21 -206q-2 -10 -11 -10h-57q-11 0 -9 10l21 206h-97l-21 -206q-2 -10 -11 -10h-57q-11 0 -9 10zM196 288h97l13 122h-97z" /> + <glyph glyph-name="dollar" unicode="$" +d="M35 165q0 10 8 11l75 13q11 1 11 -9q1 -47 12.5 -69t37.5 -26v221l-28 11q-63 25 -86.5 67t-23.5 123q0 174 138 181v41q0 10 10 10h17q10 0 10 -10v-41q66 -6 97.5 -46t37.5 -114q1 -9 -9 -11l-73 -11q-9 -2 -11 8q-3 37 -12.5 55.5t-29.5 23.5v-190l26 -10 +q63 -24 88.5 -67.5t25.5 -130.5q0 -100 -34 -149t-106 -54v-55q0 -10 -10 -10h-17q-10 0 -10 10v55q-72 4 -106.5 46.5t-37.5 126.5zM179 419v175q-40 -8 -40 -83q0 -40 8 -59.5t32 -32.5zM216 86q22 5 32 26t10 69q0 46 -9.5 70.5t-32.5 38.5v-204z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="674" +d="M174 1l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10h-54q-10 0 -7 10zM161 328q-74 0 -93 61q-8 24 -8 118q0 95 8 118q19 61 93 61t93 -61q8 -23 8 -118q0 -94 -8 -118q-19 -61 -93 -61zM161 392q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17 +q-3 -9 -3 -98t3 -98q5 -17 25 -17zM420 55q-8 23 -8 118q0 94 8 118q19 61 93 61t93 -61q8 -24 8 -118q0 -95 -8 -118q-19 -61 -93 -61t-93 61zM488 75q5 -17 25 -17t25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="553" +d="M63 143q0 47 28.5 96t92.5 124q-42 68 -58.5 108t-16.5 77q0 63 40.5 102t104.5 39t104.5 -39t40.5 -102q0 -39 -21.5 -82t-80.5 -112l71 -119l45 77q5 8 13 3l55 -31q8 -5 3 -14l-67 -117l23 -38q14 -25 32 -25h3q10 0 10 -10v-70q0 -10 -10 -10h-30q-28 0 -41.5 8 +t-26.5 30l-16 26q-58 -73 -145 -73q-71 0 -112 41t-41 111zM249 437q35 41 46.5 64.5t11.5 49.5q0 58 -52 58t-52 -58q0 -34 46 -114zM158 145q0 -31 17.5 -49t46.5 -18q46 0 92 66l-82 137q-40 -47 -57 -77.5t-17 -58.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="155" +d="M50 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="271" +d="M161 -74q-96 186 -96 402t96 402q3 10 13 10h49q10 0 7 -10q-63 -191 -63 -402t63 -402q3 -10 -7 -10h-49q-10 0 -13 10z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="271" +d="M41 -74q63 191 63 402t-63 402q-3 10 7 10h50q8 0 13 -10q95 -187 95 -402t-95 -402q-5 -10 -13 -10h-50q-10 0 -7 10z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="328" +d="M144 392q-10 0 -10 10l1 84l-59 -36q-8 -5 -13 4l-20 35q-5 9 3 14l59 33l-59 33q-8 5 -3 14l20 35q5 9 13 4l59 -36l-1 84q0 10 10 10h40q10 0 10 -10l-2 -84l60 36q8 5 13 -4l20 -35q5 -9 -3 -14l-60 -33l60 -33q8 -5 3 -14l-20 -35q-5 -9 -13 -4l-60 35l2 -83 +q0 -10 -10 -10h-40z" /> + <glyph glyph-name="plus" unicode="+" +d="M153 123v102q0 6 -6 6h-101q-10 0 -10 10v70q0 10 10 10h101q6 0 6 6v102q0 10 10 10h73q10 0 10 -10v-102q0 -6 6 -6h100q10 0 10 -10v-70q0 -10 -10 -10h-100q-6 0 -6 -6v-102q0 -10 -10 -10h-73q-10 0 -10 10z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="191" +d="M46 -93v202q0 10 10 10h79q10 0 10 -10v-82q0 -17 -8 -28l-71 -95q-4 -6 -11 -6q-9 0 -9 9z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="368" +d="M52 218q-10 0 -10 10v75q0 10 10 10h264q10 0 10 -10v-75q0 -10 -10 -10h-264z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="197" +d="M46 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="245" +d="M21 1l125 678q2 10 11 10h57q11 0 9 -10l-125 -678q-1 -10 -11 -10h-57q-11 0 -9 10z" /> + <glyph glyph-name="zero" unicode="0" +d="M57 84q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93q-54 0 -91 24t-51 69zM154 115q10 -31 45 -31q36 0 46 31q5 16 5 225t-5 225q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225t6 -225z" /> + <glyph glyph-name="one" unicode="1" +d="M167 10v552h-2l-85 -60q-4 -3 -7.5 -1.5t-3.5 7.5v85q0 9 10 17l87 64q9 6 18 6h75q10 0 10 -10v-660q0 -10 -10 -10h-82q-10 0 -10 10z" /> + <glyph glyph-name="two" unicode="2" +d="M49 10v71q0 9 5 20l169 304q26 45 26 112q0 33 -4 46q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -62q0 -12 -12 -10l-78 7q-9 2 -9 12q0 59 8 84q32 95 143 95t142 -94q9 -29 9 -78q0 -54 -9.5 -88t-32.5 -75l-149 -260v-1h181q10 0 10 -10v-73q0 -10 -10 -10h-282 +q-10 0 -10 10z" /> + <glyph glyph-name="three" unicode="3" +d="M56 86q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -43 4 -56q11 -33 46 -33q36 0 47 32q4 13 4 79q0 70 -4 81q-10 30 -50 30h-15q-10 0 -10 10v72q0 10 10 10h15q41 0 50 29q4 11 4 73q0 51 -4 64q-11 32 -47 32q-35 0 -46 -33q-4 -13 -4 -56q0 -12 -12 -10l-77 7 +q-10 1 -10 12q0 50 9 78q30 95 141 95q112 0 143 -93q9 -28 9 -96q0 -65 -7 -86q-10 -34 -49 -58v-2q39 -24 49 -58q7 -21 7 -101q0 -83 -9 -111q-31 -93 -143 -93q-111 0 -141 95z" /> + <glyph glyph-name="four" unicode="4" +d="M34 101q-10 0 -10 10v72q0 5 2 11l140 478q3 8 12 8h83q11 0 8 -11l-140 -473v-2h86q6 0 6 6v180q0 10 10 10h82q10 0 10 -10v-180q0 -6 5 -6h34q10 0 10 -10v-73q0 -10 -10 -10h-33q-6 0 -6 -6v-85q0 -10 -10 -10h-82q-10 0 -10 10v85q0 6 -6 6h-181z" /> + <glyph glyph-name="five" unicode="5" +d="M57 86q-8 25 -8 68q0 10 9 12l78 8q12 2 12 -10q0 -34 4 -47q11 -33 46 -33q36 0 47 32q4 12 4 101q0 88 -4 100q-10 32 -47 32q-34 0 -46 -30q-4 -9 -15 -9h-68q-10 0 -10 10v350q0 10 10 10h272q10 0 10 -10v-73q0 -10 -10 -10h-184q-6 0 -6 -6v-166h1q26 28 73 28 +q90 0 116 -80q10 -31 10 -146q0 -104 -9 -132q-31 -94 -143 -94q-110 0 -142 95z" /> + <glyph glyph-name="six" unicode="6" +d="M56 87q-9 28 -9 111q0 69 6.5 107t25.5 86l107 279q4 10 14 10h83q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96q-113 0 -143 96zM153 117q11 -33 46 -33q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -79q0 -68 4 -81z" /> + <glyph glyph-name="seven" unicode="7" +d="M82 13l169 572v2h-104q-6 0 -6 -6v-64q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-74q0 -5 -2 -11l-167 -575q-3 -10 -13 -10h-83q-10 0 -6 13z" /> + <glyph glyph-name="eight" unicode="8" +d="M56 87q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96q-113 0 -143 96zM199 403q37 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q11 -33 46 -33zM153 117q11 -33 46 -33q36 0 47 33q4 13 4 80t-4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79t4 -80z" /> + <glyph glyph-name="nine" unicode="9" +d="M109 11l103 270l-2 2q-10 -6 -34 -6q-91 0 -119 91q-10 32 -10 114t9 111q30 96 143 96q112 0 144 -96q9 -28 9 -111q0 -68 -6.5 -106t-25.5 -87l-107 -279q-4 -10 -14 -10h-83q-12 0 -7 11zM199 370q37 0 47 33q4 12 4 79q0 68 -4 81q-11 33 -47 33q-35 0 -46 -33 +q-4 -13 -4 -81q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="213" +d="M64 363q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85zM54 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="213" +d="M64 363q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85zM57 -93v202q0 10 10 10h79q10 0 10 -10v-82q0 -17 -8 -28l-71 -95q-5 -6 -11 -6q-9 0 -9 9z" /> + <glyph glyph-name="less" unicode="<" +d="M46 231q-10 4 -10 15v60q0 11 10 15l306 123q10 3 10 -7v-74q0 -9 -10 -13l-191 -73v-2l191 -73q10 -4 10 -13v-74q0 -10 -10 -7z" /> + <glyph glyph-name="equal" unicode="=" +d="M46 328q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10h-306zM46 135q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10h-306z" /> + <glyph glyph-name="greater" unicode=">" +d="M46 108q-10 -3 -10 7v74q0 9 10 13l192 73v2l-192 73q-10 4 -10 13v74q0 10 10 7l306 -123q10 -4 10 -15v-60q0 -11 -10 -15z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="391" +d="M140 170q-10 0 -10 10v75q0 33 19 68l56 103q25 47 25 102q0 23 -4 36q-11 32 -46 32t-47 -32q-4 -13 -4 -63q0 -12 -11 -10l-78 7q-10 1 -10 12q0 58 9 84q15 44 53 69.5t90 25.5q54 0 90 -25.5t51 -69.5q9 -27 9 -66q0 -63 -28 -118l-56 -105q-16 -30 -16 -55v-70 +q0 -10 -10 -10h-82zM129 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10h-84q-10 0 -10 10z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="661" +d="M50 72q-19 57 -19 196t19 196q31 93 105 144.5t176 51.5q101 0 175 -51.5t105 -144.5q19 -57 19 -196q0 -98 -10 -128q-27 -81 -114 -81q-80 0 -107 65h-1q-13 -34 -34.5 -49.5t-60.5 -15.5q-70 0 -91 66q-10 29 -10 139t10 139q21 66 89 66q53 0 73 -45h2v28q0 10 10 10 +h64q10 0 10 -10v-263q0 -57 46 -57q33 0 42 30q4 12 4 106q0 131 -15 178q-22 68 -76 105t-130 37q-77 0 -131 -37t-76 -105q-15 -47 -15 -178t15 -178q22 -67 76 -104.5t131 -37.5q92 0 152 43q8 5 14 -3l28 -39q5 -9 -3 -14q-83 -59 -191 -59q-102 0 -176 51.5t-105 144.5 +zM289 166q11 -29 42 -29q32 0 41 29q4 12 4 98t-4 98q-9 29 -41 29q-31 0 -42 -29q-4 -12 -4 -98t4 -98z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="427" +d="M53 10v660q0 10 10 10h149q91 0 133.5 -42.5t42.5 -133.5q0 -112 -79 -147v-2q87 -26 87 -155q0 -110 -47.5 -155t-150.5 -45h-135q-10 0 -10 10zM166 396h36q45 0 62 19t17 74t-17 74.5t-62 19.5h-36q-6 0 -6 -6v-175q0 -6 6 -6zM160 103q0 -6 6 -6h36q48 0 67 22.5 +t19 81.5t-18.5 81t-67.5 22h-36q-6 0 -6 -6v-195z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="443" +d="M53 10v660q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109h-157q-10 0 -10 10zM160 103q0 -6 6 -6h43q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-474z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="381" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="376" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-184q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-274q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="426" +d="M54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74 +q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="447" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-268q0 -6 6 -6h115q6 0 6 6v268q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="354" +d="M16 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="441" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-281l137 283q4 8 13 8h91q4 0 5.5 -3t-0.5 -7l-136 -265l157 -395q4 -10 -5 -10h-93q-8 0 -11 7l-113 287l-45 -93v-191q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="372" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="558" +d="M53 10v660q0 10 10 10h87q13 0 16 -10l113 -383h4l110 383q3 10 16 10h86q10 0 10 -10v-660q0 -10 -10 -10h-77q-10 0 -10 10v430h-6l-88 -309q-3 -10 -13 -10h-44q-10 0 -13 10l-88 309h-6v-430q0 -10 -10 -10h-77q-10 0 -10 10z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="461" +d="M53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="425" +d="M150 0h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144 -48.5t49 -160.5q0 -110 -49.5 -159.5t-143.5 -49.5h-34q-6 0 -6 -6v-246q0 -10 -10 -10zM200 359q47 0 66.5 24.5t19.5 87.5t-19.5 87.5t-66.5 24.5h-34q-6 0 -6 -6v-212q0 -6 6 -6h34z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="429" +d="M419 35l-43 -53q-7 -7 -14 0l-47 40q-40 -31 -100 -31q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-4 -178.5t-17 -71.5l50 -41q8 -6 2 -14zM215 87q18 0 30 4l-50 41q-8 6 -2 14l34 41q7 9 15 1 +l38 -34h2v186q0 186 -9 214q-12 38 -58 38q-47 0 -59 -38q-7 -22 -7 -214q0 -193 7 -214q5 -18 21 -28.5t38 -10.5z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="436" +d="M404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="375" +d="M231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="401" +d="M239 0h-77q-8 0 -10 10l-135 660q-2 10 9 10h86q9 0 10 -10l79 -459h3l76 459q1 10 11 10h84q11 0 9 -10l-135 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="579" +d="M445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="402" +d="M380 0h-88q-8 0 -11 10l-79 216h-2l-79 -216q-3 -10 -11 -10h-88q-11 0 -8 10l133 345l-121 315q-3 10 8 10h88q8 0 11 -10l67 -193h2l67 193q3 10 11 10h88q11 0 8 -10l-122 -315l134 -345q3 -10 -8 -10z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="370" +d="M326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="247" +d="M197 -84h-135q-10 0 -10 10v804q0 10 10 10h135q10 0 10 -10v-63q0 -10 -10 -10h-46q-6 0 -6 -6v-646q0 -6 6 -6h46q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="245" +d="M214 -9h-57q-10 0 -11 10l-125 678q-2 10 9 10h57q9 0 11 -10l125 -678q2 -10 -9 -10z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="247" +d="M185 -84h-135q-10 0 -10 10v63q0 10 10 10h45q6 0 6 6v646q0 6 -6 6h-45q-10 0 -10 10v63q0 10 10 10h135q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="408" +d="M364 263h-74q-9 0 -13 10l-72 263h-2l-71 -263q-4 -10 -13 -10h-75q-10 0 -7 10l122 397q3 10 14 10h62q11 0 14 -10l122 -397q3 -10 -7 -10z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="411" +d="M411 -128h-411v57h411v-57z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="415" +d="M287 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="401" +d="M143 0h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-237h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-39q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="357" +d="M188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v237q0 10 10 10h82q10 0 10 -10v-660q0 -10 -10 -10zM141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34 +q-5 -17 -5 -122z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="256" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-236h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM11 -180h-15q-10 0 -10 10v72q0 10 10 10l14 1q22 2 31.5 13.5t9.5 42.5v503q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="396" +d="M376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-383l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286q5 -10 -6 -10z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="233" +d="M197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="610" +d="M553 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q68 0 93 -53h1q34 53 101 53q122 0 122 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="401" +d="M143 -180h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-39h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-219q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="401" +d="M340 -180h-82q-10 0 -10 10v219h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-642q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="295" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="350" +d="M176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44 +q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="255" +d="M219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="362" +d="M216 0h-70q-8 0 -11 10l-119 462q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 8 -10l-119 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="541" +d="M403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="365" +d="M345 0h-84q-9 0 -13 8l-66 145h-1l-65 -145q-4 -8 -14 -8h-82q-10 0 -5 11l116 237l-109 223q-6 11 5 11h82q10 0 14 -8l61 -131h1l57 131q4 8 14 8h82q10 0 5 -11l-110 -223l117 -237q6 -11 -5 -11z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="320" +d="M286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="312" +d="M262 -84h-28q-56 0 -87 31t-31 88v184q0 36 -12.5 53t-43.5 17q-10 0 -10 10v63q0 10 10 10q31 0 43.5 17t12.5 53v179q0 57 31 88t87 31h28q10 0 10 -10v-63q0 -10 -10 -10h-10q-42 0 -42 -46v-148q0 -62 -10.5 -89.5t-44.5 -41.5v-3q34 -14 44.5 -41.5t10.5 -89.5v-153 +q0 -46 42 -46h10q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="281" +d="M171 -84h-61q-10 0 -10 10v804q0 10 10 10h61q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="312" +d="M77 -84h-27q-10 0 -10 10v63q0 10 10 10h9q42 0 42 46v153q0 62 10.5 89.5t45.5 41.5v3q-35 14 -45.5 41.5t-10.5 89.5v148q0 46 -42 46h-9q-10 0 -10 10v63q0 10 10 10h27q57 0 88 -31t31 -88v-179q0 -36 12.5 -53t42.5 -17q10 0 10 -10v-63q0 -10 -10 -10 +q-30 0 -42.5 -17t-12.5 -53v-184q0 -57 -31 -88t-88 -31z" /> + <glyph glyph-name="asciitilde" unicode="~" +d="M261 213q-32 0 -70 24q-34 21 -47 21q-15 0 -25 -8.5t-24 -32.5q-4 -7 -13 -2l-47 25q-9 5 -4 15q41 84 106 84q32 0 70 -24q34 -21 47 -21q16 0 26 8.5t24 32.5q4 7 13 2l46 -25q9 -5 4 -15q-40 -84 -106 -84z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="194" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="241" +d="M144 312q10 0 10 -10l22 -490q0 -10 -10 -10h-91q-10 0 -10 10l22 490q0 10 10 10h47zM173 472v-99q0 -10 -10 -10h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10z" /> + <glyph glyph-name="cent" unicode="¢" +d="M212 -99h-17q-10 0 -10 10v81q-99 6 -127 94q-12 37 -12 155t12 155q28 88 127 94v81q0 10 10 10h17q10 0 10 -10v-81q114 -11 130 -122q2 -11 -7 -12l-77 -15q-11 -2 -12 7q-7 39 -34 47v-308q27 8 34 46q1 9 12 7l77 -14q9 -1 7 -12q-15 -111 -130 -122v-81 +q0 -10 -10 -10zM153 116q8 -24 32 -30v309q-25 -4 -32 -29q-5 -16 -5 -125t5 -125z" /> + <glyph glyph-name="sterling" unicode="£" +d="M359 0h-302q-10 0 -10 10v73q0 5 3 10q27 36 27 91v93q0 6 -6 6h-29q-10 0 -10 10v53q0 10 10 10h29q6 0 6 6v172q0 73 36.5 114t108.5 41q130 0 144 -141q2 -10 -8 -12l-77 -13q-9 -2 -11 8q-3 35 -13.5 50t-33.5 15q-44 0 -44 -60v-174q0 -6 6 -6h89q10 0 10 -10v-53 +q0 -10 -10 -10h-89q-6 0 -6 -6v-93q0 -60 -25 -89v-2h205q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="currency" unicode="¤" +d="M353 204l-34 -35q-7 -7 -14 0l-37 36q-33 -18 -69 -18q-40 0 -70 18l-36 -36q-7 -7 -14 0l-35 35q-6 6 0 14l37 37q-17 31 -17 68q0 38 18 68l-37 37q-7 7 0 14l35 35q7 7 14 0l36 -37q30 18 69 18q37 0 70 -18l37 37q7 7 14 0l34 -35q7 -7 0 -14l-37 -37q18 -33 18 -68 +q0 -37 -18 -70l36 -35q6 -8 0 -14zM199 257q29 0 47 18.5t18 47.5t-18 47.5t-47 18.5q-28 0 -46 -18.5t-18 -47.5t18 -47.5t46 -18.5z" /> + <glyph glyph-name="yen" unicode="¥" +d="M240 0h-81q-10 0 -10 10v110q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h88q6 0 6 6v43q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h78v3l-109 338q-3 10 8 10h85q9 0 12 -10l71 -263h3l69 263q3 10 12 10h83q11 0 8 -10l-109 -338v-3h77q10 0 10 -10v-54q0 -10 -10 -10 +h-87q-6 0 -6 -6v-43q0 -6 6 -6h87q10 0 10 -10v-54q0 -10 -10 -10h-87q-6 0 -6 -6v-110q0 -10 -10 -10z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="281" +d="M171 388h-61q-10 0 -10 10v332q0 10 10 10h61q10 0 10 -10v-332q0 -10 -10 -10zM171 -84h-61q-10 0 -10 10v336q0 10 10 10h61q10 0 10 -10v-336q0 -10 -10 -10z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="467" +d="M231 -189q-102 0 -128 82q-8 24 -8 66q0 9 8 9l73 7q8 0 8 -9q0 -30 5 -45q8 -27 43 -27q33 0 43 27q5 15 5 40q0 32 -5 47q-11 35 -86 61t-96 89q-13 39 -13 94q0 45 10 74q18 56 69 75v1q-37 16 -53 60q-9 31 -9 75t8 68q27 84 130 84q100 0 126 -82q9 -27 9 -66 +q0 -9 -8 -9l-73 -7q-9 0 -9 9q0 33 -4 45q-8 27 -40 27q-33 0 -41 -27q-4 -12 -4 -42q0 -27 5 -42q11 -36 83 -60q74 -25 96 -88q12 -37 12 -95q0 -42 -9 -74q-18 -56 -69 -75v-1q41 -17 55 -60q10 -29 10 -77q0 -43 -9 -70q-27 -84 -134 -84zM234 150q41 0 53 38q6 20 6 64 +q0 46 -6 65q-12 38 -53 38q-40 0 -54 -38q-6 -19 -6 -65q0 -44 6 -64q13 -38 54 -38z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="415" +d="M316 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="706" +d="M353 -9q-108 0 -184.5 53.5t-108.5 149.5q-19 59 -19 146t19 146q32 96 108.5 149.5t184.5 53.5t184.5 -53.5t108.5 -149.5q19 -59 19 -146t-19 -146q-32 -96 -108.5 -149.5t-184.5 -53.5zM353 59q83 0 140 39.5t81 112.5q17 55 17 129t-17 129q-24 73 -81 112.5 +t-140 39.5t-140 -39.5t-81 -112.5q-17 -55 -17 -129t17 -129q24 -73 81 -112.5t140 -39.5zM357 143q-87 0 -113 76q-9 27 -9 121t9 121q26 76 113 76q47 0 79 -25t37 -64q2 -8 -5 -10l-61 -11q-7 -2 -9 5q-8 32 -41 32q-29 0 -38 -27q-4 -12 -4 -97t4 -97q9 -27 38 -27 +q33 0 41 32q2 7 9 5l61 -11q7 -2 5 -10q-5 -39 -37 -64t-79 -25z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="282" +d="M231 392h-45q-10 0 -10 10v18h-2q-13 -32 -58 -32q-35 0 -55.5 22t-20.5 63q0 50 26.5 74t72.5 24h31q6 0 6 6v7q0 41 -44 41q-23 0 -52 -17q-10 -5 -13 5l-16 38q-3 7 6 13q38 24 86 24q49 0 73.5 -24t24.5 -77v-185q0 -10 -10 -10zM138 445q16 0 27 10t11 27v30 +q0 6 -6 6h-23q-42 0 -42 -37q0 -36 33 -36z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="485" +d="M415 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-79 -79q-4 -4 0 -8l79 -79q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5zM214 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-78 -79q-4 -4 0 -8l78 -79 +q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M352 144h-73q-10 0 -10 10v71q0 6 -6 6h-217q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-157q0 -10 -10 -10z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="368" +d="M316 218h-264q-10 0 -10 10v75q0 10 10 10h264q10 0 10 -10v-75q0 -10 -10 -10z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="434" +d="M217 303q-123 0 -160 110q-11 37 -11 80q0 42 11 79q37 110 160 110t160 -110q11 -37 11 -79q0 -43 -11 -80q-37 -110 -160 -110zM217 338q45 0 77.5 22.5t45.5 62.5q9 29 9 70q0 40 -9 69q-13 40 -45.5 62.5t-77.5 22.5q-46 0 -78 -22t-46 -63q-9 -29 -9 -69 +q0 -41 9 -70q14 -41 46 -63t78 -22zM196 388h-25q-7 0 -7 7v198q0 7 7 7h47q61 0 61 -62q0 -37 -25 -55l29 -88q3 -7 -5 -7h-28q-6 0 -9 7l-24 79h-10q-4 0 -4 -5v-74q0 -7 -7 -7zM215 509q13 0 18.5 6t5.5 22q0 15 -5.5 20.5t-18.5 5.5h-8q-4 0 -4 -4v-45q0 -5 4 -5h8z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="415" +d="M310 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="341" +d="M170 445q-51 0 -85.5 34t-34.5 85q0 52 34.5 86t85.5 34q52 0 86.5 -34t34.5 -86q0 -51 -34.5 -85t-86.5 -34zM170 502q27 0 43.5 17.5t16.5 44.5q0 28 -16.5 45.5t-43.5 17.5q-26 0 -42.5 -17.5t-16.5 -45.5q0 -27 16.5 -44.5t42.5 -17.5z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M236 137h-73q-10 0 -10 10v102q0 6 -6 6h-101q-10 0 -10 10v70q0 10 10 10h101q6 0 6 6v102q0 10 10 10h73q10 0 10 -10v-102q0 -6 6 -6h100q10 0 10 -10v-70q0 -10 -10 -10h-100q-6 0 -6 -6v-102q0 -10 -10 -10zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10 +v-69q0 -10 -10 -10z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="281" +d="M238 430h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="281" +d="M139 422q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="415" +d="M185 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="mu" unicode="μ" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="510" +d="M440 -180h-61q-10 0 -10 10v759q0 6 -6 6h-54q-6 0 -6 -6v-759q0 -10 -10 -10h-61q-10 0 -10 10v428q-72 6 -117 65.5t-45 145.5q0 90 53 150.5t141 60.5h186q10 0 10 -10v-840q0 -10 -10 -10z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="197" +d="M141 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="415" +d="M139 -145l61 145q4 10 13 10h59q10 0 7 -10l-51 -145q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="281" +d="M191 430h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="287" +d="M144 386q-76 0 -97 63q-7 21 -7 88t7 88q21 63 97 63q75 0 96 -63q7 -21 7 -88t-7 -88q-21 -63 -96 -63zM144 449q26 0 32 21q4 12 4 67t-4 67q-6 21 -32 21q-27 0 -33 -21q-4 -12 -4 -67t4 -67q6 -21 33 -21z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="485" +d="M271 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l78 79q4 4 0 8l-78 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14zM70 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l79 79q4 4 0 8l-79 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14z +" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="740" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM619 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10 +h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="758" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM667 0h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -40q0 -12 -12 -10l-54 6 +q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="779" +d="M658 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10zM296 -9h-54 +q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34 +q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="391" +d="M251 312q10 0 10 -10v-75q0 -33 -19 -68l-56 -103q-25 -47 -25 -102q0 -23 4 -36q11 -32 46 -32t47 32q4 13 4 63q0 12 11 10l78 -7q10 -1 10 -12q0 -58 -9 -84q-15 -44 -53 -69.5t-90 -25.5q-54 0 -90 25.5t-51 69.5q-9 27 -9 66q0 63 28 118l56 105q16 30 16 55v70 +q0 10 10 10h82zM262 472v-99q0 -10 -10 -10h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM239 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z +" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM238 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM337 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM254 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24 +q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM318 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM166 769h-65 +q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM209 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65t-65 -26zM209 764 +q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="656" +d="M617 0h-278q-10 0 -10 10v131q0 6 -6 6h-157l-50 -137q-3 -10 -13 -10h-84q-10 0 -7 10l247 660q3 10 11 10h347q10 0 10 -10v-77q0 -10 -10 -10h-175q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h175q10 0 10 -10v-77 +q0 -10 -10 -10zM326 582l-127 -345h124q6 0 6 6v339h-3z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="387" +d="M112 -145l58 139q-89 15 -116 101q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-7 -138 -122 -159l-49 -140 +q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="381" +d="M237 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176 +q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="381" +d="M220 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176 +q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="381" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10zM330 750h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="381" +d="M310 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM158 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10 +v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM136 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM132 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM234 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM215 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM63 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="443" +d="M220 0h-157q-10 0 -10 10v287q0 6 -6 6h-26q-10 0 -10 10v60q0 10 10 10h26q6 0 6 6v281q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109zM209 97q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-188q0 -6 6 -6h57 +q10 0 10 -10v-60q0 -10 -10 -10h-57q-6 0 -6 -6v-194q0 -6 6 -6h43z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="461" +d="M275 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74 +q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="429" +d="M244 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106 +zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="429" +d="M230 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106z +M215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38zM342 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="429" +d="M259 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66 +q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="429" +d="M323 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM171 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106 +q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="multiply" unicode="×" +d="M342 180l-46 -47q-7 -7 -14 0l-79 79q-4 3 -8 0l-78 -79q-7 -7 -14 0l-47 47q-7 7 0 14l79 78q3 4 0 8l-79 78q-7 7 0 14l47 47q7 7 14 0l78 -79q4 -3 8 0l79 79q7 7 14 0l46 -47q7 -7 0 -14l-79 -78q-3 -4 0 -8l79 -78q7 -7 0 -14z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="429" +d="M67 -30h-27q-11 0 -6 10l35 82q-10 18 -15 35q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q69 0 113 -36l21 48q4 9 13 9h26q10 0 7 -10l-36 -82q11 -20 16 -35q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106q-71 0 -115 35l-20 -47 +q-4 -9 -13 -9zM150 340v-102l125 305l-3 11q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214zM215 88q45 0 57 38q7 22 7 214v101l-125 -304l3 -11q12 -38 58 -38z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="443" +d="M255 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497 +q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="443" +d="M248 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5 +t-124.5 -46.5z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM349 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3 +t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="443" +d="M330 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM178 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52 +v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM218 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="425" +d="M150 0h-87q-10 0 -10 10v660q0 10 10 10h87q10 0 10 -10v-104q0 -6 6 -6h34q95 0 144 -48.5t49 -160.5q0 -110 -49 -159.5t-144 -49.5h-34q-6 0 -6 -6v-126q0 -10 -10 -10zM201 239q46 0 65.5 24t19.5 88q0 63 -19.5 87.5t-65.5 24.5h-35q-6 0 -6 -6v-212q0 -6 6 -6h35z +" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="413" +d="M237 -4h-18q-10 0 -10 10v73q0 10 10 10h7q30 0 37 24q5 15 5 105q0 89 -5 104q-8 24 -37 24h-7q-10 0 -10 10v73q0 10 10 10h5q29 0 36 24q4 12 4 59q0 73 -55 73q-56 0 -56 -73v-512q0 -10 -10 -10h-82q-10 0 -10 10v501q0 84 38.5 131t118.5 47q75 0 116.5 -42 +t41.5 -117q0 -54 -11 -80t-42 -48v-2q36 -22 48 -59q9 -27 9 -123q0 -116 -11 -148q-23 -74 -122 -74z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM228 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM215 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM319 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM236 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM300 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM148 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM191 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z +" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="357" +d="M88 -145l59 140q-74 17 -98 91q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-3 -50 -32 -83.5t-77 -43.5 +l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM228 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="380" +d="M206 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7 +l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="380" +d="M318 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191 +q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="380" +d="M299 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM147 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191 +q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM135 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="204" +d="M131 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="204" +d="M230 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="204" +d="M211 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM59 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="385" +d="M310 574l-50 -16l22 -42q40 -76 53 -131.5t13 -153.5q0 -107 -11 -141q-15 -47 -53 -73t-92 -26t-91.5 26t-52.5 73q-11 34 -11 135q0 103 13 144q31 92 118 92q32 0 47 -11h1l-43 80l-67 -21q-8 -3 -11 6l-16 48q-3 9 7 12l55 17l-41 78q-5 10 6 10h81q9 0 15 -10 +l26 -50l62 20q8 3 11 -6l16 -48q3 -9 -7 -12zM192 85q36 0 49 35q5 18 5 105q0 91 -5 109q-13 35 -49 35t-48 -35q-5 -18 -5 -109q0 -87 5 -105q11 -35 48 -35z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10zM247 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61 +q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM224 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="385" +d="M213 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151z +M246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="385" +d="M320 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73 +t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM237 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="385" +d="M301 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM149 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151 +q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="divide" unicode="÷" +d="M199 382q-27 0 -44.5 17t-17.5 45q0 27 17.5 44t44.5 17t44.5 -17t17.5 -44q0 -28 -17.5 -45t-44.5 -17zM352 231h-306q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-70q0 -10 -10 -10zM199 47q-27 0 -44.5 17t-17.5 44q0 28 17.5 45t44.5 17t44.5 -17t17.5 -45 +q0 -27 -17.5 -44t-44.5 -17z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26t-92 26l-19 -37q-5 -10 -13 -10h-22q-12 0 -7 10l33 64q-17 20 -24 46q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 93 -26l19 37q5 10 13 10h22q12 0 7 -10l-33 -65q15 -19 24 -45q11 -34 11 -151zM138 241 +v-72l99 206q-14 23 -45 23q-38 0 -49 -34q-5 -18 -5 -123zM247 241v69l-99 -204q14 -22 44 -22q39 0 50 34q5 18 5 123z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM233 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125 +q5 -10 -6 -10z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="403" +d="M226 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-8 -10 -18 -10zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462 +q0 -10 -10 -10z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="403" +d="M329 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70 +q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="403" +d="M310 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM158 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317 +q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM212 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7 +l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="401" +d="M143 -180h-82q-10 0 -10 10v840q0 10 10 10h82q10 0 10 -10v-237h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-219q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM294 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86 +q0 -10 -10 -10zM142 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM312 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="amacron" unicode="ā" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM294 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM209 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45 +q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="abreve" unicode="ă" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="421" +d="M341 -190q-41 0 -65 21.5t-24 61.5q0 57 58 108q-4 2 -5 9l-26 137h-137l-26 -137q-2 -10 -11 -10h-85q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -6 -5 -10q-30 -20 -49.5 -45t-19.5 -46q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13 +q-25 -17 -60 -17zM261 237l-48 253h-3l-50 -253h101z" /> + <glyph glyph-name="aogonek" unicode="ą" horiz-adv-x="383" +d="M268 -190q-41 0 -65.5 21.5t-24.5 61.5q0 56 62 112q-1 1 -1 5v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5 +t35 -126.5v-316q0 -7 -7 -11q-68 -48 -68 -90q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM224 761h-55q-5 0 -7 3 +t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="cacute" unicode="ć" horiz-adv-x="357" +d="M207 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125 +q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM335 750h-60 +q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" horiz-adv-x="357" +d="M316 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9 +q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="387" +d="M236 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9 +l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" horiz-adv-x="357" +d="M188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36zM220 574h-82 +q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM230 747h-52 +q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ccaron" unicode="č" horiz-adv-x="357" +d="M214 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9 +q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="443" +d="M228 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109h-157q-10 0 -10 10zM160 103 +q0 -6 6 -6h43q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-474z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="401" +d="M388 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v237q0 10 10 10h82q10 0 10 -10v-660q0 -10 -10 -10z +M141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="443" +d="M220 0h-157q-10 0 -10 10v287q0 6 -6 6h-26q-10 0 -10 10v60q0 10 10 10h26q6 0 6 6v281q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109zM209 97q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-188q0 -6 6 -6h57 +q10 0 10 -10v-60q0 -10 -10 -10h-57q-6 0 -6 -6v-194q0 -6 6 -6h43z" /> + <glyph glyph-name="dcroat" unicode="đ" horiz-adv-x="399" +d="M350 533v-523q0 -10 -10 -10h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v100q0 6 -6 6h-73q-10 0 -10 10v58q0 10 10 10h73q6 0 6 6v47q0 10 10 10h82q10 0 10 -10v-47q0 -6 6 -6h20q10 0 10 -10v-58 +q0 -10 -10 -10h-20q-6 0 -6 -6zM141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="381" +d="M305 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77 +q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="emacron" unicode="ē" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM293 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="381" +d="M202 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10 +h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="ebreve" unicode="ĕ" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM190 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="381" +d="M242 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77 +q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="edotaccent" unicode="ė" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM232 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="381" +d="M264 -190q-41 0 -65 21.5t-24 61.5q0 53 56 107h-168q-10 0 -10 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-15 +q-29 -20 -48.5 -45.5t-19.5 -45.5q0 -24 19 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-23 -17 -60 -17z" /> + <glyph glyph-name="eogonek" unicode="ę" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-8 -39 -29 -63q-64 -102 -64 -136q0 -24 20 -24q10 0 18 5q9 6 13 -4 +l20 -46q3 -8 -5 -13q-25 -17 -60 -17q-41 0 -65 21.5t-24 61.5q0 48 38 99q-3 -1 -12 -1zM238 288q6 0 6 6q0 58 -6 74q-12 32 -47 32q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="381" +d="M228 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77 +q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="ecaron" unicode="ě" horiz-adv-x="380" +d="M216 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6 +q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="426" +d="M54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74 +q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106zM341 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" horiz-adv-x="400" +d="M328 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1 +q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5zM195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z +" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="426" +d="M213 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80 +q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gbreve" unicode="ğ" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35zM200 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="426" +d="M254 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5 +t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35zM242 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="426" +d="M176 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214 +q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" horiz-adv-x="400" +d="M236 572h-70q-10 0 -10 10v55q0 14 7 22l61 73q6 7 13 7q9 0 9 -10v-147q0 -10 -10 -10zM192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81 +q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5zM195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="447" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-268q0 -6 6 -6h115q6 0 6 6v268q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10zM350 750h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-236h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10zM335 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3 +t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="447" +d="M384 0h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10v475q0 6 -6 6h-19q-10 0 -10 10v60q0 10 10 10h19q6 0 6 6v93q0 10 10 10h87q10 0 10 -10v-93q0 -6 6 -6h115q6 0 6 6v93q0 10 10 10h87q10 0 10 -10v-93q0 -6 6 -6h19 +q10 0 10 -10v-60q0 -10 -10 -10h-19q-6 0 -6 -6v-475q0 -10 -10 -10zM281 396q6 0 6 6v83q0 6 -6 6h-115q-6 0 -6 -6v-83q0 -6 6 -6h115z" /> + <glyph glyph-name="hbar" unicode="ħ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v523q0 6 -6 6h-20q-10 0 -10 10v58q0 10 10 10h20q6 0 6 6v47q0 10 10 10h82q10 0 10 -10v-47q0 -6 6 -6h73q10 0 10 -10v-58q0 -10 -10 -10h-73q-6 0 -6 -6v-99h1 +q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM151 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19 +q-24 -24 -51 -24z" /> + <glyph glyph-name="itilde" unicode="ĩ" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM147 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19 +q-24 -24 -51 -24z" /> + <glyph glyph-name="Imacron" unicode="Ī" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM209 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="imacron" unicode="ī" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM205 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ibreve" unicode="Ĭ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM106 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="ibreve" unicode="ĭ" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM102 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Iogonek" unicode="Į" horiz-adv-x="213" +d="M100 -190q-41 0 -65.5 21.5t-24.5 61.5q0 54 56 107h-3q-10 0 -10 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -5 -3 -8q-63 -59 -63 -93q0 -24 19 -24q9 0 19 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="iogonek" unicode="į" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM93 -190q-41 0 -65 21.5t-24 61.5q0 55 56 107q-9 0 -9 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -5 -4 -9q-62 -59 -62 -92q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13 +q-25 -17 -60 -17z" /> + <glyph glyph-name="Idotaccent" unicode="İ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM148 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="354" +d="M16 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45zM374 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="204" +d="M11 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 31.5 13.5t9.5 41.5v502q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5zM230 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125 +q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="441" +d="M194 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-281l137 283q4 8 13 8h91q4 0 5.5 -3t-0.5 -7l-136 -265l157 -395q4 -10 -5 -10h-93q-8 0 -11 7l-113 287l-45 -93v-191 +q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="396" +d="M176 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-383l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286 +q5 -10 -6 -10z" /> + <glyph glyph-name="kgreenlandic" unicode="ĸ" horiz-adv-x="396" +d="M376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-185l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286q5 -10 -6 -10z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="372" +d="M139 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="233" +d="M129 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="372" +d="M151 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="233" +d="M98 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="372" +d="M208 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="233" +d="M205 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="372" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10zM335 246h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="286" +d="M197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10zM287 255h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="372" +d="M246 385l-86 -59v-223q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10v246l-36 -24q-4 -2 -7 -0.5t-3 5.5v78q0 9 10 16l36 25v314q0 10 10 10h87q10 0 10 -10v-245l86 60q4 2 7 0.5t3 -5.5v-79q0 -9 -10 -16z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="233" +d="M197 384l-44 -31v-213q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10h-3q-79 2 -111 35.5t-32 110.5v146l-27 -18q-4 -2 -7 -0.5t-3 5.5v75q0 9 10 16l27 18v288q0 10 10 10h82q10 0 10 -10v-222l44 31q4 2 7 0.5t3 -5.5v-74q0 -9 -10 -16z" /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="461" +d="M228 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74 +q-10 0 -10 10z" /> + <glyph glyph-name="nacute" unicode="ń" horiz-adv-x="405" +d="M209 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="461" +d="M204 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10 +z" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" horiz-adv-x="405" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="461" +d="M256 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10 +l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="ncaron" unicode="ň" horiz-adv-x="405" +d="M228 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82 +q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Eng" unicode="Ŋ" horiz-adv-x="461" +d="M250 -180h-11q-10 0 -10 10v77q0 9 10 10l10 1q53 5 53 58v6l-149 498h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10v660q0 10 10 10h106q11 0 14 -10l126 -461h5v461q0 10 10 10h74q10 0 10 -10v-684q0 -87 -38.5 -126.5t-119.5 -39.5z" /> + <glyph glyph-name="eng" unicode="ŋ" horiz-adv-x="405" +d="M216 -180h-11q-10 0 -10 10v72q0 10 10 10l10 1q22 2 31.5 13.5t9.5 42.5v358q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-377q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="429" +d="M317 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38 +q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="omacron" unicode="ō" horiz-adv-x="385" +d="M295 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241 +q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="429" +d="M214 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177 +t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="obreve" unicode="ŏ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM192 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38zM304 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107q-9 -10 -19 -10zM171 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" horiz-adv-x="385" +d="M280 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM147 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73 +q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="608" +d="M569 0h-280q-10 0 -10 10v11h-1q-26 -30 -81 -30q-110 0 -143 102q-8 24 -10.5 67.5t-2.5 179.5t2.5 179.5t10.5 67.5q33 102 143 102q55 0 81 -30h1v11q0 10 10 10h280q10 0 10 -10v-77q0 -10 -10 -10h-177q-6 0 -6 -6v-179q0 -6 6 -6h153q10 0 10 -10v-77 +q0 -10 -10 -10h-153q-6 0 -6 -6v-186q0 -6 6 -6h177q10 0 10 -10v-77q0 -10 -10 -10zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="589" +d="M399 -9q-70 0 -102 37h-2q-37 -37 -103 -37q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q65 0 103 -38h1q41 38 104 38q112 0 144 -98q11 -38 11 -177q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15 +q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM447 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="436" +d="M404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35zM206 761h-55 +q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="295" +d="M175 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="436" +d="M186 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294 +q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="295" +d="M65 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="436" +d="M217 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137 +q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="295" +d="M183 555h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6 +h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM221 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="sacute" unicode="ś" horiz-adv-x="350" +d="M191 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101 +t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM330 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" horiz-adv-x="350" +d="M304 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5 +t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="404" +d="M105 -145l58 139q-129 18 -132 175q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8q-3 87 -64 87 +q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5q0 -91 -31 -141t-101 -60l-49 -139q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="scedilla" unicode="ş" horiz-adv-x="350" +d="M78 -145l58 140q-48 9 -76.5 40.5t-33.5 78.5q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44 +q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -54 -28.5 -93t-80.5 -50l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM219 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="350" +d="M202 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5 +t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="375" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="255" +d="M111 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="375" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104 +q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="255" +d="M208 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="375" +d="M231 0h-87q-10 0 -10 10v343q0 6 -6 6h-60q-10 0 -10 10v71q0 10 10 10h60q6 0 6 6v121q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-121q0 -6 6 -6h60q10 0 10 -10v-71q0 -10 -10 -10h-60q-6 0 -6 -6v-343 +q0 -10 -10 -10z" /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="255" +d="M219 -6h-30q-64 0 -93.5 31t-29.5 102v128q0 6 -6 6h-21q-10 0 -10 10v56q0 10 10 10h21q6 0 6 6v55q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58q0 -10 -10 -10h-45q-6 0 -6 -6v-55 +q0 -6 6 -6h28q10 0 10 -10v-56q0 -10 -10 -10h-28q-6 0 -6 -6v-126q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="443" +d="M266 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511 +q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="utilde" unicode="ũ" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM246 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61 +q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="443" +d="M324 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="umacron" unicode="ū" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM304 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="443" +d="M221 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87 +q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="ubreve" unicode="ŭ" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM201 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49 +q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM221 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65 +t-65 -26zM221 764q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="uring" unicode="ů" horiz-adv-x="403" +d="M201 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM201 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150 +v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM308 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107 +q-9 -10 -19 -10zM175 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM289 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10z +M156 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="443" +d="M225 -190q-41 0 -65.5 21.5t-24.5 61.5q0 47 43 102q-60 11 -93 56t-33 122v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -76 -32.5 -121t-91.5 -57q-48 -55 -48 -86q0 -24 19 -24q10 0 18 5 +q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="uogonek" unicode="ų" horiz-adv-x="403" +d="M284 -190q-41 0 -65.5 21.5t-24.5 61.5q0 54 59 109q-3 3 -3 8v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -7 -7 -11q-29 -19 -48 -44.5t-19 -45.5q0 -24 19 -24 +q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="579" +d="M445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10zM416 750h-60q-10 0 -19 10l-48 60 +h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="541" +d="M397 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10 +l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM321 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM313 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60 +q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM302 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM150 769h-65q-10 0 -10 10v86q0 10 10 10h65 +q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="370" +d="M326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10zM202 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z +" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="320" +d="M187 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="370" +d="M229 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="320" +d="M286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10zM203 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="370" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10 +l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="320" +d="M188 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13 +l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="florin" unicode="ƒ" +d="M338 325h-78l-46 -343q-11 -84 -49.5 -123t-115.5 -39h-21q-10 0 -10 10v74q0 10 10 10h15q33 0 49 14t20 49l47 348h-67q-10 0 -10 10v62q0 10 10 10h78l15 111q11 84 49.5 123t115.5 39h21q10 0 10 -10v-74q0 -10 -10 -10h-15q-33 0 -49 -14t-20 -49l-16 -116h67 +q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="Aringacute" unicode="Ǻ" horiz-adv-x="421" +d="M239 773h-58q-5 0 -6 3t2 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-103 -95q-10 -10 -20 -10zM401 0h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10l127 569q3 9 10 10q-27 25 -27 67q0 39 25.5 64.5t64.5 25.5t64.5 -25.5t25.5 -64.5 +q0 -41 -28 -67q9 0 11 -10l124 -569q2 -10 -8 -10zM212 609q19 0 32 13.5t13 33.5t-13 33.5t-32 13.5t-32 -13.5t-13 -33.5t13 -33.5t32 -13.5zM210 490l-50 -253h101l-48 253h-3z" /> + <glyph glyph-name="aringacute" unicode="ǻ" horiz-adv-x="383" +d="M215 773h-58q-5 0 -6 3t2 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-104 -95q-10 -10 -19 -10zM327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28 +q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26z +M191 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="AEacute" unicode="Ǽ" horiz-adv-x="656" +d="M375 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM617 0h-278q-10 0 -10 10v131q0 6 -6 6h-157l-50 -137q-3 -10 -13 -10h-84q-10 0 -7 10l247 660q3 10 11 10h347q10 0 10 -10v-77q0 -10 -10 -10h-175q-6 0 -6 -6v-179 +q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h175q10 0 10 -10v-77q0 -10 -10 -10zM326 582l-127 -345h124q6 0 6 6v339h-3z" /> + <glyph glyph-name="aeacute" unicode="ǽ" horiz-adv-x="578" +d="M315 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28 +q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74 +q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="Oslashacute" unicode="Ǿ" horiz-adv-x="429" +d="M67 -30h-27q-11 0 -6 10l35 82q-10 18 -15 35q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q69 0 113 -36l21 48q4 9 13 9h26q10 0 7 -10l-36 -82q11 -20 16 -35q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106q-71 0 -115 35l-20 -47 +q-4 -9 -13 -9zM150 340v-102l125 305l-3 11q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214zM215 88q45 0 57 38q7 22 7 214v101l-125 -304l3 -11q12 -38 58 -38zM230 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="oslashacute" unicode="ǿ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26t-92 26l-19 -37q-5 -10 -13 -10h-22q-12 0 -7 10l33 64q-17 20 -24 46q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 93 -26l19 37q5 10 13 10h22q12 0 7 -10l-33 -65q15 -19 24 -45q11 -34 11 -151zM138 241 +v-72l99 206q-14 23 -45 23q-38 0 -49 -34q-5 -18 -5 -123zM247 241v69l-99 -204q14 -22 44 -22q39 0 50 34q5 18 5 123zM213 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="404" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16 +q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5z" /> + <glyph glyph-name="scommaaccent" unicode="ș" horiz-adv-x="350" +d="M139 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101 +t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="375" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="255" +d="M111 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessj" unicode="ȷ" horiz-adv-x="204" +d="M11 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 31.5 13.5t9.5 41.5v502q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="415" +d="M335 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="415" +d="M233 555h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" horiz-adv-x="415" +d="M310 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve" unicode="˘" horiz-adv-x="415" +d="M207 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="dotaccent" unicode="˙" horiz-adv-x="415" +d="M248 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="415" +d="M207 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM207 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="ogonek" unicode="˛" horiz-adv-x="415" +d="M220 -190q-41 0 -65 21.5t-24 61.5q0 55 56 107q10 10 18 10h75q5 0 6 -4t-3 -6q-30 -20 -49.5 -45.5t-19.5 -45.5q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="415" +d="M251 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="hungarumlaut" unicode="˝" horiz-adv-x="415" +d="M278 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM145 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="Delta" unicode="∆" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="pi" unicode="π" horiz-adv-x="428" +d="M390 -6h-9q-64 0 -92.5 30t-28.5 99v259q0 6 -6 6h-78q-6 0 -6 -6v-372q0 -10 -10 -10h-82q-10 0 -10 10v372q0 6 -6 6h-38q-10 0 -10 10v74q0 10 10 10h378q10 0 10 -10v-74q0 -10 -10 -10h-37q-6 0 -6 -6v-261q0 -21 6 -28t21 -7h4q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Wgrave" unicode="Ẁ" horiz-adv-x="579" +d="M318 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10 +l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wgrave" unicode="ẁ" horiz-adv-x="541" +d="M403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10zM299 555h-57q-10 0 -18 10 +l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="Wacute" unicode="Ẃ" horiz-adv-x="579" +d="M316 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443 +h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wacute" unicode="ẃ" horiz-adv-x="541" +d="M297 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1 +l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Wdieresis" unicode="Ẅ" horiz-adv-x="579" +d="M397 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM245 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86 +q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wdieresis" unicode="ẅ" horiz-adv-x="541" +d="M378 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM226 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84 +q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Ygrave" unicode="Ỳ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM231 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="ygrave" unicode="ỳ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM217 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81 +q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="408" +d="M382 225h-356q-10 0 -10 10v61q0 10 10 10h356q10 0 10 -10v-61q0 -10 -10 -10z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="594" +d="M568 225h-542q-10 0 -10 10v61q0 10 10 10h542q10 0 10 -10v-61q0 -10 -10 -10z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="171" +d="M121 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="171" +d="M49 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="171" +d="M49 -93q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="299" +d="M249 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10zM121 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="299" +d="M177 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7zM49 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="299" +d="M177 -94q-9 0 -9 9v170q0 10 10 10h71q10 0 10 -10v-74q0 -14 -8 -23l-62 -75q-6 -7 -12 -7zM49 -94q-9 0 -9 9v170q0 10 10 10h71q10 0 10 -10v-74q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="520" +d="M299 -180h-78q-10 0 -10 10v523q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v215q0 10 10 10h78q10 0 10 -10v-215q0 -6 6 -6h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-523q0 -10 -10 -10z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="520" +d="M299 -180h-78q-10 0 -10 10v185q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v266q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v185q0 10 10 10h78q10 0 10 -10v-185q0 -6 6 -6h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-266q0 -6 6 -6 +h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-185q0 -10 -10 -10z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="443" +d="M221 179q-55 0 -92 36.5t-37 92.5t37 92.5t92 36.5q56 0 93 -37t37 -92t-37 -92t-93 -37z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="591" +d="M535 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10zM338 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10zM141 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="932" +d="M234 -9h-54q-10 0 -7 10l252 678q4 10 13 10h55q10 0 7 -10l-253 -678q-4 -10 -13 -10zM161 328q-75 0 -94 61q-7 24 -7 118q0 95 7 118q19 61 94 61q74 0 93 -61q8 -23 8 -118q0 -94 -8 -118q-19 -61 -93 -61zM161 392q18 0 25 17q3 9 3 98t-3 98q-7 17 -25 17 +q-20 0 -25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17zM771 -6q-74 0 -93 61q-8 23 -8 118q0 94 8 118q19 61 93 61t93 -61q8 -24 8 -118q0 -95 -8 -118q-19 -61 -93 -61zM512 -6q-74 0 -93 61q-8 23 -8 118q0 94 8 118q19 61 93 61q75 0 93 -61q8 -24 8 -118q0 -95 -8 -118 +q-18 -61 -93 -61zM771 58q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17zM512 58q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="284" +d="M214 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-78 -79q-4 -4 0 -8l78 -79q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="284" +d="M70 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l79 79q4 4 0 8l-79 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="143" +d="M-31 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="zero.superior" unicode="⁰" horiz-adv-x="281" +d="M140 422q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 493q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="four.superior" unicode="⁴" horiz-adv-x="281" +d="M224 430h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.superior" unicode="⁵" horiz-adv-x="281" +d="M140 422q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.superior" unicode="⁶" horiz-adv-x="281" +d="M140 422q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 64t4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 493q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -8 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.superior" unicode="⁷" horiz-adv-x="281" +d="M131 430h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.superior" unicode="⁸" horiz-adv-x="281" +d="M140 422q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 677q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 493q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.superior" unicode="⁹" horiz-adv-x="281" +d="M146 430h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 657q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="zero.inferior" unicode="₀" horiz-adv-x="281" +d="M140 -164q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 -93q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.inferior" unicode="₁" horiz-adv-x="281" +d="M191 -156h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.inferior" unicode="₂" horiz-adv-x="281" +d="M238 -156h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10 +z" /> + <glyph glyph-name="three.inferior" unicode="₃" horiz-adv-x="281" +d="M139 -164q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -20 6 -53q0 -34 -4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.inferior" unicode="₄" horiz-adv-x="281" +d="M224 -156h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.inferior" unicode="₅" horiz-adv-x="281" +d="M140 -164q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.inferior" unicode="₆" horiz-adv-x="281" +d="M140 -164q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 64t4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 -93q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -7 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.inferior" unicode="₇" horiz-adv-x="281" +d="M131 -156h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.inferior" unicode="₈" horiz-adv-x="281" +d="M140 -164q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 91q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 -93q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.inferior" unicode="₉" horiz-adv-x="281" +d="M146 -156h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 71q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="Euro" unicode="€" +d="M222 -9q-108 0 -140 96q-11 36 -11 148q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6v43q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6q0 107 11 143q32 96 140 96q67 0 107 -38.5t45 -101.5q2 -11 -7 -12l-77 -15q-10 -2 -12 8q-8 66 -54 66 +q-35 0 -46 -34q-5 -15 -5 -112q0 -6 6 -6h130q10 0 10 -10l-10 -54q-1 -10 -10 -10h-120q-6 0 -6 -6v-43q0 -6 6 -6h115q10 0 10 -10l-10 -54q-1 -10 -10 -10h-105q-6 0 -6 -6q0 -102 5 -117q11 -34 46 -34q46 0 54 66q2 10 12 8l77 -15q9 -1 7 -12q-5 -63 -45 -101.5 +t-107 -38.5z" /> + <glyph glyph-name="afii61289" unicode="ℓ" horiz-adv-x="413" +d="M98 175q-7 -6 -14 1l-36 41q-7 7 1 14l78 75v204q0 86 35.5 133.5t99.5 47.5q54 0 87 -34t33 -93q0 -64 -37 -127t-116 -140v-172q0 -50 33 -50q15 0 34 14q9 7 14 -2l28 -41q6 -8 -3 -15q-47 -42 -101 -42q-107 0 -107 143v70zM229 538v-127q69 83 69 154q0 50 -32 50 +q-37 0 -37 -77z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="660" +d="M590 286h-52q-10 0 -10 10v202h-1l-39 -141q-3 -10 -12 -10h-29q-9 0 -12 10l-40 141h-1v-202q0 -10 -10 -10h-52q-10 0 -10 10v374q0 10 10 10h58q10 0 13 -10l59 -217h2l56 217q3 10 13 10h57q10 0 10 -10v-374q0 -10 -10 -10zM197 286h-57q-10 0 -10 10v306q0 6 -6 6 +h-54q-10 0 -10 10v52q0 10 10 10h197q10 0 10 -10v-52q0 -10 -10 -10h-54q-6 0 -6 -6v-306q0 -10 -10 -10z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="579" +d="M288 -9q-104 0 -168.5 72t-64.5 179t64.5 178t168.5 71q105 0 170 -69t66 -180h-366v-165q54 -52 130 -52q112 0 174 109l33 -21q-43 -65 -90 -93.5t-117 -28.5zM421 275v131q-60 55 -133 55q-77 0 -130 -55v-131h263z" /> + <glyph glyph-name="onethird" unicode="⅓" horiz-adv-x="758" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM569 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6 +q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65 +q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="twothirds" unicode="⅔" horiz-adv-x="816" +d="M284 274h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +M313 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM627 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7 +q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="oneeighth" unicode="⅛" horiz-adv-x="762" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM572 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5 +t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62q-10 -31 -37.5 -48.5t-66.5 -17.5zM572 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM572 63q20 0 26 17 +q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threeeighths" unicode="⅜" horiz-adv-x="802" +d="M611 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM611 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM611 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17zM296 -9h-54q-10 0 -7 10 +l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31 +q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="fiveeighths" unicode="⅝" horiz-adv-x="802" +d="M611 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM611 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM611 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17zM296 -9h-54q-10 0 -7 10 +l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10 +h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="seveneighths" unicode="⅞" horiz-adv-x="757" +d="M566 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM566 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM566 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17zM176 274h-62q-11 0 -8 10l106 322v3 +h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10zM250 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="partialdiff" unicode="∂" horiz-adv-x="412" +d="M181 -11q-67 0 -103.5 55t-36.5 147q0 99 43.5 164t116.5 65q48 0 76 -26h2q-3 99 -28 154.5t-69 55.5q-31 0 -58 -20q-9 -7 -14 2l-35 51q-5 8 3 14q54 40 112 40q88 0 134.5 -85.5t46.5 -237.5q0 -187 -50 -283t-140 -96zM188 77q79 0 90 225q-31 33 -64 33 +q-37 0 -59 -39t-22 -101q0 -118 55 -118z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="526" +d="M463 -180h-86q-10 0 -10 10v806q0 6 -6 6h-196q-6 0 -6 -6v-806q0 -10 -10 -10h-86q-10 0 -10 10v900q0 10 10 10h400q10 0 10 -10v-900q0 -10 -10 -10z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="486" +d="M437 -180h-387q-10 0 -10 10v74q0 5 2 9l175 405l-170 323q-3 6 -3 11v78q0 10 10 10h373q10 0 10 -10v-78q0 -10 -10 -10h-261l164 -309q3 -7 0 -14l-178 -401h285q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="minus" unicode="−" +d="M352 231h-306q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-70q0 -10 -10 -10z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="143" +d="M-31 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="197" +d="M141 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="568" +d="M325 -180h-66q-9 0 -12 10l-110 262q-3 6 -9 3l-58 -24q-10 -5 -13 4l-25 55q-5 10 4 13l131 58q10 5 14 -4l102 -245h3l183 778q3 10 12 10h67q11 0 8 -10l-219 -900q-3 -10 -12 -10z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="667" +d="M498 92q-47 0 -84 22t-81 73q-45 -52 -81.5 -73.5t-83.5 -21.5q-66 0 -108 42t-42 112q0 71 41.5 113t109.5 42q43 0 80 -22t84 -75q49 54 84 75.5t80 21.5q67 0 109.5 -42t42.5 -113q0 -70 -41.5 -112t-109.5 -42zM494 166q36 0 56.5 22.5t20.5 59.5q0 36 -21 57.5 +t-57 21.5q-24 0 -48.5 -17.5t-62.5 -63.5q40 -46 63.5 -63t48.5 -17zM172 166q24 0 49 18t63 63q-68 80 -110 80q-35 0 -56.5 -21.5t-21.5 -57.5q0 -38 20.5 -60t55.5 -22z" /> + <glyph glyph-name="integral" unicode="∫" horiz-adv-x="312" +d="M59 -180q-18 0 -25 1q-10 2 -10 10v76q0 10 10 10h17q28 0 41 19t13 61v560q0 183 148 183q18 0 25 -1q10 -2 10 -10v-76q0 -10 -10 -10h-16q-29 0 -42 -19t-13 -61v-560q0 -183 -148 -183z" /> + <glyph glyph-name="approxequal" unicode="≈" horiz-adv-x="414" +d="M269 306q-33 0 -71 25q-28 20 -45 20q-15 0 -25 -8t-24 -32q-5 -8 -14 -3l-47 25q-10 5 -4 15q24 44 48.5 64t57.5 20t71 -25q29 -21 45 -21t26 8.5t24 32.5q5 8 14 3l46 -25q10 -5 4 -15q-23 -44 -47.5 -64t-58.5 -20zM269 122q-33 0 -71 25q-28 20 -45 20q-15 0 -25 -8 +t-24 -32q-5 -8 -14 -3l-47 25q-10 5 -4 15q24 44 48.5 64t57.5 20t71 -25q28 -20 45 -20q16 0 26 8t24 32q5 8 14 3l46 -25q10 -5 4 -15q-23 -44 -47.5 -64t-58.5 -20z" /> + <glyph glyph-name="notequal" unicode="≠" +d="M352 328h-91l-48 -104h139q10 0 10 -10v-69q0 -10 -10 -10h-181l-34 -74q-4 -10 -13 -10h-55q-11 0 -8 10l34 74h-49q-10 0 -10 10v69q0 10 10 10h91l48 104h-139q-10 0 -10 10v69q0 10 10 10h181l35 74q4 10 13 10h55q12 0 7 -10l-35 -74h50q10 0 10 -10v-69 +q0 -10 -10 -10z" /> + <glyph glyph-name="lessequal" unicode="≤" +d="M352 127l-306 123q-10 3 -10 14v62q0 11 10 14l306 123q10 3 10 -7v-74q0 -9 -10 -13l-191 -73v-2l191 -73q10 -4 10 -13v-74q0 -10 -10 -7zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="greaterequal" unicode="≥" +d="M46 127q-10 -3 -10 7v74q0 9 10 13l192 73v2l-192 73q-10 4 -10 13v74q0 10 10 7l306 -123q10 -3 10 -14v-62q0 -11 -10 -14zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="lozenge" unicode="◊" horiz-adv-x="445" +d="M259 -52h-72q-10 0 -14 10l-151 364q-3 7 0 14l151 364q4 10 14 10h72q10 0 14 -10l150 -364q3 -7 0 -14l-150 -364q-4 -10 -14 -10zM225 51h2l107 278l-111 278h-2l-109 -278z" /> + <glyph glyph-name="uniF8FF" unicode="" horiz-adv-x="388" +d="M378 0h-368q-10 0 -10 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10zM324 55q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558q0 -6 6 -6h259zM216 224h-48q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10zM216 114h-48q-10 0 -10 10v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10z" /> + <glyph glyph-name="CR" horiz-adv-x="0" + /> + <glyph glyph-name="grave.cap" horiz-adv-x="415" +d="M296 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="acute.cap" horiz-adv-x="415" +d="M184 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="circumflex.cap" horiz-adv-x="415" +d="M335 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron.cap" horiz-adv-x="415" +d="M233 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="caron.alt" horiz-adv-x="415" +d="M172 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="tilde.cap" horiz-adv-x="415" +d="M251 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="dieresis.cap" horiz-adv-x="415" +d="M316 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="macron.cap" horiz-adv-x="415" +d="M310 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve.cap" horiz-adv-x="415" +d="M207 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="ring.cap" horiz-adv-x="415" +d="M207 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65t-65 -26zM207 764q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="hungarumlaut.cap" horiz-adv-x="415" +d="M280 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107q-9 -10 -19 -10zM147 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="dotaccent.cap" horiz-adv-x="415" +d="M248 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="commaaccent" horiz-adv-x="415" +d="M171 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="commaaccent.alt" horiz-adv-x="415" +d="M243 572h-70q-10 0 -10 10v55q0 14 7 22l61 73q6 7 13 7q9 0 9 -10v-147q0 -10 -10 -10z" /> + <glyph glyph-name="uni0394" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="uni03A9" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="uni03BC" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="exclam.sc" horiz-adv-x="232" +d="M140 170h-48q-10 0 -10 10l-22 332q0 10 10 10h92q10 0 10 -10l-22 -332q0 -10 -10 -10zM158 0h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="dollar.sc" horiz-adv-x="378" +d="M199 -53h-16q-10 0 -10 10v35q-66 4 -99 38.5t-38 99.5q0 11 8 12l70 13q9 2 11 -8q2 -34 13.5 -50t34.5 -19v146l-20 6q-59 17 -85.5 52.5t-26.5 98.5q0 68 34.5 106.5t97.5 42.5v27q0 10 10 10h16q10 0 10 -10v-27q113 -10 128 -134q0 -11 -8 -12l-67 -9q-9 -2 -11 8 +q-7 53 -42 60v-134l14 -4q64 -19 91 -55.5t27 -103.5q0 -146 -132 -154v-35q0 -10 -10 -10zM133 383q0 -24 8.5 -38.5t31.5 -24.5v124q-40 -7 -40 -61zM248 145q0 46 -39 66v-132q39 9 39 66z" /> + <glyph glyph-name="percent.sc" horiz-adv-x="664" +d="M236 -9h-53q-10 0 -7 10l239 519q4 10 13 10h53q10 0 7 -10l-239 -519q-4 -10 -13 -10zM166 256q-33 0 -57 15t-32 40q-7 20 -7 81q0 60 7 80q8 26 32 41t57 15q34 0 58 -15t32 -41q7 -24 7 -80t-7 -81q-8 -25 -32 -40t-58 -15zM166 318q17 0 22 15q3 9 3 59q0 48 -3 59 +q-5 14 -22 14q-16 0 -21 -14q-3 -11 -3 -59q0 -50 3 -59q5 -15 21 -15zM497 -7q-33 0 -57 15t-32 41q-7 20 -7 80t7 80q8 26 32 41t57 15q34 0 57.5 -15t31.5 -41q8 -22 8 -80t-8 -80q-8 -26 -31.5 -41t-57.5 -15zM497 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14 +q-16 0 -21 -14q-3 -9 -3 -59t3 -59q5 -14 21 -14z" /> + <glyph glyph-name="ampersand.sc" horiz-adv-x="491" +d="M425 -6h-30q-44 0 -63 25l-19 25q-52 -53 -125 -53q-64 0 -99.5 33t-35.5 88q0 38 18.5 74.5t70.5 89.5l-9 13q-32 43 -44 68t-12 52q0 53 37.5 87.5t97.5 34.5q59 0 96.5 -35t37.5 -87q0 -29 -17.5 -58.5t-69.5 -81.5l59 -75l39 61q5 8 14 4l54 -35q9 -5 4 -14l-56 -86 +l19 -23q13 -17 30 -17h3q10 0 10 -10v-70q0 -10 -10 -10zM171 412q0 -26 34 -74q48 48 48 74q0 16 -11 28.5t-29 12.5t-30 -12.5t-12 -28.5zM198 79q30 0 63 36l-67 90q-45 -47 -45 -81q0 -20 13 -32.5t36 -12.5z" /> + <glyph glyph-name="zero.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -87.5 23t-48.5 66q-10 30 -10 181t10 180q28 90 136 90t136 -90q10 -29 10 -180t-10 -181q-13 -43 -48.5 -66t-87.5 -23zM189 84q31 0 40 28q4 13 4 149q0 135 -4 148q-9 28 -40 28t-40 -28q-4 -13 -4 -148q0 -136 4 -149q9 -28 40 -28z" /> + <glyph glyph-name="one.sc" horiz-adv-x="378" +d="M247 0h-82q-10 0 -10 10v398h-1l-79 -44q-11 -6 -11 7v83q0 8 7 14l81 49q8 5 16 5h79q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="two.sc" horiz-adv-x="378" +d="M323 0h-270q-9 0 -9 8v72q0 7 3 11l159 207q25 34 25 82q0 20 -3 31q-9 26 -41 26t-41 -26q-3 -11 -3 -36q0 -12 -12 -10l-77 8q-10 1 -10 12q0 38 6 57q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -63q0 -77 -46 -135l-119 -150v-1h155q10 0 10 -10v-73 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.sc" horiz-adv-x="378" +d="M187 -9q-51 0 -87.5 23.5t-49.5 65.5q-6 19 -6 47q0 11 10 12l77 8q12 2 12 -10q0 -17 3 -26q10 -27 41 -27t41 27q3 9 3 45q0 28 -3 39q-9 25 -44 25h-13q-10 0 -10 10v73q0 10 10 10h13q36 0 44 24q3 9 3 35q0 28 -3 39q-9 26 -41 26t-41 -26q-3 -11 -3 -26 +q0 -12 -12 -10l-77 7q-10 1 -10 12q0 29 6 48q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -70q0 -30 -6 -48q-12 -34 -46 -53v-2q35 -20 46 -53q6 -18 6 -60q0 -49 -9 -76q-13 -43 -49 -66t-88 -23z" /> + <glyph glyph-name="four.sc" horiz-adv-x="378" +d="M302 0h-80q-10 0 -10 10v49q0 6 -6 6h-171q-10 0 -10 10v73q0 5 2 11l130 355q3 8 12 8h84q11 0 8 -11l-129 -350v-2h74q6 0 6 6v125q0 10 10 10h80q10 0 10 -10v-125q0 -6 5 -6h28q10 0 10 -10v-74q0 -10 -10 -10h-27q-6 0 -6 -6v-49q0 -10 -10 -10z" /> + <glyph glyph-name="five.sc" horiz-adv-x="378" +d="M187 -9q-52 0 -88 23t-49 66q-5 15 -5 33q0 11 10 12l76 8q11 1 13 -10l3 -13q9 -26 41 -26q30 0 39 27q4 12 4 56q0 43 -4 55q-9 27 -39 27q-28 0 -40 -18q-5 -8 -16 -8h-67q-10 0 -10 10v279q0 10 10 10h258q10 0 10 -10v-74q0 -10 -10 -10h-171q-6 0 -6 -6v-98h2 +q23 18 68 18q84 0 109 -77q8 -23 8 -98q0 -61 -9 -88q-13 -43 -49 -65.5t-88 -22.5z" /> + <glyph glyph-name="six.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 74q0 83 30 148l99 210q5 10 16 10h81q11 0 6 -11l-96 -198l2 -2q10 4 33 4q87 0 112 -79q9 -27 9 -82q0 -47 -9 -74q-13 -43 -49 -66t-88 -23zM189 84q30 0 40 27q4 12 4 43q0 29 -4 41q-9 27 -40 27t-40 -27q-4 -12 -4 -41 +q0 -31 4 -43q10 -27 40 -27z" /> + <glyph glyph-name="seven.sc" horiz-adv-x="378" +d="M165 0h-79q-12 0 -8 13l157 414v1h-90q-6 0 -6 -6v-37q0 -10 -10 -10h-73q-10 0 -10 10v127q0 10 10 10h270q10 0 10 -10v-75q0 -5 -2 -11l-154 -416q-4 -10 -15 -10z" /> + <glyph glyph-name="eight.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 76q0 39 7 62q14 39 42 54v2q-28 15 -42 54q-7 23 -7 50q0 37 9 64q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -64q0 -27 -7 -50q-14 -39 -42 -54v-2q28 -15 42 -54q7 -23 7 -62q0 -49 -9 -76q-13 -43 -49 -66t-88 -23zM189 319 +q30 0 40 27q4 14 4 32q0 19 -4 33q-9 26 -40 26t-40 -26q-4 -14 -4 -33q0 -18 4 -32q10 -27 40 -27zM189 84q30 0 40 27q4 12 4 45q0 32 -4 44q-9 27 -40 27t-40 -27q-4 -12 -4 -44q0 -33 4 -45q10 -27 40 -27z" /> + <glyph glyph-name="nine.sc" horiz-adv-x="378" +d="M190 0h-81q-11 0 -6 11l96 198l-2 2q-10 -4 -33 -4q-87 0 -112 79q-9 27 -9 82q0 47 9 74q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -74q0 -84 -30 -148l-99 -210q-5 -10 -16 -10zM189 300q31 0 40 27q4 12 4 41t-4 43q-9 26 -40 26t-40 -26q-4 -14 -4 -43t4 -41 +q9 -27 40 -27z" /> + <glyph glyph-name="question.sc" horiz-adv-x="341" +d="M210 168h-84q-10 0 -10 10v26q0 37 17 57l46 59q30 38 30 70q0 13 -3 22q-10 25 -41 25t-40 -26q-3 -8 -4 -31q0 -11 -10 -9l-80 8q-9 1 -9 10q0 32 9 59q13 40 49 61.5t86 21.5q51 0 87.5 -22.5t49.5 -63.5q8 -24 8 -51q0 -54 -30 -92l-46 -58q-15 -19 -15 -46v-20 +q0 -10 -10 -10zM210 0h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="a.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="b.sc" horiz-adv-x="401" +d="M190 0h-128q-10 0 -10 10v502q0 10 10 10h139q87 0 125.5 -32t38.5 -101q0 -92 -70 -116v-1q78 -16 78 -119q0 -82 -44.5 -117.5t-138.5 -35.5zM190 311q40 0 55 13.5t15 46.5t-15 46t-55 13h-30q-6 0 -6 -6v-107q0 -6 6 -6h30zM193 91q43 0 59.5 14.5t16.5 50.5 +t-16.5 50.5t-59.5 14.5h-33q-6 0 -6 -6v-118q0 -6 6 -6h33z" /> + <glyph glyph-name="c.sc" horiz-adv-x="384" +d="M198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="d.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v502q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-323q0 -6 6 -6h40z" /> + <glyph glyph-name="e.sc" horiz-adv-x="361" +d="M324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="f.sc" horiz-adv-x="359" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-107q0 -6 6 -6h142q10 0 10 -10v-73q0 -10 -10 -10h-142q-6 0 -6 -6v-200q0 -10 -10 -10z" /> + <glyph glyph-name="g.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5z" /> + <glyph glyph-name="h.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-194q0 -6 6 -6h104q6 0 6 6v194q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="i.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="j.sc" horiz-adv-x="335" +d="M125 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40z" /> + <glyph glyph-name="k.sc" horiz-adv-x="421" +d="M399 0h-87q-8 0 -12 7l-101 209l-45 -70v-136q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-212l126 215q4 7 14 7h85q4 0 5.5 -3t-0.5 -7l-127 -202l147 -300q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="l.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="m.sc" horiz-adv-x="530" +d="M468 0h-73q-10 0 -10 10v318h-5l-80 -225q-3 -10 -13 -10h-44q-10 0 -13 10l-80 225h-5v-318q0 -10 -10 -10h-73q-10 0 -10 10v502q0 10 10 10h82q13 0 17 -10l104 -283h4l101 283q4 10 17 10h81q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="n.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="o.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37z" /> + <glyph glyph-name="p.sc" horiz-adv-x="399" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41.5t44.5 -121.5q0 -79 -44.5 -120.5t-125.5 -41.5h-43q-6 0 -6 -6v-181q0 -10 -10 -10zM192 288q42 0 60.5 16.5t18.5 54.5t-18 54.5t-61 16.5h-32q-6 0 -6 -6v-130q0 -6 6 -6h32z" /> + <glyph glyph-name="q.sc" horiz-adv-x="404" +d="M380 16l-39 -38q-7 -7 -14 1l-35 39q-34 -27 -90 -27q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 171q15 46 55 72.5t95 26.5q56 0 96 -26.5t55 -72.5q11 -34 11 -171q0 -95 -4.5 -129t-19.5 -63l40 -39q6 -8 0 -14zM205 81q16 0 28 6l-39 40q-6 7 1 14l30 28q9 9 16 0 +l23 -27h2v119q0 119 -8 140q-11 37 -56 37q-44 0 -55 -37q-5 -16 -5 -140q0 -125 5 -141q12 -39 58 -39z" /> + <glyph glyph-name="r.sc" horiz-adv-x="414" +d="M381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="s.sc" horiz-adv-x="377" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="t.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10z" /> + <glyph glyph-name="u.sc" horiz-adv-x="421" +d="M210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="v.sc" horiz-adv-x="374" +d="M224 0h-74q-8 0 -10 10l-124 502q-2 10 9 10h81q10 0 11 -10l71 -340h3l69 340q1 10 11 10h79q10 0 8 -10l-124 -502q-2 -10 -10 -10z" /> + <glyph glyph-name="w.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10z" /> + <glyph glyph-name="x.sc" horiz-adv-x="384" +d="M362 0h-84q-10 0 -14 10l-71 156h-2l-71 -156q-4 -10 -14 -10h-84q-12 0 -7 11l124 262l-111 238q-6 11 7 11h82q10 0 14 -10l61 -139h2l61 139q4 10 14 10h80q13 0 7 -11l-110 -238l123 -262q5 -11 -7 -11z" /> + <glyph glyph-name="y.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10z" /> + <glyph glyph-name="z.sc" horiz-adv-x="347" +d="M305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="agrave.sc" horiz-adv-x="391" +d="M226 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z +" /> + <glyph glyph-name="aacute.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM223 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z +" /> + <glyph glyph-name="acircumflex.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM324 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="atilde.sc" horiz-adv-x="391" +d="M241 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81 +q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="adieresis.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM305 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM153 614h-65 +q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM300 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.sc" horiz-adv-x="391" +d="M196 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10 +l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aring.sc" horiz-adv-x="391" +d="M196 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM196 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81 +q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aringacute.sc" horiz-adv-x="391" +d="M222 702h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l130 486q-35 25 -35 73q0 39 26 64.5t65 25.5q38 0 64 -25.5t26 -64.5q0 -45 -34 -73 +l130 -486q3 -10 -8 -10zM150 569q0 -19 11.5 -32t30.5 -15h8q18 2 29.5 15t11.5 32q0 20 -13 33.5t-32 13.5q-20 0 -33 -13.5t-13 -33.5zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aogonek.sc" horiz-adv-x="391" +d="M315 -190q-41 0 -65.5 21.5t-24.5 61.5q0 52 61 109l-3 8l-21 87h-133l-20 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q1 -7 -4 -10q-30 -20 -49.5 -45t-19.5 -46q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13 +q-25 -17 -60 -17zM240 188l-42 179h-3l-43 -179h88z" /> + <glyph glyph-name="ae.sc" horiz-adv-x="587" +d="M549 0h-261q-10 0 -10 10v81q0 6 -6 6h-125l-33 -87q-3 -10 -13 -10h-84q-10 0 -7 10l199 502q3 10 12 10h328q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73 +q0 -10 -10 -10zM275 428l-93 -240h90q6 0 6 6v234h-3z" /> + <glyph glyph-name="aeacute.sc" horiz-adv-x="587" +d="M549 0h-261q-10 0 -10 10v81q0 6 -6 6h-125l-33 -87q-3 -10 -13 -10h-84q-10 0 -7 10l199 502q3 10 12 10h328q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73 +q0 -10 -10 -10zM275 428l-93 -240h90q6 0 6 6v234h-3zM323 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="cacute.sc" horiz-adv-x="384" +d="M217 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56 +q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="ccircumflex.sc" horiz-adv-x="384" +d="M198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-8 -65 -49.5 -100t-105.5 -35zM326 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="ccaron.sc" horiz-adv-x="384" +d="M224 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11 +l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="cdotaccent.sc" horiz-adv-x="384" +d="M239 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37 +q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="ccedilla.sc" horiz-adv-x="384" +d="M101 -145l59 140q-84 17 -108 95q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-7 -54 -37 -87.5t-77 -43.5l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="dcaron.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v502q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-323q0 -6 6 -6h40zM225 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60 +q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="dcroat.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v208q0 6 -6 6h-22q-10 0 -10 10v58q0 10 10 10h22q6 0 6 6v204q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-114q0 -6 6 -6h41 +q10 0 10 -10v-58q0 -10 -10 -10h-41q-6 0 -6 -6v-119q0 -6 6 -6h40z" /> + <glyph glyph-name="eth.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v208q0 6 -6 6h-22q-10 0 -10 10v58q0 10 10 10h22q6 0 6 6v204q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-114q0 -6 6 -6h41 +q10 0 10 -10v-58q0 -10 -10 -10h-41q-6 0 -6 -6v-119q0 -6 6 -6h40z" /> + <glyph glyph-name="egrave.sc" horiz-adv-x="361" +d="M228 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="eacute.sc" horiz-adv-x="361" +d="M206 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ecircumflex.sc" horiz-adv-x="361" +d="M324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10zM321 595h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ecaron.sc" horiz-adv-x="361" +d="M218 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142 +q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="edieresis.sc" horiz-adv-x="361" +d="M300 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM148 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6 +h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="emacron.sc" horiz-adv-x="361" +d="M294 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ebreve.sc" horiz-adv-x="361" +d="M191 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142 +q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="edotaccent.sc" horiz-adv-x="361" +d="M223 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="eogonek.sc" horiz-adv-x="361" +d="M256 -190q-41 0 -65 21.5t-24 61.5q0 53 56 107h-161q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10h-4 +q-30 -20 -49.5 -45t-19.5 -46q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -61 -17z" /> + <glyph glyph-name="gcircumflex.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM330 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="gbreve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM202 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="gdotaccent.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM244 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="gcommaaccent.sc" horiz-adv-x="404" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37 +q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5z" /> + <glyph glyph-name="hcircumflex.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-194q0 -6 6 -6h104q6 0 6 6v194q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM338 595h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="hbar.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v363q0 6 -6 6h-39q-10 0 -10 10v58q0 10 10 10h39q6 0 6 6v49q0 10 10 10h82q10 0 10 -10v-49q0 -6 6 -6h104q6 0 6 6v49q0 10 10 10h82q10 0 10 -10v-49q0 -6 6 -6h39 +q10 0 10 -10v-58q0 -10 -10 -10h-39q-6 0 -6 -6v-363q0 -10 -10 -10zM264 312q6 0 6 6v55q0 6 -6 6h-104q-6 0 -6 -6v-55q0 -6 6 -6h104z" /> + <glyph glyph-name="igrave.sc" horiz-adv-x="206" +d="M133 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="iacute.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM130 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-8 -10 -18 -10z" /> + <glyph glyph-name="ibreve.sc" horiz-adv-x="206" +d="M103 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM231 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="itilde.sc" horiz-adv-x="206" +d="M148 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502 +q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM212 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM60 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="imacron.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM206 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="idotaccent.sc" horiz-adv-x="206" +d="M144 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="iogonek.sc" horiz-adv-x="206" +d="M94 -190q-41 0 -65 21.5t-24 61.5q0 56 56 107q-9 0 -9 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -5 -3 -8q-63 -60 -63 -93q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="jcircumflex.sc" horiz-adv-x="335" +d="M125 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40zM354 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="kcommaaccent.sc" horiz-adv-x="421" +d="M187 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM399 0h-87q-8 0 -12 7l-101 209l-45 -70v-136q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-212l126 215q4 7 14 7h85q4 0 5.5 -3t-0.5 -7l-127 -202 +l147 -300q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="lacute.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM135 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="lcaron.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM206 353q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="lcommaaccent.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM148 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="lslash.sc" horiz-adv-x="348" +d="M224 287l-70 -48v-140q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10h-259q-10 0 -10 10v164l-33 -22q-4 -2 -7 -0.5t-3 5.5v74q0 9 10 16l33 22v243q0 10 10 10h82q10 0 10 -10v-178l70 48q4 2 7 0.5t3 -5.5v-74q0 -9 -10 -16z" /> + <glyph glyph-name="ldot.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM319 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="nacute.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM227 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z +" /> + <glyph glyph-name="ncaron.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM245 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60 +q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ntilde.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM264 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19 +q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="ncommaaccent.sc" horiz-adv-x="441" +d="M193 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10z +" /> + <glyph glyph-name="ograve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM234 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="oacute.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM224 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ocircumflex.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM330 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="otilde.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM247 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="odieresis.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM311 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM159 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="omacron.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM306 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="obreve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM202 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="ohungarumlaut.sc" horiz-adv-x="404" +d="M289 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM157 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5 +t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 54 -37z" /> + <glyph glyph-name="oslash.sc" horiz-adv-x="404" +d="M63 -30h-23q-11 0 -6 10l37 71q-14 21 -19 39q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q61 0 103 -31l22 42q6 10 14 10h23q11 0 6 -10l-37 -71q13 -20 20 -40q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5q-62 0 -103 32l-22 -43q-6 -10 -14 -10zM143 261 +v-73l111 218q-15 31 -52 31q-43 0 -54 -37q-5 -16 -5 -139zM202 84q42 0 55 37q5 16 5 140v73l-113 -218q13 -32 53 -32z" /> + <glyph glyph-name="oslashacute.sc" horiz-adv-x="404" +d="M224 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM63 -30h-23q-11 0 -6 10l37 71q-14 21 -19 39q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q61 0 103 -31l22 42q6 10 14 10h23q11 0 6 -10l-37 -71q13 -20 20 -40 +q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5q-62 0 -103 32l-22 -43q-6 -10 -14 -10zM143 261v-73l111 218q-15 31 -52 31q-43 0 -54 -37q-5 -16 -5 -139zM202 84q42 0 55 37q5 16 5 140v73l-113 -218q13 -32 53 -32z" /> + <glyph glyph-name="oe.sc" horiz-adv-x="571" +d="M534 0h-262q-10 0 -10 10v18h-1q-19 -37 -82 -37q-97 0 -127 93q-11 33 -11 177q0 143 11 177q30 93 127 93q63 0 82 -37h1v18q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 54 -37z" /> + <glyph glyph-name="racute.sc" horiz-adv-x="414" +d="M213 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213 +q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="rcaron.sc" horiz-adv-x="414" +d="M215 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141 +q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="rcommaaccent.sc" horiz-adv-x="414" +d="M177 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213 +q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="sacute.sc" horiz-adv-x="377" +d="M215 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35 +t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="scircumflex.sc" horiz-adv-x="377" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5zM317 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="scaron.sc" horiz-adv-x="377" +d="M215 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5 +t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="scedilla.sc" horiz-adv-x="377" +d="M104 -145l58 138q-122 15 -131 136q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58 +q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -61 -28 -100t-81 -51l-49 -141q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="scommaaccent.sc" horiz-adv-x="377" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35 +t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="tcaron.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10zM203 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7 +l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="tcommaaccent.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10zM140 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="tbar.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v251q0 6 -6 6h-42q-10 0 -10 10v57q0 10 10 10h42q6 0 6 6v72q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-72q0 -6 6 -6h42q10 0 10 -10v-57q0 -10 -10 -10h-42q-6 0 -6 -6v-251q0 -10 -10 -10 +z" /> + <glyph glyph-name="thorn.sc" horiz-adv-x="400" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-68q0 -6 6 -6h43q81 0 125.5 -41.5t44.5 -121.5q0 -79 -44.5 -120.5t-125.5 -41.5h-43q-6 0 -6 -6v-97q0 -10 -10 -10zM192 204q42 0 60.5 16.5t18.5 54.5t-18 54.5t-61 16.5h-32q-6 0 -6 -6v-130q0 -6 6 -6h32z +" /> + <glyph glyph-name="ugrave.sc" horiz-adv-x="421" +d="M246 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5 +z" /> + <glyph glyph-name="uacute.sc" horiz-adv-x="421" +d="M236 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5 +t-117.5 -42.5z" /> + <glyph glyph-name="ucircumflex.sc" horiz-adv-x="421" +d="M210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5zM337 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="utilde.sc" horiz-adv-x="421" +d="M254 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10 +v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="udieresis.sc" horiz-adv-x="421" +d="M318 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM166 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358 +q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="umacron.sc" horiz-adv-x="421" +d="M312 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="ubreve.sc" horiz-adv-x="421" +d="M209 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10 +h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uring.sc" horiz-adv-x="421" +d="M209 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM209 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82 +q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uhungarumlaut.sc" horiz-adv-x="421" +d="M300 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM168 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70 +q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uogonek.sc" horiz-adv-x="421" +d="M211 -190q-41 0 -65 21.5t-24 61.5q0 42 45 103q-55 11 -85.5 51.5t-30.5 106.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -133 -117 -159q-47 -52 -47 -86q0 -24 19 -24q10 0 18 5q9 6 13 -4l20 -46 +q3 -8 -5 -13q-23 -17 -60 -17z" /> + <glyph glyph-name="wacute.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM295 595h-57q-11 0 -6 10l69 125 +q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="wcircumflex.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM396 595h-60q-10 0 -19 10l-48 60 +h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="wdieresis.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM377 614h-65q-10 0 -10 10v86 +q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM225 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="wgrave.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM297 595h-57q-10 0 -18 10l-90 125 +q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="yacute.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM199 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ycircumflex.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM308 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125 +q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="ydieresis.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM289 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM137 614h-65q-10 0 -10 10v86q0 10 10 10h65 +q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="ygrave.sc" horiz-adv-x="359" +d="M215 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10z" /> + <glyph glyph-name="zacute.sc" horiz-adv-x="347" +d="M195 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron.sc" horiz-adv-x="347" +d="M200 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13 +l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent.sc" horiz-adv-x="347" +d="M216 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ij.sc" horiz-adv-x="542" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM297 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40z" /> + <glyph glyph-name="germandbls.sc" horiz-adv-x="754" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5zM572 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98 +q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-9 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="eng.sc" horiz-adv-x="441" +d="M239 -180h-11q-10 0 -10 10v72q0 10 10 10l10 1q28 3 38.5 13.5t10.5 37.5v9l-140 386h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-534q0 -85 -34.5 -121.5t-115.5 -36.5z" /> + <glyph glyph-name="grave.sc" horiz-adv-x="415" +d="M287 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="acute.sc" horiz-adv-x="415" +d="M185 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="circumflex.sc" horiz-adv-x="415" +d="M335 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron.sc" horiz-adv-x="415" +d="M233 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="tilde.sc" horiz-adv-x="415" +d="M251 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="dieresis.sc" horiz-adv-x="415" +d="M316 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="macron.sc" horiz-adv-x="414" +d="M312 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve.sc" horiz-adv-x="415" +d="M207 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="ring.sc" horiz-adv-x="415" +d="M207 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM207 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="hungarumlaut.sc" horiz-adv-x="415" +d="M247 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM115 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10z" /> + <glyph glyph-name="dotaccent.sc" horiz-adv-x="415" +d="M248 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="exclamdown.sc" horiz-adv-x="232" +d="M140 344h-48q-10 0 -10 -10l-22 -332q0 -10 10 -10h92q10 0 10 10l-22 332q0 10 -10 10zM158 514h-84q-10 0 -10 -10v-99q0 -10 10 -10h84q10 0 10 10v99q0 10 -10 10z" /> + <glyph glyph-name="questiondown.sc" horiz-adv-x="341" +d="M130 346h84q10 0 10 -10v-26q0 -37 -17 -57l-46 -59q-30 -38 -30 -70q0 -13 3 -22q10 -25 41 -25t40 26q3 8 4 31q0 11 10 9l80 -8q9 -1 9 -10q0 -32 -9 -59q-13 -40 -49 -61.5t-86 -21.5q-51 0 -87.5 22.5t-49.5 63.5q-8 24 -8 51q0 54 30 92l46 58q15 19 15 46v20 +q0 10 10 10zM130 514h84q10 0 10 -10v-99q0 -10 -10 -10h-84q-10 0 -10 10v99q0 10 10 10z" /> + <glyph glyph-name="Euro.sc" horiz-adv-x="378" +d="M208 -9q-106 0 -133 92q-8 25 -8 87q0 6 -6 6h-30q-10 0 -10 10v48q0 10 10 10h30q6 0 6 6v24q0 6 -6 6h-30q-10 0 -10 10v49q0 10 10 10h30q6 0 6 6q0 58 8 83q27 93 133 93q62 0 97.5 -30t42.5 -81q2 -9 -7 -11l-75 -14q-10 -2 -12 7q-7 37 -44 37q-32 0 -40 -31 +q-4 -11 -4 -53q0 -6 6 -6h98q10 0 10 -10l-10 -49q-1 -10 -10 -10h-88q-6 0 -6 -6v-24q0 -6 6 -6h88q10 0 10 -10l-10 -48q-1 -10 -10 -10h-78q-6 0 -6 -6q0 -45 4 -57q8 -31 40 -31q36 0 44 38q2 9 12 7l75 -14q9 -2 7 -11q-7 -51 -42.5 -81t-97.5 -30z" /> + <glyph glyph-name="cent.sc" horiz-adv-x="378" +d="M206 -75h-15q-10 0 -10 10v57q-98 6 -125 92q-9 28 -9 101t9 101q27 85 125 91v60q0 10 10 10h15q10 0 10 -10v-60q52 -5 84.5 -33t39.5 -68q2 -11 -7 -12l-77 -14q-9 -1 -12 7q-8 22 -28 26v-198q19 4 28 28q3 8 12 7l77 -15q9 -1 7 -12q-7 -41 -39.5 -68.5t-84.5 -32.5 +v-57q0 -10 -10 -10zM153 111q6 -22 28 -26v198q-22 -4 -28 -25q-4 -14 -4 -73q0 -60 4 -74z" /> + <glyph glyph-name="sterling.sc" horiz-adv-x="378" +d="M333 0h-282q-10 0 -10 10v73q0 6 4 11q24 30 24 65v43q0 6 -6 6h-26q-10 0 -10 10v53q0 10 10 10h26q6 0 6 6v105q0 63 35 101t104 38q61 0 94.5 -31.5t40.5 -83.5q2 -11 -9 -12l-75 -13q-10 -2 -12 8q-6 38 -39 38q-37 0 -37 -50v-100q0 -6 6 -6h81q10 0 10 -10v-53 +q0 -10 -10 -10h-81q-6 0 -6 -6v-43q0 -41 -22 -64v-2h184q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="florin.sc" horiz-adv-x="378" +d="M331 265h-78l-45 -242q-16 -89 -52 -125t-114 -36h-18q-10 0 -10 10v74q0 10 10 10h7q36 0 52 13t23 52l46 244h-54q-10 0 -10 10v59q0 10 10 10h69l3 17q16 89 52 125t114 36h18q10 0 10 -10v-74q0 -10 -10 -10h-7q-36 0 -52 -13t-23 -52l-4 -19h63q10 0 10 -10v-59 +q0 -10 -10 -10z" /> + <glyph glyph-name="yen.sc" horiz-adv-x="378" +d="M229 0h-81q-10 0 -10 10v74q0 6 -6 6h-79q-10 0 -10 10v48q0 10 10 10h79q6 0 6 6v24q0 6 -6 6h-79q-10 0 -10 10v48q0 10 10 10h67v3l-98 247q-3 10 8 10h84q9 0 12 -10l64 -179h2l60 179q3 10 12 10h83q11 0 8 -10l-99 -247v-3h68q10 0 10 -10v-48q0 -10 -10 -10h-79 +q-6 0 -6 -6v-24q0 -6 6 -6h79q10 0 10 -10v-48q0 -10 -10 -10h-79q-6 0 -6 -6v-74q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand.sc" horiz-adv-x="902" +d="M235 -11h-53q-10 0 -7 10l241 523q4 10 13 10h53q10 0 7 -10l-241 -523q-4 -10 -13 -10zM166 256q-33 0 -57 15t-32 40q-7 20 -7 81q0 60 7 80q8 26 32 41t57 15q34 0 58 -15t32 -41q7 -24 7 -80t-7 -81q-8 -25 -32 -40t-58 -15zM166 318q17 0 22 15q3 9 3 59q0 48 -3 59 +q-5 14 -22 14q-16 0 -21 -14q-3 -11 -3 -59q0 -50 3 -59q5 -15 21 -15zM735 -7q-33 0 -57 15t-32 41q-8 22 -8 80t8 80q8 26 32 41t57 15q71 0 89 -56q8 -22 8 -80t-8 -80q-18 -56 -89 -56zM497 -7q-33 0 -57 15t-32 41q-7 20 -7 80t7 80q8 26 32 41t57 15q34 0 57.5 -15 +t31.5 -41q8 -22 8 -80t-8 -80q-8 -26 -31.5 -41t-57.5 -15zM735 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14q-16 0 -22 -14q-3 -9 -3 -59t3 -59q6 -14 22 -14zM497 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14q-16 0 -21 -14q-3 -9 -3 -59t3 -59q5 -14 21 -14z" /> + <glyph glyph-name="parenleft.sc" horiz-adv-x="257" +d="M209 -84h-49q-8 0 -13 10q-81 162 -81 335t81 335q5 10 13 10h49q10 0 7 -10q-50 -168 -50 -335t50 -335q3 -10 -7 -10z" /> + <glyph glyph-name="parenright.sc" horiz-adv-x="257" +d="M98 -84h-49q-10 0 -7 10q50 168 50 335t-50 335q-3 10 7 10h49q8 0 13 -10q81 -166 81 -335t-81 -335q-5 -10 -13 -10z" /> + <glyph glyph-name="bracketleft.sc" horiz-adv-x="256" +d="M215 -84h-134q-10 0 -10 10v670q0 10 10 10h134q10 0 10 -10v-63q0 -10 -10 -10h-45q-6 0 -6 -6v-512q0 -6 6 -6h45q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="bracketright.sc" horiz-adv-x="256" +d="M175 -84h-135q-10 0 -10 10v63q0 10 10 10h46q6 0 6 6v512q0 6 -6 6h-46q-10 0 -10 10v63q0 10 10 10h135q10 0 10 -10v-670q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft.sc" horiz-adv-x="306" +d="M266 -84h-27q-56 0 -87 31t-31 88v117q0 36 -12.5 53t-43.5 17q-10 0 -10 10v63q0 10 10 10q31 0 43.5 17t12.5 53v112q0 57 31 88t87 31h27q10 0 10 -10v-63q0 -10 -10 -10h-9q-42 0 -42 -47v-80q0 -62 -10.5 -89.5t-45.5 -41.5v-3q35 -14 45.5 -41.5t10.5 -89.5v-86 +q0 -46 42 -46h9q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="braceright.sc" horiz-adv-x="306" +d="M67 -84h-27q-10 0 -10 10v63q0 10 10 10h9q42 0 42 46v86q0 62 10.5 89.5t45.5 41.5v3q-35 14 -45.5 41.5t-10.5 89.5v80q0 47 -42 47h-9q-10 0 -10 10v63q0 10 10 10h27q57 0 88 -31t31 -88v-112q0 -36 12.5 -53t42.5 -17q10 0 10 -10v-63q0 -10 -10 -10 +q-30 0 -42.5 -17t-12.5 -53v-117q0 -57 -31 -88t-88 -31z" /> + <glyph glyph-name="zero.onum" +d="M199 -9q-55 0 -92 24.5t-51 68.5q-10 33 -10 157q0 123 10 156q14 45 51 69.5t92 24.5t92 -24.5t51 -69.5q10 -33 10 -156q0 -124 -10 -157q-14 -44 -51 -68.5t-92 -24.5zM148 241q0 -111 5 -126q9 -31 46 -31t46 31q5 15 5 126q0 110 -5 125q-9 31 -46 31t-46 -31 +q-5 -15 -5 -125z" /> + <glyph glyph-name="one.onum" +d="M262 0h-82q-10 0 -10 10v366h-2l-85 -35q-11 -4 -11 7v77q0 11 7 14l90 40q6 3 15 3h78q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="two.onum" +d="M338 0h-282q-10 0 -10 10v71q0 11 7 18l153 141q22 20 31 39.5t9 53.5q0 20 -4 32q-10 32 -47 32q-36 0 -46 -32q-4 -12 -4 -51q0 -12 -12 -10l-77 8q-10 1 -10 12q0 44 9 72q30 95 142 95q111 0 142 -95q9 -29 9 -63q0 -53 -13.5 -85.5t-44.5 -59.5l-104 -94v-1h152 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="three.onum" +d="M193 -189q-111 0 -141 96q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -44 4 -57q11 -33 46 -33q36 0 47 33q4 13 4 91q0 80 -4 93q-10 31 -50 31h-30q-10 0 -10 10v72q0 8 4 15l85 138v1h-181q-10 0 -10 10v74q0 10 10 10h278q10 0 10 -10v-72q0 -6 -3 -14l-90 -142v-2 +q62 -11 83 -76q10 -31 10 -138q0 -91 -10 -123q-31 -94 -142 -94z" /> + <glyph glyph-name="four.onum" +d="M316 -180h-82q-10 0 -10 10v164q0 6 -6 6h-186q-10 0 -10 10v71q0 4 2 10l139 400q3 8 12 8h83q10 0 7 -11l-134 -393v-2h87q6 0 6 6v112q0 10 10 10h82q10 0 10 -10v-112q0 -6 5 -6h37q10 0 10 -10v-73q0 -10 -10 -10h-36q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onum" +d="M199 -189q-109 0 -141 96q-9 29 -9 67q0 11 10 12l77 8q12 2 12 -10q0 -34 4 -47q11 -33 47 -33q35 0 46 33q4 13 4 92t-4 91q-11 33 -46 33q-34 0 -47 -30q-4 -9 -15 -9h-67q-10 0 -10 10v348q0 10 10 10h271q10 0 10 -10v-74q0 -10 -10 -10h-184q-6 0 -6 -6v-163h1 +q26 28 73 28q90 0 116 -80q10 -31 10 -138q0 -92 -10 -124q-31 -94 -142 -94z" /> + <glyph glyph-name="six.onum" +d="M199 -9q-113 0 -143 96q-9 28 -9 111q0 69 6.5 107t25.5 86l108 282q3 7 12 7h84q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96zM199 84q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79 +q0 -68 4 -81q11 -33 46 -33z" /> + <glyph glyph-name="seven.onum" +d="M175 -180h-83q-10 0 -6 13l164 553v2h-104q-6 0 -6 -6v-63q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-72q0 -5 -2 -13l-162 -557q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onum" +d="M199 -9q-113 0 -143 96q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96zM199 403q37 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q11 -33 46 -33zM199 84q36 0 47 33q4 13 4 80t-4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79t4 -80q11 -33 46 -33z" /> + <glyph glyph-name="nine.onum" +d="M207 -180h-84q-12 0 -7 11l96 252l-2 2q-12 -7 -34 -7q-90 0 -119 92q-10 32 -10 114t9 110q30 97 143 97q112 0 144 -97q9 -28 9 -110q0 -69 -6.5 -106.5t-25.5 -86.5l-101 -264q-3 -7 -12 -7zM199 172q37 0 47 33q4 12 4 79q0 68 -4 80q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -80q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="zero.scprop" horiz-adv-x="378" +d="M189 -9q-52 0 -87.5 23t-48.5 66q-10 30 -10 181t10 180q28 90 136 90t136 -90q10 -29 10 -180t-10 -181q-13 -43 -48.5 -66t-87.5 -23zM189 84q31 0 40 28q4 13 4 149q0 135 -4 148q-9 28 -40 28t-40 -28q-4 -13 -4 -148q0 -136 4 -149q9 -28 40 -28z" /> + <glyph glyph-name="one.scprop" horiz-adv-x="303" +d="M212 0h-82q-10 0 -10 10v398h-1l-79 -44q-11 -6 -11 7v83q0 8 7 14l81 49q8 5 16 5h79q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="two.scprop" horiz-adv-x="371" +d="M319 0h-270q-9 0 -9 8v72q0 7 3 11l159 207q25 34 25 82q0 20 -3 31q-9 26 -41 26t-41 -26q-3 -11 -3 -36q0 -12 -12 -10l-77 8q-10 1 -10 12q0 38 6 57q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -63q0 -77 -46 -135l-119 -150v-1h155q10 0 10 -10v-73 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.scprop" horiz-adv-x="372" +d="M183 -9q-51 0 -87.5 23.5t-49.5 65.5q-6 19 -6 47q0 11 10 12l77 8q12 2 12 -10q0 -17 3 -26q10 -27 41 -27t41 27q3 9 3 45q0 28 -3 39q-9 25 -44 25h-13q-10 0 -10 10v73q0 10 10 10h13q36 0 44 24q3 9 3 35q0 28 -3 39q-9 26 -41 26t-41 -26q-3 -11 -3 -26 +q0 -12 -12 -10l-77 7q-10 1 -10 12q0 29 6 48q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -70q0 -30 -6 -48q-12 -34 -46 -53v-2q35 -20 46 -53q6 -18 6 -60q0 -49 -9 -76q-13 -43 -49 -66t-88 -23z" /> + <glyph glyph-name="four.scprop" horiz-adv-x="376" +d="M301 0h-80q-10 0 -10 10v49q0 6 -6 6h-171q-10 0 -10 10v73q0 5 2 11l130 355q3 8 12 8h84q11 0 8 -11l-129 -350v-2h74q6 0 6 6v125q0 10 10 10h80q10 0 10 -10v-125q0 -6 5 -6h28q10 0 10 -10v-74q0 -10 -10 -10h-27q-6 0 -6 -6v-49q0 -10 -10 -10z" /> + <glyph glyph-name="five.scprop" horiz-adv-x="376" +d="M188 -9q-52 0 -88 23t-49 66q-5 15 -5 33q0 11 10 12l76 8q11 1 13 -10l3 -13q9 -26 41 -26q30 0 39 27q4 12 4 56q0 43 -4 55q-9 27 -39 27q-28 0 -40 -18q-5 -8 -16 -8h-67q-10 0 -10 10v279q0 10 10 10h258q10 0 10 -10v-74q0 -10 -10 -10h-171q-6 0 -6 -6v-98h2 +q23 18 68 18q84 0 109 -77q8 -23 8 -98q0 -61 -9 -88q-13 -43 -49 -65.5t-88 -22.5z" /> + <glyph glyph-name="six.scprop" horiz-adv-x="376" +d="M188 -9q-52 0 -88 23t-49 66q-9 27 -9 74q0 83 30 148l99 210q5 10 16 10h81q12 0 6 -11l-96 -198l2 -2q10 4 33 4q87 0 112 -79q9 -27 9 -82q0 -47 -9 -74q-13 -43 -49 -66t-88 -23zM188 84q30 0 40 27q4 12 4 43q0 29 -4 41q-9 27 -40 27t-40 -27q-4 -12 -4 -41 +q0 -31 4 -43q10 -27 40 -27z" /> + <glyph glyph-name="seven.scprop" horiz-adv-x="362" +d="M159 0h-79q-12 0 -8 13l157 414v1h-90q-6 0 -6 -6v-37q0 -10 -10 -10h-73q-10 0 -10 10v127q0 10 10 10h270q10 0 10 -10v-75q0 -5 -2 -11l-154 -416q-4 -10 -15 -10z" /> + <glyph glyph-name="eight.scprop" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 76q0 39 7 62q14 39 42 54v2q-28 15 -42 54q-7 23 -7 50q0 37 9 64q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -64q0 -27 -7 -50q-14 -39 -42 -54v-2q28 -15 42 -54q7 -23 7 -62q0 -49 -9 -76q-13 -43 -49 -66t-88 -23zM189 319 +q30 0 40 27q4 14 4 32q0 19 -4 33q-9 26 -40 26t-40 -26q-4 -14 -4 -33q0 -18 4 -32q10 -27 40 -27zM189 84q30 0 40 27q4 12 4 45q0 32 -4 44q-9 27 -40 27t-40 -27q-4 -12 -4 -44q0 -33 4 -45q10 -27 40 -27z" /> + <glyph glyph-name="nine.scprop" horiz-adv-x="376" +d="M189 0h-81q-12 0 -6 11l96 198l-2 2q-10 -4 -33 -4q-87 0 -112 79q-9 27 -9 82q0 47 9 74q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -74q0 -84 -30 -148l-99 -210q-5 -10 -16 -10zM188 300q31 0 40 27q4 12 4 41t-4 43q-9 26 -40 26t-40 -26q-4 -14 -4 -43t4 -41 +q9 -27 40 -27z" /> + <glyph glyph-name="zero.prop" +d="M57 84q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93q-54 0 -91 24t-51 69zM154 115q10 -31 45 -31q36 0 46 31q5 16 5 225t-5 225q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225t6 -225z" /> + <glyph glyph-name="one.prop" horiz-adv-x="323" +d="M131 10v552h-2l-85 -60q-4 -3 -7.5 -1.5t-3.5 7.5v85q0 9 10 17l87 64q9 6 18 6h75q10 0 10 -10v-660q0 -10 -10 -10h-82q-10 0 -10 10z" /> + <glyph glyph-name="two.prop" horiz-adv-x="391" +d="M43 10v71q0 9 5 20l169 304q26 45 26 112q0 33 -4 46q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -62q0 -12 -12 -10l-78 7q-9 2 -9 12q0 59 8 84q32 95 143 95t142 -94q9 -29 9 -78q0 -54 -9.5 -88t-32.5 -75l-149 -260v-1h181q10 0 10 -10v-73q0 -10 -10 -10h-282 +q-10 0 -10 10z" /> + <glyph glyph-name="three.prop" horiz-adv-x="390" +d="M51 86q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -43 4 -56q11 -33 46 -33q36 0 47 32q4 13 4 79q0 70 -4 81q-10 30 -50 30h-15q-10 0 -10 10v72q0 10 10 10h15q41 0 50 29q4 11 4 73q0 51 -4 64q-11 32 -47 32q-35 0 -46 -33q-4 -13 -4 -56q0 -12 -12 -10l-77 7 +q-10 1 -10 12q0 50 9 78q30 95 141 95q112 0 143 -93q9 -28 9 -96q0 -65 -7 -86q-10 -34 -49 -58v-2q39 -24 49 -58q7 -21 7 -101q0 -83 -9 -111q-31 -93 -143 -93q-111 0 -141 95z" /> + <glyph glyph-name="four.prop" horiz-adv-x="400" +d="M34 101q-10 0 -10 10v72q0 5 2 11l140 478q3 8 12 8h83q11 0 8 -11l-140 -473v-2h86q6 0 6 6v180q0 10 10 10h82q10 0 10 -10v-180q0 -6 5 -6h34q10 0 10 -10v-73q0 -10 -10 -10h-33q-6 0 -6 -6v-85q0 -10 -10 -10h-82q-10 0 -10 10v85q0 6 -6 6h-181z" /> + <glyph glyph-name="five.prop" horiz-adv-x="395" +d="M56 86q-8 25 -8 68q0 10 9 12l78 8q12 2 12 -10q0 -34 4 -47q11 -33 46 -33q36 0 47 32q4 12 4 101q0 88 -4 100q-10 32 -47 32q-34 0 -46 -30q-4 -9 -15 -9h-68q-10 0 -10 10v350q0 10 10 10h272q10 0 10 -10v-73q0 -10 -10 -10h-184q-6 0 -6 -6v-166h1q26 28 73 28 +q90 0 116 -80q10 -31 10 -146q0 -104 -9 -132q-31 -94 -143 -94q-110 0 -142 95z" /> + <glyph glyph-name="six.prop" horiz-adv-x="395" +d="M54 87q-9 28 -9 111q0 69 6.5 107t25.5 86l107 279q4 10 14 10h83q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96q-113 0 -143 96zM151 117q11 -33 46 -33q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -79q0 -68 4 -81z" /> + <glyph glyph-name="seven.prop" horiz-adv-x="378" +d="M75 13l169 572v2h-104q-6 0 -6 -6v-64q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-74q0 -5 -2 -11l-167 -575q-3 -10 -13 -10h-83q-10 0 -6 13z" /> + <glyph glyph-name="eight.prop" horiz-adv-x="397" +d="M55 87q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96q-113 0 -143 96zM198 403q36 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q10 -33 46 -33zM152 117q11 -33 46 -33q36 0 47 33q4 13 4 80t-4 79q-11 33 -47 33t-46 -33q-4 -12 -4 -79t4 -80z" /> + <glyph glyph-name="nine.prop" horiz-adv-x="395" +d="M107 11l103 270l-2 2q-10 -6 -34 -6q-91 0 -119 91q-10 32 -10 114t9 111q30 96 143 96q112 0 144 -96q9 -28 9 -111q0 -68 -6.5 -106t-25.5 -87l-107 -279q-4 -10 -14 -10h-83q-12 0 -7 11zM197 370q37 0 47 33q4 12 4 79q0 68 -4 81q-11 33 -47 33q-35 0 -46 -33 +q-4 -13 -4 -81q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="Euro.prop" horiz-adv-x="410" +d="M229 -9q-108 0 -140 96q-11 36 -11 148q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6v43q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6q0 107 11 143q32 96 140 96q67 0 107 -38.5t45 -101.5q2 -11 -7 -12l-77 -15q-10 -2 -12 8q-8 66 -54 66 +q-35 0 -46 -34q-5 -15 -5 -112q0 -6 6 -6h130q10 0 10 -10l-10 -54q-1 -10 -10 -10h-120q-6 0 -6 -6v-43q0 -6 6 -6h115q10 0 10 -10l-10 -54q-1 -10 -10 -10h-105q-6 0 -6 -6q0 -102 5 -117q11 -34 46 -34q46 0 54 66q2 10 12 8l77 -15q9 -1 7 -12q-5 -63 -45 -101.5 +t-107 -38.5z" /> + <glyph glyph-name="cent.prop" horiz-adv-x="379" +d="M203 -99h-17q-10 0 -10 10v81q-99 6 -127 94q-12 37 -12 155t12 155q28 88 127 94v81q0 10 10 10h17q10 0 10 -10v-81q114 -11 130 -122q2 -11 -7 -12l-77 -15q-11 -2 -12 7q-7 39 -34 47v-308q27 8 34 46q1 9 12 7l77 -14q9 -1 7 -12q-15 -111 -130 -122v-81 +q0 -10 -10 -10zM144 116q8 -24 32 -30v309q-25 -4 -32 -29q-5 -16 -5 -125t5 -125z" /> + <glyph glyph-name="dollar.prop" horiz-adv-x="406" +d="M38 165q0 10 8 11l75 13q11 1 11 -9q1 -47 12.5 -69t37.5 -26v221l-28 11q-63 25 -86.5 67t-23.5 123q0 174 138 181v41q0 10 10 10h17q10 0 10 -10v-41q66 -6 97.5 -46t37.5 -114q1 -9 -9 -11l-73 -11q-9 -2 -11 8q-3 37 -12.5 55.5t-29.5 23.5v-190l26 -10 +q63 -24 88.5 -67.5t25.5 -130.5q0 -100 -34 -149t-106 -54v-55q0 -10 -10 -10h-17q-10 0 -10 10v55q-72 4 -106.5 46.5t-37.5 126.5zM182 419v175q-40 -8 -40 -83q0 -40 8 -59.5t32 -32.5zM219 86q22 5 32 26t10 69q0 46 -9.5 70.5t-32.5 38.5v-204z" /> + <glyph glyph-name="sterling.prop" horiz-adv-x="417" +d="M362 0h-302q-10 0 -10 10v73q0 5 3 10q27 36 27 91v93q0 6 -6 6h-29q-10 0 -10 10v53q0 10 10 10h29q6 0 6 6v172q0 73 36.5 114t108.5 41q130 0 144 -141q2 -10 -8 -12l-77 -13q-9 -2 -11 8q-3 35 -13.5 50t-33.5 15q-44 0 -44 -60v-174q0 -6 6 -6h89q10 0 10 -10v-53 +q0 -10 -10 -10h-89q-6 0 -6 -6v-93q0 -60 -25 -89v-2h205q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="florin.prop" horiz-adv-x="403" +d="M340 325h-78l-46 -343q-11 -84 -49.5 -123t-115.5 -39h-21q-10 0 -10 10v74q0 10 10 10h15q33 0 49 14t20 49l47 348h-67q-10 0 -10 10v62q0 10 10 10h78l15 111q11 84 49.5 123t115.5 39h21q10 0 10 -10v-74q0 -10 -10 -10h-15q-33 0 -49 -14t-20 -49l-16 -116h67 +q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="yen.prop" horiz-adv-x="397" +d="M239 0h-81q-10 0 -10 10v110q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h88q6 0 6 6v43q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h78v3l-109 338q-3 10 8 10h85q9 0 12 -10l71 -263h3l69 263q3 10 12 10h83q11 0 8 -10l-109 -338v-3h77q10 0 10 -10v-54q0 -10 -10 -10 +h-87q-6 0 -6 -6v-43q0 -6 6 -6h87q10 0 10 -10v-54q0 -10 -10 -10h-87q-6 0 -6 -6v-110q0 -10 -10 -10z" /> + <glyph glyph-name="zero.onumprop" +d="M199 -9q-55 0 -92 24.5t-51 68.5q-10 33 -10 157q0 123 10 156q14 45 51 69.5t92 24.5t92 -24.5t51 -69.5q10 -33 10 -156q0 -124 -10 -157q-14 -44 -51 -68.5t-92 -24.5zM148 241q0 -111 5 -126q9 -31 46 -31t46 31q5 15 5 126q0 110 -5 125q-9 31 -46 31t-46 -31 +q-5 -15 -5 -125z" /> + <glyph glyph-name="one.onumprop" horiz-adv-x="304" +d="M214 0h-82q-10 0 -10 10v366h-2l-85 -35q-11 -4 -11 7v77q0 11 7 14l90 40q6 3 15 3h78q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="two.onumprop" horiz-adv-x="389" +d="M334 0h-282q-10 0 -10 10v71q0 11 7 18l153 141q22 20 31 39.5t9 53.5q0 20 -4 32q-10 32 -47 32q-36 0 -46 -32q-4 -12 -4 -51q0 -12 -12 -10l-77 8q-10 1 -10 12q0 44 9 72q30 95 142 95q111 0 142 -95q9 -29 9 -63q0 -53 -13.5 -85.5t-44.5 -59.5l-104 -94v-1h152 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="three.onumprop" horiz-adv-x="387" +d="M190 -189q-111 0 -141 96q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -44 4 -57q11 -33 46 -33q36 0 47 33q4 13 4 91q0 80 -4 93q-10 31 -50 31h-30q-10 0 -10 10v72q0 8 4 15l85 138v1h-181q-10 0 -10 10v74q0 10 10 10h278q10 0 10 -10v-72q0 -6 -3 -14l-90 -142v-2 +q62 -11 83 -76q10 -31 10 -138q0 -91 -10 -123q-31 -94 -142 -94z" /> + <glyph glyph-name="four.onumprop" horiz-adv-x="406" +d="M322 -180h-82q-10 0 -10 10v164q0 6 -6 6h-186q-10 0 -10 10v71q0 4 2 10l139 400q3 8 12 8h83q10 0 7 -11l-134 -393v-2h87q6 0 6 6v112q0 10 10 10h82q10 0 10 -10v-112q0 -6 5 -6h37q10 0 10 -10v-73q0 -10 -10 -10h-36q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onumprop" horiz-adv-x="397" +d="M200 -189q-109 0 -141 96q-9 29 -9 67q0 11 10 12l77 8q12 2 12 -10q0 -34 4 -47q11 -33 47 -33q35 0 46 33q4 13 4 92t-4 91q-10 33 -46 33q-34 0 -47 -30q-4 -9 -15 -9h-67q-10 0 -10 10v348q0 10 10 10h271q10 0 10 -10v-74q0 -10 -10 -10h-184q-6 0 -6 -6v-163h1 +q26 28 73 28q90 0 116 -80q10 -31 10 -138q0 -92 -10 -124q-31 -94 -142 -94z" /> + <glyph glyph-name="six.onumprop" horiz-adv-x="395" +d="M197 -9q-113 0 -143 96q-9 28 -9 111q0 69 6.5 107t25.5 86l108 282q3 7 12 7h84q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96zM197 84q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79 +q0 -68 4 -81q11 -33 46 -33z" /> + <glyph glyph-name="seven.onumprop" horiz-adv-x="390" +d="M173 -180h-83q-10 0 -6 13l164 553v2h-104q-6 0 -6 -6v-63q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-72q0 -5 -2 -13l-162 -557q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onumprop" horiz-adv-x="397" +d="M198 -9q-113 0 -143 96q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96zM198 403q36 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q10 -33 46 -33zM198 84q36 0 47 33q4 13 4 80t-4 79q-11 33 -47 33t-46 -33q-4 -12 -4 -79t4 -80q11 -33 46 -33z" /> + <glyph glyph-name="nine.onumprop" horiz-adv-x="397" +d="M206 -180h-84q-12 0 -7 11l96 252l-2 2q-12 -7 -34 -7q-90 0 -119 92q-10 32 -10 114t9 110q30 97 143 97q112 0 144 -97q9 -28 9 -110q0 -69 -6.5 -106.5t-25.5 -86.5l-101 -264q-3 -7 -12 -7zM198 172q36 0 47 33q4 12 4 79q0 68 -4 80q-11 33 -47 33t-46 -33 +q-4 -12 -4 -80q0 -67 4 -79q10 -33 46 -33z" /> + <glyph glyph-name="one.superior" horiz-adv-x="281" +d="M191 430h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.superior" horiz-adv-x="281" +d="M238 430h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.superior" horiz-adv-x="281" +d="M139 422q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="a.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34z" /> + <glyph glyph-name="agrave.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM219 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="aacute.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM212 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="acircumflex.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM336 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="atilde.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM252 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="adieresis.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM317 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM165 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM311 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM208 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="aring.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM208 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM208 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="aringacute.alt01" horiz-adv-x="401" +d="M232 773h-58q-4 0 -5.5 3t1.5 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-104 -95q-10 -10 -19 -10zM340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10 +zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34zM208 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM208 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5 +t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="aogonek.alt01" horiz-adv-x="401" +d="M248 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -7 -7 -11q-29 -19 -48 -44.5t-19 -45.5q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17q-41 0 -65.5 21.5 +t-24.5 61.5q0 54 57 107l2 2q-3 3 -3 8zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34z" /> + <glyph glyph-name="ae.alt01" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="aeacute.alt01" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -82 -29q-9 -6 -13 5l-26 59q-3 8 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64zM315 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="germandbls.alt01" horiz-adv-x="438" +d="M189 -180q-10 0 -10 10v72q0 10 10 10q79 0 101 68q8 24 8 92q0 58 -7 75q-16 48 -71 48q-10 0 -10 10v70q0 9 5 16l61 99v2h-117q-6 0 -6 -6v-376q0 -10 -10 -10h-82q-10 0 -10 10v519q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60 +q0 -6 6 -6h226q10 0 10 -10v-57q0 -7 -3 -13l-79 -131v-2q56 -26 77 -89q10 -31 10 -108q0 -86 -12 -125q-41 -127 -199 -127z" /> + <glyph glyph-name="q.alt01" horiz-adv-x="401" +d="M339 -180h-81q-10 0 -10 10v219h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-544h1l45 47q7 7 14 0l40 -41q6 -6 -1 -14l-101 -97q-3 -3 -9 -3zM195 85q37 0 48 34q5 17 5 122t-5 122 +q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34z" /> + <glyph glyph-name="C.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49z" /> + <glyph glyph-name="Cacute.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM226 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Ccircumflex.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM338 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Ccaron.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM236 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="Cdotaccent.alt01" horiz-adv-x="408" +d="M251 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214 +t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10q0 -102 -40.5 -151t-127.5 -49z" /> + <glyph glyph-name="Ccedilla.alt01" horiz-adv-x="408" +d="M109 -145l58 140q-86 15 -113 100q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84 +q10 0 10 -10q0 -178 -130 -197l-49 -139q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="G.alt01" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53 +q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gcircumflex.alt01" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53 +q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106zM342 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Gbreve.alt01" horiz-adv-x="429" +d="M214 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84 +q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gdotaccent.alt01" horiz-adv-x="429" +d="M255 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214 +t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gcommaaccent.alt01" horiz-adv-x="429" +d="M177 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38 +q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="I.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="Igrave.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM171 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81 +q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM153 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3 +t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Ibreve.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM132 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10 +q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="Icircumflex.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM260 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10 +h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Itilde.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM177 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26 +q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Idieresis.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM241 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86 +q0 -10 -10 -10zM89 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Imacron.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM235 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60 +q0 -10 -10 -10z" /> + <glyph glyph-name="Idotaccent.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM174 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86 +q0 -10 -10 -10z" /> + <glyph glyph-name="Iogonek.alt01" horiz-adv-x="264" +d="M134 -190q-41 0 -65 21.5t-24 61.5q0 63 47 107h-46q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10h-38q-53 -52 -53 -91 +q0 -24 19 -24q11 0 19 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="Z.alt01" horiz-adv-x="370" +d="M294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute.alt01" horiz-adv-x="370" +d="M202 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77 +q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron.alt01" horiz-adv-x="370" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63 +q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent.alt01" horiz-adv-x="370" +d="M229 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271 +q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="zero.alt01" +d="M199 -9q-54 0 -91 24t-51 69q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93zM148 340v-70l101 229q0 50 -4 66q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225zM199 84q36 0 46 31q5 16 5 225v70l-102 -229 +q1 -53 6 -66q10 -31 45 -31z" /> + <glyph glyph-name="one.alt01" +d="M347 0h-268q-10 0 -10 10v73q0 10 10 10h77q6 0 6 6v463h-2l-85 -60q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v85q0 8 7 14l90 66q7 6 14 6h79q10 0 10 -10v-571q0 -6 6 -6h77q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt01" +d="M200 -9q-113 0 -143 96q-9 28 -9 122v319q0 76 42 118.5t116 42.5t123 -34q9 -6 3 -14l-39 -64q-5 -8 -14 -3q-35 22 -64 22q-65 0 -65 -69v-123h2q23 21 64 21q98 0 127 -87q10 -32 10 -129q0 -93 -9 -122q-32 -96 -144 -96zM200 84q36 0 47 33q4 13 4 92q0 77 -4 90 +q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -90q0 -79 4 -92q11 -33 46 -33z" /> + <glyph glyph-name="seven.alt01" +d="M325 295h-62l-83 -285q-3 -10 -13 -10h-83q-10 0 -6 13l83 282h-62q-10 0 -10 10v62q0 10 10 10h87l61 208v2h-194q-10 0 -10 10v73q0 10 10 10h286q10 0 10 -10v-72q0 -6 -2 -12l-60 -209h38q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt01" +d="M198 689q113 0 143 -96q9 -28 9 -122v-319q0 -76 -42 -118.5t-116 -42.5t-123 34q-9 6 -3 14l39 64q5 8 14 3q35 -22 64 -22q65 0 65 69v123h-2q-23 -21 -64 -21q-98 0 -127 87q-10 32 -10 129q0 93 9 122q32 96 144 96zM198 596q-36 0 -47 -33q-4 -13 -4 -92 +q0 -77 4 -90q11 -33 47 -33q35 0 46 33q4 13 4 90q0 79 -4 92q-11 33 -46 33z" /> + <glyph glyph-name="zero.alt02" +d="M199 -9q-54 0 -91 24t-51 69q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93zM148 340v-70l101 229q0 50 -4 66q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225zM199 84q36 0 46 31q5 16 5 225v70l-102 -229 +q1 -53 6 -66q10 -31 45 -31z" /> + <glyph glyph-name="one.alt02" horiz-adv-x="341" +d="M319 0h-268q-10 0 -10 10v73q0 10 10 10h77q6 0 6 6v463h-2l-85 -60q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v85q0 8 7 14l90 66q8 6 14 6h79q10 0 10 -10v-571q0 -6 6 -6h77q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt02" +d="M201 -9q-113 0 -143 96q-9 28 -9 122v319q0 76 42.5 118.5t115.5 42.5q74 0 123 -34q9 -6 3 -14l-39 -64q-5 -8 -14 -3q-35 22 -64 22q-65 0 -65 -69v-123h2q23 21 64 21q98 0 127 -87q10 -32 10 -129q0 -93 -9 -122q-32 -96 -144 -96zM201 84q36 0 47 33q4 13 4 92 +q0 77 -4 90q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -90q0 -79 4 -92q11 -33 46 -33z" /> + <glyph glyph-name="seven.alt02" horiz-adv-x="386" +d="M328 295h-62l-83 -285q-3 -10 -13 -10h-83q-10 0 -6 13l83 282h-62q-10 0 -10 10v62q0 10 10 10h87l61 208v2h-194q-10 0 -10 10v73q0 10 10 10h286q10 0 10 -10v-72q0 -6 -2 -12l-60 -209h38q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt02" +d="M198 689q113 0 143 -96q9 -28 9 -122v-319q0 -76 -42 -118.5t-116 -42.5t-123 34q-9 6 -3 14l39 64q5 8 14 3q35 -22 64 -22q65 0 65 69v123h-2q-23 -21 -64 -21q-98 0 -127 87q-10 32 -10 129q0 93 9 122q32 96 144 96zM198 596q-36 0 -47 -33q-4 -13 -4 -92 +q0 -77 4 -90q11 -33 47 -33q35 0 46 33q4 13 4 90q0 79 -4 92q-11 33 -46 33z" /> + <glyph glyph-name="zero.nominator" horiz-adv-x="281" +d="M140 266q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 337q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.nominator" horiz-adv-x="281" +d="M191 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.nominator" horiz-adv-x="281" +d="M238 274h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.nominator" horiz-adv-x="281" +d="M139 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.nominator" horiz-adv-x="281" +d="M224 274h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.nominator" horiz-adv-x="281" +d="M140 266q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.nominator" horiz-adv-x="281" +d="M140 266q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 64q0 44 4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 337q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17 +t-26 -17q-3 -7 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.nominator" horiz-adv-x="281" +d="M131 274h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.nominator" horiz-adv-x="281" +d="M140 266q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 521q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 337q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.nominator" horiz-adv-x="281" +d="M146 274h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 501q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="zero.denominator" horiz-adv-x="281" +d="M140 -8q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 63q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.denominator" horiz-adv-x="281" +d="M191 0h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.denominator" horiz-adv-x="281" +d="M238 0h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.denominator" horiz-adv-x="281" +d="M139 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 8 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -20 6 -53q0 -34 -4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.denominator" horiz-adv-x="281" +d="M224 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.denominator" horiz-adv-x="281" +d="M140 -8q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 8 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.denominator" horiz-adv-x="281" +d="M140 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 64q0 44 4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 63q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -8 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.denominator" horiz-adv-x="281" +d="M131 0h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.denominator" horiz-adv-x="281" +d="M140 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM140 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.denominator" horiz-adv-x="281" +d="M146 0h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 227q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -7 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <hkern u1=" " u2="Ỳ" k="18" /> + <hkern u1=" " u2="Ẅ" k="14" /> + <hkern u1=" " u2="Ẃ" k="14" /> + <hkern u1=" " u2="Ẁ" k="14" /> + <hkern u1=" " u2="Ț" k="10" /> + <hkern u1=" " u2="Ÿ" k="18" /> + <hkern u1=" " u2="Ŷ" k="18" /> + <hkern u1=" " u2="Ŵ" k="14" /> + <hkern u1=" " u2="Ŧ" k="10" /> + <hkern u1=" " u2="Ť" k="10" /> + <hkern u1=" " u2="Ţ" k="10" /> + <hkern u1=" " u2="Ý" k="18" /> + <hkern u1=" " u2="Y" k="18" /> + <hkern u1=" " u2="X" k="6" /> + <hkern u1=" " u2="W" k="14" /> + <hkern u1=" " u2="V" k="20" /> + <hkern u1=" " u2="T" k="10" /> + <hkern u1=""" u2="ï" k="-52" /> + <hkern u1=""" u2="y" k="-5" /> + <hkern u1=""" u2="v" k="-5" /> + <hkern u1="'" u2="ï" k="-52" /> + <hkern u1="'" u2="y" k="-5" /> + <hkern u1="'" u2="v" k="-5" /> + <hkern u1="," u2=" " k="16" /> + <hkern u1="-" u2="Ŧ" k="45" /> + <hkern u1="-" u2="y" k="19" /> + <hkern u1="-" u2="x" k="40" /> + <hkern u1="-" u2="v" k="17" /> + <hkern u1="-" u2="X" k="46" /> + <hkern u1="-" u2="V" k="40" /> + <hkern u1="." u2=" " k="16" /> + <hkern u1="A" g2="v.sc" k="14" /> + <hkern u1="A" u2="®" k="44" /> + <hkern u1="A" u2="«" k="15" /> + <hkern u1="A" u2="y" k="36" /> + <hkern u1="A" u2="v" k="38" /> + <hkern u1="A" u2="V" k="36" /> + <hkern u1="A" u2="?" k="40" /> + <hkern u1="B" g2="jcircumflex.sc" k="14" /> + <hkern u1="B" g2="aeacute.sc" k="6" /> + <hkern u1="B" g2="ae.sc" k="6" /> + <hkern u1="B" g2="j.sc" k="14" /> + <hkern u1="B" u2="Ỳ" k="20" /> + <hkern u1="B" u2="Ẅ" k="7" /> + <hkern u1="B" u2="Ẃ" k="7" /> + <hkern u1="B" u2="Ẁ" k="7" /> + <hkern u1="B" u2="Ǽ" k="24" /> + <hkern u1="B" u2="Ǻ" k="6" /> + <hkern u1="B" u2="Ÿ" k="20" /> + <hkern u1="B" u2="Ŷ" k="20" /> + <hkern u1="B" u2="Ŵ" k="7" /> + <hkern u1="B" u2="Ĵ" k="12" /> + <hkern u1="B" u2="Ą" k="6" /> + <hkern u1="B" u2="Ă" k="6" /> + <hkern u1="B" u2="Ā" k="6" /> + <hkern u1="B" u2="Ý" k="20" /> + <hkern u1="B" u2="Æ" k="24" /> + <hkern u1="B" u2="Å" k="6" /> + <hkern u1="B" u2="Ä" k="6" /> + <hkern u1="B" u2="Ã" k="6" /> + <hkern u1="B" u2="Â" k="6" /> + <hkern u1="B" u2="Á" k="6" /> + <hkern u1="B" u2="À" k="6" /> + <hkern u1="B" u2="Y" k="20" /> + <hkern u1="B" u2="X" k="20" /> + <hkern u1="B" u2="W" k="7" /> + <hkern u1="B" u2="V" k="9" /> + <hkern u1="B" u2="J" k="12" /> + <hkern u1="B" u2="A" k="6" /> + <hkern u1="C" u2="y" k="18" /> + <hkern u1="D" u2="X" k="18" /> + <hkern u1="D" u2="V" k="16" /> + <hkern u1="E" g2="v.sc" k="12" /> + <hkern u1="E" u2="y" k="18" /> + <hkern u1="E" u2="v" k="18" /> + <hkern u1="F" g2="aogonek.alt01" k="8" /> + <hkern u1="F" g2="aringacute.alt01" k="8" /> + <hkern u1="F" g2="aring.alt01" k="8" /> + <hkern u1="F" g2="abreve.alt01" k="8" /> + <hkern u1="F" g2="amacron.alt01" k="8" /> + <hkern u1="F" g2="adieresis.alt01" k="8" /> + <hkern u1="F" g2="atilde.alt01" k="8" /> + <hkern u1="F" g2="acircumflex.alt01" k="8" /> + <hkern u1="F" g2="aacute.alt01" k="8" /> + <hkern u1="F" g2="agrave.alt01" k="8" /> + <hkern u1="F" g2="a.alt01" k="8" /> + <hkern u1="F" g2="eng.sc" k="18" /> + <hkern u1="F" g2="ij.sc" k="18" /> + <hkern u1="F" g2="ygrave.sc" k="18" /> + <hkern u1="F" g2="ydieresis.sc" k="18" /> + <hkern u1="F" g2="ycircumflex.sc" k="18" /> + <hkern u1="F" g2="yacute.sc" k="18" /> + <hkern u1="F" g2="uogonek.sc" k="18" /> + <hkern u1="F" g2="uhungarumlaut.sc" k="18" /> + <hkern u1="F" g2="uring.sc" k="18" /> + <hkern u1="F" g2="ubreve.sc" k="18" /> + <hkern u1="F" g2="umacron.sc" k="18" /> + <hkern u1="F" g2="udieresis.sc" k="18" /> + <hkern u1="F" g2="utilde.sc" k="18" /> + <hkern u1="F" g2="ucircumflex.sc" k="18" /> + <hkern u1="F" g2="uacute.sc" k="18" /> + <hkern u1="F" g2="ugrave.sc" k="18" /> + <hkern u1="F" g2="thorn.sc" k="18" /> + <hkern u1="F" g2="rcommaaccent.sc" k="18" /> + <hkern u1="F" g2="rcaron.sc" k="18" /> + <hkern u1="F" g2="racute.sc" k="18" /> + <hkern u1="F" g2="oslash.sc" k="18" /> + <hkern u1="F" g2="ohungarumlaut.sc" k="18" /> + <hkern u1="F" g2="obreve.sc" k="18" /> + <hkern u1="F" g2="omacron.sc" k="18" /> + <hkern u1="F" g2="odieresis.sc" k="18" /> + <hkern u1="F" g2="otilde.sc" k="18" /> + <hkern u1="F" g2="ocircumflex.sc" k="18" /> + <hkern u1="F" g2="oacute.sc" k="18" /> + <hkern u1="F" g2="ograve.sc" k="18" /> + <hkern u1="F" g2="ncommaaccent.sc" k="18" /> + <hkern u1="F" g2="ntilde.sc" k="18" /> + <hkern u1="F" g2="ncaron.sc" k="18" /> + <hkern u1="F" g2="nacute.sc" k="18" /> + <hkern u1="F" g2="ldot.sc" k="18" /> + <hkern u1="F" g2="lslash.sc" k="18" /> + <hkern u1="F" g2="lcommaaccent.sc" k="18" /> + <hkern u1="F" g2="lcaron.sc" k="18" /> + <hkern u1="F" g2="lacute.sc" k="18" /> + <hkern u1="F" g2="kcommaaccent.sc" k="18" /> + <hkern u1="F" g2="jcircumflex.sc" k="52" /> + <hkern u1="F" g2="iogonek.sc" k="18" /> + <hkern u1="F" g2="idotaccent.sc" k="18" /> + <hkern u1="F" g2="imacron.sc" k="18" /> + <hkern u1="F" g2="idieresis.sc" k="18" /> + <hkern u1="F" g2="itilde.sc" k="18" /> + <hkern u1="F" g2="icircumflex.sc" k="18" /> + <hkern u1="F" g2="ibreve.sc" k="18" /> + <hkern u1="F" g2="iacute.sc" k="18" /> + <hkern u1="F" g2="igrave.sc" k="18" /> + <hkern u1="F" g2="hbar.sc" k="18" /> + <hkern u1="F" g2="hcircumflex.sc" k="18" /> + <hkern u1="F" g2="gcommaaccent.sc" k="18" /> + <hkern u1="F" g2="gdotaccent.sc" k="18" /> + <hkern u1="F" g2="gbreve.sc" k="18" /> + <hkern u1="F" g2="gcircumflex.sc" k="18" /> + <hkern u1="F" g2="eogonek.sc" k="18" /> + <hkern u1="F" g2="edotaccent.sc" k="18" /> + <hkern u1="F" g2="ebreve.sc" k="18" /> + <hkern u1="F" g2="emacron.sc" k="18" /> + <hkern u1="F" g2="edieresis.sc" k="18" /> + <hkern u1="F" g2="ecaron.sc" k="18" /> + <hkern u1="F" g2="ecircumflex.sc" k="18" /> + <hkern u1="F" g2="eacute.sc" k="18" /> + <hkern u1="F" g2="egrave.sc" k="18" /> + <hkern u1="F" g2="eth.sc" k="18" /> + <hkern u1="F" g2="dcroat.sc" k="18" /> + <hkern u1="F" g2="dcaron.sc" k="18" /> + <hkern u1="F" g2="ccedilla.sc" k="18" /> + <hkern u1="F" g2="cdotaccent.sc" k="18" /> + <hkern u1="F" g2="ccaron.sc" k="18" /> + <hkern u1="F" g2="ccircumflex.sc" k="18" /> + <hkern u1="F" g2="cacute.sc" k="18" /> + <hkern u1="F" g2="aeacute.sc" k="52" /> + <hkern u1="F" g2="ae.sc" k="52" /> + <hkern u1="F" g2="aogonek.sc" k="36" /> + <hkern u1="F" g2="aringacute.sc" k="36" /> + <hkern u1="F" g2="aring.sc" k="36" /> + <hkern u1="F" g2="abreve.sc" k="36" /> + <hkern u1="F" g2="amacron.sc" k="36" /> + <hkern u1="F" g2="adieresis.sc" k="36" /> + <hkern u1="F" g2="atilde.sc" k="36" /> + <hkern u1="F" g2="acircumflex.sc" k="36" /> + <hkern u1="F" g2="aacute.sc" k="36" /> + <hkern u1="F" g2="agrave.sc" k="36" /> + <hkern u1="F" g2="y.sc" k="18" /> + <hkern u1="F" g2="u.sc" k="18" /> + <hkern u1="F" g2="r.sc" k="18" /> + <hkern u1="F" g2="q.sc" k="18" /> + <hkern u1="F" g2="p.sc" k="18" /> + <hkern u1="F" g2="o.sc" k="18" /> + <hkern u1="F" g2="n.sc" k="18" /> + <hkern u1="F" g2="m.sc" k="18" /> + <hkern u1="F" g2="l.sc" k="18" /> + <hkern u1="F" g2="k.sc" k="18" /> + <hkern u1="F" g2="j.sc" k="52" /> + <hkern u1="F" g2="i.sc" k="18" /> + <hkern u1="F" g2="h.sc" k="18" /> + <hkern u1="F" g2="g.sc" k="18" /> + <hkern u1="F" g2="f.sc" k="18" /> + <hkern u1="F" g2="e.sc" k="18" /> + <hkern u1="F" g2="d.sc" k="18" /> + <hkern u1="F" g2="c.sc" k="18" /> + <hkern u1="F" g2="b.sc" k="18" /> + <hkern u1="F" g2="a.sc" k="36" /> + <hkern u1="F" u2="…" k="70" /> + <hkern u1="F" u2="ș" k="11" /> + <hkern u1="F" u2="ǿ" k="8" /> + <hkern u1="F" u2="ǽ" k="30" /> + <hkern u1="F" u2="Ǽ" k="55" /> + <hkern u1="F" u2="ǻ" k="30" /> + <hkern u1="F" u2="Ǻ" k="29" /> + <hkern u1="F" u2="ų" k="18" /> + <hkern u1="F" u2="ű" k="18" /> + <hkern u1="F" u2="ů" k="18" /> + <hkern u1="F" u2="ŭ" k="18" /> + <hkern u1="F" u2="ū" k="18" /> + <hkern u1="F" u2="ũ" k="18" /> + <hkern u1="F" u2="š" k="11" /> + <hkern u1="F" u2="ş" k="11" /> + <hkern u1="F" u2="ŝ" k="11" /> + <hkern u1="F" u2="ś" k="11" /> + <hkern u1="F" u2="ř" k="18" /> + <hkern u1="F" u2="ŗ" k="18" /> + <hkern u1="F" u2="ŕ" k="18" /> + <hkern u1="F" u2="œ" k="24" /> + <hkern u1="F" u2="ő" k="24" /> + <hkern u1="F" u2="ŏ" k="24" /> + <hkern u1="F" u2="ō" k="24" /> + <hkern u1="F" u2="ŋ" k="18" /> + <hkern u1="F" u2="ň" k="18" /> + <hkern u1="F" u2="ņ" k="18" /> + <hkern u1="F" u2="ń" k="18" /> + <hkern u1="F" u2="Ĵ" k="62" /> + <hkern u1="F" u2="ı" k="18" /> + <hkern u1="F" u2="ģ" k="8" /> + <hkern u1="F" u2="ġ" k="8" /> + <hkern u1="F" u2="ğ" k="8" /> + <hkern u1="F" u2="ĝ" k="8" /> + <hkern u1="F" u2="ě" k="24" /> + <hkern u1="F" u2="ę" k="24" /> + <hkern u1="F" u2="ė" k="24" /> + <hkern u1="F" u2="ĕ" k="24" /> + <hkern u1="F" u2="ē" k="24" /> + <hkern u1="F" u2="đ" k="8" /> + <hkern u1="F" u2="ď" k="8" /> + <hkern u1="F" u2="č" k="24" /> + <hkern u1="F" u2="ċ" k="24" /> + <hkern u1="F" u2="ĉ" k="24" /> + <hkern u1="F" u2="ć" k="24" /> + <hkern u1="F" u2="ą" k="30" /> + <hkern u1="F" u2="Ą" k="29" /> + <hkern u1="F" u2="ă" k="30" /> + <hkern u1="F" u2="Ă" k="29" /> + <hkern u1="F" u2="ā" k="30" /> + <hkern u1="F" u2="Ā" k="29" /> + <hkern u1="F" u2="ü" k="18" /> + <hkern u1="F" u2="û" k="18" /> + <hkern u1="F" u2="ú" k="18" /> + <hkern u1="F" u2="ù" k="18" /> + <hkern u1="F" u2="ø" k="8" /> + <hkern u1="F" u2="ö" k="24" /> + <hkern u1="F" u2="õ" k="24" /> + <hkern u1="F" u2="ô" k="24" /> + <hkern u1="F" u2="ó" k="24" /> + <hkern u1="F" u2="ò" k="24" /> + <hkern u1="F" u2="ñ" k="18" /> + <hkern u1="F" u2="ð" k="8" /> + <hkern u1="F" u2="ë" k="24" /> + <hkern u1="F" u2="ê" k="24" /> + <hkern u1="F" u2="é" k="24" /> + <hkern u1="F" u2="è" k="24" /> + <hkern u1="F" u2="ç" k="24" /> + <hkern u1="F" u2="æ" k="30" /> + <hkern u1="F" u2="å" k="30" /> + <hkern u1="F" u2="ä" k="30" /> + <hkern u1="F" u2="ã" k="30" /> + <hkern u1="F" u2="â" k="30" /> + <hkern u1="F" u2="á" k="30" /> + <hkern u1="F" u2="à" k="30" /> + <hkern u1="F" u2="Æ" k="55" /> + <hkern u1="F" u2="Å" k="29" /> + <hkern u1="F" u2="Ä" k="29" /> + <hkern u1="F" u2="Ã" k="29" /> + <hkern u1="F" u2="Â" k="29" /> + <hkern u1="F" u2="Á" k="29" /> + <hkern u1="F" u2="À" k="29" /> + <hkern u1="F" u2="y" k="18" /> + <hkern u1="F" u2="u" k="18" /> + <hkern u1="F" u2="s" k="11" /> + <hkern u1="F" u2="r" k="18" /> + <hkern u1="F" u2="q" k="8" /> + <hkern u1="F" u2="p" k="18" /> + <hkern u1="F" u2="o" k="24" /> + <hkern u1="F" u2="n" k="18" /> + <hkern u1="F" u2="m" k="18" /> + <hkern u1="F" u2="g" k="8" /> + <hkern u1="F" u2="e" k="24" /> + <hkern u1="F" u2="d" k="8" /> + <hkern u1="F" u2="c" k="24" /> + <hkern u1="F" u2="a" k="30" /> + <hkern u1="F" u2="J" k="62" /> + <hkern u1="F" u2="A" k="29" /> + <hkern u1="F" u2="." k="70" /> + <hkern u1="F" u2="," k="70" /> + <hkern u1="G" u2="X" k="19" /> + <hkern u1="G" u2="V" k="14" /> + <hkern u1="H" u2="ï" k="-19" /> + <hkern u1="I" u2="ï" k="-19" /> + <hkern u1="K" g2="v.sc" k="35" /> + <hkern u1="K" u2="®" k="51" /> + <hkern u1="K" u2="«" k="50" /> + <hkern u1="K" u2="y" k="22" /> + <hkern u1="K" u2="v" k="34" /> + <hkern u1="L" g2="v.sc" k="28" /> + <hkern u1="L" u2="®" k="36" /> + <hkern u1="L" u2="«" k="16" /> + <hkern u1="L" u2="y" k="20" /> + <hkern u1="L" u2="v" k="40" /> + <hkern u1="L" u2="V" k="66" /> + <hkern u1="L" u2="?" k="15" /> + <hkern u1="M" u2="ï" k="-19" /> + <hkern u1="N" u2="ï" k="-19" /> + <hkern u1="O" u2="X" k="19" /> + <hkern u1="O" u2="V" k="14" /> + <hkern u1="P" g2="jcircumflex.sc" k="69" /> + <hkern u1="P" g2="aeacute.sc" k="80" /> + <hkern u1="P" g2="ae.sc" k="80" /> + <hkern u1="P" g2="aogonek.sc" k="51" /> + <hkern u1="P" g2="aringacute.sc" k="51" /> + <hkern u1="P" g2="aring.sc" k="51" /> + <hkern u1="P" g2="abreve.sc" k="51" /> + <hkern u1="P" g2="amacron.sc" k="51" /> + <hkern u1="P" g2="adieresis.sc" k="51" /> + <hkern u1="P" g2="atilde.sc" k="51" /> + <hkern u1="P" g2="acircumflex.sc" k="51" /> + <hkern u1="P" g2="aacute.sc" k="51" /> + <hkern u1="P" g2="agrave.sc" k="51" /> + <hkern u1="P" g2="j.sc" k="69" /> + <hkern u1="P" g2="a.sc" k="51" /> + <hkern u1="P" u2="…" k="110" /> + <hkern u1="P" u2="”" k="-20" /> + <hkern u1="P" u2="“" k="-20" /> + <hkern u1="P" u2="’" k="-20" /> + <hkern u1="P" u2="‘" k="-20" /> + <hkern u1="P" u2="Ỳ" k="12" /> + <hkern u1="P" u2="ǽ" k="18" /> + <hkern u1="P" u2="Ǽ" k="94" /> + <hkern u1="P" u2="ǻ" k="18" /> + <hkern u1="P" u2="Ǻ" k="50" /> + <hkern u1="P" u2="Ÿ" k="12" /> + <hkern u1="P" u2="Ŷ" k="12" /> + <hkern u1="P" u2="œ" k="6" /> + <hkern u1="P" u2="ő" k="6" /> + <hkern u1="P" u2="ŏ" k="6" /> + <hkern u1="P" u2="ō" k="6" /> + <hkern u1="P" u2="Ĵ" k="84" /> + <hkern u1="P" u2="ě" k="6" /> + <hkern u1="P" u2="ę" k="6" /> + <hkern u1="P" u2="ė" k="6" /> + <hkern u1="P" u2="ĕ" k="6" /> + <hkern u1="P" u2="ē" k="6" /> + <hkern u1="P" u2="č" k="6" /> + <hkern u1="P" u2="ċ" k="6" /> + <hkern u1="P" u2="ĉ" k="6" /> + <hkern u1="P" u2="ć" k="6" /> + <hkern u1="P" u2="ą" k="18" /> + <hkern u1="P" u2="Ą" k="50" /> + <hkern u1="P" u2="ă" k="18" /> + <hkern u1="P" u2="Ă" k="50" /> + <hkern u1="P" u2="ā" k="18" /> + <hkern u1="P" u2="Ā" k="50" /> + <hkern u1="P" u2="ö" k="6" /> + <hkern u1="P" u2="õ" k="6" /> + <hkern u1="P" u2="ô" k="6" /> + <hkern u1="P" u2="ó" k="6" /> + <hkern u1="P" u2="ò" k="6" /> + <hkern u1="P" u2="ë" k="6" /> + <hkern u1="P" u2="ê" k="6" /> + <hkern u1="P" u2="é" k="6" /> + <hkern u1="P" u2="è" k="6" /> + <hkern u1="P" u2="ç" k="6" /> + <hkern u1="P" u2="æ" k="18" /> + <hkern u1="P" u2="å" k="18" /> + <hkern u1="P" u2="ä" k="18" /> + <hkern u1="P" u2="ã" k="18" /> + <hkern u1="P" u2="â" k="18" /> + <hkern u1="P" u2="á" k="18" /> + <hkern u1="P" u2="à" k="18" /> + <hkern u1="P" u2="Ý" k="12" /> + <hkern u1="P" u2="Æ" k="94" /> + <hkern u1="P" u2="Å" k="50" /> + <hkern u1="P" u2="Ä" k="50" /> + <hkern u1="P" u2="Ã" k="50" /> + <hkern u1="P" u2="Â" k="50" /> + <hkern u1="P" u2="Á" k="50" /> + <hkern u1="P" u2="À" k="50" /> + <hkern u1="P" u2="o" k="6" /> + <hkern u1="P" u2="e" k="6" /> + <hkern u1="P" u2="c" k="6" /> + <hkern u1="P" u2="a" k="18" /> + <hkern u1="P" u2="Y" k="12" /> + <hkern u1="P" u2="X" k="24" /> + <hkern u1="P" u2="J" k="84" /> + <hkern u1="P" u2="A" k="50" /> + <hkern u1="P" u2="." k="110" /> + <hkern u1="P" u2="," k="110" /> + <hkern u1="P" u2="'" k="-20" /> + <hkern u1="P" u2=""" k="-20" /> + <hkern u1="Q" u2="…" k="-25" /> + <hkern u1="Q" u2="Ỳ" k="26" /> + <hkern u1="Q" u2="Ẅ" k="13" /> + <hkern u1="Q" u2="Ẃ" k="13" /> + <hkern u1="Q" u2="Ẁ" k="13" /> + <hkern u1="Q" u2="Ÿ" k="26" /> + <hkern u1="Q" u2="Ŷ" k="26" /> + <hkern u1="Q" u2="Ŵ" k="13" /> + <hkern u1="Q" u2="Ý" k="26" /> + <hkern u1="Q" u2="Y" k="26" /> + <hkern u1="Q" u2="W" k="13" /> + <hkern u1="Q" u2="V" k="16" /> + <hkern u1="Q" u2=";" k="-25" /> + <hkern u1="Q" u2=":" k="-25" /> + <hkern u1="Q" u2="." k="-25" /> + <hkern u1="Q" u2="," k="-25" /> + <hkern u1="Q" u2="!" k="-17" /> + <hkern u1="R" u2="«" k="16" /> + <hkern u1="R" u2="V" k="14" /> + <hkern u1="S" u2="y" k="5" /> + <hkern u1="S" u2="x" k="10" /> + <hkern u1="S" u2="v" k="8" /> + <hkern u1="T" g2="z.sc" k="24" /> + <hkern u1="T" g2="x.sc" k="37" /> + <hkern u1="T" g2="v.sc" k="48" /> + <hkern u1="T" u2="ï" k="-29" /> + <hkern u1="T" u2="«" k="45" /> + <hkern u1="T" u2="y" k="66" /> + <hkern u1="T" u2="x" k="24" /> + <hkern u1="T" u2="v" k="66" /> + <hkern u1="T" u2="?" k="-20" /> + <hkern u1="T" u2=" " k="10" /> + <hkern u1="V" g2="Gcommaaccent.alt01" k="14" /> + <hkern u1="V" g2="Gdotaccent.alt01" k="14" /> + <hkern u1="V" g2="Gbreve.alt01" k="14" /> + <hkern u1="V" g2="Gcircumflex.alt01" k="14" /> + <hkern u1="V" g2="G.alt01" k="14" /> + <hkern u1="V" g2="Ccedilla.alt01" k="14" /> + <hkern u1="V" g2="Cdotaccent.alt01" k="14" /> + <hkern u1="V" g2="Ccaron.alt01" k="14" /> + <hkern u1="V" g2="Ccircumflex.alt01" k="14" /> + <hkern u1="V" g2="Cacute.alt01" k="14" /> + <hkern u1="V" g2="C.alt01" k="14" /> + <hkern u1="V" g2="aogonek.alt01" k="40" /> + <hkern u1="V" g2="aringacute.alt01" k="40" /> + <hkern u1="V" g2="aring.alt01" k="40" /> + <hkern u1="V" g2="abreve.alt01" k="40" /> + <hkern u1="V" g2="amacron.alt01" k="40" /> + <hkern u1="V" g2="adieresis.alt01" k="40" /> + <hkern u1="V" g2="atilde.alt01" k="40" /> + <hkern u1="V" g2="acircumflex.alt01" k="40" /> + <hkern u1="V" g2="aacute.alt01" k="40" /> + <hkern u1="V" g2="agrave.alt01" k="40" /> + <hkern u1="V" g2="a.alt01" k="40" /> + <hkern u1="V" g2="eng.sc" k="10" /> + <hkern u1="V" g2="germandbls.sc" k="10" /> + <hkern u1="V" g2="ij.sc" k="10" /> + <hkern u1="V" g2="uogonek.sc" k="12" /> + <hkern u1="V" g2="uhungarumlaut.sc" k="12" /> + <hkern u1="V" g2="uring.sc" k="12" /> + <hkern u1="V" g2="ubreve.sc" k="12" /> + <hkern u1="V" g2="umacron.sc" k="12" /> + <hkern u1="V" g2="udieresis.sc" k="12" /> + <hkern u1="V" g2="utilde.sc" k="12" /> + <hkern u1="V" g2="ucircumflex.sc" k="12" /> + <hkern u1="V" g2="uacute.sc" k="12" /> + <hkern u1="V" g2="ugrave.sc" k="12" /> + <hkern u1="V" g2="thorn.sc" k="10" /> + <hkern u1="V" g2="scommaaccent.sc" k="10" /> + <hkern u1="V" g2="scedilla.sc" k="10" /> + <hkern u1="V" g2="scaron.sc" k="10" /> + <hkern u1="V" g2="scircumflex.sc" k="10" /> + <hkern u1="V" g2="sacute.sc" k="10" /> + <hkern u1="V" g2="rcommaaccent.sc" k="10" /> + <hkern u1="V" g2="rcaron.sc" k="10" /> + <hkern u1="V" g2="racute.sc" k="10" /> + <hkern u1="V" g2="oslash.sc" k="16" /> + <hkern u1="V" g2="ohungarumlaut.sc" k="16" /> + <hkern u1="V" g2="obreve.sc" k="16" /> + <hkern u1="V" g2="omacron.sc" k="16" /> + <hkern u1="V" g2="odieresis.sc" k="16" /> + <hkern u1="V" g2="otilde.sc" k="16" /> + <hkern u1="V" g2="ocircumflex.sc" k="16" /> + <hkern u1="V" g2="oacute.sc" k="16" /> + <hkern u1="V" g2="ograve.sc" k="16" /> + <hkern u1="V" g2="ncommaaccent.sc" k="10" /> + <hkern u1="V" g2="ntilde.sc" k="10" /> + <hkern u1="V" g2="ncaron.sc" k="10" /> + <hkern u1="V" g2="nacute.sc" k="10" /> + <hkern u1="V" g2="ldot.sc" k="10" /> + <hkern u1="V" g2="lslash.sc" k="10" /> + <hkern u1="V" g2="lcommaaccent.sc" k="10" /> + <hkern u1="V" g2="lcaron.sc" k="10" /> + <hkern u1="V" g2="lacute.sc" k="10" /> + <hkern u1="V" g2="kcommaaccent.sc" k="10" /> + <hkern u1="V" g2="jcircumflex.sc" k="50" /> + <hkern u1="V" g2="iogonek.sc" k="10" /> + <hkern u1="V" g2="idotaccent.sc" k="10" /> + <hkern u1="V" g2="imacron.sc" k="10" /> + <hkern u1="V" g2="idieresis.sc" k="10" /> + <hkern u1="V" g2="itilde.sc" k="10" /> + <hkern u1="V" g2="icircumflex.sc" k="10" /> + <hkern u1="V" g2="ibreve.sc" k="10" /> + <hkern u1="V" g2="iacute.sc" k="10" /> + <hkern u1="V" g2="igrave.sc" k="10" /> + <hkern u1="V" g2="hbar.sc" k="10" /> + <hkern u1="V" g2="hcircumflex.sc" k="10" /> + <hkern u1="V" g2="gcommaaccent.sc" k="16" /> + <hkern u1="V" g2="gdotaccent.sc" k="16" /> + <hkern u1="V" g2="gbreve.sc" k="16" /> + <hkern u1="V" g2="gcircumflex.sc" k="16" /> + <hkern u1="V" g2="eogonek.sc" k="10" /> + <hkern u1="V" g2="edotaccent.sc" k="10" /> + <hkern u1="V" g2="ebreve.sc" k="10" /> + <hkern u1="V" g2="emacron.sc" k="10" /> + <hkern u1="V" g2="edieresis.sc" k="10" /> + <hkern u1="V" g2="ecaron.sc" k="10" /> + <hkern u1="V" g2="ecircumflex.sc" k="10" /> + <hkern u1="V" g2="eacute.sc" k="10" /> + <hkern u1="V" g2="egrave.sc" k="10" /> + <hkern u1="V" g2="eth.sc" k="10" /> + <hkern u1="V" g2="dcroat.sc" k="10" /> + <hkern u1="V" g2="dcaron.sc" k="10" /> + <hkern u1="V" g2="ccedilla.sc" k="16" /> + <hkern u1="V" g2="cdotaccent.sc" k="16" /> + <hkern u1="V" g2="ccaron.sc" k="16" /> + <hkern u1="V" g2="ccircumflex.sc" k="16" /> + <hkern u1="V" g2="cacute.sc" k="16" /> + <hkern u1="V" g2="aeacute.sc" k="62" /> + <hkern u1="V" g2="ae.sc" k="62" /> + <hkern u1="V" g2="aogonek.sc" k="40" /> + <hkern u1="V" g2="aringacute.sc" k="40" /> + <hkern u1="V" g2="aring.sc" k="40" /> + <hkern u1="V" g2="abreve.sc" k="40" /> + <hkern u1="V" g2="amacron.sc" k="40" /> + <hkern u1="V" g2="adieresis.sc" k="40" /> + <hkern u1="V" g2="atilde.sc" k="40" /> + <hkern u1="V" g2="acircumflex.sc" k="40" /> + <hkern u1="V" g2="aacute.sc" k="40" /> + <hkern u1="V" g2="agrave.sc" k="40" /> + <hkern u1="V" g2="z.sc" k="6" /> + <hkern u1="V" g2="x.sc" k="10" /> + <hkern u1="V" g2="u.sc" k="12" /> + <hkern u1="V" g2="s.sc" k="10" /> + <hkern u1="V" g2="r.sc" k="10" /> + <hkern u1="V" g2="q.sc" k="16" /> + <hkern u1="V" g2="p.sc" k="10" /> + <hkern u1="V" g2="o.sc" k="16" /> + <hkern u1="V" g2="n.sc" k="10" /> + <hkern u1="V" g2="m.sc" k="10" /> + <hkern u1="V" g2="l.sc" k="10" /> + <hkern u1="V" g2="k.sc" k="10" /> + <hkern u1="V" g2="j.sc" k="50" /> + <hkern u1="V" g2="i.sc" k="10" /> + <hkern u1="V" g2="h.sc" k="10" /> + <hkern u1="V" g2="g.sc" k="16" /> + <hkern u1="V" g2="f.sc" k="10" /> + <hkern u1="V" g2="e.sc" k="10" /> + <hkern u1="V" g2="d.sc" k="10" /> + <hkern u1="V" g2="c.sc" k="16" /> + <hkern u1="V" g2="b.sc" k="10" /> + <hkern u1="V" g2="a.sc" k="40" /> + <hkern u1="V" g2="f_f_l" k="6" /> + <hkern u1="V" g2="f_f_i" k="6" /> + <hkern u1="V" g2="fl" k="6" /> + <hkern u1="V" g2="fi" k="6" /> + <hkern u1="V" g2="f_f" k="6" /> + <hkern u1="V" u2="∙" k="31" /> + <hkern u1="V" u2="›" k="22" /> + <hkern u1="V" u2="…" k="85" /> + <hkern u1="V" u2="•" k="31" /> + <hkern u1="V" u2="—" k="40" /> + <hkern u1="V" u2="–" k="40" /> + <hkern u1="V" u2="ẅ" k="9" /> + <hkern u1="V" u2="ẃ" k="9" /> + <hkern u1="V" u2="ẁ" k="9" /> + <hkern u1="V" u2="ț" k="6" /> + <hkern u1="V" u2="ș" k="38" /> + <hkern u1="V" u2="Ș" k="11" /> + <hkern u1="V" u2="ǿ" k="41" /> + <hkern u1="V" u2="Ǿ" k="14" /> + <hkern u1="V" u2="ǽ" k="28" /> + <hkern u1="V" u2="Ǽ" k="84" /> + <hkern u1="V" u2="ǻ" k="28" /> + <hkern u1="V" u2="Ǻ" k="36" /> + <hkern u1="V" u2="ž" k="22" /> + <hkern u1="V" u2="ż" k="22" /> + <hkern u1="V" u2="ź" k="22" /> + <hkern u1="V" u2="ŵ" k="9" /> + <hkern u1="V" u2="ų" k="22" /> + <hkern u1="V" u2="ű" k="22" /> + <hkern u1="V" u2="ů" k="22" /> + <hkern u1="V" u2="ŭ" k="22" /> + <hkern u1="V" u2="ū" k="22" /> + <hkern u1="V" u2="ũ" k="22" /> + <hkern u1="V" u2="ŧ" k="6" /> + <hkern u1="V" u2="ť" k="6" /> + <hkern u1="V" u2="ţ" k="6" /> + <hkern u1="V" u2="š" k="38" /> + <hkern u1="V" u2="Š" k="11" /> + <hkern u1="V" u2="ş" k="38" /> + <hkern u1="V" u2="Ş" k="11" /> + <hkern u1="V" u2="ŝ" k="38" /> + <hkern u1="V" u2="Ŝ" k="11" /> + <hkern u1="V" u2="ś" k="38" /> + <hkern u1="V" u2="Ś" k="11" /> + <hkern u1="V" u2="ř" k="24" /> + <hkern u1="V" u2="ŗ" k="24" /> + <hkern u1="V" u2="ŕ" k="24" /> + <hkern u1="V" u2="œ" k="41" /> + <hkern u1="V" u2="Œ" k="14" /> + <hkern u1="V" u2="ő" k="41" /> + <hkern u1="V" u2="Ő" k="14" /> + <hkern u1="V" u2="ŏ" k="41" /> + <hkern u1="V" u2="Ŏ" k="14" /> + <hkern u1="V" u2="ō" k="41" /> + <hkern u1="V" u2="Ō" k="14" /> + <hkern u1="V" u2="ŋ" k="24" /> + <hkern u1="V" u2="ň" k="24" /> + <hkern u1="V" u2="ņ" k="24" /> + <hkern u1="V" u2="ń" k="24" /> + <hkern u1="V" u2="Ĵ" k="64" /> + <hkern u1="V" u2="ı" k="24" /> + <hkern u1="V" u2="ģ" k="40" /> + <hkern u1="V" u2="Ģ" k="14" /> + <hkern u1="V" u2="ġ" k="40" /> + <hkern u1="V" u2="Ġ" k="14" /> + <hkern u1="V" u2="ğ" k="40" /> + <hkern u1="V" u2="Ğ" k="14" /> + <hkern u1="V" u2="ĝ" k="40" /> + <hkern u1="V" u2="Ĝ" k="14" /> + <hkern u1="V" u2="ě" k="41" /> + <hkern u1="V" u2="ę" k="41" /> + <hkern u1="V" u2="ė" k="41" /> + <hkern u1="V" u2="ĕ" k="41" /> + <hkern u1="V" u2="ē" k="41" /> + <hkern u1="V" u2="đ" k="40" /> + <hkern u1="V" u2="ď" k="40" /> + <hkern u1="V" u2="č" k="41" /> + <hkern u1="V" u2="Č" k="14" /> + <hkern u1="V" u2="ċ" k="41" /> + <hkern u1="V" u2="Ċ" k="14" /> + <hkern u1="V" u2="ĉ" k="41" /> + <hkern u1="V" u2="Ĉ" k="14" /> + <hkern u1="V" u2="ć" k="41" /> + <hkern u1="V" u2="Ć" k="14" /> + <hkern u1="V" u2="ą" k="28" /> + <hkern u1="V" u2="Ą" k="36" /> + <hkern u1="V" u2="ă" k="28" /> + <hkern u1="V" u2="Ă" k="36" /> + <hkern u1="V" u2="ā" k="28" /> + <hkern u1="V" u2="Ā" k="36" /> + <hkern u1="V" u2="ü" k="22" /> + <hkern u1="V" u2="û" k="22" /> + <hkern u1="V" u2="ú" k="22" /> + <hkern u1="V" u2="ù" k="22" /> + <hkern u1="V" u2="ø" k="41" /> + <hkern u1="V" u2="ö" k="41" /> + <hkern u1="V" u2="õ" k="41" /> + <hkern u1="V" u2="ô" k="41" /> + <hkern u1="V" u2="ó" k="41" /> + <hkern u1="V" u2="ò" k="41" /> + <hkern u1="V" u2="ñ" k="24" /> + <hkern u1="V" u2="ð" k="40" /> + <hkern u1="V" u2="ì" k="-14" /> + <hkern u1="V" u2="ë" k="41" /> + <hkern u1="V" u2="ê" k="41" /> + <hkern u1="V" u2="é" k="41" /> + <hkern u1="V" u2="è" k="41" /> + <hkern u1="V" u2="ç" k="41" /> + <hkern u1="V" u2="æ" k="28" /> + <hkern u1="V" u2="å" k="28" /> + <hkern u1="V" u2="ä" k="28" /> + <hkern u1="V" u2="ã" k="28" /> + <hkern u1="V" u2="â" k="28" /> + <hkern u1="V" u2="á" k="28" /> + <hkern u1="V" u2="à" k="28" /> + <hkern u1="V" u2="Ø" k="14" /> + <hkern u1="V" u2="Ö" k="14" /> + <hkern u1="V" u2="Õ" k="14" /> + <hkern u1="V" u2="Ô" k="14" /> + <hkern u1="V" u2="Ó" k="14" /> + <hkern u1="V" u2="Ò" k="14" /> + <hkern u1="V" u2="Ç" k="14" /> + <hkern u1="V" u2="Æ" k="84" /> + <hkern u1="V" u2="Å" k="36" /> + <hkern u1="V" u2="Ä" k="36" /> + <hkern u1="V" u2="Ã" k="36" /> + <hkern u1="V" u2="Â" k="36" /> + <hkern u1="V" u2="Á" k="36" /> + <hkern u1="V" u2="À" k="36" /> + <hkern u1="V" u2="»" k="22" /> + <hkern u1="V" u2="·" k="31" /> + <hkern u1="V" u2="®" k="11" /> + <hkern u1="V" u2="­" k="40" /> + <hkern u1="V" u2="«" k="45" /> + <hkern u1="V" u2="z" k="22" /> + <hkern u1="V" u2="y" k="9" /> + <hkern u1="V" u2="x" k="17" /> + <hkern u1="V" u2="w" k="9" /> + <hkern u1="V" u2="v" k="9" /> + <hkern u1="V" u2="u" k="22" /> + <hkern u1="V" u2="t" k="6" /> + <hkern u1="V" u2="s" k="38" /> + <hkern u1="V" u2="r" k="24" /> + <hkern u1="V" u2="q" k="40" /> + <hkern u1="V" u2="p" k="24" /> + <hkern u1="V" u2="o" k="41" /> + <hkern u1="V" u2="n" k="24" /> + <hkern u1="V" u2="m" k="24" /> + <hkern u1="V" u2="g" k="40" /> + <hkern u1="V" u2="f" k="6" /> + <hkern u1="V" u2="e" k="41" /> + <hkern u1="V" u2="d" k="40" /> + <hkern u1="V" u2="c" k="41" /> + <hkern u1="V" u2="a" k="28" /> + <hkern u1="V" u2="S" k="11" /> + <hkern u1="V" u2="Q" k="14" /> + <hkern u1="V" u2="O" k="14" /> + <hkern u1="V" u2="J" k="64" /> + <hkern u1="V" u2="G" k="14" /> + <hkern u1="V" u2="C" k="14" /> + <hkern u1="V" u2="A" k="36" /> + <hkern u1="V" u2=";" k="22" /> + <hkern u1="V" u2=":" k="22" /> + <hkern u1="V" u2="." k="85" /> + <hkern u1="V" u2="-" k="40" /> + <hkern u1="V" u2="," k="85" /> + <hkern u1="V" u2=" " k="25" /> + <hkern u1="W" g2="z.sc" k="6" /> + <hkern u1="W" g2="x.sc" k="6" /> + <hkern u1="W" u2="®" k="3" /> + <hkern u1="W" u2="«" k="40" /> + <hkern u1="W" u2="y" k="3" /> + <hkern u1="W" u2="x" k="16" /> + <hkern u1="W" u2="v" k="5" /> + <hkern u1="W" u2=" " k="19" /> + <hkern u1="X" g2="Gcommaaccent.alt01" k="18" /> + <hkern u1="X" g2="Gdotaccent.alt01" k="18" /> + <hkern u1="X" g2="Gbreve.alt01" k="18" /> + <hkern u1="X" g2="Gcircumflex.alt01" k="18" /> + <hkern u1="X" g2="G.alt01" k="18" /> + <hkern u1="X" g2="Ccedilla.alt01" k="18" /> + <hkern u1="X" g2="Cdotaccent.alt01" k="18" /> + <hkern u1="X" g2="Ccaron.alt01" k="18" /> + <hkern u1="X" g2="Ccircumflex.alt01" k="18" /> + <hkern u1="X" g2="Cacute.alt01" k="18" /> + <hkern u1="X" g2="C.alt01" k="18" /> + <hkern u1="X" g2="aogonek.alt01" k="13" /> + <hkern u1="X" g2="aringacute.alt01" k="13" /> + <hkern u1="X" g2="aring.alt01" k="13" /> + <hkern u1="X" g2="abreve.alt01" k="13" /> + <hkern u1="X" g2="amacron.alt01" k="13" /> + <hkern u1="X" g2="adieresis.alt01" k="13" /> + <hkern u1="X" g2="atilde.alt01" k="13" /> + <hkern u1="X" g2="acircumflex.alt01" k="13" /> + <hkern u1="X" g2="aacute.alt01" k="13" /> + <hkern u1="X" g2="agrave.alt01" k="13" /> + <hkern u1="X" g2="a.alt01" k="13" /> + <hkern u1="X" g2="ygrave.sc" k="10" /> + <hkern u1="X" g2="ydieresis.sc" k="10" /> + <hkern u1="X" g2="ycircumflex.sc" k="10" /> + <hkern u1="X" g2="yacute.sc" k="10" /> + <hkern u1="X" g2="wgrave.sc" k="9" /> + <hkern u1="X" g2="wdieresis.sc" k="9" /> + <hkern u1="X" g2="wcircumflex.sc" k="9" /> + <hkern u1="X" g2="wacute.sc" k="9" /> + <hkern u1="X" g2="tbar.sc" k="5" /> + <hkern u1="X" g2="tcommaaccent.sc" k="5" /> + <hkern u1="X" g2="tcaron.sc" k="5" /> + <hkern u1="X" g2="oslash.sc" k="6" /> + <hkern u1="X" g2="ohungarumlaut.sc" k="6" /> + <hkern u1="X" g2="obreve.sc" k="6" /> + <hkern u1="X" g2="omacron.sc" k="6" /> + <hkern u1="X" g2="odieresis.sc" k="6" /> + <hkern u1="X" g2="otilde.sc" k="6" /> + <hkern u1="X" g2="ocircumflex.sc" k="6" /> + <hkern u1="X" g2="oacute.sc" k="6" /> + <hkern u1="X" g2="ograve.sc" k="6" /> + <hkern u1="X" g2="gcommaaccent.sc" k="6" /> + <hkern u1="X" g2="gdotaccent.sc" k="6" /> + <hkern u1="X" g2="gbreve.sc" k="6" /> + <hkern u1="X" g2="gcircumflex.sc" k="6" /> + <hkern u1="X" g2="ccedilla.sc" k="6" /> + <hkern u1="X" g2="cdotaccent.sc" k="6" /> + <hkern u1="X" g2="ccaron.sc" k="6" /> + <hkern u1="X" g2="ccircumflex.sc" k="6" /> + <hkern u1="X" g2="cacute.sc" k="6" /> + <hkern u1="X" g2="y.sc" k="10" /> + <hkern u1="X" g2="w.sc" k="9" /> + <hkern u1="X" g2="v.sc" k="12" /> + <hkern u1="X" g2="t.sc" k="5" /> + <hkern u1="X" g2="q.sc" k="6" /> + <hkern u1="X" g2="o.sc" k="6" /> + <hkern u1="X" g2="g.sc" k="6" /> + <hkern u1="X" g2="c.sc" k="6" /> + <hkern u1="X" u2="∙" k="38" /> + <hkern u1="X" u2="›" k="7" /> + <hkern u1="X" u2="•" k="38" /> + <hkern u1="X" u2="—" k="46" /> + <hkern u1="X" u2="–" k="46" /> + <hkern u1="X" u2="ẅ" k="33" /> + <hkern u1="X" u2="ẃ" k="33" /> + <hkern u1="X" u2="ẁ" k="33" /> + <hkern u1="X" u2="ŵ" k="33" /> + <hkern u1="X" u2="œ" k="18" /> + <hkern u1="X" u2="Œ" k="18" /> + <hkern u1="X" u2="ő" k="18" /> + <hkern u1="X" u2="Ő" k="18" /> + <hkern u1="X" u2="ŏ" k="18" /> + <hkern u1="X" u2="Ŏ" k="18" /> + <hkern u1="X" u2="ō" k="18" /> + <hkern u1="X" u2="Ō" k="18" /> + <hkern u1="X" u2="Ģ" k="18" /> + <hkern u1="X" u2="Ġ" k="18" /> + <hkern u1="X" u2="Ğ" k="18" /> + <hkern u1="X" u2="Ĝ" k="18" /> + <hkern u1="X" u2="ě" k="18" /> + <hkern u1="X" u2="ę" k="18" /> + <hkern u1="X" u2="ė" k="18" /> + <hkern u1="X" u2="ĕ" k="18" /> + <hkern u1="X" u2="ē" k="18" /> + <hkern u1="X" u2="đ" k="13" /> + <hkern u1="X" u2="ď" k="13" /> + <hkern u1="X" u2="č" k="18" /> + <hkern u1="X" u2="Č" k="18" /> + <hkern u1="X" u2="ċ" k="18" /> + <hkern u1="X" u2="Ċ" k="18" /> + <hkern u1="X" u2="ĉ" k="18" /> + <hkern u1="X" u2="Ĉ" k="18" /> + <hkern u1="X" u2="ć" k="18" /> + <hkern u1="X" u2="Ć" k="18" /> + <hkern u1="X" u2="ö" k="18" /> + <hkern u1="X" u2="õ" k="18" /> + <hkern u1="X" u2="ô" k="18" /> + <hkern u1="X" u2="ó" k="18" /> + <hkern u1="X" u2="ò" k="18" /> + <hkern u1="X" u2="ð" k="13" /> + <hkern u1="X" u2="ë" k="18" /> + <hkern u1="X" u2="ê" k="18" /> + <hkern u1="X" u2="é" k="18" /> + <hkern u1="X" u2="è" k="18" /> + <hkern u1="X" u2="ç" k="18" /> + <hkern u1="X" u2="Ö" k="18" /> + <hkern u1="X" u2="Õ" k="18" /> + <hkern u1="X" u2="Ô" k="18" /> + <hkern u1="X" u2="Ó" k="18" /> + <hkern u1="X" u2="Ò" k="18" /> + <hkern u1="X" u2="Ç" k="18" /> + <hkern u1="X" u2="»" k="7" /> + <hkern u1="X" u2="·" k="38" /> + <hkern u1="X" u2="®" k="16" /> + <hkern u1="X" u2="­" k="46" /> + <hkern u1="X" u2="«" k="47" /> + <hkern u1="X" u2="y" k="30" /> + <hkern u1="X" u2="w" k="33" /> + <hkern u1="X" u2="v" k="34" /> + <hkern u1="X" u2="q" k="13" /> + <hkern u1="X" u2="o" k="18" /> + <hkern u1="X" u2="e" k="18" /> + <hkern u1="X" u2="d" k="13" /> + <hkern u1="X" u2="c" k="18" /> + <hkern u1="X" u2="Q" k="18" /> + <hkern u1="X" u2="O" k="18" /> + <hkern u1="X" u2="G" k="18" /> + <hkern u1="X" u2="C" k="18" /> + <hkern u1="X" u2="-" k="46" /> + <hkern u1="X" u2=" " k="5" /> + <hkern u1="Y" g2="z.sc" k="15" /> + <hkern u1="Y" g2="x.sc" k="16" /> + <hkern u1="Y" g2="v.sc" k="8" /> + <hkern u1="Y" u2="®" k="10" /> + <hkern u1="Y" u2="«" k="64" /> + <hkern u1="Y" u2="y" k="24" /> + <hkern u1="Y" u2="x" k="40" /> + <hkern u1="Y" u2="v" k="25" /> + <hkern u1="Y" u2=" " k="18" /> + <hkern u1="Z" u2="y" k="18" /> + <hkern u1="a" u2="y" k="6" /> + <hkern u1="a" u2="v" k="6" /> + <hkern u1="b" u2="y" k="6" /> + <hkern u1="b" u2="x" k="10" /> + <hkern u1="b" u2="v" k="6" /> + <hkern u1="c" u2="y" k="5" /> + <hkern u1="c" u2="x" k="5" /> + <hkern u1="c" u2="v" k="4" /> + <hkern u1="d" g2="napostrophe" k="-48" /> + <hkern u1="d" u2="ï" k="-19" /> + <hkern u1="e" u2="y" k="9" /> + <hkern u1="e" u2="x" k="7" /> + <hkern u1="e" u2="v" k="7" /> + <hkern u1="f" u2="…" k="45" /> + <hkern u1="f" u2="”" k="-24" /> + <hkern u1="f" u2="“" k="-24" /> + <hkern u1="f" u2="’" k="-24" /> + <hkern u1="f" u2="‘" k="-24" /> + <hkern u1="f" u2="—" k="3" /> + <hkern u1="f" u2="–" k="3" /> + <hkern u1="f" u2="ǿ" k="6" /> + <hkern u1="f" u2="ǽ" k="6" /> + <hkern u1="f" u2="ǻ" k="6" /> + <hkern u1="f" u2="œ" k="6" /> + <hkern u1="f" u2="ő" k="6" /> + <hkern u1="f" u2="ŏ" k="6" /> + <hkern u1="f" u2="ō" k="6" /> + <hkern u1="f" u2="ě" k="6" /> + <hkern u1="f" u2="ę" k="6" /> + <hkern u1="f" u2="ė" k="6" /> + <hkern u1="f" u2="ĕ" k="6" /> + <hkern u1="f" u2="ē" k="6" /> + <hkern u1="f" u2="č" k="6" /> + <hkern u1="f" u2="ċ" k="6" /> + <hkern u1="f" u2="ĉ" k="6" /> + <hkern u1="f" u2="ć" k="6" /> + <hkern u1="f" u2="ą" k="6" /> + <hkern u1="f" u2="ă" k="6" /> + <hkern u1="f" u2="ā" k="6" /> + <hkern u1="f" u2="ø" k="6" /> + <hkern u1="f" u2="ö" k="6" /> + <hkern u1="f" u2="õ" k="6" /> + <hkern u1="f" u2="ô" k="6" /> + <hkern u1="f" u2="ó" k="6" /> + <hkern u1="f" u2="ò" k="6" /> + <hkern u1="f" u2="ë" k="6" /> + <hkern u1="f" u2="ê" k="6" /> + <hkern u1="f" u2="é" k="6" /> + <hkern u1="f" u2="è" k="6" /> + <hkern u1="f" u2="ç" k="6" /> + <hkern u1="f" u2="æ" k="6" /> + <hkern u1="f" u2="å" k="6" /> + <hkern u1="f" u2="ä" k="6" /> + <hkern u1="f" u2="ã" k="6" /> + <hkern u1="f" u2="â" k="6" /> + <hkern u1="f" u2="á" k="6" /> + <hkern u1="f" u2="à" k="6" /> + <hkern u1="f" u2="­" k="3" /> + <hkern u1="f" u2="o" k="6" /> + <hkern u1="f" u2="e" k="6" /> + <hkern u1="f" u2="c" k="6" /> + <hkern u1="f" u2="a" k="6" /> + <hkern u1="f" u2="?" k="-23" /> + <hkern u1="f" u2="." k="45" /> + <hkern u1="f" u2="-" k="3" /> + <hkern u1="f" u2="," k="45" /> + <hkern u1="f" u2="'" k="-24" /> + <hkern u1="f" u2=""" k="-24" /> + <hkern u1="h" u2="y" k="8" /> + <hkern u1="h" u2="v" k="9" /> + <hkern u1="k" u2="y" k="18" /> + <hkern u1="l" u2="®" k="25" /> + <hkern u1="l" u2="«" k="10" /> + <hkern u1="l" u2="y" k="15" /> + <hkern u1="l" u2="v" k="19" /> + <hkern u1="m" u2="y" k="8" /> + <hkern u1="m" u2="v" k="9" /> + <hkern u1="n" u2="y" k="8" /> + <hkern u1="n" u2="v" k="9" /> + <hkern u1="o" u2="y" k="10" /> + <hkern u1="o" u2="x" k="13" /> + <hkern u1="o" u2="v" k="8" /> + <hkern u1="p" u2="y" k="6" /> + <hkern u1="p" u2="x" k="10" /> + <hkern u1="p" u2="v" k="6" /> + <hkern u1="r" u2="?" k="-20" /> + <hkern u1="s" u2="v" k="5" /> + <hkern u1="v" g2="aogonek.alt01" k="6" /> + <hkern u1="v" g2="aringacute.alt01" k="6" /> + <hkern u1="v" g2="aring.alt01" k="6" /> + <hkern u1="v" g2="abreve.alt01" k="6" /> + <hkern u1="v" g2="amacron.alt01" k="6" /> + <hkern u1="v" g2="adieresis.alt01" k="6" /> + <hkern u1="v" g2="atilde.alt01" k="6" /> + <hkern u1="v" g2="acircumflex.alt01" k="6" /> + <hkern u1="v" g2="aacute.alt01" k="6" /> + <hkern u1="v" g2="agrave.alt01" k="6" /> + <hkern u1="v" g2="a.alt01" k="6" /> + <hkern u1="v" u2="…" k="50" /> + <hkern u1="v" u2="”" k="-5" /> + <hkern u1="v" u2="“" k="-5" /> + <hkern u1="v" u2="’" k="-5" /> + <hkern u1="v" u2="‘" k="-5" /> + <hkern u1="v" u2="—" k="17" /> + <hkern u1="v" u2="–" k="17" /> + <hkern u1="v" u2="ș" k="8" /> + <hkern u1="v" u2="ǿ" k="10" /> + <hkern u1="v" u2="š" k="8" /> + <hkern u1="v" u2="ş" k="8" /> + <hkern u1="v" u2="ŝ" k="8" /> + <hkern u1="v" u2="ś" k="8" /> + <hkern u1="v" u2="œ" k="10" /> + <hkern u1="v" u2="ő" k="10" /> + <hkern u1="v" u2="ŏ" k="10" /> + <hkern u1="v" u2="ō" k="10" /> + <hkern u1="v" u2="ģ" k="6" /> + <hkern u1="v" u2="ġ" k="6" /> + <hkern u1="v" u2="ğ" k="6" /> + <hkern u1="v" u2="ĝ" k="6" /> + <hkern u1="v" u2="ě" k="10" /> + <hkern u1="v" u2="ę" k="10" /> + <hkern u1="v" u2="ė" k="10" /> + <hkern u1="v" u2="ĕ" k="10" /> + <hkern u1="v" u2="ē" k="10" /> + <hkern u1="v" u2="đ" k="6" /> + <hkern u1="v" u2="ď" k="6" /> + <hkern u1="v" u2="č" k="10" /> + <hkern u1="v" u2="ċ" k="10" /> + <hkern u1="v" u2="ĉ" k="10" /> + <hkern u1="v" u2="ć" k="10" /> + <hkern u1="v" u2="ø" k="10" /> + <hkern u1="v" u2="ö" k="10" /> + <hkern u1="v" u2="õ" k="10" /> + <hkern u1="v" u2="ô" k="10" /> + <hkern u1="v" u2="ó" k="10" /> + <hkern u1="v" u2="ò" k="10" /> + <hkern u1="v" u2="ð" k="6" /> + <hkern u1="v" u2="ë" k="10" /> + <hkern u1="v" u2="ê" k="10" /> + <hkern u1="v" u2="é" k="10" /> + <hkern u1="v" u2="è" k="10" /> + <hkern u1="v" u2="ç" k="10" /> + <hkern u1="v" u2="­" k="17" /> + <hkern u1="v" u2="«" k="8" /> + <hkern u1="v" u2="s" k="8" /> + <hkern u1="v" u2="q" k="6" /> + <hkern u1="v" u2="o" k="10" /> + <hkern u1="v" u2="g" k="6" /> + <hkern u1="v" u2="e" k="10" /> + <hkern u1="v" u2="d" k="6" /> + <hkern u1="v" u2="c" k="10" /> + <hkern u1="v" u2="." k="50" /> + <hkern u1="v" u2="-" k="17" /> + <hkern u1="v" u2="," k="50" /> + <hkern u1="v" u2="'" k="-5" /> + <hkern u1="v" u2=""" k="-5" /> + <hkern u1="w" u2="«" k="8" /> + <hkern u1="x" g2="aogonek.alt01" k="10" /> + <hkern u1="x" g2="aringacute.alt01" k="10" /> + <hkern u1="x" g2="aring.alt01" k="10" /> + <hkern u1="x" g2="abreve.alt01" k="10" /> + <hkern u1="x" g2="amacron.alt01" k="10" /> + <hkern u1="x" g2="adieresis.alt01" k="10" /> + <hkern u1="x" g2="atilde.alt01" k="10" /> + <hkern u1="x" g2="acircumflex.alt01" k="10" /> + <hkern u1="x" g2="aacute.alt01" k="10" /> + <hkern u1="x" g2="agrave.alt01" k="10" /> + <hkern u1="x" g2="a.alt01" k="10" /> + <hkern u1="x" u2="—" k="40" /> + <hkern u1="x" u2="–" k="40" /> + <hkern u1="x" u2="ǿ" k="8" /> + <hkern u1="x" u2="œ" k="13" /> + <hkern u1="x" u2="ő" k="13" /> + <hkern u1="x" u2="ŏ" k="13" /> + <hkern u1="x" u2="ō" k="13" /> + <hkern u1="x" u2="ģ" k="11" /> + <hkern u1="x" u2="ġ" k="11" /> + <hkern u1="x" u2="ğ" k="11" /> + <hkern u1="x" u2="ĝ" k="11" /> + <hkern u1="x" u2="ě" k="13" /> + <hkern u1="x" u2="ę" k="13" /> + <hkern u1="x" u2="ė" k="13" /> + <hkern u1="x" u2="ĕ" k="13" /> + <hkern u1="x" u2="ē" k="13" /> + <hkern u1="x" u2="đ" k="10" /> + <hkern u1="x" u2="ď" k="10" /> + <hkern u1="x" u2="č" k="13" /> + <hkern u1="x" u2="ċ" k="13" /> + <hkern u1="x" u2="ĉ" k="13" /> + <hkern u1="x" u2="ć" k="13" /> + <hkern u1="x" u2="ø" k="8" /> + <hkern u1="x" u2="ö" k="13" /> + <hkern u1="x" u2="õ" k="13" /> + <hkern u1="x" u2="ô" k="13" /> + <hkern u1="x" u2="ó" k="13" /> + <hkern u1="x" u2="ò" k="13" /> + <hkern u1="x" u2="ð" k="10" /> + <hkern u1="x" u2="ë" k="13" /> + <hkern u1="x" u2="ê" k="13" /> + <hkern u1="x" u2="é" k="13" /> + <hkern u1="x" u2="è" k="13" /> + <hkern u1="x" u2="ç" k="13" /> + <hkern u1="x" u2="­" k="40" /> + <hkern u1="x" u2="«" k="20" /> + <hkern u1="x" u2="q" k="10" /> + <hkern u1="x" u2="o" k="13" /> + <hkern u1="x" u2="g" k="11" /> + <hkern u1="x" u2="e" k="13" /> + <hkern u1="x" u2="d" k="10" /> + <hkern u1="x" u2="c" k="13" /> + <hkern u1="x" u2="-" k="40" /> + <hkern u1="y" g2="aogonek.alt01" k="9" /> + <hkern u1="y" g2="aringacute.alt01" k="9" /> + <hkern u1="y" g2="aring.alt01" k="9" /> + <hkern u1="y" g2="abreve.alt01" k="9" /> + <hkern u1="y" g2="amacron.alt01" k="9" /> + <hkern u1="y" g2="adieresis.alt01" k="9" /> + <hkern u1="y" g2="atilde.alt01" k="9" /> + <hkern u1="y" g2="acircumflex.alt01" k="9" /> + <hkern u1="y" g2="aacute.alt01" k="9" /> + <hkern u1="y" g2="agrave.alt01" k="9" /> + <hkern u1="y" g2="a.alt01" k="9" /> + <hkern u1="y" u2="…" k="50" /> + <hkern u1="y" u2="“" k="-5" /> + <hkern u1="y" u2="‘" k="-5" /> + <hkern u1="y" u2="—" k="19" /> + <hkern u1="y" u2="–" k="19" /> + <hkern u1="y" u2="ș" k="6" /> + <hkern u1="y" u2="ǿ" k="15" /> + <hkern u1="y" u2="ǽ" k="6" /> + <hkern u1="y" u2="ǻ" k="6" /> + <hkern u1="y" u2="š" k="6" /> + <hkern u1="y" u2="ş" k="6" /> + <hkern u1="y" u2="ŝ" k="6" /> + <hkern u1="y" u2="ś" k="6" /> + <hkern u1="y" u2="œ" k="15" /> + <hkern u1="y" u2="ő" k="15" /> + <hkern u1="y" u2="ŏ" k="15" /> + <hkern u1="y" u2="ō" k="15" /> + <hkern u1="y" u2="ģ" k="11" /> + <hkern u1="y" u2="ġ" k="11" /> + <hkern u1="y" u2="ğ" k="11" /> + <hkern u1="y" u2="ĝ" k="11" /> + <hkern u1="y" u2="ě" k="15" /> + <hkern u1="y" u2="ę" k="15" /> + <hkern u1="y" u2="ė" k="15" /> + <hkern u1="y" u2="ĕ" k="15" /> + <hkern u1="y" u2="ē" k="15" /> + <hkern u1="y" u2="đ" k="9" /> + <hkern u1="y" u2="ď" k="9" /> + <hkern u1="y" u2="č" k="15" /> + <hkern u1="y" u2="ċ" k="15" /> + <hkern u1="y" u2="ĉ" k="15" /> + <hkern u1="y" u2="ć" k="15" /> + <hkern u1="y" u2="ą" k="6" /> + <hkern u1="y" u2="ă" k="6" /> + <hkern u1="y" u2="ā" k="6" /> + <hkern u1="y" u2="ø" k="15" /> + <hkern u1="y" u2="ö" k="15" /> + <hkern u1="y" u2="õ" k="15" /> + <hkern u1="y" u2="ô" k="15" /> + <hkern u1="y" u2="ó" k="15" /> + <hkern u1="y" u2="ò" k="15" /> + <hkern u1="y" u2="ð" k="9" /> + <hkern u1="y" u2="ë" k="15" /> + <hkern u1="y" u2="ê" k="15" /> + <hkern u1="y" u2="é" k="15" /> + <hkern u1="y" u2="è" k="15" /> + <hkern u1="y" u2="ç" k="15" /> + <hkern u1="y" u2="æ" k="6" /> + <hkern u1="y" u2="å" k="6" /> + <hkern u1="y" u2="ä" k="6" /> + <hkern u1="y" u2="ã" k="6" /> + <hkern u1="y" u2="â" k="6" /> + <hkern u1="y" u2="á" k="6" /> + <hkern u1="y" u2="à" k="6" /> + <hkern u1="y" u2="­" k="19" /> + <hkern u1="y" u2="«" k="9" /> + <hkern u1="y" u2="s" k="6" /> + <hkern u1="y" u2="q" k="9" /> + <hkern u1="y" u2="o" k="15" /> + <hkern u1="y" u2="g" k="11" /> + <hkern u1="y" u2="e" k="15" /> + <hkern u1="y" u2="d" k="9" /> + <hkern u1="y" u2="c" k="15" /> + <hkern u1="y" u2="a" k="6" /> + <hkern u1="y" u2="." k="50" /> + <hkern u1="y" u2="-" k="19" /> + <hkern u1="y" u2="," k="50" /> + <hkern u1="y" u2="'" k="-5" /> + <hkern u1="y" u2=""" k="-5" /> + <hkern u1="¡" u2="Ỳ" k="34" /> + <hkern u1="¡" u2="Ẅ" k="17" /> + <hkern u1="¡" u2="Ẃ" k="17" /> + <hkern u1="¡" u2="Ẁ" k="17" /> + <hkern u1="¡" u2="ȷ" k="-24" /> + <hkern u1="¡" u2="Ț" k="25" /> + <hkern u1="¡" u2="Ÿ" k="34" /> + <hkern u1="¡" u2="Ŷ" k="34" /> + <hkern u1="¡" u2="Ŵ" k="17" /> + <hkern u1="¡" u2="Ŧ" k="25" /> + <hkern u1="¡" u2="Ť" k="25" /> + <hkern u1="¡" u2="Ţ" k="25" /> + <hkern u1="¡" u2="ĵ" k="-24" /> + <hkern u1="¡" u2="Ý" k="34" /> + <hkern u1="¡" u2="j" k="-24" /> + <hkern u1="¡" u2="Y" k="34" /> + <hkern u1="¡" u2="W" k="17" /> + <hkern u1="¡" u2="V" k="22" /> + <hkern u1="¡" u2="T" k="25" /> + <hkern u1="«" u2="X" k="7" /> + <hkern u1="«" u2="V" k="22" /> + <hkern u1="­" u2="Ŧ" k="45" /> + <hkern u1="­" u2="y" k="19" /> + <hkern u1="­" u2="x" k="40" /> + <hkern u1="­" u2="v" k="17" /> + <hkern u1="­" u2="X" k="46" /> + <hkern u1="­" u2="V" k="40" /> + <hkern u1="·" u2="X" k="38" /> + <hkern u1="·" u2="V" k="31" /> + <hkern u1="»" u2="Ỳ" k="64" /> + <hkern u1="»" u2="ẅ" k="8" /> + <hkern u1="»" u2="Ẅ" k="40" /> + <hkern u1="»" u2="ẃ" k="8" /> + <hkern u1="»" u2="Ẃ" k="40" /> + <hkern u1="»" u2="ẁ" k="8" /> + <hkern u1="»" u2="Ẁ" k="40" /> + <hkern u1="»" u2="Ț" k="45" /> + <hkern u1="»" u2="Ǻ" k="15" /> + <hkern u1="»" u2="Ÿ" k="64" /> + <hkern u1="»" u2="Ŷ" k="64" /> + <hkern u1="»" u2="ŵ" k="8" /> + <hkern u1="»" u2="Ŵ" k="40" /> + <hkern u1="»" u2="Ŧ" k="45" /> + <hkern u1="»" u2="Ť" k="45" /> + <hkern u1="»" u2="Ţ" k="45" /> + <hkern u1="»" u2="Ĵ" k="17" /> + <hkern u1="»" u2="Ą" k="15" /> + <hkern u1="»" u2="Ă" k="15" /> + <hkern u1="»" u2="Ā" k="15" /> + <hkern u1="»" u2="Ý" k="64" /> + <hkern u1="»" u2="Å" k="15" /> + <hkern u1="»" u2="Ä" k="15" /> + <hkern u1="»" u2="Ã" k="15" /> + <hkern u1="»" u2="Â" k="15" /> + <hkern u1="»" u2="Á" k="15" /> + <hkern u1="»" u2="À" k="15" /> + <hkern u1="»" u2="y" k="9" /> + <hkern u1="»" u2="x" k="20" /> + <hkern u1="»" u2="w" k="8" /> + <hkern u1="»" u2="v" k="8" /> + <hkern u1="»" u2="Y" k="64" /> + <hkern u1="»" u2="X" k="47" /> + <hkern u1="»" u2="W" k="40" /> + <hkern u1="»" u2="V" k="45" /> + <hkern u1="»" u2="T" k="45" /> + <hkern u1="»" u2="J" k="17" /> + <hkern u1="»" u2="A" k="15" /> + <hkern u1="¿" u2="Ỳ" k="67" /> + <hkern u1="¿" u2="Ẅ" k="57" /> + <hkern u1="¿" u2="Ẃ" k="57" /> + <hkern u1="¿" u2="Ẁ" k="57" /> + <hkern u1="¿" u2="ȷ" k="-64" /> + <hkern u1="¿" u2="Ț" k="64" /> + <hkern u1="¿" u2="Ÿ" k="67" /> + <hkern u1="¿" u2="Ŷ" k="67" /> + <hkern u1="¿" u2="Ŵ" k="57" /> + <hkern u1="¿" u2="Ŧ" k="64" /> + <hkern u1="¿" u2="Ť" k="64" /> + <hkern u1="¿" u2="Ţ" k="64" /> + <hkern u1="¿" u2="ĵ" k="-64" /> + <hkern u1="¿" u2="Ý" k="67" /> + <hkern u1="¿" u2="j" k="-64" /> + <hkern u1="¿" u2="Y" k="67" /> + <hkern u1="¿" u2="W" k="57" /> + <hkern u1="¿" u2="V" k="62" /> + <hkern u1="¿" u2="T" k="64" /> + <hkern u1="À" g2="v.sc" k="14" /> + <hkern u1="À" u2="®" k="44" /> + <hkern u1="À" u2="«" k="15" /> + <hkern u1="À" u2="y" k="36" /> + <hkern u1="À" u2="v" k="38" /> + <hkern u1="À" u2="V" k="36" /> + <hkern u1="À" u2="?" k="40" /> + <hkern u1="Á" g2="v.sc" k="14" /> + <hkern u1="Á" u2="®" k="44" /> + <hkern u1="Á" u2="«" k="15" /> + <hkern u1="Á" u2="y" k="36" /> + <hkern u1="Á" u2="v" k="38" /> + <hkern u1="Á" u2="V" k="36" /> + <hkern u1="Á" u2="?" k="40" /> + <hkern u1="Â" g2="v.sc" k="14" /> + <hkern u1="Â" u2="®" k="44" /> + <hkern u1="Â" u2="«" k="15" /> + <hkern u1="Â" u2="y" k="36" /> + <hkern u1="Â" u2="v" k="38" /> + <hkern u1="Â" u2="V" k="36" /> + <hkern u1="Â" u2="?" k="40" /> + <hkern u1="Ã" g2="v.sc" k="14" /> + <hkern u1="Ã" u2="®" k="44" /> + <hkern u1="Ã" u2="«" k="15" /> + <hkern u1="Ã" u2="y" k="36" /> + <hkern u1="Ã" u2="v" k="38" /> + <hkern u1="Ã" u2="V" k="36" /> + <hkern u1="Ã" u2="?" k="40" /> + <hkern u1="Ä" g2="v.sc" k="14" /> + <hkern u1="Ä" u2="®" k="44" /> + <hkern u1="Ä" u2="«" k="15" /> + <hkern u1="Ä" u2="y" k="36" /> + <hkern u1="Ä" u2="v" k="38" /> + <hkern u1="Ä" u2="V" k="36" /> + <hkern u1="Ä" u2="?" k="40" /> + <hkern u1="Å" g2="v.sc" k="14" /> + <hkern u1="Å" u2="®" k="44" /> + <hkern u1="Å" u2="«" k="15" /> + <hkern u1="Å" u2="y" k="36" /> + <hkern u1="Å" u2="v" k="38" /> + <hkern u1="Å" u2="V" k="36" /> + <hkern u1="Å" u2="?" k="40" /> + <hkern u1="Æ" g2="v.sc" k="12" /> + <hkern u1="Æ" u2="y" k="18" /> + <hkern u1="Æ" u2="v" k="18" /> + <hkern u1="Ç" u2="y" k="18" /> + <hkern u1="È" g2="v.sc" k="12" /> + <hkern u1="È" u2="y" k="18" /> + <hkern u1="È" u2="v" k="18" /> + <hkern u1="É" g2="v.sc" k="12" /> + <hkern u1="É" u2="y" k="18" /> + <hkern u1="É" u2="v" k="18" /> + <hkern u1="Ê" g2="v.sc" k="12" /> + <hkern u1="Ê" u2="y" k="18" /> + <hkern u1="Ê" u2="v" k="18" /> + <hkern u1="Ë" g2="v.sc" k="12" /> + <hkern u1="Ë" u2="y" k="18" /> + <hkern u1="Ë" u2="v" k="18" /> + <hkern u1="Ì" u2="ï" k="-19" /> + <hkern u1="Í" u2="ï" k="-19" /> + <hkern u1="Î" u2="ï" k="-19" /> + <hkern u1="Ï" u2="ï" k="-19" /> + <hkern u1="Ð" u2="X" k="18" /> + <hkern u1="Ð" u2="V" k="16" /> + <hkern u1="Ñ" u2="ï" k="-19" /> + <hkern u1="Ò" u2="X" k="19" /> + <hkern u1="Ò" u2="V" k="14" /> + <hkern u1="Ó" u2="X" k="19" /> + <hkern u1="Ó" u2="V" k="14" /> + <hkern u1="Ô" u2="X" k="19" /> + <hkern u1="Ô" u2="V" k="14" /> + <hkern u1="Õ" u2="X" k="19" /> + <hkern u1="Õ" u2="V" k="14" /> + <hkern u1="Ö" u2="X" k="19" /> + <hkern u1="Ö" u2="V" k="14" /> + <hkern u1="Ý" g2="z.sc" k="15" /> + <hkern u1="Ý" g2="x.sc" k="16" /> + <hkern u1="Ý" g2="v.sc" k="8" /> + <hkern u1="Ý" u2="®" k="10" /> + <hkern u1="Ý" u2="«" k="64" /> + <hkern u1="Ý" u2="y" k="24" /> + <hkern u1="Ý" u2="x" k="40" /> + <hkern u1="Ý" u2="v" k="25" /> + <hkern u1="Ý" u2=" " k="18" /> + <hkern u1="Þ" g2="aeacute.sc" k="53" /> + <hkern u1="Þ" g2="ae.sc" k="53" /> + <hkern u1="Þ" g2="aogonek.sc" k="24" /> + <hkern u1="Þ" g2="aringacute.sc" k="24" /> + <hkern u1="Þ" g2="aring.sc" k="24" /> + <hkern u1="Þ" g2="abreve.sc" k="24" /> + <hkern u1="Þ" g2="amacron.sc" k="24" /> + <hkern u1="Þ" g2="adieresis.sc" k="24" /> + <hkern u1="Þ" g2="atilde.sc" k="24" /> + <hkern u1="Þ" g2="acircumflex.sc" k="24" /> + <hkern u1="Þ" g2="aacute.sc" k="24" /> + <hkern u1="Þ" g2="agrave.sc" k="24" /> + <hkern u1="Þ" g2="a.sc" k="24" /> + <hkern u1="Þ" u2="…" k="56" /> + <hkern u1="Þ" u2="Ỳ" k="29" /> + <hkern u1="Þ" u2="Ẅ" k="10" /> + <hkern u1="Þ" u2="Ẃ" k="10" /> + <hkern u1="Þ" u2="Ẁ" k="10" /> + <hkern u1="Þ" u2="Ǽ" k="51" /> + <hkern u1="Þ" u2="Ǻ" k="22" /> + <hkern u1="Þ" u2="Ÿ" k="29" /> + <hkern u1="Þ" u2="Ŷ" k="29" /> + <hkern u1="Þ" u2="Ŵ" k="10" /> + <hkern u1="Þ" u2="Ą" k="22" /> + <hkern u1="Þ" u2="Ă" k="22" /> + <hkern u1="Þ" u2="Ā" k="22" /> + <hkern u1="Þ" u2="Ý" k="29" /> + <hkern u1="Þ" u2="Æ" k="51" /> + <hkern u1="Þ" u2="Å" k="22" /> + <hkern u1="Þ" u2="Ä" k="22" /> + <hkern u1="Þ" u2="Ã" k="22" /> + <hkern u1="Þ" u2="Â" k="22" /> + <hkern u1="Þ" u2="Á" k="22" /> + <hkern u1="Þ" u2="À" k="22" /> + <hkern u1="Þ" u2="Y" k="29" /> + <hkern u1="Þ" u2="X" k="27" /> + <hkern u1="Þ" u2="W" k="10" /> + <hkern u1="Þ" u2="V" k="18" /> + <hkern u1="Þ" u2="A" k="22" /> + <hkern u1="Þ" u2="." k="56" /> + <hkern u1="Þ" u2="," k="56" /> + <hkern u1="à" u2="y" k="6" /> + <hkern u1="à" u2="v" k="6" /> + <hkern u1="á" u2="y" k="6" /> + <hkern u1="á" u2="v" k="6" /> + <hkern u1="â" u2="y" k="6" /> + <hkern u1="â" u2="v" k="6" /> + <hkern u1="ã" u2="y" k="6" /> + <hkern u1="ã" u2="v" k="6" /> + <hkern u1="ä" u2="y" k="6" /> + <hkern u1="ä" u2="v" k="6" /> + <hkern u1="å" u2="y" k="6" /> + <hkern u1="å" u2="v" k="6" /> + <hkern u1="æ" u2="y" k="9" /> + <hkern u1="æ" u2="x" k="7" /> + <hkern u1="æ" u2="v" k="7" /> + <hkern u1="ç" u2="y" k="5" /> + <hkern u1="ç" u2="x" k="5" /> + <hkern u1="ç" u2="v" k="4" /> + <hkern u1="è" u2="y" k="9" /> + <hkern u1="è" u2="x" k="7" /> + <hkern u1="è" u2="v" k="7" /> + <hkern u1="é" u2="y" k="9" /> + <hkern u1="é" u2="x" k="7" /> + <hkern u1="é" u2="v" k="7" /> + <hkern u1="ê" u2="y" k="9" /> + <hkern u1="ê" u2="x" k="7" /> + <hkern u1="ê" u2="v" k="7" /> + <hkern u1="ë" u2="y" k="9" /> + <hkern u1="ë" u2="x" k="7" /> + <hkern u1="ë" u2="v" k="7" /> + <hkern u1="ï" u2="”" k="-52" /> + <hkern u1="ï" u2="“" k="-52" /> + <hkern u1="ï" u2="’" k="-52" /> + <hkern u1="ï" u2="‘" k="-52" /> + <hkern u1="ï" u2="ķ" k="-19" /> + <hkern u1="ï" u2="ħ" k="-19" /> + <hkern u1="ï" u2="ĥ" k="-19" /> + <hkern u1="ï" u2="þ" k="-19" /> + <hkern u1="ï" u2="k" k="-19" /> + <hkern u1="ï" u2="h" k="-19" /> + <hkern u1="ï" u2="b" k="-19" /> + <hkern u1="ï" u2="'" k="-52" /> + <hkern u1="ï" u2=""" k="-52" /> + <hkern u1="ñ" u2="y" k="8" /> + <hkern u1="ñ" u2="v" k="9" /> + <hkern u1="ò" u2="y" k="10" /> + <hkern u1="ò" u2="x" k="13" /> + <hkern u1="ò" u2="v" k="8" /> + <hkern u1="ó" u2="y" k="10" /> + <hkern u1="ó" u2="x" k="13" /> + <hkern u1="ó" u2="v" k="8" /> + <hkern u1="ô" u2="y" k="10" /> + <hkern u1="ô" u2="x" k="13" /> + <hkern u1="ô" u2="v" k="8" /> + <hkern u1="õ" u2="y" k="10" /> + <hkern u1="õ" u2="x" k="13" /> + <hkern u1="õ" u2="v" k="8" /> + <hkern u1="ö" u2="y" k="10" /> + <hkern u1="ö" u2="x" k="13" /> + <hkern u1="ö" u2="v" k="8" /> + <hkern u1="ø" u2="x" k="8" /> + <hkern u1="þ" u2="y" k="6" /> + <hkern u1="þ" u2="x" k="10" /> + <hkern u1="þ" u2="v" k="6" /> + <hkern u1="Ā" g2="v.sc" k="14" /> + <hkern u1="Ā" u2="®" k="44" /> + <hkern u1="Ā" u2="«" k="15" /> + <hkern u1="Ā" u2="y" k="36" /> + <hkern u1="Ā" u2="v" k="38" /> + <hkern u1="Ā" u2="V" k="36" /> + <hkern u1="Ā" u2="?" k="40" /> + <hkern u1="ā" u2="y" k="6" /> + <hkern u1="ā" u2="v" k="6" /> + <hkern u1="Ă" g2="v.sc" k="14" /> + <hkern u1="Ă" u2="®" k="44" /> + <hkern u1="Ă" u2="«" k="15" /> + <hkern u1="Ă" u2="y" k="36" /> + <hkern u1="Ă" u2="v" k="38" /> + <hkern u1="Ă" u2="V" k="36" /> + <hkern u1="Ă" u2="?" k="40" /> + <hkern u1="ă" u2="y" k="6" /> + <hkern u1="ă" u2="v" k="6" /> + <hkern u1="Ą" g2="v.sc" k="14" /> + <hkern u1="Ą" u2="®" k="44" /> + <hkern u1="Ą" u2="«" k="15" /> + <hkern u1="Ą" u2="y" k="36" /> + <hkern u1="Ą" u2="v" k="38" /> + <hkern u1="Ą" u2="V" k="36" /> + <hkern u1="Ą" u2="?" k="40" /> + <hkern u1="ą" u2="y" k="6" /> + <hkern u1="ą" u2="v" k="6" /> + <hkern u1="Ć" u2="y" k="18" /> + <hkern u1="ć" u2="y" k="5" /> + <hkern u1="ć" u2="x" k="5" /> + <hkern u1="ć" u2="v" k="4" /> + <hkern u1="Ĉ" u2="y" k="18" /> + <hkern u1="ĉ" u2="y" k="5" /> + <hkern u1="ĉ" u2="x" k="5" /> + <hkern u1="ĉ" u2="v" k="4" /> + <hkern u1="Ċ" u2="y" k="18" /> + <hkern u1="ċ" u2="y" k="5" /> + <hkern u1="ċ" u2="x" k="5" /> + <hkern u1="ċ" u2="v" k="4" /> + <hkern u1="Č" u2="y" k="18" /> + <hkern u1="č" u2="y" k="5" /> + <hkern u1="č" u2="x" k="5" /> + <hkern u1="č" u2="v" k="4" /> + <hkern u1="Ď" u2="X" k="18" /> + <hkern u1="Ď" u2="V" k="16" /> + <hkern u1="ď" u2="y" k="-24" /> + <hkern u1="ď" u2="x" k="-24" /> + <hkern u1="ď" u2="v" k="-29" /> + <hkern u1="ď" u2="?" k="-93" /> + <hkern u1="ď" u2="!" k="-73" /> + <hkern u1="Đ" u2="X" k="18" /> + <hkern u1="Đ" u2="V" k="16" /> + <hkern u1="đ" g2="napostrophe" k="-48" /> + <hkern u1="đ" u2="ï" k="-19" /> + <hkern u1="Ē" g2="v.sc" k="12" /> + <hkern u1="Ē" u2="y" k="18" /> + <hkern u1="Ē" u2="v" k="18" /> + <hkern u1="ē" u2="y" k="9" /> + <hkern u1="ē" u2="x" k="7" /> + <hkern u1="ē" u2="v" k="7" /> + <hkern u1="Ĕ" g2="v.sc" k="12" /> + <hkern u1="Ĕ" u2="y" k="18" /> + <hkern u1="Ĕ" u2="v" k="18" /> + <hkern u1="ĕ" u2="y" k="9" /> + <hkern u1="ĕ" u2="x" k="7" /> + <hkern u1="ĕ" u2="v" k="7" /> + <hkern u1="Ė" g2="v.sc" k="12" /> + <hkern u1="Ė" u2="y" k="18" /> + <hkern u1="Ė" u2="v" k="18" /> + <hkern u1="ė" u2="y" k="9" /> + <hkern u1="ė" u2="x" k="7" /> + <hkern u1="ė" u2="v" k="7" /> + <hkern u1="Ę" g2="v.sc" k="12" /> + <hkern u1="Ę" u2="y" k="18" /> + <hkern u1="Ę" u2="v" k="18" /> + <hkern u1="ę" u2="y" k="9" /> + <hkern u1="ę" u2="x" k="7" /> + <hkern u1="ę" u2="v" k="7" /> + <hkern u1="Ě" g2="v.sc" k="12" /> + <hkern u1="Ě" u2="y" k="18" /> + <hkern u1="Ě" u2="v" k="18" /> + <hkern u1="ě" u2="y" k="9" /> + <hkern u1="ě" u2="x" k="7" /> + <hkern u1="ě" u2="v" k="7" /> + <hkern u1="Ĝ" u2="X" k="19" /> + <hkern u1="Ĝ" u2="V" k="14" /> + <hkern u1="Ğ" u2="X" k="19" /> + <hkern u1="Ğ" u2="V" k="14" /> + <hkern u1="Ġ" u2="X" k="19" /> + <hkern u1="Ġ" u2="V" k="14" /> + <hkern u1="Ģ" u2="X" k="19" /> + <hkern u1="Ģ" u2="V" k="14" /> + <hkern u1="Ĥ" u2="ï" k="-19" /> + <hkern u1="ĥ" u2="y" k="8" /> + <hkern u1="ĥ" u2="v" k="9" /> + <hkern u1="Ħ" u2="ï" k="-19" /> + <hkern u1="ħ" u2="y" k="8" /> + <hkern u1="ħ" u2="v" k="9" /> + <hkern u1="Ĩ" u2="ï" k="-19" /> + <hkern u1="Ī" u2="ï" k="-19" /> + <hkern u1="Ĭ" u2="ï" k="-19" /> + <hkern u1="Į" u2="ï" k="-19" /> + <hkern u1="İ" u2="ï" k="-19" /> + <hkern u1="Ķ" g2="v.sc" k="35" /> + <hkern u1="Ķ" u2="®" k="51" /> + <hkern u1="Ķ" u2="«" k="50" /> + <hkern u1="Ķ" u2="y" k="22" /> + <hkern u1="Ķ" u2="v" k="34" /> + <hkern u1="ķ" u2="y" k="18" /> + <hkern u1="ĸ" u2="y" k="18" /> + <hkern u1="Ĺ" g2="v.sc" k="28" /> + <hkern u1="Ĺ" u2="®" k="36" /> + <hkern u1="Ĺ" u2="«" k="16" /> + <hkern u1="Ĺ" u2="y" k="20" /> + <hkern u1="Ĺ" u2="v" k="40" /> + <hkern u1="Ĺ" u2="V" k="66" /> + <hkern u1="Ĺ" u2="?" k="15" /> + <hkern u1="ĺ" u2="®" k="25" /> + <hkern u1="ĺ" u2="«" k="10" /> + <hkern u1="ĺ" u2="y" k="15" /> + <hkern u1="ĺ" u2="v" k="19" /> + <hkern u1="Ļ" g2="v.sc" k="28" /> + <hkern u1="Ļ" u2="®" k="36" /> + <hkern u1="Ļ" u2="«" k="16" /> + <hkern u1="Ļ" u2="y" k="20" /> + <hkern u1="Ļ" u2="v" k="40" /> + <hkern u1="Ļ" u2="V" k="66" /> + <hkern u1="Ļ" u2="?" k="15" /> + <hkern u1="ļ" u2="®" k="25" /> + <hkern u1="ļ" u2="«" k="10" /> + <hkern u1="ļ" u2="y" k="15" /> + <hkern u1="ļ" u2="v" k="19" /> + <hkern u1="Ľ" g2="v.sc" k="28" /> + <hkern u1="Ľ" u2="®" k="36" /> + <hkern u1="Ľ" u2="«" k="16" /> + <hkern u1="Ľ" u2="y" k="20" /> + <hkern u1="Ľ" u2="v" k="40" /> + <hkern u1="Ľ" u2="V" k="66" /> + <hkern u1="Ľ" u2="?" k="15" /> + <hkern u1="ľ" g2="f_f_l" k="-39" /> + <hkern u1="ľ" g2="f_f_i" k="-39" /> + <hkern u1="ľ" g2="fl" k="-39" /> + <hkern u1="ľ" g2="fi" k="-39" /> + <hkern u1="ľ" g2="f_f" k="-39" /> + <hkern u1="ľ" u2="”" k="-74" /> + <hkern u1="ľ" u2="“" k="-74" /> + <hkern u1="ľ" u2="’" k="-74" /> + <hkern u1="ľ" u2="‘" k="-74" /> + <hkern u1="ľ" u2="ẅ" k="-25" /> + <hkern u1="ľ" u2="ẃ" k="-25" /> + <hkern u1="ľ" u2="ẁ" k="-25" /> + <hkern u1="ľ" u2="ȷ" k="-53" /> + <hkern u1="ľ" u2="ț" k="-44" /> + <hkern u1="ľ" u2="ŵ" k="-25" /> + <hkern u1="ľ" u2="ų" k="-11" /> + <hkern u1="ľ" u2="ű" k="-11" /> + <hkern u1="ľ" u2="ů" k="-11" /> + <hkern u1="ľ" u2="ŭ" k="-11" /> + <hkern u1="ľ" u2="ū" k="-11" /> + <hkern u1="ľ" u2="ũ" k="-11" /> + <hkern u1="ľ" u2="ŧ" k="-44" /> + <hkern u1="ľ" u2="ť" k="-44" /> + <hkern u1="ľ" u2="ţ" k="-44" /> + <hkern u1="ľ" u2="ř" k="-11" /> + <hkern u1="ľ" u2="ŗ" k="-11" /> + <hkern u1="ľ" u2="ŕ" k="-11" /> + <hkern u1="ľ" u2="ŋ" k="-11" /> + <hkern u1="ľ" u2="ň" k="-11" /> + <hkern u1="ľ" u2="ņ" k="-11" /> + <hkern u1="ľ" u2="ń" k="-11" /> + <hkern u1="ľ" u2="ł" k="-49" /> + <hkern u1="ľ" u2="ŀ" k="-49" /> + <hkern u1="ľ" u2="ľ" k="-49" /> + <hkern u1="ľ" u2="ļ" k="-49" /> + <hkern u1="ľ" u2="ĺ" k="-49" /> + <hkern u1="ľ" u2="ķ" k="-39" /> + <hkern u1="ľ" u2="ĵ" k="-53" /> + <hkern u1="ľ" u2="ı" k="-11" /> + <hkern u1="ľ" u2="į" k="-49" /> + <hkern u1="ľ" u2="ĭ" k="-49" /> + <hkern u1="ľ" u2="ī" k="-49" /> + <hkern u1="ľ" u2="ĩ" k="-49" /> + <hkern u1="ľ" u2="ħ" k="-39" /> + <hkern u1="ľ" u2="ĥ" k="-39" /> + <hkern u1="ľ" u2="þ" k="-39" /> + <hkern u1="ľ" u2="ü" k="-11" /> + <hkern u1="ľ" u2="û" k="-11" /> + <hkern u1="ľ" u2="ú" k="-11" /> + <hkern u1="ľ" u2="ù" k="-11" /> + <hkern u1="ľ" u2="ñ" k="-11" /> + <hkern u1="ľ" u2="ï" k="-49" /> + <hkern u1="ľ" u2="î" k="-49" /> + <hkern u1="ľ" u2="í" k="-49" /> + <hkern u1="ľ" u2="ì" k="-49" /> + <hkern u1="ľ" u2="}" k="-58" /> + <hkern u1="ľ" u2="y" k="-20" /> + <hkern u1="ľ" u2="x" k="-20" /> + <hkern u1="ľ" u2="w" k="-25" /> + <hkern u1="ľ" u2="v" k="-25" /> + <hkern u1="ľ" u2="u" k="-11" /> + <hkern u1="ľ" u2="t" k="-44" /> + <hkern u1="ľ" u2="r" k="-11" /> + <hkern u1="ľ" u2="p" k="-11" /> + <hkern u1="ľ" u2="n" k="-11" /> + <hkern u1="ľ" u2="m" k="-11" /> + <hkern u1="ľ" u2="l" k="-49" /> + <hkern u1="ľ" u2="k" k="-39" /> + <hkern u1="ľ" u2="j" k="-53" /> + <hkern u1="ľ" u2="i" k="-49" /> + <hkern u1="ľ" u2="h" k="-39" /> + <hkern u1="ľ" u2="f" k="-39" /> + <hkern u1="ľ" u2="b" k="-39" /> + <hkern u1="ľ" u2="]" k="-58" /> + <hkern u1="ľ" u2="?" k="-79" /> + <hkern u1="ľ" u2=")" k="-58" /> + <hkern u1="ľ" u2="'" k="-74" /> + <hkern u1="ľ" u2=""" k="-74" /> + <hkern u1="ľ" u2="!" k="-59" /> + <hkern u1="Ł" g2="v.sc" k="28" /> + <hkern u1="Ł" u2="®" k="36" /> + <hkern u1="Ł" u2="«" k="16" /> + <hkern u1="Ł" u2="y" k="20" /> + <hkern u1="Ł" u2="v" k="40" /> + <hkern u1="Ł" u2="V" k="66" /> + <hkern u1="Ł" u2="?" k="15" /> + <hkern u1="ł" u2="®" k="25" /> + <hkern u1="ł" u2="«" k="10" /> + <hkern u1="ł" u2="y" k="15" /> + <hkern u1="ł" u2="v" k="19" /> + <hkern u1="Ń" u2="ï" k="-19" /> + <hkern u1="ń" u2="y" k="8" /> + <hkern u1="ń" u2="v" k="9" /> + <hkern u1="Ņ" u2="ï" k="-19" /> + <hkern u1="ņ" u2="y" k="8" /> + <hkern u1="ņ" u2="v" k="9" /> + <hkern u1="Ň" u2="ï" k="-19" /> + <hkern u1="ň" u2="y" k="8" /> + <hkern u1="ň" u2="v" k="9" /> + <hkern g1="napostrophe" u2="y" k="8" /> + <hkern g1="napostrophe" u2="v" k="9" /> + <hkern u1="Ŋ" u2="ï" k="-19" /> + <hkern u1="ŋ" u2="y" k="8" /> + <hkern u1="ŋ" u2="v" k="9" /> + <hkern u1="Ō" u2="X" k="19" /> + <hkern u1="Ō" u2="V" k="14" /> + <hkern u1="ō" u2="y" k="10" /> + <hkern u1="ō" u2="x" k="13" /> + <hkern u1="ō" u2="v" k="8" /> + <hkern u1="Ŏ" u2="X" k="19" /> + <hkern u1="Ŏ" u2="V" k="14" /> + <hkern u1="ŏ" u2="y" k="10" /> + <hkern u1="ŏ" u2="x" k="13" /> + <hkern u1="ŏ" u2="v" k="8" /> + <hkern u1="Ő" u2="X" k="19" /> + <hkern u1="Ő" u2="V" k="14" /> + <hkern u1="ő" u2="y" k="10" /> + <hkern u1="ő" u2="x" k="13" /> + <hkern u1="ő" u2="v" k="8" /> + <hkern u1="Œ" g2="v.sc" k="12" /> + <hkern u1="Œ" u2="y" k="18" /> + <hkern u1="Œ" u2="v" k="18" /> + <hkern u1="œ" u2="y" k="9" /> + <hkern u1="œ" u2="x" k="7" /> + <hkern u1="œ" u2="v" k="7" /> + <hkern u1="Ŕ" u2="«" k="16" /> + <hkern u1="Ŕ" u2="V" k="14" /> + <hkern u1="ŕ" u2="?" k="-20" /> + <hkern u1="Ŗ" u2="«" k="16" /> + <hkern u1="Ŗ" u2="V" k="14" /> + <hkern u1="ŗ" u2="?" k="-20" /> + <hkern u1="Ř" u2="«" k="16" /> + <hkern u1="Ř" u2="V" k="14" /> + <hkern u1="ř" u2="?" k="-20" /> + <hkern u1="Ś" u2="y" k="5" /> + <hkern u1="Ś" u2="x" k="10" /> + <hkern u1="Ś" u2="v" k="8" /> + <hkern u1="ś" u2="v" k="5" /> + <hkern u1="Ŝ" u2="y" k="5" /> + <hkern u1="Ŝ" u2="x" k="10" /> + <hkern u1="Ŝ" u2="v" k="8" /> + <hkern u1="ŝ" u2="v" k="5" /> + <hkern u1="Ş" u2="y" k="5" /> + <hkern u1="Ş" u2="x" k="10" /> + <hkern u1="Ş" u2="v" k="8" /> + <hkern u1="ş" u2="v" k="5" /> + <hkern u1="Š" u2="y" k="5" /> + <hkern u1="Š" u2="x" k="10" /> + <hkern u1="Š" u2="v" k="8" /> + <hkern u1="š" u2="v" k="5" /> + <hkern u1="Ţ" g2="z.sc" k="24" /> + <hkern u1="Ţ" g2="x.sc" k="37" /> + <hkern u1="Ţ" g2="v.sc" k="48" /> + <hkern u1="Ţ" u2="ï" k="-29" /> + <hkern u1="Ţ" u2="«" k="45" /> + <hkern u1="Ţ" u2="y" k="66" /> + <hkern u1="Ţ" u2="x" k="24" /> + <hkern u1="Ţ" u2="v" k="66" /> + <hkern u1="Ţ" u2="?" k="-20" /> + <hkern u1="Ţ" u2=" " k="10" /> + <hkern u1="Ť" g2="z.sc" k="24" /> + <hkern u1="Ť" g2="x.sc" k="37" /> + <hkern u1="Ť" g2="v.sc" k="48" /> + <hkern u1="Ť" u2="ï" k="-29" /> + <hkern u1="Ť" u2="«" k="45" /> + <hkern u1="Ť" u2="y" k="66" /> + <hkern u1="Ť" u2="x" k="24" /> + <hkern u1="Ť" u2="v" k="66" /> + <hkern u1="Ť" u2="?" k="-20" /> + <hkern u1="Ť" u2=" " k="10" /> + <hkern u1="ť" u2="ķ" k="-32" /> + <hkern u1="ť" u2="ħ" k="-32" /> + <hkern u1="ť" u2="ĥ" k="-32" /> + <hkern u1="ť" u2="þ" k="-32" /> + <hkern u1="ť" u2="y" k="-24" /> + <hkern u1="ť" u2="x" k="-24" /> + <hkern u1="ť" u2="v" k="-29" /> + <hkern u1="ť" u2="k" k="-32" /> + <hkern u1="ť" u2="h" k="-32" /> + <hkern u1="ť" u2="b" k="-32" /> + <hkern u1="ť" u2="?" k="-93" /> + <hkern u1="ť" u2="!" k="-73" /> + <hkern u1="Ŧ" g2="z.sc" k="24" /> + <hkern u1="Ŧ" g2="x.sc" k="37" /> + <hkern u1="Ŧ" g2="v.sc" k="48" /> + <hkern u1="Ŧ" u2="—" k="45" /> + <hkern u1="Ŧ" u2="–" k="45" /> + <hkern u1="Ŧ" u2="ï" k="-29" /> + <hkern u1="Ŧ" u2="­" k="45" /> + <hkern u1="Ŧ" u2="«" k="45" /> + <hkern u1="Ŧ" u2="y" k="66" /> + <hkern u1="Ŧ" u2="x" k="24" /> + <hkern u1="Ŧ" u2="v" k="66" /> + <hkern u1="Ŧ" u2="?" k="-20" /> + <hkern u1="Ŧ" u2="-" k="45" /> + <hkern u1="Ŧ" u2=" " k="10" /> + <hkern u1="Ŵ" g2="z.sc" k="6" /> + <hkern u1="Ŵ" g2="x.sc" k="6" /> + <hkern u1="Ŵ" u2="®" k="3" /> + <hkern u1="Ŵ" u2="«" k="40" /> + <hkern u1="Ŵ" u2="y" k="3" /> + <hkern u1="Ŵ" u2="x" k="16" /> + <hkern u1="Ŵ" u2="v" k="5" /> + <hkern u1="Ŵ" u2=" " k="19" /> + <hkern u1="ŵ" u2="«" k="8" /> + <hkern u1="Ŷ" g2="z.sc" k="15" /> + <hkern u1="Ŷ" g2="x.sc" k="16" /> + <hkern u1="Ŷ" g2="v.sc" k="8" /> + <hkern u1="Ŷ" u2="®" k="10" /> + <hkern u1="Ŷ" u2="«" k="64" /> + <hkern u1="Ŷ" u2="y" k="24" /> + <hkern u1="Ŷ" u2="x" k="40" /> + <hkern u1="Ŷ" u2="v" k="25" /> + <hkern u1="Ŷ" u2=" " k="18" /> + <hkern u1="Ÿ" g2="z.sc" k="15" /> + <hkern u1="Ÿ" g2="x.sc" k="16" /> + <hkern u1="Ÿ" g2="v.sc" k="8" /> + <hkern u1="Ÿ" u2="®" k="10" /> + <hkern u1="Ÿ" u2="«" k="64" /> + <hkern u1="Ÿ" u2="y" k="24" /> + <hkern u1="Ÿ" u2="x" k="40" /> + <hkern u1="Ÿ" u2="v" k="25" /> + <hkern u1="Ÿ" u2=" " k="18" /> + <hkern u1="Ź" u2="y" k="18" /> + <hkern u1="Ż" u2="y" k="18" /> + <hkern u1="Ž" u2="y" k="18" /> + <hkern u1="Ǻ" g2="v.sc" k="14" /> + <hkern u1="Ǻ" u2="®" k="44" /> + <hkern u1="Ǻ" u2="«" k="15" /> + <hkern u1="Ǻ" u2="y" k="36" /> + <hkern u1="Ǻ" u2="v" k="38" /> + <hkern u1="Ǻ" u2="V" k="36" /> + <hkern u1="Ǻ" u2="?" k="40" /> + <hkern u1="ǻ" u2="y" k="6" /> + <hkern u1="ǻ" u2="v" k="6" /> + <hkern u1="Ǽ" g2="v.sc" k="12" /> + <hkern u1="Ǽ" u2="y" k="18" /> + <hkern u1="Ǽ" u2="v" k="18" /> + <hkern u1="ǽ" u2="y" k="9" /> + <hkern u1="ǽ" u2="x" k="7" /> + <hkern u1="ǽ" u2="v" k="7" /> + <hkern u1="ǿ" u2="x" k="8" /> + <hkern u1="Ș" u2="y" k="5" /> + <hkern u1="Ș" u2="x" k="10" /> + <hkern u1="Ș" u2="v" k="8" /> + <hkern u1="ș" u2="v" k="5" /> + <hkern u1="Ț" g2="z.sc" k="24" /> + <hkern u1="Ț" g2="x.sc" k="37" /> + <hkern u1="Ț" g2="v.sc" k="48" /> + <hkern u1="Ț" u2="ï" k="-29" /> + <hkern u1="Ț" u2="«" k="45" /> + <hkern u1="Ț" u2="y" k="66" /> + <hkern u1="Ț" u2="x" k="24" /> + <hkern u1="Ț" u2="v" k="66" /> + <hkern u1="Ț" u2="?" k="-20" /> + <hkern u1="Ț" u2=" " k="10" /> + <hkern u1="Ẁ" g2="z.sc" k="6" /> + <hkern u1="Ẁ" g2="x.sc" k="6" /> + <hkern u1="Ẁ" u2="®" k="3" /> + <hkern u1="Ẁ" u2="«" k="40" /> + <hkern u1="Ẁ" u2="y" k="3" /> + <hkern u1="Ẁ" u2="x" k="16" /> + <hkern u1="Ẁ" u2="v" k="5" /> + <hkern u1="Ẁ" u2=" " k="19" /> + <hkern u1="ẁ" u2="«" k="8" /> + <hkern u1="Ẃ" g2="z.sc" k="6" /> + <hkern u1="Ẃ" g2="x.sc" k="6" /> + <hkern u1="Ẃ" u2="®" k="3" /> + <hkern u1="Ẃ" u2="«" k="40" /> + <hkern u1="Ẃ" u2="y" k="3" /> + <hkern u1="Ẃ" u2="x" k="16" /> + <hkern u1="Ẃ" u2="v" k="5" /> + <hkern u1="Ẃ" u2=" " k="19" /> + <hkern u1="ẃ" u2="«" k="8" /> + <hkern u1="Ẅ" g2="z.sc" k="6" /> + <hkern u1="Ẅ" g2="x.sc" k="6" /> + <hkern u1="Ẅ" u2="®" k="3" /> + <hkern u1="Ẅ" u2="«" k="40" /> + <hkern u1="Ẅ" u2="y" k="3" /> + <hkern u1="Ẅ" u2="x" k="16" /> + <hkern u1="Ẅ" u2="v" k="5" /> + <hkern u1="Ẅ" u2=" " k="19" /> + <hkern u1="ẅ" u2="«" k="8" /> + <hkern u1="Ỳ" g2="z.sc" k="15" /> + <hkern u1="Ỳ" g2="x.sc" k="16" /> + <hkern u1="Ỳ" g2="v.sc" k="8" /> + <hkern u1="Ỳ" u2="®" k="10" /> + <hkern u1="Ỳ" u2="«" k="64" /> + <hkern u1="Ỳ" u2="y" k="24" /> + <hkern u1="Ỳ" u2="x" k="40" /> + <hkern u1="Ỳ" u2="v" k="25" /> + <hkern u1="Ỳ" u2=" " k="18" /> + <hkern u1="–" u2="Ŧ" k="45" /> + <hkern u1="–" u2="y" k="19" /> + <hkern u1="–" u2="x" k="40" /> + <hkern u1="–" u2="v" k="17" /> + <hkern u1="–" u2="X" k="46" /> + <hkern u1="–" u2="V" k="40" /> + <hkern u1="—" u2="Ŧ" k="45" /> + <hkern u1="—" u2="y" k="19" /> + <hkern u1="—" u2="x" k="40" /> + <hkern u1="—" u2="v" k="17" /> + <hkern u1="—" u2="X" k="46" /> + <hkern u1="—" u2="V" k="40" /> + <hkern u1="‘" u2="ï" k="-52" /> + <hkern u1="‘" u2="y" k="-5" /> + <hkern u1="‘" u2="v" k="-5" /> + <hkern u1="’" u2="ï" k="-52" /> + <hkern u1="‚" u2="y" k="50" /> + <hkern u1="‚" u2="v" k="64" /> + <hkern u1="‚" u2="X" k="-17" /> + <hkern u1="‚" u2="V" k="90" /> + <hkern u1="“" u2="ï" k="-52" /> + <hkern u1="“" u2="y" k="-5" /> + <hkern u1="“" u2="v" k="-5" /> + <hkern u1="”" u2="ï" k="-52" /> + <hkern u1="„" u2="y" k="50" /> + <hkern u1="„" u2="v" k="64" /> + <hkern u1="„" u2="X" k="-17" /> + <hkern u1="„" u2="V" k="90" /> + <hkern u1="•" u2="X" k="38" /> + <hkern u1="•" u2="V" k="31" /> + <hkern u1="…" u2=" " k="16" /> + <hkern u1="‹" u2="X" k="7" /> + <hkern u1="‹" u2="V" k="22" /> + <hkern u1="∙" u2="X" k="38" /> + <hkern u1="∙" u2="V" k="31" /> + <hkern g1="fl" u2="®" k="25" /> + <hkern g1="fl" u2="«" k="10" /> + <hkern g1="fl" u2="y" k="15" /> + <hkern g1="fl" u2="v" k="19" /> + <hkern g1="f_f_l" u2="®" k="25" /> + <hkern g1="f_f_l" u2="«" k="10" /> + <hkern g1="f_f_l" u2="y" k="15" /> + <hkern g1="f_f_l" u2="v" k="19" /> + <hkern g1="a.sc" g2="v.sc" k="30" /> + <hkern g1="b.sc" g2="ygrave.sc" k="6" /> + <hkern g1="b.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="b.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="b.sc" g2="yacute.sc" k="6" /> + <hkern g1="b.sc" g2="y.sc" k="6" /> + <hkern g1="b.sc" g2="x.sc" k="6" /> + <hkern g1="d.sc" g2="x.sc" k="8" /> + <hkern g1="d.sc" g2="v.sc" k="10" /> + <hkern g1="f.sc" g2="jcircumflex.sc" k="50" /> + <hkern g1="f.sc" g2="aeacute.sc" k="44" /> + <hkern g1="f.sc" g2="ae.sc" k="44" /> + <hkern g1="f.sc" g2="aogonek.sc" k="14" /> + <hkern g1="f.sc" g2="aringacute.sc" k="14" /> + <hkern g1="f.sc" g2="aring.sc" k="14" /> + <hkern g1="f.sc" g2="abreve.sc" k="14" /> + <hkern g1="f.sc" g2="amacron.sc" k="14" /> + <hkern g1="f.sc" g2="adieresis.sc" k="14" /> + <hkern g1="f.sc" g2="atilde.sc" k="14" /> + <hkern g1="f.sc" g2="acircumflex.sc" k="14" /> + <hkern g1="f.sc" g2="aacute.sc" k="14" /> + <hkern g1="f.sc" g2="agrave.sc" k="14" /> + <hkern g1="f.sc" g2="j.sc" k="50" /> + <hkern g1="f.sc" g2="a.sc" k="14" /> + <hkern g1="l.sc" g2="v.sc" k="26" /> + <hkern g1="p.sc" g2="ygrave.sc" k="10" /> + <hkern g1="p.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="p.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="p.sc" g2="yacute.sc" k="10" /> + <hkern g1="p.sc" g2="jcircumflex.sc" k="70" /> + <hkern g1="p.sc" g2="aeacute.sc" k="70" /> + <hkern g1="p.sc" g2="ae.sc" k="70" /> + <hkern g1="p.sc" g2="aogonek.sc" k="28" /> + <hkern g1="p.sc" g2="aringacute.sc" k="28" /> + <hkern g1="p.sc" g2="aring.sc" k="28" /> + <hkern g1="p.sc" g2="abreve.sc" k="28" /> + <hkern g1="p.sc" g2="amacron.sc" k="28" /> + <hkern g1="p.sc" g2="adieresis.sc" k="28" /> + <hkern g1="p.sc" g2="atilde.sc" k="28" /> + <hkern g1="p.sc" g2="acircumflex.sc" k="28" /> + <hkern g1="p.sc" g2="aacute.sc" k="28" /> + <hkern g1="p.sc" g2="agrave.sc" k="28" /> + <hkern g1="p.sc" g2="y.sc" k="10" /> + <hkern g1="p.sc" g2="x.sc" k="15" /> + <hkern g1="p.sc" g2="j.sc" k="70" /> + <hkern g1="p.sc" g2="a.sc" k="28" /> + <hkern g1="q.sc" g2="ygrave.sc" k="10" /> + <hkern g1="q.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="q.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="q.sc" g2="yacute.sc" k="10" /> + <hkern g1="q.sc" g2="y.sc" k="10" /> + <hkern g1="r.sc" g2="v.sc" k="6" /> + <hkern g1="v.sc" g2="jcircumflex.sc" k="60" /> + <hkern g1="v.sc" g2="aeacute.sc" k="56" /> + <hkern g1="v.sc" g2="ae.sc" k="56" /> + <hkern g1="v.sc" g2="aogonek.sc" k="30" /> + <hkern g1="v.sc" g2="aringacute.sc" k="30" /> + <hkern g1="v.sc" g2="aring.sc" k="30" /> + <hkern g1="v.sc" g2="abreve.sc" k="30" /> + <hkern g1="v.sc" g2="amacron.sc" k="30" /> + <hkern g1="v.sc" g2="adieresis.sc" k="30" /> + <hkern g1="v.sc" g2="atilde.sc" k="30" /> + <hkern g1="v.sc" g2="acircumflex.sc" k="30" /> + <hkern g1="v.sc" g2="aacute.sc" k="30" /> + <hkern g1="v.sc" g2="agrave.sc" k="30" /> + <hkern g1="v.sc" g2="j.sc" k="60" /> + <hkern g1="v.sc" g2="a.sc" k="30" /> + <hkern g1="x.sc" g2="oslash.sc" k="6" /> + <hkern g1="x.sc" g2="ohungarumlaut.sc" k="6" /> + <hkern g1="x.sc" g2="obreve.sc" k="6" /> + <hkern g1="x.sc" g2="omacron.sc" k="6" /> + <hkern g1="x.sc" g2="odieresis.sc" k="6" /> + <hkern g1="x.sc" g2="otilde.sc" k="6" /> + <hkern g1="x.sc" g2="ocircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="oacute.sc" k="6" /> + <hkern g1="x.sc" g2="ograve.sc" k="6" /> + <hkern g1="x.sc" g2="gcommaaccent.sc" k="6" /> + <hkern g1="x.sc" g2="gdotaccent.sc" k="6" /> + <hkern g1="x.sc" g2="gbreve.sc" k="6" /> + <hkern g1="x.sc" g2="gcircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="ccedilla.sc" k="6" /> + <hkern g1="x.sc" g2="cdotaccent.sc" k="6" /> + <hkern g1="x.sc" g2="ccaron.sc" k="6" /> + <hkern g1="x.sc" g2="ccircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="cacute.sc" k="6" /> + <hkern g1="x.sc" g2="q.sc" k="6" /> + <hkern g1="x.sc" g2="o.sc" k="6" /> + <hkern g1="x.sc" g2="g.sc" k="6" /> + <hkern g1="x.sc" g2="c.sc" k="6" /> + <hkern g1="agrave.sc" g2="v.sc" k="30" /> + <hkern g1="aacute.sc" g2="v.sc" k="30" /> + <hkern g1="acircumflex.sc" g2="v.sc" k="30" /> + <hkern g1="atilde.sc" g2="v.sc" k="30" /> + <hkern g1="adieresis.sc" g2="v.sc" k="30" /> + <hkern g1="amacron.sc" g2="v.sc" k="30" /> + <hkern g1="abreve.sc" g2="v.sc" k="30" /> + <hkern g1="aring.sc" g2="v.sc" k="30" /> + <hkern g1="aringacute.sc" g2="v.sc" k="30" /> + <hkern g1="aogonek.sc" g2="v.sc" k="30" /> + <hkern g1="dcaron.sc" g2="x.sc" k="8" /> + <hkern g1="dcaron.sc" g2="v.sc" k="10" /> + <hkern g1="dcroat.sc" g2="x.sc" k="8" /> + <hkern g1="dcroat.sc" g2="v.sc" k="10" /> + <hkern g1="eth.sc" g2="x.sc" k="8" /> + <hkern g1="eth.sc" g2="v.sc" k="10" /> + <hkern g1="lacute.sc" g2="v.sc" k="26" /> + <hkern g1="lcaron.sc" g2="v.sc" k="26" /> + <hkern g1="lcommaaccent.sc" g2="v.sc" k="26" /> + <hkern g1="lslash.sc" g2="v.sc" k="26" /> + <hkern g1="racute.sc" g2="v.sc" k="6" /> + <hkern g1="rcaron.sc" g2="v.sc" k="6" /> + <hkern g1="rcommaaccent.sc" g2="v.sc" k="6" /> + <hkern g1="thorn.sc" g2="ygrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="yacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="jcircumflex.sc" k="40" /> + <hkern g1="thorn.sc" g2="aeacute.sc" k="36" /> + <hkern g1="thorn.sc" g2="ae.sc" k="36" /> + <hkern g1="thorn.sc" g2="aogonek.sc" k="10" /> + <hkern g1="thorn.sc" g2="aringacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="aring.sc" k="10" /> + <hkern g1="thorn.sc" g2="abreve.sc" k="10" /> + <hkern g1="thorn.sc" g2="amacron.sc" k="10" /> + <hkern g1="thorn.sc" g2="adieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="atilde.sc" k="10" /> + <hkern g1="thorn.sc" g2="acircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="aacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="agrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="y.sc" k="10" /> + <hkern g1="thorn.sc" g2="x.sc" k="10" /> + <hkern g1="thorn.sc" g2="j.sc" k="40" /> + <hkern g1="thorn.sc" g2="a.sc" k="10" /> + <hkern g1="four.prop" u2="…" k="-20" /> + <hkern g1="four.prop" u2="." k="-20" /> + <hkern g1="four.prop" u2="," k="-20" /> + <hkern g1="seven.prop" g2="four.prop" k="46" /> + <hkern g1="seven.prop" u2="…" k="60" /> + <hkern g1="seven.prop" u2="." k="60" /> + <hkern g1="seven.prop" u2="," k="60" /> + <hkern g1="four.onumprop" u2="…" k="-30" /> + <hkern g1="four.onumprop" u2="." k="-30" /> + <hkern g1="four.onumprop" u2="," k="-30" /> + <hkern g1="seven.onumprop" u2="…" k="20" /> + <hkern g1="seven.onumprop" u2="." k="20" /> + <hkern g1="seven.onumprop" u2="," k="20" /> + <hkern g1="q.alt01" u2="ȷ" k="-72" /> + <hkern g1="q.alt01" u2="ĵ" k="-72" /> + <hkern g1="q.alt01" u2="ģ" k="-24" /> + <hkern g1="q.alt01" u2="ġ" k="-24" /> + <hkern g1="q.alt01" u2="ğ" k="-24" /> + <hkern g1="q.alt01" u2="ĝ" k="-24" /> + <hkern g1="q.alt01" u2="p" k="-34" /> + <hkern g1="q.alt01" u2="j" k="-72" /> + <hkern g1="q.alt01" u2="g" k="-24" /> + <hkern g1="C.alt01" u2="X" k="17" /> + <hkern g1="C.alt01" u2="V" k="3" /> + <hkern g1="Cacute.alt01" u2="X" k="17" /> + <hkern g1="Cacute.alt01" u2="V" k="3" /> + <hkern g1="Ccircumflex.alt01" u2="X" k="17" /> + <hkern g1="Ccircumflex.alt01" u2="V" k="3" /> + <hkern g1="Ccaron.alt01" u2="X" k="17" /> + <hkern g1="Ccaron.alt01" u2="V" k="3" /> + <hkern g1="Cdotaccent.alt01" u2="X" k="17" /> + <hkern g1="Cdotaccent.alt01" u2="V" k="3" /> + <hkern g1="Ccedilla.alt01" u2="X" k="17" /> + <hkern g1="Ccedilla.alt01" u2="V" k="3" /> + <hkern g1="G.alt01" u2="X" k="19" /> + <hkern g1="G.alt01" u2="V" k="14" /> + <hkern g1="Gcircumflex.alt01" u2="X" k="19" /> + <hkern g1="Gcircumflex.alt01" u2="V" k="14" /> + <hkern g1="Gbreve.alt01" u2="X" k="19" /> + <hkern g1="Gbreve.alt01" u2="V" k="14" /> + <hkern g1="Gdotaccent.alt01" u2="X" k="19" /> + <hkern g1="Gdotaccent.alt01" u2="V" k="14" /> + <hkern g1="Gcommaaccent.alt01" u2="X" k="19" /> + <hkern g1="Gcommaaccent.alt01" u2="V" k="14" /> + <hkern g1="Z.alt01" u2="y" k="18" /> + <hkern g1="Zacute.alt01" u2="y" k="18" /> + <hkern g1="Zcaron.alt01" u2="y" k="18" /> + <hkern g1="Zdotaccent.alt01" u2="y" k="18" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="23" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="AE,AEacute" + k="25" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="J,Jcircumflex" + k="18" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="comma,period,ellipsis" + k="16" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="11" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="29" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="AE,AEacute" + k="30" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="J,Jcircumflex" + k="22" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="j.sc,jcircumflex.sc" + k="14" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="20" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="12" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="13" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="25" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="AE,AEacute" + k="28" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="J,Jcircumflex" + k="20" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="3" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="ae.sc,aeacute.sc" + k="6" /> + <hkern g1="Oslash,Oslashacute" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="Oslash,Oslashacute" + g2="AE,AEacute" + k="28" /> + <hkern g1="J,IJ,Jcircumflex" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="J,IJ,Jcircumflex" + g2="AE,AEacute" + k="22" /> + <hkern g1="J,IJ,Jcircumflex" + g2="J,Jcircumflex" + k="18" /> + <hkern g1="J,IJ,Jcircumflex" + g2="j.sc,jcircumflex.sc" + k="10" /> + <hkern g1="J,IJ,Jcircumflex" + g2="ae.sc,aeacute.sc" + k="12" /> + <hkern g1="J,IJ,Jcircumflex" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="quoteright,quotedblright" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="25" /> + <hkern g1="K,Kcommaaccent" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="13" /> + <hkern g1="K,Kcommaaccent" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="25" /> + <hkern g1="K,Kcommaaccent" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="periodcentered,bullet,uni2219" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="31" /> + <hkern g1="K,Kcommaaccent" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="12" /> + <hkern g1="K,Kcommaaccent" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="guillemotright,guilsinglright" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="3" /> + <hkern g1="K,Kcommaaccent" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="hyphen,uni00AD,endash,emdash" + k="19" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="comma,period,ellipsis" + k="-11" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="25" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="50" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="34" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="44" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="periodcentered,bullet,uni2219" + k="10" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="36" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="guillemotright,guilsinglright" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="12" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="periodcentered,bullet,uni2219" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="guillemotright,guilsinglright" + k="5" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="-20" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-12" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="5" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="10" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="AE,AEacute" + k="8" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="hyphen,uni00AD,endash,emdash" + k="80" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="comma,period,ellipsis" + k="97" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="colon,semicolon" + k="16" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-21" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quoteright,quotedblright" + k="-21" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="18" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="6" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="periodcentered,bullet,uni2219" + k="42" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="66" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="44" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="AE,AEacute" + k="81" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="J,Jcircumflex" + k="74" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="j.sc,jcircumflex.sc" + k="61" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="ae.sc,aeacute.sc" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="guillemotright,guilsinglright" + k="10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="54" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="35" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="oslash,oslashacute" + k="45" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="60" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="comma,period,ellipsis" + k="17" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="AE,AEacute" + k="22" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="J,Jcircumflex" + k="13" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="j.sc,jcircumflex.sc" + k="10" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="ae.sc,aeacute.sc" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="10" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="28" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="comma,period,ellipsis" + k="79" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="colon,semicolon" + k="23" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="35" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="33" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="periodcentered,bullet,uni2219" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="6" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="15" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="4" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="5" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="12" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="20" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="AE,AEacute" + k="72" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="J,Jcircumflex" + k="64" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="j.sc,jcircumflex.sc" + k="42" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="ae.sc,aeacute.sc" + k="46" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="26" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="8" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="33" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="32" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="28" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="8" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="10" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="oslash,oslashacute" + k="41" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="18" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="Oslash,Oslashacute" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="z,zacute,zdotaccent,zcaron" + k="18" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="hyphen,uni00AD,endash,emdash" + k="80" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="comma,period,ellipsis" + k="100" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="colon,semicolon" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="25" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="38" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="6" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="13" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="56" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="periodcentered,bullet,uni2219" + k="62" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="14" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="41" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="21" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="28" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="48" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="AE,AEacute" + k="83" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="J,Jcircumflex" + k="67" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="j.sc,jcircumflex.sc" + k="50" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="ae.sc,aeacute.sc" + k="55" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="42" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="guillemotright,guilsinglright" + k="35" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="56" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="49" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="41" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="28" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="oslash,oslashacute" + k="63" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="39" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="Oslash,Oslashacute" + k="26" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="z,zacute,zdotaccent,zcaron" + k="36" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="6" /> + <hkern g1="b,p,thorn" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="b,p,thorn" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="b,p,thorn" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="5" /> + <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="6" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="hyphen,uni00AD,endash,emdash" + k="30" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="11" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="10" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="10" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="hyphen,uni00AD,endash,emdash" + k="15" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="comma,period,ellipsis" + k="-16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="34" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quoteright,quotedblright" + k="27" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="23" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="3" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="13" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="guillemotright,guilsinglright" + k="5" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="7" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="comma,period,ellipsis" + k="50" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quoteright,quotedblright" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="8" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="24" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="oslash,oslashacute" + k="13" /> + <hkern g1="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="comma,period,ellipsis" + k="-13" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-6" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quoteright,quotedblright" + k="-6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="11" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="comma,period,ellipsis" + k="40" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quoteright,quotedblright" + k="-5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="8" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="oslash,oslashacute" + k="7" /> + <hkern g1="dcaron,tcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-88" /> + <hkern g1="dcaron,tcaron" + g2="quoteright,quotedblright" + k="-88" /> + <hkern g1="dcaron,tcaron" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="-43" /> + <hkern g1="dcaron,tcaron" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="-62" /> + <hkern g1="dcaron,tcaron" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="-14" /> + <hkern g1="dcaron,tcaron" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-48" /> + <hkern g1="dcaron,tcaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-29" /> + <hkern g1="dcaron,tcaron" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="-14" /> + <hkern g1="dcaron,tcaron" + g2="parenright,bracketright,braceright" + k="-67" /> + <hkern g1="dcaron,tcaron" + g2="b,h,k,thorn,hcircumflex,hbar,kcommaaccent" + k="-52" /> + <hkern g1="dcaron,tcaron" + g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek" + k="-62" /> + <hkern g1="dcaron,tcaron" + g2="j,jcircumflex,dotlessj" + k="-62" /> + <hkern g1="comma,period,ellipsis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="comma,period,ellipsis" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="80" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="28" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="80" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="11" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="J,Jcircumflex" + k="50" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="42" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="24" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="62" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="26" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="J,Jcircumflex" + k="35" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="10" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="14" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="35" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="J,Jcircumflex" + k="3" /> + <hkern g1="parenleft,bracketleft,braceleft" + g2="j,jcircumflex,dotlessj" + k="-24" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="comma,period,ellipsis" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-21" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-8" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-5" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="72" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="J,Jcircumflex" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="j.sc,jcircumflex.sc" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quoteright,quotedblright" + g2="comma,period,ellipsis" + k="70" /> + <hkern g1="quoteright,quotedblright" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="12" /> + <hkern g1="quoteright,quotedblright" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-21" /> + <hkern g1="quoteright,quotedblright" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="quoteright,quotedblright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="78" /> + <hkern g1="quoteright,quotedblright" + g2="J,Jcircumflex" + k="65" /> + <hkern g1="quoteright,quotedblright" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="74" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="60" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="-10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="j,jcircumflex,dotlessj" + k="-50" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="26" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="16" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="8" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="8" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="10" /> + <hkern g1="g.sc,o.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="10" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="6" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="26" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="28" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="10" /> + <hkern g1="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + g2="ae.sc,aeacute.sc" + k="6" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="j.sc,jcircumflex.sc" + k="48" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="26" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="ae.sc,aeacute.sc" + k="8" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="j.sc,jcircumflex.sc" + k="34" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="ae.sc,aeacute.sc" + k="34" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="16" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="10" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="j.sc,jcircumflex.sc" + k="40" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="ae.sc,aeacute.sc" + k="50" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="6" /> + </font> +</defs></svg> diff --git a/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b140c73b8e4886a49c37f2715bc6c840afff9d33 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf differ diff --git a/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff new file mode 100644 index 0000000000000000000000000000000000000000..7c4120adcbe8e6878e79d015ff909f49462a62e0 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff differ diff --git a/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8e2dac0b57042b32e6cc95239d9542235cd4d049 Binary files /dev/null and b/themes/doubleload/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 differ diff --git a/themes/doubleload/assets/css/styles-legacy.css b/themes/doubleload/assets/css/styles-legacy.css new file mode 100644 index 0000000000000000000000000000000000000000..9ff7fb68128bd2bb2ade32dc53ba6b43e47080f5 --- /dev/null +++ b/themes/doubleload/assets/css/styles-legacy.css @@ -0,0 +1,17 @@ +@media (min-width: 1366px) { + #postImage{ + width: 43em; + } +} +.postText{ + margin-top: -0.5em; +} +.serverInfo{ + display: -webkit-box !important +} +.serverInfo img{ + margin-top: 4px; +} +.serverInfo p { + margin-top: 5px; +} \ No newline at end of file diff --git a/themes/doubleload/assets/css/styles.css b/themes/doubleload/assets/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..e40cd980926e83f5780edb4e3c01d69f0c345726 --- /dev/null +++ b/themes/doubleload/assets/css/styles.css @@ -0,0 +1,114 @@ +@font-face {font-family: "DINNextLTPro-Condensed"; + src: url("fonts/13ba9c94a7f164d315c9044db6d513ef.eot"); /* IE9*/ + src: url("fonts/13ba9c94a7f164d315c9044db6d513ef.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.woff") format("woff"), /* chrome、firefox */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.svg#DINNextLTPro-Condensed") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "DINNextLTPro-MediumCond"; + src: url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot"); /* IE9*/ + src: url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff") format("woff"), /* chrome、firefox */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg#DINNextLTPro-MediumCond") format("svg"); /* iOS 4.1- */ +} +body{ + background-color: black; +} +.background{ + background-size: cover; + position:absolute; + top:0px; + right:0px; + bottom:0px; + left:0px; + z-index: -1; +} +.legacyClipPath{ + opacity: 0.749; + position: absolute; + left: 0px; + top: 0px; + width: 50em; + height: 100%; + background-position: right; + background-size: cover; +} + +.serverLogo{ + position: fixed; + width: 20%; + left: 5%; + top: 5%; + margin: auto; +} + +.rightBottom{ + position: fixed; + bottom: 0; + right: 0; +} +.gmodLoadingBar{ + width: 400px; + height: 66px; + margin: 10px; + background-color: #6f7277; +} + +.leftContent{ + position: fixed; + top: 40%; + left: 0; + margin: 0; + + display: flex; + flex-direction: column; + margin-left: 3em; +} +.leftContent img{ + height: 32px; +} + +.serverInfo{ + width: auto; + height: 64px; + color: white; + font-family: "DINNextLTPro-Condensed"; + margin-top: 1em; + + display: flex; + flex-direction: row; + align-items: center; +} +.serverInfo p{ + font-size: 36px; +} +.loadingDiv{ + color: white; + font-family: "DINNextLTPro-Condensed"; + font-size: 28px; + max-width: 13em; +} +.gmodLoadingBar2{ + margin-top: -1em; + height: 8px; + width: 1%; +} + +.postText{ + margin-top: 2em; + max-width: 30%; +} +.postText h1{ + color: white; + font-family: "DINNextLTPro-MediumCond"; + font-size: 2.5em; + font-weight: 400; +} +.postText p{ + color: white; + font-family: "DINNextLTPro-Condensed"; + font-size: 1.3em; +} \ No newline at end of file diff --git a/themes/doubleload/assets/images/black-clip-path.png b/themes/doubleload/assets/images/black-clip-path.png new file mode 100644 index 0000000000000000000000000000000000000000..9058bb0ff9c0598ddc21db64f12d06737a4ab1f4 Binary files /dev/null and b/themes/doubleload/assets/images/black-clip-path.png differ diff --git a/themes/doubleload/assets/images/black-clip-path.svg b/themes/doubleload/assets/images/black-clip-path.svg new file mode 100644 index 0000000000000000000000000000000000000000..2aa57e860dcb1c3747dbe007e47704b1203e2b7d --- /dev/null +++ b/themes/doubleload/assets/images/black-clip-path.svg @@ -0,0 +1,10 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1140" height="1080" viewBox="0 0 1140 1080"> + <defs> + <style> + .cls-1 { + opacity: 0.75; + } + </style> + </defs> + <image id="Calque_1" data-name="Calque 1" class="cls-1" width="1140" height="1080" xlink:href="data:img/png;base64,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"/> +</svg> diff --git a/themes/doubleload/assets/images/location.png b/themes/doubleload/assets/images/location.png new file mode 100644 index 0000000000000000000000000000000000000000..68055ca255d7674d4a2b81dec05881d5e346326d Binary files /dev/null and b/themes/doubleload/assets/images/location.png differ diff --git a/themes/doubleload/assets/images/themeTopImage.jpg b/themes/doubleload/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ca972b4ef51432169af325dc1fda6ef62130e79 Binary files /dev/null and b/themes/doubleload/assets/images/themeTopImage.jpg differ diff --git a/themes/doubleload/assets/images/user.png b/themes/doubleload/assets/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..01c46111a2761fa14cd9ac555746e5a9716dddf9 Binary files /dev/null and b/themes/doubleload/assets/images/user.png differ diff --git a/themes/doubleload/assets/includes/customFeatures.php b/themes/doubleload/assets/includes/customFeatures.php new file mode 100644 index 0000000000000000000000000000000000000000..abfeb05f97314d95007c9db124faa64d8448fe9a --- /dev/null +++ b/themes/doubleload/assets/includes/customFeatures.php @@ -0,0 +1,13 @@ +<?php +function customSidebar (){ + echo ('<a href="themeFeature.php?p=themeSettings" class="list-group-item list-group-item-action bg-light">Paramètres du thème</a>'); + echo ('<a href="themeFeature.php?p=importAssets" class="list-group-item list-group-item-action bg-light">Import theme asssets</a>'); +} +function customPage($page){ + return "../themes/".getParameters("theme")."/assets/includes/".$page; +} +if (getParameters("dlMainColor") == null){ + $sql = "INSERT INTO settings (parameter, value) VALUES ('dlMainColor', ?)"; + $bdd->prepare($sql)->execute(["#1194f0"]); +} +?> \ No newline at end of file diff --git a/themes/doubleload/assets/includes/importAssets b/themes/doubleload/assets/includes/importAssets new file mode 100644 index 0000000000000000000000000000000000000000..02729b3f940fc390f8a79186f47c542b5469ab31 --- /dev/null +++ b/themes/doubleload/assets/includes/importAssets @@ -0,0 +1,26 @@ +<?php +if (isset($_POST["submit"])) { + $files = ["https://i.imgur.com/whg5r4x.jpg", "https://i.imgur.com/WH0Fo56.jpg", "https://i.imgur.com/Y4Kkg8O.jpg", "https://i.imgur.com/5lhqnYM.jpg", "https://i.imgur.com/YcRXO5U.jpg"]; + $filesnames = array(); + foreach ($files as $fileurl) { + uploadfiles($fileurl); + array_push($filesnames, str_replace("https://i.imgur.com/", "", $fileurl)); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([json_encode($filesnames)]); + } + //Actualisation de la page + header('Location: ?p=importAssets&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Importer les assets du thème</h1> + <p>Ici tu peux importer les images de fond du thème. ^^</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Images de fond importées avec succès!</div>'); + } + ?> + <form method="post" action=""> + <button type="submit" name="submit" class="btn btn-success my-2">Importer</button> + </form> +</div> \ No newline at end of file diff --git a/themes/doubleload/assets/includes/themeSettings b/themes/doubleload/assets/includes/themeSettings new file mode 100644 index 0000000000000000000000000000000000000000..00267935bc547cb4cb95bb3cc3b8f180986012c8 --- /dev/null +++ b/themes/doubleload/assets/includes/themeSettings @@ -0,0 +1,30 @@ +<?php +if (isset($_POST["submit"])) { + //Modification des paramètres + $sql = "UPDATE settings SET value = ? WHERE parameter = 'dlMainColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor1"]]); + //Actualisation de la page + header('Location: ?p=themeSettings&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Paramètres du thème</h1> + <p>Ici tu peux changer les couleurs de l'écran de chargement.</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Paramètres mis à jour avec succès!</div>'); + } + ?> + <form method="post" action=""> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor1">Couleur de la barre de chargement</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("dlMainColor")?>;"></div> + </div> + <input type="text" id="inputColor1" name="inputColor1" class="form-control" value="<?=getParameters("dlMainColor")?>" placeholder="A beautiful color" required="required"> + </div> + </div> + <button type="submit" name="submit" value="update" class="btn btn-success my-2">Mettre à jour</button> + </form> +</div> \ No newline at end of file diff --git a/themes/doubleload/index.php b/themes/doubleload/index.php new file mode 100644 index 0000000000000000000000000000000000000000..9fc2b0f4f746c73f74eff9a4b1dfd08c4c8e1348 --- /dev/null +++ b/themes/doubleload/index.php @@ -0,0 +1,203 @@ +<?php +//Détection du naviguateur et récupération de l'ip +function getUserIpAddr(){ + if(!empty($_SERVER['HTTP_CLIENT_IP'])){ + //ip from share internet + $ip = $_SERVER['HTTP_CLIENT_IP']; + }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ + //ip pass from proxy + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + }else{ + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; +} +$browser = new Browser(); +if( $browser->getBrowser() == (Browser::BROWSER_CHROME OR Browser::BROWSER_EDGE) && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; //Version non Chromium de Garry's Mod +} else { + $oldWebBrowser = true; //Naviguateur & Version Chromium de Garry's Mod +} + +//Récupération du contenu depuis la base de donnée +$backgroundImage = json_decode(getParameters("backgroundImages")); + + //////////////////////////////// + // Récupère les posts/Astuces // +//////////////////////////////// +$res=$bdd->query("SELECT * FROM posts"); +$result = $res->fetchAll(); +$loadingPostsText = array(); //Création d'une liste +foreach ( $result as $row ) {; //Boucle qui s'éxecute à chaque post/Astuce + array_push($loadingPostsText, "<h1>".$row[1]."</h1>".$row[2]); //Assemble le titre et le texte du post/astuce (j'allais pas créer une variable juste pour le titre mdr) +} +$loadingPostsText = json_encode($loadingPostsText); //Encode en JSON pour pouvoir récupérer la variable plus bas +?> + +<!DOCTYPE html> +<html> +<head> + <title><?=getParameters("siteName")?></title> + <meta charset="utf-8"> + + <link rel="stylesheet" href="themes/<?=getParameters("theme")?>/assets/css/styles.css"> + <?php + if ($oldWebBrowser == true) { + echo ('<link rel="stylesheet" href="themes/'.getParameters("theme").'/assets/css/styles-legacy.css">'); + echo (''); + } + ?> + <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +</head> +<body> + <audio id="backMusic" preload="auto"></audio> + <!-- Fond --> + <div class="background"></div> + <div class="legacyClipPath" style="background-image: url('themes/<?=getParameters("theme")?>/assets/images/black-clip-path.png');"></div> + + <div class="rightBottom"> + <div class="gmodLoadingBar"></div> + </div> + + <div class="leftContent"> + <div class="serverContent"> + <div class="serverInfo"> + <img src="themes/<?=getParameters("theme")?>/assets/images/user.png"> + <p><?=$serverInfos['players'].'/'.$serverInfos['places']?> Joueurs</p> + </div> + <div class="serverInfo"> + <img src="themes/<?=getParameters("theme")?>/assets/images/location.png"> + <p><?=$serverInfos['map']?></p> + </div> + </div> + + <div class="loadingDiv"> + <p class="loadingText">Chargement - 1%</p> + <div class="gmodLoadingBar2" style="background-color: <?=getParameters("dlMainColor")?>"></div> + </div> + + <div class="postText"></div> + </div> + <img class="serverLogo" src="<?=getParameters("serverLogo")?>"> + + <script type="text/javascript"> + var backgroundImages = <?=getParameters("backgroundImages")?>; + + //1s = 1000 ms + var timeBackChange = <?=getParameters("timeBackChange")?>; + var timePostChange = <?=getParameters("timePostChange")?>; + + //Il est important de mettre le même nombre d'images que de tips, et dans le bon ordre. + var loadingPostsText = <?=$loadingPostsText?>; + + var playlist = <?=getParameters("musics")?>; + + //Permet de générer un nombre aléatoire entre 0 et un nombre défini + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + //////////////////////// + // Partie backgrounds // + //////////////////////// + var i = getRandomInt(backgroundImages.length); //Prend comme valeur le nombre d'éléments que contient la liste + var b = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + $(".background").css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + setInterval(function () { + b = i; + i = getRandomInt(backgroundImages.length); + while (i == b) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + i = getRandomInt(backgroundImages.length); + } + $(".background").fadeOut("slow", function () { + $(this).css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + $(this).fadeIn("slow"); + }); + }, timeBackChange); + + ////////////////////////// + // Partie Posts/astuces // + ////////////////////////// + var o = getRandomInt(loadingPostsText.length); //Prend comme valeur le nombre d'éléments que contient la liste + var c = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + + <?php + if ($oldWebBrowser == true) { ?> + $(".postText").html("<h1>Hep hep hep!</h1><p>Il semblerait que tu n'utilises pas la Bêta Chromium de Garry's Mod!Le naviguateur intégré est obsolète et ertains éléments risquent de en pas s'afficher correctement. Penses à faire le changement!</p>"); + <?php } else { ?> + $(".postText").html(loadingPostsText[0]); + <?php } ?> + + setInterval(function () { + c = o; + o = getRandomInt(loadingPostsText.length); + while (o == c) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + o = getRandomInt(loadingPostsText.length); + } + + $(".postText").fadeOut("slow", function () { + $(".postText").html(loadingPostsText[c]); + $(this).fadeIn("slow"); + }); + + }, timePostChange); + + $(document).ready(function() { + var backMusic = document.getElementById("backMusic"); + backMusic.volume = 0.3; + backMusic.controls = false; + + + function player(x) { + var i = 0; + backMusic.src = playlist[x]; // x is the index number of the playlist array + backMusic.load(); // use the load method when changing src + backMusic.play(); + backMusic.onended = function() { // Once the initial file is played it plays the rest of the files + /* This would be better as a 'for' loop */ + i++; + if (i > 2) { // ... Repeat + i = 0; // ^ + } // ^ + backMusic.src = playlist[i]; // Rinse, ^ + backMusic.load(); // Lather, ^ + backMusic.play(); // and.....^ + } + } + player(0); // Call the player() function at 0 index of playlist array + }); + + var totalFiles = 0; + function SetFilesTotal( total ) { + totalFiles = total; + } + + function SetFilesNeeded( needed ) { + $(".loadingText").html("File N°"+needed+"/"+totalFiles); + var percent = (needed / totalFiles*100); + $(".gmodLoadingBar2").css("width", percent+"%"); + console.log(totalFiles); + } + + function SetStatusChanged( status ) { + if (status == "Retrieving server info") { + $(".loadingText").html("Loading - 10%"); + $(".gmodLoadingBar2").css("width", "10%"); + } + if (status == "Workshop Complete") { + $(".loadingText").html("Loading - 75%"); + $(".gmodLoadingBar2").css("width", "75%"); + } + if (status == "Received all Lua files we needed!") { + $(".loadingText").html("Loading - 90%"); + $(".gmodLoadingBar2").css("width", "90%"); + } + if (status == "Starting Lua...") { + $(".loadingText").html("Loading - 95%"); + $(".gmodLoadingBar2").css("width", "95%"); + } + } + + </script> +</body> +</html> \ No newline at end of file diff --git a/themes/doubleload/theme.json b/themes/doubleload/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..05ecee7119ca9305e02c2561f0e9ccb5ed6d32af --- /dev/null +++ b/themes/doubleload/theme.json @@ -0,0 +1,11 @@ +{ + "name": "doubleload", + "showname": "Double load", + "version": "1.0", + "compatible": "1.1d", + "author": "SofianeLasri", + "description": "Deux barre de chargement? Pourquoi pas!", + "index": "index.php", + "features": ["dynamicBackgrounds", "tips", "musics"], + "include": "assets/includes/customFeatures.php" +} \ No newline at end of file diff --git a/themes/livinginabox/assets/css/styles-legacy.css b/themes/livinginabox/assets/css/styles-legacy.css new file mode 100644 index 0000000000000000000000000000000000000000..067eec3e25a92b29dcacca146799b2e6b436bef6 --- /dev/null +++ b/themes/livinginabox/assets/css/styles-legacy.css @@ -0,0 +1,3 @@ +.serverInfos{ + display: -webkit-box !important; +} \ No newline at end of file diff --git a/themes/livinginabox/assets/css/styles.css b/themes/livinginabox/assets/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..c7af5f83d325b4772df3e2ebc2350ab38640cb6a --- /dev/null +++ b/themes/livinginabox/assets/css/styles.css @@ -0,0 +1,81 @@ +@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@300;500&display=swap'); +body{ + background-color: black; +} +.background{ + background-size: cover; + position:absolute; + top:0px; + right:0px; + bottom:0px; + left:0px; + z-index: -1; +} + +.serverLogo{ + position: fixed; + width: 20%; + left: 0; + right: 0; + top: 5%; + margin: auto; +} + +.carboardbox{ + height: 30em; + width: 30em; + + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + border-radius: 20px; + text-align: center; +} +.topCBB{ + height: 2.5em; + width: 100%; + border-radius: 20px 20px 0 0; + font-family: 'Raleway', sans-serif; + font-weight: 300; + font-size: 1.8em; +} +.topCBB a{ + margin-left: 0.5em; + line-height: 2.5em; +} +.playerProfilPic{ + height: 10em; + width: 10em; + border-radius: 50%; + background-size: cover; + margin: 1em auto; + border: 4px solid; +} +.playerName{ + font-family: 'Raleway', sans-serif; + font-weight: 500; + font-size: 1.8em; + margin-top: -0.1em; +} +.serverInfos{ + display: flex; + width: 90%; + margin: 0 auto; +} +.leftPart{ + width: 20%; + text-align: left; +} +.leftPart img{ + width: 32px; +} +.rightPart{ + width: 80%; + text-align: right; + font-family: 'Raleway', sans-serif; + font-weight: 500; + font-size: 1.4em; +} \ No newline at end of file diff --git a/themes/livinginabox/assets/images/location.png b/themes/livinginabox/assets/images/location.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac243f691d3684125ac31664c92bed479a283d4 Binary files /dev/null and b/themes/livinginabox/assets/images/location.png differ diff --git a/themes/livinginabox/assets/images/themeTopImage.jpg b/themes/livinginabox/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb0b2141139e08c3aa4c5eda4c417f6221e142b2 Binary files /dev/null and b/themes/livinginabox/assets/images/themeTopImage.jpg differ diff --git a/themes/livinginabox/assets/images/user.png b/themes/livinginabox/assets/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc32ca73ae8351b5e5ed88ec2b4b64a46adace3 Binary files /dev/null and b/themes/livinginabox/assets/images/user.png differ diff --git a/themes/livinginabox/assets/images/vr-gaming.png b/themes/livinginabox/assets/images/vr-gaming.png new file mode 100644 index 0000000000000000000000000000000000000000..1a86bf4329e2c12170acc4f5b64901a2bc648ce0 Binary files /dev/null and b/themes/livinginabox/assets/images/vr-gaming.png differ diff --git a/themes/livinginabox/assets/includes/customFeatures.php b/themes/livinginabox/assets/includes/customFeatures.php new file mode 100644 index 0000000000000000000000000000000000000000..dc852f6000d118ffad9e8d8711a654695d96ba98 --- /dev/null +++ b/themes/livinginabox/assets/includes/customFeatures.php @@ -0,0 +1,13 @@ +<?php +function customSidebar (){ + echo ('<a href="themeFeature.php?p=themeSettings" class="list-group-item list-group-item-action bg-light">Paramètres du thème</a>'); + echo ('<a href="themeFeature.php?p=importAssets" class="list-group-item list-group-item-action bg-light">Import theme asssets</a>'); +} +function customPage($page){ + return "../themes/".getParameters("theme")."/assets/includes/".$page; +} +if (getParameters("cbMainColor") == null){ + $sql = "INSERT INTO settings (parameter, value) VALUES ('cbMainColor', ?), ('cbSecondaryColor', ?), ('cbThirdColor', ?), ('cbWhite', ?), ('cbBlack', ?), ('cbText', ?)"; + $bdd->prepare($sql)->execute(["#A67153", "#BF9780", "#F2D6B3", "#F2F2F2", "#262626", "Bienvenu sur mon serveur!"]); +} +?> \ No newline at end of file diff --git a/themes/livinginabox/assets/includes/importAssets b/themes/livinginabox/assets/includes/importAssets new file mode 100644 index 0000000000000000000000000000000000000000..89adadbddaf57ded7324ab8ac1e996c1ee92c70c --- /dev/null +++ b/themes/livinginabox/assets/includes/importAssets @@ -0,0 +1,26 @@ +<?php +if (isset($_POST["submit"])) { + $files = ["https://i.imgur.com/vg683oM.jpg", "https://i.imgur.com/S7xlewh.jpg", "https://i.imgur.com/3tS0RM8.jpg"]; + $filesnames = array(); + foreach ($files as $fileurl) { + uploadfiles($fileurl); + array_push($filesnames, str_replace("https://i.imgur.com/", "", $fileurl)); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([json_encode($filesnames)]); + } + //Actualisation de la page + header('Location: ?p=importAssets&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Importer les assets du thème</h1> + <p>Ici tu peux importer les images de fond du thème. ^^</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Images de fond importées avec succès!</div>'); + } + ?> + <form method="post" action=""> + <button type="submit" name="submit" class="btn btn-success my-2">Importer</button> + </form> +</div> \ No newline at end of file diff --git a/themes/livinginabox/assets/includes/themeSettings b/themes/livinginabox/assets/includes/themeSettings new file mode 100644 index 0000000000000000000000000000000000000000..835eadeda764677e80d55a8d521bb98033c4e665 --- /dev/null +++ b/themes/livinginabox/assets/includes/themeSettings @@ -0,0 +1,82 @@ +<?php +if (isset($_POST["submit"])) { + //Modification des paramètres + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbMainColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor1"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbSecondaryColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor2"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbThirdColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor3"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbWhite'"; + $bdd->prepare($sql)->execute([$_POST["inputCbWhite"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbBlack'"; + $bdd->prepare($sql)->execute([$_POST["inputCbBlack"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'cbText'"; + $bdd->prepare($sql)->execute([$_POST["inputCbText"]]); + //Actualisation de la page + header('Location: ?p=themeSettings&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Paramètres du thème</h1> + <p>Ici tu peux changer les couleurs de l'écran de chargement.</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Paramètres mis à jour avec succès!</div>'); + } + ?> + <form method="post" action=""> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor1">Couleur #1</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("cbMainColor")?>;"></div> + </div> + <input type="text" id="inputColor1" name="inputColor1" class="form-control" value="<?=getParameters("cbMainColor")?>" placeholder="Couleur #1" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor2">Couleur #2</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("cbSecondaryColor")?>;"></div> + </div> + <input type="text" id="inputColor2" name="inputColor2" class="form-control" value="<?=getParameters("cbSecondaryColor")?>" placeholder="Couleur #2" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor3">Couleur #3</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("cbThirdColor")?>;"></div> + </div> + <input type="text" id="inputColor3" name="inputColor3" class="form-control" value="<?=getParameters("cbThirdColor")?>" placeholder="Couleur #3" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputCbWhite">Blanc</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("cbWhite")?>;"></div> + </div> + <input type="text" id="inputCbWhite" name="inputCbWhite" class="form-control" value="<?=getParameters("cbWhite")?>" placeholder="Blanc" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputCbBlack">Noir</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("cbBlack")?>;"></div> + </div> + <input type="text" id="inputCbBlack" name="inputCbBlack" class="form-control" value="<?=getParameters("cbBlack")?>" placeholder="Noir" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <label for="inputCbText">Text d'accueil</label> + <input type="text" id="inputCbText" name="inputCbText" class="form-control" value="<?=getParameters("cbText")?>" placeholder="Bienvenu sur mon serveur!" required="required"> + </div> + </div> + <button type="submit" name="submit" value="update" class="btn btn-success my-2">Mettre à jour</button> + </form> +</div> \ No newline at end of file diff --git a/themes/livinginabox/index.php b/themes/livinginabox/index.php new file mode 100644 index 0000000000000000000000000000000000000000..5cb35f938edfe8f77af7c4307cee4830a1893974 --- /dev/null +++ b/themes/livinginabox/index.php @@ -0,0 +1,138 @@ +<?php +//Détection du naviguateur et récupération de l'ip +function getUserIpAddr(){ + if(!empty($_SERVER['HTTP_CLIENT_IP'])){ + //ip from share internet + $ip = $_SERVER['HTTP_CLIENT_IP']; + }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ + //ip pass from proxy + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + }else{ + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; +} +$browser = new Browser(); +if( $browser->getBrowser() == (Browser::BROWSER_CHROME OR Browser::BROWSER_EDGE) && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; //Version non Chromium de Garry's Mod +} else { + $oldWebBrowser = true; //Naviguateur & Version Chromium de Garry's Mod +} + +?> + +<!DOCTYPE html> +<html> +<head> + <title><?=getParameters("siteName")?></title> + <meta charset="utf-8"> + + <link rel="stylesheet" href="themes/<?=getParameters("theme")?>/assets/css/styles.css"> + <?php + if ($oldWebBrowser == true) { + echo ('<link rel="stylesheet" href="themes/'.getParameters("theme").'/assets/css/styles-legacy.css">'); + echo (''); + } + ?> + <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +</head> +<body> + <?php + if ($oldWebBrowser == false) { + echo('<style type="text/css"> + .background{ + filter: blur(8px); + -webkit-filter: blur(8px); + } + </style>'); + } + ?> + <audio id="backMusic" preload="auto"></audio> + <!-- Fond --> + <div class="background"></div> + <img class="serverLogo" src="<?=getParameters("serverLogo")?>"> + + <div class="carboardbox" style="background-color: <?=getParameters("cbThirdColor")?>;"> + <div class="topCBB" style="background-color: <?=getParameters("cbMainColor")?>; color: <?=getParameters("cbWhite")?>;"> + <a><?=getParameters("cbText")?></a> + </div> + <div class="playerProfilPic" style="background-image: url(<?=$playerSteamPic?>); border-color: <?=getParameters("cbMainColor")?>"></div> + <p class="playerName"><?=$playerSteamName?></p> + <div class="serverInfos"> + <div class="leftPart"><img src="themes/<?=getParameters("theme")?>/assets/images/user.png"></div> + <div class="rightPart" id="serverPlace" style="color: <?=getParameters("cbBlack")?>"></div> + </div> + <div class="serverInfos"> + <div class="leftPart"><img src="themes/<?=getParameters("theme")?>/assets/images/location.png"></div> + <div class="rightPart" id="map" style="color: <?=getParameters("cbBlack")?>"></div> + </div> + <div class="serverInfos"> + <div class="leftPart"><img src="themes/<?=getParameters("theme")?>/assets/images/vr-gaming.png"></div> + <div class="rightPart" id="gamemode" style="color: <?=getParameters("cbBlack")?>"></div> + </div> + </div> + + <script type="text/javascript"> + var backgroundImages = <?=getParameters("backgroundImages")?>; + + //1s = 1000 ms + var timeBackChange = <?=getParameters("timeBackChange")?>; + var playlist = <?=getParameters("musics")?>; + + //Permet de générer un nombre aléatoire entre 0 et un nombre défini + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + //////////////////////// + // Partie backgrounds // + //////////////////////// + var i = getRandomInt(backgroundImages.length); //Prend comme valeur le nombre d'éléments que contient la liste + var b = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + $(".background").css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + setInterval(function () { + b = i; + i = getRandomInt(backgroundImages.length); + while (i == b) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + i = getRandomInt(backgroundImages.length); + } + $(".background").fadeOut("slow", function () { + $(this).css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + $(this).fadeIn("slow"); + }); + }, timeBackChange); + + $(document).ready(function() { + var backMusic = document.getElementById("backMusic"); + backMusic.volume = 0.3; + backMusic.controls = false; + + + function player(x) { + var i = 0; + backMusic.src = playlist[x]; // x is the index number of the playlist array + backMusic.load(); // use the load method when changing src + backMusic.play(); + backMusic.onended = function() { // Once the initial file is played it plays the rest of the files + /* This would be better as a 'for' loop */ + i++; + if (i > 2) { // ... Repeat + i = 0; // ^ + } // ^ + backMusic.src = playlist[i]; // Rinse, ^ + backMusic.load(); // Lather, ^ + backMusic.play(); // and.....^ + } + } + player(0); // Call the player() function at 0 index of playlist array + }); + + //Récupération des infos de la partie + function GameDetails( servername, serverurl, mapname, maxplayers, steamid, gamemode, volume, language ) { + $("#map").html(mapname); + $("#serverPlace").html(maxplayers); + $("#gamemode").html(gamemode); + } + </script> +</body> +</html> \ No newline at end of file diff --git a/themes/livinginabox/theme.json b/themes/livinginabox/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..64508d9d519b4f7f6cd6f295d8af590cdc25ac67 --- /dev/null +++ b/themes/livinginabox/theme.json @@ -0,0 +1,11 @@ +{ + "name": "livinginabox", + "showname": "Living in a cardboard box", + "version": "1.0", + "compatible": "1.1c", + "author": "SofianeLasri", + "description": "Parfois, une simple boite suffis largement.", + "index": "index.php", + "features": ["dynamicBackgrounds", "musics"], + "include": "assets/includes/customFeatures.php" +} \ No newline at end of file diff --git a/themes/readme.md b/themes/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..a5ac2a796c130beb9e1e085b663d31ae57af0372 --- /dev/null +++ b/themes/readme.md @@ -0,0 +1,2 @@ +Les thèmes doivent être placé dans des dossiers portant le même nom que leur nom d'usage. +VOIR https://vbcms.sl-projects.com/doc-theme-intro.php \ No newline at end of file diff --git a/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot new file mode 100644 index 0000000000000000000000000000000000000000..1fc7e1c07ecb7077d5eca9f6a67bd39aacdc55c1 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.eot differ diff --git a/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg new file mode 100644 index 0000000000000000000000000000000000000000..b51c9685a7d1c7f448bfd3d9a8dc09aff8452c0a --- /dev/null +++ b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.svg @@ -0,0 +1,4899 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Aug 27 15:54:36 2019 + By www +Copyright (c) 2008 - 2009 Linotype GmbH, www.linotype.com. All rights reserved. This font software may not be reproduced, modified, disclosed or transferred without the express written approval of Linotype GmbH. +</metadata> +<defs> +<font id="DINNextLTPro-Condensed" horiz-adv-x="386" > + <font-face + font-family="DIN Next LT Pro Condensed" + font-weight="400" + font-stretch="condensed" + units-per-em="1000" + panose-1="2 11 5 6 2 2 3 5 2 3" + ascent="750" + descent="-250" + x-height="479" + cap-height="680" + bbox="-82.6923 -210 835 903" + underline-thickness="50" + underline-position="-50" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="376" +d="M0 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10h-356q-10 0 -10 10zM48 52q0 -6 6 -6h267q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576zM171 222q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44q0 -11 -11 -9 +l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10h-33zM159 124v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10h-38q-10 0 -10 10z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="542" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM225 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41z" /> + <glyph glyph-name="ij" unicode="ij" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM321 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM213 -180h-12q-10 0 -10 10v52 +q0 10 10 10h11q21 2 30 13t9 37v527q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="napostrophe" unicode=""n" horiz-adv-x="393" +d="M12 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="488" +d="M141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57 +q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="fi" unicode="fi" horiz-adv-x="437" +d="M371 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM368 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18 +q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="fl" unicode="fl" horiz-adv-x="465" +d="M425 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10 +h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="681" +d="M615 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM612 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18 +q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53 +q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="709" +d="M669 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10 +h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10zM384 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10 +t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name=".notdef" horiz-adv-x="376" +d="M0 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10h-356q-10 0 -10 10zM48 52q0 -6 6 -6h267q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576zM171 222q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44q0 -11 -11 -9 +l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10h-33zM159 124v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10h-38q-10 0 -10 10z" /> + <glyph glyph-name=".null" horiz-adv-x="500" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="190" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="227" +d="M97 170q-10 0 -10 10l-16 490q0 10 10 10h65q10 0 10 -10l-16 -490q0 -10 -10 -10h-33zM71 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="254" +d="M163 506q-10 0 -10 10v154q0 10 10 10h40q10 0 10 -10v-154q0 -10 -10 -10h-40zM51 506q-10 0 -10 10v154q0 10 10 10h39q10 0 10 -10v-154q0 -10 -10 -10h-39z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="512" +d="M101 10l22 213h-53q-10 0 -10 10v38q0 10 10 10h59l15 141h-56q-10 0 -10 10v37q0 10 10 10h62l20 191q2 10 11 10h39q11 0 9 -10l-20 -191h115l20 191q2 10 11 10h39q11 0 9 -10l-20 -191h59q10 0 10 -10v-37q0 -10 -10 -10h-65l-15 -141h61q10 0 10 -10v-38 +q0 -10 -10 -10h-67l-22 -213q-2 -10 -11 -10h-39q-11 0 -9 10l22 213h-115l-22 -213q-2 -10 -11 -10h-39q-11 0 -9 10zM188 281h115l15 141h-115z" /> + <glyph glyph-name="dollar" unicode="$" +d="M42 162q0 10 8 11l52 9q11 1 11 -9q1 -54 16 -78.5t47 -29.5v254l-19 8q-62 24 -85 64t-23 120q0 168 127 177v41q0 10 10 10h15q10 0 10 -10v-41q61 -6 90 -45t34 -112q1 -9 -8 -11l-51 -8q-9 -2 -11 8q-3 45 -15 67t-39 27v-223l19 -7q62 -24 86 -65.5t24 -127.5 +q0 -100 -31 -147t-98 -52v-59q0 -10 -10 -10h-15q-10 0 -10 10v59q-67 4 -99 46t-35 124zM176 405v209q-28 -4 -40.5 -27.5t-12.5 -71.5t11 -71.5t42 -38.5zM211 65q29 4 42 30t13 87q0 54 -12 81t-43 42v-240z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="649" +d="M172 1l246 678q4 10 13 10h38q10 0 7 -10l-245 -678q-4 -10 -13 -10h-39q-10 0 -7 10zM154 329q-68 0 -87 58q-7 22 -7 121q0 98 7 120q19 58 87 58t86 -58q7 -22 7 -120q0 -99 -7 -121q-18 -58 -86 -58zM154 381q26 0 32 22q4 9 4 105q0 95 -4 104q-6 22 -32 22 +q-25 0 -33 -22q-4 -14 -4 -104q0 -91 4 -105q8 -22 33 -22zM408 52q-7 22 -7 120q0 99 7 121q19 58 87 58t86 -58q8 -22 8 -121q0 -98 -8 -120q-18 -58 -86 -58t-87 58zM462 68q8 -22 33 -22q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-25 0 -33 -22q-4 -14 -4 -105 +q0 -90 4 -104z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="533" +d="M66 139q0 48 28.5 98.5t95.5 129.5l-14 24q-62 107 -62 164q0 61 37 97.5t95 36.5q59 0 96 -36.5t37 -97.5q0 -41 -22.5 -84t-80.5 -111l87 -151l46 80q5 9 13 4l39 -22q8 -5 3 -14l-63 -113l28 -48q14 -26 31 -26h4q10 0 10 -10v-50q0 -10 -10 -10h-22q-24 0 -36.5 8 +t-25.5 31l-21 36q-60 -84 -149 -84q-67 0 -105.5 40t-38.5 108zM239 424q41 48 55 75.5t14 57.5q0 33 -16.5 51t-44.5 18t-44.5 -18t-16.5 -51q0 -39 53 -133zM138 141q0 -38 20.5 -59.5t55.5 -21.5q30 0 55 17.5t53 60.5l-95 165q-49 -57 -69 -92.5t-20 -69.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="141" +d="M51 506q-10 0 -10 10v154q0 10 10 10h39q10 0 10 -10v-154q0 -10 -10 -10h-39z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="255" +d="M157 -74q-89 187 -89 402t89 402q3 10 13 10h34q10 0 7 -10q-65 -192 -65 -402t65 -402q3 -10 -7 -10h-34q-10 0 -13 10z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="255" +d="M44 -74q66 195 66 402t-66 402q-3 10 7 10h35q8 0 13 -10q88 -185 88 -402t-88 -402q-5 -10 -13 -10h-35q-10 0 -7 10z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="326" +d="M149 396q-10 0 -10 10v91l-65 -39q-8 -5 -13 3l-14 26q-5 9 3 14l65 37l-65 37q-8 5 -3 14l14 26q5 8 13 3l65 -39v91q0 10 10 10h28q10 0 10 -10l-1 -91l66 39q8 5 13 -3l15 -26q5 -9 -3 -14l-67 -37l67 -37q8 -5 3 -14l-15 -26q-5 -8 -13 -3l-66 39l1 -91 +q0 -10 -10 -10h-28z" /> + <glyph glyph-name="plus" unicode="+" +d="M157 130v105q0 6 -6 6h-103q-10 0 -10 10v50q0 10 10 10h103q6 0 6 6v105q0 10 10 10h52q10 0 10 -10v-105q0 -6 6 -6h103q10 0 10 -10v-50q0 -10 -10 -10h-103q-6 0 -6 -6v-105q0 -10 -10 -10h-52q-10 0 -10 10z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="179" +d="M50 -93v187q0 10 10 10h59q10 0 10 -10v-75q0 -16 -6 -26l-54 -88q-4 -7 -11 -7q-8 0 -8 9z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="335" +d="M51 230q-10 0 -10 10v52q0 10 10 10h232q10 0 10 -10v-52q0 -10 -10 -10h-232z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="185" +d="M50 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="234" +d="M25 1l124 678q2 10 11 10h41q11 0 9 -10l-125 -678q-1 -10 -11 -10h-40q-11 0 -9 10z" /> + <glyph glyph-name="zero" unicode="0" +d="M61 80q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89t-132 89zM134 104q14 -40 59 -40q46 0 58 40q7 20 7 236t-7 236q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236t6 -236z" /> + <glyph glyph-name="one" unicode="1" +d="M178 10v577h-1l-86 -65q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v62q0 8 9 16l87 67q9 6 17 6h53q10 0 10 -10v-660q0 -10 -10 -10h-58q-10 0 -10 10z" /> + <glyph glyph-name="two" unicode="2" +d="M52 10v51q0 9 5 18l170 320q29 54 29 122q0 41 -5 55q-14 40 -60 40q-45 0 -59 -40q-5 -14 -5 -70q0 -12 -12 -10l-54 6q-9 2 -9 12q0 60 8 85q30 90 132 90t132 -89q9 -28 9 -79q0 -84 -41 -161l-156 -287v-1h187q10 0 10 -10v-52q0 -10 -10 -10h-261q-10 0 -10 10z" /> + <glyph glyph-name="three" unicode="3" +d="M59 81q-9 29 -9 80q0 11 10 12l54 5q12 2 12 -9q0 -51 5 -65q14 -40 59 -40q46 0 59 40q5 14 5 87q0 75 -5 88q-13 39 -63 39h-16q-10 0 -10 10v51q0 10 10 10h16q50 0 63 38q5 14 5 77q0 58 -5 72q-13 40 -59 40q-45 0 -59 -40q-5 -14 -5 -65q0 -11 -12 -9l-54 5 +q-10 1 -10 12q0 51 9 80q30 90 132 90t132 -89q8 -25 8 -96q0 -64 -7 -88q-12 -37 -51 -59v-2q38 -22 51 -60q7 -22 7 -104q0 -86 -8 -111q-30 -89 -132 -89t-132 90z" /> + <glyph glyph-name="four" unicode="4" +d="M37 112q-10 0 -10 10v51q0 6 2 12l140 487q3 8 12 8h58q10 0 7 -11l-139 -483v-2h110q6 0 6 6v190q0 10 10 10h57q10 0 10 -10v-190q0 -6 5 -6h46q10 0 10 -10v-52q0 -10 -10 -10h-45q-6 0 -6 -6v-96q0 -10 -10 -10h-57q-10 0 -10 10v96q0 6 -6 6h-180z" /> + <glyph glyph-name="five" unicode="5" +d="M62 81q-8 25 -8 72q0 11 9 12l54 5q12 2 12 -9q0 -43 5 -57q14 -40 59 -40q46 0 58 39q6 16 6 113q0 96 -6 112q-12 40 -58 40q-38 0 -57 -34q-5 -9 -15 -9h-49q-10 0 -10 10v335q0 10 10 10h253q10 0 10 -10v-52q0 -10 -10 -10h-186q-6 0 -6 -6v-193h1q28 31 77 31 +q87 0 113 -78q10 -30 10 -146q0 -104 -10 -136q-28 -89 -130 -89t-132 90z" /> + <glyph glyph-name="six" unicode="6" +d="M60 82q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91t-133 91zM134 104q14 -40 59 -40t59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91z" /> + <glyph glyph-name="seven" unicode="7" +d="M86 12l176 594v2h-134q-6 0 -6 -6v-75q0 -10 -10 -10h-52q-10 0 -10 10v143q0 10 10 10h270q10 0 10 -10v-53q0 -5 -2 -13l-174 -594q-3 -10 -13 -10h-59q-9 0 -6 12z" /> + <glyph glyph-name="eight" unicode="8" +d="M61 82q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91q-102 0 -132 91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM134 104q14 -40 59 -40t59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88z" /> + <glyph glyph-name="nine" unicode="9" +d="M115 11l107 279l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 29 -9 116q0 88 8 113q30 91 133 91t133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-109 -282q-3 -9 -12 -9h-60q-11 0 -6 11zM193 354q45 0 59 41q5 14 5 90q0 77 -5 91q-14 40 -59 40t-59 -40q-5 -14 -5 -91 +q0 -76 5 -90q14 -41 59 -41z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="198" +d="M66 376q-10 0 -10 10v83q0 10 10 10h66q10 0 10 -10v-83q0 -10 -10 -10h-66zM56 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10h-66q-10 0 -10 10z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="198" +d="M66 376q-10 0 -10 10v83q0 10 10 10h66q10 0 10 -10v-83q0 -10 -10 -10h-66zM59 -92v186q0 10 10 10h60q10 0 10 -10v-73q0 -14 -7 -27l-54 -88q-4 -7 -11 -7q-8 0 -8 9z" /> + <glyph glyph-name="less" unicode="<" +d="M48 240q-10 5 -10 15v42q0 10 10 15l290 118q10 3 10 -6v-55q0 -9 -10 -13l-202 -79v-2l202 -79q10 -4 10 -13v-55q0 -9 -10 -6z" /> + <glyph glyph-name="equal" unicode="=" +d="M48 329q-10 0 -10 10v49q0 10 10 10h290q10 0 10 -10v-49q0 -10 -10 -10h-290zM48 154q-10 0 -10 10v49q0 10 10 10h290q10 0 10 -10v-49q0 -10 -10 -10h-290z" /> + <glyph glyph-name="greater" unicode=">" +d="M48 122q-10 -4 -10 6v55q0 9 10 13l203 79v2l-203 79q-10 4 -10 13v55q0 10 10 6l290 -118q10 -4 10 -15v-42q0 -11 -10 -15z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="360" +d="M142 170q-10 0 -10 10v73q0 36 18 69l55 103q26 51 26 106q0 31 -5 45q-13 40 -57 40t-57 -40q-6 -16 -6 -70q0 -12 -11 -10l-55 6q-9 2 -9 12q0 59 9 86q14 42 48 65.5t82 23.5q100 0 130 -89q9 -31 9 -69q0 -65 -30 -121l-55 -105q-15 -29 -15 -55v-70q0 -10 -10 -10 +h-57zM128 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="673" +d="M59 70q-18 55 -18 198q0 144 18 199q30 91 103.5 142t173.5 51q101 0 174.5 -51t103.5 -142q18 -55 18 -199q0 -101 -9 -131q-26 -78 -109 -78q-76 0 -102 63h-1q-13 -33 -34.5 -48t-58.5 -15q-73 0 -94 66q-9 29 -9 138t9 138q21 66 92 66q52 0 74 -42h2v25q0 10 10 10 +h46q10 0 10 -10v-265q0 -68 56 -68q39 0 52 36q5 15 5 115q0 139 -15 184q-22 72 -80 111t-140 39q-81 0 -139 -39t-80 -111q-15 -45 -15 -184q0 -135 15 -183q24 -71 81.5 -111t137.5 -40q91 0 155 44q8 6 14 -2l20 -29q5 -9 -3 -14q-81 -56 -186 -56q-100 0 -173.5 51 +t-103.5 142zM285 156q12 -35 51 -35q40 0 52 35q5 15 5 107t-5 107q-12 35 -52 35q-39 0 -51 -35q-5 -15 -5 -107t5 -107z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="410" +d="M60 10v660q0 10 10 10h129q89 0 129 -41t40 -134q0 -114 -79 -149v-2q86 -27 86 -159q0 -107 -44 -151t-142 -44h-119q-10 0 -10 10zM147 386h48q49 0 70 23.5t21 85.5q0 64 -20 87t-73 23h-46q-6 0 -6 -6v-207q0 -6 6 -6zM141 81q0 -6 6 -6h45q56 0 78.5 26t22.5 95 +q0 67 -22.5 93t-75.5 26h-48q-6 0 -6 -6v-228z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="433" +d="M60 10v660q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106h-141q-10 0 -10 10zM141 81q0 -6 6 -6h56q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-518z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="367" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="364" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-216q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-286q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="417" +d="M62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29 +q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="440" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-278q0 -6 6 -6h146q6 0 6 6v278q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="342" +d="M25 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="424" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-312l155 314q4 8 13 8h65q10 0 6 -9l-135 -263l156 -398q3 -10 -6 -10h-66q-8 0 -11 7l-122 316l-55 -112v-201q0 -10 -10 -10h-61q-10 0 -10 10z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="358" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="541" +d="M60 10v660q0 10 10 10h62q11 0 14 -10l124 -416h4l121 416q3 10 15 10h61q10 0 10 -10v-660q0 -10 -10 -10h-54q-10 0 -10 10v471h-5l-103 -350q-3 -10 -12 -10h-33q-9 0 -12 10l-103 350h-5v-471q0 -10 -10 -10h-54q-10 0 -10 10z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="449" +d="M60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="407" +d="M131 0h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -47.5t45.5 -156.5q0 -107 -46 -155.5t-138 -48.5h-42q-6 0 -6 -6v-256q0 -10 -10 -10zM189 347q56 0 79.5 28.5t23.5 100.5q0 71 -23.5 100t-79.5 29h-42q-6 0 -6 -6v-246q0 -6 6 -6h42z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="422" +d="M407 24l-32 -38q-7 -8 -14 -1l-46 41q-41 -35 -104 -35q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181q0 -100 -2.5 -151.5t-6 -68.5t-11.5 -39l52 -43q8 -6 2 -14zM211 66q31 0 50 11l-53 46 +q-7 7 -1 15l27 32q6 7 14 1l40 -37q4 33 4 206q0 199 -9 225q-15 48 -72 48t-72 -48q-9 -26 -9 -225t9 -226q15 -48 72 -48z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="421" +d="M380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230 +q0 -6 6 -6h43z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="369" +d="M215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="389" +d="M222 0h-55q-8 0 -10 10l-135 660q-2 10 8 10h62q9 0 10 -10l93 -500h3l90 500q1 10 11 10h60q10 0 8 -10l-135 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="576" +d="M433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="392" +d="M363 0h-63q-9 0 -12 10l-91 243h-1l-92 -243q-3 -10 -11 -10h-64q-10 0 -7 10l133 344l-121 316q-3 10 7 10h62q9 0 12 -10l81 -219h1l80 219q3 10 12 10h63q10 0 7 -10l-122 -316l133 -344q3 -10 -7 -10z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="243" +d="M193 -84h-115q-10 0 -10 10v804q0 10 10 10h115q10 0 10 -10v-45q0 -10 -10 -10h-47q-6 0 -6 -6v-682q0 -6 6 -6h47q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="234" +d="M201 -9h-41q-10 0 -11 10l-124 678q-2 10 9 10h40q9 0 11 -10l125 -678q2 -10 -9 -10z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="243" +d="M165 -84h-115q-10 0 -10 10v45q0 10 10 10h48q6 0 6 6v682q0 6 -6 6h-48q-10 0 -10 10v45q0 10 10 10h115q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="asciicircum" unicode="^" +d="M344 272h-52q-9 0 -13 10l-84 287h-2l-85 -287q-3 -10 -13 -10h-52q-10 0 -7 10l122 388q3 10 14 10h43q11 0 14 -10l122 -388q3 -10 -7 -10z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="389" +d="M389 -124h-389v48h389v-48z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="390" +d="M264 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="389" +d="M227 -9q-67 0 -91 58h-1v-39q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-240h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="347" +d="M184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z +" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v240q0 10 10 10h57q10 0 10 -10v-660q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="244" +d="M141 0h-57q-10 0 -10 10v402q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v63q0 132 125 132h18q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77q0 -6 6 -6h60q10 0 10 -10v-41q0 -10 -10 -10h-60q-6 0 -6 -6v-402q0 -10 -10 -10z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-239h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM20 -180h-12q-10 0 -10 10v52q0 10 10 10h11q21 2 30 13t9 37v527q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="375" +d="M348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-415l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284q3 -10 -7 -10z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="221" +d="M182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="597" +d="M533 0h-57q-10 0 -10 10v319q0 87 -64 87q-63 0 -63 -85v-321q0 -10 -10 -10h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q73 0 96 -57h1q29 57 100 57q119 0 119 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="389" +d="M125 -180h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-39h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78q-67 0 -91 58h-1v-219q0 -10 -10 -10zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="389" +d="M321 -180h-57q-10 0 -10 10v219h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-639q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="273" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="343" +d="M172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15 +q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="243" +d="M203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="350" +d="M199 0h-49q-8 0 -11 10l-116 459q-3 10 7 10h60q8 0 10 -10l75 -328h2l74 328q2 10 11 10h57q10 0 8 -10l-116 -459q-3 -10 -12 -10z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="526" +d="M384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="354" +d="M325 0h-60q-9 0 -13 9l-75 163h-1l-74 -163q-4 -9 -13 -9h-60q-11 0 -5 11l114 237l-106 221q-5 10 5 10h60q9 0 13 -8l69 -148h1l66 148q4 8 13 8h59q10 0 5 -10l-107 -221l114 -237q6 -11 -5 -11z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="327" +d="M284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="292" +d="M242 -84h-21q-105 0 -105 112v198q0 36 -12.5 53.5t-42.5 18.5q-10 2 -10 10v45q0 10 10 10q30 2 42.5 19.5t12.5 53.5v193q0 111 105 111h21q10 0 10 -10v-45q0 -10 -10 -10h-10q-44 0 -44 -51v-170q0 -58 -10 -83.5t-41 -38.5v-3q31 -13 41 -38.5t10 -83.5v-175 +q0 -51 44 -51h10q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="236" +d="M139 -84h-43q-10 0 -10 10v804q0 10 10 10h43q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="292" +d="M72 -84h-22q-10 0 -10 10v45q0 10 10 10h10q45 0 45 51v175q0 58 10 83.5t41 38.5v3q-31 13 -41 38.5t-10 83.5v170q0 51 -45 51h-10q-10 0 -10 10v45q0 10 10 10h22q105 0 105 -111v-193q0 -37 12 -54t42 -19q10 0 10 -10v-45q0 -8 -10 -10q-30 -1 -42 -18t-12 -54v-198 +q0 -112 -105 -112z" /> + <glyph glyph-name="asciitilde" unicode="~" +d="M254 221q-30 0 -68 25q-33 22 -50 22q-16 0 -27 -9t-26 -33q-4 -7 -13 -3l-33 18q-8 5 -4 15q38 75 99 75q31 0 68 -25q32 -22 50 -22q16 0 27 9t26 33q4 7 13 3l32 -18q10 -5 4 -15q-37 -75 -98 -75z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="190" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="227" +d="M130 309q10 0 10 -10l16 -490q0 -10 -10 -10h-65q-10 0 -10 10l16 490q0 10 10 10h33zM156 469v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10z" /> + <glyph glyph-name="cent" unicode="¢" +d="M205 -100h-13q-10 0 -10 10v82q-91 6 -115 88q-12 37 -12 160q0 122 12 159q25 82 115 88v83q0 10 10 10h13q10 0 10 -10v-83q105 -8 121 -114q2 -9 -6 -11l-55 -11q-11 -2 -12 7q-10 49 -48 56v-349q39 8 48 56q2 10 12 7l55 -11q8 -2 6 -11q-7 -51 -38.5 -80t-82.5 -34 +v-82q0 -10 -10 -10zM139 103q12 -34 43 -38v349q-32 -6 -43 -37q-7 -25 -7 -137q0 -113 7 -137z" /> + <glyph glyph-name="sterling" unicode="£" +d="M339 0h-281q-10 0 -10 10v52q0 5 4 11q30 34 30 93v119q0 6 -6 6h-29q-10 0 -10 10v38q0 10 10 10h29q6 0 6 6v185q0 70 34 109.5t98 39.5q120 0 132 -139q0 -11 -8 -12l-54 -9q-10 -1 -12 8q-2 42 -15.5 60.5t-42.5 18.5q-54 0 -54 -74v-187q0 -6 6 -6h94q10 0 10 -10 +v-38q0 -10 -10 -10h-94q-6 0 -6 -6v-119q0 -64 -29 -92v-2h208q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="currency" unicode="¤" +d="M341 200l-25 -26q-7 -7 -14 0l-37 37q-32 -20 -72 -20q-41 0 -73 21l-37 -38q-8 -6 -14 0l-25 26q-7 7 0 14l37 37q-20 32 -20 72q0 41 21 72l-37 37q-6 6 0 14l25 25q7 7 14 0l37 -38q32 21 72 21q38 0 72 -21l37 38q7 7 14 0l25 -25q8 -8 0 -14l-38 -38q21 -32 21 -71 +q0 -41 -20 -72l37 -37q7 -7 0 -14zM193 246q33 0 54 21.5t21 55.5q0 33 -21 54.5t-54 21.5t-54 -21.5t-21 -54.5q0 -34 21 -55.5t54 -21.5z" /> + <glyph glyph-name="yen" unicode="¥" +d="M222 0h-57q-10 0 -10 10v129q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h88q6 0 6 6v51q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h80v3l-110 341q-3 10 7 10h61q9 0 12 -10l83 -283h2l81 283q3 10 12 10h60q10 0 7 -10l-111 -341v-3h80q10 0 10 -10v-39q0 -10 -10 -10 +h-87q-6 0 -6 -6v-51q0 -6 6 -6h87q10 0 10 -10v-39q0 -10 -10 -10h-87q-6 0 -6 -6v-129q0 -10 -10 -10z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="264" +d="M153 388h-43q-10 0 -10 10v332q0 10 10 10h43q10 0 10 -10v-332q0 -10 -10 -10zM153 -84h-43q-10 0 -10 10v336q0 10 10 10h43q10 0 10 -10v-336q0 -10 -10 -10z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="447" +d="M222 -189q-97 0 -123 80q-8 24 -8 69q0 10 8 10l52 5q9 0 9 -9q0 -36 5 -53q12 -37 58 -37t57 37q6 15 6 47q0 36 -6 52q-13 42 -91 64q-74 21 -96 86q-12 34 -12 91q0 47 10 77q19 57 69 74v1q-42 16 -58 63q-9 27 -9 72q0 44 8 68q27 81 123 81q95 0 121 -80 +q8 -24 8 -69q0 -10 -8 -10l-52 -5q-9 0 -9 9q0 40 -5 53q-12 37 -54 37q-43 0 -55 -37q-5 -17 -5 -47q0 -31 6 -47q7 -22 27.5 -36.5t61.5 -26.5q74 -21 96 -86q11 -36 11 -91q0 -47 -9 -77q-18 -56 -69 -74v-1q45 -17 60 -63q9 -28 9 -76q0 -46 -8 -70q-27 -81 -128 -81z +M224 139q50 0 64 45q7 20 7 69q0 48 -7 68q-13 45 -64 45q-49 0 -64 -45q-7 -25 -7 -68q0 -45 7 -69q15 -45 64 -45z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="390" +d="M293 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="719" +d="M360 -9q-109 0 -185.5 53.5t-108.5 149.5q-18 56 -18 146t18 146q32 96 108.5 149.5t185.5 53.5q108 0 184.5 -53.5t108.5 -149.5q18 -56 18 -146t-18 -146q-32 -96 -108.5 -149.5t-184.5 -53.5zM360 46q89 0 150 41.5t86 119.5q17 51 17 133t-17 133q-25 78 -86 119.5 +t-150 41.5t-150.5 -41.5t-86.5 -119.5q-17 -51 -17 -133t17 -133q25 -78 86.5 -119.5t150.5 -41.5zM363 143q-81 0 -104 72q-9 25 -9 125q0 99 9 125q23 72 104 72q45 0 74 -23.5t34 -60.5q2 -8 -6 -10l-42 -8q-8 -2 -10 6q-12 38 -50 38q-35 0 -45 -32q-6 -15 -6 -107 +t6 -107q10 -32 45 -32q38 0 50 38q2 8 10 6l42 -8q8 -2 6 -10q-5 -37 -34 -60.5t-74 -23.5z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="271" +d="M216 392h-33q-10 0 -10 10v19h-1q-5 -14 -21 -23.5t-36 -9.5q-34 0 -54 22t-20 62q0 49 25 72.5t69 23.5h32q6 0 6 6v13q0 27 -11 38.5t-34 11.5q-25 0 -51 -19q-9 -5 -14 3l-11 27q-4 7 4 13q33 26 80 26q45 0 67.5 -22.5t22.5 -73.5v-189q0 -10 -10 -10zM130 434 +q19 0 31 13t12 35v36q0 6 -6 6h-26q-48 0 -48 -47q0 -43 37 -43z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="445" +d="M374 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60q0 -4 -3.5 -5.5t-6.5 1.5zM200 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60 +q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M338 148h-51q-10 0 -10 10v77q0 6 -6 6h-223q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-143q0 -10 -10 -10z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="335" +d="M283 230h-232q-10 0 -10 10v52q0 10 10 10h232q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="432" +d="M216 303q-60 0 -102 29t-59 84q-10 36 -10 77q0 39 10 77q17 54 59 83t102 29t102 -29t59 -83q9 -34 9 -77q0 -45 -9 -77q-17 -54 -59 -83.5t-102 -29.5zM216 332q48 0 82 24t48 67q10 32 10 70q0 37 -10 69q-14 43 -48 67t-82 24t-82.5 -24t-48.5 -67q-9 -29 -9 -69 +q0 -41 9 -70q14 -43 48.5 -67t82.5 -24zM191 388h-18q-7 0 -7 7v198q0 7 7 7h43q60 0 60 -61q0 -39 -27 -53l30 -91q1 -7 -6 -7h-20q-7 0 -8 7l-25 82q-6 -1 -18 -1q-4 0 -4 -4v-77q0 -7 -7 -7zM213 507q16 0 23 7t7 25t-7 24.5t-23 6.5h-11q-4 0 -4 -4v-55q0 -4 4 -4h11z +" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="390" +d="M292 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="331" +d="M166 452q-50 0 -83 32.5t-33 82.5t33 83t83 33t82.5 -33t32.5 -83q0 -49 -32.5 -82t-82.5 -33zM166 500q29 0 47 19t18 48q0 30 -18 49t-47 19t-47.5 -19.5t-18.5 -48.5t18.5 -48t47.5 -19z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M219 137h-52q-10 0 -10 10v105q0 6 -6 6h-103q-10 0 -10 10v49q0 10 10 10h103q6 0 6 6v105q0 10 10 10h52q10 0 10 -10v-105q0 -6 6 -6h103q10 0 10 -10v-49q0 -10 -10 -10h-103q-6 0 -6 -6v-105q0 -10 -10 -10zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10 +v-50q0 -10 -10 -10z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="270" +d="M225 430h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="270" +d="M134 423q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="390" +d="M166 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="mu" unicode="μ" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="468" +d="M391 -180h-44q-10 0 -10 10v778q0 6 -6 6h-50q-6 0 -6 -6v-778q0 -10 -10 -10h-43q-10 0 -10 10v428q-69 9 -110.5 67t-41.5 144q0 90 51 150.5t137 60.5h143q10 0 10 -10v-840q0 -10 -10 -10z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="185" +d="M125 213h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="390" +d="M137 -142l57 142q4 10 13 10h42q10 0 7 -10l-48 -142q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="270" +d="M178 430h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="281" +d="M140 387q-70 0 -89 60q-7 21 -7 90t7 90q20 60 89 60q70 0 90 -60q7 -21 7 -90t-7 -90q-20 -60 -90 -60zM140 437q30 0 40 27q4 12 4 73t-4 73q-10 27 -40 27q-29 0 -39 -27q-4 -12 -4 -73t4 -73q10 -27 39 -27z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="445" +d="M245 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14zM71 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="705" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM576 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10 +h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="723" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM633 0h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4 +q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="750" +d="M621 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10zM278 -9h-39 +q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM179 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39 +q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="360" +d="M218 309q10 0 10 -10v-73q0 -36 -18 -69l-55 -103q-26 -51 -26 -106q0 -31 5 -45q13 -40 57 -40t57 40q6 16 6 70q0 12 11 10l55 -6q9 -1 9 -12q0 -59 -9 -86q-14 -42 -48 -65.5t-82 -23.5q-100 0 -130 89q-9 31 -9 69q0 65 30 121l55 105q15 28 15 55v70q0 10 10 10h57z +M232 469v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM225 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z +" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM223 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM314 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36 +q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM244 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24 +q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM300 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM155 777h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM202 731q-37 0 -61.5 24.5t-24.5 61.5t24 61.5t62 24.5q37 0 61.5 -24.5t24.5 -61.5t-24.5 -61.5 +t-61.5 -24.5zM202 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="629" +d="M589 0h-257q-10 0 -10 10v143q0 6 -6 6h-163l-56 -149q-3 -10 -13 -10h-59q-10 0 -7 10l251 660q3 10 12 10h308q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10zM319 597l-139 -368h136q6 0 6 6v362h-3z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="381" +d="M127 -152q-10 0 -7 10l54 136q-85 12 -113 97q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-12 -134 -123 -150 +l-45 -135q-4 -10 -16 -10h-48z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="367" +d="M220 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180 +q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="367" +d="M209 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180 +q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="367" +d="M60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10zM309 752h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="367" +d="M294 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM149 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10 +v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM122 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM119 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM213 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM199 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM54 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="433" +d="M211 0h-141q-10 0 -10 10v296q0 6 -6 6h-29q-10 0 -10 10v44q0 10 10 10h29q6 0 6 6v288q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106zM203 75q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-217q0 -6 6 -6h65 +q10 0 10 -10v-44q0 -10 -10 -10h-65q-6 0 -6 -6v-225q0 -6 6 -6h56z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="449" +d="M266 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53 +q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="422" +d="M238 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101 +zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="422" +d="M224 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101z +M211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48zM323 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="422" +d="M252 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67 +q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="422" +d="M309 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM164 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101 +q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="multiply" unicode="×" +d="M325 176l-32 -33q-7 -7 -14 0l-82 82q-4 3 -8 0l-83 -82q-7 -7 -14 0l-32 33q-7 7 0 14l82 82q4 4 0 8l-82 82q-7 7 0 14l32 33q7 7 14 0l83 -82q4 -3 8 0l82 82q7 7 14 0l32 -33q9 -7 0 -14l-82 -82q-3 -4 0 -8l82 -82q9 -7 0 -14z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="422" +d="M73 -30h-21q-10 0 -7 10l32 78q-9 16 -15 34q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q64 0 106 -34l19 46q4 9 13 9h21q10 0 7 -10l-32 -78q8 -14 15 -34q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101q-66 0 -106 34l-19 -46 +q-4 -9 -13 -9zM131 340q0 -123 1 -154l148 386q-19 41 -69 41q-56 0 -71 -48q-9 -26 -9 -225zM211 67q55 0 72 48q8 27 8 225q0 122 -1 154l-148 -386q18 -41 69 -41z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="436" +d="M246 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503 +q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="436" +d="M232 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131 +t-116.5 -45z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM330 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10 +l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="436" +d="M316 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM171 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23 +t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM199 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="407" +d="M189 146h-42q-6 0 -6 -6v-130q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h61q10 0 10 -10v-110q0 -6 6 -6h42q93 0 138.5 -47.5t45.5 -156.5q0 -107 -46 -155.5t-138 -48.5zM189 221q56 0 79.5 28.5t23.5 100.5q0 71 -23.5 100t-79.5 29h-42q-6 0 -6 -6v-246 +q0 -6 6 -6h42z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="403" +d="M227 -3h-14q-10 0 -10 10v52q0 10 10 10h7q39 0 50 33q7 19 7 116q0 94 -7 115q-11 33 -50 33h-7q-10 0 -10 10v53q0 10 10 10h5q39 0 49 29q5 18 5 64q0 84 -68 84q-69 0 -69 -84v-522q0 -10 -10 -10h-57q-10 0 -10 10v514q0 79 36 122t109 43q70 0 108.5 -39.5 +t38.5 -112.5q0 -56 -11.5 -82t-44.5 -45v-2q38 -20 51 -59q9 -27 9 -131q0 -117 -11 -149q-22 -72 -116 -72z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM213 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM190 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM298 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM228 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM284 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM186 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14 +z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="565" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5 +q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45 +q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="347" +d="M94 -142l54 136q-69 13 -92 86q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -50 -33.5 -82 +t-74.5 -39l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM207 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="368" +d="M201 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8 +l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="368" +d="M297 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6 +q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="368" +d="M283 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM138 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10 +h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM119 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="193" +d="M118 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="193" +d="M209 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="193" +d="M195 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM50 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="374" +d="M294 580l-52 -17l28 -53q37 -72 48 -122.5t11 -154.5q0 -118 -10 -150q-30 -92 -132 -92q-50 0 -84.5 24t-47.5 68q-11 36 -11 146q0 113 12 152q28 86 115 86q31 0 48 -11h1l-45 86l-68 -22q-8 -3 -11 6l-12 35q-3 9 7 12l58 19l-41 78q-5 10 5 10h59q8 0 14 -10l29 -57 +l63 21q8 3 11 -6l12 -36q3 -9 -7 -12zM187 63q45 0 59 42q6 20 6 124q0 101 -7 125q-14 42 -58 42q-45 0 -59 -42q-6 -20 -6 -125q0 -104 6 -124q14 -42 59 -42z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10zM238 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18 +q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM214 557h-40q-10 0 -17 10 +l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="374" +d="M200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42 +t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="374" +d="M299 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63 +q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM229 581q-23 0 -49 19 +q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="374" +d="M285 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM140 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157 +q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="divide" unicode="÷" +d="M193 373q-23 0 -37.5 14.5t-14.5 37.5t14.5 38t37.5 15t37.5 -15t14.5 -38t-14.5 -37.5t-37.5 -14.5zM338 241h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10zM193 74q-23 0 -37.5 15t-14.5 38t14.5 37.5t37.5 14.5t37.5 -14.5t14.5 -37.5 +t-14.5 -38t-37.5 -15z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="374" +d="M187 -9q-50 0 -86 25l-17 -36q-5 -10 -13 -10h-18q-11 0 -8 10l30 63q-11 14 -20 40q-10 32 -10 157q0 124 10 157q30 91 132 91q50 0 86 -25l17 36q4 10 13 10h18q12 0 7 -10l-29 -63q13 -18 20 -39q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM121 240q0 -85 1 -103 +l115 255q-17 25 -50 25q-44 0 -60 -42q-6 -20 -6 -135zM187 62q45 0 59 43q7 20 7 135q0 82 -1 100l-115 -254q18 -24 50 -24z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM220 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="390" +d="M207 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="390" +d="M307 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319 +q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="390" +d="M293 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319 +q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM195 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10 +l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="389" +d="M125 -180h-57q-10 0 -10 10v840q0 10 10 10h57q10 0 10 -10v-240h1q23 58 91 58q79 0 104 -78q12 -36 12 -170t-12 -171q-25 -78 -104 -78q-67 0 -91 58h-1v-219q0 -10 -10 -10zM201 63q44 0 58 42q7 24 7 135q0 110 -7 134q-14 42 -58 42t-59 -42q-7 -24 -7 -134 +q0 -111 7 -135q15 -42 59 -42z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM276 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10 +v-72q0 -10 -10 -10zM131 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM299 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="amacron" unicode="ā" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM283 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="406" +d="M18 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10zM141 229h123l-58 296h-3zM202 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32 +q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="abreve" unicode="ă" horiz-adv-x="371" +d="M308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57 +q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="406" +d="M245 670l143 -660q2 -6 -5 -10q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15q-34 0 -55 19t-21 54q0 51 62 110q-4 1 -5 8l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10zM202 525 +l-61 -296h123l-59 296h-3z" /> + <glyph glyph-name="aogonek" unicode="ą" horiz-adv-x="371" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -7 -5 -11q-68 -60 -68 -95q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15q-34 0 -55 19t-21 54q0 52 63 113v46h-1q-10 -28 -34 -44 +t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM209 763h-38 +q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="cacute" unicode="ć" horiz-adv-x="347" +d="M200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137 +q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM317 752h-42 +q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" horiz-adv-x="347" +d="M296 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8 +q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="381" +d="M236 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8 +l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" horiz-adv-x="347" +d="M184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z +M206 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="381" +d="M61 91q-12 37 -12 249t12 249q33 100 146 100q139 0 152 -152q1 -10 -8 -12l-57 -11q-11 -2 -11 8q-7 91 -75 91q-53 0 -68 -47q-9 -28 -9 -226t9 -226q15 -47 68 -47q68 0 75 91q0 10 11 8l57 -11q9 -2 8 -12q-13 -152 -152 -152q-113 0 -146 100zM223 750h-36 +q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="ccaron" unicode="č" horiz-adv-x="347" +d="M202 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM184 -9q-99 0 -128 89q-11 34 -11 160q0 125 11 159q29 89 128 89q57 0 93 -33t41 -90q0 -9 -7 -11l-54 -10q-10 -3 -12 8 +q-10 64 -61 64q-43 0 -56 -39q-6 -18 -6 -137q0 -120 6 -138q13 -39 56 -39q51 0 61 64q2 11 12 8l54 -10q7 -2 7 -11q-5 -57 -41 -90t-93 -33z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="433" +d="M216 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106h-141q-10 0 -10 10zM141 81 +q0 -6 6 -6h56q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-518z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="389" +d="M369 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v240q0 10 10 10h57q10 0 10 -10v-660q0 -10 -10 -10z +M189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="433" +d="M211 0h-141q-10 0 -10 10v296q0 6 -6 6h-29q-10 0 -10 10v44q0 10 10 10h29q6 0 6 6v288q0 10 10 10h141q124 0 157 -106q16 -49 16 -234t-16 -234q-33 -106 -157 -106zM203 75q66 0 86 58q13 40 13 207t-13 207q-20 58 -86 58h-56q-6 0 -6 -6v-217q0 -6 6 -6h65 +q10 0 10 -10v-44q0 -10 -10 -10h-65q-6 0 -6 -6v-225q0 -6 6 -6h56z" /> + <glyph glyph-name="dcroat" unicode="đ" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v114q0 6 -6 6h-79q-10 0 -10 10v41q0 10 10 10h79q6 0 6 6v53q0 10 10 10h57q10 0 10 -10v-53q0 -6 6 -6h24q10 0 10 -10v-41q0 -10 -10 -10h-24 +q-6 0 -6 -6v-534q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="367" +d="M291 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="emacron" unicode="ē" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM282 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="367" +d="M194 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10 +h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="ebreve" unicode="ĕ" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM185 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="367" +d="M222 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55 +q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="edotaccent" unicode="ė" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91 +q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM216 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="367" +d="M260 -181q-34 0 -55 19t-21 54q0 49 59 108h-173q-10 0 -10 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-11 +q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="eogonek" unicode="ę" horiz-adv-x="368" +d="M184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-9 -40 -34 -70q-60 -95 -60 -128q0 -26 21 -26q12 0 21 6q9 5 12 -3 +l15 -34q3 -8 -5 -13q-23 -15 -53 -15q-35 0 -55.5 19t-20.5 54q0 46 42 101q-12 -2 -20 -2zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="367" +d="M214 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55 +q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10h-257q-10 0 -10 10z" /> + <glyph glyph-name="ecaron" unicode="ě" horiz-adv-x="368" +d="M203 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM184 -9q-99 0 -128 90q-11 35 -11 159q0 123 11 159q30 89 130 89q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6 +q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM243 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="417" +d="M62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29 +q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101zM319 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" horiz-adv-x="387" +d="M306 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78 +q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="417" +d="M207 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8 +q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gbreve" unicode="ğ" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42zM194 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="417" +d="M238 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48 +t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" horiz-adv-x="387" +d="M186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73 +q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42zM226 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="417" +d="M179 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM62 92q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q141 0 158 -148q2 -11 -7 -12l-56 -11q-10 -1 -12 8q-11 87 -82 87q-57 0 -72 -48q-9 -26 -9 -225t9 -225 +q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -130 -2.5 -171.5t-10.5 -65.5q-31 -101 -149 -101q-116 0 -149 101z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" horiz-adv-x="387" +d="M221 572h-53q-10 0 -10 10v49q0 14 6 22l46 66q5 8 12 8q9 0 9 -10v-135q0 -10 -10 -10zM186 -189q-49 0 -84.5 25t-46.5 65q-2 9 5 12l53 19q9 3 13 -5q17 -43 62 -43q64 0 64 73v103h-1q-21 -58 -89 -58q-80 0 -104 78q-12 39 -12 164q0 126 12 164q25 80 104 80 +q68 0 89 -59h1v40q0 10 10 10h57q10 0 10 -10v-504q0 -74 -38 -114t-105 -40zM188 73q43 0 57 42q7 21 7 129q0 109 -7 130q-15 42 -57 42q-44 0 -58 -42q-7 -26 -7 -130q0 -103 7 -129q14 -42 58 -42z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="440" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-278q0 -6 6 -6h146q6 0 6 6v278q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10zM331 752h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-239h1q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10zM311 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10 +l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="440" +d="M370 0h-61q-10 0 -10 10v295q0 6 -6 6h-146q-6 0 -6 -6v-295q0 -10 -10 -10h-61q-10 0 -10 10v476q0 6 -6 6h-22q-10 0 -10 10v44q0 10 10 10h22q6 0 6 6v108q0 10 10 10h61q10 0 10 -10v-108q0 -6 6 -6h146q6 0 6 6v108q0 10 10 10h61q10 0 10 -10v-108q0 -6 6 -6h22 +q10 0 10 -10v-44q0 -10 -10 -10h-22q-6 0 -6 -6v-476q0 -10 -10 -10zM293 386q6 0 6 6v94q0 6 -6 6h-146q-6 0 -6 -6v-94q0 -6 6 -6h146z" /> + <glyph glyph-name="hbar" unicode="ħ" horiz-adv-x="393" +d="M329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v534q0 6 -6 6h-23q-10 0 -10 10v41q0 10 10 10h23q6 0 6 6v53q0 10 10 10h57q10 0 10 -10v-53q0 -6 6 -6h80q10 0 10 -10v-41q0 -10 -10 -10h-80q-6 0 -6 -6v-113h1 +q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM143 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z +" /> + <glyph glyph-name="itilde" unicode="ĩ" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM138 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z +" /> + <glyph glyph-name="Imacron" unicode="Ī" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM198 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="imacron" unicode="ī" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM193 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ibreve" unicode="Ĭ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM101 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ibreve" unicode="ĭ" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM97 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Iogonek" unicode="Į" horiz-adv-x="201" +d="M90 -181q-34 0 -55 19t-21 54q0 50 56 109h-3q-7 0 -7 9v660q0 10 10 10h61q10 0 10 -10v-660q0 -5 -4 -9q-59 -64 -59 -97q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="iogonek" unicode="į" horiz-adv-x="193" +d="M128 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM85 -181q-35 0 -56 19t-21 54q0 49 56 109v1q-6 0 -6 8v459q0 10 10 10h57q10 0 10 -10v-459q0 -5 -4 -9q-58 -63 -58 -97q0 -26 22 -26q11 0 20 6q9 5 12 -3l15 -34q4 -9 -5 -13 +q-22 -15 -52 -15z" /> + <glyph glyph-name="Idotaccent" unicode="İ" horiz-adv-x="201" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-660q0 -10 -10 -10h-61q-10 0 -10 10zM133 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="193" +d="M125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="342" +d="M25 32q-6 8 1 14l40 39q7 7 16 0q21 -18 47 -18q73 0 73 88v515q0 10 10 10h61q10 0 10 -10v-509q0 -85 -41.5 -127.5t-113.5 -42.5q-68 0 -103 41zM352 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10 +l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="193" +d="M20 -180h-12q-10 0 -10 10v53q0 10 10 10l11 1q21 1 30 12t9 38v525q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120zM209 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="424" +d="M196 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h61q10 0 10 -10v-312l155 314q4 8 13 8h65q10 0 6 -9l-135 -263l156 -398q3 -10 -6 -10h-66q-8 0 -11 7l-122 316l-55 -112v-201q0 -10 -10 -10h-61 +q-10 0 -10 10z" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="375" +d="M174 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v660q0 10 10 10h57q10 0 10 -10v-415l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284 +q3 -10 -7 -10z" /> + <glyph glyph-name="kgreenlandic" unicode="ĸ" horiz-adv-x="375" +d="M348 0h-60q-10 0 -14 10l-90 214l-49 -87v-127q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-214l119 214q6 10 14 10h60q11 0 6 -10l-105 -175l126 -284q3 -10 -7 -10z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="358" +d="M128 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="221" +d="M119 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="358" +d="M166 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="221" +d="M94 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="358" +d="M192 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="221" +d="M183 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="358" +d="M60 10v660q0 10 10 10h61q10 0 10 -10v-589q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10zM313 255h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="256" +d="M182 -5l-5 1q-66 2 -92.5 32t-26.5 99v543q0 10 10 10h57q10 0 10 -10v-546q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10zM257 263h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="358" +d="M229 388l-88 -61v-246q0 -6 6 -6h178q10 0 10 -10v-55q0 -10 -10 -10h-255q-10 0 -10 10v265l-39 -27q-4 -2 -7 -0.5t-3 5.5v57q0 9 10 16l39 27v317q0 10 10 10h61q10 0 10 -10v-265l88 61q4 2 7 0.5t3 -5.5v-57q0 -9 -10 -16z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="221" +d="M182 388l-47 -33v-231q0 -48 42 -55l5 -1q10 -2 10 -11v-52q0 -10 -10 -10l-5 1q-66 2 -92.5 32t-26.5 99v176l-30 -20q-4 -2 -7 -0.5t-3 5.5v54q0 9 10 16l30 20v292q0 10 10 10h57q10 0 10 -10v-240l47 33q4 2 7 0.5t3 -5.5v-54q0 -9 -10 -16z" /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="449" +d="M236 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53 +q-10 0 -10 10z" /> + <glyph glyph-name="nacute" unicode="ń" horiz-adv-x="393" +d="M198 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="449" +d="M203 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z +" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" horiz-adv-x="393" +d="M168 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="449" +d="M242 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM60 10v660q0 10 10 10h75q12 0 15 -10l152 -510h4v510q0 10 10 10h53q10 0 10 -10v-660q0 -10 -10 -10h-71q-12 0 -15 10 +l-155 510h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10z" /> + <glyph glyph-name="ncaron" unicode="ň" horiz-adv-x="393" +d="M214 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM329 0h-57q-10 0 -10 10v319q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1 +q27 57 91 57q112 0 112 -147v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Eng" unicode="Ŋ" horiz-adv-x="449" +d="M254 -180h-8q-10 0 -10 10v55q0 10 10 10l8 1q28 2 41 15.5t13 43.5v20l-170 545h-5v-510q0 -10 -10 -10h-53q-10 0 -10 10v660q0 10 10 10h73q13 0 17 -10l152 -498h4v498q0 10 10 10h53q10 0 10 -10v-708q0 -74 -33 -108t-102 -34z" /> + <glyph glyph-name="eng" unicode="ŋ" horiz-adv-x="393" +d="M224 -180h-9q-10 0 -10 10v52q0 10 10 10h8q21 2 30 13t9 37v387q0 87 -63 87q-64 0 -64 -87v-319q0 -10 -10 -10h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-38h1q27 57 91 57q112 0 112 -147v-401q0 -120 -115 -120z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="422" +d="M308 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48 +q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="omacron" unicode="ō" horiz-adv-x="374" +d="M284 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42 +t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="422" +d="M211 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181 +t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="obreve" unicode="ŏ" horiz-adv-x="374" +d="M187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42zM187 563q-51 0 -80 30.5 +t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="422" +d="M211 -9q-116 0 -149 101q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q118 0 149 -101q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101zM211 67q57 0 72 48q8 27 8 225t-8 225q-15 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225 +q15 -48 71 -48zM291 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105q-7 -10 -18 -10zM167 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q5 0 6 -3t-2 -7l-79 -105q-8 -10 -19 -10z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" horiz-adv-x="374" +d="M258 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM134 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10zM187 -9q-102 0 -132 92q-10 32 -10 157q0 124 10 157q30 91 132 91t132 -91q10 -32 10 -157 +t-10 -157q-30 -92 -132 -92zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="598" +d="M558 0h-257q-10 0 -10 10v21h-1q-26 -40 -90 -40q-106 0 -138 98q-8 24 -10.5 68t-2.5 183t2.5 183t10.5 68q32 98 138 98q64 0 90 -40h1v21q0 10 10 10h257q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156 +q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10zM211 67q55 0 72 48q8 27 8 225t-8 225q-17 48 -72 48q-56 0 -71 -48q-9 -26 -9 -225t9 -225q15 -48 71 -48z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="576" +d="M391 -9q-72 0 -99 48h-2q-34 -48 -103 -48q-50 0 -84.5 24t-47.5 68q-10 32 -10 157q0 124 10 157q13 43 47.5 67t84.5 24q68 0 103 -47h1q35 47 102 47q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8 +l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5zM450 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM187 63q45 0 59 42q6 20 6 135q0 114 -6 134q-14 42 -59 42t-59 -42q-6 -20 -6 -134q0 -115 6 -135q14 -42 59 -42z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="421" +d="M380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230 +q0 -6 6 -6h43zM206 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="273" +d="M165 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="421" +d="M189 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173 +l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230q0 -6 6 -6h43z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="273" +d="M69 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z +" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="421" +d="M208 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM380 0h-68q-8 0 -11 7l-85 284q-9 -1 -28 -1h-41q-6 0 -6 -6v-274q0 -10 -10 -10h-61q-10 0 -10 10v660q0 10 10 10h119 +q93 0 138.5 -45.5t45.5 -150.5q0 -131 -83 -173l95 -301q4 -10 -5 -10zM190 363q54 0 78 26.5t24 94.5t-23.5 94.5t-78.5 26.5h-43q-6 0 -6 -6v-230q0 -6 6 -6h43z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="273" +d="M161 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM125 0h-57q-10 0 -10 10v459q0 10 10 10h57q10 0 10 -10v-45h1q28 64 96 64q11 0 19 -2q9 -2 6 -11l-14 -57q-3 -9 -12 -9h-15 +q-37 0 -59 -26t-22 -77v-296q0 -10 -10 -10z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM210 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="sacute" unicode="ś" horiz-adv-x="343" +d="M182 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5 +q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM307 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" horiz-adv-x="343" +d="M285 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135 +q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="392" +d="M113 -142l54 135q-125 14 -131 173q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7q-2 51 -20 75.5t-56 24.5 +q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125q0 -94 -29 -142t-96 -57l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="scedilla" unicode="ş" horiz-adv-x="343" +d="M90 -142l54 135q-99 14 -110 120q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15 +q54 -20 76 -54t22 -88t-26.5 -90.5t-75.5 -46.5l-46 -137q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="392" +d="M354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7 +q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125zM208 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="343" +d="M191 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135 +q0 59 35.5 97t95.5 38q56 0 89 -30.5t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="369" +d="M159 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="243" +d="M113 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41 +q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="369" +d="M205 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112 +q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="243" +d="M191 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10 +h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="369" +d="M215 0h-61q-10 0 -10 10v366q0 6 -6 6h-68q-10 0 -10 10v50q0 10 10 10h68q6 0 6 6v141q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-141q0 -6 6 -6h68q10 0 10 -10v-50q0 -10 -10 -10h-68q-6 0 -6 -6v-366 +q0 -10 -10 -10z" /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="243" +d="M203 -5h-25q-55 0 -80 27t-25 87v169q0 6 -6 6h-22q-10 0 -10 10v40q0 10 10 10h22q6 0 6 6v62q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41q0 -10 -10 -10h-47q-6 0 -6 -6v-62q0 -6 6 -6h34 +q10 0 10 -10v-40q0 -10 -10 -10h-34q-6 0 -6 -6v-168q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="436" +d="M259 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q20 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513 +q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="utilde" unicode="ũ" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM236 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18 +q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="436" +d="M315 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="umacron" unicode="ū" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM292 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="436" +d="M218 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513 +q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45z" /> + <glyph glyph-name="ubreve" unicode="ŭ" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM195 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54 +q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM218 731q-37 0 -61.5 24.5t-24.5 61.5t24 61.5t62 24.5q37 0 61.5 -24.5t24.5 -61.5 +t-24.5 -61.5t-61.5 -24.5zM218 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="uring" unicode="ů" horiz-adv-x="390" +d="M195 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14zM322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148 +v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="436" +d="M218 -9q-74 0 -116.5 45t-42.5 131v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -86 -42.5 -131t-116.5 -45zM293 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105 +q-7 -10 -18 -10zM169 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q5 0 6 -3t-2 -7l-79 -105q-7 -10 -19 -10z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" horiz-adv-x="390" +d="M322 0h-57q-10 0 -10 10v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM269 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10z +M145 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="436" +d="M221 -181q-34 0 -55 19t-21 54q0 45 44 102q-60 8 -95 52t-35 121v503q0 10 10 10h61q10 0 10 -10v-513q0 -44 20.5 -67t57.5 -23t57.5 23t20.5 67v513q0 10 10 10h61q10 0 10 -10v-503q0 -75 -32.5 -119t-88.5 -53q-47 -60 -47 -91q0 -26 22 -26q11 0 20 6q10 6 13 -3 +l14 -34q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="uogonek" unicode="ų" horiz-adv-x="390" +d="M272 -181q-34 0 -55 19t-21 54q0 50 61 111q-2 2 -2 7v38h-1q-25 -57 -90 -57q-110 0 -110 148v330q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -7 -6 -11q-66 -55 -66 -95q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34 +q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="576" +d="M433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10zM399 752h-42q-10 0 -17 10l-52 71 +h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="526" +d="M374 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1 +l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM299 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM290 557h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM285 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM140 777h-51q-10 0 -10 10v72q0 10 10 10h51 +q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10zM192 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z +" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="327" +d="M182 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="362" +d="M215 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="327" +d="M284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163q10 0 10 -10v-51q0 -10 -10 -10zM199 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="362" +d="M202 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM318 0h-273q-10 0 -10 10v52q0 6 2 12l206 529v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12 +l-206 -528v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="327" +d="M190 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM284 0h-238q-10 0 -10 10v49q0 6 3 12l167 337v2h-150q-10 0 -10 10v49q0 10 10 10h228q10 0 10 -10v-41q0 -6 -3 -12l-170 -343v-2h163 +q10 0 10 -10v-51q0 -10 -10 -10z" /> + <glyph glyph-name="florin" unicode="ƒ" +d="M324 337h-81l-49 -364q-11 -80 -45 -116.5t-105 -36.5h-17q-10 0 -10 10v53q0 10 10 10h13q37 0 54 16t23 59l49 369h-68q-10 0 -10 10v44q0 10 10 10h77l17 126q11 80 45 116.5t105 36.5h18q10 0 10 -10v-53q0 -10 -10 -10h-13q-37 0 -54 -16t-23 -59l-18 -131h72 +q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="Aringacute" unicode="Ǻ" horiz-adv-x="406" +d="M217 775h-40q-5 0 -6 3t2 7l82 93q9 10 21 10h55q5 0 6 -3t-2 -7l-99 -93q-9 -10 -19 -10zM379 0h-60q-9 0 -11 10l-30 149h-151l-30 -149q-2 -10 -10 -10h-60q-11 0 -9 10l128 578l3 6q-31 25 -31 68q0 38 24 62t62 24q37 0 61.5 -24.5t24.5 -61.5q0 -42 -31 -68l3 -6 +l126 -578q2 -10 -9 -10zM204 613q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14q-21 0 -34.5 -14t-13.5 -35t13.5 -35t34.5 -14zM202 524l-60 -295h122l-59 295h-3z" /> + <glyph glyph-name="aringacute" unicode="ǻ" horiz-adv-x="371" +d="M197 775h-38q-5 0 -6 3t2 7l82 93q9 10 21 10h56q4 0 5.5 -3.5t-1.5 -6.5l-100 -93q-11 -10 -21 -10zM308 0h-54q-10 0 -10 10v41h-1q-10 -28 -34 -44t-56 -16q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21q-40 0 -81 -32 +q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q72 0 104 -36.5t32 -121.5v-320q0 -10 -10 -10zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78zM186 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5 +t-61.5 -24.5zM186 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="AEacute" unicode="Ǽ" horiz-adv-x="629" +d="M362 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM589 0h-257q-10 0 -10 10v143q0 6 -6 6h-163l-56 -149q-3 -10 -13 -10h-59q-10 0 -7 10l251 660q3 10 12 10h308q10 0 10 -10v-55q0 -10 -10 -10h-180q-6 0 -6 -6v-212 +q0 -6 6 -6h156q10 0 10 -10v-55q0 -10 -10 -10h-156q-6 0 -6 -6v-219q0 -6 6 -6h180q10 0 10 -10v-55q0 -10 -10 -10zM319 597l-139 -368h136q6 0 6 6v362h-3z" /> + <glyph glyph-name="aeacute" unicode="ǽ" horiz-adv-x="565" +d="M304 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106 +q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40 +q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="Oslashacute" unicode="Ǿ" horiz-adv-x="422" +d="M73 -30h-21q-10 0 -7 10l32 78q-9 16 -15 34q-8 24 -10.5 67t-2.5 181t2.5 181t10.5 67q33 101 149 101q64 0 106 -34l19 46q4 9 13 9h21q10 0 7 -10l-32 -78q8 -14 15 -34q8 -24 10.5 -67t2.5 -181t-2.5 -181t-10.5 -67q-31 -101 -149 -101q-66 0 -106 34l-19 -46 +q-4 -9 -13 -9zM131 340q0 -123 1 -154l148 386q-19 41 -69 41q-56 0 -71 -48q-9 -26 -9 -225zM211 67q55 0 72 48q8 27 8 225q0 122 -1 154l-148 -386q18 -41 69 -41zM224 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="oslashacute" unicode="ǿ" horiz-adv-x="374" +d="M187 -9q-50 0 -86 25l-17 -36q-5 -10 -13 -10h-18q-11 0 -8 10l30 63q-11 14 -20 40q-10 32 -10 157q0 124 10 157q30 91 132 91q50 0 86 -25l17 36q4 10 13 10h18q12 0 7 -10l-29 -63q13 -18 20 -39q10 -32 10 -157t-10 -157q-30 -92 -132 -92zM121 240q0 -85 1 -103 +l115 255q-17 25 -50 25q-44 0 -60 -42q-6 -20 -6 -135zM187 62q45 0 59 43q7 20 7 135q0 82 -1 100l-115 -254q18 -24 50 -24zM200 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="392" +d="M167 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM354 192q0 -105 -36.5 -153t-121.5 -48q-153 0 -160 175q0 10 8 11l59 11q11 2 11 -9q3 -62 23 -88t60 -26q41 0 58.5 25t17.5 92q0 59 -14.5 85.5t-54.5 42.5l-41 16 +q-69 27 -94 67t-25 120q0 176 152 176q146 0 154 -162q0 -9 -9 -11l-56 -9q-4 -1 -7.5 1t-3.5 7q-2 51 -20 75.5t-56 24.5q-74 0 -74 -99q0 -52 14.5 -75.5t56.5 -39.5l41 -16q66 -27 92 -68t26 -125z" /> + <glyph glyph-name="scommaaccent" unicode="ș" horiz-adv-x="343" +d="M144 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM172 -9q-60 0 -96 32t-42 90q-2 10 8 12l51 10q10 2 12 -8q8 -69 68 -69q63 0 63 69q0 29 -12 46t-43 30l-40 15q-99 38 -99 135q0 59 35.5 97t95.5 38q56 0 89 -30.5 +t39 -76.5q2 -11 -7 -13l-48 -10q-9 -1 -12 8q-14 56 -61 56q-57 0 -57 -64q0 -47 55 -69l40 -15q54 -20 76 -54t22 -88q0 -64 -36 -102.5t-101 -38.5z" /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="369" +d="M159 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM215 0h-61q-10 0 -10 10v589q0 6 -6 6h-112q-10 0 -10 10v55q0 10 10 10h317q10 0 10 -10v-55q0 -10 -10 -10h-112q-6 0 -6 -6v-589q0 -10 -10 -10z" /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="243" +d="M113 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM203 -5h-25q-55 0 -80 27t-25 87v303q0 6 -6 6h-29q-10 0 -10 10v41q0 10 10 10h29q6 0 6 6v135q0 10 10 10h57q10 0 10 -10v-135q0 -6 6 -6h47q10 0 10 -10v-41 +q0 -10 -10 -10h-47q-6 0 -6 -6v-302q0 -42 40 -42h13q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessj" unicode="ȷ" horiz-adv-x="193" +d="M20 -180h-12q-10 0 -10 10v53q0 10 10 10l11 1q21 1 30 12t9 38v525q0 10 10 10h57q10 0 10 -10v-529q0 -120 -115 -120z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="390" +d="M307 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="390" +d="M213 556h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" horiz-adv-x="390" +d="M292 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve" unicode="˘" horiz-adv-x="390" +d="M195 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="dotaccent" unicode="˙" horiz-adv-x="390" +d="M226 588h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="390" +d="M195 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="ogonek" unicode="˛" horiz-adv-x="390" +d="M205 -181q-34 0 -55 19t-21 54q0 47 59 108q10 10 17 10h54q4 0 5 -3.5t-3 -6.5q-68 -57 -68 -96q0 -26 22 -26q11 0 20 6q10 6 13 -3l14 -34q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="390" +d="M236 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="hungarumlaut" unicode="˝" horiz-adv-x="390" +d="M258 557h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM134 557h-35q-10 0 -5 10l60 123q6 10 16 10h50q11 0 5 -10l-73 -123q-6 -10 -18 -10z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="Delta" unicode="∆" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="pi" unicode="π" horiz-adv-x="406" +d="M369 -6h-8q-52 0 -74.5 25t-22.5 82v300q0 6 -6 6h-106q-6 0 -6 -6v-391q0 -10 -10 -10h-57q-10 0 -10 10v391q0 6 -7 6h-34q-10 0 -10 10v52q0 10 10 10h352q10 0 10 -10v-52q0 -10 -10 -10h-35q-6 0 -6 -6v-302q0 -19 5.5 -26t20.5 -7h4q10 0 10 -10v-52q0 -10 -10 -10 +z" /> + <glyph glyph-name="Wgrave" unicode="Ẁ" horiz-adv-x="576" +d="M308 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10 +l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wgrave" unicode="ẁ" horiz-adv-x="526" +d="M384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10zM286 557h-40q-10 0 -17 10 +l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="Wacute" unicode="Ẃ" horiz-adv-x="576" +d="M307 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2 +l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wacute" unicode="ẃ" horiz-adv-x="526" +d="M283 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326 +q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Wdieresis" unicode="Ẅ" horiz-adv-x="576" +d="M385 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM240 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM433 0h-54q-8 0 -10 10l-79 484h-2l-82 -484q-2 -10 -10 -10h-53q-8 0 -10 10l-108 660q-2 10 8 10h61 +q10 0 11 -10l66 -488h2l83 488q1 10 10 10h44q9 0 10 -10l83 -488h2l68 488q1 10 11 10h59q10 0 8 -10l-108 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wdieresis" unicode="ẅ" horiz-adv-x="526" +d="M360 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM215 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM384 0h-49q-10 0 -11 10l-61 314h-2l-59 -314q-1 -10 -11 -10h-49q-10 0 -11 10l-104 459q-3 10 7 10h60 +q8 0 10 -10l63 -326h1l64 326q2 10 11 10h42q8 0 10 -10l63 -326h1l63 326q2 10 11 10h59q10 0 7 -10l-104 -459q-1 -10 -11 -10z" /> + <glyph glyph-name="Ygrave" unicode="Ỳ" horiz-adv-x="375" +d="M218 0h-61q-10 0 -10 10v271l-131 389q-3 10 7 10h63q9 0 12 -10l89 -285h3l89 285q3 10 11 10h62q10 0 7 -10l-131 -389v-271q0 -10 -10 -10zM222 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="ygrave" unicode="ỳ" horiz-adv-x="355" +d="M73 -180h-11q-10 0 -10 10v53q0 10 10 10l12 1q22 1 33.5 12.5t18.5 42.5l17 66l-117 454q-2 10 8 10h60q8 0 10 -10l74 -327h2l74 327q2 10 11 10h58q10 0 7 -10l-131 -517q-20 -79 -46.5 -105.5t-79.5 -26.5zM209 557h-40q-9 0 -17 10l-87 123q-6 10 5 10h59 +q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="392" +d="M365 234h-338q-10 0 -10 10v44q0 10 10 10h338q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="579" +d="M552 234h-525q-10 0 -10 10v44q0 10 10 10h525q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="156" +d="M105 509h-54q-10 0 -10 10v64q0 13 6 23l48 67q5 8 12 8q8 0 8 -9v-153q0 -10 -10 -10z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="156" +d="M49 506q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -7 -12 -7z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="156" +d="M49 -89q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-67q0 -12 -7 -23l-47 -67q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="272" +d="M221 506h-54q-10 0 -10 10v68q0 13 7 23l47 66q5 8 11 8q9 0 9 -9v-156q0 -10 -10 -10zM105 506h-54q-10 0 -10 10v68q0 15 6 23l48 66q5 8 11 8q9 0 9 -9v-156q0 -10 -10 -10z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="272" +d="M166 506q-9 0 -9 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-4 -7 -11 -7zM49 506q-8 0 -8 9v155q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="272" +d="M166 -91q-9 0 -9 9v156q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-5 -8 -11 -8zM49 -91q-8 0 -8 9v156q0 10 10 10h54q10 0 10 -10v-68q0 -12 -7 -23l-47 -66q-6 -8 -12 -8z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="478" +d="M267 -180h-55q-10 0 -10 10v534q0 6 -6 6h-113q-10 0 -10 10v49q0 10 10 10h113q6 0 6 6v225q0 10 10 10h55q10 0 10 -10v-225q0 -6 6 -6h113q10 0 10 -10v-49q0 -10 -10 -10h-113q-6 0 -6 -6v-534q0 -10 -10 -10z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="478" +d="M267 -180h-55q-10 0 -10 10v196q0 6 -6 6h-113q-10 0 -10 10v50q0 10 10 10h113q6 0 6 6v285q0 6 -6 6h-113q-10 0 -10 10v50q0 10 10 10h113q6 0 6 6v195q0 10 10 10h55q10 0 10 -10v-195q0 -6 6 -6h113q10 0 10 -10v-50q0 -10 -10 -10h-113q-6 0 -6 -6v-285q0 -6 6 -6 +h113q10 0 10 -10v-50q0 -10 -10 -10h-113q-6 0 -6 -6v-196q0 -10 -10 -10z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="417" +d="M209 192q-49 0 -82.5 33t-33.5 83t33 83t83 33t82.5 -33t32.5 -83t-33 -83t-82 -33z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="537" +d="M482 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10zM303 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10zM124 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="895" +d="M218 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM153 329q-68 0 -86 58q-7 22 -7 121q0 98 7 120q18 58 86 58q69 0 87 -58q7 -22 7 -120q0 -99 -7 -121q-18 -58 -87 -58zM153 381q27 0 33 22q4 14 4 105q0 90 -4 104q-6 22 -33 22 +q-26 0 -32 -22q-4 -9 -4 -104q0 -96 4 -105q6 -22 32 -22zM741 -6q-68 0 -87 58q-7 22 -7 120q0 99 7 121q19 58 87 58t86 -58q8 -22 8 -121q0 -98 -8 -120q-18 -58 -86 -58zM495 -6q-69 0 -87 58q-7 22 -7 120q0 99 7 121q18 58 87 58q68 0 86 -58q7 -22 7 -121 +q0 -98 -7 -120q-18 -58 -86 -58zM741 46q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-25 0 -33 -22q-4 -14 -4 -105q0 -90 4 -104q8 -22 33 -22zM495 46q26 0 32 22q4 9 4 104q0 96 -4 105q-6 22 -32 22q-27 0 -33 -22q-4 -14 -4 -105q0 -90 4 -104q6 -22 33 -22z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="271" +d="M200 91l-161 166q-7 7 0 14l161 166q3 3 6.5 1.5t3.5 -5.5v-60q0 -9 -9 -18l-84 -87q-4 -4 0 -8l84 -87q9 -9 9 -18v-60q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="271" +d="M71 91q-3 -3 -6.5 -1.5t-3.5 5.5v60q0 9 9 18l84 87q4 4 0 8l-84 87q-9 9 -9 18v60q0 4 3.5 5.5t6.5 -1.5l161 -166q7 -7 0 -14z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="140" +d="M-36 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="zero.superior" unicode="⁰" horiz-adv-x="270" +d="M135 423q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 479q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="four.superior" unicode="⁴" horiz-adv-x="270" +d="M204 430h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.superior" unicode="⁵" horiz-adv-x="270" +d="M135 423q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.superior" unicode="⁶" horiz-adv-x="270" +d="M135 423q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 479q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.superior" unicode="⁷" horiz-adv-x="270" +d="M117 430h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.superior" unicode="⁸" horiz-adv-x="270" +d="M135 423q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 670q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 479q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.superior" unicode="⁹" horiz-adv-x="270" +d="M131 430h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 647q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="zero.inferior" unicode="₀" horiz-adv-x="270" +d="M135 -163q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 -107q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.inferior" unicode="₁" horiz-adv-x="270" +d="M178 -156h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.inferior" unicode="₂" horiz-adv-x="270" +d="M225 -156h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.inferior" unicode="₃" horiz-adv-x="270" +d="M134 -163q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 11 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.inferior" unicode="₄" horiz-adv-x="270" +d="M204 -156h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.inferior" unicode="₅" horiz-adv-x="270" +d="M135 -163q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 10 3 58t-3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.inferior" unicode="₆" horiz-adv-x="270" +d="M135 -163q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 -107q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.inferior" unicode="₇" horiz-adv-x="270" +d="M117 -156h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.inferior" unicode="₈" horiz-adv-x="270" +d="M135 -163q-75 0 -96 61q-5 16 -5 63q0 40 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 84q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 -107q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -10 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.inferior" unicode="₉" horiz-adv-x="270" +d="M131 -156h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 61q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="Euro" unicode="€" +d="M214 -9q-101 0 -131 93q-11 32 -11 161q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6v54q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6q0 123 11 155q30 93 131 93q62 0 99.5 -37.5t44.5 -98.5q2 -11 -7 -12l-54 -10q-10 -3 -12 7q-11 78 -69 78 +q-45 0 -60 -42q-7 -22 -7 -133q0 -6 6 -6h142q10 0 10 -10l-10 -39q-2 -10 -10 -10h-132q-6 0 -6 -6v-54q0 -6 6 -6h127q10 0 10 -10l-10 -39q-3 -10 -10 -10h-117q-6 0 -6 -6q0 -115 7 -139q15 -42 60 -42q58 0 69 78q2 10 12 7l54 -10q9 -1 7 -12q-7 -61 -44.5 -98.5 +t-99.5 -37.5z" /> + <glyph glyph-name="afii61289" unicode="ℓ" horiz-adv-x="385" +d="M94 195q-7 -7 -14 0l-27 30q-7 7 1 14l70 74v207q0 83 28.5 126.5t82.5 43.5q47 0 73.5 -31.5t26.5 -87.5q0 -119 -134 -265v-201q0 -48 33 -48q16 0 34 15q9 7 14 -1l19 -28q6 -8 -2 -16q-37 -37 -85 -37q-90 0 -90 120v116zM201 542v-143q69 91 69 173q0 58 -32 58 +q-37 0 -37 -88z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="645" +d="M575 286h-36q-10 0 -10 10v232h-1l-51 -168q-3 -10 -11 -10h-22q-8 0 -11 10l-50 168h-1v-232q0 -10 -10 -10h-37q-10 0 -10 10v374q0 10 10 10h42q9 0 12 -10l67 -232h1l65 232q3 10 12 10h41q10 0 10 -10v-374q0 -10 -10 -10zM188 286h-40q-10 0 -10 10v322q0 5 -5 5 +h-60q-10 0 -10 10v37q0 10 10 10h190q10 0 10 -10v-37q0 -10 -10 -10h-60q-5 0 -5 -5v-322q0 -10 -10 -10z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="587" +d="M292 -9q-104 0 -168 72t-64 178t64 176.5t168 70.5q105 0 169 -68.5t65 -178.5h-364v-164q54 -52 130 -52q110 0 173 108l33 -20q-43 -65 -89.5 -93.5t-116.5 -28.5zM424 273v130q-58 55 -132 55q-77 0 -130 -55v-130h262z" /> + <glyph glyph-name="onethird" unicode="⅓" horiz-adv-x="723" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM542 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4 +q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60 +q6 -20 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="twothirds" unicode="⅔" horiz-adv-x="782" +d="M269 274h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z +M291 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10zM601 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21 +q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -20 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="oneeighth" unicode="⅛" horiz-adv-x="726" +d="M200 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10zM545 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44 +q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM545 240q27 0 35 23q4 9 4 36q0 26 -4 35q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM545 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44 +q0 -35 3 -45q9 -23 36 -23zM233 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threeeighths" unicode="⅜" horiz-adv-x="771" +d="M590 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM590 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM590 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM278 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z +M179 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="fiveeighths" unicode="⅝" horiz-adv-x="771" +d="M590 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM590 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM590 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM278 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z +M179 267q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="seveneighths" unicode="⅞" horiz-adv-x="722" +d="M540 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM540 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM540 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23zM160 274h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89 +q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10zM228 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="partialdiff" unicode="∂" horiz-adv-x="409" +d="M182 -10q-65 0 -101 56t-36 148q0 100 42.5 163.5t113.5 63.5q59 0 91 -43h2q-2 114 -30.5 179t-81.5 65q-33 0 -66 -24q-9 -7 -14 2l-25 38q-5 8 3 14q52 38 108 38q87 0 131.5 -84t44.5 -237q0 -185 -46 -282t-136 -97zM189 59q91 0 103 240q-33 54 -81 54 +q-44 0 -69.5 -42.5t-25.5 -112.5q0 -139 73 -139z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="512" +d="M443 -180h-61q-10 0 -10 10v828q0 6 -6 6h-221q-6 0 -6 -6v-828q0 -10 -10 -10h-61q-10 0 -10 10v900q0 10 10 10h375q10 0 10 -10v-900q0 -10 -10 -10z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="458" +d="M411 -180h-365q-10 0 -10 10v54q0 5 2 9l176 427l-171 343q-3 6 -3 11v56q0 10 10 10h351q10 0 10 -10v-56q0 -10 -10 -10h-268l166 -331q3 -7 0 -14l-177 -423h289q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="minus" unicode="−" +d="M338 241h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="140" +d="M-36 -9h-39q-10 0 -7 10l245 678q4 10 13 10h39q10 0 7 -10l-245 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="185" +d="M125 213h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="551" +d="M306 -180h-47q-7 0 -12 10l-113 275q-3 6 -9 3l-59 -25q-10 -5 -13 4l-17 40q-4 10 4 13l116 52q10 5 14 -4l105 -260h3l189 802q3 10 12 10h49q11 0 8 -10l-218 -900q-3 -10 -12 -10z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="648" +d="M486 97q-47 0 -83.5 23.5t-78.5 76.5q-44 -54 -80.5 -77t-80.5 -23q-65 0 -104.5 41t-39.5 109t40 109t104 41q45 0 81 -23.5t80 -77.5q46 56 81.5 78.5t79.5 22.5q65 0 105 -41t40 -109t-40 -109t-104 -41zM483 156q39 0 62 25.5t23 66.5q0 40 -23.5 65t-62.5 25 +q-27 0 -54 -20t-66 -71q39 -50 65 -70.5t56 -20.5zM165 156q28 0 55 20t66 71q-69 91 -120 91q-39 0 -62.5 -24.5t-23.5 -65.5t23 -66.5t62 -25.5z" /> + <glyph glyph-name="integral" unicode="∫" horiz-adv-x="292" +d="M54 -180q-13 0 -18 1q-10 0 -10 10v54q0 10 10 10h12q31 0 45 19t14 64v599q0 163 131 163q13 0 18 -1q10 0 10 -10v-54q0 -10 -10 -10h-13q-31 0 -44.5 -19t-13.5 -64v-599q0 -163 -131 -163z" /> + <glyph glyph-name="approxequal" unicode="≈" +d="M254 304q-29 0 -69 25q-31 21 -48 21t-27.5 -8.5t-25.5 -32.5q-5 -8 -14 -3l-33 18q-8 5 -4 14q41 76 99 76q37 0 69 -25q29 -22 48 -22q16 0 27.5 9t25.5 33q5 8 14 3l32 -18q10 -5 4 -15q-40 -75 -98 -75zM254 139q-31 0 -69 26q-31 21 -48 21t-27.5 -8.5t-25.5 -32.5 +q-5 -8 -14 -4l-33 19q-8 5 -4 14q42 76 99 76q31 0 69 -26q34 -21 48 -21q16 0 27.5 8.5t25.5 32.5q5 8 14 4l32 -18q10 -5 4 -15q-40 -76 -98 -76z" /> + <glyph glyph-name="notequal" unicode="≠" +d="M338 329h-90l-50 -106h140q10 0 10 -10v-49q0 -10 -10 -10h-173l-37 -78q-4 -10 -13 -10h-39q-12 0 -7 10l37 78h-58q-10 0 -10 10v49q0 10 10 10h91l50 106h-141q-10 0 -10 10v49q0 10 10 10h174l36 76q4 10 13 10h39q12 0 7 -10l-36 -76h57q10 0 10 -10v-49 +q0 -10 -10 -10z" /> + <glyph glyph-name="lessequal" unicode="≤" +d="M338 135l-290 118q-10 3 -10 14v44q0 11 10 14l290 119q10 3 10 -7v-54q0 -9 -10 -13l-202 -80v-2l202 -79q10 -4 10 -13v-54q0 -10 -10 -7zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="greaterequal" unicode="≥" +d="M48 135q-10 -4 -10 7v54q0 9 10 13l203 79v2l-203 80q-10 4 -10 13v54q0 11 10 7l290 -119q10 -3 10 -14v-44q0 -11 -10 -14zM338 0h-290q-10 0 -10 10v50q0 10 10 10h290q10 0 10 -10v-50q0 -10 -10 -10z" /> + <glyph glyph-name="lozenge" unicode="◊" horiz-adv-x="429" +d="M240 -52h-51q-9 0 -13 10l-150 364q-3 7 0 14l150 364q4 10 13 10h51q9 0 13 -10l150 -364q3 -7 0 -14l-150 -364q-4 -10 -13 -10zM216 33h2l116 296l-119 295h-2l-118 -295z" /> + <glyph glyph-name="uniF8FF" unicode="" horiz-adv-x="376" +d="M366 0h-356q-10 0 -10 10v660q0 10 10 10h356q10 0 10 -10v-660q0 -10 -10 -10zM321 46q6 0 6 6v576q0 6 -6 6h-267q-6 0 -6 -6v-576q0 -6 6 -6h267zM204 222h-33q-10 0 -10 10v47q0 21 12 45l35 67q19 37 19 67q0 21 -4 32q-7 24 -36 24t-36 -24q-4 -11 -4 -44 +q0 -11 -11 -9l-32 4q-9 1 -9 11q0 35 6 53q8 27 31 42.5t56 15.5q32 0 55 -15.5t31 -42.5q6 -18 6 -45q0 -41 -21 -80l-35 -67q-10 -22 -10 -37v-44q0 -10 -10 -10zM207 114h-38q-10 0 -10 10v49q0 10 10 10h38q10 0 10 -10v-49q0 -10 -10 -10z" /> + <glyph glyph-name="CR" horiz-adv-x="0" + /> + <glyph glyph-name="grave.cap" horiz-adv-x="390" +d="M268 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="acute.cap" horiz-adv-x="390" +d="M167 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="circumflex.cap" horiz-adv-x="390" +d="M307 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron.cap" horiz-adv-x="390" +d="M213 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="caron.alt" horiz-adv-x="390" +d="M168 524q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7z" /> + <glyph glyph-name="tilde.cap" horiz-adv-x="390" +d="M236 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="dieresis.cap" horiz-adv-x="390" +d="M293 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="macron.cap" horiz-adv-x="390" +d="M292 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve.cap" horiz-adv-x="390" +d="M195 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ring.cap" horiz-adv-x="390" +d="M195 731q-37 0 -61.5 24.5t-24.5 61.5t24.5 61.5t61.5 24.5t61.5 -24.5t24.5 -61.5t-24.5 -61.5t-61.5 -24.5zM195 768q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="hungarumlaut.cap" horiz-adv-x="390" +d="M262 763h-35q-12 0 -5 10l68 105q7 10 16 10h49q11 0 5 -10l-80 -105q-8 -10 -18 -10zM138 763h-34q-12 0 -5 10l67 105q7 10 17 10h49q4 0 5.5 -3t-1.5 -7l-79 -105q-7 -10 -19 -10z" /> + <glyph glyph-name="dotaccent.cap" horiz-adv-x="390" +d="M226 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="commaaccent" horiz-adv-x="390" +d="M167 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="commaaccent.alt" horiz-adv-x="390" +d="M222 572h-53q-10 0 -10 10v49q0 14 6 22l46 66q5 8 12 8q9 0 9 -10v-135q0 -10 -10 -10z" /> + <glyph glyph-name="uni0394" horiz-adv-x="406" +d="M379 0h-352q-11 0 -9 10l145 660q3 10 11 10h60q9 0 11 -10l143 -660q2 -10 -9 -10zM290 76q6 0 4 6l-89 443h-3l-91 -443q-1 -6 5 -6h174z" /> + <glyph glyph-name="uni03A9" horiz-adv-x="421" +d="M370 0h-121q-10 0 -10 10v53q0 7 10 14q30 21 37 62t7 201q0 197 -9 224q-16 49 -73 49q-58 0 -74 -49q-9 -27 -9 -224q0 -113 3.5 -160.5t11.5 -67.5t30 -35q9 -6 9 -14v-53q0 -10 -10 -10h-121q-10 0 -10 10v56q0 10 10 10h40v1q-19 18 -27.5 38t-13 71.5t-4.5 153.5 +q0 138 2.5 180.5t10.5 66.5q16 49 55 75.5t97 26.5q57 0 96 -26.5t55 -75.5q8 -24 10.5 -66.5t2.5 -180.5q0 -102 -4.5 -153.5t-13 -71.5t-27.5 -38v-1h40q10 0 10 -10v-56q0 -10 -10 -10z" /> + <glyph glyph-name="uni03BC" horiz-adv-x="394" +d="M326 0h-57q-10 0 -10 10v38h-1q-20 -57 -80 -57q-30 0 -43 19v-180q0 -10 -10 -10h-57q-10 0 -10 10v639q0 10 10 10h57q10 0 10 -10v-319q0 -87 62 -87t62 87v319q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="exclam.sc" horiz-adv-x="206" +d="M120 170h-34q-10 0 -10 10l-15 329q0 10 10 10h64q10 0 10 -10l-15 -329q0 -10 -10 -10zM136 0h-66q-10 0 -10 10v84q0 10 10 10h66q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="dollar.sc" horiz-adv-x="362" +d="M188 -56h-15q-10 0 -10 10v38q-117 7 -126 134q0 11 8 12l49 8q9 1 11 -8q4 -73 58 -80v178l-13 4q-57 17 -82 50.5t-25 94.5q0 66 31 102t89 40v27q0 10 10 10h15q10 0 10 -10v-27q104 -10 116 -127q0 -11 -8 -12l-47 -7q-9 -2 -11 8q-8 63 -50 70v-159l10 -3 +q61 -19 85.5 -53.5t24.5 -101.5q0 -142 -120 -150v-38q0 -10 -10 -10zM114 387q0 -31 10.5 -48t38.5 -28v149q-49 -7 -49 -73zM248 141q0 61 -50 83v-165q26 5 38 23.5t12 58.5z" /> + <glyph glyph-name="percent.sc" horiz-adv-x="623" +d="M223 -9h-39q-10 0 -7 10l211 516q4 10 13 10h38q10 0 7 -10l-211 -516q-3 -10 -12 -10zM154 255q-65 0 -81 52q-7 20 -7 83q0 64 7 82q17 53 81 53t82 -53q7 -23 7 -82q0 -58 -7 -83q-18 -52 -82 -52zM154 305q21 0 29 19q3 10 3 66q0 54 -3 65q-8 19 -29 19 +q-22 0 -28 -19q-3 -11 -3 -65q0 -56 3 -66q6 -19 28 -19zM469 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t81 -53q7 -18 7 -82t-7 -82q-17 -53 -81 -53zM469 44q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-4 -9 -4 -65t4 -65q6 -20 28 -20z" /> + <glyph glyph-name="ampersand.sc" horiz-adv-x="483" +d="M419 -4h-21q-24 0 -35.5 5.5t-22.5 21.5l-23 31q-54 -63 -127 -63q-59 0 -92 32t-33 86q0 38 19.5 74.5t73.5 92.5l-12 17q-30 42 -41.5 68t-11.5 53q0 49 34 81.5t88 32.5q53 0 86.5 -32.5t33.5 -81.5q0 -29 -18 -58.5t-69 -83.5l72 -97l40 65q5 8 14 4l38 -25 +q9 -5 4 -14l-55 -87l26 -34q13 -19 29 -19h3q10 0 10 -10v-49q0 -10 -10 -10zM165 416q0 -29 43 -89q34 34 45 52.5t11 36.5q0 22 -13 36t-36 14q-22 0 -36 -14.5t-14 -35.5zM197 60q40 0 80 50l-79 110q-35 -37 -48 -58.5t-13 -44.5q0 -26 16 -41.5t44 -15.5z" /> + <glyph glyph-name="zero.sc" horiz-adv-x="362" +d="M181 -9q-47 0 -79 22t-45 62q-9 26 -9 185t9 185q27 83 124 83t124 -83q9 -26 9 -185t-9 -185q-13 -40 -45 -62t-79 -22zM181 64q39 0 51 35q5 17 5 161q0 143 -5 161q-12 35 -51 35t-51 -35q-5 -18 -5 -161q0 -144 5 -161q12 -35 51 -35z" /> + <glyph glyph-name="one.sc" horiz-adv-x="362" +d="M226 0h-58q-10 0 -10 10v419h-1l-78 -46q-11 -5 -11 7v60q0 8 7 14l79 50q8 5 16 5h56q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="two.sc" horiz-adv-x="362" +d="M303 0h-245q-9 0 -9 9v51q0 8 3 12l155 219q17 24 22.5 42t5.5 51q0 27 -4 38q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -42q0 -11 -12 -9l-54 5q-9 2 -9 12q0 38 6 57q27 83 125 83t124 -83q9 -25 9 -62q0 -45 -10.5 -73.5t-34.5 -62.5l-126 -174v-1h161q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.sc" horiz-adv-x="362" +d="M179 -9q-98 0 -125 83q-6 19 -6 49q0 11 9 12l54 5q12 2 12 -9q0 -22 4 -34q12 -33 52 -33q39 0 51 33q4 12 4 53q0 38 -3 49q-11 33 -56 33h-13q-10 0 -10 10v51q0 10 10 10h13q45 0 56 32q3 11 3 42q0 34 -4 45q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -33 +q0 -12 -12 -10l-54 6q-9 1 -9 12q0 29 6 48q27 83 125 83t124 -83q9 -25 9 -68q0 -36 -6 -54q-11 -33 -47 -52v-2q36 -19 47 -53q6 -18 6 -66q0 -51 -9 -76q-26 -83 -124 -83z" /> + <glyph glyph-name="four.sc" horiz-adv-x="362" +d="M274 0h-56q-10 0 -10 10v60q0 6 -6 6h-165q-10 0 -10 10v52q0 5 2 11l127 362q3 8 12 8h58q11 0 8 -11l-126 -358v-2h94q6 0 6 6v134q0 10 10 10h56q10 0 10 -10v-134q0 -6 5 -6h37q10 0 10 -10v-52q0 -10 -10 -10h-36q-6 0 -6 -6v-60q0 -10 -10 -10z" /> + <glyph glyph-name="five.sc" horiz-adv-x="362" +d="M181 -9q-99 0 -125 83q-6 16 -6 39q0 11 10 12l53 5q11 1 13 -9q0 -12 4 -24q11 -33 51 -33q39 0 51 33q4 16 4 68q0 55 -5 68q-12 33 -50 33q-33 0 -49 -22q-5 -8 -16 -8h-47q-10 0 -10 10v263q0 10 10 10h235q10 0 10 -10v-52q0 -10 -10 -10h-169q-6 0 -6 -6v-124h1 +q24 21 70 21q82 0 106 -74q8 -26 8 -99q0 -67 -9 -92q-26 -82 -124 -82z" /> + <glyph glyph-name="six.sc" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 86 29 148l99 212q4 9 15 9h58q11 0 6 -10l-98 -206l2 -1q14 7 39 7q83 0 108 -76q8 -27 8 -83q0 -49 -8 -76q-28 -83 -125 -83zM181 64q39 0 51 33q5 15 5 53t-5 53q-12 33 -51 33t-51 -33q-5 -15 -5 -53t5 -53q12 -33 51 -33z" /> + <glyph glyph-name="seven.sc" horiz-adv-x="362" +d="M150 0h-56q-12 0 -7 12l159 434v1h-115q-6 0 -6 -6v-46q0 -10 -10 -10h-52q-10 0 -10 10v114q0 10 10 10h250q10 0 10 -10v-54q0 -6 -3 -12l-156 -433q-3 -10 -14 -10z" /> + <glyph glyph-name="eight.sc" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 42 7 67q14 39 42 54v2q-29 15 -42 54q-7 25 -7 55q0 36 8 63q28 83 125 83t125 -83q8 -27 8 -63q0 -30 -7 -55q-13 -39 -42 -54v-2q28 -15 42 -54q7 -25 7 -67q0 -49 -8 -76q-28 -83 -125 -83zM181 308q39 0 51 34q5 13 5 40t-5 40 +q-12 34 -51 34t-51 -34q-5 -13 -5 -40t5 -40q12 -34 51 -34zM181 64q39 0 51 33q5 15 5 53q0 39 -5 52q-12 34 -51 34t-51 -34q-5 -13 -5 -52q0 -38 5 -53q12 -33 51 -33z" /> + <glyph glyph-name="nine.sc" horiz-adv-x="362" +d="M171 0h-58q-11 0 -6 11l98 205l-2 1q-12 -6 -39 -6q-83 0 -108 75q-8 29 -8 83q0 49 8 76q28 83 125 83t125 -83q8 -27 8 -76q0 -85 -29 -148l-99 -212q-4 -9 -15 -9zM181 283q39 0 51 34q5 13 5 52q0 40 -5 53q-12 34 -51 34t-51 -34q-5 -13 -5 -53q0 -39 5 -52 +q12 -34 51 -34z" /> + <glyph glyph-name="question.sc" horiz-adv-x="313" +d="M184 156h-59q-10 0 -10 10v34q0 33 16 55l47 65q28 40 28 74q0 16 -4 30q-12 32 -50 32q-37 0 -49 -32q-4 -10 -5 -41q0 -11 -10 -9l-56 7q-9 1 -9 10q0 37 8 61q13 37 45 56.5t77 19.5q95 0 122 -78q8 -21 8 -52q0 -54 -30 -94l-46 -64q-13 -18 -13 -45v-29 +q0 -10 -10 -10zM187 0h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="a.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="b.sc" horiz-adv-x="382" +d="M180 0h-111q-10 0 -10 10v499q0 10 10 10h120q82 0 117.5 -31t35.5 -101q0 -92 -69 -116v-1q76 -17 76 -121q0 -80 -40 -114.5t-129 -34.5zM183 301q43 0 61.5 16.5t18.5 56.5q0 42 -17.5 58t-62.5 16h-41q-6 0 -6 -6v-135q0 -6 6 -6h41zM182 71q50 0 69.5 17.5 +t19.5 62.5t-19.5 62.5t-66.5 17.5h-43q-6 0 -6 -6v-148q0 -6 6 -6h40z" /> + <glyph glyph-name="c.sc" horiz-adv-x="369" +d="M192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="d.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v499q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-363q0 -6 6 -6h51z" /> + <glyph glyph-name="e.sc" horiz-adv-x="344" +d="M305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="f.sc" horiz-adv-x="342" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-138q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-209q0 -10 -10 -10z" /> + <glyph glyph-name="g.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25z" /> + <glyph glyph-name="h.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-202q0 -6 6 -6h129q6 0 6 6v202q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="i.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="j.sc" horiz-adv-x="319" +d="M121 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5z" /> + <glyph glyph-name="k.sc" horiz-adv-x="396" +d="M370 0h-63q-8 0 -11 7l-108 232l-52 -85v-144q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-235l140 238q4 7 13 7h61q10 0 5 -9l-122 -198l142 -302q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="l.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="m.sc" horiz-adv-x="508" +d="M439 0h-51q-10 0 -10 10v347h-4l-92 -255q-3 -10 -12 -10h-32q-9 0 -12 10l-92 255h-4v-347q0 -10 -10 -10h-51q-10 0 -10 10v499q0 10 10 10h58q12 0 15 -10l111 -307h4l109 307q4 10 16 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="n.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="o.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="p.sc" horiz-adv-x="379" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h122q158 0 158 -157q0 -158 -158 -158h-49q-6 0 -6 -6v-188q0 -10 -10 -10zM184 275q47 0 67.5 19.5t20.5 67.5q0 47 -20.5 66.5t-67.5 19.5h-42q-6 0 -6 -6v-161q0 -6 6 -6h42z" /> + <glyph glyph-name="q.sc" horiz-adv-x="392" +d="M360 9l-28 -28q-7 -7 -14 1l-33 39q-38 -30 -89 -30q-52 0 -88 24.5t-50 68.5q-11 32 -11 176q0 143 11 176q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -176q0 -162 -24 -198l39 -39q6 -8 0 -14zM196 60q28 0 44 10l-42 44q-8 8 0 14l24 24q8 6 14 -1l28 -32h2 +q3 25 3 141q0 133 -7 153q-14 44 -66 44t-66 -44q-7 -20 -7 -153q0 -135 7 -153q14 -47 66 -47z" /> + <glyph glyph-name="r.sc" horiz-adv-x="395" +d="M352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153 +q0 -6 6 -6h41z" /> + <glyph glyph-name="s.sc" horiz-adv-x="363" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="t.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10z" /> + <glyph glyph-name="u.sc" horiz-adv-x="409" +d="M205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="v.sc" horiz-adv-x="359" +d="M206 0h-52q-8 0 -10 10l-123 499q-2 10 9 10h57q10 0 11 -10l82 -369h3l80 369q1 10 11 10h56q10 0 8 -10l-122 -499q-2 -10 -10 -10z" /> + <glyph glyph-name="w.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10z" /> + <glyph glyph-name="x.sc" horiz-adv-x="370" +d="M340 0h-60q-9 0 -13 10l-81 176h-2l-80 -176q-4 -10 -14 -10h-60q-5 0 -6.5 3t0.5 8l120 260l-109 238q-5 10 7 10h59q9 0 13 -9l71 -158h2l71 158q4 9 13 9h57q12 0 7 -10l-109 -238l120 -260q2 -5 0.5 -8t-6.5 -3z" /> + <glyph glyph-name="y.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10z" /> + <glyph glyph-name="z.sc" horiz-adv-x="337" +d="M295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="agrave.sc" horiz-adv-x="370" +d="M204 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aacute.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM204 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM298 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123 +q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde.sc" horiz-adv-x="370" +d="M227 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99 +q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="adieresis.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM284 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 628h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.sc" horiz-adv-x="370" +d="M347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3zM283 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.sc" horiz-adv-x="370" +d="M186 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499 +q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aring.sc" horiz-adv-x="370" +d="M186 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM186 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10 +h-57q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q3 -10 -8 -10zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aringacute.sc" horiz-adv-x="370" +d="M200 701h-39q-5 0 -6.5 3t1.5 7l76 106q7 10 16 10h59q5 0 6 -3t-2 -7l-93 -106q-10 -10 -18 -10zM347 0h-57q-8 0 -11 10l-24 99h-140l-24 -99q-3 -10 -11 -10h-57q-11 0 -8 10l126 483q-42 24 -42 76q0 37 24.5 61.5t61.5 24.5t61.5 -24.5t24.5 -61.5q0 -51 -41 -76 +l125 -483q3 -10 -8 -10zM185 519q21 0 34.5 14t13.5 36q0 21 -13.5 35t-34.5 14t-34 -14t-13 -35q0 -22 13 -36t34 -14zM184 392l-52 -212h106l-51 212h-3z" /> + <glyph glyph-name="aogonek.sc" horiz-adv-x="370" +d="M295 -181q-34 0 -55 19t-21 54q0 49 63 110l-3 8l-24 99h-140l-24 -99q-2 -10 -10 -10h-58q-11 0 -8 10l130 499q3 10 12 10h57q9 0 12 -10l129 -499q1 -7 -4 -10q-67 -58 -67 -96q0 -26 21 -26q12 0 21 6q9 5 12 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15zM238 180 +l-51 212h-3l-52 -212h106z" /> + <glyph glyph-name="ae.sc" horiz-adv-x="559" +d="M520 0h-236q-10 0 -10 10v93q0 6 -6 6h-133l-40 -99q-5 -10 -13 -10h-60q-10 0 -7 10l205 499q4 10 13 10h287q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52 +q0 -10 -10 -10zM271 447l-108 -267h105q6 0 6 6v261h-3z" /> + <glyph glyph-name="aeacute.sc" horiz-adv-x="559" +d="M520 0h-236q-10 0 -10 10v93q0 6 -6 6h-133l-40 -99q-5 -10 -13 -10h-60q-10 0 -7 10l205 499q4 10 13 10h287q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52 +q0 -10 -10 -10zM271 447l-108 -267h105q6 0 6 6v261h-3zM316 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="cacute.sc" horiz-adv-x="369" +d="M200 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45 +q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="ccircumflex.sc" horiz-adv-x="369" +d="M192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-8 -61 -45.5 -93.5t-96.5 -32.5zM304 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ccaron.sc" horiz-adv-x="369" +d="M210 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9 +q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="cdotaccent.sc" horiz-adv-x="369" +d="M220 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM192 -9q-50 0 -85 24.5t-49 69.5q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45 +q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12q-8 -61 -45.5 -93.5t-96.5 -32.5z" /> + <glyph glyph-name="ccedilla.sc" horiz-adv-x="369" +d="M102 -142l54 137q-75 15 -98 90q-11 38 -11 175q0 136 11 174q14 45 49 69.5t85 24.5q59 0 96.5 -32.5t45.5 -93.5q1 -9 -8 -12l-53 -9q-10 -2 -12 9q-12 66 -68 66q-47 0 -61 -45q-8 -24 -8 -151q0 -128 8 -152q13 -44 61 -44q56 0 68 66q2 10 12 8l53 -9q9 -3 8 -12 +q-7 -54 -37.5 -85.5t-78.5 -38.5l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="dcaron.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v499q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-363q0 -6 6 -6h51zM210 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42 +q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="dcroat.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v216q0 6 -6 6h-25q-10 0 -10 10v41q0 10 10 10h25q6 0 6 6v210q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-142 +q0 -6 6 -6h52q10 0 10 -10v-41q0 -10 -10 -10h-52q-6 0 -6 -6v-148q0 -6 6 -6h51z" /> + <glyph glyph-name="eth.sc" horiz-adv-x="404" +d="M201 0h-132q-10 0 -10 10v216q0 6 -6 6h-25q-10 0 -10 10v41q0 10 10 10h25q6 0 6 6v210q0 10 10 10h132q114 0 143 -91q14 -41 14 -168q0 -129 -14 -168q-16 -47 -50 -69.5t-93 -22.5zM193 72q62 0 78 51q9 26 9 137t-9 137q-16 50 -78 50h-51q-6 0 -6 -6v-142 +q0 -6 6 -6h52q10 0 10 -10v-41q0 -10 -10 -10h-52q-6 0 -6 -6v-148q0 -6 6 -6h51z" /> + <glyph glyph-name="egrave.sc" horiz-adv-x="344" +d="M213 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6 +h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="eacute.sc" horiz-adv-x="344" +d="M194 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6 +h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ecircumflex.sc" horiz-adv-x="344" +d="M305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10zM300 597h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="ecaron.sc" horiz-adv-x="344" +d="M206 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52 +q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="edieresis.sc" horiz-adv-x="344" +d="M284 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM139 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6 +h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="emacron.sc" horiz-adv-x="344" +d="M281 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ebreve.sc" horiz-adv-x="344" +d="M184 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10 +v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="edotaccent.sc" horiz-adv-x="344" +d="M211 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM305 0h-236q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="eogonek.sc" horiz-adv-x="344" +d="M244 -181q-34 0 -55 19t-21 54q0 47 59 108h-158q-10 0 -10 10v499q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10h-5 +q-68 -59 -68 -96q0 -26 22 -26q10 0 21 6q9 5 12 -3l15 -34q3 -8 -5 -13q-23 -15 -53 -15z" /> + <glyph glyph-name="gcircumflex.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM308 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="gbreve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM196 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="gdotaccent.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10 +h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25zM227 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="gcommaaccent.sc" horiz-adv-x="392" +d="M168 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q61 0 100 -32.5t46 -92.5q2 -9 -7 -11l-53 -9q-10 -3 -12 8q-12 65 -73 65q-51 0 -66 -45 +q-7 -25 -7 -151t7 -152q15 -44 67 -44t67 44q7 21 7 106q0 6 -6 6h-62q-10 0 -10 10v49q0 10 10 10h131q10 0 10 -10v-23q0 -138 -11 -171q-14 -44 -50 -69t-88 -25z" /> + <glyph glyph-name="hcircumflex.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-202q0 -6 6 -6h129q6 0 6 6v202q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM318 597h-42q-10 0 -17 10l-52 71h-2l-52 -71 +q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="hbar.sc" horiz-adv-x="413" +d="M344 0h-57q-10 0 -10 10v213q0 6 -6 6h-129q-6 0 -6 -6v-213q0 -10 -10 -10h-57q-10 0 -10 10v364q0 6 -6 6h-33q-10 0 -10 10v41q0 10 10 10h33q6 0 6 6v62q0 10 10 10h57q10 0 10 -10v-62q0 -6 6 -6h129q6 0 6 6v62q0 10 10 10h57q10 0 10 -10v-62q0 -6 6 -6h33 +q10 0 10 -10v-41q0 -10 -10 -10h-33q-6 0 -6 -6v-364q0 -10 -10 -10zM271 301q6 0 6 6v67q0 6 -6 6h-129q-6 0 -6 -6v-67q0 -6 6 -6h129z" /> + <glyph glyph-name="igrave.sc" horiz-adv-x="195" +d="M123 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="iacute.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM115 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10z" /> + <glyph glyph-name="ibreve.sc" horiz-adv-x="195" +d="M98 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM210 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="itilde.sc" horiz-adv-x="195" +d="M140 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10 +v-499q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM195 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM50 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="imacron.sc" horiz-adv-x="195" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM195 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="idotaccent.sc" horiz-adv-x="195" +d="M129 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="iogonek.sc" horiz-adv-x="195" +d="M86 -181q-35 0 -56 19t-21 54q0 50 56 109q-6 0 -6 9v499q0 10 10 10h57q10 0 10 -10v-499q0 -4 -3 -9q-59 -63 -59 -97q0 -26 22 -26q11 0 20 6q9 5 12 -3l15 -34q3 -9 -5 -13q-22 -15 -52 -15z" /> + <glyph glyph-name="jcircumflex.sc" horiz-adv-x="319" +d="M121 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5zM327 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="kcommaaccent.sc" horiz-adv-x="396" +d="M181 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM370 0h-63q-8 0 -11 7l-108 232l-52 -85v-144q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-235l140 238q4 7 13 7h61q10 0 5 -9l-122 -198l142 -302 +q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="lacute.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM122 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="lcaron.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM189 364q-9 0 -9 9v137q0 10 10 10h52q10 0 10 -10v-50q0 -13 -6 -23l-45 -66q-4 -7 -12 -7z" /> + <glyph glyph-name="lcommaaccent.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM152 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="lslash.sc" horiz-adv-x="331" +d="M207 294l-71 -49v-167q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10h-232q-10 0 -10 10v185l-34 -23q-4 -2 -7 -0.5t-3 5.5v54q0 9 10 16l34 23v239q0 10 10 10h57q10 0 10 -10v-189l71 49q4 2 7 0.5t3 -5.5v-54q0 -9 -10 -16z" /> + <glyph glyph-name="ldot.sc" horiz-adv-x="331" +d="M301 0h-232q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-431q0 -6 6 -6h159q10 0 10 -10v-52q0 -10 -10 -10zM296 211h-65q-10 0 -10 10v84q0 10 10 10h65q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="nacute.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM216 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ncaron.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM229 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42 +q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="ntilde.sc" horiz-adv-x="424" +d="M355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10zM253 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18 +q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="ncommaaccent.sc" horiz-adv-x="424" +d="M190 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM355 0h-66q-12 0 -16 10l-141 377h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q13 0 16 -10l137 -374h4v374q0 10 10 10h50q10 0 10 -10v-499q0 -10 -10 -10z +" /> + <glyph glyph-name="ograve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM213 597h-40 +q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="oacute.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM207 597h-40 +q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ocircumflex.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM308 597h-42 +q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="otilde.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM237 621 +q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="odieresis.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM294 628h-51 +q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM149 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="omacron.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM293 643h-194 +q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="obreve.sc" horiz-adv-x="392" +d="M196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44zM196 603 +q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ohungarumlaut.sc" horiz-adv-x="392" +d="M268 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM145 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM196 -9q-52 0 -88 25t-50 69q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5t88 -24.5t50 -68.5 +q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="oslash.sc" horiz-adv-x="392" +d="M69 -30h-21q-11 0 -6 10l33 68q-12 18 -17 37q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q56 0 94 -30l20 41q6 10 14 10h20q10 0 7 -10l-34 -69q11 -16 17 -35q11 -33 11 -175t-11 -175q-14 -44 -50 -69t-88 -25q-57 0 -95 29l-19 -40q-6 -10 -13 -10zM124 260 +q0 -87 1 -108l129 274q-16 30 -58 30q-50 0 -65 -45q-7 -25 -7 -151zM196 64q50 0 65 44q7 21 7 152q0 86 -1 107l-130 -274q17 -29 59 -29z" /> + <glyph glyph-name="oslashacute.sc" horiz-adv-x="392" +d="M207 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM69 -30h-21q-11 0 -6 10l33 68q-12 18 -17 37q-11 33 -11 175t11 175q14 44 50 68.5t88 24.5q56 0 94 -30l20 41q6 10 14 10h20q10 0 7 -10l-34 -69q11 -16 17 -35q11 -33 11 -175 +t-11 -175q-14 -44 -50 -69t-88 -25q-57 0 -95 29l-19 -40q-6 -10 -13 -10zM124 260q0 -87 1 -108l129 274q-16 30 -58 30q-50 0 -65 -45q-7 -25 -7 -151zM196 64q50 0 65 44q7 21 7 152q0 86 -1 107l-130 -274q17 -29 59 -29z" /> + <glyph glyph-name="oe.sc" horiz-adv-x="553" +d="M514 0h-236q-10 0 -10 10v21h-1q-22 -40 -86 -40q-96 0 -123 89q-11 33 -11 180q0 146 11 179q27 89 123 89q64 0 86 -40h1v21q0 10 10 10h236q10 0 10 -10v-52q0 -10 -10 -10h-163q-6 0 -6 -6v-137q0 -6 6 -6h141q10 0 10 -10v-52q0 -10 -10 -10h-141q-6 0 -6 -6v-142 +q0 -6 6 -6h163q10 0 10 -10v-52q0 -10 -10 -10zM196 64q50 0 65 44q7 21 7 152t-7 151q-15 45 -65 45t-65 -45q-7 -25 -7 -151t7 -152q15 -44 65 -44z" /> + <glyph glyph-name="racute.sc" horiz-adv-x="395" +d="M196 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10 +zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="rcaron.sc" horiz-adv-x="395" +d="M201 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5 +t40.5 -114.5q0 -100 -72 -136l83 -220q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="rcommaaccent.sc" horiz-adv-x="395" +d="M173 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM352 0h-60q-10 0 -13 9l-73 203h-16h-48q-6 0 -6 -6v-196q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h121q77 0 117.5 -38.5t40.5 -114.5q0 -100 -72 -136l83 -220 +q3 -10 -7 -10zM183 283q47 0 67.5 19.5t20.5 63.5t-20.5 63t-67.5 19h-41q-6 0 -6 -6v-153q0 -6 6 -6h41z" /> + <glyph glyph-name="sacute.sc" horiz-adv-x="363" +d="M190 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38 +q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="scircumflex.sc" horiz-adv-x="363" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5zM294 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="scaron.sc" horiz-adv-x="363" +d="M200 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12 +q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="scedilla.sc" horiz-adv-x="363" +d="M105 -152q-10 0 -7 10l54 136q-107 15 -116 133q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-9 -2 -11 9q-9 68 -69 68 +q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -137 -115 -151l-45 -135q-4 -10 -16 -10h-48z" /> + <glyph glyph-name="scommaaccent.sc" horiz-adv-x="363" +d="M154 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38 +q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="tcaron.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10zM191 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123 +q-6 -10 -17 -10z" /> + <glyph glyph-name="tcommaaccent.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v431q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-431q0 -10 -10 -10zM144 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8z" /> + <glyph glyph-name="tbar.sc" horiz-adv-x="345" +d="M201 0h-57q-10 0 -10 10v277q0 6 -6 6h-43q-10 0 -10 10v42q0 10 10 10h43q6 0 6 6v80q0 6 -6 6h-101q-10 0 -10 10v52q0 10 10 10h291q10 0 10 -10v-52q0 -10 -10 -10h-101q-6 0 -6 -6v-80q0 -6 6 -6h43q10 0 10 -10v-42q0 -10 -10 -10h-43q-6 0 -6 -6v-277 +q0 -10 -10 -10z" /> + <glyph glyph-name="thorn.sc" horiz-adv-x="379" +d="M142 429h49q158 0 158 -157q0 -158 -158 -158h-49q-6 0 -6 -6v-98q0 -10 -10 -10h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-74q0 -6 6 -6zM184 185q47 0 67.5 19.5t20.5 67.5q0 47 -20.5 66.5t-67.5 19.5h-42q-6 0 -6 -6v-161q0 -6 6 -6h42z" /> + <glyph glyph-name="ugrave.sc" horiz-adv-x="409" +d="M229 597h-40q-9 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uacute.sc" horiz-adv-x="409" +d="M219 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="ucircumflex.sc" horiz-adv-x="409" +d="M205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40zM316 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36 +q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="utilde.sc" horiz-adv-x="409" +d="M246 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57 +q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="udieresis.sc" horiz-adv-x="409" +d="M302 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM157 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364 +q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="umacron.sc" horiz-adv-x="409" +d="M301 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="ubreve.sc" horiz-adv-x="409" +d="M204 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57 +q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uring.sc" horiz-adv-x="409" +d="M204 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM204 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57 +q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uhungarumlaut.sc" horiz-adv-x="409" +d="M277 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM154 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10zM205 -9q-68 0 -107.5 40t-39.5 113v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81 +q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -73 -39 -113t-107 -40z" /> + <glyph glyph-name="uogonek.sc" horiz-adv-x="409" +d="M206 -181q-34 0 -55 19t-21 54q0 42 45 103q-54 8 -85.5 46.5t-31.5 102.5v365q0 10 10 10h57q10 0 10 -10v-364q0 -81 70 -81q69 0 69 81v364q0 10 10 10h57q10 0 10 -10v-365q0 -62 -29 -100t-81 -49q-47 -59 -47 -91q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34 +q5 -8 -4 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="wacute.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM283 597h-40q-10 0 -5 10l69 123 +q6 10 16 10h59q11 0 5 -10l-87 -123q-8 -10 -17 -10z" /> + <glyph glyph-name="wcircumflex.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM375 597h-42q-10 0 -17 10l-52 71 +h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="wdieresis.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM361 628h-51q-10 0 -10 10v72 +q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM216 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="wgrave.sc" horiz-adv-x="527" +d="M397 0h-49q-8 0 -10 10l-72 355h-2l-74 -355q-2 -10 -10 -10h-50q-8 0 -10 10l-97 499q-2 10 8 10h56q10 0 11 -10l60 -359h1l73 359q1 10 11 10h42q10 0 11 -10l73 -359h2l59 359q1 10 11 10h56q10 0 8 -10l-98 -499q-2 -10 -10 -10zM285 597h-40q-9 0 -17 10l-87 123 +q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="yacute.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM190 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="ycircumflex.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM284 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123 +q7 -10 -5 -10z" /> + <glyph glyph-name="ydieresis.sc" horiz-adv-x="343" +d="M200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10zM270 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM125 628h-51q-10 0 -10 10v72q0 10 10 10h51 +q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="ygrave.sc" horiz-adv-x="343" +d="M196 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10zM200 0h-57q-10 0 -10 10v205l-119 294q-3 10 7 10h60q8 0 11 -10l79 -208h3l77 208q3 10 12 10h58q10 0 7 -10l-118 -294v-205q0 -10 -10 -10z" /> + <glyph glyph-name="zacute.sc" horiz-adv-x="337" +d="M180 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron.sc" horiz-adv-x="337" +d="M188 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180 +q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent.sc" horiz-adv-x="337" +d="M202 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM295 0h-252q-10 0 -10 10v52q0 7 3 13l186 370v2h-170q-10 0 -10 10v52q0 10 10 10h241q10 0 10 -10v-51q0 -6 -3 -14l-185 -370v-2h180q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="ij.sc" horiz-adv-x="514" +d="M126 0h-57q-10 0 -10 10v499q0 10 10 10h57q10 0 10 -10v-499q0 -10 -10 -10zM316 -9q-62 0 -96 36q-6 7 1 14l39 37q7 7 15 0q22 -14 44 -14q61 0 61 69v376q0 10 10 10h57q10 0 10 -10v-373q0 -72 -37 -108.5t-104 -36.5z" /> + <glyph glyph-name="germandbls.sc" horiz-adv-x="726" +d="M186 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5 +t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5zM549 -9q-139 0 -150 136q0 10 8 11l55 9q9 2 11 -8q9 -78 74 -78q35 0 52 19t17 63q0 35 -14.5 53.5t-51.5 31.5l-37 12q-59 19 -82.5 51t-23.5 94q0 67 37 105t101 38q130 0 143 -127 +q2 -11 -7 -12l-53 -8q-11 -2 -11 9q-8 68 -69 68q-65 0 -65 -72q0 -31 13 -48.5t49 -29.5l37 -12q61 -19 85.5 -52.5t24.5 -99.5q0 -74 -36 -113.5t-107 -39.5z" /> + <glyph glyph-name="eng.sc" horiz-adv-x="424" +d="M237 -180h-9q-10 0 -10 10v52q0 10 10 10h9q29 2 40 13.5t11 40.5v30l-156 411h-3v-377q0 -10 -10 -10h-50q-10 0 -10 10v499q0 10 10 10h69q12 0 16 -10l137 -373h4v373q0 10 10 10h50q10 0 10 -10v-552q0 -74 -29.5 -105.5t-98.5 -31.5z" /> + <glyph glyph-name="grave.sc" horiz-adv-x="390" +d="M264 597h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="acute.sc" horiz-adv-x="390" +d="M166 597h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="circumflex.sc" horiz-adv-x="390" +d="M307 597h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="caron.sc" horiz-adv-x="390" +d="M213 596h-36q-11 0 -17 10l-82 123q-7 10 5 10h42q10 0 17 -10l52 -71h2l52 71q7 10 17 10h42q12 0 5 -10l-82 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="tilde.sc" horiz-adv-x="390" +d="M236 621q-23 0 -49 19q-22 16 -35 16q-20 0 -44 -27q-2 -3 -5 -3.5t-5 1.5t-2 5v47q0 8 9 18q21 23 48 23q22 0 48 -19q22 -16 36 -16q20 0 44 27q2 3 4.5 3.5t4.5 -1.5t2 -5v-47q0 -9 -8 -18q-21 -23 -48 -23z" /> + <glyph glyph-name="dieresis.sc" horiz-adv-x="390" +d="M293 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM148 628h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="macron.sc" horiz-adv-x="389" +d="M293 643h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="breve.sc" horiz-adv-x="390" +d="M195 603q-51 0 -80 30.5t-34 80.5q-2 10 9 10h32q8 0 11 -10q14 -53 62 -53t62 53q3 10 10 10h33q11 0 9 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="ring.sc" horiz-adv-x="390" +d="M195 586q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM195 623q21 0 34 14t13 35q0 22 -13 36t-34 14t-34.5 -14t-13.5 -36q0 -21 13.5 -35t34.5 -14z" /> + <glyph glyph-name="hungarumlaut.sc" horiz-adv-x="390" +d="M226 597h-34q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -18 -10zM103 597h-35q-11 0 -6 10l61 123q4 10 16 10h49q11 0 5 -10l-73 -123q-6 -10 -17 -10z" /> + <glyph glyph-name="dotaccent.sc" horiz-adv-x="390" +d="M226 628h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="exclamdown.sc" horiz-adv-x="206" +d="M120 344h-34q-10 0 -10 -10l-15 -329q0 -10 10 -10h64q10 0 10 10l-15 329q0 10 -10 10zM136 514h-66q-10 0 -10 -10v-84q0 -10 10 -10h66q10 0 10 10v84q0 10 -10 10z" /> + <glyph glyph-name="questiondown.sc" horiz-adv-x="313" +d="M129 358h59q10 0 10 -10v-34q0 -33 -16 -55l-47 -65q-28 -40 -28 -74q0 -16 4 -30q12 -32 50 -32q37 0 49 32q4 10 5 41q0 11 10 9l56 -7q9 -1 9 -10q0 -37 -8 -61q-13 -37 -45 -56.5t-77 -19.5q-95 0 -122 78q-8 21 -8 52q0 54 30 94l46 64q13 18 13 45v29q0 10 10 10z +M126 514h65q10 0 10 -10v-84q0 -10 -10 -10h-65q-10 0 -10 10v84q0 10 10 10z" /> + <glyph glyph-name="Euro.sc" horiz-adv-x="362" +d="M200 -9q-95 0 -122 88q-9 27 -9 100q0 6 -6 6h-33q-10 0 -10 10v35q0 10 10 10h33q6 0 6 6v32q0 6 -6 6h-33q-10 0 -10 10v35q0 10 10 10h33q6 0 6 6q0 69 9 96q27 87 122 87q57 0 89.5 -28.5t39.5 -77.5q2 -9 -7 -11l-52 -11q-10 -2 -12 8q-9 49 -56 49q-41 0 -52 -39 +q-5 -17 -5 -73q0 -6 6 -6h111q10 0 10 -10l-10 -35q-3 -10 -10 -10h-101q-6 0 -6 -6v-32q0 -6 6 -6h101q10 0 10 -10l-10 -35q-3 -10 -10 -10h-91q-6 0 -6 -6q0 -61 5 -78q11 -39 52 -39q47 0 56 49q2 10 12 8l52 -10q9 -2 7 -11q-7 -49 -39.5 -78t-89.5 -29z" /> + <glyph glyph-name="cent.sc" horiz-adv-x="362" +d="M194 -76h-13q-10 0 -10 10v58q-86 6 -109 84q-9 29 -9 107q0 79 9 107q24 78 109 84v60q0 10 10 10h13q10 0 10 -10v-60q46 -4 75.5 -30t36.5 -66q2 -9 -7 -12l-53 -10q-8 -3 -12 7q-9 32 -40 38v-236q30 5 40 38q3 8 12 7l53 -10q9 -3 7 -12q-7 -40 -36.5 -66t-75.5 -30 +v-58q0 -10 -10 -10zM136 98q8 -27 35 -33v235q-28 -6 -35 -32q-6 -18 -6 -85t6 -85z" /> + <glyph glyph-name="sterling.sc" horiz-adv-x="362" +d="M317 0h-257q-10 0 -10 10v52q0 7 4 11q26 27 26 69v67q0 6 -6 6h-26q-10 0 -10 10v39q0 10 10 10h26q6 0 6 6v118q0 60 32 95t92 35q55 0 85.5 -30t35.5 -80q2 -10 -9 -11l-53 -10q-9 -2 -11 8q-4 51 -48 51q-47 0 -47 -61v-115q0 -6 6 -6h84q10 0 10 -10v-39 +q0 -10 -10 -10h-84q-6 0 -6 -6v-67q0 -47 -24 -68v-2h184q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="florin.sc" horiz-adv-x="362" +d="M315 273h-80l-48 -262q-14 -81 -47.5 -114.5t-103.5 -33.5h-15q-10 0 -10 10v53q0 10 10 10h6q40 0 57.5 14.5t25.5 58.5l47 264h-58q-10 0 -10 10v42q0 10 10 10h69l7 36q15 81 47.5 114.5t102.5 33.5h16q10 0 10 -10v-53q0 -10 -10 -10h-7q-38 0 -55.5 -15t-25.5 -58 +l-7 -38h69q10 0 10 -10v-42q0 -10 -10 -10z" /> + <glyph glyph-name="yen.sc" horiz-adv-x="362" +d="M209 0h-57q-10 0 -10 10v89q0 6 -6 6h-78q-10 0 -10 10v35q0 10 10 10h78q6 0 6 6v30q0 6 -6 6h-78q-10 0 -10 10v35q0 10 10 10h70v2l-98 250q-3 10 7 10h60q9 0 12 -10l73 -197h2l69 197q3 10 12 10h59q11 0 8 -10l-99 -250v-2h70q10 0 10 -10v-35q0 -10 -10 -10h-78 +q-6 0 -6 -6v-30q0 -6 6 -6h78q10 0 10 -10v-35q0 -10 -10 -10h-78q-6 0 -6 -6v-89q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand.sc" horiz-adv-x="843" +d="M222 -10h-38q-11 0 -8 10l213 519q3 10 12 10h38q11 0 8 -10l-212 -519q-4 -10 -13 -10zM154 255q-65 0 -81 52q-7 20 -7 83q0 64 7 82q17 53 81 53t82 -53q7 -23 7 -82q0 -58 -7 -83q-18 -52 -82 -52zM154 305q21 0 29 19q3 10 3 66q0 54 -3 65q-8 19 -29 19 +q-22 0 -28 -19q-3 -11 -3 -65q0 -56 3 -66q6 -19 28 -19zM689 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t82 -53q6 -19 6 -82t-6 -82q-18 -53 -82 -53zM469 -6q-64 0 -81 53q-7 18 -7 82t7 82q17 53 81 53t81 -53q7 -18 7 -82t-7 -82q-17 -53 -81 -53zM689 44 +q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-3 -10 -3 -65t3 -65q6 -20 28 -20zM469 44q22 0 28 20q4 9 4 65t-4 65q-6 20 -28 20t-28 -20q-4 -9 -4 -65t4 -65q6 -20 28 -20z" /> + <glyph glyph-name="parenleft.sc" horiz-adv-x="245" +d="M192 -84h-36q-9 0 -12 10q-74 162 -74 334q0 171 74 333q3 10 12 10h36q10 0 7 -10q-53 -167 -53 -333q0 -167 53 -334q3 -10 -7 -10z" /> + <glyph glyph-name="parenright.sc" horiz-adv-x="245" +d="M89 -84h-36q-10 0 -7 10q53 167 53 334q0 166 -53 333q-3 10 7 10h36q9 0 12 -10q74 -162 74 -333q0 -172 -74 -334q-3 -10 -12 -10z" /> + <glyph glyph-name="bracketleft.sc" horiz-adv-x="244" +d="M203 -84h-116q-10 0 -10 10v667q0 10 10 10h116q10 0 10 -10v-45q0 -10 -10 -10h-48q-6 0 -6 -6v-545q0 -6 6 -6h48q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="bracketright.sc" horiz-adv-x="244" +d="M157 -84h-115q-10 0 -10 10v45q0 10 10 10h48q6 0 6 6v545q0 6 -6 6h-48q-10 0 -10 10v45q0 10 10 10h115q10 0 10 -10v-667q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft.sc" horiz-adv-x="284" +d="M244 -84h-22q-105 0 -105 112v129q0 37 -12 54t-42 19q-10 0 -10 10v45q0 8 10 10q30 1 42 18t12 54v125q0 111 105 111h22q10 0 10 -10v-45q0 -10 -10 -10h-10q-44 0 -44 -51v-101q0 -58 -10 -83.5t-41 -38.5v-3q31 -14 41 -39t10 -83v-107q0 -51 44 -51h10q10 0 10 -10 +v-45q0 -10 -10 -10z" /> + <glyph glyph-name="braceright.sc" horiz-adv-x="284" +d="M62 -84h-22q-10 0 -10 10v45q0 10 10 10h10q45 0 45 51v107q0 58 10 83t41 39v3q-31 13 -41 38.5t-10 83.5v101q0 51 -45 51h-10q-10 0 -10 10v45q0 10 10 10h22q105 0 105 -111v-125q0 -37 12 -54t42 -18q10 -2 10 -10v-45q0 -10 -10 -10q-30 -2 -42 -19t-12 -54v-129 +q0 -112 -105 -112z" /> + <glyph glyph-name="zero.onum" +d="M193 -9q-104 0 -132 88q-10 31 -10 161q0 129 10 160q28 88 132 88t132 -88q10 -31 10 -160q0 -130 -10 -161q-28 -88 -132 -88zM193 64q47 0 59 39q6 23 6 137q0 116 -6 137q-14 39 -59 39q-47 0 -59 -39q-6 -17 -6 -137t6 -137q12 -39 59 -39z" /> + <glyph glyph-name="one.onum" +d="M248 0h-57q-10 0 -10 10v386h-2l-90 -39q-11 -4 -11 7v56q0 10 8 14l93 42q6 3 15 3h54q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="two.onum" +d="M322 0h-261q-10 0 -10 10v51q0 10 7 17l153 151q25 24 34.5 46t9.5 59q0 28 -5 42q-14 40 -59 40t-59 -40q-5 -14 -5 -59q0 -11 -12 -9l-54 5q-10 1 -10 12q0 45 9 74q30 89 132 89t132 -89q8 -25 8 -65q0 -53 -14 -85.5t-47 -64.5l-113 -111v-1h164q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.onum" +d="M187 -189q-102 0 -131 91q-9 28 -9 79q0 11 10 12l54 6q11 2 11 -10q0 -49 6 -65q12 -40 59 -40q45 0 59 40q5 18 5 100q0 84 -6 100q-13 39 -61 39h-25q-10 0 -10 10v52q0 7 4 15l92 166v1h-185q-10 0 -10 10v52q0 10 10 10h258q10 0 10 -10v-51q0 -6 -3 -14l-96 -169 +v-2q68 -7 90 -75q9 -32 9 -134q0 -95 -9 -124q-30 -89 -132 -89z" /> + <glyph glyph-name="four.onum" +d="M291 -180h-58q-10 0 -10 10v164q0 6 -6 6h-183q-10 0 -10 10v51q0 5 2 11l133 411q3 8 12 8h58q10 0 7 -11l-129 -406v-2h110q6 0 6 6v143q0 10 10 10h58q10 0 10 -10v-143q0 -6 5 -6h47q10 0 10 -10v-52q0 -10 -10 -10h-46q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onum" +d="M195 -189q-102 0 -131 91q-9 29 -9 71q0 11 10 12l54 5q12 2 12 -9q0 -43 5 -57q12 -40 59 -40q45 0 59 40q5 18 5 104q0 85 -5 103q-14 41 -59 41q-39 0 -58 -34q-5 -9 -15 -9h-48q-10 0 -10 10v330q0 10 10 10h252q10 0 10 -10v-52q0 -10 -10 -10h-185q-6 0 -6 -6v-188 +h1q26 31 77 31q88 0 114 -79q9 -32 9 -137q0 -99 -9 -128q-30 -89 -132 -89z" /> + <glyph glyph-name="six.onum" +d="M193 -9q-103 0 -133 91q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91zM193 64q45 0 59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91q14 -40 59 -40z" /> + <glyph glyph-name="seven.onum" +d="M159 -180h-58q-11 0 -6 12l169 573v2h-134q-6 0 -6 -6v-74q0 -10 -10 -10h-52q-10 0 -10 10v142q0 10 10 10h270q10 0 10 -10v-51q0 -6 -2 -14l-168 -574q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onum" +d="M193 -9q-102 0 -132 91q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM193 64q45 0 59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88q14 -40 59 -40z" /> + <glyph glyph-name="nine.onum" +d="M193 488q103 0 133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-102 -261q-3 -9 -12 -9h-60q-11 0 -6 11l100 258l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 28 -9 116t8 113q30 91 133 91zM193 415q-45 0 -59 -40q-5 -14 -5 -91q0 -76 5 -90q14 -41 59 -41t59 41 +q5 14 5 90q0 77 -5 91q-14 40 -59 40z" /> + <glyph glyph-name="zero.scprop" horiz-adv-x="362" +d="M181 -9q-47 0 -79 22t-45 62q-9 26 -9 185t9 185q27 83 124 83t124 -83q9 -26 9 -185t-9 -185q-13 -40 -45 -62t-79 -22zM181 64q39 0 51 35q5 17 5 161q0 143 -5 161q-12 35 -51 35t-51 -35q-5 -18 -5 -161q0 -144 5 -161q12 -35 51 -35z" /> + <glyph glyph-name="one.scprop" horiz-adv-x="279" +d="M191 0h-58q-10 0 -10 10v419h-1l-78 -46q-11 -5 -11 7v60q0 8 7 14l79 50q8 5 16 5h56q10 0 10 -10v-499q0 -10 -10 -10z" /> + <glyph glyph-name="two.scprop" horiz-adv-x="356" +d="M301 0h-245q-9 0 -9 9v51q0 8 3 12l155 219q17 24 22.5 42t5.5 51q0 27 -4 38q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -42q0 -11 -12 -9l-54 5q-9 2 -9 12q0 38 6 57q27 83 125 83t124 -83q9 -25 9 -62q0 -45 -10.5 -73.5t-34.5 -62.5l-126 -174v-1h161q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.scprop" horiz-adv-x="358" +d="M177 -9q-98 0 -125 83q-6 19 -6 49q0 11 9 12l54 5q12 2 12 -9q0 -22 4 -34q12 -33 52 -33q39 0 51 33q4 12 4 53q0 38 -3 49q-11 33 -56 33h-13q-10 0 -10 10v51q0 10 10 10h13q45 0 56 32q3 11 3 42q0 34 -4 45q-12 34 -51 34q-40 0 -52 -34q-4 -11 -4 -33 +q0 -12 -12 -10l-54 6q-9 1 -9 12q0 29 6 48q27 83 125 83t124 -83q9 -25 9 -68q0 -36 -6 -54q-11 -33 -47 -52v-2q36 -19 47 -53q6 -18 6 -66q0 -51 -9 -76q-26 -83 -124 -83z" /> + <glyph glyph-name="four.scprop" horiz-adv-x="355" +d="M274 0h-56q-10 0 -10 10v60q0 6 -6 6h-165q-10 0 -10 10v52q0 5 2 11l127 362q3 8 12 8h58q11 0 8 -11l-126 -358v-2h94q6 0 6 6v134q0 10 10 10h56q10 0 10 -10v-134q0 -6 5 -6h37q10 0 10 -10v-52q0 -10 -10 -10h-36q-6 0 -6 -6v-60q0 -10 -10 -10z" /> + <glyph glyph-name="five.scprop" horiz-adv-x="361" +d="M182 -9q-99 0 -125 83q-6 16 -6 39q0 11 10 12l53 5q11 1 13 -9q0 -12 4 -24q11 -33 51 -33q39 0 51 33q4 16 4 68q0 55 -5 68q-12 33 -50 33q-33 0 -49 -22q-5 -8 -16 -8h-47q-10 0 -10 10v263q0 10 10 10h235q10 0 10 -10v-52q0 -10 -10 -10h-169q-6 0 -6 -6v-124h1 +q24 21 70 21q82 0 106 -74q8 -26 8 -99q0 -67 -9 -92q-26 -82 -124 -82z" /> + <glyph glyph-name="six.scprop" horiz-adv-x="358" +d="M179 -9q-97 0 -125 83q-8 27 -8 76q0 86 29 148l99 212q4 9 15 9h58q11 0 6 -10l-98 -206l2 -1q14 7 39 7q83 0 108 -76q8 -27 8 -83q0 -49 -8 -76q-28 -83 -125 -83zM179 64q39 0 51 33q5 15 5 53t-5 53q-12 33 -51 33t-51 -33q-5 -15 -5 -53t5 -53q12 -33 51 -33z" /> + <glyph glyph-name="seven.scprop" horiz-adv-x="347" +d="M140 0h-56q-12 0 -7 12l159 434v1h-115q-6 0 -6 -6v-46q0 -10 -10 -10h-52q-10 0 -10 10v114q0 10 10 10h250q10 0 10 -10v-54q0 -6 -3 -12l-156 -433q-3 -10 -14 -10z" /> + <glyph glyph-name="eight.scprop" horiz-adv-x="362" +d="M181 -9q-97 0 -125 83q-8 27 -8 76q0 42 7 67q14 39 42 54v2q-29 15 -42 54q-7 25 -7 55q0 36 8 63q28 83 125 83t125 -83q8 -27 8 -63q0 -30 -7 -55q-13 -39 -42 -54v-2q28 -15 42 -54q7 -25 7 -67q0 -49 -8 -76q-28 -83 -125 -83zM181 308q39 0 51 34q5 13 5 40t-5 40 +q-12 34 -51 34t-51 -34q-5 -13 -5 -40t5 -40q12 -34 51 -34zM181 64q39 0 51 33q5 15 5 53q0 39 -5 52q-12 34 -51 34t-51 -34q-5 -13 -5 -52q0 -38 5 -53q12 -33 51 -33z" /> + <glyph glyph-name="nine.scprop" horiz-adv-x="358" +d="M169 0h-58q-11 0 -6 11l98 205l-2 1q-12 -6 -39 -6q-83 0 -108 75q-8 29 -8 83q0 49 8 76q28 83 125 83t125 -83q8 -27 8 -76q0 -85 -29 -148l-99 -212q-4 -9 -15 -9zM179 283q39 0 51 34q5 13 5 52q0 40 -5 53q-12 34 -51 34t-51 -34q-5 -13 -5 -53q0 -39 5 -52 +q12 -34 51 -34z" /> + <glyph glyph-name="zero.prop" +d="M61 80q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89t-132 89zM134 104q14 -40 59 -40q46 0 58 40q7 20 7 236t-7 236q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236t6 -236z" /> + <glyph glyph-name="one.prop" horiz-adv-x="318" +d="M142 10v577h-1l-86 -65q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v62q0 8 9 16l87 67q9 6 17 6h53q10 0 10 -10v-660q0 -10 -10 -10h-58q-10 0 -10 10z" /> + <glyph glyph-name="two.prop" horiz-adv-x="375" +d="M46 10v51q0 9 5 18l170 320q29 54 29 122q0 41 -5 55q-14 40 -60 40q-45 0 -59 -40q-5 -14 -5 -70q0 -12 -12 -10l-54 6q-9 2 -9 12q0 60 8 85q30 90 132 90t132 -89q9 -28 9 -79q0 -84 -41 -161l-156 -287v-1h187q10 0 10 -10v-52q0 -10 -10 -10h-261q-10 0 -10 10z" /> + <glyph glyph-name="three.prop" horiz-adv-x="377" +d="M55 81q-9 29 -9 80q0 11 10 12l54 5q12 2 12 -9q0 -51 5 -65q14 -40 59 -40q46 0 59 40q5 14 5 87q0 75 -5 88q-13 39 -63 39h-16q-10 0 -10 10v51q0 10 10 10h16q50 0 63 38q5 14 5 77q0 58 -5 72q-13 40 -59 40q-45 0 -59 -40q-5 -14 -5 -65q0 -11 -12 -9l-54 5 +q-10 1 -10 12q0 51 9 80q30 90 132 90t132 -89q8 -25 8 -96q0 -64 -7 -88q-12 -37 -51 -59v-2q38 -22 51 -60q7 -22 7 -104q0 -86 -8 -111q-30 -89 -132 -89t-132 90z" /> + <glyph glyph-name="four.prop" horiz-adv-x="388" +d="M40 112q-10 0 -10 10v51q0 6 2 12l140 487q3 8 12 8h58q10 0 7 -11l-139 -483v-2h110q6 0 6 6v190q0 10 10 10h57q10 0 10 -10v-190q0 -6 5 -6h46q10 0 10 -10v-52q0 -10 -10 -10h-45q-6 0 -6 -6v-96q0 -10 -10 -10h-57q-10 0 -10 10v96q0 6 -6 6h-180z" /> + <glyph glyph-name="five.prop" horiz-adv-x="383" +d="M63 81q-8 25 -8 72q0 11 9 12l54 5q12 2 12 -9q0 -43 5 -57q14 -40 59 -40q46 0 58 39q6 16 6 113q0 96 -6 112q-12 40 -58 40q-38 0 -57 -34q-5 -9 -15 -9h-49q-10 0 -10 10v335q0 10 10 10h253q10 0 10 -10v-52q0 -10 -10 -10h-186q-6 0 -6 -6v-193h1q28 31 77 31 +q87 0 113 -78q10 -30 10 -146q0 -104 -10 -136q-28 -89 -130 -89t-132 90z" /> + <glyph glyph-name="six.prop" horiz-adv-x="382" +d="M58 82q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91t-133 91zM132 104q14 -40 59 -40t59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91z" /> + <glyph glyph-name="seven.prop" horiz-adv-x="370" +d="M84 12l176 594v2h-134q-6 0 -6 -6v-75q0 -10 -10 -10h-52q-10 0 -10 10v143q0 10 10 10h270q10 0 10 -10v-53q0 -5 -2 -13l-174 -594q-3 -10 -13 -10h-59q-9 0 -6 12z" /> + <glyph glyph-name="eight.prop" +d="M61 82q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91q-102 0 -132 91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM134 104q14 -40 59 -40t59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88z" /> + <glyph glyph-name="nine.prop" horiz-adv-x="382" +d="M113 11l107 279l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 29 -9 116q0 88 8 113q30 91 133 91t133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-109 -282q-3 -9 -12 -9h-60q-11 0 -6 11zM191 354q45 0 59 41q5 14 5 90q0 77 -5 91q-14 40 -59 40t-59 -40q-5 -14 -5 -91 +q0 -76 5 -90q14 -41 59 -41z" /> + <glyph glyph-name="Euro.prop" horiz-adv-x="407" +d="M228 -9q-101 0 -131 93q-11 32 -11 161q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6v54q0 6 -6 6h-40q-10 0 -10 10v39q0 10 10 10h40q6 0 6 6q0 123 11 155q30 93 131 93q62 0 99.5 -37.5t44.5 -98.5q2 -11 -7 -12l-54 -10q-10 -3 -12 7q-11 78 -69 78 +q-45 0 -60 -42q-7 -22 -7 -133q0 -6 6 -6h142q10 0 10 -10l-10 -39q-2 -10 -10 -10h-132q-6 0 -6 -6v-54q0 -6 6 -6h127q10 0 10 -10l-10 -39q-3 -10 -10 -10h-117q-6 0 -6 -6q0 -115 7 -139q15 -42 60 -42q58 0 69 78q2 10 12 7l54 -10q9 -1 7 -12q-7 -61 -44.5 -98.5 +t-99.5 -37.5z" /> + <glyph glyph-name="cent.prop" horiz-adv-x="362" +d="M198 -100h-13q-10 0 -10 10v82q-91 6 -115 88q-12 37 -12 160q0 122 12 159q25 82 115 88v83q0 10 10 10h13q10 0 10 -10v-83q105 -8 121 -114q2 -9 -6 -11l-55 -11q-11 -2 -12 7q-10 49 -48 56v-349q39 8 48 56q2 10 12 7l55 -11q8 -2 6 -11q-7 -51 -38.5 -80t-82.5 -34 +v-82q0 -10 -10 -10zM132 103q12 -34 43 -38v349q-32 -6 -43 -37q-7 -25 -7 -137q0 -113 7 -137z" /> + <glyph glyph-name="dollar.prop" horiz-adv-x="388" +d="M43 162q0 10 8 11l52 9q11 1 11 -9q1 -54 16 -78.5t47 -29.5v254l-19 8q-62 24 -85 64t-23 120q0 168 127 177v41q0 10 10 10h15q10 0 10 -10v-41q61 -6 90 -45t34 -112q1 -9 -8 -11l-51 -8q-9 -2 -11 8q-3 45 -15 67t-39 27v-223l19 -7q62 -24 86 -65.5t24 -127.5 +q0 -100 -31 -147t-98 -52v-59q0 -10 -10 -10h-15q-10 0 -10 10v59q-67 4 -99 46t-35 124zM177 405v209q-28 -4 -40.5 -27.5t-12.5 -71.5t11 -71.5t42 -38.5zM212 65q29 4 42 30t13 87q0 54 -12 81t-43 42v-240z" /> + <glyph glyph-name="sterling.prop" horiz-adv-x="405" +d="M347 0h-281q-10 0 -10 10v52q0 5 4 11q30 34 30 93v119q0 6 -6 6h-29q-10 0 -10 10v38q0 10 10 10h29q6 0 6 6v185q0 70 34 109.5t98 39.5q120 0 132 -139q0 -11 -8 -12l-54 -9q-10 -1 -12 8q-2 42 -15.5 60.5t-42.5 18.5q-54 0 -54 -74v-187q0 -6 6 -6h94q10 0 10 -10 +v-38q0 -10 -10 -10h-94q-6 0 -6 -6v-119q0 -64 -29 -92v-2h208q10 0 10 -10v-52q0 -10 -10 -10z" /> + <glyph glyph-name="florin.prop" horiz-adv-x="410" +d="M334 337h-81l-49 -364q-11 -80 -45 -116.5t-105 -36.5h-17q-10 0 -10 10v53q0 10 10 10h13q37 0 54 16t23 59l49 369h-68q-10 0 -10 10v44q0 10 10 10h77l17 126q11 80 45 116.5t105 36.5h18q10 0 10 -10v-53q0 -10 -10 -10h-13q-37 0 -54 -16t-23 -59l-18 -131h72 +q10 0 10 -10v-44q0 -10 -10 -10z" /> + <glyph glyph-name="yen.prop" horiz-adv-x="381" +d="M219 0h-57q-10 0 -10 10v129q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h88q6 0 6 6v51q0 6 -6 6h-88q-10 0 -10 10v39q0 10 10 10h80v3l-110 341q-3 10 7 10h61q9 0 12 -10l83 -283h2l81 283q3 10 12 10h60q10 0 7 -10l-111 -341v-3h80q10 0 10 -10v-39q0 -10 -10 -10 +h-87q-6 0 -6 -6v-51q0 -6 6 -6h87q10 0 10 -10v-39q0 -10 -10 -10h-87q-6 0 -6 -6v-129q0 -10 -10 -10z" /> + <glyph glyph-name="zero.onumprop" +d="M193 -9q-104 0 -132 88q-10 31 -10 161q0 129 10 160q28 88 132 88t132 -88q10 -31 10 -160q0 -130 -10 -161q-28 -88 -132 -88zM193 64q47 0 59 39q6 23 6 137q0 116 -6 137q-14 39 -59 39q-47 0 -59 -39q-6 -17 -6 -137t6 -137q12 -39 59 -39z" /> + <glyph glyph-name="one.onumprop" horiz-adv-x="294" +d="M196 0h-57q-10 0 -10 10v386h-2l-90 -39q-11 -4 -11 7v56q0 10 8 14l93 42q6 3 15 3h54q10 0 10 -10v-459q0 -10 -10 -10z" /> + <glyph glyph-name="two.onumprop" horiz-adv-x="380" +d="M319 0h-261q-10 0 -10 10v51q0 10 7 17l153 151q25 24 34.5 46t9.5 59q0 28 -5 42q-14 40 -59 40t-59 -40q-5 -14 -5 -59q0 -11 -12 -9l-54 5q-10 1 -10 12q0 45 9 74q30 89 132 89t132 -89q8 -25 8 -65q0 -53 -14 -85.5t-47 -64.5l-113 -111v-1h164q10 0 10 -10v-52 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.onumprop" horiz-adv-x="379" +d="M187 -189q-102 0 -131 91q-9 28 -9 79q0 11 10 12l54 6q11 2 11 -10q0 -49 6 -65q12 -40 59 -40q45 0 59 40q5 18 5 100q0 84 -6 100q-13 39 -61 39h-25q-10 0 -10 10v52q0 7 4 15l92 166v1h-185q-10 0 -10 10v52q0 10 10 10h258q10 0 10 -10v-51q0 -6 -3 -14l-96 -169 +v-2q68 -7 90 -75q9 -32 9 -134q0 -95 -9 -124q-30 -89 -132 -89z" /> + <glyph glyph-name="four.onumprop" horiz-adv-x="389" +d="M293 -180h-58q-10 0 -10 10v164q0 6 -6 6h-183q-10 0 -10 10v51q0 5 2 11l133 411q3 8 12 8h58q10 0 7 -11l-129 -406v-2h110q6 0 6 6v143q0 10 10 10h58q10 0 10 -10v-143q0 -6 5 -6h47q10 0 10 -10v-52q0 -10 -10 -10h-46q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onumprop" horiz-adv-x="383" +d="M195 -189q-102 0 -131 91q-9 29 -9 71q0 11 10 12l54 5q12 2 12 -9q0 -43 5 -57q12 -40 59 -40q45 0 59 40q5 18 5 104q0 85 -5 103q-14 41 -59 41q-39 0 -58 -34q-5 -9 -15 -9h-48q-10 0 -10 10v330q0 10 10 10h252q10 0 10 -10v-52q0 -10 -10 -10h-185q-6 0 -6 -6v-188 +h1q26 31 77 31q88 0 114 -79q9 -32 9 -137q0 -99 -9 -128q-30 -89 -132 -89z" /> + <glyph glyph-name="six.onumprop" horiz-adv-x="382" +d="M191 -9q-103 0 -133 91q-8 25 -8 113q0 72 6.5 108t25.5 86l109 282q3 9 12 9h60q11 0 6 -11l-107 -279l1 -2q12 10 43 10q89 0 117 -87q9 -29 9 -116q0 -88 -8 -113q-30 -91 -133 -91zM191 64q45 0 59 40q5 14 5 91q0 76 -5 90q-14 41 -59 41t-59 -41q-5 -14 -5 -90 +q0 -77 5 -91q14 -40 59 -40z" /> + <glyph glyph-name="seven.onumprop" horiz-adv-x="373" +d="M153 -180h-58q-11 0 -6 12l169 573v2h-134q-6 0 -6 -6v-74q0 -10 -10 -10h-52q-10 0 -10 10v142q0 10 10 10h270q10 0 10 -10v-51q0 -6 -2 -14l-168 -574q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onumprop" +d="M193 -9q-102 0 -132 91q-9 29 -9 110q0 75 9 101q13 41 47 62v2q-33 21 -47 62q-9 26 -9 85q0 66 9 94q30 91 132 91q103 0 133 -91q8 -25 8 -94q0 -58 -8 -85q-14 -41 -47 -62v-2q34 -21 47 -62q8 -23 8 -101q0 -85 -8 -110q-30 -91 -133 -91zM193 392q45 0 59 41 +q5 14 5 71q0 58 -5 72q-14 40 -59 40t-59 -40q-5 -14 -5 -72q0 -57 5 -71q14 -41 59 -41zM193 64q45 0 59 40q5 14 5 88q0 73 -5 87q-14 41 -59 41t-59 -41q-5 -14 -5 -87q0 -74 5 -88q14 -40 59 -40z" /> + <glyph glyph-name="nine.onumprop" horiz-adv-x="382" +d="M191 488q103 0 133 -91q8 -25 8 -113q0 -72 -6.5 -108t-25.5 -86l-102 -261q-3 -9 -12 -9h-60q-11 0 -6 11l100 258l-1 2q-12 -10 -43 -10q-89 0 -117 87q-9 28 -9 116t8 113q30 91 133 91zM191 415q-45 0 -59 -40q-5 -14 -5 -91q0 -76 5 -90q14 -41 59 -41t59 41 +q5 14 5 90q0 77 -5 91q-14 40 -59 40z" /> + <glyph glyph-name="one.superior" horiz-adv-x="270" +d="M178 430h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.superior" horiz-adv-x="270" +d="M225 430h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.superior" horiz-adv-x="270" +d="M134 423q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="a.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="agrave.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM216 557h-40q-10 0 -17 10l-87 123q-6 10 5 10h59q10 0 16 -10l69 -123q5 -10 -5 -10z" /> + <glyph glyph-name="aacute.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM195 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10z" /> + <glyph glyph-name="acircumflex.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM313 557h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="atilde.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM242 581q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="adieresis.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM299 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10zM154 588h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM298 603h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM201 563q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -54 62 -54t61 54q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="aring.alt01" horiz-adv-x="389" +d="M321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134 +q0 -111 7 -135q14 -42 59 -42zM201 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM201 583q20 0 33.5 14t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="aringacute.alt01" horiz-adv-x="389" +d="M212 775h-38q-4 0 -5.5 3t1.5 7l82 93q9 10 21 10h56q4 0 5.5 -3.5t-1.5 -6.5l-100 -93q-11 -10 -21 -10zM321 0h-57q-10 0 -10 10v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459 +q0 -10 -10 -10zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42zM201 546q-37 0 -61.5 24.5t-24.5 61.5q0 38 24.5 62.5t61.5 24.5t61.5 -25t24.5 -62t-24.5 -61.5t-61.5 -24.5zM201 583q20 0 33.5 14 +t13.5 35t-13.5 35t-33.5 14t-33.5 -14t-13.5 -35t13.5 -35t33.5 -14z" /> + <glyph glyph-name="aogonek.alt01" horiz-adv-x="389" +d="M271 -181q-35 0 -56 19t-21 54q0 50 61 109q-1 2 -1 9v39h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-459q0 -7 -6 -11q-66 -55 -66 -95q0 -26 22 -26q11 0 20 6q8 5 13 -3l14 -34q4 -9 -5 -13 +q-23 -15 -52 -15zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="ae.alt01" horiz-adv-x="565" +d="M173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5 +q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45 +q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="aeacute.alt01" horiz-adv-x="565" +d="M304 557h-40q-10 0 -5 10l69 123q6 10 16 10h59q11 0 5 -10l-87 -123q-7 -10 -17 -10zM173 417q-40 0 -81 -32q-11 -7 -16 4l-19 39q-5 9 2 16q47 44 123 44q73 0 103 -42h1q32 42 96 42q99 0 129 -89q11 -35 11 -173q0 -10 -10 -10h-188q-6 0 -6 -6q0 -83 7 -106 +q15 -41 56 -41q49 0 64 54q3 10 12 8l53 -11q9 -1 7 -12q-10 -52 -46 -81.5t-91 -29.5q-81 0 -115 63h-1q-40 -63 -111 -63q-48 0 -80.5 34t-32.5 108q0 77 38 112.5t103 35.5h57q6 0 6 6v39q0 49 -16 70t-55 21zM439 281q6 0 6 6q0 68 -7 91q-13 40 -56 40q-44 0 -57 -40 +q-7 -23 -7 -91q0 -6 6 -6h115zM174 57q31 0 50.5 24t19.5 63v66q0 6 -6 6h-45q-79 0 -79 -81q0 -78 60 -78z" /> + <glyph glyph-name="germandbls.alt01" horiz-adv-x="426" +d="M186 -180q-10 0 -10 10v52q0 10 10 10q85 0 108 68q8 24 8 101q0 74 -6 92q-17 51 -81 54q-10 0 -10 10v49q0 8 5 16l76 126v2h-145q-6 0 -6 -6v-394q0 -10 -10 -10h-57q-10 0 -10 10v538q0 132 124 132h19q10 0 10 -10v-53q0 -10 -10 -10h-23q-23 0 -33 -10t-10 -35v-77 +q0 -6 6 -6h225q10 0 10 -10v-41q0 -7 -3 -13l-88 -143v-2q63 -16 83 -77q12 -36 12 -132q0 -87 -12 -125q-39 -116 -182 -116z" /> + <glyph glyph-name="q.alt01" horiz-adv-x="389" +d="M321 -180h-57q-10 0 -10 10v219h-1q-24 -58 -91 -58q-79 0 -104 78q-12 37 -12 171t12 170q25 78 104 78q68 0 91 -58h1v39q0 10 10 10h57q10 0 10 -10v-562h1l51 51q6 6 14 0l28 -30q6 -6 -1 -14l-94 -91q-4 -3 -9 -3zM189 63q43 0 58 42q7 24 7 135q0 110 -7 134 +q-15 42 -58 42q-45 0 -59 -42q-7 -24 -7 -134q0 -111 7 -135q14 -42 59 -42z" /> + <glyph glyph-name="C.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z" /> + <glyph glyph-name="Cacute.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M221 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Ccircumflex.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M319 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Ccaron.alt01" horiz-adv-x="406" +d="M207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z +M225 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9z" /> + <glyph glyph-name="Cdotaccent.alt01" horiz-adv-x="406" +d="M239 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM207 -9q-114 0 -146 100q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226 +q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -196 -158 -196z" /> + <glyph glyph-name="Ccedilla.alt01" horiz-adv-x="406" +d="M119 -142l54 136q-86 13 -112 97q-12 41 -12 249t12 249q32 100 146 100q158 0 158 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 62 -18.5 91t-58.5 29q-53 0 -69 -47q-9 -24 -9 -226t9 -226q16 -47 69 -47q40 0 58.5 29t18.5 91q0 10 10 10h59q10 0 10 -10q0 -179 -130 -194 +l-45 -135q-4 -10 -16 -10h-48q-10 0 -7 10z" /> + <glyph glyph-name="G.alt01" horiz-adv-x="422" +d="M211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53 +q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gcircumflex.alt01" horiz-adv-x="422" +d="M211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53 +q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102zM323 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Gbreve.alt01" horiz-adv-x="422" +d="M211 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59 +q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gdotaccent.alt01" horiz-adv-x="422" +d="M243 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5q-57 0 -72 -48q-9 -26 -9 -225 +t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="Gcommaaccent.alt01" horiz-adv-x="422" +d="M183 -208q-8 0 -8 10v135q0 10 10 10h53q10 0 10 -10v-49q0 -12 -7 -22l-46 -66q-4 -8 -12 -8zM211 -9q-117 0 -150 102q-7 23 -9.5 66t-2.5 181t2.5 181t9.5 66q33 102 150 102q161 0 161 -196q0 -10 -10 -10h-59q-10 0 -10 10q0 61 -19.5 90.5t-61.5 29.5 +q-57 0 -72 -48q-9 -26 -9 -225t9 -225q15 -48 73 -48t73 48q9 29 9 174q0 6 -6 6h-67q-10 0 -10 10v53q0 10 10 10h141q10 0 10 -10v-29q0 -200 -12 -236q-33 -102 -150 -102z" /> + <glyph glyph-name="I.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="Igrave.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM142 763h-39q-10 0 -19 10l-93 105q-3 4 -1.5 7t6.5 3h58 +q10 0 17 -10l76 -105q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM134 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3 +t-1.5 -7l-93 -105q-9 -10 -19 -10z" /> + <glyph glyph-name="Ibreve.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM118 753q-51 0 -80 30.5t-34 80.5q0 10 10 10h32q8 0 10 -10 +q16 -55 62 -55t61 55q3 10 11 10h32q10 0 10 -10q-5 -50 -34 -80.5t-80 -30.5z" /> + <glyph glyph-name="Icircumflex.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM230 752h-42q-10 0 -17 10l-52 71h-2l-52 -71q-7 -10 -17 -10 +h-42q-12 0 -5 10l82 123q6 10 17 10h36q11 0 17 -10l82 -123q7 -10 -5 -10z" /> + <glyph glyph-name="Itilde.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM160 773q-23 0 -49 19q-22 16 -35 16q-22 0 -44 -27 +q-4 -4 -8 -3t-4 6v47q0 9 9 18q22 24 48 24q19 0 48 -19q23 -17 36 -17q21 0 44 28q3 4 7 2.5t4 -6.5v-47q0 -9 -8 -17q-21 -24 -48 -24z" /> + <glyph glyph-name="Idieresis.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM216 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72 +q0 -10 -10 -10zM71 777h-51q-10 0 -10 10v72q0 10 10 10h51q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Imacron.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM215 790h-194q-10 0 -10 10v43q0 10 10 10h194q10 0 10 -10v-43 +q0 -10 -10 -10z" /> + <glyph glyph-name="Idotaccent.alt01" horiz-adv-x="236" +d="M194 0h-152q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10zM150 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72 +q0 -10 -10 -10z" /> + <glyph glyph-name="Iogonek.alt01" horiz-adv-x="236" +d="M117 -181q-34 0 -55 19t-21 54q0 52 46 108h-45q-10 0 -10 10v53q0 10 10 10h30q6 0 6 6v522q0 6 -6 6h-30q-10 0 -10 10v53q0 10 10 10h152q10 0 10 -10v-53q0 -10 -10 -10h-30q-6 0 -6 -6v-522q0 -6 6 -6h30q10 0 10 -10v-53q0 -10 -10 -10h-39q-50 -61 -50 -96 +q0 -26 22 -26q11 0 20 6q10 6 13 -3l15 -34q3 -8 -5 -13q-22 -15 -53 -15z" /> + <glyph glyph-name="Z.alt01" horiz-adv-x="362" +d="M318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute.alt01" horiz-adv-x="362" +d="M192 763h-38q-5 0 -7 3t1 7l77 105q7 10 16 10h58q5 0 6.5 -3t-1.5 -7l-93 -105q-9 -10 -19 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228 +h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron.alt01" horiz-adv-x="362" +d="M202 750h-36q-11 0 -17 9l-82 124q-3 4 -1.5 7t6.5 3h42q10 0 17 -10l52 -72h2l52 72q7 10 17 10h42q5 0 6.5 -3t-1.5 -7l-82 -124q-6 -9 -17 -9zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55 +q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent.alt01" horiz-adv-x="362" +d="M215 777h-63q-10 0 -10 10v72q0 10 10 10h63q10 0 10 -10v-72q0 -10 -10 -10zM318 0h-273q-10 0 -10 10v52q0 6 2 12l93 238h-50q-10 0 -10 10v45q0 10 10 10h75l88 226v2h-188q-10 0 -10 10v55q0 10 10 10h263q10 0 10 -10v-53q0 -6 -2 -12l-89 -228h54q10 0 10 -10v-45 +q0 -10 -10 -10h-80l-91 -235v-2h198q10 0 10 -10v-55q0 -10 -10 -10z" /> + <glyph glyph-name="zero.alt01" +d="M193 -9q-103 0 -132 89q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89zM128 340v-105l128 288q-1 37 -5 53q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236zM193 64q46 0 58 40q7 20 7 236v105l-129 -288q1 -39 5 -53 +q14 -40 59 -40z" /> + <glyph glyph-name="one.alt01" +d="M327 0h-248q-10 0 -10 10v53q0 10 10 10h79q6 0 6 6v508h-1l-86 -65q-11 -7 -11 7v62q0 8 7 14l89 69q7 6 14 6h55q10 0 10 -10v-591q0 -6 6 -6h80q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt01" +d="M196 -9q-102 0 -132 91q-9 29 -9 126v329q0 72 39 112t106 40q65 0 114 -37q7 -6 2 -14l-28 -45q-5 -9 -14 -2q-35 25 -69 25q-35 0 -54 -20.5t-19 -58.5v-142h2q24 28 72 28q94 0 122 -83q9 -29 9 -132q0 -101 -8 -126q-30 -91 -133 -91zM196 64q45 0 59 40q5 14 5 104 +q0 88 -5 102q-14 41 -59 41t-59 -41q-5 -14 -5 -102q0 -90 5 -104q14 -40 59 -40z" /> + <glyph glyph-name="seven.alt01" +d="M310 309h-62l-87 -299q-3 -10 -13 -10h-59q-9 0 -6 12l88 297h-68q-10 0 -10 10v45q0 10 10 10h87l69 232v2h-202q-10 0 -10 10v52q0 10 10 10h270q10 0 10 -10v-52q0 -6 -2 -14l-68 -230h43q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt01" +d="M190 689q102 0 132 -91q9 -28 9 -126v-329q0 -72 -39 -112t-106 -40q-65 0 -114 37q-7 6 -2 14l28 45q5 9 14 2q35 -25 69 -25q35 0 54 20.5t19 58.5v142h-2q-24 -28 -72 -28q-94 0 -122 83q-9 28 -9 132q0 101 8 126q30 91 133 91zM190 616q-45 0 -59 -40 +q-5 -14 -5 -104q0 -88 5 -102q14 -41 59 -41t59 41q5 14 5 102q0 90 -5 104q-14 40 -59 40z" /> + <glyph glyph-name="zero.alt02" +d="M193 -9q-103 0 -132 89q-11 35 -11 260t11 260q29 89 132 89t132 -89q10 -31 10 -260t-10 -260q-29 -89 -132 -89zM128 340v-105l128 288q-1 37 -5 53q-12 40 -58 40q-45 0 -59 -40q-6 -21 -6 -236zM193 64q46 0 58 40q7 20 7 236v105l-129 -288q1 -39 5 -53 +q14 -40 59 -40z" /> + <glyph glyph-name="one.alt02" horiz-adv-x="337" +d="M305 0h-248q-10 0 -10 10v53q0 10 10 10h79q6 0 6 6v508h-1l-86 -65q-11 -7 -11 7v62q0 8 7 14l89 69q8 6 14 6h55q10 0 10 -10v-591q0 -6 6 -6h80q10 0 10 -10v-53q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt02" horiz-adv-x="380" +d="M191 -9q-102 0 -132 91q-9 29 -9 126v329q0 72 39 112t106 40q65 0 114 -37q7 -6 2 -14l-28 -45q-5 -9 -14 -2q-35 25 -69 25q-35 0 -54 -20.5t-19 -58.5v-142h2q24 28 72 28q94 0 122 -83q9 -29 9 -132q0 -101 -8 -126q-30 -91 -133 -91zM191 64q45 0 59 40q5 14 5 104 +q0 88 -5 102q-14 41 -59 41t-59 -41q-5 -14 -5 -102q0 -90 5 -104q14 -40 59 -40z" /> + <glyph glyph-name="seven.alt02" horiz-adv-x="366" +d="M303 309h-62l-87 -299q-3 -10 -13 -10h-59q-9 0 -6 12l88 297h-68q-10 0 -10 10v45q0 10 10 10h87l69 232v2h-202q-10 0 -10 10v52q0 10 10 10h270q10 0 10 -10v-52q0 -6 -2 -14l-68 -230h43q10 0 10 -10v-45q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt02" horiz-adv-x="380" +d="M189 689q102 0 132 -91q9 -28 9 -126v-329q0 -72 -39 -112t-106 -40q-65 0 -114 37q-7 6 -2 14l28 45q5 9 14 2q35 -25 69 -25q35 0 54 20.5t19 58.5v142h-2q-24 -28 -72 -28q-94 0 -122 83q-9 28 -9 132q0 101 8 126q30 91 133 91zM189 616q-45 0 -59 -40 +q-5 -14 -5 -104q0 -88 5 -102q14 -41 59 -41t59 41q5 14 5 102q0 90 -5 104q-14 40 -59 40z" /> + <glyph glyph-name="zero.nominator" horiz-adv-x="270" +d="M135 267q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 323q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.nominator" horiz-adv-x="270" +d="M178 274h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.nominator" horiz-adv-x="270" +d="M225 274h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.nominator" horiz-adv-x="270" +d="M134 267q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.nominator" horiz-adv-x="270" +d="M204 274h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 323q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47 +q9 -23 36 -23z" /> + <glyph glyph-name="seven.nominator" horiz-adv-x="270" +d="M117 274h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.nominator" horiz-adv-x="270" +d="M135 267q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 514q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 323q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.nominator" horiz-adv-x="270" +d="M131 274h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 491q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <glyph glyph-name="zero.denominator" horiz-adv-x="270" +d="M135 -7q-73 0 -94 60q-7 22 -7 150t7 150q21 60 94 60t94 -60q7 -22 7 -150t-7 -150q-21 -60 -94 -60zM135 49q27 0 35 24q4 11 4 130t-4 130q-8 24 -35 24t-35 -24q-4 -11 -4 -130t4 -130q8 -24 35 -24z" /> + <glyph glyph-name="one.denominator" horiz-adv-x="270" +d="M178 0h-42q-10 0 -10 10v325h-1l-56 -35q-11 -7 -11 5v45q0 9 7 13l57 38q8 5 16 5h40q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.denominator" horiz-adv-x="270" +d="M225 0h-178q-10 0 -10 10v36q0 8 4 16l113 178q18 27 18 61q0 23 -3 34q-8 22 -35 22q-28 0 -35 -22q-4 -9 -4 -41q0 -11 -11 -9l-39 4q-9 1 -9 12q0 31 6 51q19 61 93 61q75 0 94 -61q6 -20 6 -51q0 -49 -29 -93l-96 -151v-1h115q10 0 10 -10v-36q0 -10 -10 -10z" /> + <glyph glyph-name="three.denominator" horiz-adv-x="270" +d="M134 -7q-74 0 -93 60q-6 19 -6 42q0 11 10 12l38 4q11 2 11 -10q0 -16 4 -30q7 -22 35 -22t35 22q4 14 4 44q0 35 -3 45q-7 22 -36 22h-8q-10 0 -10 10v37q0 10 10 10h7q30 0 37 21q3 10 3 39q0 22 -4 36q-7 22 -35 22t-35 -22q-4 -14 -4 -30q0 -12 -11 -10l-38 4 +q-10 1 -10 12q0 23 6 42q19 60 93 60q75 0 94 -60q6 -19 6 -54q0 -37 -4 -49q-9 -27 -35 -38v-1q27 -13 34 -38q5 -14 5 -58q0 -43 -6 -62q-19 -60 -94 -60z" /> + <glyph glyph-name="four.denominator" horiz-adv-x="270" +d="M204 0h-39q-10 0 -10 10v46q0 6 -6 6h-119q-10 0 -10 10v36q0 7 3 16l88 272q3 10 12 10h44q10 0 7 -10l-90 -276v-2h65q6 0 6 6v99q0 10 10 10h39q10 0 10 -10v-99q0 -6 5 -6h23q10 0 10 -10v-36q0 -10 -10 -10h-22q-6 0 -6 -6v-46q0 -10 -10 -10z" /> + <glyph glyph-name="five.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -94 61q-5 15 -5 34q0 10 9 12l39 4q11 2 11 -9q0 -14 3 -23q8 -23 36 -23q27 0 35 22q3 11 3 58q0 48 -3 57q-8 22 -35 22q-23 0 -33 -15q-7 -10 -16 -10h-36q-10 0 -10 10v203q0 10 10 10h174q10 0 10 -10v-36q0 -10 -10 -10h-120q-6 0 -6 -6v-95h1 +q18 16 48 16q65 0 84 -56q5 -16 5 -80q0 -57 -6 -76q-19 -60 -94 -60z" /> + <glyph glyph-name="six.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -96 61q-5 16 -5 65q0 45 4 66.5t17 51.5l70 159q4 10 14 10h44q10 0 7 -10l-68 -155h1q8 4 23 4q66 0 84 -58q6 -17 6 -68q0 -49 -5 -65q-21 -61 -96 -61zM135 49q28 0 35 23q4 9 4 47t-4 46q-7 24 -35 24q-27 0 -36 -24q-3 -9 -3 -46t3 -47q9 -23 36 -23z +" /> + <glyph glyph-name="seven.denominator" horiz-adv-x="270" +d="M117 0h-44q-11 0 -8 10l111 337v3h-73q-6 0 -6 -6v-37q0 -10 -10 -10h-40q-10 0 -10 10v89q0 10 10 10h183q10 0 10 -10v-36q0 -8 -3 -17l-108 -333q-3 -10 -12 -10z" /> + <glyph glyph-name="eight.denominator" horiz-adv-x="270" +d="M135 -7q-75 0 -96 61q-5 16 -5 63q0 41 5 53q8 28 31 42v1q-23 16 -31 42q-5 14 -5 44q0 37 5 53q21 61 96 61t96 -61q5 -16 5 -53q0 -30 -5 -44q-7 -25 -31 -42v-1q23 -15 31 -42q5 -12 5 -53q0 -47 -5 -63q-21 -61 -96 -61zM135 240q27 0 35 23q4 9 4 36q0 26 -4 35 +q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -35t3 -36q10 -23 36 -23zM135 49q28 0 35 23q4 9 4 45q0 35 -4 44q-8 23 -35 23q-26 0 -36 -23q-3 -11 -3 -44q0 -35 3 -45q9 -23 36 -23z" /> + <glyph glyph-name="nine.denominator" horiz-adv-x="270" +d="M131 0h-44q-11 0 -8 10l69 155l-1 1q-8 -5 -24 -5q-65 0 -83 58q-6 17 -6 68q0 49 5 65q21 61 96 61t96 -61q5 -16 5 -65q0 -45 -4 -66.5t-17 -51.5l-71 -159q-4 -10 -13 -10zM135 217q28 0 35 24q4 8 4 46t-4 47q-7 23 -35 23q-27 0 -36 -23q-3 -10 -3 -47t3 -46 +q9 -24 36 -24z" /> + <hkern u1=" " u2="Ỳ" k="15" /> + <hkern u1=" " u2="Ẅ" k="15" /> + <hkern u1=" " u2="Ẃ" k="15" /> + <hkern u1=" " u2="Ẁ" k="15" /> + <hkern u1=" " u2="Ț" k="10" /> + <hkern u1=" " u2="Ÿ" k="15" /> + <hkern u1=" " u2="Ŷ" k="15" /> + <hkern u1=" " u2="Ŵ" k="15" /> + <hkern u1=" " u2="Ŧ" k="10" /> + <hkern u1=" " u2="Ť" k="10" /> + <hkern u1=" " u2="Ţ" k="10" /> + <hkern u1=" " u2="Ý" k="15" /> + <hkern u1=" " u2="Y" k="15" /> + <hkern u1=" " u2="X" k="4" /> + <hkern u1=" " u2="W" k="15" /> + <hkern u1=" " u2="V" k="22" /> + <hkern u1=" " u2="T" k="10" /> + <hkern u1=""" u2="ï" k="-56" /> + <hkern u1=""" u2="y" k="-3" /> + <hkern u1=""" u2="v" k="-3" /> + <hkern u1="'" u2="ï" k="-56" /> + <hkern u1="'" u2="y" k="-3" /> + <hkern u1="'" u2="v" k="-3" /> + <hkern u1="," u2=" " k="16" /> + <hkern u1="-" u2="Ŧ" k="47" /> + <hkern u1="-" u2="y" k="17" /> + <hkern u1="-" u2="x" k="40" /> + <hkern u1="-" u2="v" k="16" /> + <hkern u1="-" u2="X" k="46" /> + <hkern u1="-" u2="V" k="36" /> + <hkern u1="." u2=" " k="16" /> + <hkern u1="A" g2="v.sc" k="13" /> + <hkern u1="A" u2="®" k="40" /> + <hkern u1="A" u2="«" k="13" /> + <hkern u1="A" u2="y" k="20" /> + <hkern u1="A" u2="v" k="24" /> + <hkern u1="A" u2="V" k="36" /> + <hkern u1="A" u2="?" k="40" /> + <hkern u1="B" g2="jcircumflex.sc" k="13" /> + <hkern u1="B" g2="aeacute.sc" k="7" /> + <hkern u1="B" g2="ae.sc" k="7" /> + <hkern u1="B" g2="j.sc" k="13" /> + <hkern u1="B" u2="Ỳ" k="16" /> + <hkern u1="B" u2="Ẅ" k="4" /> + <hkern u1="B" u2="Ẃ" k="4" /> + <hkern u1="B" u2="Ẁ" k="4" /> + <hkern u1="B" u2="Ǽ" k="24" /> + <hkern u1="B" u2="Ǻ" k="4" /> + <hkern u1="B" u2="Ÿ" k="16" /> + <hkern u1="B" u2="Ŷ" k="16" /> + <hkern u1="B" u2="Ŵ" k="4" /> + <hkern u1="B" u2="Ĵ" k="11" /> + <hkern u1="B" u2="Ą" k="4" /> + <hkern u1="B" u2="Ă" k="4" /> + <hkern u1="B" u2="Ā" k="4" /> + <hkern u1="B" u2="Ý" k="16" /> + <hkern u1="B" u2="Æ" k="24" /> + <hkern u1="B" u2="Å" k="4" /> + <hkern u1="B" u2="Ä" k="4" /> + <hkern u1="B" u2="Ã" k="4" /> + <hkern u1="B" u2="Â" k="4" /> + <hkern u1="B" u2="Á" k="4" /> + <hkern u1="B" u2="À" k="4" /> + <hkern u1="B" u2="Y" k="16" /> + <hkern u1="B" u2="X" k="16" /> + <hkern u1="B" u2="W" k="4" /> + <hkern u1="B" u2="V" k="6" /> + <hkern u1="B" u2="J" k="11" /> + <hkern u1="B" u2="A" k="4" /> + <hkern u1="C" u2="y" k="12" /> + <hkern u1="D" u2="X" k="18" /> + <hkern u1="D" u2="V" k="14" /> + <hkern u1="F" g2="aogonek.alt01" k="7" /> + <hkern u1="F" g2="aringacute.alt01" k="7" /> + <hkern u1="F" g2="aring.alt01" k="7" /> + <hkern u1="F" g2="abreve.alt01" k="7" /> + <hkern u1="F" g2="amacron.alt01" k="7" /> + <hkern u1="F" g2="adieresis.alt01" k="7" /> + <hkern u1="F" g2="atilde.alt01" k="7" /> + <hkern u1="F" g2="acircumflex.alt01" k="7" /> + <hkern u1="F" g2="aacute.alt01" k="7" /> + <hkern u1="F" g2="agrave.alt01" k="7" /> + <hkern u1="F" g2="a.alt01" k="7" /> + <hkern u1="F" g2="jcircumflex.sc" k="51" /> + <hkern u1="F" g2="aeacute.sc" k="53" /> + <hkern u1="F" g2="ae.sc" k="53" /> + <hkern u1="F" g2="aogonek.sc" k="28" /> + <hkern u1="F" g2="aringacute.sc" k="28" /> + <hkern u1="F" g2="aring.sc" k="28" /> + <hkern u1="F" g2="abreve.sc" k="28" /> + <hkern u1="F" g2="amacron.sc" k="28" /> + <hkern u1="F" g2="adieresis.sc" k="28" /> + <hkern u1="F" g2="atilde.sc" k="28" /> + <hkern u1="F" g2="acircumflex.sc" k="28" /> + <hkern u1="F" g2="aacute.sc" k="28" /> + <hkern u1="F" g2="agrave.sc" k="28" /> + <hkern u1="F" g2="j.sc" k="51" /> + <hkern u1="F" g2="a.sc" k="28" /> + <hkern u1="F" u2="…" k="74" /> + <hkern u1="F" u2="ș" k="9" /> + <hkern u1="F" u2="ǿ" k="7" /> + <hkern u1="F" u2="ǽ" k="30" /> + <hkern u1="F" u2="Ǽ" k="53" /> + <hkern u1="F" u2="ǻ" k="30" /> + <hkern u1="F" u2="Ǻ" k="25" /> + <hkern u1="F" u2="ų" k="18" /> + <hkern u1="F" u2="ű" k="18" /> + <hkern u1="F" u2="ů" k="18" /> + <hkern u1="F" u2="ŭ" k="18" /> + <hkern u1="F" u2="ū" k="18" /> + <hkern u1="F" u2="ũ" k="18" /> + <hkern u1="F" u2="š" k="9" /> + <hkern u1="F" u2="ş" k="9" /> + <hkern u1="F" u2="ŝ" k="9" /> + <hkern u1="F" u2="ś" k="9" /> + <hkern u1="F" u2="ř" k="18" /> + <hkern u1="F" u2="ŗ" k="18" /> + <hkern u1="F" u2="ŕ" k="18" /> + <hkern u1="F" u2="œ" k="24" /> + <hkern u1="F" u2="ő" k="24" /> + <hkern u1="F" u2="ŏ" k="24" /> + <hkern u1="F" u2="ō" k="24" /> + <hkern u1="F" u2="ŋ" k="18" /> + <hkern u1="F" u2="ň" k="18" /> + <hkern u1="F" u2="ņ" k="18" /> + <hkern u1="F" u2="ń" k="18" /> + <hkern u1="F" u2="Ĵ" k="55" /> + <hkern u1="F" u2="ı" k="18" /> + <hkern u1="F" u2="ģ" k="7" /> + <hkern u1="F" u2="ġ" k="7" /> + <hkern u1="F" u2="ğ" k="7" /> + <hkern u1="F" u2="ĝ" k="7" /> + <hkern u1="F" u2="ě" k="24" /> + <hkern u1="F" u2="ę" k="24" /> + <hkern u1="F" u2="ė" k="24" /> + <hkern u1="F" u2="ĕ" k="24" /> + <hkern u1="F" u2="ē" k="24" /> + <hkern u1="F" u2="đ" k="7" /> + <hkern u1="F" u2="ď" k="7" /> + <hkern u1="F" u2="č" k="24" /> + <hkern u1="F" u2="ċ" k="24" /> + <hkern u1="F" u2="ĉ" k="24" /> + <hkern u1="F" u2="ć" k="24" /> + <hkern u1="F" u2="ą" k="30" /> + <hkern u1="F" u2="Ą" k="25" /> + <hkern u1="F" u2="ă" k="30" /> + <hkern u1="F" u2="Ă" k="25" /> + <hkern u1="F" u2="ā" k="30" /> + <hkern u1="F" u2="Ā" k="25" /> + <hkern u1="F" u2="ü" k="18" /> + <hkern u1="F" u2="û" k="18" /> + <hkern u1="F" u2="ú" k="18" /> + <hkern u1="F" u2="ù" k="18" /> + <hkern u1="F" u2="ø" k="7" /> + <hkern u1="F" u2="ö" k="24" /> + <hkern u1="F" u2="õ" k="24" /> + <hkern u1="F" u2="ô" k="24" /> + <hkern u1="F" u2="ó" k="24" /> + <hkern u1="F" u2="ò" k="24" /> + <hkern u1="F" u2="ñ" k="18" /> + <hkern u1="F" u2="ð" k="7" /> + <hkern u1="F" u2="ë" k="24" /> + <hkern u1="F" u2="ê" k="24" /> + <hkern u1="F" u2="é" k="24" /> + <hkern u1="F" u2="è" k="24" /> + <hkern u1="F" u2="ç" k="24" /> + <hkern u1="F" u2="æ" k="30" /> + <hkern u1="F" u2="å" k="30" /> + <hkern u1="F" u2="ä" k="30" /> + <hkern u1="F" u2="ã" k="30" /> + <hkern u1="F" u2="â" k="30" /> + <hkern u1="F" u2="á" k="30" /> + <hkern u1="F" u2="à" k="30" /> + <hkern u1="F" u2="Æ" k="53" /> + <hkern u1="F" u2="Å" k="25" /> + <hkern u1="F" u2="Ä" k="25" /> + <hkern u1="F" u2="Ã" k="25" /> + <hkern u1="F" u2="Â" k="25" /> + <hkern u1="F" u2="Á" k="25" /> + <hkern u1="F" u2="À" k="25" /> + <hkern u1="F" u2="y" k="18" /> + <hkern u1="F" u2="u" k="18" /> + <hkern u1="F" u2="s" k="9" /> + <hkern u1="F" u2="r" k="18" /> + <hkern u1="F" u2="q" k="7" /> + <hkern u1="F" u2="p" k="18" /> + <hkern u1="F" u2="o" k="24" /> + <hkern u1="F" u2="n" k="18" /> + <hkern u1="F" u2="m" k="18" /> + <hkern u1="F" u2="g" k="7" /> + <hkern u1="F" u2="e" k="24" /> + <hkern u1="F" u2="d" k="7" /> + <hkern u1="F" u2="c" k="24" /> + <hkern u1="F" u2="a" k="30" /> + <hkern u1="F" u2="J" k="55" /> + <hkern u1="F" u2="A" k="25" /> + <hkern u1="F" u2="." k="74" /> + <hkern u1="F" u2="," k="74" /> + <hkern u1="G" u2="X" k="16" /> + <hkern u1="G" u2="V" k="12" /> + <hkern u1="H" u2="ï" k="-13" /> + <hkern u1="I" u2="ï" k="-13" /> + <hkern u1="K" g2="v.sc" k="29" /> + <hkern u1="K" u2="®" k="49" /> + <hkern u1="K" u2="«" k="50" /> + <hkern u1="K" u2="y" k="19" /> + <hkern u1="K" u2="v" k="27" /> + <hkern u1="L" g2="v.sc" k="29" /> + <hkern u1="L" u2="®" k="40" /> + <hkern u1="L" u2="«" k="20" /> + <hkern u1="L" u2="y" k="20" /> + <hkern u1="L" u2="v" k="38" /> + <hkern u1="L" u2="V" k="50" /> + <hkern u1="L" u2="?" k="13" /> + <hkern u1="M" u2="ï" k="-13" /> + <hkern u1="N" u2="ï" k="-13" /> + <hkern u1="O" u2="X" k="16" /> + <hkern u1="O" u2="V" k="12" /> + <hkern u1="P" g2="jcircumflex.sc" k="61" /> + <hkern u1="P" g2="aeacute.sc" k="76" /> + <hkern u1="P" g2="ae.sc" k="76" /> + <hkern u1="P" g2="aogonek.sc" k="43" /> + <hkern u1="P" g2="aringacute.sc" k="43" /> + <hkern u1="P" g2="aring.sc" k="43" /> + <hkern u1="P" g2="abreve.sc" k="43" /> + <hkern u1="P" g2="amacron.sc" k="43" /> + <hkern u1="P" g2="adieresis.sc" k="43" /> + <hkern u1="P" g2="atilde.sc" k="43" /> + <hkern u1="P" g2="acircumflex.sc" k="43" /> + <hkern u1="P" g2="aacute.sc" k="43" /> + <hkern u1="P" g2="agrave.sc" k="43" /> + <hkern u1="P" g2="j.sc" k="61" /> + <hkern u1="P" g2="a.sc" k="43" /> + <hkern u1="P" u2="…" k="114" /> + <hkern u1="P" u2="”" k="-20" /> + <hkern u1="P" u2="“" k="-20" /> + <hkern u1="P" u2="’" k="-20" /> + <hkern u1="P" u2="‘" k="-20" /> + <hkern u1="P" u2="Ỳ" k="8" /> + <hkern u1="P" u2="ǽ" k="18" /> + <hkern u1="P" u2="Ǽ" k="93" /> + <hkern u1="P" u2="ǻ" k="18" /> + <hkern u1="P" u2="Ǻ" k="46" /> + <hkern u1="P" u2="Ÿ" k="8" /> + <hkern u1="P" u2="Ŷ" k="8" /> + <hkern u1="P" u2="œ" k="6" /> + <hkern u1="P" u2="ő" k="6" /> + <hkern u1="P" u2="ŏ" k="6" /> + <hkern u1="P" u2="ō" k="6" /> + <hkern u1="P" u2="Ĵ" k="72" /> + <hkern u1="P" u2="ě" k="6" /> + <hkern u1="P" u2="ę" k="6" /> + <hkern u1="P" u2="ė" k="6" /> + <hkern u1="P" u2="ĕ" k="6" /> + <hkern u1="P" u2="ē" k="6" /> + <hkern u1="P" u2="č" k="6" /> + <hkern u1="P" u2="ċ" k="6" /> + <hkern u1="P" u2="ĉ" k="6" /> + <hkern u1="P" u2="ć" k="6" /> + <hkern u1="P" u2="ą" k="18" /> + <hkern u1="P" u2="Ą" k="46" /> + <hkern u1="P" u2="ă" k="18" /> + <hkern u1="P" u2="Ă" k="46" /> + <hkern u1="P" u2="ā" k="18" /> + <hkern u1="P" u2="Ā" k="46" /> + <hkern u1="P" u2="ö" k="6" /> + <hkern u1="P" u2="õ" k="6" /> + <hkern u1="P" u2="ô" k="6" /> + <hkern u1="P" u2="ó" k="6" /> + <hkern u1="P" u2="ò" k="6" /> + <hkern u1="P" u2="ë" k="6" /> + <hkern u1="P" u2="ê" k="6" /> + <hkern u1="P" u2="é" k="6" /> + <hkern u1="P" u2="è" k="6" /> + <hkern u1="P" u2="ç" k="6" /> + <hkern u1="P" u2="æ" k="18" /> + <hkern u1="P" u2="å" k="18" /> + <hkern u1="P" u2="ä" k="18" /> + <hkern u1="P" u2="ã" k="18" /> + <hkern u1="P" u2="â" k="18" /> + <hkern u1="P" u2="á" k="18" /> + <hkern u1="P" u2="à" k="18" /> + <hkern u1="P" u2="Ý" k="8" /> + <hkern u1="P" u2="Æ" k="93" /> + <hkern u1="P" u2="Å" k="46" /> + <hkern u1="P" u2="Ä" k="46" /> + <hkern u1="P" u2="Ã" k="46" /> + <hkern u1="P" u2="Â" k="46" /> + <hkern u1="P" u2="Á" k="46" /> + <hkern u1="P" u2="À" k="46" /> + <hkern u1="P" u2="o" k="6" /> + <hkern u1="P" u2="e" k="6" /> + <hkern u1="P" u2="c" k="6" /> + <hkern u1="P" u2="a" k="18" /> + <hkern u1="P" u2="Y" k="8" /> + <hkern u1="P" u2="X" k="20" /> + <hkern u1="P" u2="J" k="72" /> + <hkern u1="P" u2="A" k="46" /> + <hkern u1="P" u2="." k="114" /> + <hkern u1="P" u2="," k="114" /> + <hkern u1="P" u2="'" k="-20" /> + <hkern u1="P" u2=""" k="-20" /> + <hkern u1="Q" u2="…" k="-23" /> + <hkern u1="Q" u2="Ỳ" k="24" /> + <hkern u1="Q" u2="Ẅ" k="11" /> + <hkern u1="Q" u2="Ẃ" k="11" /> + <hkern u1="Q" u2="Ẁ" k="11" /> + <hkern u1="Q" u2="Ÿ" k="24" /> + <hkern u1="Q" u2="Ŷ" k="24" /> + <hkern u1="Q" u2="Ŵ" k="11" /> + <hkern u1="Q" u2="Ý" k="24" /> + <hkern u1="Q" u2="Y" k="24" /> + <hkern u1="Q" u2="W" k="11" /> + <hkern u1="Q" u2="V" k="15" /> + <hkern u1="Q" u2=";" k="-23" /> + <hkern u1="Q" u2=":" k="-23" /> + <hkern u1="Q" u2="." k="-23" /> + <hkern u1="Q" u2="," k="-23" /> + <hkern u1="Q" u2="!" k="-14" /> + <hkern u1="R" u2="«" k="20" /> + <hkern u1="R" u2="V" k="12" /> + <hkern u1="S" u2="y" k="3" /> + <hkern u1="S" u2="x" k="6" /> + <hkern u1="S" u2="v" k="7" /> + <hkern u1="T" g2="z.sc" k="28" /> + <hkern u1="T" g2="x.sc" k="44" /> + <hkern u1="T" g2="v.sc" k="33" /> + <hkern u1="T" u2="ï" k="-19" /> + <hkern u1="T" u2="«" k="43" /> + <hkern u1="T" u2="y" k="27" /> + <hkern u1="T" u2="x" k="31" /> + <hkern u1="T" u2="v" k="35" /> + <hkern u1="T" u2="?" k="-20" /> + <hkern u1="T" u2=" " k="10" /> + <hkern u1="V" g2="Gcommaaccent.alt01" k="12" /> + <hkern u1="V" g2="Gdotaccent.alt01" k="12" /> + <hkern u1="V" g2="Gbreve.alt01" k="12" /> + <hkern u1="V" g2="Gcircumflex.alt01" k="12" /> + <hkern u1="V" g2="G.alt01" k="12" /> + <hkern u1="V" g2="Ccedilla.alt01" k="12" /> + <hkern u1="V" g2="Cdotaccent.alt01" k="12" /> + <hkern u1="V" g2="Ccaron.alt01" k="12" /> + <hkern u1="V" g2="Ccircumflex.alt01" k="12" /> + <hkern u1="V" g2="Cacute.alt01" k="12" /> + <hkern u1="V" g2="C.alt01" k="12" /> + <hkern u1="V" g2="aogonek.alt01" k="36" /> + <hkern u1="V" g2="aringacute.alt01" k="36" /> + <hkern u1="V" g2="aring.alt01" k="36" /> + <hkern u1="V" g2="abreve.alt01" k="36" /> + <hkern u1="V" g2="amacron.alt01" k="36" /> + <hkern u1="V" g2="adieresis.alt01" k="36" /> + <hkern u1="V" g2="atilde.alt01" k="36" /> + <hkern u1="V" g2="acircumflex.alt01" k="36" /> + <hkern u1="V" g2="aacute.alt01" k="36" /> + <hkern u1="V" g2="agrave.alt01" k="36" /> + <hkern u1="V" g2="a.alt01" k="36" /> + <hkern u1="V" g2="eng.sc" k="10" /> + <hkern u1="V" g2="germandbls.sc" k="10" /> + <hkern u1="V" g2="ij.sc" k="10" /> + <hkern u1="V" g2="uogonek.sc" k="11" /> + <hkern u1="V" g2="uhungarumlaut.sc" k="11" /> + <hkern u1="V" g2="uring.sc" k="11" /> + <hkern u1="V" g2="ubreve.sc" k="11" /> + <hkern u1="V" g2="umacron.sc" k="11" /> + <hkern u1="V" g2="udieresis.sc" k="11" /> + <hkern u1="V" g2="utilde.sc" k="11" /> + <hkern u1="V" g2="ucircumflex.sc" k="11" /> + <hkern u1="V" g2="uacute.sc" k="11" /> + <hkern u1="V" g2="ugrave.sc" k="11" /> + <hkern u1="V" g2="thorn.sc" k="10" /> + <hkern u1="V" g2="scommaaccent.sc" k="10" /> + <hkern u1="V" g2="scedilla.sc" k="10" /> + <hkern u1="V" g2="scaron.sc" k="10" /> + <hkern u1="V" g2="scircumflex.sc" k="10" /> + <hkern u1="V" g2="sacute.sc" k="10" /> + <hkern u1="V" g2="rcommaaccent.sc" k="10" /> + <hkern u1="V" g2="rcaron.sc" k="10" /> + <hkern u1="V" g2="racute.sc" k="10" /> + <hkern u1="V" g2="oslash.sc" k="14" /> + <hkern u1="V" g2="ohungarumlaut.sc" k="14" /> + <hkern u1="V" g2="obreve.sc" k="14" /> + <hkern u1="V" g2="omacron.sc" k="14" /> + <hkern u1="V" g2="odieresis.sc" k="14" /> + <hkern u1="V" g2="otilde.sc" k="14" /> + <hkern u1="V" g2="ocircumflex.sc" k="14" /> + <hkern u1="V" g2="oacute.sc" k="14" /> + <hkern u1="V" g2="ograve.sc" k="14" /> + <hkern u1="V" g2="ncommaaccent.sc" k="10" /> + <hkern u1="V" g2="ntilde.sc" k="10" /> + <hkern u1="V" g2="ncaron.sc" k="10" /> + <hkern u1="V" g2="nacute.sc" k="10" /> + <hkern u1="V" g2="ldot.sc" k="10" /> + <hkern u1="V" g2="lslash.sc" k="10" /> + <hkern u1="V" g2="lcommaaccent.sc" k="10" /> + <hkern u1="V" g2="lcaron.sc" k="10" /> + <hkern u1="V" g2="lacute.sc" k="10" /> + <hkern u1="V" g2="kcommaaccent.sc" k="10" /> + <hkern u1="V" g2="jcircumflex.sc" k="50" /> + <hkern u1="V" g2="iogonek.sc" k="10" /> + <hkern u1="V" g2="idotaccent.sc" k="10" /> + <hkern u1="V" g2="imacron.sc" k="10" /> + <hkern u1="V" g2="idieresis.sc" k="10" /> + <hkern u1="V" g2="itilde.sc" k="10" /> + <hkern u1="V" g2="icircumflex.sc" k="10" /> + <hkern u1="V" g2="ibreve.sc" k="10" /> + <hkern u1="V" g2="iacute.sc" k="10" /> + <hkern u1="V" g2="igrave.sc" k="10" /> + <hkern u1="V" g2="hbar.sc" k="10" /> + <hkern u1="V" g2="hcircumflex.sc" k="10" /> + <hkern u1="V" g2="gcommaaccent.sc" k="14" /> + <hkern u1="V" g2="gdotaccent.sc" k="14" /> + <hkern u1="V" g2="gbreve.sc" k="14" /> + <hkern u1="V" g2="gcircumflex.sc" k="14" /> + <hkern u1="V" g2="eogonek.sc" k="10" /> + <hkern u1="V" g2="edotaccent.sc" k="10" /> + <hkern u1="V" g2="ebreve.sc" k="10" /> + <hkern u1="V" g2="emacron.sc" k="10" /> + <hkern u1="V" g2="edieresis.sc" k="10" /> + <hkern u1="V" g2="ecaron.sc" k="10" /> + <hkern u1="V" g2="ecircumflex.sc" k="10" /> + <hkern u1="V" g2="eacute.sc" k="10" /> + <hkern u1="V" g2="egrave.sc" k="10" /> + <hkern u1="V" g2="eth.sc" k="10" /> + <hkern u1="V" g2="dcroat.sc" k="10" /> + <hkern u1="V" g2="dcaron.sc" k="10" /> + <hkern u1="V" g2="ccedilla.sc" k="14" /> + <hkern u1="V" g2="cdotaccent.sc" k="14" /> + <hkern u1="V" g2="ccaron.sc" k="14" /> + <hkern u1="V" g2="ccircumflex.sc" k="14" /> + <hkern u1="V" g2="cacute.sc" k="14" /> + <hkern u1="V" g2="aeacute.sc" k="66" /> + <hkern u1="V" g2="ae.sc" k="66" /> + <hkern u1="V" g2="aogonek.sc" k="40" /> + <hkern u1="V" g2="aringacute.sc" k="40" /> + <hkern u1="V" g2="aring.sc" k="40" /> + <hkern u1="V" g2="abreve.sc" k="40" /> + <hkern u1="V" g2="amacron.sc" k="40" /> + <hkern u1="V" g2="adieresis.sc" k="40" /> + <hkern u1="V" g2="atilde.sc" k="40" /> + <hkern u1="V" g2="acircumflex.sc" k="40" /> + <hkern u1="V" g2="aacute.sc" k="40" /> + <hkern u1="V" g2="agrave.sc" k="40" /> + <hkern u1="V" g2="z.sc" k="4" /> + <hkern u1="V" g2="x.sc" k="10" /> + <hkern u1="V" g2="u.sc" k="11" /> + <hkern u1="V" g2="s.sc" k="10" /> + <hkern u1="V" g2="r.sc" k="10" /> + <hkern u1="V" g2="q.sc" k="14" /> + <hkern u1="V" g2="p.sc" k="10" /> + <hkern u1="V" g2="o.sc" k="14" /> + <hkern u1="V" g2="n.sc" k="10" /> + <hkern u1="V" g2="m.sc" k="10" /> + <hkern u1="V" g2="l.sc" k="10" /> + <hkern u1="V" g2="k.sc" k="10" /> + <hkern u1="V" g2="j.sc" k="50" /> + <hkern u1="V" g2="i.sc" k="10" /> + <hkern u1="V" g2="h.sc" k="10" /> + <hkern u1="V" g2="g.sc" k="14" /> + <hkern u1="V" g2="f.sc" k="10" /> + <hkern u1="V" g2="e.sc" k="10" /> + <hkern u1="V" g2="d.sc" k="10" /> + <hkern u1="V" g2="c.sc" k="14" /> + <hkern u1="V" g2="b.sc" k="10" /> + <hkern u1="V" g2="a.sc" k="40" /> + <hkern u1="V" g2="f_f_l" k="4" /> + <hkern u1="V" g2="f_f_i" k="4" /> + <hkern u1="V" g2="fl" k="4" /> + <hkern u1="V" g2="fi" k="4" /> + <hkern u1="V" g2="f_f" k="4" /> + <hkern u1="V" u2="∙" k="27" /> + <hkern u1="V" u2="›" k="23" /> + <hkern u1="V" u2="…" k="83" /> + <hkern u1="V" u2="•" k="27" /> + <hkern u1="V" u2="—" k="36" /> + <hkern u1="V" u2="–" k="36" /> + <hkern u1="V" u2="ẅ" k="8" /> + <hkern u1="V" u2="ẃ" k="8" /> + <hkern u1="V" u2="ẁ" k="8" /> + <hkern u1="V" u2="ț" k="4" /> + <hkern u1="V" u2="ș" k="35" /> + <hkern u1="V" u2="Ș" k="9" /> + <hkern u1="V" u2="ǿ" k="37" /> + <hkern u1="V" u2="Ǿ" k="12" /> + <hkern u1="V" u2="ǽ" k="25" /> + <hkern u1="V" u2="Ǽ" k="80" /> + <hkern u1="V" u2="ǻ" k="25" /> + <hkern u1="V" u2="Ǻ" k="36" /> + <hkern u1="V" u2="ž" k="18" /> + <hkern u1="V" u2="ż" k="18" /> + <hkern u1="V" u2="ź" k="18" /> + <hkern u1="V" u2="ŵ" k="8" /> + <hkern u1="V" u2="ų" k="23" /> + <hkern u1="V" u2="ű" k="23" /> + <hkern u1="V" u2="ů" k="23" /> + <hkern u1="V" u2="ŭ" k="23" /> + <hkern u1="V" u2="ū" k="23" /> + <hkern u1="V" u2="ũ" k="23" /> + <hkern u1="V" u2="ŧ" k="4" /> + <hkern u1="V" u2="ť" k="4" /> + <hkern u1="V" u2="ţ" k="4" /> + <hkern u1="V" u2="š" k="35" /> + <hkern u1="V" u2="Š" k="9" /> + <hkern u1="V" u2="ş" k="35" /> + <hkern u1="V" u2="Ş" k="9" /> + <hkern u1="V" u2="ŝ" k="35" /> + <hkern u1="V" u2="Ŝ" k="9" /> + <hkern u1="V" u2="ś" k="35" /> + <hkern u1="V" u2="Ś" k="9" /> + <hkern u1="V" u2="ř" k="24" /> + <hkern u1="V" u2="ŗ" k="24" /> + <hkern u1="V" u2="ŕ" k="24" /> + <hkern u1="V" u2="œ" k="37" /> + <hkern u1="V" u2="Œ" k="12" /> + <hkern u1="V" u2="ő" k="37" /> + <hkern u1="V" u2="Ő" k="12" /> + <hkern u1="V" u2="ŏ" k="37" /> + <hkern u1="V" u2="Ŏ" k="12" /> + <hkern u1="V" u2="ō" k="37" /> + <hkern u1="V" u2="Ō" k="12" /> + <hkern u1="V" u2="ŋ" k="24" /> + <hkern u1="V" u2="ň" k="24" /> + <hkern u1="V" u2="ņ" k="24" /> + <hkern u1="V" u2="ń" k="24" /> + <hkern u1="V" u2="Ĵ" k="56" /> + <hkern u1="V" u2="ı" k="24" /> + <hkern u1="V" u2="ģ" k="36" /> + <hkern u1="V" u2="Ģ" k="12" /> + <hkern u1="V" u2="ġ" k="36" /> + <hkern u1="V" u2="Ġ" k="12" /> + <hkern u1="V" u2="ğ" k="36" /> + <hkern u1="V" u2="Ğ" k="12" /> + <hkern u1="V" u2="ĝ" k="36" /> + <hkern u1="V" u2="Ĝ" k="12" /> + <hkern u1="V" u2="ě" k="37" /> + <hkern u1="V" u2="ę" k="37" /> + <hkern u1="V" u2="ė" k="37" /> + <hkern u1="V" u2="ĕ" k="37" /> + <hkern u1="V" u2="ē" k="37" /> + <hkern u1="V" u2="đ" k="36" /> + <hkern u1="V" u2="ď" k="36" /> + <hkern u1="V" u2="č" k="37" /> + <hkern u1="V" u2="Č" k="12" /> + <hkern u1="V" u2="ċ" k="37" /> + <hkern u1="V" u2="Ċ" k="12" /> + <hkern u1="V" u2="ĉ" k="37" /> + <hkern u1="V" u2="Ĉ" k="12" /> + <hkern u1="V" u2="ć" k="37" /> + <hkern u1="V" u2="Ć" k="12" /> + <hkern u1="V" u2="ą" k="25" /> + <hkern u1="V" u2="Ą" k="36" /> + <hkern u1="V" u2="ă" k="25" /> + <hkern u1="V" u2="Ă" k="36" /> + <hkern u1="V" u2="ā" k="25" /> + <hkern u1="V" u2="Ā" k="36" /> + <hkern u1="V" u2="ü" k="23" /> + <hkern u1="V" u2="û" k="23" /> + <hkern u1="V" u2="ú" k="23" /> + <hkern u1="V" u2="ù" k="23" /> + <hkern u1="V" u2="ø" k="37" /> + <hkern u1="V" u2="ö" k="37" /> + <hkern u1="V" u2="õ" k="37" /> + <hkern u1="V" u2="ô" k="37" /> + <hkern u1="V" u2="ó" k="37" /> + <hkern u1="V" u2="ò" k="37" /> + <hkern u1="V" u2="ñ" k="24" /> + <hkern u1="V" u2="ð" k="36" /> + <hkern u1="V" u2="ì" k="-10" /> + <hkern u1="V" u2="ë" k="37" /> + <hkern u1="V" u2="ê" k="37" /> + <hkern u1="V" u2="é" k="37" /> + <hkern u1="V" u2="è" k="37" /> + <hkern u1="V" u2="ç" k="37" /> + <hkern u1="V" u2="æ" k="25" /> + <hkern u1="V" u2="å" k="25" /> + <hkern u1="V" u2="ä" k="25" /> + <hkern u1="V" u2="ã" k="25" /> + <hkern u1="V" u2="â" k="25" /> + <hkern u1="V" u2="á" k="25" /> + <hkern u1="V" u2="à" k="25" /> + <hkern u1="V" u2="Ø" k="12" /> + <hkern u1="V" u2="Ö" k="12" /> + <hkern u1="V" u2="Õ" k="12" /> + <hkern u1="V" u2="Ô" k="12" /> + <hkern u1="V" u2="Ó" k="12" /> + <hkern u1="V" u2="Ò" k="12" /> + <hkern u1="V" u2="Ç" k="12" /> + <hkern u1="V" u2="Æ" k="80" /> + <hkern u1="V" u2="Å" k="36" /> + <hkern u1="V" u2="Ä" k="36" /> + <hkern u1="V" u2="Ã" k="36" /> + <hkern u1="V" u2="Â" k="36" /> + <hkern u1="V" u2="Á" k="36" /> + <hkern u1="V" u2="À" k="36" /> + <hkern u1="V" u2="»" k="23" /> + <hkern u1="V" u2="·" k="27" /> + <hkern u1="V" u2="®" k="11" /> + <hkern u1="V" u2="­" k="36" /> + <hkern u1="V" u2="«" k="43" /> + <hkern u1="V" u2="z" k="18" /> + <hkern u1="V" u2="y" k="8" /> + <hkern u1="V" u2="x" k="15" /> + <hkern u1="V" u2="w" k="8" /> + <hkern u1="V" u2="v" k="8" /> + <hkern u1="V" u2="u" k="23" /> + <hkern u1="V" u2="t" k="4" /> + <hkern u1="V" u2="s" k="35" /> + <hkern u1="V" u2="r" k="24" /> + <hkern u1="V" u2="q" k="36" /> + <hkern u1="V" u2="p" k="24" /> + <hkern u1="V" u2="o" k="37" /> + <hkern u1="V" u2="n" k="24" /> + <hkern u1="V" u2="m" k="24" /> + <hkern u1="V" u2="g" k="36" /> + <hkern u1="V" u2="f" k="4" /> + <hkern u1="V" u2="e" k="37" /> + <hkern u1="V" u2="d" k="36" /> + <hkern u1="V" u2="c" k="37" /> + <hkern u1="V" u2="a" k="25" /> + <hkern u1="V" u2="S" k="9" /> + <hkern u1="V" u2="Q" k="12" /> + <hkern u1="V" u2="O" k="12" /> + <hkern u1="V" u2="J" k="56" /> + <hkern u1="V" u2="G" k="12" /> + <hkern u1="V" u2="C" k="12" /> + <hkern u1="V" u2="A" k="36" /> + <hkern u1="V" u2=";" k="19" /> + <hkern u1="V" u2=":" k="19" /> + <hkern u1="V" u2="." k="83" /> + <hkern u1="V" u2="-" k="36" /> + <hkern u1="V" u2="," k="83" /> + <hkern u1="V" u2=" " k="25" /> + <hkern u1="W" g2="z.sc" k="7" /> + <hkern u1="W" g2="x.sc" k="7" /> + <hkern u1="W" u2="®" k="4" /> + <hkern u1="W" u2="«" k="40" /> + <hkern u1="W" u2="y" k="4" /> + <hkern u1="W" u2="x" k="16" /> + <hkern u1="W" u2="v" k="3" /> + <hkern u1="W" u2=" " k="18" /> + <hkern u1="X" g2="Gcommaaccent.alt01" k="17" /> + <hkern u1="X" g2="Gdotaccent.alt01" k="17" /> + <hkern u1="X" g2="Gbreve.alt01" k="17" /> + <hkern u1="X" g2="Gcircumflex.alt01" k="17" /> + <hkern u1="X" g2="G.alt01" k="17" /> + <hkern u1="X" g2="Ccedilla.alt01" k="17" /> + <hkern u1="X" g2="Cdotaccent.alt01" k="17" /> + <hkern u1="X" g2="Ccaron.alt01" k="17" /> + <hkern u1="X" g2="Ccircumflex.alt01" k="17" /> + <hkern u1="X" g2="Cacute.alt01" k="17" /> + <hkern u1="X" g2="C.alt01" k="17" /> + <hkern u1="X" g2="aogonek.alt01" k="10" /> + <hkern u1="X" g2="aringacute.alt01" k="10" /> + <hkern u1="X" g2="aring.alt01" k="10" /> + <hkern u1="X" g2="abreve.alt01" k="10" /> + <hkern u1="X" g2="amacron.alt01" k="10" /> + <hkern u1="X" g2="adieresis.alt01" k="10" /> + <hkern u1="X" g2="atilde.alt01" k="10" /> + <hkern u1="X" g2="acircumflex.alt01" k="10" /> + <hkern u1="X" g2="aacute.alt01" k="10" /> + <hkern u1="X" g2="agrave.alt01" k="10" /> + <hkern u1="X" g2="a.alt01" k="10" /> + <hkern u1="X" g2="ygrave.sc" k="14" /> + <hkern u1="X" g2="ydieresis.sc" k="14" /> + <hkern u1="X" g2="ycircumflex.sc" k="14" /> + <hkern u1="X" g2="yacute.sc" k="14" /> + <hkern u1="X" g2="wgrave.sc" k="12" /> + <hkern u1="X" g2="wdieresis.sc" k="12" /> + <hkern u1="X" g2="wcircumflex.sc" k="12" /> + <hkern u1="X" g2="wacute.sc" k="12" /> + <hkern u1="X" g2="tbar.sc" k="7" /> + <hkern u1="X" g2="tcommaaccent.sc" k="7" /> + <hkern u1="X" g2="tcaron.sc" k="7" /> + <hkern u1="X" g2="oslash.sc" k="4" /> + <hkern u1="X" g2="ohungarumlaut.sc" k="4" /> + <hkern u1="X" g2="obreve.sc" k="4" /> + <hkern u1="X" g2="omacron.sc" k="4" /> + <hkern u1="X" g2="odieresis.sc" k="4" /> + <hkern u1="X" g2="otilde.sc" k="4" /> + <hkern u1="X" g2="ocircumflex.sc" k="4" /> + <hkern u1="X" g2="oacute.sc" k="4" /> + <hkern u1="X" g2="ograve.sc" k="4" /> + <hkern u1="X" g2="gcommaaccent.sc" k="4" /> + <hkern u1="X" g2="gdotaccent.sc" k="4" /> + <hkern u1="X" g2="gbreve.sc" k="4" /> + <hkern u1="X" g2="gcircumflex.sc" k="4" /> + <hkern u1="X" g2="ccedilla.sc" k="4" /> + <hkern u1="X" g2="cdotaccent.sc" k="4" /> + <hkern u1="X" g2="ccaron.sc" k="4" /> + <hkern u1="X" g2="ccircumflex.sc" k="4" /> + <hkern u1="X" g2="cacute.sc" k="4" /> + <hkern u1="X" g2="y.sc" k="14" /> + <hkern u1="X" g2="w.sc" k="12" /> + <hkern u1="X" g2="v.sc" k="16" /> + <hkern u1="X" g2="t.sc" k="7" /> + <hkern u1="X" g2="q.sc" k="4" /> + <hkern u1="X" g2="o.sc" k="4" /> + <hkern u1="X" g2="g.sc" k="4" /> + <hkern u1="X" g2="c.sc" k="4" /> + <hkern u1="X" u2="∙" k="37" /> + <hkern u1="X" u2="›" k="10" /> + <hkern u1="X" u2="•" k="37" /> + <hkern u1="X" u2="—" k="46" /> + <hkern u1="X" u2="–" k="46" /> + <hkern u1="X" u2="ẅ" k="27" /> + <hkern u1="X" u2="ẃ" k="27" /> + <hkern u1="X" u2="ẁ" k="27" /> + <hkern u1="X" u2="ŵ" k="27" /> + <hkern u1="X" u2="œ" k="14" /> + <hkern u1="X" u2="Œ" k="17" /> + <hkern u1="X" u2="ő" k="14" /> + <hkern u1="X" u2="Ő" k="17" /> + <hkern u1="X" u2="ŏ" k="14" /> + <hkern u1="X" u2="Ŏ" k="17" /> + <hkern u1="X" u2="ō" k="14" /> + <hkern u1="X" u2="Ō" k="17" /> + <hkern u1="X" u2="Ģ" k="17" /> + <hkern u1="X" u2="Ġ" k="17" /> + <hkern u1="X" u2="Ğ" k="17" /> + <hkern u1="X" u2="Ĝ" k="17" /> + <hkern u1="X" u2="ě" k="14" /> + <hkern u1="X" u2="ę" k="14" /> + <hkern u1="X" u2="ė" k="14" /> + <hkern u1="X" u2="ĕ" k="14" /> + <hkern u1="X" u2="ē" k="14" /> + <hkern u1="X" u2="đ" k="10" /> + <hkern u1="X" u2="ď" k="10" /> + <hkern u1="X" u2="č" k="14" /> + <hkern u1="X" u2="Č" k="17" /> + <hkern u1="X" u2="ċ" k="14" /> + <hkern u1="X" u2="Ċ" k="17" /> + <hkern u1="X" u2="ĉ" k="14" /> + <hkern u1="X" u2="Ĉ" k="17" /> + <hkern u1="X" u2="ć" k="14" /> + <hkern u1="X" u2="Ć" k="17" /> + <hkern u1="X" u2="ö" k="14" /> + <hkern u1="X" u2="õ" k="14" /> + <hkern u1="X" u2="ô" k="14" /> + <hkern u1="X" u2="ó" k="14" /> + <hkern u1="X" u2="ò" k="14" /> + <hkern u1="X" u2="ð" k="10" /> + <hkern u1="X" u2="ë" k="14" /> + <hkern u1="X" u2="ê" k="14" /> + <hkern u1="X" u2="é" k="14" /> + <hkern u1="X" u2="è" k="14" /> + <hkern u1="X" u2="ç" k="14" /> + <hkern u1="X" u2="Ö" k="17" /> + <hkern u1="X" u2="Õ" k="17" /> + <hkern u1="X" u2="Ô" k="17" /> + <hkern u1="X" u2="Ó" k="17" /> + <hkern u1="X" u2="Ò" k="17" /> + <hkern u1="X" u2="Ç" k="17" /> + <hkern u1="X" u2="»" k="10" /> + <hkern u1="X" u2="·" k="37" /> + <hkern u1="X" u2="®" k="20" /> + <hkern u1="X" u2="­" k="46" /> + <hkern u1="X" u2="«" k="46" /> + <hkern u1="X" u2="y" k="26" /> + <hkern u1="X" u2="w" k="27" /> + <hkern u1="X" u2="v" k="30" /> + <hkern u1="X" u2="q" k="10" /> + <hkern u1="X" u2="o" k="14" /> + <hkern u1="X" u2="e" k="14" /> + <hkern u1="X" u2="d" k="10" /> + <hkern u1="X" u2="c" k="14" /> + <hkern u1="X" u2="Q" k="17" /> + <hkern u1="X" u2="O" k="17" /> + <hkern u1="X" u2="G" k="17" /> + <hkern u1="X" u2="C" k="17" /> + <hkern u1="X" u2="-" k="46" /> + <hkern u1="X" u2=" " k="3" /> + <hkern u1="Y" g2="z.sc" k="10" /> + <hkern u1="Y" g2="x.sc" k="18" /> + <hkern u1="Y" g2="v.sc" k="9" /> + <hkern u1="Y" u2="®" k="14" /> + <hkern u1="Y" u2="«" k="60" /> + <hkern u1="Y" u2="y" k="20" /> + <hkern u1="Y" u2="x" k="36" /> + <hkern u1="Y" u2="v" k="21" /> + <hkern u1="Y" u2=" " k="15" /> + <hkern u1="Z" u2="y" k="18" /> + <hkern u1="Z" u2="v" k="6" /> + <hkern u1="a" u2="y" k="4" /> + <hkern u1="a" u2="v" k="4" /> + <hkern u1="b" u2="y" k="4" /> + <hkern u1="b" u2="x" k="9" /> + <hkern u1="b" u2="v" k="4" /> + <hkern u1="c" u2="y" k="3" /> + <hkern u1="c" u2="x" k="3" /> + <hkern u1="c" u2="v" k="3" /> + <hkern u1="d" g2="napostrophe" k="-32" /> + <hkern u1="d" u2="ï" k="-13" /> + <hkern u1="e" u2="y" k="6" /> + <hkern u1="e" u2="x" k="4" /> + <hkern u1="e" u2="v" k="4" /> + <hkern u1="f" u2="…" k="39" /> + <hkern u1="f" u2="”" k="-24" /> + <hkern u1="f" u2="“" k="-24" /> + <hkern u1="f" u2="’" k="-24" /> + <hkern u1="f" u2="‘" k="-24" /> + <hkern u1="f" u2="—" k="4" /> + <hkern u1="f" u2="–" k="4" /> + <hkern u1="f" u2="ǿ" k="6" /> + <hkern u1="f" u2="ǽ" k="6" /> + <hkern u1="f" u2="ǻ" k="6" /> + <hkern u1="f" u2="œ" k="6" /> + <hkern u1="f" u2="ő" k="6" /> + <hkern u1="f" u2="ŏ" k="6" /> + <hkern u1="f" u2="ō" k="6" /> + <hkern u1="f" u2="ě" k="6" /> + <hkern u1="f" u2="ę" k="6" /> + <hkern u1="f" u2="ė" k="6" /> + <hkern u1="f" u2="ĕ" k="6" /> + <hkern u1="f" u2="ē" k="6" /> + <hkern u1="f" u2="č" k="6" /> + <hkern u1="f" u2="ċ" k="6" /> + <hkern u1="f" u2="ĉ" k="6" /> + <hkern u1="f" u2="ć" k="6" /> + <hkern u1="f" u2="ą" k="6" /> + <hkern u1="f" u2="ă" k="6" /> + <hkern u1="f" u2="ā" k="6" /> + <hkern u1="f" u2="ø" k="6" /> + <hkern u1="f" u2="ö" k="6" /> + <hkern u1="f" u2="õ" k="6" /> + <hkern u1="f" u2="ô" k="6" /> + <hkern u1="f" u2="ó" k="6" /> + <hkern u1="f" u2="ò" k="6" /> + <hkern u1="f" u2="ë" k="6" /> + <hkern u1="f" u2="ê" k="6" /> + <hkern u1="f" u2="é" k="6" /> + <hkern u1="f" u2="è" k="6" /> + <hkern u1="f" u2="ç" k="6" /> + <hkern u1="f" u2="æ" k="6" /> + <hkern u1="f" u2="å" k="6" /> + <hkern u1="f" u2="ä" k="6" /> + <hkern u1="f" u2="ã" k="6" /> + <hkern u1="f" u2="â" k="6" /> + <hkern u1="f" u2="á" k="6" /> + <hkern u1="f" u2="à" k="6" /> + <hkern u1="f" u2="­" k="4" /> + <hkern u1="f" u2="o" k="6" /> + <hkern u1="f" u2="e" k="6" /> + <hkern u1="f" u2="c" k="6" /> + <hkern u1="f" u2="a" k="6" /> + <hkern u1="f" u2="?" k="-24" /> + <hkern u1="f" u2="." k="39" /> + <hkern u1="f" u2="-" k="4" /> + <hkern u1="f" u2="," k="39" /> + <hkern u1="f" u2="'" k="-24" /> + <hkern u1="f" u2=""" k="-24" /> + <hkern u1="h" u2="y" k="7" /> + <hkern u1="h" u2="v" k="8" /> + <hkern u1="k" u2="y" k="18" /> + <hkern u1="l" u2="®" k="23" /> + <hkern u1="l" u2="«" k="10" /> + <hkern u1="l" u2="y" k="15" /> + <hkern u1="l" u2="v" k="19" /> + <hkern u1="m" u2="y" k="7" /> + <hkern u1="m" u2="v" k="8" /> + <hkern u1="n" u2="y" k="7" /> + <hkern u1="n" u2="v" k="8" /> + <hkern u1="o" u2="y" k="6" /> + <hkern u1="o" u2="x" k="10" /> + <hkern u1="o" u2="v" k="5" /> + <hkern u1="p" u2="y" k="4" /> + <hkern u1="p" u2="x" k="9" /> + <hkern u1="p" u2="v" k="4" /> + <hkern u1="r" u2="?" k="-20" /> + <hkern u1="s" u2="v" k="3" /> + <hkern u1="v" g2="aogonek.alt01" k="4" /> + <hkern u1="v" g2="aringacute.alt01" k="4" /> + <hkern u1="v" g2="aring.alt01" k="4" /> + <hkern u1="v" g2="abreve.alt01" k="4" /> + <hkern u1="v" g2="amacron.alt01" k="4" /> + <hkern u1="v" g2="adieresis.alt01" k="4" /> + <hkern u1="v" g2="atilde.alt01" k="4" /> + <hkern u1="v" g2="acircumflex.alt01" k="4" /> + <hkern u1="v" g2="aacute.alt01" k="4" /> + <hkern u1="v" g2="agrave.alt01" k="4" /> + <hkern u1="v" g2="a.alt01" k="4" /> + <hkern u1="v" u2="…" k="40" /> + <hkern u1="v" u2="”" k="-3" /> + <hkern u1="v" u2="“" k="-3" /> + <hkern u1="v" u2="’" k="-3" /> + <hkern u1="v" u2="‘" k="-3" /> + <hkern u1="v" u2="—" k="16" /> + <hkern u1="v" u2="–" k="16" /> + <hkern u1="v" u2="ș" k="5" /> + <hkern u1="v" u2="ǿ" k="6" /> + <hkern u1="v" u2="š" k="5" /> + <hkern u1="v" u2="ş" k="5" /> + <hkern u1="v" u2="ŝ" k="5" /> + <hkern u1="v" u2="ś" k="5" /> + <hkern u1="v" u2="œ" k="6" /> + <hkern u1="v" u2="ő" k="6" /> + <hkern u1="v" u2="ŏ" k="6" /> + <hkern u1="v" u2="ō" k="6" /> + <hkern u1="v" u2="ģ" k="4" /> + <hkern u1="v" u2="ġ" k="4" /> + <hkern u1="v" u2="ğ" k="4" /> + <hkern u1="v" u2="ĝ" k="4" /> + <hkern u1="v" u2="ě" k="6" /> + <hkern u1="v" u2="ę" k="6" /> + <hkern u1="v" u2="ė" k="6" /> + <hkern u1="v" u2="ĕ" k="6" /> + <hkern u1="v" u2="ē" k="6" /> + <hkern u1="v" u2="đ" k="4" /> + <hkern u1="v" u2="ď" k="4" /> + <hkern u1="v" u2="č" k="6" /> + <hkern u1="v" u2="ċ" k="6" /> + <hkern u1="v" u2="ĉ" k="6" /> + <hkern u1="v" u2="ć" k="6" /> + <hkern u1="v" u2="ø" k="6" /> + <hkern u1="v" u2="ö" k="6" /> + <hkern u1="v" u2="õ" k="6" /> + <hkern u1="v" u2="ô" k="6" /> + <hkern u1="v" u2="ó" k="6" /> + <hkern u1="v" u2="ò" k="6" /> + <hkern u1="v" u2="ð" k="4" /> + <hkern u1="v" u2="ë" k="6" /> + <hkern u1="v" u2="ê" k="6" /> + <hkern u1="v" u2="é" k="6" /> + <hkern u1="v" u2="è" k="6" /> + <hkern u1="v" u2="ç" k="6" /> + <hkern u1="v" u2="­" k="16" /> + <hkern u1="v" u2="«" k="7" /> + <hkern u1="v" u2="s" k="5" /> + <hkern u1="v" u2="q" k="4" /> + <hkern u1="v" u2="o" k="6" /> + <hkern u1="v" u2="g" k="4" /> + <hkern u1="v" u2="e" k="6" /> + <hkern u1="v" u2="d" k="4" /> + <hkern u1="v" u2="c" k="6" /> + <hkern u1="v" u2="." k="40" /> + <hkern u1="v" u2="-" k="16" /> + <hkern u1="v" u2="," k="40" /> + <hkern u1="v" u2="'" k="-3" /> + <hkern u1="v" u2=""" k="-3" /> + <hkern u1="w" u2="«" k="7" /> + <hkern u1="x" g2="aogonek.alt01" k="9" /> + <hkern u1="x" g2="aringacute.alt01" k="9" /> + <hkern u1="x" g2="aring.alt01" k="9" /> + <hkern u1="x" g2="abreve.alt01" k="9" /> + <hkern u1="x" g2="amacron.alt01" k="9" /> + <hkern u1="x" g2="adieresis.alt01" k="9" /> + <hkern u1="x" g2="atilde.alt01" k="9" /> + <hkern u1="x" g2="acircumflex.alt01" k="9" /> + <hkern u1="x" g2="aacute.alt01" k="9" /> + <hkern u1="x" g2="agrave.alt01" k="9" /> + <hkern u1="x" g2="a.alt01" k="9" /> + <hkern u1="x" u2="—" k="40" /> + <hkern u1="x" u2="–" k="40" /> + <hkern u1="x" u2="ǿ" k="7" /> + <hkern u1="x" u2="œ" k="10" /> + <hkern u1="x" u2="ő" k="10" /> + <hkern u1="x" u2="ŏ" k="10" /> + <hkern u1="x" u2="ō" k="10" /> + <hkern u1="x" u2="ģ" k="9" /> + <hkern u1="x" u2="ġ" k="9" /> + <hkern u1="x" u2="ğ" k="9" /> + <hkern u1="x" u2="ĝ" k="9" /> + <hkern u1="x" u2="ě" k="10" /> + <hkern u1="x" u2="ę" k="10" /> + <hkern u1="x" u2="ė" k="10" /> + <hkern u1="x" u2="ĕ" k="10" /> + <hkern u1="x" u2="ē" k="10" /> + <hkern u1="x" u2="đ" k="9" /> + <hkern u1="x" u2="ď" k="9" /> + <hkern u1="x" u2="č" k="10" /> + <hkern u1="x" u2="ċ" k="10" /> + <hkern u1="x" u2="ĉ" k="10" /> + <hkern u1="x" u2="ć" k="10" /> + <hkern u1="x" u2="ø" k="7" /> + <hkern u1="x" u2="ö" k="10" /> + <hkern u1="x" u2="õ" k="10" /> + <hkern u1="x" u2="ô" k="10" /> + <hkern u1="x" u2="ó" k="10" /> + <hkern u1="x" u2="ò" k="10" /> + <hkern u1="x" u2="ð" k="9" /> + <hkern u1="x" u2="ë" k="10" /> + <hkern u1="x" u2="ê" k="10" /> + <hkern u1="x" u2="é" k="10" /> + <hkern u1="x" u2="è" k="10" /> + <hkern u1="x" u2="ç" k="10" /> + <hkern u1="x" u2="­" k="40" /> + <hkern u1="x" u2="«" k="16" /> + <hkern u1="x" u2="q" k="9" /> + <hkern u1="x" u2="o" k="10" /> + <hkern u1="x" u2="g" k="9" /> + <hkern u1="x" u2="e" k="10" /> + <hkern u1="x" u2="d" k="9" /> + <hkern u1="x" u2="c" k="10" /> + <hkern u1="x" u2="-" k="40" /> + <hkern u1="y" g2="aogonek.alt01" k="8" /> + <hkern u1="y" g2="aringacute.alt01" k="8" /> + <hkern u1="y" g2="aring.alt01" k="8" /> + <hkern u1="y" g2="abreve.alt01" k="8" /> + <hkern u1="y" g2="amacron.alt01" k="8" /> + <hkern u1="y" g2="adieresis.alt01" k="8" /> + <hkern u1="y" g2="atilde.alt01" k="8" /> + <hkern u1="y" g2="acircumflex.alt01" k="8" /> + <hkern u1="y" g2="aacute.alt01" k="8" /> + <hkern u1="y" g2="agrave.alt01" k="8" /> + <hkern u1="y" g2="a.alt01" k="8" /> + <hkern u1="y" u2="…" k="40" /> + <hkern u1="y" u2="“" k="-3" /> + <hkern u1="y" u2="‘" k="-3" /> + <hkern u1="y" u2="—" k="17" /> + <hkern u1="y" u2="–" k="17" /> + <hkern u1="y" u2="ș" k="4" /> + <hkern u1="y" u2="ǿ" k="12" /> + <hkern u1="y" u2="ǽ" k="6" /> + <hkern u1="y" u2="ǻ" k="6" /> + <hkern u1="y" u2="š" k="4" /> + <hkern u1="y" u2="ş" k="4" /> + <hkern u1="y" u2="ŝ" k="4" /> + <hkern u1="y" u2="ś" k="4" /> + <hkern u1="y" u2="œ" k="12" /> + <hkern u1="y" u2="ő" k="12" /> + <hkern u1="y" u2="ŏ" k="12" /> + <hkern u1="y" u2="ō" k="12" /> + <hkern u1="y" u2="ģ" k="9" /> + <hkern u1="y" u2="ġ" k="9" /> + <hkern u1="y" u2="ğ" k="9" /> + <hkern u1="y" u2="ĝ" k="9" /> + <hkern u1="y" u2="ě" k="12" /> + <hkern u1="y" u2="ę" k="12" /> + <hkern u1="y" u2="ė" k="12" /> + <hkern u1="y" u2="ĕ" k="12" /> + <hkern u1="y" u2="ē" k="12" /> + <hkern u1="y" u2="đ" k="8" /> + <hkern u1="y" u2="ď" k="8" /> + <hkern u1="y" u2="č" k="12" /> + <hkern u1="y" u2="ċ" k="12" /> + <hkern u1="y" u2="ĉ" k="12" /> + <hkern u1="y" u2="ć" k="12" /> + <hkern u1="y" u2="ą" k="6" /> + <hkern u1="y" u2="ă" k="6" /> + <hkern u1="y" u2="ā" k="6" /> + <hkern u1="y" u2="ø" k="12" /> + <hkern u1="y" u2="ö" k="12" /> + <hkern u1="y" u2="õ" k="12" /> + <hkern u1="y" u2="ô" k="12" /> + <hkern u1="y" u2="ó" k="12" /> + <hkern u1="y" u2="ò" k="12" /> + <hkern u1="y" u2="ð" k="8" /> + <hkern u1="y" u2="ë" k="12" /> + <hkern u1="y" u2="ê" k="12" /> + <hkern u1="y" u2="é" k="12" /> + <hkern u1="y" u2="è" k="12" /> + <hkern u1="y" u2="ç" k="12" /> + <hkern u1="y" u2="æ" k="6" /> + <hkern u1="y" u2="å" k="6" /> + <hkern u1="y" u2="ä" k="6" /> + <hkern u1="y" u2="ã" k="6" /> + <hkern u1="y" u2="â" k="6" /> + <hkern u1="y" u2="á" k="6" /> + <hkern u1="y" u2="à" k="6" /> + <hkern u1="y" u2="­" k="17" /> + <hkern u1="y" u2="«" k="8" /> + <hkern u1="y" u2="s" k="4" /> + <hkern u1="y" u2="q" k="8" /> + <hkern u1="y" u2="o" k="12" /> + <hkern u1="y" u2="g" k="9" /> + <hkern u1="y" u2="e" k="12" /> + <hkern u1="y" u2="d" k="8" /> + <hkern u1="y" u2="c" k="12" /> + <hkern u1="y" u2="a" k="6" /> + <hkern u1="y" u2="." k="40" /> + <hkern u1="y" u2="-" k="17" /> + <hkern u1="y" u2="," k="40" /> + <hkern u1="y" u2="'" k="-3" /> + <hkern u1="y" u2=""" k="-3" /> + <hkern u1="¡" u2="Ỳ" k="30" /> + <hkern u1="¡" u2="Ẅ" k="14" /> + <hkern u1="¡" u2="Ẃ" k="14" /> + <hkern u1="¡" u2="Ẁ" k="14" /> + <hkern u1="¡" u2="ȷ" k="-16" /> + <hkern u1="¡" u2="Ț" k="23" /> + <hkern u1="¡" u2="Ÿ" k="30" /> + <hkern u1="¡" u2="Ŷ" k="30" /> + <hkern u1="¡" u2="Ŵ" k="14" /> + <hkern u1="¡" u2="Ŧ" k="23" /> + <hkern u1="¡" u2="Ť" k="23" /> + <hkern u1="¡" u2="Ţ" k="23" /> + <hkern u1="¡" u2="ĵ" k="-16" /> + <hkern u1="¡" u2="Ý" k="30" /> + <hkern u1="¡" u2="j" k="-16" /> + <hkern u1="¡" u2="Y" k="30" /> + <hkern u1="¡" u2="W" k="14" /> + <hkern u1="¡" u2="V" k="19" /> + <hkern u1="¡" u2="T" k="23" /> + <hkern u1="«" u2="X" k="10" /> + <hkern u1="«" u2="V" k="23" /> + <hkern u1="­" u2="Ŧ" k="47" /> + <hkern u1="­" u2="y" k="17" /> + <hkern u1="­" u2="x" k="40" /> + <hkern u1="­" u2="v" k="16" /> + <hkern u1="­" u2="X" k="46" /> + <hkern u1="­" u2="V" k="36" /> + <hkern u1="·" u2="X" k="37" /> + <hkern u1="·" u2="V" k="27" /> + <hkern u1="»" u2="Ỳ" k="60" /> + <hkern u1="»" u2="ẅ" k="7" /> + <hkern u1="»" u2="Ẅ" k="40" /> + <hkern u1="»" u2="ẃ" k="7" /> + <hkern u1="»" u2="Ẃ" k="40" /> + <hkern u1="»" u2="ẁ" k="7" /> + <hkern u1="»" u2="Ẁ" k="40" /> + <hkern u1="»" u2="Ț" k="43" /> + <hkern u1="»" u2="Ǻ" k="13" /> + <hkern u1="»" u2="Ÿ" k="60" /> + <hkern u1="»" u2="Ŷ" k="60" /> + <hkern u1="»" u2="ŵ" k="7" /> + <hkern u1="»" u2="Ŵ" k="40" /> + <hkern u1="»" u2="Ŧ" k="43" /> + <hkern u1="»" u2="Ť" k="43" /> + <hkern u1="»" u2="Ţ" k="43" /> + <hkern u1="»" u2="Ĵ" k="16" /> + <hkern u1="»" u2="Ą" k="13" /> + <hkern u1="»" u2="Ă" k="13" /> + <hkern u1="»" u2="Ā" k="13" /> + <hkern u1="»" u2="Ý" k="60" /> + <hkern u1="»" u2="Å" k="13" /> + <hkern u1="»" u2="Ä" k="13" /> + <hkern u1="»" u2="Ã" k="13" /> + <hkern u1="»" u2="Â" k="13" /> + <hkern u1="»" u2="Á" k="13" /> + <hkern u1="»" u2="À" k="13" /> + <hkern u1="»" u2="y" k="8" /> + <hkern u1="»" u2="x" k="16" /> + <hkern u1="»" u2="w" k="7" /> + <hkern u1="»" u2="v" k="7" /> + <hkern u1="»" u2="Y" k="60" /> + <hkern u1="»" u2="X" k="46" /> + <hkern u1="»" u2="W" k="40" /> + <hkern u1="»" u2="V" k="43" /> + <hkern u1="»" u2="T" k="43" /> + <hkern u1="»" u2="J" k="16" /> + <hkern u1="»" u2="A" k="13" /> + <hkern u1="¿" u2="Ỳ" k="62" /> + <hkern u1="¿" u2="Ẅ" k="50" /> + <hkern u1="¿" u2="Ẃ" k="50" /> + <hkern u1="¿" u2="Ẁ" k="50" /> + <hkern u1="¿" u2="ȷ" k="-60" /> + <hkern u1="¿" u2="Ț" k="56" /> + <hkern u1="¿" u2="Ÿ" k="62" /> + <hkern u1="¿" u2="Ŷ" k="62" /> + <hkern u1="¿" u2="Ŵ" k="50" /> + <hkern u1="¿" u2="Ŧ" k="56" /> + <hkern u1="¿" u2="Ť" k="56" /> + <hkern u1="¿" u2="Ţ" k="56" /> + <hkern u1="¿" u2="ĵ" k="-60" /> + <hkern u1="¿" u2="Ý" k="62" /> + <hkern u1="¿" u2="j" k="-60" /> + <hkern u1="¿" u2="Y" k="62" /> + <hkern u1="¿" u2="W" k="50" /> + <hkern u1="¿" u2="V" k="53" /> + <hkern u1="¿" u2="T" k="56" /> + <hkern u1="À" g2="v.sc" k="13" /> + <hkern u1="À" u2="®" k="40" /> + <hkern u1="À" u2="«" k="13" /> + <hkern u1="À" u2="y" k="20" /> + <hkern u1="À" u2="v" k="24" /> + <hkern u1="À" u2="V" k="36" /> + <hkern u1="À" u2="?" k="40" /> + <hkern u1="Á" g2="v.sc" k="13" /> + <hkern u1="Á" u2="®" k="40" /> + <hkern u1="Á" u2="«" k="13" /> + <hkern u1="Á" u2="y" k="20" /> + <hkern u1="Á" u2="v" k="24" /> + <hkern u1="Á" u2="V" k="36" /> + <hkern u1="Á" u2="?" k="40" /> + <hkern u1="Â" g2="v.sc" k="13" /> + <hkern u1="Â" u2="®" k="40" /> + <hkern u1="Â" u2="«" k="13" /> + <hkern u1="Â" u2="y" k="20" /> + <hkern u1="Â" u2="v" k="24" /> + <hkern u1="Â" u2="V" k="36" /> + <hkern u1="Â" u2="?" k="40" /> + <hkern u1="Ã" g2="v.sc" k="13" /> + <hkern u1="Ã" u2="®" k="40" /> + <hkern u1="Ã" u2="«" k="13" /> + <hkern u1="Ã" u2="y" k="20" /> + <hkern u1="Ã" u2="v" k="24" /> + <hkern u1="Ã" u2="V" k="36" /> + <hkern u1="Ã" u2="?" k="40" /> + <hkern u1="Ä" g2="v.sc" k="13" /> + <hkern u1="Ä" u2="®" k="40" /> + <hkern u1="Ä" u2="«" k="13" /> + <hkern u1="Ä" u2="y" k="20" /> + <hkern u1="Ä" u2="v" k="24" /> + <hkern u1="Ä" u2="V" k="36" /> + <hkern u1="Ä" u2="?" k="40" /> + <hkern u1="Å" g2="v.sc" k="13" /> + <hkern u1="Å" u2="®" k="40" /> + <hkern u1="Å" u2="«" k="13" /> + <hkern u1="Å" u2="y" k="20" /> + <hkern u1="Å" u2="v" k="24" /> + <hkern u1="Å" u2="V" k="36" /> + <hkern u1="Å" u2="?" k="40" /> + <hkern u1="Ç" u2="y" k="12" /> + <hkern u1="Ì" u2="ï" k="-13" /> + <hkern u1="Í" u2="ï" k="-13" /> + <hkern u1="Î" u2="ï" k="-13" /> + <hkern u1="Ï" u2="ï" k="-13" /> + <hkern u1="Ð" u2="X" k="18" /> + <hkern u1="Ð" u2="V" k="14" /> + <hkern u1="Ñ" u2="ï" k="-13" /> + <hkern u1="Ò" u2="X" k="16" /> + <hkern u1="Ò" u2="V" k="12" /> + <hkern u1="Ó" u2="X" k="16" /> + <hkern u1="Ó" u2="V" k="12" /> + <hkern u1="Ô" u2="X" k="16" /> + <hkern u1="Ô" u2="V" k="12" /> + <hkern u1="Õ" u2="X" k="16" /> + <hkern u1="Õ" u2="V" k="12" /> + <hkern u1="Ö" u2="X" k="16" /> + <hkern u1="Ö" u2="V" k="12" /> + <hkern u1="Ý" g2="z.sc" k="10" /> + <hkern u1="Ý" g2="x.sc" k="18" /> + <hkern u1="Ý" g2="v.sc" k="9" /> + <hkern u1="Ý" u2="®" k="14" /> + <hkern u1="Ý" u2="«" k="60" /> + <hkern u1="Ý" u2="y" k="20" /> + <hkern u1="Ý" u2="x" k="36" /> + <hkern u1="Ý" u2="v" k="21" /> + <hkern u1="Ý" u2=" " k="15" /> + <hkern u1="Þ" g2="aeacute.sc" k="49" /> + <hkern u1="Þ" g2="ae.sc" k="49" /> + <hkern u1="Þ" g2="aogonek.sc" k="20" /> + <hkern u1="Þ" g2="aringacute.sc" k="20" /> + <hkern u1="Þ" g2="aring.sc" k="20" /> + <hkern u1="Þ" g2="abreve.sc" k="20" /> + <hkern u1="Þ" g2="amacron.sc" k="20" /> + <hkern u1="Þ" g2="adieresis.sc" k="20" /> + <hkern u1="Þ" g2="atilde.sc" k="20" /> + <hkern u1="Þ" g2="acircumflex.sc" k="20" /> + <hkern u1="Þ" g2="aacute.sc" k="20" /> + <hkern u1="Þ" g2="agrave.sc" k="20" /> + <hkern u1="Þ" g2="a.sc" k="20" /> + <hkern u1="Þ" u2="…" k="60" /> + <hkern u1="Þ" u2="Ỳ" k="21" /> + <hkern u1="Þ" u2="Ẅ" k="6" /> + <hkern u1="Þ" u2="Ẃ" k="6" /> + <hkern u1="Þ" u2="Ẁ" k="6" /> + <hkern u1="Þ" u2="Ǽ" k="48" /> + <hkern u1="Þ" u2="Ǻ" k="18" /> + <hkern u1="Þ" u2="Ÿ" k="21" /> + <hkern u1="Þ" u2="Ŷ" k="21" /> + <hkern u1="Þ" u2="Ŵ" k="6" /> + <hkern u1="Þ" u2="Ą" k="18" /> + <hkern u1="Þ" u2="Ă" k="18" /> + <hkern u1="Þ" u2="Ā" k="18" /> + <hkern u1="Þ" u2="Ý" k="21" /> + <hkern u1="Þ" u2="Æ" k="48" /> + <hkern u1="Þ" u2="Å" k="18" /> + <hkern u1="Þ" u2="Ä" k="18" /> + <hkern u1="Þ" u2="Ã" k="18" /> + <hkern u1="Þ" u2="Â" k="18" /> + <hkern u1="Þ" u2="Á" k="18" /> + <hkern u1="Þ" u2="À" k="18" /> + <hkern u1="Þ" u2="Y" k="21" /> + <hkern u1="Þ" u2="X" k="20" /> + <hkern u1="Þ" u2="W" k="6" /> + <hkern u1="Þ" u2="V" k="14" /> + <hkern u1="Þ" u2="A" k="18" /> + <hkern u1="Þ" u2="." k="60" /> + <hkern u1="Þ" u2="," k="60" /> + <hkern u1="à" u2="y" k="4" /> + <hkern u1="à" u2="v" k="4" /> + <hkern u1="á" u2="y" k="4" /> + <hkern u1="á" u2="v" k="4" /> + <hkern u1="â" u2="y" k="4" /> + <hkern u1="â" u2="v" k="4" /> + <hkern u1="ã" u2="y" k="4" /> + <hkern u1="ã" u2="v" k="4" /> + <hkern u1="ä" u2="y" k="4" /> + <hkern u1="ä" u2="v" k="4" /> + <hkern u1="å" u2="y" k="4" /> + <hkern u1="å" u2="v" k="4" /> + <hkern u1="æ" u2="y" k="6" /> + <hkern u1="æ" u2="x" k="4" /> + <hkern u1="æ" u2="v" k="4" /> + <hkern u1="ç" u2="y" k="3" /> + <hkern u1="ç" u2="x" k="3" /> + <hkern u1="ç" u2="v" k="3" /> + <hkern u1="è" u2="y" k="6" /> + <hkern u1="è" u2="x" k="4" /> + <hkern u1="è" u2="v" k="4" /> + <hkern u1="é" u2="y" k="6" /> + <hkern u1="é" u2="x" k="4" /> + <hkern u1="é" u2="v" k="4" /> + <hkern u1="ê" u2="y" k="6" /> + <hkern u1="ê" u2="x" k="4" /> + <hkern u1="ê" u2="v" k="4" /> + <hkern u1="ë" u2="y" k="6" /> + <hkern u1="ë" u2="x" k="4" /> + <hkern u1="ë" u2="v" k="4" /> + <hkern u1="ï" u2="”" k="-56" /> + <hkern u1="ï" u2="“" k="-56" /> + <hkern u1="ï" u2="’" k="-56" /> + <hkern u1="ï" u2="‘" k="-56" /> + <hkern u1="ï" u2="ķ" k="-13" /> + <hkern u1="ï" u2="ħ" k="-13" /> + <hkern u1="ï" u2="ĥ" k="-13" /> + <hkern u1="ï" u2="þ" k="-13" /> + <hkern u1="ï" u2="k" k="-13" /> + <hkern u1="ï" u2="h" k="-13" /> + <hkern u1="ï" u2="b" k="-13" /> + <hkern u1="ï" u2="'" k="-56" /> + <hkern u1="ï" u2=""" k="-56" /> + <hkern u1="ñ" u2="y" k="7" /> + <hkern u1="ñ" u2="v" k="8" /> + <hkern u1="ò" u2="y" k="6" /> + <hkern u1="ò" u2="x" k="10" /> + <hkern u1="ò" u2="v" k="5" /> + <hkern u1="ó" u2="y" k="6" /> + <hkern u1="ó" u2="x" k="10" /> + <hkern u1="ó" u2="v" k="5" /> + <hkern u1="ô" u2="y" k="6" /> + <hkern u1="ô" u2="x" k="10" /> + <hkern u1="ô" u2="v" k="5" /> + <hkern u1="õ" u2="y" k="6" /> + <hkern u1="õ" u2="x" k="10" /> + <hkern u1="õ" u2="v" k="5" /> + <hkern u1="ö" u2="y" k="6" /> + <hkern u1="ö" u2="x" k="10" /> + <hkern u1="ö" u2="v" k="5" /> + <hkern u1="ø" u2="x" k="7" /> + <hkern u1="þ" u2="y" k="4" /> + <hkern u1="þ" u2="x" k="9" /> + <hkern u1="þ" u2="v" k="4" /> + <hkern u1="Ā" g2="v.sc" k="13" /> + <hkern u1="Ā" u2="®" k="40" /> + <hkern u1="Ā" u2="«" k="13" /> + <hkern u1="Ā" u2="y" k="20" /> + <hkern u1="Ā" u2="v" k="24" /> + <hkern u1="Ā" u2="V" k="36" /> + <hkern u1="Ā" u2="?" k="40" /> + <hkern u1="ā" u2="y" k="4" /> + <hkern u1="ā" u2="v" k="4" /> + <hkern u1="Ă" g2="v.sc" k="13" /> + <hkern u1="Ă" u2="®" k="40" /> + <hkern u1="Ă" u2="«" k="13" /> + <hkern u1="Ă" u2="y" k="20" /> + <hkern u1="Ă" u2="v" k="24" /> + <hkern u1="Ă" u2="V" k="36" /> + <hkern u1="Ă" u2="?" k="40" /> + <hkern u1="ă" u2="y" k="4" /> + <hkern u1="ă" u2="v" k="4" /> + <hkern u1="Ą" g2="v.sc" k="13" /> + <hkern u1="Ą" u2="®" k="40" /> + <hkern u1="Ą" u2="«" k="13" /> + <hkern u1="Ą" u2="y" k="20" /> + <hkern u1="Ą" u2="v" k="24" /> + <hkern u1="Ą" u2="V" k="36" /> + <hkern u1="Ą" u2="?" k="40" /> + <hkern u1="ą" u2="y" k="4" /> + <hkern u1="ą" u2="v" k="4" /> + <hkern u1="Ć" u2="y" k="12" /> + <hkern u1="ć" u2="y" k="3" /> + <hkern u1="ć" u2="x" k="3" /> + <hkern u1="ć" u2="v" k="3" /> + <hkern u1="Ĉ" u2="y" k="12" /> + <hkern u1="ĉ" u2="y" k="3" /> + <hkern u1="ĉ" u2="x" k="3" /> + <hkern u1="ĉ" u2="v" k="3" /> + <hkern u1="Ċ" u2="y" k="12" /> + <hkern u1="ċ" u2="y" k="3" /> + <hkern u1="ċ" u2="x" k="3" /> + <hkern u1="ċ" u2="v" k="3" /> + <hkern u1="Č" u2="y" k="12" /> + <hkern u1="č" u2="y" k="3" /> + <hkern u1="č" u2="x" k="3" /> + <hkern u1="č" u2="v" k="3" /> + <hkern u1="Ď" u2="X" k="18" /> + <hkern u1="Ď" u2="V" k="14" /> + <hkern u1="ď" u2="y" k="-16" /> + <hkern u1="ď" u2="x" k="-16" /> + <hkern u1="ď" u2="v" k="-19" /> + <hkern u1="ď" u2="?" k="-75" /> + <hkern u1="ď" u2="!" k="-59" /> + <hkern u1="Đ" u2="X" k="18" /> + <hkern u1="Đ" u2="V" k="14" /> + <hkern u1="đ" g2="napostrophe" k="-32" /> + <hkern u1="đ" u2="ï" k="-13" /> + <hkern u1="ē" u2="y" k="6" /> + <hkern u1="ē" u2="x" k="4" /> + <hkern u1="ē" u2="v" k="4" /> + <hkern u1="ĕ" u2="y" k="6" /> + <hkern u1="ĕ" u2="x" k="4" /> + <hkern u1="ĕ" u2="v" k="4" /> + <hkern u1="ė" u2="y" k="6" /> + <hkern u1="ė" u2="x" k="4" /> + <hkern u1="ė" u2="v" k="4" /> + <hkern u1="ę" u2="y" k="6" /> + <hkern u1="ę" u2="x" k="4" /> + <hkern u1="ę" u2="v" k="4" /> + <hkern u1="ě" u2="y" k="6" /> + <hkern u1="ě" u2="x" k="4" /> + <hkern u1="ě" u2="v" k="4" /> + <hkern u1="Ĝ" u2="X" k="16" /> + <hkern u1="Ĝ" u2="V" k="12" /> + <hkern u1="Ğ" u2="X" k="16" /> + <hkern u1="Ğ" u2="V" k="12" /> + <hkern u1="Ġ" u2="X" k="16" /> + <hkern u1="Ġ" u2="V" k="12" /> + <hkern u1="Ģ" u2="X" k="16" /> + <hkern u1="Ģ" u2="V" k="12" /> + <hkern u1="Ĥ" u2="ï" k="-13" /> + <hkern u1="ĥ" u2="y" k="7" /> + <hkern u1="ĥ" u2="v" k="8" /> + <hkern u1="Ħ" u2="ï" k="-13" /> + <hkern u1="ħ" u2="y" k="7" /> + <hkern u1="ħ" u2="v" k="8" /> + <hkern u1="Ĩ" u2="ï" k="-13" /> + <hkern u1="Ī" u2="ï" k="-13" /> + <hkern u1="Ĭ" u2="ï" k="-13" /> + <hkern u1="Į" u2="ï" k="-13" /> + <hkern u1="İ" u2="ï" k="-13" /> + <hkern u1="Ķ" g2="v.sc" k="29" /> + <hkern u1="Ķ" u2="®" k="49" /> + <hkern u1="Ķ" u2="«" k="50" /> + <hkern u1="Ķ" u2="y" k="19" /> + <hkern u1="Ķ" u2="v" k="27" /> + <hkern u1="ķ" u2="y" k="18" /> + <hkern u1="ĸ" u2="y" k="18" /> + <hkern u1="Ĺ" g2="v.sc" k="29" /> + <hkern u1="Ĺ" u2="®" k="40" /> + <hkern u1="Ĺ" u2="«" k="20" /> + <hkern u1="Ĺ" u2="y" k="20" /> + <hkern u1="Ĺ" u2="v" k="38" /> + <hkern u1="Ĺ" u2="V" k="50" /> + <hkern u1="Ĺ" u2="?" k="13" /> + <hkern u1="ĺ" u2="®" k="23" /> + <hkern u1="ĺ" u2="«" k="10" /> + <hkern u1="ĺ" u2="y" k="15" /> + <hkern u1="ĺ" u2="v" k="19" /> + <hkern u1="Ļ" g2="v.sc" k="29" /> + <hkern u1="Ļ" u2="®" k="40" /> + <hkern u1="Ļ" u2="«" k="20" /> + <hkern u1="Ļ" u2="y" k="20" /> + <hkern u1="Ļ" u2="v" k="38" /> + <hkern u1="Ļ" u2="V" k="50" /> + <hkern u1="Ļ" u2="?" k="13" /> + <hkern u1="ļ" u2="®" k="23" /> + <hkern u1="ļ" u2="«" k="10" /> + <hkern u1="ļ" u2="y" k="15" /> + <hkern u1="ļ" u2="v" k="19" /> + <hkern u1="Ľ" g2="v.sc" k="29" /> + <hkern u1="Ľ" u2="®" k="40" /> + <hkern u1="Ľ" u2="«" k="20" /> + <hkern u1="Ľ" u2="y" k="20" /> + <hkern u1="Ľ" u2="v" k="38" /> + <hkern u1="Ľ" u2="V" k="50" /> + <hkern u1="Ľ" u2="?" k="13" /> + <hkern u1="ľ" g2="f_f_l" k="-26" /> + <hkern u1="ľ" g2="f_f_i" k="-26" /> + <hkern u1="ľ" g2="fl" k="-26" /> + <hkern u1="ľ" g2="fi" k="-26" /> + <hkern u1="ľ" g2="f_f" k="-26" /> + <hkern u1="ľ" u2="”" k="-56" /> + <hkern u1="ľ" u2="“" k="-56" /> + <hkern u1="ľ" u2="’" k="-56" /> + <hkern u1="ľ" u2="‘" k="-56" /> + <hkern u1="ľ" u2="ẅ" k="-17" /> + <hkern u1="ľ" u2="ẃ" k="-17" /> + <hkern u1="ľ" u2="ẁ" k="-17" /> + <hkern u1="ľ" u2="ȷ" k="-35" /> + <hkern u1="ľ" u2="ț" k="-29" /> + <hkern u1="ľ" u2="ŵ" k="-17" /> + <hkern u1="ľ" u2="ų" k="-7" /> + <hkern u1="ľ" u2="ű" k="-7" /> + <hkern u1="ľ" u2="ů" k="-7" /> + <hkern u1="ľ" u2="ŭ" k="-7" /> + <hkern u1="ľ" u2="ū" k="-7" /> + <hkern u1="ľ" u2="ũ" k="-7" /> + <hkern u1="ľ" u2="ŧ" k="-29" /> + <hkern u1="ľ" u2="ť" k="-29" /> + <hkern u1="ľ" u2="ţ" k="-29" /> + <hkern u1="ľ" u2="ř" k="-7" /> + <hkern u1="ľ" u2="ŗ" k="-7" /> + <hkern u1="ľ" u2="ŕ" k="-7" /> + <hkern u1="ľ" u2="ŋ" k="-7" /> + <hkern u1="ľ" u2="ň" k="-7" /> + <hkern u1="ľ" u2="ņ" k="-7" /> + <hkern u1="ľ" u2="ń" k="-7" /> + <hkern u1="ľ" u2="ł" k="-33" /> + <hkern u1="ľ" u2="ŀ" k="-33" /> + <hkern u1="ľ" u2="ľ" k="-33" /> + <hkern u1="ľ" u2="ļ" k="-33" /> + <hkern u1="ľ" u2="ĺ" k="-33" /> + <hkern u1="ľ" u2="ķ" k="-33" /> + <hkern u1="ľ" u2="ĵ" k="-35" /> + <hkern u1="ľ" u2="ı" k="-7" /> + <hkern u1="ľ" u2="į" k="-33" /> + <hkern u1="ľ" u2="ĭ" k="-33" /> + <hkern u1="ľ" u2="ī" k="-33" /> + <hkern u1="ľ" u2="ĩ" k="-33" /> + <hkern u1="ľ" u2="ħ" k="-33" /> + <hkern u1="ľ" u2="ĥ" k="-33" /> + <hkern u1="ľ" u2="þ" k="-33" /> + <hkern u1="ľ" u2="ü" k="-7" /> + <hkern u1="ľ" u2="û" k="-7" /> + <hkern u1="ľ" u2="ú" k="-7" /> + <hkern u1="ľ" u2="ù" k="-7" /> + <hkern u1="ľ" u2="ñ" k="-7" /> + <hkern u1="ľ" u2="ï" k="-33" /> + <hkern u1="ľ" u2="î" k="-33" /> + <hkern u1="ľ" u2="í" k="-33" /> + <hkern u1="ľ" u2="ì" k="-33" /> + <hkern u1="ľ" u2="}" k="-42" /> + <hkern u1="ľ" u2="y" k="-13" /> + <hkern u1="ľ" u2="x" k="-13" /> + <hkern u1="ľ" u2="w" k="-17" /> + <hkern u1="ľ" u2="v" k="-17" /> + <hkern u1="ľ" u2="u" k="-7" /> + <hkern u1="ľ" u2="t" k="-29" /> + <hkern u1="ľ" u2="r" k="-7" /> + <hkern u1="ľ" u2="p" k="-7" /> + <hkern u1="ľ" u2="n" k="-7" /> + <hkern u1="ľ" u2="m" k="-7" /> + <hkern u1="ľ" u2="l" k="-33" /> + <hkern u1="ľ" u2="k" k="-33" /> + <hkern u1="ľ" u2="j" k="-35" /> + <hkern u1="ľ" u2="i" k="-33" /> + <hkern u1="ľ" u2="h" k="-33" /> + <hkern u1="ľ" u2="f" k="-26" /> + <hkern u1="ľ" u2="b" k="-33" /> + <hkern u1="ľ" u2="]" k="-42" /> + <hkern u1="ľ" u2="?" k="-59" /> + <hkern u1="ľ" u2=")" k="-42" /> + <hkern u1="ľ" u2="'" k="-56" /> + <hkern u1="ľ" u2=""" k="-56" /> + <hkern u1="ľ" u2="!" k="-43" /> + <hkern u1="Ł" g2="v.sc" k="29" /> + <hkern u1="Ł" u2="®" k="40" /> + <hkern u1="Ł" u2="«" k="20" /> + <hkern u1="Ł" u2="y" k="20" /> + <hkern u1="Ł" u2="v" k="38" /> + <hkern u1="Ł" u2="V" k="50" /> + <hkern u1="Ł" u2="?" k="13" /> + <hkern u1="ł" u2="®" k="23" /> + <hkern u1="ł" u2="«" k="10" /> + <hkern u1="ł" u2="y" k="15" /> + <hkern u1="ł" u2="v" k="19" /> + <hkern u1="Ń" u2="ï" k="-13" /> + <hkern u1="ń" u2="y" k="7" /> + <hkern u1="ń" u2="v" k="8" /> + <hkern u1="Ņ" u2="ï" k="-13" /> + <hkern u1="ņ" u2="y" k="7" /> + <hkern u1="ņ" u2="v" k="8" /> + <hkern u1="Ň" u2="ï" k="-13" /> + <hkern u1="ň" u2="y" k="7" /> + <hkern u1="ň" u2="v" k="8" /> + <hkern g1="napostrophe" u2="y" k="7" /> + <hkern g1="napostrophe" u2="v" k="8" /> + <hkern u1="Ŋ" u2="ï" k="-13" /> + <hkern u1="ŋ" u2="y" k="7" /> + <hkern u1="ŋ" u2="v" k="8" /> + <hkern u1="Ō" u2="X" k="16" /> + <hkern u1="Ō" u2="V" k="12" /> + <hkern u1="ō" u2="y" k="6" /> + <hkern u1="ō" u2="x" k="10" /> + <hkern u1="ō" u2="v" k="5" /> + <hkern u1="Ŏ" u2="X" k="16" /> + <hkern u1="Ŏ" u2="V" k="12" /> + <hkern u1="ŏ" u2="y" k="6" /> + <hkern u1="ŏ" u2="x" k="10" /> + <hkern u1="ŏ" u2="v" k="5" /> + <hkern u1="Ő" u2="X" k="16" /> + <hkern u1="Ő" u2="V" k="12" /> + <hkern u1="ő" u2="y" k="6" /> + <hkern u1="ő" u2="x" k="10" /> + <hkern u1="ő" u2="v" k="5" /> + <hkern u1="œ" u2="y" k="6" /> + <hkern u1="œ" u2="x" k="4" /> + <hkern u1="œ" u2="v" k="4" /> + <hkern u1="Ŕ" u2="«" k="20" /> + <hkern u1="Ŕ" u2="V" k="12" /> + <hkern u1="ŕ" u2="?" k="-20" /> + <hkern u1="Ŗ" u2="«" k="20" /> + <hkern u1="Ŗ" u2="V" k="12" /> + <hkern u1="ŗ" u2="?" k="-20" /> + <hkern u1="Ř" u2="«" k="20" /> + <hkern u1="Ř" u2="V" k="12" /> + <hkern u1="ř" u2="?" k="-20" /> + <hkern u1="Ś" u2="y" k="3" /> + <hkern u1="Ś" u2="x" k="6" /> + <hkern u1="Ś" u2="v" k="7" /> + <hkern u1="ś" u2="v" k="3" /> + <hkern u1="Ŝ" u2="y" k="3" /> + <hkern u1="Ŝ" u2="x" k="6" /> + <hkern u1="Ŝ" u2="v" k="7" /> + <hkern u1="ŝ" u2="v" k="3" /> + <hkern u1="Ş" u2="y" k="3" /> + <hkern u1="Ş" u2="x" k="6" /> + <hkern u1="Ş" u2="v" k="7" /> + <hkern u1="ş" u2="v" k="3" /> + <hkern u1="Š" u2="y" k="3" /> + <hkern u1="Š" u2="x" k="6" /> + <hkern u1="Š" u2="v" k="7" /> + <hkern u1="š" u2="v" k="3" /> + <hkern u1="Ţ" g2="z.sc" k="28" /> + <hkern u1="Ţ" g2="x.sc" k="44" /> + <hkern u1="Ţ" g2="v.sc" k="33" /> + <hkern u1="Ţ" u2="ï" k="-19" /> + <hkern u1="Ţ" u2="«" k="43" /> + <hkern u1="Ţ" u2="y" k="27" /> + <hkern u1="Ţ" u2="x" k="31" /> + <hkern u1="Ţ" u2="v" k="35" /> + <hkern u1="Ţ" u2="?" k="-20" /> + <hkern u1="Ţ" u2=" " k="10" /> + <hkern u1="Ť" g2="z.sc" k="28" /> + <hkern u1="Ť" g2="x.sc" k="44" /> + <hkern u1="Ť" g2="v.sc" k="33" /> + <hkern u1="Ť" u2="ï" k="-19" /> + <hkern u1="Ť" u2="«" k="43" /> + <hkern u1="Ť" u2="y" k="27" /> + <hkern u1="Ť" u2="x" k="31" /> + <hkern u1="Ť" u2="v" k="35" /> + <hkern u1="Ť" u2="?" k="-20" /> + <hkern u1="Ť" u2=" " k="10" /> + <hkern u1="ť" u2="y" k="-16" /> + <hkern u1="ť" u2="x" k="-16" /> + <hkern u1="ť" u2="v" k="-19" /> + <hkern u1="ť" u2="?" k="-75" /> + <hkern u1="ť" u2="!" k="-59" /> + <hkern u1="Ŧ" g2="z.sc" k="28" /> + <hkern u1="Ŧ" g2="x.sc" k="44" /> + <hkern u1="Ŧ" g2="v.sc" k="33" /> + <hkern u1="Ŧ" u2="—" k="47" /> + <hkern u1="Ŧ" u2="–" k="47" /> + <hkern u1="Ŧ" u2="ï" k="-19" /> + <hkern u1="Ŧ" u2="­" k="47" /> + <hkern u1="Ŧ" u2="«" k="43" /> + <hkern u1="Ŧ" u2="y" k="27" /> + <hkern u1="Ŧ" u2="x" k="31" /> + <hkern u1="Ŧ" u2="v" k="35" /> + <hkern u1="Ŧ" u2="?" k="-20" /> + <hkern u1="Ŧ" u2="-" k="47" /> + <hkern u1="Ŧ" u2=" " k="10" /> + <hkern u1="Ŵ" g2="z.sc" k="7" /> + <hkern u1="Ŵ" g2="x.sc" k="7" /> + <hkern u1="Ŵ" u2="®" k="4" /> + <hkern u1="Ŵ" u2="«" k="40" /> + <hkern u1="Ŵ" u2="y" k="4" /> + <hkern u1="Ŵ" u2="x" k="16" /> + <hkern u1="Ŵ" u2="v" k="3" /> + <hkern u1="Ŵ" u2=" " k="18" /> + <hkern u1="ŵ" u2="«" k="7" /> + <hkern u1="Ŷ" g2="z.sc" k="10" /> + <hkern u1="Ŷ" g2="x.sc" k="18" /> + <hkern u1="Ŷ" g2="v.sc" k="9" /> + <hkern u1="Ŷ" u2="®" k="14" /> + <hkern u1="Ŷ" u2="«" k="60" /> + <hkern u1="Ŷ" u2="y" k="20" /> + <hkern u1="Ŷ" u2="x" k="36" /> + <hkern u1="Ŷ" u2="v" k="21" /> + <hkern u1="Ŷ" u2=" " k="15" /> + <hkern u1="Ÿ" g2="z.sc" k="10" /> + <hkern u1="Ÿ" g2="x.sc" k="18" /> + <hkern u1="Ÿ" g2="v.sc" k="9" /> + <hkern u1="Ÿ" u2="®" k="14" /> + <hkern u1="Ÿ" u2="«" k="60" /> + <hkern u1="Ÿ" u2="y" k="20" /> + <hkern u1="Ÿ" u2="x" k="36" /> + <hkern u1="Ÿ" u2="v" k="21" /> + <hkern u1="Ÿ" u2=" " k="15" /> + <hkern u1="Ź" u2="y" k="18" /> + <hkern u1="Ź" u2="v" k="6" /> + <hkern u1="Ż" u2="y" k="18" /> + <hkern u1="Ż" u2="v" k="6" /> + <hkern u1="Ž" u2="y" k="18" /> + <hkern u1="Ž" u2="v" k="6" /> + <hkern u1="Ǻ" g2="v.sc" k="13" /> + <hkern u1="Ǻ" u2="®" k="40" /> + <hkern u1="Ǻ" u2="«" k="13" /> + <hkern u1="Ǻ" u2="y" k="20" /> + <hkern u1="Ǻ" u2="v" k="24" /> + <hkern u1="Ǻ" u2="V" k="36" /> + <hkern u1="Ǻ" u2="?" k="40" /> + <hkern u1="ǻ" u2="y" k="4" /> + <hkern u1="ǻ" u2="v" k="4" /> + <hkern u1="ǽ" u2="y" k="6" /> + <hkern u1="ǽ" u2="x" k="4" /> + <hkern u1="ǽ" u2="v" k="4" /> + <hkern u1="ǿ" u2="x" k="7" /> + <hkern u1="Ș" u2="y" k="3" /> + <hkern u1="Ș" u2="x" k="6" /> + <hkern u1="Ș" u2="v" k="7" /> + <hkern u1="ș" u2="v" k="3" /> + <hkern u1="Ț" g2="z.sc" k="28" /> + <hkern u1="Ț" g2="x.sc" k="44" /> + <hkern u1="Ț" g2="v.sc" k="33" /> + <hkern u1="Ț" u2="ï" k="-19" /> + <hkern u1="Ț" u2="«" k="43" /> + <hkern u1="Ț" u2="y" k="27" /> + <hkern u1="Ț" u2="x" k="31" /> + <hkern u1="Ț" u2="v" k="35" /> + <hkern u1="Ț" u2="?" k="-20" /> + <hkern u1="Ț" u2=" " k="10" /> + <hkern u1="Ẁ" g2="z.sc" k="7" /> + <hkern u1="Ẁ" g2="x.sc" k="7" /> + <hkern u1="Ẁ" u2="®" k="4" /> + <hkern u1="Ẁ" u2="«" k="40" /> + <hkern u1="Ẁ" u2="y" k="4" /> + <hkern u1="Ẁ" u2="x" k="16" /> + <hkern u1="Ẁ" u2="v" k="3" /> + <hkern u1="Ẁ" u2=" " k="18" /> + <hkern u1="ẁ" u2="«" k="7" /> + <hkern u1="Ẃ" g2="z.sc" k="7" /> + <hkern u1="Ẃ" g2="x.sc" k="7" /> + <hkern u1="Ẃ" u2="®" k="4" /> + <hkern u1="Ẃ" u2="«" k="40" /> + <hkern u1="Ẃ" u2="y" k="4" /> + <hkern u1="Ẃ" u2="x" k="16" /> + <hkern u1="Ẃ" u2="v" k="3" /> + <hkern u1="Ẃ" u2=" " k="18" /> + <hkern u1="ẃ" u2="«" k="7" /> + <hkern u1="Ẅ" g2="z.sc" k="7" /> + <hkern u1="Ẅ" g2="x.sc" k="7" /> + <hkern u1="Ẅ" u2="®" k="4" /> + <hkern u1="Ẅ" u2="«" k="40" /> + <hkern u1="Ẅ" u2="y" k="4" /> + <hkern u1="Ẅ" u2="x" k="16" /> + <hkern u1="Ẅ" u2="v" k="3" /> + <hkern u1="Ẅ" u2=" " k="18" /> + <hkern u1="ẅ" u2="«" k="7" /> + <hkern u1="Ỳ" g2="z.sc" k="10" /> + <hkern u1="Ỳ" g2="x.sc" k="18" /> + <hkern u1="Ỳ" g2="v.sc" k="9" /> + <hkern u1="Ỳ" u2="®" k="14" /> + <hkern u1="Ỳ" u2="«" k="60" /> + <hkern u1="Ỳ" u2="y" k="20" /> + <hkern u1="Ỳ" u2="x" k="36" /> + <hkern u1="Ỳ" u2="v" k="21" /> + <hkern u1="Ỳ" u2=" " k="15" /> + <hkern u1="–" u2="Ŧ" k="47" /> + <hkern u1="–" u2="y" k="17" /> + <hkern u1="–" u2="x" k="40" /> + <hkern u1="–" u2="v" k="16" /> + <hkern u1="–" u2="X" k="46" /> + <hkern u1="–" u2="V" k="36" /> + <hkern u1="—" u2="Ŧ" k="47" /> + <hkern u1="—" u2="y" k="17" /> + <hkern u1="—" u2="x" k="40" /> + <hkern u1="—" u2="v" k="16" /> + <hkern u1="—" u2="X" k="46" /> + <hkern u1="—" u2="V" k="36" /> + <hkern u1="‘" u2="ï" k="-56" /> + <hkern u1="‘" u2="y" k="-3" /> + <hkern u1="‘" u2="v" k="-3" /> + <hkern u1="’" u2="ï" k="-56" /> + <hkern u1="‚" u2="y" k="50" /> + <hkern u1="‚" u2="v" k="64" /> + <hkern u1="‚" u2="X" k="-18" /> + <hkern u1="‚" u2="V" k="90" /> + <hkern u1="“" u2="ï" k="-56" /> + <hkern u1="“" u2="y" k="-3" /> + <hkern u1="“" u2="v" k="-3" /> + <hkern u1="”" u2="ï" k="-56" /> + <hkern u1="„" u2="y" k="50" /> + <hkern u1="„" u2="v" k="64" /> + <hkern u1="„" u2="X" k="-18" /> + <hkern u1="„" u2="V" k="90" /> + <hkern u1="•" u2="X" k="37" /> + <hkern u1="•" u2="V" k="27" /> + <hkern u1="…" u2=" " k="16" /> + <hkern u1="‹" u2="X" k="10" /> + <hkern u1="‹" u2="V" k="23" /> + <hkern u1="∙" u2="X" k="37" /> + <hkern u1="∙" u2="V" k="27" /> + <hkern g1="fl" u2="®" k="23" /> + <hkern g1="fl" u2="«" k="10" /> + <hkern g1="fl" u2="y" k="15" /> + <hkern g1="fl" u2="v" k="19" /> + <hkern g1="f_f_l" u2="®" k="23" /> + <hkern g1="f_f_l" u2="«" k="10" /> + <hkern g1="f_f_l" u2="y" k="15" /> + <hkern g1="f_f_l" u2="v" k="19" /> + <hkern g1="a.sc" g2="v.sc" k="27" /> + <hkern g1="b.sc" g2="ygrave.sc" k="4" /> + <hkern g1="b.sc" g2="ydieresis.sc" k="4" /> + <hkern g1="b.sc" g2="ycircumflex.sc" k="4" /> + <hkern g1="b.sc" g2="yacute.sc" k="4" /> + <hkern g1="b.sc" g2="y.sc" k="4" /> + <hkern g1="b.sc" g2="x.sc" k="4" /> + <hkern g1="d.sc" g2="x.sc" k="5" /> + <hkern g1="d.sc" g2="v.sc" k="6" /> + <hkern g1="f.sc" g2="jcircumflex.sc" k="50" /> + <hkern g1="f.sc" g2="aeacute.sc" k="43" /> + <hkern g1="f.sc" g2="ae.sc" k="43" /> + <hkern g1="f.sc" g2="aogonek.sc" k="11" /> + <hkern g1="f.sc" g2="aringacute.sc" k="11" /> + <hkern g1="f.sc" g2="aring.sc" k="11" /> + <hkern g1="f.sc" g2="abreve.sc" k="11" /> + <hkern g1="f.sc" g2="amacron.sc" k="11" /> + <hkern g1="f.sc" g2="adieresis.sc" k="11" /> + <hkern g1="f.sc" g2="atilde.sc" k="11" /> + <hkern g1="f.sc" g2="acircumflex.sc" k="11" /> + <hkern g1="f.sc" g2="aacute.sc" k="11" /> + <hkern g1="f.sc" g2="agrave.sc" k="11" /> + <hkern g1="f.sc" g2="j.sc" k="50" /> + <hkern g1="f.sc" g2="a.sc" k="11" /> + <hkern g1="l.sc" g2="v.sc" k="25" /> + <hkern g1="p.sc" g2="ygrave.sc" k="6" /> + <hkern g1="p.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="p.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="p.sc" g2="yacute.sc" k="6" /> + <hkern g1="p.sc" g2="jcircumflex.sc" k="66" /> + <hkern g1="p.sc" g2="aeacute.sc" k="68" /> + <hkern g1="p.sc" g2="ae.sc" k="68" /> + <hkern g1="p.sc" g2="aogonek.sc" k="24" /> + <hkern g1="p.sc" g2="aringacute.sc" k="24" /> + <hkern g1="p.sc" g2="aring.sc" k="24" /> + <hkern g1="p.sc" g2="abreve.sc" k="24" /> + <hkern g1="p.sc" g2="amacron.sc" k="24" /> + <hkern g1="p.sc" g2="adieresis.sc" k="24" /> + <hkern g1="p.sc" g2="atilde.sc" k="24" /> + <hkern g1="p.sc" g2="acircumflex.sc" k="24" /> + <hkern g1="p.sc" g2="aacute.sc" k="24" /> + <hkern g1="p.sc" g2="agrave.sc" k="24" /> + <hkern g1="p.sc" g2="y.sc" k="6" /> + <hkern g1="p.sc" g2="x.sc" k="10" /> + <hkern g1="p.sc" g2="j.sc" k="66" /> + <hkern g1="p.sc" g2="a.sc" k="24" /> + <hkern g1="q.sc" g2="ygrave.sc" k="6" /> + <hkern g1="q.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="q.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="q.sc" g2="yacute.sc" k="6" /> + <hkern g1="q.sc" g2="y.sc" k="6" /> + <hkern g1="r.sc" g2="v.sc" k="4" /> + <hkern g1="v.sc" g2="jcircumflex.sc" k="56" /> + <hkern g1="v.sc" g2="aeacute.sc" k="54" /> + <hkern g1="v.sc" g2="ae.sc" k="54" /> + <hkern g1="v.sc" g2="aogonek.sc" k="27" /> + <hkern g1="v.sc" g2="aringacute.sc" k="27" /> + <hkern g1="v.sc" g2="aring.sc" k="27" /> + <hkern g1="v.sc" g2="abreve.sc" k="27" /> + <hkern g1="v.sc" g2="amacron.sc" k="27" /> + <hkern g1="v.sc" g2="adieresis.sc" k="27" /> + <hkern g1="v.sc" g2="atilde.sc" k="27" /> + <hkern g1="v.sc" g2="acircumflex.sc" k="27" /> + <hkern g1="v.sc" g2="aacute.sc" k="27" /> + <hkern g1="v.sc" g2="agrave.sc" k="27" /> + <hkern g1="v.sc" g2="j.sc" k="56" /> + <hkern g1="v.sc" g2="a.sc" k="27" /> + <hkern g1="x.sc" g2="oslash.sc" k="4" /> + <hkern g1="x.sc" g2="ohungarumlaut.sc" k="4" /> + <hkern g1="x.sc" g2="obreve.sc" k="4" /> + <hkern g1="x.sc" g2="omacron.sc" k="4" /> + <hkern g1="x.sc" g2="odieresis.sc" k="4" /> + <hkern g1="x.sc" g2="otilde.sc" k="4" /> + <hkern g1="x.sc" g2="ocircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="oacute.sc" k="4" /> + <hkern g1="x.sc" g2="ograve.sc" k="4" /> + <hkern g1="x.sc" g2="gcommaaccent.sc" k="4" /> + <hkern g1="x.sc" g2="gdotaccent.sc" k="4" /> + <hkern g1="x.sc" g2="gbreve.sc" k="4" /> + <hkern g1="x.sc" g2="gcircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="ccedilla.sc" k="4" /> + <hkern g1="x.sc" g2="cdotaccent.sc" k="4" /> + <hkern g1="x.sc" g2="ccaron.sc" k="4" /> + <hkern g1="x.sc" g2="ccircumflex.sc" k="4" /> + <hkern g1="x.sc" g2="cacute.sc" k="4" /> + <hkern g1="x.sc" g2="q.sc" k="4" /> + <hkern g1="x.sc" g2="o.sc" k="4" /> + <hkern g1="x.sc" g2="g.sc" k="4" /> + <hkern g1="x.sc" g2="c.sc" k="4" /> + <hkern g1="agrave.sc" g2="v.sc" k="27" /> + <hkern g1="aacute.sc" g2="v.sc" k="27" /> + <hkern g1="acircumflex.sc" g2="v.sc" k="27" /> + <hkern g1="atilde.sc" g2="v.sc" k="27" /> + <hkern g1="adieresis.sc" g2="v.sc" k="27" /> + <hkern g1="amacron.sc" g2="v.sc" k="27" /> + <hkern g1="abreve.sc" g2="v.sc" k="27" /> + <hkern g1="aring.sc" g2="v.sc" k="27" /> + <hkern g1="aringacute.sc" g2="v.sc" k="27" /> + <hkern g1="aogonek.sc" g2="v.sc" k="27" /> + <hkern g1="dcaron.sc" g2="x.sc" k="5" /> + <hkern g1="dcaron.sc" g2="v.sc" k="6" /> + <hkern g1="dcroat.sc" g2="x.sc" k="5" /> + <hkern g1="dcroat.sc" g2="v.sc" k="6" /> + <hkern g1="eth.sc" g2="x.sc" k="5" /> + <hkern g1="eth.sc" g2="v.sc" k="6" /> + <hkern g1="lacute.sc" g2="v.sc" k="25" /> + <hkern g1="lcaron.sc" g2="v.sc" k="25" /> + <hkern g1="lcommaaccent.sc" g2="v.sc" k="25" /> + <hkern g1="lslash.sc" g2="v.sc" k="25" /> + <hkern g1="racute.sc" g2="v.sc" k="4" /> + <hkern g1="rcaron.sc" g2="v.sc" k="4" /> + <hkern g1="rcommaaccent.sc" g2="v.sc" k="4" /> + <hkern g1="thorn.sc" g2="ygrave.sc" k="6" /> + <hkern g1="thorn.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="thorn.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="thorn.sc" g2="yacute.sc" k="6" /> + <hkern g1="thorn.sc" g2="jcircumflex.sc" k="36" /> + <hkern g1="thorn.sc" g2="aeacute.sc" k="36" /> + <hkern g1="thorn.sc" g2="ae.sc" k="36" /> + <hkern g1="thorn.sc" g2="aogonek.sc" k="10" /> + <hkern g1="thorn.sc" g2="aringacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="aring.sc" k="10" /> + <hkern g1="thorn.sc" g2="abreve.sc" k="10" /> + <hkern g1="thorn.sc" g2="amacron.sc" k="10" /> + <hkern g1="thorn.sc" g2="adieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="atilde.sc" k="10" /> + <hkern g1="thorn.sc" g2="acircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="aacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="agrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="y.sc" k="6" /> + <hkern g1="thorn.sc" g2="x.sc" k="10" /> + <hkern g1="thorn.sc" g2="j.sc" k="36" /> + <hkern g1="thorn.sc" g2="a.sc" k="10" /> + <hkern g1="four.prop" u2="…" k="-20" /> + <hkern g1="four.prop" u2="." k="-20" /> + <hkern g1="four.prop" u2="," k="-20" /> + <hkern g1="seven.prop" g2="four.prop" k="31" /> + <hkern g1="seven.prop" u2="…" k="60" /> + <hkern g1="seven.prop" u2="." k="60" /> + <hkern g1="seven.prop" u2="," k="60" /> + <hkern g1="four.onumprop" u2="…" k="-30" /> + <hkern g1="four.onumprop" u2="." k="-30" /> + <hkern g1="four.onumprop" u2="," k="-30" /> + <hkern g1="seven.onumprop" u2="…" k="20" /> + <hkern g1="seven.onumprop" u2="." k="20" /> + <hkern g1="seven.onumprop" u2="," k="20" /> + <hkern g1="q.alt01" u2="ȷ" k="-48" /> + <hkern g1="q.alt01" u2="ĵ" k="-48" /> + <hkern g1="q.alt01" u2="ģ" k="-16" /> + <hkern g1="q.alt01" u2="ġ" k="-16" /> + <hkern g1="q.alt01" u2="ğ" k="-16" /> + <hkern g1="q.alt01" u2="ĝ" k="-16" /> + <hkern g1="q.alt01" u2="p" k="-22" /> + <hkern g1="q.alt01" u2="j" k="-48" /> + <hkern g1="q.alt01" u2="g" k="-16" /> + <hkern g1="C.alt01" u2="X" k="15" /> + <hkern g1="C.alt01" u2="V" k="4" /> + <hkern g1="Cacute.alt01" u2="X" k="15" /> + <hkern g1="Cacute.alt01" u2="V" k="4" /> + <hkern g1="Ccircumflex.alt01" u2="X" k="15" /> + <hkern g1="Ccircumflex.alt01" u2="V" k="4" /> + <hkern g1="Ccaron.alt01" u2="X" k="15" /> + <hkern g1="Ccaron.alt01" u2="V" k="4" /> + <hkern g1="Cdotaccent.alt01" u2="X" k="15" /> + <hkern g1="Cdotaccent.alt01" u2="V" k="4" /> + <hkern g1="Ccedilla.alt01" u2="X" k="15" /> + <hkern g1="Ccedilla.alt01" u2="V" k="4" /> + <hkern g1="G.alt01" u2="X" k="16" /> + <hkern g1="G.alt01" u2="V" k="12" /> + <hkern g1="Gcircumflex.alt01" u2="X" k="16" /> + <hkern g1="Gcircumflex.alt01" u2="V" k="12" /> + <hkern g1="Gbreve.alt01" u2="X" k="16" /> + <hkern g1="Gbreve.alt01" u2="V" k="12" /> + <hkern g1="Gdotaccent.alt01" u2="X" k="16" /> + <hkern g1="Gdotaccent.alt01" u2="V" k="12" /> + <hkern g1="Gcommaaccent.alt01" u2="X" k="16" /> + <hkern g1="Gcommaaccent.alt01" u2="V" k="12" /> + <hkern g1="Z.alt01" u2="y" k="18" /> + <hkern g1="Z.alt01" u2="v" k="6" /> + <hkern g1="Zacute.alt01" u2="y" k="18" /> + <hkern g1="Zacute.alt01" u2="v" k="6" /> + <hkern g1="Zcaron.alt01" u2="y" k="18" /> + <hkern g1="Zcaron.alt01" u2="v" k="6" /> + <hkern g1="Zdotaccent.alt01" u2="y" k="18" /> + <hkern g1="Zdotaccent.alt01" u2="v" k="6" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="AE,AEacute" + k="25" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="J,Jcircumflex" + k="15" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-12" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="4" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="comma,period,ellipsis" + k="19" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="9" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="26" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="AE,AEacute" + k="30" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="J,Jcircumflex" + k="21" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="j.sc,jcircumflex.sc" + k="15" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="ae.sc,aeacute.sc" + k="18" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="9" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="11" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="AE,AEacute" + k="28" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="J,Jcircumflex" + k="16" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="2" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="ae.sc,aeacute.sc" + k="8" /> + <hkern g1="Oslash,Oslashacute" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="14" /> + <hkern g1="Oslash,Oslashacute" + g2="AE,AEacute" + k="28" /> + <hkern g1="J,IJ,Jcircumflex" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="J,IJ,Jcircumflex" + g2="AE,AEacute" + k="20" /> + <hkern g1="J,IJ,Jcircumflex" + g2="J,Jcircumflex" + k="17" /> + <hkern g1="J,IJ,Jcircumflex" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="J,IJ,Jcircumflex" + g2="ae.sc,aeacute.sc" + k="11" /> + <hkern g1="J,IJ,Jcircumflex" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="5" /> + <hkern g1="K,Kcommaaccent" + g2="quoteright,quotedblright" + k="5" /> + <hkern g1="K,Kcommaaccent" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="23" /> + <hkern g1="K,Kcommaaccent" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="14" /> + <hkern g1="K,Kcommaaccent" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="10" /> + <hkern g1="K,Kcommaaccent" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="20" /> + <hkern g1="K,Kcommaaccent" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="periodcentered,bullet,uni2219" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="K,Kcommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="26" /> + <hkern g1="K,Kcommaaccent" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="8" /> + <hkern g1="K,Kcommaaccent" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="guillemotright,guilsinglright" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="2" /> + <hkern g1="K,Kcommaaccent" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="hyphen,uni00AD,endash,emdash" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="comma,period,ellipsis" + k="-12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="30" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="50" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="10" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="30" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="18" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="40" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="periodcentered,bullet,uni2219" + k="14" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="34" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="11" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="8" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="18" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="periodcentered,bullet,uni2219" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="guillemotright,guilsinglright" + k="7" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="-20" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="3" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="6" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="AE,AEacute" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="hyphen,uni00AD,endash,emdash" + k="82" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="comma,period,ellipsis" + k="96" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="colon,semicolon" + k="20" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-23" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quoteright,quotedblright" + k="-23" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="18" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="8" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="27" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="29" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="periodcentered,bullet,uni2219" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="7" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="33" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="46" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="AE,AEacute" + k="77" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="J,Jcircumflex" + k="78" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="j.sc,jcircumflex.sc" + k="65" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="ae.sc,aeacute.sc" + k="55" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="40" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="43" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="oslash,oslashacute" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="36" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="comma,period,ellipsis" + k="20" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="AE,AEacute" + k="20" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="J,Jcircumflex" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="comma,period,ellipsis" + k="79" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="colon,semicolon" + k="22" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="31" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="30" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="periodcentered,bullet,uni2219" + k="21" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="4" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="16" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="AE,AEacute" + k="68" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="J,Jcircumflex" + k="54" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="j.sc,jcircumflex.sc" + k="46" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="ae.sc,aeacute.sc" + k="47" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="27" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="guillemotright,guilsinglright" + k="16" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="30" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="29" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="25" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="9" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="14" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="oslash,oslashacute" + k="36" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="17" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="Oslash,Oslashacute" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="z,zacute,zdotaccent,zcaron" + k="16" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="hyphen,uni00AD,endash,emdash" + k="76" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="comma,period,ellipsis" + k="96" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="colon,semicolon" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="22" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="38" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="7" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="10" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="52" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="periodcentered,bullet,uni2219" + k="61" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="10" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="25" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="42" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="AE,AEacute" + k="80" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="J,Jcircumflex" + k="60" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="j.sc,jcircumflex.sc" + k="54" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="ae.sc,aeacute.sc" + k="60" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="11" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="guillemotright,guilsinglright" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="52" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="44" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="27" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="oslash,oslashacute" + k="57" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="37" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="Oslash,Oslashacute" + k="24" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="z,zacute,zdotaccent,zcaron" + k="32" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="18" /> + <hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="b,p,thorn" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="b,p,thorn" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="1" /> + <hkern g1="b,p,thorn" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="1" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="8" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="hyphen,uni00AD,endash,emdash" + k="31" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="hyphen,uni00AD,endash,emdash" + k="17" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="comma,period,ellipsis" + k="-16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="34" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="22" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="11" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="2" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="15" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="guillemotright,guilsinglright" + k="7" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="14" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="comma,period,ellipsis" + k="50" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quoteright,quotedblright" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="7" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="oslash,oslashacute" + k="10" /> + <hkern g1="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="hyphen,uni00AD,endash,emdash" + k="12" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="comma,period,ellipsis" + k="-12" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-4" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quoteright,quotedblright" + k="-4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="comma,period,ellipsis" + k="36" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quoteright,quotedblright" + k="-3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="4" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="3" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="oslash,oslashacute" + k="4" /> + <hkern g1="dcaron,tcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-72" /> + <hkern g1="dcaron,tcaron" + g2="quoteright,quotedblright" + k="-72" /> + <hkern g1="dcaron,tcaron" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="-29" /> + <hkern g1="dcaron,tcaron" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="-10" /> + <hkern g1="dcaron,tcaron" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-32" /> + <hkern g1="dcaron,tcaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-19" /> + <hkern g1="dcaron,tcaron" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="-10" /> + <hkern g1="dcaron,tcaron" + g2="parenright,bracketright,braceright" + k="-51" /> + <hkern g1="dcaron,tcaron" + g2="b,h,k,thorn,hcircumflex,hbar,kcommaaccent" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek" + k="-42" /> + <hkern g1="dcaron,tcaron" + g2="j,jcircumflex,dotlessj" + k="-42" /> + <hkern g1="comma,period,ellipsis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="64" /> + <hkern g1="comma,period,ellipsis" + g2="quoteright,quotedblright" + k="64" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="82" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="24" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="76" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="9" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="10" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="J,Jcircumflex" + k="50" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="38" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="21" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="61" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="22" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="J,Jcircumflex" + k="33" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="14" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="16" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="37" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="J,Jcircumflex" + k="4" /> + <hkern g1="parenleft,bracketleft,braceleft" + g2="j,jcircumflex,dotlessj" + k="-16" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="comma,period,ellipsis" + k="64" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-23" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-5" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-3" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="69" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="J,Jcircumflex" + k="64" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="j.sc,jcircumflex.sc" + k="48" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quoteright,quotedblright" + g2="comma,period,ellipsis" + k="70" /> + <hkern g1="quoteright,quotedblright" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="12" /> + <hkern g1="quoteright,quotedblright" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-23" /> + <hkern g1="quoteright,quotedblright" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="quoteright,quotedblright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="74" /> + <hkern g1="quoteright,quotedblright" + g2="J,Jcircumflex" + k="67" /> + <hkern g1="quoteright,quotedblright" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="74" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="60" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="-10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="j,jcircumflex,dotlessj" + k="-50" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="25" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="16" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="28" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="5" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="3" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="5" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="6" /> + <hkern g1="g.sc,o.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="6" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="j.sc,jcircumflex.sc" + k="9" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="ae.sc,aeacute.sc" + k="13" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="5" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="4" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="30" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="27" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="6" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="j.sc,jcircumflex.sc" + k="4" /> + <hkern g1="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + g2="ae.sc,aeacute.sc" + k="7" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="j.sc,jcircumflex.sc" + k="49" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="25" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="j.sc,jcircumflex.sc" + k="7" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="ae.sc,aeacute.sc" + k="9" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="5" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="j.sc,jcircumflex.sc" + k="36" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="ae.sc,aeacute.sc" + k="36" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="16" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="j.sc,jcircumflex.sc" + k="42" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="ae.sc,aeacute.sc" + k="50" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="28" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + </font> +</defs></svg> diff --git a/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d52376d3b1952d78505ea8a5ec7155487c285ef8 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.ttf differ diff --git a/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff new file mode 100644 index 0000000000000000000000000000000000000000..a438ad56aa08d0db3cc1e64b4c65a81e6854a650 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff differ diff --git a/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff2 b/themes/simpletip/assets/css/fonts/13ba9c94a7f164d315c9044db6d513ef.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot new file mode 100644 index 0000000000000000000000000000000000000000..d711d260b59db001445d015074c77e7d5290b981 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot differ diff --git a/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg new file mode 100644 index 0000000000000000000000000000000000000000..5e39806f6e52131493b30e762f02111d917df85d --- /dev/null +++ b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg @@ -0,0 +1,5048 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Aug 27 15:55:25 2019 + By www +Copyright (c) 2008 - 2009 Linotype GmbH, www.linotype.com. All rights reserved. This font software may not be reproduced, modified, disclosed or transferred without the express written approval of Linotype GmbH. +</metadata> +<defs> +<font id="DINNextLTPro-MediumCond" horiz-adv-x="398" > + <font-face + font-family="DIN Next LT Pro Medium Cond" + font-weight="500" + font-stretch="condensed" + units-per-em="1000" + panose-1="2 11 6 6 2 2 3 5 2 3" + ascent="750" + descent="-250" + x-height="482" + cap-height="680" + bbox="-92.6923 -221 872 902" + underline-thickness="50" + underline-position="-50" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="388" +d="M0 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10h-368q-10 0 -10 10zM59 61q0 -6 6 -6h259q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558zM168 224q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10h-48zM158 124v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10h-48q-10 0 -10 10z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="567" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM229 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45z" /> + <glyph glyph-name="ij" unicode="ij" horiz-adv-x="408" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM347 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM215 -180h-15q-10 0 -10 10v72 +q0 10 10 10l14 1q22 2 31.5 13.5t9.5 42.5v503q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="napostrophe" unicode=""n" horiz-adv-x="405" +d="M-7 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="f_f" unicode="ff" horiz-adv-x="512" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10z" /> + <glyph glyph-name="fi" unicode="fi" horiz-adv-x="460" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM399 574h-82 +q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM399 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="fl" unicode="fl" horiz-adv-x="489" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM453 -6h-3 +q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_i" unicode="ffi" horiz-adv-x="716" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM655 574h-82q-10 0 -10 10 +v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM655 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="f_f_l" unicode="ffl" horiz-adv-x="745" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM416 0h-82 +q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10zM709 -6h-3q-79 2 -111 35.5 +t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name=".notdef" horiz-adv-x="388" +d="M0 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10h-368q-10 0 -10 10zM59 61q0 -6 6 -6h259q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558zM168 224q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10h-48zM158 124v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10h-48q-10 0 -10 10z" /> + <glyph glyph-name=".null" horiz-adv-x="500" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="194" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="241" +d="M97 170q-10 0 -10 10l-22 490q0 10 10 10h91q10 0 10 -10l-22 -490q0 -10 -10 -10h-47zM68 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="278" +d="M173 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55zM50 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="509" +d="M90 10l21 206h-50q-10 0 -10 10v52q0 10 10 10h58l13 122h-52q-10 0 -10 10v52q0 10 10 10h59l20 188q2 10 11 10h57q11 0 9 -10l-20 -188h97l20 188q2 10 11 10h57q11 0 9 -10l-20 -188h58q10 0 10 -10v-52q0 -10 -10 -10h-65l-13 -122h59q10 0 10 -10v-52 +q0 -10 -10 -10h-67l-21 -206q-2 -10 -11 -10h-57q-11 0 -9 10l21 206h-97l-21 -206q-2 -10 -11 -10h-57q-11 0 -9 10zM196 288h97l13 122h-97z" /> + <glyph glyph-name="dollar" unicode="$" +d="M35 165q0 10 8 11l75 13q11 1 11 -9q1 -47 12.5 -69t37.5 -26v221l-28 11q-63 25 -86.5 67t-23.5 123q0 174 138 181v41q0 10 10 10h17q10 0 10 -10v-41q66 -6 97.5 -46t37.5 -114q1 -9 -9 -11l-73 -11q-9 -2 -11 8q-3 37 -12.5 55.5t-29.5 23.5v-190l26 -10 +q63 -24 88.5 -67.5t25.5 -130.5q0 -100 -34 -149t-106 -54v-55q0 -10 -10 -10h-17q-10 0 -10 10v55q-72 4 -106.5 46.5t-37.5 126.5zM179 419v175q-40 -8 -40 -83q0 -40 8 -59.5t32 -32.5zM216 86q22 5 32 26t10 69q0 46 -9.5 70.5t-32.5 38.5v-204z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="674" +d="M174 1l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10h-54q-10 0 -7 10zM161 328q-74 0 -93 61q-8 24 -8 118q0 95 8 118q19 61 93 61t93 -61q8 -23 8 -118q0 -94 -8 -118q-19 -61 -93 -61zM161 392q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17 +q-3 -9 -3 -98t3 -98q5 -17 25 -17zM420 55q-8 23 -8 118q0 94 8 118q19 61 93 61t93 -61q8 -24 8 -118q0 -95 -8 -118q-19 -61 -93 -61t-93 61zM488 75q5 -17 25 -17t25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="553" +d="M63 143q0 47 28.5 96t92.5 124q-42 68 -58.5 108t-16.5 77q0 63 40.5 102t104.5 39t104.5 -39t40.5 -102q0 -39 -21.5 -82t-80.5 -112l71 -119l45 77q5 8 13 3l55 -31q8 -5 3 -14l-67 -117l23 -38q14 -25 32 -25h3q10 0 10 -10v-70q0 -10 -10 -10h-30q-28 0 -41.5 8 +t-26.5 30l-16 26q-58 -73 -145 -73q-71 0 -112 41t-41 111zM249 437q35 41 46.5 64.5t11.5 49.5q0 58 -52 58t-52 -58q0 -34 46 -114zM158 145q0 -31 17.5 -49t46.5 -18q46 0 92 66l-82 137q-40 -47 -57 -77.5t-17 -58.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="155" +d="M50 493q-10 0 -10 10v167q0 10 10 10h55q10 0 10 -10v-167q0 -10 -10 -10h-55z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="271" +d="M161 -74q-96 186 -96 402t96 402q3 10 13 10h49q10 0 7 -10q-63 -191 -63 -402t63 -402q3 -10 -7 -10h-49q-10 0 -13 10z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="271" +d="M41 -74q63 191 63 402t-63 402q-3 10 7 10h50q8 0 13 -10q95 -187 95 -402t-95 -402q-5 -10 -13 -10h-50q-10 0 -7 10z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="328" +d="M144 392q-10 0 -10 10l1 84l-59 -36q-8 -5 -13 4l-20 35q-5 9 3 14l59 33l-59 33q-8 5 -3 14l20 35q5 9 13 4l59 -36l-1 84q0 10 10 10h40q10 0 10 -10l-2 -84l60 36q8 5 13 -4l20 -35q5 -9 -3 -14l-60 -33l60 -33q8 -5 3 -14l-20 -35q-5 -9 -13 -4l-60 35l2 -83 +q0 -10 -10 -10h-40z" /> + <glyph glyph-name="plus" unicode="+" +d="M153 123v102q0 6 -6 6h-101q-10 0 -10 10v70q0 10 10 10h101q6 0 6 6v102q0 10 10 10h73q10 0 10 -10v-102q0 -6 6 -6h100q10 0 10 -10v-70q0 -10 -10 -10h-100q-6 0 -6 -6v-102q0 -10 -10 -10h-73q-10 0 -10 10z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="191" +d="M46 -93v202q0 10 10 10h79q10 0 10 -10v-82q0 -17 -8 -28l-71 -95q-4 -6 -11 -6q-9 0 -9 9z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="368" +d="M52 218q-10 0 -10 10v75q0 10 10 10h264q10 0 10 -10v-75q0 -10 -10 -10h-264z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="197" +d="M46 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="245" +d="M21 1l125 678q2 10 11 10h57q11 0 9 -10l-125 -678q-1 -10 -11 -10h-57q-11 0 -9 10z" /> + <glyph glyph-name="zero" unicode="0" +d="M57 84q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93q-54 0 -91 24t-51 69zM154 115q10 -31 45 -31q36 0 46 31q5 16 5 225t-5 225q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225t6 -225z" /> + <glyph glyph-name="one" unicode="1" +d="M167 10v552h-2l-85 -60q-4 -3 -7.5 -1.5t-3.5 7.5v85q0 9 10 17l87 64q9 6 18 6h75q10 0 10 -10v-660q0 -10 -10 -10h-82q-10 0 -10 10z" /> + <glyph glyph-name="two" unicode="2" +d="M49 10v71q0 9 5 20l169 304q26 45 26 112q0 33 -4 46q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -62q0 -12 -12 -10l-78 7q-9 2 -9 12q0 59 8 84q32 95 143 95t142 -94q9 -29 9 -78q0 -54 -9.5 -88t-32.5 -75l-149 -260v-1h181q10 0 10 -10v-73q0 -10 -10 -10h-282 +q-10 0 -10 10z" /> + <glyph glyph-name="three" unicode="3" +d="M56 86q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -43 4 -56q11 -33 46 -33q36 0 47 32q4 13 4 79q0 70 -4 81q-10 30 -50 30h-15q-10 0 -10 10v72q0 10 10 10h15q41 0 50 29q4 11 4 73q0 51 -4 64q-11 32 -47 32q-35 0 -46 -33q-4 -13 -4 -56q0 -12 -12 -10l-77 7 +q-10 1 -10 12q0 50 9 78q30 95 141 95q112 0 143 -93q9 -28 9 -96q0 -65 -7 -86q-10 -34 -49 -58v-2q39 -24 49 -58q7 -21 7 -101q0 -83 -9 -111q-31 -93 -143 -93q-111 0 -141 95z" /> + <glyph glyph-name="four" unicode="4" +d="M34 101q-10 0 -10 10v72q0 5 2 11l140 478q3 8 12 8h83q11 0 8 -11l-140 -473v-2h86q6 0 6 6v180q0 10 10 10h82q10 0 10 -10v-180q0 -6 5 -6h34q10 0 10 -10v-73q0 -10 -10 -10h-33q-6 0 -6 -6v-85q0 -10 -10 -10h-82q-10 0 -10 10v85q0 6 -6 6h-181z" /> + <glyph glyph-name="five" unicode="5" +d="M57 86q-8 25 -8 68q0 10 9 12l78 8q12 2 12 -10q0 -34 4 -47q11 -33 46 -33q36 0 47 32q4 12 4 101q0 88 -4 100q-10 32 -47 32q-34 0 -46 -30q-4 -9 -15 -9h-68q-10 0 -10 10v350q0 10 10 10h272q10 0 10 -10v-73q0 -10 -10 -10h-184q-6 0 -6 -6v-166h1q26 28 73 28 +q90 0 116 -80q10 -31 10 -146q0 -104 -9 -132q-31 -94 -143 -94q-110 0 -142 95z" /> + <glyph glyph-name="six" unicode="6" +d="M56 87q-9 28 -9 111q0 69 6.5 107t25.5 86l107 279q4 10 14 10h83q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96q-113 0 -143 96zM153 117q11 -33 46 -33q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -79q0 -68 4 -81z" /> + <glyph glyph-name="seven" unicode="7" +d="M82 13l169 572v2h-104q-6 0 -6 -6v-64q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-74q0 -5 -2 -11l-167 -575q-3 -10 -13 -10h-83q-10 0 -6 13z" /> + <glyph glyph-name="eight" unicode="8" +d="M56 87q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96q-113 0 -143 96zM199 403q37 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q11 -33 46 -33zM153 117q11 -33 46 -33q36 0 47 33q4 13 4 80t-4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79t4 -80z" /> + <glyph glyph-name="nine" unicode="9" +d="M109 11l103 270l-2 2q-10 -6 -34 -6q-91 0 -119 91q-10 32 -10 114t9 111q30 96 143 96q112 0 144 -96q9 -28 9 -111q0 -68 -6.5 -106t-25.5 -87l-107 -279q-4 -10 -14 -10h-83q-12 0 -7 11zM199 370q37 0 47 33q4 12 4 79q0 68 -4 81q-11 33 -47 33q-35 0 -46 -33 +q-4 -13 -4 -81q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="213" +d="M64 363q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85zM54 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85q-10 0 -10 10z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="213" +d="M64 363q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10h-85zM57 -93v202q0 10 10 10h79q10 0 10 -10v-82q0 -17 -8 -28l-71 -95q-5 -6 -11 -6q-9 0 -9 9z" /> + <glyph glyph-name="less" unicode="<" +d="M46 231q-10 4 -10 15v60q0 11 10 15l306 123q10 3 10 -7v-74q0 -9 -10 -13l-191 -73v-2l191 -73q10 -4 10 -13v-74q0 -10 -10 -7z" /> + <glyph glyph-name="equal" unicode="=" +d="M46 328q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10h-306zM46 135q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10h-306z" /> + <glyph glyph-name="greater" unicode=">" +d="M46 108q-10 -3 -10 7v74q0 9 10 13l192 73v2l-192 73q-10 4 -10 13v74q0 10 10 7l306 -123q10 -4 10 -15v-60q0 -11 -10 -15z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="391" +d="M140 170q-10 0 -10 10v75q0 33 19 68l56 103q25 47 25 102q0 23 -4 36q-11 32 -46 32t-47 -32q-4 -13 -4 -63q0 -12 -11 -10l-78 7q-10 1 -10 12q0 58 9 84q15 44 53 69.5t90 25.5q54 0 90 -25.5t51 -69.5q9 -27 9 -66q0 -63 -28 -118l-56 -105q-16 -30 -16 -55v-70 +q0 -10 -10 -10h-82zM129 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10h-84q-10 0 -10 10z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="661" +d="M50 72q-19 57 -19 196t19 196q31 93 105 144.5t176 51.5q101 0 175 -51.5t105 -144.5q19 -57 19 -196q0 -98 -10 -128q-27 -81 -114 -81q-80 0 -107 65h-1q-13 -34 -34.5 -49.5t-60.5 -15.5q-70 0 -91 66q-10 29 -10 139t10 139q21 66 89 66q53 0 73 -45h2v28q0 10 10 10 +h64q10 0 10 -10v-263q0 -57 46 -57q33 0 42 30q4 12 4 106q0 131 -15 178q-22 68 -76 105t-130 37q-77 0 -131 -37t-76 -105q-15 -47 -15 -178t15 -178q22 -67 76 -104.5t131 -37.5q92 0 152 43q8 5 14 -3l28 -39q5 -9 -3 -14q-83 -59 -191 -59q-102 0 -176 51.5t-105 144.5 +zM289 166q11 -29 42 -29q32 0 41 29q4 12 4 98t-4 98q-9 29 -41 29q-31 0 -42 -29q-4 -12 -4 -98t4 -98z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="427" +d="M53 10v660q0 10 10 10h149q91 0 133.5 -42.5t42.5 -133.5q0 -112 -79 -147v-2q87 -26 87 -155q0 -110 -47.5 -155t-150.5 -45h-135q-10 0 -10 10zM166 396h36q45 0 62 19t17 74t-17 74.5t-62 19.5h-36q-6 0 -6 -6v-175q0 -6 6 -6zM160 103q0 -6 6 -6h36q48 0 67 22.5 +t19 81.5t-18.5 81t-67.5 22h-36q-6 0 -6 -6v-195z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="443" +d="M53 10v660q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109h-157q-10 0 -10 10zM160 103q0 -6 6 -6h43q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-474z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="381" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="376" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-184q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-274q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="426" +d="M54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74 +q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="447" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-268q0 -6 6 -6h115q6 0 6 6v268q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="354" +d="M16 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="441" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-281l137 283q4 8 13 8h91q4 0 5.5 -3t-0.5 -7l-136 -265l157 -395q4 -10 -5 -10h-93q-8 0 -11 7l-113 287l-45 -93v-191q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="372" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="558" +d="M53 10v660q0 10 10 10h87q13 0 16 -10l113 -383h4l110 383q3 10 16 10h86q10 0 10 -10v-660q0 -10 -10 -10h-77q-10 0 -10 10v430h-6l-88 -309q-3 -10 -13 -10h-44q-10 0 -13 10l-88 309h-6v-430q0 -10 -10 -10h-77q-10 0 -10 10z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="461" +d="M53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="425" +d="M150 0h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144 -48.5t49 -160.5q0 -110 -49.5 -159.5t-143.5 -49.5h-34q-6 0 -6 -6v-246q0 -10 -10 -10zM200 359q47 0 66.5 24.5t19.5 87.5t-19.5 87.5t-66.5 24.5h-34q-6 0 -6 -6v-212q0 -6 6 -6h34z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="429" +d="M419 35l-43 -53q-7 -7 -14 0l-47 40q-40 -31 -100 -31q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-4 -178.5t-17 -71.5l50 -41q8 -6 2 -14zM215 87q18 0 30 4l-50 41q-8 6 -2 14l34 41q7 9 15 1 +l38 -34h2v186q0 186 -9 214q-12 38 -58 38q-47 0 -59 -38q-7 -22 -7 -214q0 -193 7 -214q5 -18 21 -28.5t38 -10.5z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="436" +d="M404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="375" +d="M231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="401" +d="M239 0h-77q-8 0 -10 10l-135 660q-2 10 9 10h86q9 0 10 -10l79 -459h3l76 459q1 10 11 10h84q11 0 9 -10l-135 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="579" +d="M445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="402" +d="M380 0h-88q-8 0 -11 10l-79 216h-2l-79 -216q-3 -10 -11 -10h-88q-11 0 -8 10l133 345l-121 315q-3 10 8 10h88q8 0 11 -10l67 -193h2l67 193q3 10 11 10h88q11 0 8 -10l-122 -315l134 -345q3 -10 -8 -10z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="370" +d="M326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="247" +d="M197 -84h-135q-10 0 -10 10v804q0 10 10 10h135q10 0 10 -10v-63q0 -10 -10 -10h-46q-6 0 -6 -6v-646q0 -6 6 -6h46q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="245" +d="M214 -9h-57q-10 0 -11 10l-125 678q-2 10 9 10h57q9 0 11 -10l125 -678q2 -10 -9 -10z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="247" +d="M185 -84h-135q-10 0 -10 10v63q0 10 10 10h45q6 0 6 6v646q0 6 -6 6h-45q-10 0 -10 10v63q0 10 10 10h135q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="408" +d="M364 263h-74q-9 0 -13 10l-72 263h-2l-71 -263q-4 -10 -13 -10h-75q-10 0 -7 10l122 397q3 10 14 10h62q11 0 14 -10l122 -397q3 -10 -7 -10z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="411" +d="M411 -128h-411v57h411v-57z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="415" +d="M287 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="401" +d="M143 0h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-237h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-39q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="357" +d="M188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v237q0 10 10 10h82q10 0 10 -10v-660q0 -10 -10 -10zM141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34 +q-5 -17 -5 -122z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="256" +d="M160 0h-82q-10 0 -10 10v388q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v41q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60q0 -6 6 -6h56q10 0 10 -10v-58q0 -10 -10 -10h-56q-6 0 -6 -6v-388q0 -10 -10 -10z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-236h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM11 -180h-15q-10 0 -10 10v72q0 10 10 10l14 1q22 2 31.5 13.5t9.5 42.5v503q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="396" +d="M376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-383l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286q5 -10 -6 -10z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="233" +d="M197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="610" +d="M553 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q68 0 93 -53h1q34 53 101 53q122 0 122 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="401" +d="M143 -180h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-39h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-219q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="401" +d="M340 -180h-82q-10 0 -10 10v219h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-642q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="295" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="350" +d="M176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44 +q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="255" +d="M219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="362" +d="M216 0h-70q-8 0 -11 10l-119 462q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 8 -10l-119 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="541" +d="M403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="365" +d="M345 0h-84q-9 0 -13 8l-66 145h-1l-65 -145q-4 -8 -14 -8h-82q-10 0 -5 11l116 237l-109 223q-6 11 5 11h82q10 0 14 -8l61 -131h1l57 131q4 8 14 8h82q10 0 5 -11l-110 -223l117 -237q6 -11 -5 -11z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="320" +d="M286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="312" +d="M262 -84h-28q-56 0 -87 31t-31 88v184q0 36 -12.5 53t-43.5 17q-10 0 -10 10v63q0 10 10 10q31 0 43.5 17t12.5 53v179q0 57 31 88t87 31h28q10 0 10 -10v-63q0 -10 -10 -10h-10q-42 0 -42 -46v-148q0 -62 -10.5 -89.5t-44.5 -41.5v-3q34 -14 44.5 -41.5t10.5 -89.5v-153 +q0 -46 42 -46h10q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="281" +d="M171 -84h-61q-10 0 -10 10v804q0 10 10 10h61q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="312" +d="M77 -84h-27q-10 0 -10 10v63q0 10 10 10h9q42 0 42 46v153q0 62 10.5 89.5t45.5 41.5v3q-35 14 -45.5 41.5t-10.5 89.5v148q0 46 -42 46h-9q-10 0 -10 10v63q0 10 10 10h27q57 0 88 -31t31 -88v-179q0 -36 12.5 -53t42.5 -17q10 0 10 -10v-63q0 -10 -10 -10 +q-30 0 -42.5 -17t-12.5 -53v-184q0 -57 -31 -88t-88 -31z" /> + <glyph glyph-name="asciitilde" unicode="~" +d="M261 213q-32 0 -70 24q-34 21 -47 21q-15 0 -25 -8.5t-24 -32.5q-4 -7 -13 -2l-47 25q-9 5 -4 15q41 84 106 84q32 0 70 -24q34 -21 47 -21q16 0 26 8.5t24 32.5q4 7 13 2l46 -25q9 -5 4 -15q-40 -84 -106 -84z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="194" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="241" +d="M144 312q10 0 10 -10l22 -490q0 -10 -10 -10h-91q-10 0 -10 10l22 490q0 10 10 10h47zM173 472v-99q0 -10 -10 -10h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10z" /> + <glyph glyph-name="cent" unicode="¢" +d="M212 -99h-17q-10 0 -10 10v81q-99 6 -127 94q-12 37 -12 155t12 155q28 88 127 94v81q0 10 10 10h17q10 0 10 -10v-81q114 -11 130 -122q2 -11 -7 -12l-77 -15q-11 -2 -12 7q-7 39 -34 47v-308q27 8 34 46q1 9 12 7l77 -14q9 -1 7 -12q-15 -111 -130 -122v-81 +q0 -10 -10 -10zM153 116q8 -24 32 -30v309q-25 -4 -32 -29q-5 -16 -5 -125t5 -125z" /> + <glyph glyph-name="sterling" unicode="£" +d="M359 0h-302q-10 0 -10 10v73q0 5 3 10q27 36 27 91v93q0 6 -6 6h-29q-10 0 -10 10v53q0 10 10 10h29q6 0 6 6v172q0 73 36.5 114t108.5 41q130 0 144 -141q2 -10 -8 -12l-77 -13q-9 -2 -11 8q-3 35 -13.5 50t-33.5 15q-44 0 -44 -60v-174q0 -6 6 -6h89q10 0 10 -10v-53 +q0 -10 -10 -10h-89q-6 0 -6 -6v-93q0 -60 -25 -89v-2h205q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="currency" unicode="¤" +d="M353 204l-34 -35q-7 -7 -14 0l-37 36q-33 -18 -69 -18q-40 0 -70 18l-36 -36q-7 -7 -14 0l-35 35q-6 6 0 14l37 37q-17 31 -17 68q0 38 18 68l-37 37q-7 7 0 14l35 35q7 7 14 0l36 -37q30 18 69 18q37 0 70 -18l37 37q7 7 14 0l34 -35q7 -7 0 -14l-37 -37q18 -33 18 -68 +q0 -37 -18 -70l36 -35q6 -8 0 -14zM199 257q29 0 47 18.5t18 47.5t-18 47.5t-47 18.5q-28 0 -46 -18.5t-18 -47.5t18 -47.5t46 -18.5z" /> + <glyph glyph-name="yen" unicode="¥" +d="M240 0h-81q-10 0 -10 10v110q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h88q6 0 6 6v43q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h78v3l-109 338q-3 10 8 10h85q9 0 12 -10l71 -263h3l69 263q3 10 12 10h83q11 0 8 -10l-109 -338v-3h77q10 0 10 -10v-54q0 -10 -10 -10 +h-87q-6 0 -6 -6v-43q0 -6 6 -6h87q10 0 10 -10v-54q0 -10 -10 -10h-87q-6 0 -6 -6v-110q0 -10 -10 -10z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="281" +d="M171 388h-61q-10 0 -10 10v332q0 10 10 10h61q10 0 10 -10v-332q0 -10 -10 -10zM171 -84h-61q-10 0 -10 10v336q0 10 10 10h61q10 0 10 -10v-336q0 -10 -10 -10z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="467" +d="M231 -189q-102 0 -128 82q-8 24 -8 66q0 9 8 9l73 7q8 0 8 -9q0 -30 5 -45q8 -27 43 -27q33 0 43 27q5 15 5 40q0 32 -5 47q-11 35 -86 61t-96 89q-13 39 -13 94q0 45 10 74q18 56 69 75v1q-37 16 -53 60q-9 31 -9 75t8 68q27 84 130 84q100 0 126 -82q9 -27 9 -66 +q0 -9 -8 -9l-73 -7q-9 0 -9 9q0 33 -4 45q-8 27 -40 27q-33 0 -41 -27q-4 -12 -4 -42q0 -27 5 -42q11 -36 83 -60q74 -25 96 -88q12 -37 12 -95q0 -42 -9 -74q-18 -56 -69 -75v-1q41 -17 55 -60q10 -29 10 -77q0 -43 -9 -70q-27 -84 -134 -84zM234 150q41 0 53 38q6 20 6 64 +q0 46 -6 65q-12 38 -53 38q-40 0 -54 -38q-6 -19 -6 -65q0 -44 6 -64q13 -38 54 -38z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="415" +d="M316 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="706" +d="M353 -9q-108 0 -184.5 53.5t-108.5 149.5q-19 59 -19 146t19 146q32 96 108.5 149.5t184.5 53.5t184.5 -53.5t108.5 -149.5q19 -59 19 -146t-19 -146q-32 -96 -108.5 -149.5t-184.5 -53.5zM353 59q83 0 140 39.5t81 112.5q17 55 17 129t-17 129q-24 73 -81 112.5 +t-140 39.5t-140 -39.5t-81 -112.5q-17 -55 -17 -129t17 -129q24 -73 81 -112.5t140 -39.5zM357 143q-87 0 -113 76q-9 27 -9 121t9 121q26 76 113 76q47 0 79 -25t37 -64q2 -8 -5 -10l-61 -11q-7 -2 -9 5q-8 32 -41 32q-29 0 -38 -27q-4 -12 -4 -97t4 -97q9 -27 38 -27 +q33 0 41 32q2 7 9 5l61 -11q7 -2 5 -10q-5 -39 -37 -64t-79 -25z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="282" +d="M231 392h-45q-10 0 -10 10v18h-2q-13 -32 -58 -32q-35 0 -55.5 22t-20.5 63q0 50 26.5 74t72.5 24h31q6 0 6 6v7q0 41 -44 41q-23 0 -52 -17q-10 -5 -13 5l-16 38q-3 7 6 13q38 24 86 24q49 0 73.5 -24t24.5 -77v-185q0 -10 -10 -10zM138 445q16 0 27 10t11 27v30 +q0 6 -6 6h-23q-42 0 -42 -37q0 -36 33 -36z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="485" +d="M415 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-79 -79q-4 -4 0 -8l79 -79q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5zM214 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-78 -79q-4 -4 0 -8l78 -79 +q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M352 144h-73q-10 0 -10 10v71q0 6 -6 6h-217q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-157q0 -10 -10 -10z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="368" +d="M316 218h-264q-10 0 -10 10v75q0 10 10 10h264q10 0 10 -10v-75q0 -10 -10 -10z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="434" +d="M217 303q-123 0 -160 110q-11 37 -11 80q0 42 11 79q37 110 160 110t160 -110q11 -37 11 -79q0 -43 -11 -80q-37 -110 -160 -110zM217 338q45 0 77.5 22.5t45.5 62.5q9 29 9 70q0 40 -9 69q-13 40 -45.5 62.5t-77.5 22.5q-46 0 -78 -22t-46 -63q-9 -29 -9 -69 +q0 -41 9 -70q14 -41 46 -63t78 -22zM196 388h-25q-7 0 -7 7v198q0 7 7 7h47q61 0 61 -62q0 -37 -25 -55l29 -88q3 -7 -5 -7h-28q-6 0 -9 7l-24 79h-10q-4 0 -4 -5v-74q0 -7 -7 -7zM215 509q13 0 18.5 6t5.5 22q0 15 -5.5 20.5t-18.5 5.5h-8q-4 0 -4 -4v-45q0 -5 4 -5h8z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="415" +d="M310 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="341" +d="M170 445q-51 0 -85.5 34t-34.5 85q0 52 34.5 86t85.5 34q52 0 86.5 -34t34.5 -86q0 -51 -34.5 -85t-86.5 -34zM170 502q27 0 43.5 17.5t16.5 44.5q0 28 -16.5 45.5t-43.5 17.5q-26 0 -42.5 -17.5t-16.5 -45.5q0 -27 16.5 -44.5t42.5 -17.5z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M236 137h-73q-10 0 -10 10v102q0 6 -6 6h-101q-10 0 -10 10v70q0 10 10 10h101q6 0 6 6v102q0 10 10 10h73q10 0 10 -10v-102q0 -6 6 -6h100q10 0 10 -10v-70q0 -10 -10 -10h-100q-6 0 -6 -6v-102q0 -10 -10 -10zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10 +v-69q0 -10 -10 -10z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="281" +d="M238 430h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="281" +d="M139 422q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="415" +d="M185 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="mu" unicode="μ" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="510" +d="M440 -180h-61q-10 0 -10 10v759q0 6 -6 6h-54q-6 0 -6 -6v-759q0 -10 -10 -10h-61q-10 0 -10 10v428q-72 6 -117 65.5t-45 145.5q0 90 53 150.5t141 60.5h186q10 0 10 -10v-840q0 -10 -10 -10z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="197" +d="M141 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="415" +d="M139 -145l61 145q4 10 13 10h59q10 0 7 -10l-51 -145q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="281" +d="M191 430h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="287" +d="M144 386q-76 0 -97 63q-7 21 -7 88t7 88q21 63 97 63q75 0 96 -63q7 -21 7 -88t-7 -88q-21 -63 -96 -63zM144 449q26 0 32 21q4 12 4 67t-4 67q-6 21 -32 21q-27 0 -33 -21q-4 -12 -4 -67t4 -67q6 -21 33 -21z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="485" +d="M271 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l78 79q4 4 0 8l-78 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14zM70 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l79 79q4 4 0 8l-79 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14z +" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="740" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM619 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10 +h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="758" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM667 0h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -40q0 -12 -12 -10l-54 6 +q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="779" +d="M658 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10zM296 -9h-54 +q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34 +q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="391" +d="M251 312q10 0 10 -10v-75q0 -33 -19 -68l-56 -103q-25 -47 -25 -102q0 -23 4 -36q11 -32 46 -32t47 32q4 13 4 63q0 12 11 10l78 -7q10 -1 10 -12q0 -58 -9 -84q-15 -44 -53 -69.5t-90 -25.5q-54 0 -90 25.5t-51 69.5q-9 27 -9 66q0 63 28 118l56 105q16 30 16 55v70 +q0 10 10 10h82zM262 472v-99q0 -10 -10 -10h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM239 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z +" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM238 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM337 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM254 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24 +q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM318 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM166 769h-65 +q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM209 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65t-65 -26zM209 764 +q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="656" +d="M617 0h-278q-10 0 -10 10v131q0 6 -6 6h-157l-50 -137q-3 -10 -13 -10h-84q-10 0 -7 10l247 660q3 10 11 10h347q10 0 10 -10v-77q0 -10 -10 -10h-175q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h175q10 0 10 -10v-77 +q0 -10 -10 -10zM326 582l-127 -345h124q6 0 6 6v339h-3z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="387" +d="M112 -145l58 139q-89 15 -116 101q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-7 -138 -122 -159l-49 -140 +q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="381" +d="M237 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176 +q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="381" +d="M220 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176 +q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="381" +d="M53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10zM330 750h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="381" +d="M310 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM158 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10 +v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM136 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM132 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM234 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM215 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM63 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="443" +d="M220 0h-157q-10 0 -10 10v287q0 6 -6 6h-26q-10 0 -10 10v60q0 10 10 10h26q6 0 6 6v281q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109zM209 97q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-188q0 -6 6 -6h57 +q10 0 10 -10v-60q0 -10 -10 -10h-57q-6 0 -6 -6v-194q0 -6 6 -6h43z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="461" +d="M275 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74 +q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="429" +d="M244 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106 +zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="429" +d="M230 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106z +M215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38zM342 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="429" +d="M259 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66 +q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="429" +d="M323 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM171 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106 +q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="multiply" unicode="×" +d="M342 180l-46 -47q-7 -7 -14 0l-79 79q-4 3 -8 0l-78 -79q-7 -7 -14 0l-47 47q-7 7 0 14l79 78q3 4 0 8l-79 78q-7 7 0 14l47 47q7 7 14 0l78 -79q4 -3 8 0l79 79q7 7 14 0l46 -47q7 -7 0 -14l-79 -78q-3 -4 0 -8l79 -78q7 -7 0 -14z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="429" +d="M67 -30h-27q-11 0 -6 10l35 82q-10 18 -15 35q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q69 0 113 -36l21 48q4 9 13 9h26q10 0 7 -10l-36 -82q11 -20 16 -35q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106q-71 0 -115 35l-20 -47 +q-4 -9 -13 -9zM150 340v-102l125 305l-3 11q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214zM215 88q45 0 57 38q7 22 7 214v101l-125 -304l3 -11q12 -38 58 -38z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="443" +d="M255 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497 +q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="443" +d="M248 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5 +t-124.5 -46.5z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM349 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3 +t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="443" +d="M330 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM178 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52 +v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM218 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="425" +d="M150 0h-87q-10 0 -10 10v660q0 10 10 10h87q10 0 10 -10v-104q0 -6 6 -6h34q95 0 144 -48.5t49 -160.5q0 -110 -49 -159.5t-144 -49.5h-34q-6 0 -6 -6v-126q0 -10 -10 -10zM201 239q46 0 65.5 24t19.5 88q0 63 -19.5 87.5t-65.5 24.5h-35q-6 0 -6 -6v-212q0 -6 6 -6h35z +" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="413" +d="M237 -4h-18q-10 0 -10 10v73q0 10 10 10h7q30 0 37 24q5 15 5 105q0 89 -5 104q-8 24 -37 24h-7q-10 0 -10 10v73q0 10 10 10h5q29 0 36 24q4 12 4 59q0 73 -55 73q-56 0 -56 -73v-512q0 -10 -10 -10h-82q-10 0 -10 10v501q0 84 38.5 131t118.5 47q75 0 116.5 -42 +t41.5 -117q0 -54 -11 -80t-42 -48v-2q36 -22 48 -59q9 -27 9 -123q0 -116 -11 -148q-23 -74 -122 -74z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM228 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM215 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM319 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM236 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM300 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM148 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM191 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z +" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="357" +d="M88 -145l59 140q-74 17 -98 91q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-3 -50 -32 -83.5t-77 -43.5 +l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM228 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="380" +d="M206 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7 +l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="380" +d="M318 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191 +q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="380" +d="M299 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM147 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191 +q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM135 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="204" +d="M131 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="204" +d="M230 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="204" +d="M211 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM59 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="385" +d="M310 574l-50 -16l22 -42q40 -76 53 -131.5t13 -153.5q0 -107 -11 -141q-15 -47 -53 -73t-92 -26t-91.5 26t-52.5 73q-11 34 -11 135q0 103 13 144q31 92 118 92q32 0 47 -11h1l-43 80l-67 -21q-8 -3 -11 6l-16 48q-3 9 7 12l55 17l-41 78q-5 10 6 10h81q9 0 15 -10 +l26 -50l62 20q8 3 11 -6l16 -48q3 -9 -7 -12zM192 85q36 0 49 35q5 18 5 105q0 91 -5 109q-13 35 -49 35t-48 -35q-5 -18 -5 -109q0 -87 5 -105q11 -35 48 -35z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10zM247 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61 +q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM224 555h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="385" +d="M213 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151z +M246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="385" +d="M320 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73 +t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM237 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="385" +d="M301 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM149 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151 +q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="divide" unicode="÷" +d="M199 382q-27 0 -44.5 17t-17.5 45q0 27 17.5 44t44.5 17t44.5 -17t17.5 -44q0 -28 -17.5 -45t-44.5 -17zM352 231h-306q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-70q0 -10 -10 -10zM199 47q-27 0 -44.5 17t-17.5 44q0 28 17.5 45t44.5 17t44.5 -17t17.5 -45 +q0 -27 -17.5 -44t-44.5 -17z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26t-92 26l-19 -37q-5 -10 -13 -10h-22q-12 0 -7 10l33 64q-17 20 -24 46q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 93 -26l19 37q5 10 13 10h22q12 0 7 -10l-33 -65q15 -19 24 -45q11 -34 11 -151zM138 241 +v-72l99 206q-14 23 -45 23q-38 0 -49 -34q-5 -18 -5 -123zM247 241v69l-99 -204q14 -22 44 -22q39 0 50 34q5 18 5 123z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM233 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125 +q5 -10 -6 -10z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="403" +d="M226 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-8 -10 -18 -10zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462 +q0 -10 -10 -10z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="403" +d="M329 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70 +q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="403" +d="M310 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM158 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317 +q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM212 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7 +l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="401" +d="M143 -180h-82q-10 0 -10 10v840q0 10 10 10h82q10 0 10 -10v-237h1q23 58 90 58q80 0 105 -80q13 -39 13 -170t-13 -170q-25 -80 -105 -80q-68 0 -90 58h-1v-219q0 -10 -10 -10zM260 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM294 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86 +q0 -10 -10 -10zM142 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM312 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="amacron" unicode="ā" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM294 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="421" +d="M12 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10zM160 237h101l-48 253h-3zM209 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45 +q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="abreve" unicode="ă" horiz-adv-x="383" +d="M327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75 +q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="421" +d="M341 -190q-41 0 -65 21.5t-24 61.5q0 57 58 108q-4 2 -5 9l-26 137h-137l-26 -137q-2 -10 -11 -10h-85q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -6 -5 -10q-30 -20 -49.5 -45t-19.5 -46q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13 +q-25 -17 -60 -17zM261 237l-48 253h-3l-50 -253h101z" /> + <glyph glyph-name="aogonek" unicode="ą" horiz-adv-x="383" +d="M268 -190q-41 0 -65.5 21.5t-24.5 61.5q0 56 62 112q-1 1 -1 5v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5 +t35 -126.5v-316q0 -7 -7 -11q-68 -48 -68 -90q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM224 761h-55q-5 0 -7 3 +t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="cacute" unicode="ć" horiz-adv-x="357" +d="M207 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125 +q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM335 750h-60 +q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" horiz-adv-x="357" +d="M316 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9 +q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="387" +d="M236 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9 +l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" horiz-adv-x="357" +d="M188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36zM220 574h-82 +q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="387" +d="M54 95q-13 40 -13 245t13 245q34 104 154 104q155 0 164 -163q2 -11 -7 -12l-81 -14q-11 -2 -11 9q-4 83 -62 83q-42 0 -54 -38q-7 -22 -7 -214t7 -214q12 -38 54 -38q58 0 62 83q0 11 11 9l81 -14q9 -1 7 -12q-9 -163 -164 -163q-120 0 -154 104zM230 747h-52 +q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ccaron" unicode="č" horiz-adv-x="357" +d="M214 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM188 -9q-108 0 -139 95q-12 37 -12 155t12 155q31 95 139 95q63 0 103 -36t44 -95q0 -10 -8 -11l-76 -15q-11 -2 -12 9 +q-7 54 -51 54q-34 0 -44 -31q-5 -16 -5 -125t5 -125q10 -31 44 -31q44 0 51 54q1 11 12 9l76 -15q8 -1 8 -11q-4 -59 -44 -95t-103 -36z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="443" +d="M228 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109h-157q-10 0 -10 10zM160 103 +q0 -6 6 -6h43q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-474z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="401" +d="M388 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v237q0 10 10 10h82q10 0 10 -10v-660q0 -10 -10 -10z +M141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="443" +d="M220 0h-157q-10 0 -10 10v287q0 6 -6 6h-26q-10 0 -10 10v60q0 10 10 10h26q6 0 6 6v281q0 10 10 10h157q129 0 165 -109q17 -52 17 -231t-17 -231q-36 -109 -165 -109zM209 97q55 0 72 49q12 38 12 194t-12 194q-17 49 -72 49h-43q-6 0 -6 -6v-188q0 -6 6 -6h57 +q10 0 10 -10v-60q0 -10 -10 -10h-57q-6 0 -6 -6v-194q0 -6 6 -6h43z" /> + <glyph glyph-name="dcroat" unicode="đ" horiz-adv-x="399" +d="M350 533v-523q0 -10 -10 -10h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v100q0 6 -6 6h-73q-10 0 -10 10v58q0 10 10 10h73q6 0 6 6v47q0 10 10 10h82q10 0 10 -10v-47q0 -6 6 -6h20q10 0 10 -10v-58 +q0 -10 -10 -10h-20q-6 0 -6 -6zM141 241q0 -105 5 -122q11 -34 49 -34q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="381" +d="M305 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77 +q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="emacron" unicode="ē" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM293 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="381" +d="M202 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10 +h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="ebreve" unicode="ĕ" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM190 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="381" +d="M242 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77 +q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="edotaccent" unicode="ė" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74 +q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32zM232 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="381" +d="M264 -190q-41 0 -65 21.5t-24 61.5q0 53 56 107h-168q-10 0 -10 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-15 +q-29 -20 -48.5 -45.5t-19.5 -45.5q0 -24 19 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-23 -17 -60 -17z" /> + <glyph glyph-name="eogonek" unicode="ę" horiz-adv-x="380" +d="M190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-8 -39 -29 -63q-64 -102 -64 -136q0 -24 20 -24q10 0 18 5q9 6 13 -4 +l20 -46q3 -8 -5 -13q-25 -17 -60 -17q-41 0 -65 21.5t-24 61.5q0 48 38 99q-3 -1 -12 -1zM238 288q6 0 6 6q0 58 -6 74q-12 32 -47 32q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="381" +d="M228 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h279q10 0 10 -10v-77q0 -10 -10 -10h-176q-6 0 -6 -6v-179q0 -6 6 -6h152q10 0 10 -10v-77 +q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="ecaron" unicode="ě" horiz-adv-x="380" +d="M216 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM190 -9q-111 0 -142 96q-11 33 -11 154t11 154q31 96 143 96q113 0 144 -96q11 -33 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6 +q0 -65 5 -83q11 -32 47 -32q40 0 53 43q3 9 12 7l77 -15q9 -1 7 -12q-10 -54 -50.5 -85.5t-99.5 -31.5zM191 400q-36 0 -46 -32q-6 -16 -6 -74q0 -6 6 -6h93q6 0 6 6q0 58 -6 74q-10 32 -47 32z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="426" +d="M54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74 +q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106zM341 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" horiz-adv-x="400" +d="M328 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1 +q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5zM195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z +" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="426" +d="M213 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80 +q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gbreve" unicode="ğ" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35zM200 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="426" +d="M254 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5 +t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" horiz-adv-x="400" +d="M192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5z +M195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35zM242 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="426" +d="M176 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM54 97q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q153 0 169 -159q2 -10 -8 -12l-81 -14q-9 -2 -11 8q-8 80 -68 80q-47 0 -59 -38q-7 -22 -7 -214t7 -214 +q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106q-126 0 -161 106z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" horiz-adv-x="400" +d="M236 572h-70q-10 0 -10 10v55q0 14 7 22l61 73q6 7 13 7q9 0 9 -10v-147q0 -10 -10 -10zM192 -189q-55 0 -93 27t-50 70q-2 8 4 11l76 27q9 4 13 -5q17 -37 53 -37q24 0 38.5 15.5t14.5 43.5v101h-1q-21 -58 -89 -58q-80 0 -105 80q-13 39 -13 162t13 162q25 81 105 81 +q68 0 89 -60h1v41q0 10 10 10h82q10 0 10 -10v-497q0 -79 -42.5 -121.5t-115.5 -42.5zM195 98q37 0 48 35q5 16 5 115q0 98 -5 115q-11 34 -48 34t-48 -34q-5 -17 -5 -115q0 -99 5 -115q11 -35 48 -35z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="447" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-268q0 -6 6 -6h115q6 0 6 6v268q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10zM350 750h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-236h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10zM335 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3 +t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="447" +d="M384 0h-87q-10 0 -10 10v283q0 6 -6 6h-115q-6 0 -6 -6v-283q0 -10 -10 -10h-87q-10 0 -10 10v475q0 6 -6 6h-19q-10 0 -10 10v60q0 10 10 10h19q6 0 6 6v93q0 10 10 10h87q10 0 10 -10v-93q0 -6 6 -6h115q6 0 6 6v93q0 10 10 10h87q10 0 10 -10v-93q0 -6 6 -6h19 +q10 0 10 -10v-60q0 -10 -10 -10h-19q-6 0 -6 -6v-475q0 -10 -10 -10zM281 396q6 0 6 6v83q0 6 -6 6h-115q-6 0 -6 -6v-83q0 -6 6 -6h115z" /> + <glyph glyph-name="hbar" unicode="ħ" horiz-adv-x="405" +d="M348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v523q0 6 -6 6h-20q-10 0 -10 10v58q0 10 10 10h20q6 0 6 6v47q0 10 10 10h82q10 0 10 -10v-47q0 -6 6 -6h73q10 0 10 -10v-58q0 -10 -10 -10h-73q-6 0 -6 -6v-99h1 +q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM151 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19 +q-24 -24 -51 -24z" /> + <glyph glyph-name="itilde" unicode="ĩ" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM147 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19 +q-24 -24 -51 -24z" /> + <glyph glyph-name="Imacron" unicode="Ī" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM209 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="imacron" unicode="ī" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM205 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ibreve" unicode="Ĭ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM106 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="ibreve" unicode="ĭ" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM102 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Iogonek" unicode="Į" horiz-adv-x="213" +d="M100 -190q-41 0 -65.5 21.5t-24.5 61.5q0 54 56 107h-3q-10 0 -10 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -5 -3 -8q-63 -59 -63 -93q0 -24 19 -24q9 0 19 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="iogonek" unicode="į" horiz-adv-x="204" +d="M143 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM93 -190q-41 0 -65 21.5t-24 61.5q0 55 56 107q-9 0 -9 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -5 -4 -9q-62 -59 -62 -92q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13 +q-25 -17 -60 -17z" /> + <glyph glyph-name="Idotaccent" unicode="İ" horiz-adv-x="213" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-660q0 -10 -10 -10h-87q-10 0 -10 10zM148 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="204" +d="M143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="354" +d="M16 36q-6 8 1 14l59 54q7 6 15 -1q17 -15 40 -15q65 0 65 79v503q0 10 10 10h87q10 0 10 -10v-494q0 -94 -46.5 -139.5t-128.5 -45.5q-76 0 -112 45zM374 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="204" +d="M11 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 31.5 13.5t9.5 41.5v502q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5zM230 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125 +q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="441" +d="M194 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-281l137 283q4 8 13 8h91q4 0 5.5 -3t-0.5 -7l-136 -265l157 -395q4 -10 -5 -10h-93q-8 0 -11 7l-113 287l-45 -93v-191 +q0 -10 -10 -10h-87q-10 0 -10 10z" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="396" +d="M176 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v660q0 10 10 10h82q10 0 10 -10v-383l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286 +q5 -10 -6 -10z" /> + <glyph glyph-name="kgreenlandic" unicode="ĸ" horiz-adv-x="396" +d="M376 0h-87q-9 0 -13 10l-83 197l-40 -72v-125q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-185l103 185q6 10 14 10h84q11 0 6 -10l-106 -176l128 -286q5 -10 -6 -10z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="372" +d="M139 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="233" +d="M129 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="372" +d="M151 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="233" +d="M98 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="372" +d="M208 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="233" +d="M205 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="372" +d="M53 10v660q0 10 10 10h87q10 0 10 -10v-567q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10zM335 246h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="286" +d="M197 -6h-3q-79 2 -111 35.5t-32 110.5v530q0 10 10 10h82q10 0 10 -10v-530q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10zM287 255h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="372" +d="M246 385l-86 -59v-223q0 -6 6 -6h176q10 0 10 -10v-77q0 -10 -10 -10h-279q-10 0 -10 10v246l-36 -24q-4 -2 -7 -0.5t-3 5.5v78q0 9 10 16l36 25v314q0 10 10 10h87q10 0 10 -10v-245l86 60q4 2 7 0.5t3 -5.5v-79q0 -9 -10 -16z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="233" +d="M197 384l-44 -31v-213q0 -44 39 -52l5 -1q10 -2 10 -11v-72q0 -10 -10 -10h-3q-79 2 -111 35.5t-32 110.5v146l-27 -18q-4 -2 -7 -0.5t-3 5.5v75q0 9 10 16l27 18v288q0 10 10 10h82q10 0 10 -10v-222l44 31q4 2 7 0.5t3 -5.5v-74q0 -9 -10 -16z" /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="461" +d="M228 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74 +q-10 0 -10 10z" /> + <glyph glyph-name="nacute" unicode="ń" horiz-adv-x="405" +d="M209 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="461" +d="M204 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10 +z" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" horiz-adv-x="405" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331 +q0 -10 -10 -10z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="461" +d="M256 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM53 10v660q0 10 10 10h106q11 0 14 -10l126 -470h5v470q0 10 10 10h74q10 0 10 -10v-660q0 -10 -10 -10h-99q-11 0 -14 10 +l-132 470h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10z" /> + <glyph glyph-name="ncaron" unicode="ň" horiz-adv-x="405" +d="M228 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM348 0h-82q-10 0 -10 10v317q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82 +q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-331q0 -10 -10 -10z" /> + <glyph glyph-name="Eng" unicode="Ŋ" horiz-adv-x="461" +d="M250 -180h-11q-10 0 -10 10v77q0 9 10 10l10 1q53 5 53 58v6l-149 498h-6v-470q0 -10 -10 -10h-74q-10 0 -10 10v660q0 10 10 10h106q11 0 14 -10l126 -461h5v461q0 10 10 10h74q10 0 10 -10v-684q0 -87 -38.5 -126.5t-119.5 -39.5z" /> + <glyph glyph-name="eng" unicode="ŋ" horiz-adv-x="405" +d="M216 -180h-11q-10 0 -10 10v72q0 10 10 10l10 1q22 2 31.5 13.5t9.5 42.5v358q0 70 -52 70q-51 0 -51 -70v-317q0 -10 -10 -10h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-38h1q29 57 92 57q112 0 112 -150v-377q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="429" +d="M317 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38 +q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="omacron" unicode="ō" horiz-adv-x="385" +d="M295 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241 +q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="429" +d="M214 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177 +t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="obreve" unicode="ŏ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34 +q38 0 49 34q5 17 5 122zM192 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q125 0 160 -106q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214 +q12 -38 58 -38zM304 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107q-9 -10 -19 -10zM171 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" horiz-adv-x="385" +d="M280 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM147 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10zM348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26q-54 0 -91.5 26t-52.5 73 +q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 92.5 -26t52.5 -73q11 -34 11 -151zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="608" +d="M569 0h-280q-10 0 -10 10v11h-1q-26 -30 -81 -30q-110 0 -143 102q-8 24 -10.5 67.5t-2.5 179.5t2.5 179.5t10.5 67.5q33 102 143 102q55 0 81 -30h1v11q0 10 10 10h280q10 0 10 -10v-77q0 -10 -10 -10h-177q-6 0 -6 -6v-179q0 -6 6 -6h153q10 0 10 -10v-77 +q0 -10 -10 -10h-153q-6 0 -6 -6v-186q0 -6 6 -6h177q10 0 10 -10v-77q0 -10 -10 -10zM215 88q45 0 57 38q7 22 7 214t-7 214q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214t7 -214q12 -38 58 -38z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="589" +d="M399 -9q-70 0 -102 37h-2q-37 -37 -103 -37q-54 0 -91.5 26t-52.5 73q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q65 0 103 -38h1q41 38 104 38q112 0 144 -98q11 -38 11 -177q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15 +q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM447 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM246 241q0 105 -5 122q-11 34 -49 34q-37 0 -48 -34q-5 -17 -5 -122t5 -122q11 -34 48 -34q38 0 49 34q5 17 5 122z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="436" +d="M404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35zM206 761h-55 +q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="295" +d="M175 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="436" +d="M186 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294 +q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="295" +d="M65 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="436" +d="M217 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM404 0h-93q-8 0 -11 7l-83 271h-17h-34q-6 0 -6 -6v-262q0 -10 -10 -10h-87q-10 0 -10 10v660q0 10 10 10h137 +q95 0 144.5 -47t49.5 -155q0 -128 -81 -174l96 -294q4 -10 -5 -10zM201 373q46 0 66 23t20 82t-20 82t-66 23h-35q-6 0 -6 -6v-198q0 -6 6 -6h35z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="295" +d="M183 555h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM143 0h-82q-10 0 -10 10v462q0 10 10 10h82q10 0 10 -10v-47h1q30 66 106 66q13 0 18 -1q10 -3 7 -11l-23 -85q-2 -6 -10 -6 +h-16q-83 0 -83 -94v-284q0 -10 -10 -10z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM221 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="sacute" unicode="ś" horiz-adv-x="350" +d="M191 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101 +t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM330 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" horiz-adv-x="350" +d="M304 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5 +t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="404" +d="M105 -145l58 139q-129 18 -132 175q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8q-3 87 -64 87 +q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5q0 -91 -31 -141t-101 -60l-49 -139q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="scedilla" unicode="ş" horiz-adv-x="350" +d="M78 -145l58 140q-48 9 -76.5 40.5t-33.5 78.5q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44 +q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -54 -28.5 -93t-80.5 -50l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="404" +d="M375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8 +q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5zM219 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="350" +d="M202 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5 +t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="375" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="255" +d="M111 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="375" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104 +q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="255" +d="M208 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="375" +d="M231 0h-87q-10 0 -10 10v343q0 6 -6 6h-60q-10 0 -10 10v71q0 10 10 10h60q6 0 6 6v121q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-121q0 -6 6 -6h60q10 0 10 -10v-71q0 -10 -10 -10h-60q-6 0 -6 -6v-343 +q0 -10 -10 -10z" /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="255" +d="M219 -6h-30q-64 0 -93.5 31t-29.5 102v128q0 6 -6 6h-21q-10 0 -10 10v56q0 10 10 10h21q6 0 6 6v55q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58q0 -10 -10 -10h-45q-6 0 -6 -6v-55 +q0 -6 6 -6h28q10 0 10 -10v-56q0 -10 -10 -10h-28q-6 0 -6 -6v-126q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="443" +d="M266 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511 +q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="utilde" unicode="ũ" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM246 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61 +q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="443" +d="M324 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="umacron" unicode="ū" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM304 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="443" +d="M221 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87 +q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5z" /> + <glyph glyph-name="ubreve" unicode="ŭ" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM201 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49 +q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM221 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65 +t-65 -26zM221 764q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="uring" unicode="ů" horiz-adv-x="403" +d="M201 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM201 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150 +v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="443" +d="M222 -9q-80 0 -125 46.5t-45 135.5v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -89 -44.5 -135.5t-124.5 -46.5zM308 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107 +q-9 -10 -19 -10zM175 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" horiz-adv-x="403" +d="M342 0h-82q-10 0 -10 10v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM289 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10z +M156 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="443" +d="M225 -190q-41 0 -65.5 21.5t-24.5 61.5q0 47 43 102q-60 11 -93 56t-33 122v497q0 10 10 10h87q10 0 10 -10v-511q0 -33 16.5 -52t46.5 -19t46 19t16 52v511q0 10 10 10h87q10 0 10 -10v-497q0 -76 -32.5 -121t-91.5 -57q-48 -55 -48 -86q0 -24 19 -24q10 0 18 5 +q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="uogonek" unicode="ų" horiz-adv-x="403" +d="M284 -190q-41 0 -65.5 21.5t-24.5 61.5q0 54 59 109q-3 3 -3 8v38h-1q-29 -57 -91 -57q-111 0 -111 150v331q0 10 10 10h82q10 0 10 -10v-317q0 -70 50 -70q51 0 51 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -7 -7 -11q-29 -19 -48 -44.5t-19 -45.5q0 -24 19 -24 +q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="579" +d="M445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10zM416 750h-60q-10 0 -19 10l-48 60 +h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="541" +d="M397 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10 +l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM321 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM313 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60 +q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM302 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM150 769h-65q-10 0 -10 10v86q0 10 10 10h65 +q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="370" +d="M326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10zM202 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z +" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="320" +d="M187 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="370" +d="M229 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="320" +d="M286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10zM203 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="370" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM326 0h-281q-10 0 -10 10v72q0 4 2 10l187 489v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10 +l-184 -487v-2h176q10 0 10 -10v-77q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="320" +d="M188 555h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM286 0h-248q-10 0 -10 10v68q0 7 3 13l149 299v2h-132q-10 0 -10 10v70q0 10 10 10h238q10 0 10 -10v-57q0 -7 -3 -13 +l-155 -309v-2h148q10 0 10 -10v-71q0 -10 -10 -10z" /> + <glyph glyph-name="florin" unicode="ƒ" +d="M338 325h-78l-46 -343q-11 -84 -49.5 -123t-115.5 -39h-21q-10 0 -10 10v74q0 10 10 10h15q33 0 49 14t20 49l47 348h-67q-10 0 -10 10v62q0 10 10 10h78l15 111q11 84 49.5 123t115.5 39h21q10 0 10 -10v-74q0 -10 -10 -10h-15q-33 0 -49 -14t-20 -49l-16 -116h67 +q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="Aringacute" unicode="Ǻ" horiz-adv-x="421" +d="M239 773h-58q-5 0 -6 3t2 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-103 -95q-10 -10 -20 -10zM401 0h-85q-9 0 -11 10l-27 137h-135l-27 -137q-2 -10 -11 -10h-85q-10 0 -8 10l127 569q3 9 10 10q-27 25 -27 67q0 39 25.5 64.5t64.5 25.5t64.5 -25.5t25.5 -64.5 +q0 -41 -28 -67q9 0 11 -10l124 -569q2 -10 -8 -10zM212 609q19 0 32 13.5t13 33.5t-13 33.5t-32 13.5t-32 -13.5t-13 -33.5t13 -33.5t32 -13.5zM210 490l-50 -253h101l-48 253h-3z" /> + <glyph glyph-name="aringacute" unicode="ǻ" horiz-adv-x="383" +d="M215 773h-58q-5 0 -6 3t2 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-104 -95q-10 -10 -19 -10zM327 0h-78q-10 0 -10 10v38h-1q-9 -26 -33 -41.5t-56 -15.5q-48 0 -81.5 34t-33.5 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28 +q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q81 0 116 -38.5t35 -126.5v-316q0 -10 -10 -10zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64zM191 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26z +M191 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="AEacute" unicode="Ǽ" horiz-adv-x="656" +d="M375 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM617 0h-278q-10 0 -10 10v131q0 6 -6 6h-157l-50 -137q-3 -10 -13 -10h-84q-10 0 -7 10l247 660q3 10 11 10h347q10 0 10 -10v-77q0 -10 -10 -10h-175q-6 0 -6 -6v-179 +q0 -6 6 -6h152q10 0 10 -10v-77q0 -10 -10 -10h-152q-6 0 -6 -6v-186q0 -6 6 -6h175q10 0 10 -10v-77q0 -10 -10 -10zM326 582l-127 -345h124q6 0 6 6v339h-3z" /> + <glyph glyph-name="aeacute" unicode="ǽ" horiz-adv-x="578" +d="M315 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28 +q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74 +q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="Oslashacute" unicode="Ǿ" horiz-adv-x="429" +d="M67 -30h-27q-11 0 -6 10l35 82q-10 18 -15 35q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q69 0 113 -36l21 48q4 9 13 9h26q10 0 7 -10l-36 -82q11 -20 16 -35q8 -24 10.5 -66t2.5 -177t-2.5 -177t-10.5 -66q-35 -106 -160 -106q-71 0 -115 35l-20 -47 +q-4 -9 -13 -9zM150 340v-102l125 305l-3 11q-12 38 -57 38q-46 0 -58 -38q-7 -22 -7 -214zM215 88q45 0 57 38q7 22 7 214v101l-125 -304l3 -11q12 -38 58 -38zM230 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="oslashacute" unicode="ǿ" horiz-adv-x="385" +d="M348 241q0 -117 -11 -151q-15 -47 -52.5 -73t-92.5 -26t-92 26l-19 -37q-5 -10 -13 -10h-22q-12 0 -7 10l33 64q-17 20 -24 46q-11 34 -11 151t11 151q15 47 52.5 73t91.5 26q55 0 93 -26l19 37q5 10 13 10h22q12 0 7 -10l-33 -65q15 -19 24 -45q11 -34 11 -151zM138 241 +v-72l99 206q-14 23 -45 23q-38 0 -49 -34q-5 -18 -5 -123zM247 241v69l-99 -204q14 -22 44 -22q39 0 50 34q5 18 5 123zM213 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="404" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM375 195q0 -104 -40 -154t-134 -50q-166 0 -170 178q0 10 8 11l84 14q11 2 11 -9q2 -54 18.5 -77t51.5 -23q33 0 48.5 21.5t15.5 75.5q0 55 -13.5 78.5t-53.5 39.5l-41 16 +q-70 27 -96 69t-26 123q0 181 165 181q158 0 167 -166q0 -8 -9 -11l-80 -12q-11 -2 -11 8q-3 87 -64 87q-62 0 -62 -82q0 -47 13 -67t53 -36l41 -16q68 -27 96 -70.5t28 -128.5z" /> + <glyph glyph-name="scommaaccent" unicode="ș" horiz-adv-x="350" +d="M139 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM176 -9q-65 0 -104.5 33t-45.5 90q-2 10 8 12l72 14q10 2 12 -8q7 -56 59 -56q23 0 37.5 15t14.5 40q0 23 -11.5 37.5t-40.5 25.5l-39 15q-104 40 -104 141q0 61 39.5 101 +t103.5 40q60 0 96 -31.5t43 -78.5q2 -11 -7 -13l-68 -13q-9 -1 -12 8q-12 44 -52 44q-22 0 -34.5 -14t-12.5 -36q0 -37 52 -57l39 -15q56 -21 80 -56.5t24 -90.5q0 -65 -39.5 -106t-109.5 -41z" /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="375" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM231 0h-87q-10 0 -10 10v567q0 6 -6 6h-104q-10 0 -10 10v77q0 10 10 10h327q10 0 10 -10v-77q0 -10 -10 -10h-104q-6 0 -6 -6v-567q0 -10 -10 -10z" /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="255" +d="M111 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM219 -6h-30q-64 0 -93.5 31t-29.5 102v271q0 6 -6 6h-29q-10 0 -10 10v58q0 10 10 10h29q6 0 6 6v132q0 10 10 10h82q10 0 10 -10v-132q0 -6 6 -6h45q10 0 10 -10v-58 +q0 -10 -10 -10h-45q-6 0 -6 -6v-269q0 -41 39 -41h12q10 0 10 -10v-74q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessj" unicode="ȷ" horiz-adv-x="204" +d="M11 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 31.5 13.5t9.5 41.5v502q0 10 10 10h82q10 0 10 -10v-508q0 -73 -34 -108.5t-108 -35.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="415" +d="M335 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="415" +d="M233 555h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" horiz-adv-x="415" +d="M310 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve" unicode="˘" horiz-adv-x="415" +d="M207 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="dotaccent" unicode="˙" horiz-adv-x="415" +d="M248 574h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="415" +d="M207 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM207 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="ogonek" unicode="˛" horiz-adv-x="415" +d="M220 -190q-41 0 -65 21.5t-24 61.5q0 55 56 107q10 10 18 10h75q5 0 6 -4t-3 -6q-30 -20 -49.5 -45.5t-19.5 -45.5q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="415" +d="M251 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="hungarumlaut" unicode="˝" horiz-adv-x="415" +d="M278 555h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM145 555h-50q-11 0 -6 10l60 125q4 10 16 10h67q11 0 5 -10l-74 -125q-6 -10 -18 -10z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="Delta" unicode="∆" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="Omega" unicode="Ω" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="pi" unicode="π" horiz-adv-x="428" +d="M390 -6h-9q-64 0 -92.5 30t-28.5 99v259q0 6 -6 6h-78q-6 0 -6 -6v-372q0 -10 -10 -10h-82q-10 0 -10 10v372q0 6 -6 6h-38q-10 0 -10 10v74q0 10 10 10h378q10 0 10 -10v-74q0 -10 -10 -10h-37q-6 0 -6 -6v-261q0 -21 6 -28t21 -7h4q10 0 10 -10v-72q0 -10 -10 -10z" /> + <glyph glyph-name="Wgrave" unicode="Ẁ" horiz-adv-x="579" +d="M318 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10 +l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wgrave" unicode="ẁ" horiz-adv-x="541" +d="M403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10zM299 555h-57q-10 0 -18 10 +l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="Wacute" unicode="Ẃ" horiz-adv-x="579" +d="M316 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443 +h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wacute" unicode="ẃ" horiz-adv-x="541" +d="M297 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1 +l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Wdieresis" unicode="Ẅ" horiz-adv-x="579" +d="M397 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM245 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM445 0h-74q-8 0 -10 10l-69 437h-2l-72 -437q-2 -10 -10 -10h-75q-8 0 -10 10l-105 660q-2 10 9 10h86 +q10 0 11 -10l49 -443h3l73 443q1 10 11 10h59q10 0 11 -10l73 -443h3l52 443q1 10 11 10h83q11 0 9 -10l-106 -660q-2 -10 -10 -10z" /> + <glyph glyph-name="wdieresis" unicode="ẅ" horiz-adv-x="541" +d="M378 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM226 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM403 0h-70q-11 0 -12 10l-50 280h-2l-49 -280q-1 -10 -12 -10h-70q-10 0 -11 10l-109 462q-3 10 7 10h84 +q9 0 11 -10l54 -298h1l56 298q2 10 11 10h59q9 0 11 -10l54 -298h1l55 298q2 10 11 10h83q10 0 7 -10l-108 -462q-3 -10 -12 -10z" /> + <glyph glyph-name="Ygrave" unicode="Ỳ" horiz-adv-x="386" +d="M237 0h-87q-10 0 -10 10v269l-130 391q-3 10 8 10h88q9 0 12 -10l76 -263h3l74 263q3 10 12 10h86q11 0 8 -10l-130 -391v-269q0 -10 -10 -10zM231 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="ygrave" unicode="ỳ" horiz-adv-x="370" +d="M77 -180h-15q-10 0 -10 10v74q0 10 10 10l14 1q22 2 34 13.5t19 41.5l11 48l-120 454q-3 10 7 10h84q9 0 11 -10l64 -298h1l64 298q2 10 11 10h81q10 0 7 -10l-127 -500q-23 -92 -53.5 -122t-92.5 -30zM217 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81 +q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="408" +d="M382 225h-356q-10 0 -10 10v61q0 10 10 10h356q10 0 10 -10v-61q0 -10 -10 -10z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="594" +d="M568 225h-542q-10 0 -10 10v61q0 10 10 10h542q10 0 10 -10v-61q0 -10 -10 -10z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="171" +d="M121 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="171" +d="M49 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="171" +d="M49 -93q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="299" +d="M249 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10zM121 493h-71q-10 0 -10 10v73q0 14 8 23l62 75q6 7 12 7q9 0 9 -9v-169q0 -10 -10 -10z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="299" +d="M177 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7zM49 492q-9 0 -9 9v169q0 10 10 10h71q10 0 10 -10v-73q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="299" +d="M177 -94q-9 0 -9 9v170q0 10 10 10h71q10 0 10 -10v-74q0 -14 -8 -23l-62 -75q-6 -7 -12 -7zM49 -94q-9 0 -9 9v170q0 10 10 10h71q10 0 10 -10v-74q0 -14 -8 -23l-62 -75q-6 -7 -12 -7z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="520" +d="M299 -180h-78q-10 0 -10 10v523q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v215q0 10 10 10h78q10 0 10 -10v-215q0 -6 6 -6h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-523q0 -10 -10 -10z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="520" +d="M299 -180h-78q-10 0 -10 10v185q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v266q0 6 -6 6h-114q-10 0 -10 10v70q0 10 10 10h114q6 0 6 6v185q0 10 10 10h78q10 0 10 -10v-185q0 -6 6 -6h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-266q0 -6 6 -6 +h114q10 0 10 -10v-70q0 -10 -10 -10h-114q-6 0 -6 -6v-185q0 -10 -10 -10z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="443" +d="M221 179q-55 0 -92 36.5t-37 92.5t37 92.5t92 36.5q56 0 93 -37t37 -92t-37 -92t-93 -37z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="591" +d="M535 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10zM338 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10zM141 0h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="932" +d="M234 -9h-54q-10 0 -7 10l252 678q4 10 13 10h55q10 0 7 -10l-253 -678q-4 -10 -13 -10zM161 328q-75 0 -94 61q-7 24 -7 118q0 95 7 118q19 61 94 61q74 0 93 -61q8 -23 8 -118q0 -94 -8 -118q-19 -61 -93 -61zM161 392q18 0 25 17q3 9 3 98t-3 98q-7 17 -25 17 +q-20 0 -25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17zM771 -6q-74 0 -93 61q-8 23 -8 118q0 94 8 118q19 61 93 61t93 -61q8 -24 8 -118q0 -95 -8 -118q-19 -61 -93 -61zM512 -6q-74 0 -93 61q-8 23 -8 118q0 94 8 118q19 61 93 61q75 0 93 -61q8 -24 8 -118q0 -95 -8 -118 +q-18 -61 -93 -61zM771 58q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17zM512 58q20 0 25 17q3 9 3 98t-3 98q-5 17 -25 17t-25 -17q-3 -9 -3 -98t3 -98q5 -17 25 -17z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="284" +d="M214 79l-177 178q-7 7 0 14l177 178q3 3 6.5 1.5t3.5 -5.5v-80q0 -8 -10 -18l-78 -79q-4 -4 0 -8l78 -79q10 -10 10 -18v-80q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="284" +d="M70 79q-3 -3 -6.5 -1.5t-3.5 5.5v80q0 8 10 18l79 79q4 4 0 8l-79 79q-10 10 -10 18v80q0 4 3.5 5.5t6.5 -1.5l177 -178q7 -7 0 -14z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="143" +d="M-31 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="zero.superior" unicode="⁰" horiz-adv-x="281" +d="M140 422q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 493q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="four.superior" unicode="⁴" horiz-adv-x="281" +d="M224 430h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.superior" unicode="⁵" horiz-adv-x="281" +d="M140 422q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.superior" unicode="⁶" horiz-adv-x="281" +d="M140 422q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 64t4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 493q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -8 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.superior" unicode="⁷" horiz-adv-x="281" +d="M131 430h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.superior" unicode="⁸" horiz-adv-x="281" +d="M140 422q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 677q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 493q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.superior" unicode="⁹" horiz-adv-x="281" +d="M146 430h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 657q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="zero.inferior" unicode="₀" horiz-adv-x="281" +d="M140 -164q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 -93q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.inferior" unicode="₁" horiz-adv-x="281" +d="M191 -156h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.inferior" unicode="₂" horiz-adv-x="281" +d="M238 -156h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10 +z" /> + <glyph glyph-name="three.inferior" unicode="₃" horiz-adv-x="281" +d="M139 -164q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -20 6 -53q0 -34 -4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.inferior" unicode="₄" horiz-adv-x="281" +d="M224 -156h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.inferior" unicode="₅" horiz-adv-x="281" +d="M140 -164q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.inferior" unicode="₆" horiz-adv-x="281" +d="M140 -164q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 64t4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 -93q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -7 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.inferior" unicode="₇" horiz-adv-x="281" +d="M131 -156h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.inferior" unicode="₈" horiz-adv-x="281" +d="M140 -164q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 91q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 -93q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.inferior" unicode="₉" horiz-adv-x="281" +d="M146 -156h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 71q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="Euro" unicode="€" +d="M222 -9q-108 0 -140 96q-11 36 -11 148q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6v43q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6q0 107 11 143q32 96 140 96q67 0 107 -38.5t45 -101.5q2 -11 -7 -12l-77 -15q-10 -2 -12 8q-8 66 -54 66 +q-35 0 -46 -34q-5 -15 -5 -112q0 -6 6 -6h130q10 0 10 -10l-10 -54q-1 -10 -10 -10h-120q-6 0 -6 -6v-43q0 -6 6 -6h115q10 0 10 -10l-10 -54q-1 -10 -10 -10h-105q-6 0 -6 -6q0 -102 5 -117q11 -34 46 -34q46 0 54 66q2 10 12 8l77 -15q9 -1 7 -12q-5 -63 -45 -101.5 +t-107 -38.5z" /> + <glyph glyph-name="afii61289" unicode="ℓ" horiz-adv-x="413" +d="M98 175q-7 -6 -14 1l-36 41q-7 7 1 14l78 75v204q0 86 35.5 133.5t99.5 47.5q54 0 87 -34t33 -93q0 -64 -37 -127t-116 -140v-172q0 -50 33 -50q15 0 34 14q9 7 14 -2l28 -41q6 -8 -3 -15q-47 -42 -101 -42q-107 0 -107 143v70zM229 538v-127q69 83 69 154q0 50 -32 50 +q-37 0 -37 -77z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="660" +d="M590 286h-52q-10 0 -10 10v202h-1l-39 -141q-3 -10 -12 -10h-29q-9 0 -12 10l-40 141h-1v-202q0 -10 -10 -10h-52q-10 0 -10 10v374q0 10 10 10h58q10 0 13 -10l59 -217h2l56 217q3 10 13 10h57q10 0 10 -10v-374q0 -10 -10 -10zM197 286h-57q-10 0 -10 10v306q0 6 -6 6 +h-54q-10 0 -10 10v52q0 10 10 10h197q10 0 10 -10v-52q0 -10 -10 -10h-54q-6 0 -6 -6v-306q0 -10 -10 -10z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="579" +d="M288 -9q-104 0 -168.5 72t-64.5 179t64.5 178t168.5 71q105 0 170 -69t66 -180h-366v-165q54 -52 130 -52q112 0 174 109l33 -21q-43 -65 -90 -93.5t-117 -28.5zM421 275v131q-60 55 -133 55q-77 0 -130 -55v-131h263z" /> + <glyph glyph-name="onethird" unicode="⅓" horiz-adv-x="758" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM569 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6 +q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65 +q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="twothirds" unicode="⅔" horiz-adv-x="816" +d="M284 274h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +M313 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM627 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7 +q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -8 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="oneeighth" unicode="⅛" horiz-adv-x="762" +d="M220 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10zM572 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5 +t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62q-10 -31 -37.5 -48.5t-66.5 -17.5zM572 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM572 63q20 0 26 17 +q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17zM256 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="threeeighths" unicode="⅜" horiz-adv-x="802" +d="M611 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM611 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM611 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17zM296 -9h-54q-10 0 -7 10 +l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31 +q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="fiveeighths" unicode="⅝" horiz-adv-x="802" +d="M611 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM611 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM611 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -8 -3 -39q0 -32 3 -40q6 -17 26 -17zM296 -9h-54q-10 0 -7 10 +l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10zM186 266q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10 +h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="seveneighths" unicode="⅞" horiz-adv-x="757" +d="M566 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 20 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -20 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM566 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM566 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17zM176 274h-62q-11 0 -8 10l106 322v3 +h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10zM250 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="partialdiff" unicode="∂" horiz-adv-x="412" +d="M181 -11q-67 0 -103.5 55t-36.5 147q0 99 43.5 164t116.5 65q48 0 76 -26h2q-3 99 -28 154.5t-69 55.5q-31 0 -58 -20q-9 -7 -14 2l-35 51q-5 8 3 14q54 40 112 40q88 0 134.5 -85.5t46.5 -237.5q0 -187 -50 -283t-140 -96zM188 77q79 0 90 225q-31 33 -64 33 +q-37 0 -59 -39t-22 -101q0 -118 55 -118z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="526" +d="M463 -180h-86q-10 0 -10 10v806q0 6 -6 6h-196q-6 0 -6 -6v-806q0 -10 -10 -10h-86q-10 0 -10 10v900q0 10 10 10h400q10 0 10 -10v-900q0 -10 -10 -10z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="486" +d="M437 -180h-387q-10 0 -10 10v74q0 5 2 9l175 405l-170 323q-3 6 -3 11v78q0 10 10 10h373q10 0 10 -10v-78q0 -10 -10 -10h-261l164 -309q3 -7 0 -14l-178 -401h285q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="minus" unicode="−" +d="M352 231h-306q-10 0 -10 10v70q0 10 10 10h306q10 0 10 -10v-70q0 -10 -10 -10z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="143" +d="M-31 -9h-54q-10 0 -7 10l252 678q4 10 13 10h54q10 0 7 -10l-252 -678q-4 -10 -13 -10z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="197" +d="M141 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="568" +d="M325 -180h-66q-9 0 -12 10l-110 262q-3 6 -9 3l-58 -24q-10 -5 -13 4l-25 55q-5 10 4 13l131 58q10 5 14 -4l102 -245h3l183 778q3 10 12 10h67q11 0 8 -10l-219 -900q-3 -10 -12 -10z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="667" +d="M498 92q-47 0 -84 22t-81 73q-45 -52 -81.5 -73.5t-83.5 -21.5q-66 0 -108 42t-42 112q0 71 41.5 113t109.5 42q43 0 80 -22t84 -75q49 54 84 75.5t80 21.5q67 0 109.5 -42t42.5 -113q0 -70 -41.5 -112t-109.5 -42zM494 166q36 0 56.5 22.5t20.5 59.5q0 36 -21 57.5 +t-57 21.5q-24 0 -48.5 -17.5t-62.5 -63.5q40 -46 63.5 -63t48.5 -17zM172 166q24 0 49 18t63 63q-68 80 -110 80q-35 0 -56.5 -21.5t-21.5 -57.5q0 -38 20.5 -60t55.5 -22z" /> + <glyph glyph-name="integral" unicode="∫" horiz-adv-x="312" +d="M59 -180q-18 0 -25 1q-10 2 -10 10v76q0 10 10 10h17q28 0 41 19t13 61v560q0 183 148 183q18 0 25 -1q10 -2 10 -10v-76q0 -10 -10 -10h-16q-29 0 -42 -19t-13 -61v-560q0 -183 -148 -183z" /> + <glyph glyph-name="approxequal" unicode="≈" horiz-adv-x="414" +d="M269 306q-33 0 -71 25q-28 20 -45 20q-15 0 -25 -8t-24 -32q-5 -8 -14 -3l-47 25q-10 5 -4 15q24 44 48.5 64t57.5 20t71 -25q29 -21 45 -21t26 8.5t24 32.5q5 8 14 3l46 -25q10 -5 4 -15q-23 -44 -47.5 -64t-58.5 -20zM269 122q-33 0 -71 25q-28 20 -45 20q-15 0 -25 -8 +t-24 -32q-5 -8 -14 -3l-47 25q-10 5 -4 15q24 44 48.5 64t57.5 20t71 -25q28 -20 45 -20q16 0 26 8t24 32q5 8 14 3l46 -25q10 -5 4 -15q-23 -44 -47.5 -64t-58.5 -20z" /> + <glyph glyph-name="notequal" unicode="≠" +d="M352 328h-91l-48 -104h139q10 0 10 -10v-69q0 -10 -10 -10h-181l-34 -74q-4 -10 -13 -10h-55q-11 0 -8 10l34 74h-49q-10 0 -10 10v69q0 10 10 10h91l48 104h-139q-10 0 -10 10v69q0 10 10 10h181l35 74q4 10 13 10h55q12 0 7 -10l-35 -74h50q10 0 10 -10v-69 +q0 -10 -10 -10z" /> + <glyph glyph-name="lessequal" unicode="≤" +d="M352 127l-306 123q-10 3 -10 14v62q0 11 10 14l306 123q10 3 10 -7v-74q0 -9 -10 -13l-191 -73v-2l191 -73q10 -4 10 -13v-74q0 -10 -10 -7zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="greaterequal" unicode="≥" +d="M46 127q-10 -3 -10 7v74q0 9 10 13l192 73v2l-192 73q-10 4 -10 13v74q0 10 10 7l306 -123q10 -3 10 -14v-62q0 -11 -10 -14zM352 0h-306q-10 0 -10 10v69q0 10 10 10h306q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="lozenge" unicode="◊" horiz-adv-x="445" +d="M259 -52h-72q-10 0 -14 10l-151 364q-3 7 0 14l151 364q4 10 14 10h72q10 0 14 -10l150 -364q3 -7 0 -14l-150 -364q-4 -10 -14 -10zM225 51h2l107 278l-111 278h-2l-109 -278z" /> + <glyph glyph-name="uniF8FF" unicode="" horiz-adv-x="388" +d="M378 0h-368q-10 0 -10 10v660q0 10 10 10h368q10 0 10 -10v-660q0 -10 -10 -10zM324 55q6 0 6 6v558q0 6 -6 6h-259q-6 0 -6 -6v-558q0 -6 6 -6h259zM216 224h-48q-10 0 -10 10v46q0 21 13 44l36 67q17 31 17 64q0 19 -3 28q-7 20 -30 20q-22 0 -29 -20q-3 -9 -3 -41 +q0 -10 -11 -8l-46 4q-9 2 -9 11q0 35 6 53q9 28 34 44.5t59 16.5t59.5 -16.5t34.5 -44.5q6 -18 6 -44q0 -43 -21 -79l-35 -67q-10 -20 -10 -36v-42q0 -10 -10 -10zM216 114h-48q-10 0 -10 10v58q0 10 10 10h48q10 0 10 -10v-58q0 -10 -10 -10z" /> + <glyph glyph-name="CR" horiz-adv-x="0" + /> + <glyph glyph-name="grave.cap" horiz-adv-x="415" +d="M296 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="acute.cap" horiz-adv-x="415" +d="M184 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="circumflex.cap" horiz-adv-x="415" +d="M335 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron.cap" horiz-adv-x="415" +d="M233 747h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="caron.alt" horiz-adv-x="415" +d="M172 511q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="tilde.cap" horiz-adv-x="415" +d="M251 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="dieresis.cap" horiz-adv-x="415" +d="M316 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="macron.cap" horiz-adv-x="415" +d="M310 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve.cap" horiz-adv-x="415" +d="M207 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="ring.cap" horiz-adv-x="415" +d="M207 721q-38 0 -64 26t-26 65q0 38 26 64t64 26q39 0 65 -26t26 -64q0 -39 -26 -65t-65 -26zM207 764q20 0 33 14t13 34t-13 33.5t-33 13.5q-19 0 -32 -13.5t-13 -33.5t13 -34t32 -14z" /> + <glyph glyph-name="hungarumlaut.cap" horiz-adv-x="415" +d="M280 761h-50q-12 0 -5 10l69 107q7 10 17 10h68q5 0 6 -3t-2 -7l-84 -107q-9 -10 -19 -10zM147 761h-50q-12 0 -5 10l70 107q7 10 17 10h67q4 0 5.5 -3t-1.5 -7l-84 -107q-9 -10 -19 -10z" /> + <glyph glyph-name="dotaccent.cap" horiz-adv-x="415" +d="M248 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="commaaccent" horiz-adv-x="415" +d="M171 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="commaaccent.alt" horiz-adv-x="415" +d="M243 572h-70q-10 0 -10 10v55q0 14 7 22l61 73q6 7 13 7q9 0 9 -10v-147q0 -10 -10 -10z" /> + <glyph glyph-name="uni0394" horiz-adv-x="421" +d="M401 0h-381q-10 0 -8 10l147 660q3 10 11 10h84q9 0 11 -10l144 -660q2 -10 -8 -10zM282 98q6 0 5 6l-74 386h-3l-76 -386q-2 -6 5 -6h143z" /> + <glyph glyph-name="uni03A9" horiz-adv-x="429" +d="M388 0h-135q-10 0 -10 10v73q0 9 9 15q20 16 24.5 53.5t4.5 188.5q0 190 -7 212q-5 18 -21 29t-38 11q-48 0 -60 -40q-7 -22 -7 -212q0 -151 4.5 -188.5t24.5 -53.5q9 -6 9 -15v-73q0 -10 -10 -10h-135q-10 0 -10 10v78q0 10 10 10h37v1q-16 16 -23.5 34t-11.5 65.5 +t-4 141.5q0 135 2.5 176t10.5 65q17 51 59 79.5t104 28.5q61 0 103 -28.5t59 -79.5q8 -24 10.5 -65t2.5 -176q0 -94 -4 -141.5t-11.5 -65.5t-23.5 -34v-1h37q10 0 10 -10v-78q0 -10 -10 -10z" /> + <glyph glyph-name="uni03BC" horiz-adv-x="407" +d="M346 0h-82q-10 0 -10 10v38h-1q-18 -56 -76 -56q-18 0 -24 6v-168q0 -10 -10 -10h-82q-10 0 -10 10v642q0 10 10 10h82q10 0 10 -10v-317q0 -70 51 -70q50 0 50 70v317q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="exclam.sc" horiz-adv-x="232" +d="M140 170h-48q-10 0 -10 10l-22 332q0 10 10 10h92q10 0 10 -10l-22 -332q0 -10 -10 -10zM158 0h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="dollar.sc" horiz-adv-x="378" +d="M199 -53h-16q-10 0 -10 10v35q-66 4 -99 38.5t-38 99.5q0 11 8 12l70 13q9 2 11 -8q2 -34 13.5 -50t34.5 -19v146l-20 6q-59 17 -85.5 52.5t-26.5 98.5q0 68 34.5 106.5t97.5 42.5v27q0 10 10 10h16q10 0 10 -10v-27q113 -10 128 -134q0 -11 -8 -12l-67 -9q-9 -2 -11 8 +q-7 53 -42 60v-134l14 -4q64 -19 91 -55.5t27 -103.5q0 -146 -132 -154v-35q0 -10 -10 -10zM133 383q0 -24 8.5 -38.5t31.5 -24.5v124q-40 -7 -40 -61zM248 145q0 46 -39 66v-132q39 9 39 66z" /> + <glyph glyph-name="percent.sc" horiz-adv-x="664" +d="M236 -9h-53q-10 0 -7 10l239 519q4 10 13 10h53q10 0 7 -10l-239 -519q-4 -10 -13 -10zM166 256q-33 0 -57 15t-32 40q-7 20 -7 81q0 60 7 80q8 26 32 41t57 15q34 0 58 -15t32 -41q7 -24 7 -80t-7 -81q-8 -25 -32 -40t-58 -15zM166 318q17 0 22 15q3 9 3 59q0 48 -3 59 +q-5 14 -22 14q-16 0 -21 -14q-3 -11 -3 -59q0 -50 3 -59q5 -15 21 -15zM497 -7q-33 0 -57 15t-32 41q-7 20 -7 80t7 80q8 26 32 41t57 15q34 0 57.5 -15t31.5 -41q8 -22 8 -80t-8 -80q-8 -26 -31.5 -41t-57.5 -15zM497 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14 +q-16 0 -21 -14q-3 -9 -3 -59t3 -59q5 -14 21 -14z" /> + <glyph glyph-name="ampersand.sc" horiz-adv-x="491" +d="M425 -6h-30q-44 0 -63 25l-19 25q-52 -53 -125 -53q-64 0 -99.5 33t-35.5 88q0 38 18.5 74.5t70.5 89.5l-9 13q-32 43 -44 68t-12 52q0 53 37.5 87.5t97.5 34.5q59 0 96.5 -35t37.5 -87q0 -29 -17.5 -58.5t-69.5 -81.5l59 -75l39 61q5 8 14 4l54 -35q9 -5 4 -14l-56 -86 +l19 -23q13 -17 30 -17h3q10 0 10 -10v-70q0 -10 -10 -10zM171 412q0 -26 34 -74q48 48 48 74q0 16 -11 28.5t-29 12.5t-30 -12.5t-12 -28.5zM198 79q30 0 63 36l-67 90q-45 -47 -45 -81q0 -20 13 -32.5t36 -12.5z" /> + <glyph glyph-name="zero.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -87.5 23t-48.5 66q-10 30 -10 181t10 180q28 90 136 90t136 -90q10 -29 10 -180t-10 -181q-13 -43 -48.5 -66t-87.5 -23zM189 84q31 0 40 28q4 13 4 149q0 135 -4 148q-9 28 -40 28t-40 -28q-4 -13 -4 -148q0 -136 4 -149q9 -28 40 -28z" /> + <glyph glyph-name="one.sc" horiz-adv-x="378" +d="M247 0h-82q-10 0 -10 10v398h-1l-79 -44q-11 -6 -11 7v83q0 8 7 14l81 49q8 5 16 5h79q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="two.sc" horiz-adv-x="378" +d="M323 0h-270q-9 0 -9 8v72q0 7 3 11l159 207q25 34 25 82q0 20 -3 31q-9 26 -41 26t-41 -26q-3 -11 -3 -36q0 -12 -12 -10l-77 8q-10 1 -10 12q0 38 6 57q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -63q0 -77 -46 -135l-119 -150v-1h155q10 0 10 -10v-73 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.sc" horiz-adv-x="378" +d="M187 -9q-51 0 -87.5 23.5t-49.5 65.5q-6 19 -6 47q0 11 10 12l77 8q12 2 12 -10q0 -17 3 -26q10 -27 41 -27t41 27q3 9 3 45q0 28 -3 39q-9 25 -44 25h-13q-10 0 -10 10v73q0 10 10 10h13q36 0 44 24q3 9 3 35q0 28 -3 39q-9 26 -41 26t-41 -26q-3 -11 -3 -26 +q0 -12 -12 -10l-77 7q-10 1 -10 12q0 29 6 48q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -70q0 -30 -6 -48q-12 -34 -46 -53v-2q35 -20 46 -53q6 -18 6 -60q0 -49 -9 -76q-13 -43 -49 -66t-88 -23z" /> + <glyph glyph-name="four.sc" horiz-adv-x="378" +d="M302 0h-80q-10 0 -10 10v49q0 6 -6 6h-171q-10 0 -10 10v73q0 5 2 11l130 355q3 8 12 8h84q11 0 8 -11l-129 -350v-2h74q6 0 6 6v125q0 10 10 10h80q10 0 10 -10v-125q0 -6 5 -6h28q10 0 10 -10v-74q0 -10 -10 -10h-27q-6 0 -6 -6v-49q0 -10 -10 -10z" /> + <glyph glyph-name="five.sc" horiz-adv-x="378" +d="M187 -9q-52 0 -88 23t-49 66q-5 15 -5 33q0 11 10 12l76 8q11 1 13 -10l3 -13q9 -26 41 -26q30 0 39 27q4 12 4 56q0 43 -4 55q-9 27 -39 27q-28 0 -40 -18q-5 -8 -16 -8h-67q-10 0 -10 10v279q0 10 10 10h258q10 0 10 -10v-74q0 -10 -10 -10h-171q-6 0 -6 -6v-98h2 +q23 18 68 18q84 0 109 -77q8 -23 8 -98q0 -61 -9 -88q-13 -43 -49 -65.5t-88 -22.5z" /> + <glyph glyph-name="six.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 74q0 83 30 148l99 210q5 10 16 10h81q11 0 6 -11l-96 -198l2 -2q10 4 33 4q87 0 112 -79q9 -27 9 -82q0 -47 -9 -74q-13 -43 -49 -66t-88 -23zM189 84q30 0 40 27q4 12 4 43q0 29 -4 41q-9 27 -40 27t-40 -27q-4 -12 -4 -41 +q0 -31 4 -43q10 -27 40 -27z" /> + <glyph glyph-name="seven.sc" horiz-adv-x="378" +d="M165 0h-79q-12 0 -8 13l157 414v1h-90q-6 0 -6 -6v-37q0 -10 -10 -10h-73q-10 0 -10 10v127q0 10 10 10h270q10 0 10 -10v-75q0 -5 -2 -11l-154 -416q-4 -10 -15 -10z" /> + <glyph glyph-name="eight.sc" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 76q0 39 7 62q14 39 42 54v2q-28 15 -42 54q-7 23 -7 50q0 37 9 64q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -64q0 -27 -7 -50q-14 -39 -42 -54v-2q28 -15 42 -54q7 -23 7 -62q0 -49 -9 -76q-13 -43 -49 -66t-88 -23zM189 319 +q30 0 40 27q4 14 4 32q0 19 -4 33q-9 26 -40 26t-40 -26q-4 -14 -4 -33q0 -18 4 -32q10 -27 40 -27zM189 84q30 0 40 27q4 12 4 45q0 32 -4 44q-9 27 -40 27t-40 -27q-4 -12 -4 -44q0 -33 4 -45q10 -27 40 -27z" /> + <glyph glyph-name="nine.sc" horiz-adv-x="378" +d="M190 0h-81q-11 0 -6 11l96 198l-2 2q-10 -4 -33 -4q-87 0 -112 79q-9 27 -9 82q0 47 9 74q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -74q0 -84 -30 -148l-99 -210q-5 -10 -16 -10zM189 300q31 0 40 27q4 12 4 41t-4 43q-9 26 -40 26t-40 -26q-4 -14 -4 -43t4 -41 +q9 -27 40 -27z" /> + <glyph glyph-name="question.sc" horiz-adv-x="341" +d="M210 168h-84q-10 0 -10 10v26q0 37 17 57l46 59q30 38 30 70q0 13 -3 22q-10 25 -41 25t-40 -26q-3 -8 -4 -31q0 -11 -10 -9l-80 8q-9 1 -9 10q0 32 9 59q13 40 49 61.5t86 21.5q51 0 87.5 -22.5t49.5 -63.5q8 -24 8 -51q0 -54 -30 -92l-46 -58q-15 -19 -15 -46v-20 +q0 -10 -10 -10zM210 0h-84q-10 0 -10 10v99q0 10 10 10h84q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="a.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="b.sc" horiz-adv-x="401" +d="M190 0h-128q-10 0 -10 10v502q0 10 10 10h139q87 0 125.5 -32t38.5 -101q0 -92 -70 -116v-1q78 -16 78 -119q0 -82 -44.5 -117.5t-138.5 -35.5zM190 311q40 0 55 13.5t15 46.5t-15 46t-55 13h-30q-6 0 -6 -6v-107q0 -6 6 -6h30zM193 91q43 0 59.5 14.5t16.5 50.5 +t-16.5 50.5t-59.5 14.5h-33q-6 0 -6 -6v-118q0 -6 6 -6h33z" /> + <glyph glyph-name="c.sc" horiz-adv-x="384" +d="M198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="d.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v502q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-323q0 -6 6 -6h40z" /> + <glyph glyph-name="e.sc" horiz-adv-x="361" +d="M324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="f.sc" horiz-adv-x="359" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-107q0 -6 6 -6h142q10 0 10 -10v-73q0 -10 -10 -10h-142q-6 0 -6 -6v-200q0 -10 -10 -10z" /> + <glyph glyph-name="g.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5z" /> + <glyph glyph-name="h.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-194q0 -6 6 -6h104q6 0 6 6v194q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="i.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="j.sc" horiz-adv-x="335" +d="M125 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40z" /> + <glyph glyph-name="k.sc" horiz-adv-x="421" +d="M399 0h-87q-8 0 -12 7l-101 209l-45 -70v-136q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-212l126 215q4 7 14 7h85q4 0 5.5 -3t-0.5 -7l-127 -202l147 -300q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="l.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="m.sc" horiz-adv-x="530" +d="M468 0h-73q-10 0 -10 10v318h-5l-80 -225q-3 -10 -13 -10h-44q-10 0 -13 10l-80 225h-5v-318q0 -10 -10 -10h-73q-10 0 -10 10v502q0 10 10 10h82q13 0 17 -10l104 -283h4l101 283q4 10 17 10h81q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="n.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="o.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37z" /> + <glyph glyph-name="p.sc" horiz-adv-x="399" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41.5t44.5 -121.5q0 -79 -44.5 -120.5t-125.5 -41.5h-43q-6 0 -6 -6v-181q0 -10 -10 -10zM192 288q42 0 60.5 16.5t18.5 54.5t-18 54.5t-61 16.5h-32q-6 0 -6 -6v-130q0 -6 6 -6h32z" /> + <glyph glyph-name="q.sc" horiz-adv-x="404" +d="M380 16l-39 -38q-7 -7 -14 1l-35 39q-34 -27 -90 -27q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 171q15 46 55 72.5t95 26.5q56 0 96 -26.5t55 -72.5q11 -34 11 -171q0 -95 -4.5 -129t-19.5 -63l40 -39q6 -8 0 -14zM205 81q16 0 28 6l-39 40q-6 7 1 14l30 28q9 9 16 0 +l23 -27h2v119q0 119 -8 140q-11 37 -56 37q-44 0 -55 -37q-5 -16 -5 -140q0 -125 5 -141q12 -39 58 -39z" /> + <glyph glyph-name="r.sc" horiz-adv-x="414" +d="M381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="s.sc" horiz-adv-x="377" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="t.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10z" /> + <glyph glyph-name="u.sc" horiz-adv-x="421" +d="M210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="v.sc" horiz-adv-x="374" +d="M224 0h-74q-8 0 -10 10l-124 502q-2 10 9 10h81q10 0 11 -10l71 -340h3l69 340q1 10 11 10h79q10 0 8 -10l-124 -502q-2 -10 -10 -10z" /> + <glyph glyph-name="w.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10z" /> + <glyph glyph-name="x.sc" horiz-adv-x="384" +d="M362 0h-84q-10 0 -14 10l-71 156h-2l-71 -156q-4 -10 -14 -10h-84q-12 0 -7 11l124 262l-111 238q-6 11 7 11h82q10 0 14 -10l61 -139h2l61 139q4 10 14 10h80q13 0 7 -11l-110 -238l123 -262q5 -11 -7 -11z" /> + <glyph glyph-name="y.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10z" /> + <glyph glyph-name="z.sc" horiz-adv-x="347" +d="M305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="agrave.sc" horiz-adv-x="391" +d="M226 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z +" /> + <glyph glyph-name="aacute.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM223 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z +" /> + <glyph glyph-name="acircumflex.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM324 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="atilde.sc" horiz-adv-x="391" +d="M241 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81 +q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="adieresis.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM305 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM153 614h-65 +q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.sc" horiz-adv-x="391" +d="M374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3zM300 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.sc" horiz-adv-x="391" +d="M196 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10 +l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aring.sc" horiz-adv-x="391" +d="M196 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM196 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81 +q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q3 -10 -8 -10zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aringacute.sc" horiz-adv-x="391" +d="M222 702h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM374 0h-81q-8 0 -10 10l-21 87h-132l-21 -87q-2 -10 -10 -10h-81q-11 0 -8 10l130 486q-35 25 -35 73q0 39 26 64.5t65 25.5q38 0 64 -25.5t26 -64.5q0 -45 -34 -73 +l130 -486q3 -10 -8 -10zM150 569q0 -19 11.5 -32t30.5 -15h8q18 2 29.5 15t11.5 32q0 20 -13 33.5t-32 13.5q-20 0 -33 -13.5t-13 -33.5zM195 367l-43 -179h88l-42 179h-3z" /> + <glyph glyph-name="aogonek.sc" horiz-adv-x="391" +d="M315 -190q-41 0 -65.5 21.5t-24.5 61.5q0 52 61 109l-3 8l-21 87h-133l-20 -87q-2 -10 -10 -10h-81q-11 0 -8 10l134 502q3 10 12 10h80q9 0 12 -10l134 -502q1 -7 -4 -10q-30 -20 -49.5 -45t-19.5 -46q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13 +q-25 -17 -60 -17zM240 188l-42 179h-3l-43 -179h88z" /> + <glyph glyph-name="ae.sc" horiz-adv-x="587" +d="M549 0h-261q-10 0 -10 10v81q0 6 -6 6h-125l-33 -87q-3 -10 -13 -10h-84q-10 0 -7 10l199 502q3 10 12 10h328q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73 +q0 -10 -10 -10zM275 428l-93 -240h90q6 0 6 6v234h-3z" /> + <glyph glyph-name="aeacute.sc" horiz-adv-x="587" +d="M549 0h-261q-10 0 -10 10v81q0 6 -6 6h-125l-33 -87q-3 -10 -13 -10h-84q-10 0 -7 10l199 502q3 10 12 10h328q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73 +q0 -10 -10 -10zM275 428l-93 -240h90q6 0 6 6v234h-3zM323 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="cacute.sc" horiz-adv-x="384" +d="M217 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56 +q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="ccircumflex.sc" horiz-adv-x="384" +d="M198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-8 -65 -49.5 -100t-105.5 -35zM326 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="ccaron.sc" horiz-adv-x="384" +d="M224 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11 +l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="cdotaccent.sc" horiz-adv-x="384" +d="M239 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM198 -9q-54 0 -92.5 26t-53.5 73q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37 +q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11q-8 -65 -49.5 -100t-105.5 -35z" /> + <glyph glyph-name="ccedilla.sc" horiz-adv-x="384" +d="M101 -145l59 140q-84 17 -108 95q-11 34 -11 171t11 170q15 47 53.5 73.5t92.5 26.5q64 0 105.5 -35t49.5 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -58 56q-39 0 -51 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 51 -37q45 0 58 57q2 11 12 8l76 -12q10 -2 8 -11 +q-7 -54 -37 -87.5t-77 -43.5l-49 -140q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="dcaron.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v502q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-323q0 -6 6 -6h40zM225 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60 +q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="dcroat.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v208q0 6 -6 6h-22q-10 0 -10 10v58q0 10 10 10h22q6 0 6 6v204q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-114q0 -6 6 -6h41 +q10 0 10 -10v-58q0 -10 -10 -10h-41q-6 0 -6 -6v-119q0 -6 6 -6h40z" /> + <glyph glyph-name="eth.sc" horiz-adv-x="419" +d="M210 0h-148q-10 0 -10 10v208q0 6 -6 6h-22q-10 0 -10 10v58q0 10 10 10h22q6 0 6 6v204q0 10 10 10h148q124 0 154 -98q14 -41 14 -163t-14 -164q-30 -97 -154 -97zM200 93q54 0 68 45q8 24 8 123q0 98 -8 123q-14 44 -68 44h-40q-6 0 -6 -6v-114q0 -6 6 -6h41 +q10 0 10 -10v-58q0 -10 -10 -10h-41q-6 0 -6 -6v-119q0 -6 6 -6h40z" /> + <glyph glyph-name="egrave.sc" horiz-adv-x="361" +d="M228 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="eacute.sc" horiz-adv-x="361" +d="M206 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ecircumflex.sc" horiz-adv-x="361" +d="M324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10zM321 595h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="ecaron.sc" horiz-adv-x="361" +d="M218 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142 +q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="edieresis.sc" horiz-adv-x="361" +d="M300 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM148 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6 +h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="emacron.sc" horiz-adv-x="361" +d="M294 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ebreve.sc" horiz-adv-x="361" +d="M191 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142 +q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="edotaccent.sc" horiz-adv-x="361" +d="M223 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM324 0h-262q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="eogonek.sc" horiz-adv-x="361" +d="M256 -190q-41 0 -65 21.5t-24 61.5q0 53 56 107h-161q-10 0 -10 10v502q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10h-4 +q-30 -20 -49.5 -45t-19.5 -46q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -61 -17z" /> + <glyph glyph-name="gcircumflex.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM330 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="gbreve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM202 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="gdotaccent.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68 +q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5zM244 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="gcommaaccent.sc" horiz-adv-x="404" +d="M166 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q66 0 109 -35t51 -100q2 -9 -8 -11l-76 -13q-10 -2 -12 9q-12 56 -63 56q-44 0 -55 -37 +q-5 -16 -5 -139q0 -124 5 -140q12 -37 57 -37t57 37q6 20 6 86q0 6 -6 6h-54q-10 0 -10 10v68q0 10 10 10h146q10 0 10 -10v-31q0 -136 -11 -170q-15 -46 -55 -72.5t-96 -26.5z" /> + <glyph glyph-name="hcircumflex.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-194q0 -6 6 -6h104q6 0 6 6v194q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM338 595h-60q-10 0 -19 10l-48 60h-2l-47 -60 +q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="hbar.sc" horiz-adv-x="424" +d="M362 0h-82q-10 0 -10 10v202q0 6 -6 6h-104q-6 0 -6 -6v-202q0 -10 -10 -10h-82q-10 0 -10 10v363q0 6 -6 6h-39q-10 0 -10 10v58q0 10 10 10h39q6 0 6 6v49q0 10 10 10h82q10 0 10 -10v-49q0 -6 6 -6h104q6 0 6 6v49q0 10 10 10h82q10 0 10 -10v-49q0 -6 6 -6h39 +q10 0 10 -10v-58q0 -10 -10 -10h-39q-6 0 -6 -6v-363q0 -10 -10 -10zM264 312q6 0 6 6v55q0 6 -6 6h-104q-6 0 -6 -6v-55q0 -6 6 -6h104z" /> + <glyph glyph-name="igrave.sc" horiz-adv-x="206" +d="M133 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="iacute.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM130 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-8 -10 -18 -10z" /> + <glyph glyph-name="ibreve.sc" horiz-adv-x="206" +d="M103 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="icircumflex.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM231 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="itilde.sc" horiz-adv-x="206" +d="M148 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502 +q0 -10 -10 -10z" /> + <glyph glyph-name="idieresis.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM212 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM60 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="imacron.sc" horiz-adv-x="206" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM206 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="idotaccent.sc" horiz-adv-x="206" +d="M144 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="iogonek.sc" horiz-adv-x="206" +d="M94 -190q-41 0 -65 21.5t-24 61.5q0 56 56 107q-9 0 -9 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -5 -3 -8q-63 -60 -63 -93q0 -24 20 -24q10 0 18 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="jcircumflex.sc" horiz-adv-x="335" +d="M125 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40zM354 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10 +l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="kcommaaccent.sc" horiz-adv-x="421" +d="M187 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM399 0h-87q-8 0 -12 7l-101 209l-45 -70v-136q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-212l126 215q4 7 14 7h85q4 0 5.5 -3t-0.5 -7l-127 -202 +l147 -300q2 -4 0.5 -7t-5.5 -3z" /> + <glyph glyph-name="lacute.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM135 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="lcaron.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM206 353q-9 0 -9 9v150q0 10 10 10h69q10 0 10 -10v-57q0 -12 -7 -22l-60 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="lcommaaccent.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM148 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="lslash.sc" horiz-adv-x="348" +d="M224 287l-70 -48v-140q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10h-259q-10 0 -10 10v164l-33 -22q-4 -2 -7 -0.5t-3 5.5v74q0 9 10 16l33 22v243q0 10 10 10h82q10 0 10 -10v-178l70 48q4 2 7 0.5t3 -5.5v-74q0 -9 -10 -16z" /> + <glyph glyph-name="ldot.sc" horiz-adv-x="348" +d="M321 0h-259q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-413q0 -6 6 -6h161q10 0 10 -10v-73q0 -10 -10 -10zM319 205h-85q-10 0 -10 10v99q0 10 10 10h85q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="nacute.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM227 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z +" /> + <glyph glyph-name="ncaron.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM245 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60 +q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ntilde.sc" horiz-adv-x="441" +d="M379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10zM264 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19 +q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="ncommaaccent.sc" horiz-adv-x="441" +d="M193 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM379 0h-92q-12 0 -16 10l-124 349h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-502q0 -10 -10 -10z +" /> + <glyph glyph-name="ograve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM234 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="oacute.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM224 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ocircumflex.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM330 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="otilde.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM247 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="odieresis.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM311 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM159 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="omacron.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM306 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="obreve.sc" horiz-adv-x="404" +d="M202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140 +q12 -37 54 -37zM202 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="ohungarumlaut.sc" horiz-adv-x="404" +d="M289 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM157 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM202 -9q-55 0 -95 26.5t-55 72.5q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q56 0 96 -26.5 +t55 -73.5q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 54 -37z" /> + <glyph glyph-name="oslash.sc" horiz-adv-x="404" +d="M63 -30h-23q-11 0 -6 10l37 71q-14 21 -19 39q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q61 0 103 -31l22 42q6 10 14 10h23q11 0 6 -10l-37 -71q13 -20 20 -40q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5q-62 0 -103 32l-22 -43q-6 -10 -14 -10zM143 261 +v-73l111 218q-15 31 -52 31q-43 0 -54 -37q-5 -16 -5 -139zM202 84q42 0 55 37q5 16 5 140v73l-113 -218q13 -32 53 -32z" /> + <glyph glyph-name="oslashacute.sc" horiz-adv-x="404" +d="M224 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM63 -30h-23q-11 0 -6 10l37 71q-14 21 -19 39q-11 34 -11 171t11 170q15 47 55 73.5t95 26.5q61 0 103 -31l22 42q6 10 14 10h23q11 0 6 -10l-37 -71q13 -20 20 -40 +q11 -33 11 -170t-11 -171q-15 -46 -55 -72.5t-96 -26.5q-62 0 -103 32l-22 -43q-6 -10 -14 -10zM143 261v-73l111 218q-15 31 -52 31q-43 0 -54 -37q-5 -16 -5 -139zM202 84q42 0 55 37q5 16 5 140v73l-113 -218q13 -32 53 -32z" /> + <glyph glyph-name="oe.sc" horiz-adv-x="571" +d="M534 0h-262q-10 0 -10 10v18h-1q-19 -37 -82 -37q-97 0 -127 93q-11 33 -11 177q0 143 11 177q30 93 127 93q63 0 82 -37h1v18q0 10 10 10h262q10 0 10 -10v-74q0 -10 -10 -10h-164q-6 0 -6 -6v-106q0 -6 6 -6h142q10 0 10 -10v-74q0 -10 -10 -10h-142q-6 0 -6 -6v-111 +q0 -6 6 -6h164q10 0 10 -10v-73q0 -10 -10 -10zM202 84q42 0 55 37q5 16 5 140q0 123 -5 139q-13 37 -55 37q-43 0 -54 -37q-5 -16 -5 -139q0 -124 5 -140q12 -37 54 -37z" /> + <glyph glyph-name="racute.sc" horiz-adv-x="414" +d="M213 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213 +q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="rcaron.sc" horiz-adv-x="414" +d="M215 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141 +q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="rcommaaccent.sc" horiz-adv-x="414" +d="M177 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM381 0h-84q-11 0 -14 10l-72 192h-7h-43q-6 0 -6 -6v-186q0 -10 -10 -10h-82q-10 0 -10 10v502q0 10 10 10h141q81 0 125.5 -41t44.5 -119q0 -100 -71 -139l85 -213 +q3 -10 -7 -10zM193 293q43 0 61 16t18 53q0 36 -18 52t-61 16h-32q-6 0 -6 -6v-125q0 -6 6 -6h32z" /> + <glyph glyph-name="sacute.sc" horiz-adv-x="377" +d="M215 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35 +t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="scircumflex.sc" horiz-adv-x="377" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5zM317 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="scaron.sc" horiz-adv-x="377" +d="M215 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5 +t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="scedilla.sc" horiz-adv-x="377" +d="M104 -145l58 138q-122 15 -131 136q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58 +q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -61 -28 -100t-81 -51l-49 -141q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="scommaaccent.sc" horiz-adv-x="377" +d="M152 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35 +t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="tcaron.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10zM203 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7 +l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="tcommaaccent.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v412q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-412q0 -10 -10 -10zM140 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7z" /> + <glyph glyph-name="tbar.sc" horiz-adv-x="354" +d="M218 0h-82q-10 0 -10 10v251q0 6 -6 6h-42q-10 0 -10 10v57q0 10 10 10h42q6 0 6 6v72q0 6 -6 6h-96q-10 0 -10 10v74q0 10 10 10h306q10 0 10 -10v-74q0 -10 -10 -10h-96q-6 0 -6 -6v-72q0 -6 6 -6h42q10 0 10 -10v-57q0 -10 -10 -10h-42q-6 0 -6 -6v-251q0 -10 -10 -10 +z" /> + <glyph glyph-name="thorn.sc" horiz-adv-x="400" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-68q0 -6 6 -6h43q81 0 125.5 -41.5t44.5 -121.5q0 -79 -44.5 -120.5t-125.5 -41.5h-43q-6 0 -6 -6v-97q0 -10 -10 -10zM192 204q42 0 60.5 16.5t18.5 54.5t-18 54.5t-61 16.5h-32q-6 0 -6 -6v-130q0 -6 6 -6h32z +" /> + <glyph glyph-name="ugrave.sc" horiz-adv-x="421" +d="M246 595h-57q-11 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5 +z" /> + <glyph glyph-name="uacute.sc" horiz-adv-x="421" +d="M236 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5 +t-117.5 -42.5z" /> + <glyph glyph-name="ucircumflex.sc" horiz-adv-x="421" +d="M210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5zM337 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125 +q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="utilde.sc" horiz-adv-x="421" +d="M254 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10 +v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="udieresis.sc" horiz-adv-x="421" +d="M318 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM166 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358 +q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="umacron.sc" horiz-adv-x="421" +d="M312 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="ubreve.sc" horiz-adv-x="421" +d="M209 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10 +h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uring.sc" horiz-adv-x="421" +d="M209 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM209 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82 +q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uhungarumlaut.sc" horiz-adv-x="421" +d="M300 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM168 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10zM210 -9q-74 0 -116.5 42.5t-42.5 120.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70 +q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -78 -42.5 -120.5t-117.5 -42.5z" /> + <glyph glyph-name="uogonek.sc" horiz-adv-x="421" +d="M211 -190q-41 0 -65 21.5t-24 61.5q0 42 45 103q-55 11 -85.5 51.5t-30.5 106.5v358q0 10 10 10h82q10 0 10 -10v-358q0 -70 57 -70q58 0 58 70v358q0 10 10 10h82q10 0 10 -10v-358q0 -133 -117 -159q-47 -52 -47 -86q0 -24 19 -24q10 0 18 5q9 6 13 -4l20 -46 +q3 -8 -5 -13q-23 -17 -60 -17z" /> + <glyph glyph-name="wacute.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM295 595h-57q-11 0 -6 10l69 125 +q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="wcircumflex.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM396 595h-60q-10 0 -19 10l-48 60 +h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="wdieresis.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM377 614h-65q-10 0 -10 10v86 +q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM225 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="wgrave.sc" horiz-adv-x="539" +d="M416 0h-70q-8 0 -10 10l-65 322h-2l-67 -322q-2 -10 -10 -10h-69q-8 0 -10 10l-97 502q-2 10 9 10h79q10 0 11 -10l47 -327h1l66 327q1 10 11 10h58q10 0 11 -10l67 -327h2l47 327q1 10 11 10h78q11 0 9 -10l-97 -502q-2 -10 -10 -10zM297 595h-57q-10 0 -18 10l-90 125 +q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="yacute.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM199 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="ycircumflex.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM308 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125 +q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="ydieresis.sc" horiz-adv-x="359" +d="M220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10zM289 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM137 614h-65q-10 0 -10 10v86q0 10 10 10h65 +q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="ygrave.sc" horiz-adv-x="359" +d="M215 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10zM220 0h-81q-10 0 -10 10v202l-121 300q-3 10 8 10h83q9 0 12 -10l68 -194h3l68 194q3 10 12 10h81q11 0 8 -10l-121 -300v-202q0 -10 -10 -10z" /> + <glyph glyph-name="zacute.sc" horiz-adv-x="347" +d="M195 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="zcaron.sc" horiz-adv-x="347" +d="M200 595h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13 +l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="zdotaccent.sc" horiz-adv-x="347" +d="M216 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM305 0h-263q-10 0 -10 10v72q0 7 3 13l173 332v1h-156q-10 0 -10 10v74q0 10 10 10h252q10 0 10 -10v-73q0 -7 -3 -13l-172 -331v-2h166q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="ij.sc" horiz-adv-x="542" +d="M144 0h-82q-10 0 -10 10v502q0 10 10 10h82q10 0 10 -10v-502q0 -10 -10 -10zM297 -9q-67 0 -107 40q-6 7 1 14l57 52q7 5 15 0q17 -13 38 -13q53 0 53 65v363q0 10 10 10h82q10 0 10 -10v-359q0 -82 -41.5 -122t-117.5 -40z" /> + <glyph glyph-name="germandbls.sc" horiz-adv-x="754" +d="M195 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-10 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40 +t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5zM572 -9q-153 0 -164 138q-1 10 8 12l78 13q9 2 11 -8q9 -66 64 -66q59 0 59 66q0 28 -14 44t-50 28l-38 12q-61 20 -86 53.5t-25 97.5q0 70 41.5 110t111.5 40q71 0 110 -35t47 -98 +q1 -10 -8 -12l-75 -10q-9 -2 -11 8q-9 57 -59 57q-57 0 -57 -58q0 -25 12.5 -40t46.5 -26l38 -12q65 -20 90.5 -55.5t25.5 -102.5q0 -73 -40 -114.5t-116 -41.5z" /> + <glyph glyph-name="eng.sc" horiz-adv-x="441" +d="M239 -180h-11q-10 0 -10 10v72q0 10 10 10l10 1q28 3 38.5 13.5t10.5 37.5v9l-140 386h-5v-349q0 -10 -10 -10h-70q-10 0 -10 10v502q0 10 10 10h97q13 0 16 -10l119 -347h5v347q0 10 10 10h70q10 0 10 -10v-534q0 -85 -34.5 -121.5t-115.5 -36.5z" /> + <glyph glyph-name="grave.sc" horiz-adv-x="415" +d="M287 595h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="acute.sc" horiz-adv-x="415" +d="M185 595h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="circumflex.sc" horiz-adv-x="415" +d="M335 595h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-4 0 -5.5 3t1.5 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="caron.sc" horiz-adv-x="415" +d="M233 595h-52q-10 0 -17 10l-88 125q-3 4 -1.5 7t5.5 3h60q10 0 19 -10l47 -60h2l48 60q9 10 19 10h60q5 0 6 -3t-2 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="tilde.sc" horiz-adv-x="415" +d="M251 607q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="dieresis.sc" horiz-adv-x="415" +d="M316 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM164 614h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="macron.sc" horiz-adv-x="414" +d="M312 628h-206q-10 0 -10 10v60q0 10 10 10h206q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="breve.sc" horiz-adv-x="415" +d="M207 596q-57 0 -89 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q16 -47 60 -47q45 0 61 47q3 10 10 10h45q10 0 10 -10q-4 -52 -36.5 -85.5t-89.5 -33.5z" /> + <glyph glyph-name="ring.sc" horiz-adv-x="415" +d="M207 579q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM207 622q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="hungarumlaut.sc" horiz-adv-x="415" +d="M247 595h-50q-11 0 -6 10l60 125q4 10 16 10h68q11 0 5 -10l-75 -125q-6 -10 -18 -10zM115 595h-51q-11 0 -6 10l61 125q4 10 16 10h67q11 0 5 -10l-75 -125q-6 -10 -17 -10z" /> + <glyph glyph-name="dotaccent.sc" horiz-adv-x="415" +d="M248 614h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="exclamdown.sc" horiz-adv-x="232" +d="M140 344h-48q-10 0 -10 -10l-22 -332q0 -10 10 -10h92q10 0 10 10l-22 332q0 10 -10 10zM158 514h-84q-10 0 -10 -10v-99q0 -10 10 -10h84q10 0 10 10v99q0 10 -10 10z" /> + <glyph glyph-name="questiondown.sc" horiz-adv-x="341" +d="M130 346h84q10 0 10 -10v-26q0 -37 -17 -57l-46 -59q-30 -38 -30 -70q0 -13 3 -22q10 -25 41 -25t40 26q3 8 4 31q0 11 10 9l80 -8q9 -1 9 -10q0 -32 -9 -59q-13 -40 -49 -61.5t-86 -21.5q-51 0 -87.5 22.5t-49.5 63.5q-8 24 -8 51q0 54 30 92l46 58q15 19 15 46v20 +q0 10 10 10zM130 514h84q10 0 10 -10v-99q0 -10 -10 -10h-84q-10 0 -10 10v99q0 10 10 10z" /> + <glyph glyph-name="Euro.sc" horiz-adv-x="378" +d="M208 -9q-106 0 -133 92q-8 25 -8 87q0 6 -6 6h-30q-10 0 -10 10v48q0 10 10 10h30q6 0 6 6v24q0 6 -6 6h-30q-10 0 -10 10v49q0 10 10 10h30q6 0 6 6q0 58 8 83q27 93 133 93q62 0 97.5 -30t42.5 -81q2 -9 -7 -11l-75 -14q-10 -2 -12 7q-7 37 -44 37q-32 0 -40 -31 +q-4 -11 -4 -53q0 -6 6 -6h98q10 0 10 -10l-10 -49q-1 -10 -10 -10h-88q-6 0 -6 -6v-24q0 -6 6 -6h88q10 0 10 -10l-10 -48q-1 -10 -10 -10h-78q-6 0 -6 -6q0 -45 4 -57q8 -31 40 -31q36 0 44 38q2 9 12 7l75 -14q9 -2 7 -11q-7 -51 -42.5 -81t-97.5 -30z" /> + <glyph glyph-name="cent.sc" horiz-adv-x="378" +d="M206 -75h-15q-10 0 -10 10v57q-98 6 -125 92q-9 28 -9 101t9 101q27 85 125 91v60q0 10 10 10h15q10 0 10 -10v-60q52 -5 84.5 -33t39.5 -68q2 -11 -7 -12l-77 -14q-9 -1 -12 7q-8 22 -28 26v-198q19 4 28 28q3 8 12 7l77 -15q9 -1 7 -12q-7 -41 -39.5 -68.5t-84.5 -32.5 +v-57q0 -10 -10 -10zM153 111q6 -22 28 -26v198q-22 -4 -28 -25q-4 -14 -4 -73q0 -60 4 -74z" /> + <glyph glyph-name="sterling.sc" horiz-adv-x="378" +d="M333 0h-282q-10 0 -10 10v73q0 6 4 11q24 30 24 65v43q0 6 -6 6h-26q-10 0 -10 10v53q0 10 10 10h26q6 0 6 6v105q0 63 35 101t104 38q61 0 94.5 -31.5t40.5 -83.5q2 -11 -9 -12l-75 -13q-10 -2 -12 8q-6 38 -39 38q-37 0 -37 -50v-100q0 -6 6 -6h81q10 0 10 -10v-53 +q0 -10 -10 -10h-81q-6 0 -6 -6v-43q0 -41 -22 -64v-2h184q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="florin.sc" horiz-adv-x="378" +d="M331 265h-78l-45 -242q-16 -89 -52 -125t-114 -36h-18q-10 0 -10 10v74q0 10 10 10h7q36 0 52 13t23 52l46 244h-54q-10 0 -10 10v59q0 10 10 10h69l3 17q16 89 52 125t114 36h18q10 0 10 -10v-74q0 -10 -10 -10h-7q-36 0 -52 -13t-23 -52l-4 -19h63q10 0 10 -10v-59 +q0 -10 -10 -10z" /> + <glyph glyph-name="yen.sc" horiz-adv-x="378" +d="M229 0h-81q-10 0 -10 10v74q0 6 -6 6h-79q-10 0 -10 10v48q0 10 10 10h79q6 0 6 6v24q0 6 -6 6h-79q-10 0 -10 10v48q0 10 10 10h67v3l-98 247q-3 10 8 10h84q9 0 12 -10l64 -179h2l60 179q3 10 12 10h83q11 0 8 -10l-99 -247v-3h68q10 0 10 -10v-48q0 -10 -10 -10h-79 +q-6 0 -6 -6v-24q0 -6 6 -6h79q10 0 10 -10v-48q0 -10 -10 -10h-79q-6 0 -6 -6v-74q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand.sc" horiz-adv-x="902" +d="M235 -11h-53q-10 0 -7 10l241 523q4 10 13 10h53q10 0 7 -10l-241 -523q-4 -10 -13 -10zM166 256q-33 0 -57 15t-32 40q-7 20 -7 81q0 60 7 80q8 26 32 41t57 15q34 0 58 -15t32 -41q7 -24 7 -80t-7 -81q-8 -25 -32 -40t-58 -15zM166 318q17 0 22 15q3 9 3 59q0 48 -3 59 +q-5 14 -22 14q-16 0 -21 -14q-3 -11 -3 -59q0 -50 3 -59q5 -15 21 -15zM735 -7q-33 0 -57 15t-32 41q-8 22 -8 80t8 80q8 26 32 41t57 15q71 0 89 -56q8 -22 8 -80t-8 -80q-18 -56 -89 -56zM497 -7q-33 0 -57 15t-32 41q-7 20 -7 80t7 80q8 26 32 41t57 15q34 0 57.5 -15 +t31.5 -41q8 -22 8 -80t-8 -80q-8 -26 -31.5 -41t-57.5 -15zM735 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14q-16 0 -22 -14q-3 -9 -3 -59t3 -59q6 -14 22 -14zM497 56q17 0 22 14q3 9 3 59t-3 59q-5 14 -22 14q-16 0 -21 -14q-3 -9 -3 -59t3 -59q5 -14 21 -14z" /> + <glyph glyph-name="parenleft.sc" horiz-adv-x="257" +d="M209 -84h-49q-8 0 -13 10q-81 162 -81 335t81 335q5 10 13 10h49q10 0 7 -10q-50 -168 -50 -335t50 -335q3 -10 -7 -10z" /> + <glyph glyph-name="parenright.sc" horiz-adv-x="257" +d="M98 -84h-49q-10 0 -7 10q50 168 50 335t-50 335q-3 10 7 10h49q8 0 13 -10q81 -166 81 -335t-81 -335q-5 -10 -13 -10z" /> + <glyph glyph-name="bracketleft.sc" horiz-adv-x="256" +d="M215 -84h-134q-10 0 -10 10v670q0 10 10 10h134q10 0 10 -10v-63q0 -10 -10 -10h-45q-6 0 -6 -6v-512q0 -6 6 -6h45q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="bracketright.sc" horiz-adv-x="256" +d="M175 -84h-135q-10 0 -10 10v63q0 10 10 10h46q6 0 6 6v512q0 6 -6 6h-46q-10 0 -10 10v63q0 10 10 10h135q10 0 10 -10v-670q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft.sc" horiz-adv-x="306" +d="M266 -84h-27q-56 0 -87 31t-31 88v117q0 36 -12.5 53t-43.5 17q-10 0 -10 10v63q0 10 10 10q31 0 43.5 17t12.5 53v112q0 57 31 88t87 31h27q10 0 10 -10v-63q0 -10 -10 -10h-9q-42 0 -42 -47v-80q0 -62 -10.5 -89.5t-45.5 -41.5v-3q35 -14 45.5 -41.5t10.5 -89.5v-86 +q0 -46 42 -46h9q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="braceright.sc" horiz-adv-x="306" +d="M67 -84h-27q-10 0 -10 10v63q0 10 10 10h9q42 0 42 46v86q0 62 10.5 89.5t45.5 41.5v3q-35 14 -45.5 41.5t-10.5 89.5v80q0 47 -42 47h-9q-10 0 -10 10v63q0 10 10 10h27q57 0 88 -31t31 -88v-112q0 -36 12.5 -53t42.5 -17q10 0 10 -10v-63q0 -10 -10 -10 +q-30 0 -42.5 -17t-12.5 -53v-117q0 -57 -31 -88t-88 -31z" /> + <glyph glyph-name="zero.onum" +d="M199 -9q-55 0 -92 24.5t-51 68.5q-10 33 -10 157q0 123 10 156q14 45 51 69.5t92 24.5t92 -24.5t51 -69.5q10 -33 10 -156q0 -124 -10 -157q-14 -44 -51 -68.5t-92 -24.5zM148 241q0 -111 5 -126q9 -31 46 -31t46 31q5 15 5 126q0 110 -5 125q-9 31 -46 31t-46 -31 +q-5 -15 -5 -125z" /> + <glyph glyph-name="one.onum" +d="M262 0h-82q-10 0 -10 10v366h-2l-85 -35q-11 -4 -11 7v77q0 11 7 14l90 40q6 3 15 3h78q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="two.onum" +d="M338 0h-282q-10 0 -10 10v71q0 11 7 18l153 141q22 20 31 39.5t9 53.5q0 20 -4 32q-10 32 -47 32q-36 0 -46 -32q-4 -12 -4 -51q0 -12 -12 -10l-77 8q-10 1 -10 12q0 44 9 72q30 95 142 95q111 0 142 -95q9 -29 9 -63q0 -53 -13.5 -85.5t-44.5 -59.5l-104 -94v-1h152 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="three.onum" +d="M193 -189q-111 0 -141 96q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -44 4 -57q11 -33 46 -33q36 0 47 33q4 13 4 91q0 80 -4 93q-10 31 -50 31h-30q-10 0 -10 10v72q0 8 4 15l85 138v1h-181q-10 0 -10 10v74q0 10 10 10h278q10 0 10 -10v-72q0 -6 -3 -14l-90 -142v-2 +q62 -11 83 -76q10 -31 10 -138q0 -91 -10 -123q-31 -94 -142 -94z" /> + <glyph glyph-name="four.onum" +d="M316 -180h-82q-10 0 -10 10v164q0 6 -6 6h-186q-10 0 -10 10v71q0 4 2 10l139 400q3 8 12 8h83q10 0 7 -11l-134 -393v-2h87q6 0 6 6v112q0 10 10 10h82q10 0 10 -10v-112q0 -6 5 -6h37q10 0 10 -10v-73q0 -10 -10 -10h-36q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onum" +d="M199 -189q-109 0 -141 96q-9 29 -9 67q0 11 10 12l77 8q12 2 12 -10q0 -34 4 -47q11 -33 47 -33q35 0 46 33q4 13 4 92t-4 91q-11 33 -46 33q-34 0 -47 -30q-4 -9 -15 -9h-67q-10 0 -10 10v348q0 10 10 10h271q10 0 10 -10v-74q0 -10 -10 -10h-184q-6 0 -6 -6v-163h1 +q26 28 73 28q90 0 116 -80q10 -31 10 -138q0 -92 -10 -124q-31 -94 -142 -94z" /> + <glyph glyph-name="six.onum" +d="M199 -9q-113 0 -143 96q-9 28 -9 111q0 69 6.5 107t25.5 86l108 282q3 7 12 7h84q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96zM199 84q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79 +q0 -68 4 -81q11 -33 46 -33z" /> + <glyph glyph-name="seven.onum" +d="M175 -180h-83q-10 0 -6 13l164 553v2h-104q-6 0 -6 -6v-63q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-72q0 -5 -2 -13l-162 -557q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onum" +d="M199 -9q-113 0 -143 96q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96zM199 403q37 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q11 -33 46 -33zM199 84q36 0 47 33q4 13 4 80t-4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79t4 -80q11 -33 46 -33z" /> + <glyph glyph-name="nine.onum" +d="M207 -180h-84q-12 0 -7 11l96 252l-2 2q-12 -7 -34 -7q-90 0 -119 92q-10 32 -10 114t9 110q30 97 143 97q112 0 144 -97q9 -28 9 -110q0 -69 -6.5 -106.5t-25.5 -86.5l-101 -264q-3 -7 -12 -7zM199 172q37 0 47 33q4 12 4 79q0 68 -4 80q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -80q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="zero.scprop" horiz-adv-x="378" +d="M189 -9q-52 0 -87.5 23t-48.5 66q-10 30 -10 181t10 180q28 90 136 90t136 -90q10 -29 10 -180t-10 -181q-13 -43 -48.5 -66t-87.5 -23zM189 84q31 0 40 28q4 13 4 149q0 135 -4 148q-9 28 -40 28t-40 -28q-4 -13 -4 -148q0 -136 4 -149q9 -28 40 -28z" /> + <glyph glyph-name="one.scprop" horiz-adv-x="303" +d="M212 0h-82q-10 0 -10 10v398h-1l-79 -44q-11 -6 -11 7v83q0 8 7 14l81 49q8 5 16 5h79q10 0 10 -10v-502q0 -10 -10 -10z" /> + <glyph glyph-name="two.scprop" horiz-adv-x="371" +d="M319 0h-270q-9 0 -9 8v72q0 7 3 11l159 207q25 34 25 82q0 20 -3 31q-9 26 -41 26t-41 -26q-3 -11 -3 -36q0 -12 -12 -10l-77 8q-10 1 -10 12q0 38 6 57q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -63q0 -77 -46 -135l-119 -150v-1h155q10 0 10 -10v-73 +q0 -10 -10 -10z" /> + <glyph glyph-name="three.scprop" horiz-adv-x="372" +d="M183 -9q-51 0 -87.5 23.5t-49.5 65.5q-6 19 -6 47q0 11 10 12l77 8q12 2 12 -10q0 -17 3 -26q10 -27 41 -27t41 27q3 9 3 45q0 28 -3 39q-9 25 -44 25h-13q-10 0 -10 10v73q0 10 10 10h13q36 0 44 24q3 9 3 35q0 28 -3 39q-9 26 -41 26t-41 -26q-3 -11 -3 -26 +q0 -12 -12 -10l-77 7q-10 1 -10 12q0 29 6 48q13 42 49.5 65.5t87.5 23.5q52 0 88 -23t49 -66q9 -27 9 -70q0 -30 -6 -48q-12 -34 -46 -53v-2q35 -20 46 -53q6 -18 6 -60q0 -49 -9 -76q-13 -43 -49 -66t-88 -23z" /> + <glyph glyph-name="four.scprop" horiz-adv-x="376" +d="M301 0h-80q-10 0 -10 10v49q0 6 -6 6h-171q-10 0 -10 10v73q0 5 2 11l130 355q3 8 12 8h84q11 0 8 -11l-129 -350v-2h74q6 0 6 6v125q0 10 10 10h80q10 0 10 -10v-125q0 -6 5 -6h28q10 0 10 -10v-74q0 -10 -10 -10h-27q-6 0 -6 -6v-49q0 -10 -10 -10z" /> + <glyph glyph-name="five.scprop" horiz-adv-x="376" +d="M188 -9q-52 0 -88 23t-49 66q-5 15 -5 33q0 11 10 12l76 8q11 1 13 -10l3 -13q9 -26 41 -26q30 0 39 27q4 12 4 56q0 43 -4 55q-9 27 -39 27q-28 0 -40 -18q-5 -8 -16 -8h-67q-10 0 -10 10v279q0 10 10 10h258q10 0 10 -10v-74q0 -10 -10 -10h-171q-6 0 -6 -6v-98h2 +q23 18 68 18q84 0 109 -77q8 -23 8 -98q0 -61 -9 -88q-13 -43 -49 -65.5t-88 -22.5z" /> + <glyph glyph-name="six.scprop" horiz-adv-x="376" +d="M188 -9q-52 0 -88 23t-49 66q-9 27 -9 74q0 83 30 148l99 210q5 10 16 10h81q12 0 6 -11l-96 -198l2 -2q10 4 33 4q87 0 112 -79q9 -27 9 -82q0 -47 -9 -74q-13 -43 -49 -66t-88 -23zM188 84q30 0 40 27q4 12 4 43q0 29 -4 41q-9 27 -40 27t-40 -27q-4 -12 -4 -41 +q0 -31 4 -43q10 -27 40 -27z" /> + <glyph glyph-name="seven.scprop" horiz-adv-x="362" +d="M159 0h-79q-12 0 -8 13l157 414v1h-90q-6 0 -6 -6v-37q0 -10 -10 -10h-73q-10 0 -10 10v127q0 10 10 10h270q10 0 10 -10v-75q0 -5 -2 -11l-154 -416q-4 -10 -15 -10z" /> + <glyph glyph-name="eight.scprop" horiz-adv-x="378" +d="M189 -9q-52 0 -88 23t-49 66q-9 27 -9 76q0 39 7 62q14 39 42 54v2q-28 15 -42 54q-7 23 -7 50q0 37 9 64q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -64q0 -27 -7 -50q-14 -39 -42 -54v-2q28 -15 42 -54q7 -23 7 -62q0 -49 -9 -76q-13 -43 -49 -66t-88 -23zM189 319 +q30 0 40 27q4 14 4 32q0 19 -4 33q-9 26 -40 26t-40 -26q-4 -14 -4 -33q0 -18 4 -32q10 -27 40 -27zM189 84q30 0 40 27q4 12 4 45q0 32 -4 44q-9 27 -40 27t-40 -27q-4 -12 -4 -44q0 -33 4 -45q10 -27 40 -27z" /> + <glyph glyph-name="nine.scprop" horiz-adv-x="376" +d="M189 0h-81q-12 0 -6 11l96 198l-2 2q-10 -4 -33 -4q-87 0 -112 79q-9 27 -9 82q0 47 9 74q13 43 49 66t88 23t88 -23t49 -66q9 -27 9 -74q0 -84 -30 -148l-99 -210q-5 -10 -16 -10zM188 300q31 0 40 27q4 12 4 41t-4 43q-9 26 -40 26t-40 -26q-4 -14 -4 -43t4 -41 +q9 -27 40 -27z" /> + <glyph glyph-name="zero.prop" +d="M57 84q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93q-54 0 -91 24t-51 69zM154 115q10 -31 45 -31q36 0 46 31q5 16 5 225t-5 225q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225t6 -225z" /> + <glyph glyph-name="one.prop" horiz-adv-x="323" +d="M131 10v552h-2l-85 -60q-4 -3 -7.5 -1.5t-3.5 7.5v85q0 9 10 17l87 64q9 6 18 6h75q10 0 10 -10v-660q0 -10 -10 -10h-82q-10 0 -10 10z" /> + <glyph glyph-name="two.prop" horiz-adv-x="391" +d="M43 10v71q0 9 5 20l169 304q26 45 26 112q0 33 -4 46q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -62q0 -12 -12 -10l-78 7q-9 2 -9 12q0 59 8 84q32 95 143 95t142 -94q9 -29 9 -78q0 -54 -9.5 -88t-32.5 -75l-149 -260v-1h181q10 0 10 -10v-73q0 -10 -10 -10h-282 +q-10 0 -10 10z" /> + <glyph glyph-name="three.prop" horiz-adv-x="390" +d="M51 86q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -43 4 -56q11 -33 46 -33q36 0 47 32q4 13 4 79q0 70 -4 81q-10 30 -50 30h-15q-10 0 -10 10v72q0 10 10 10h15q41 0 50 29q4 11 4 73q0 51 -4 64q-11 32 -47 32q-35 0 -46 -33q-4 -13 -4 -56q0 -12 -12 -10l-77 7 +q-10 1 -10 12q0 50 9 78q30 95 141 95q112 0 143 -93q9 -28 9 -96q0 -65 -7 -86q-10 -34 -49 -58v-2q39 -24 49 -58q7 -21 7 -101q0 -83 -9 -111q-31 -93 -143 -93q-111 0 -141 95z" /> + <glyph glyph-name="four.prop" horiz-adv-x="400" +d="M34 101q-10 0 -10 10v72q0 5 2 11l140 478q3 8 12 8h83q11 0 8 -11l-140 -473v-2h86q6 0 6 6v180q0 10 10 10h82q10 0 10 -10v-180q0 -6 5 -6h34q10 0 10 -10v-73q0 -10 -10 -10h-33q-6 0 -6 -6v-85q0 -10 -10 -10h-82q-10 0 -10 10v85q0 6 -6 6h-181z" /> + <glyph glyph-name="five.prop" horiz-adv-x="395" +d="M56 86q-8 25 -8 68q0 10 9 12l78 8q12 2 12 -10q0 -34 4 -47q11 -33 46 -33q36 0 47 32q4 12 4 101q0 88 -4 100q-10 32 -47 32q-34 0 -46 -30q-4 -9 -15 -9h-68q-10 0 -10 10v350q0 10 10 10h272q10 0 10 -10v-73q0 -10 -10 -10h-184q-6 0 -6 -6v-166h1q26 28 73 28 +q90 0 116 -80q10 -31 10 -146q0 -104 -9 -132q-31 -94 -143 -94q-110 0 -142 95z" /> + <glyph glyph-name="six.prop" horiz-adv-x="395" +d="M54 87q-9 28 -9 111q0 69 6.5 107t25.5 86l107 279q4 10 14 10h83q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96q-113 0 -143 96zM151 117q11 -33 46 -33q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33 +q-4 -12 -4 -79q0 -68 4 -81z" /> + <glyph glyph-name="seven.prop" horiz-adv-x="378" +d="M75 13l169 572v2h-104q-6 0 -6 -6v-64q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-74q0 -5 -2 -11l-167 -575q-3 -10 -13 -10h-83q-10 0 -6 13z" /> + <glyph glyph-name="eight.prop" horiz-adv-x="397" +d="M55 87q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96q-113 0 -143 96zM198 403q36 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q10 -33 46 -33zM152 117q11 -33 46 -33q36 0 47 33q4 13 4 80t-4 79q-11 33 -47 33t-46 -33q-4 -12 -4 -79t4 -80z" /> + <glyph glyph-name="nine.prop" horiz-adv-x="395" +d="M107 11l103 270l-2 2q-10 -6 -34 -6q-91 0 -119 91q-10 32 -10 114t9 111q30 96 143 96q112 0 144 -96q9 -28 9 -111q0 -68 -6.5 -106t-25.5 -87l-107 -279q-4 -10 -14 -10h-83q-12 0 -7 11zM197 370q37 0 47 33q4 12 4 79q0 68 -4 81q-11 33 -47 33q-35 0 -46 -33 +q-4 -13 -4 -81q0 -67 4 -79q11 -33 46 -33z" /> + <glyph glyph-name="Euro.prop" horiz-adv-x="410" +d="M229 -9q-108 0 -140 96q-11 36 -11 148q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6v43q0 6 -6 6h-36q-10 0 -10 10v54q0 10 10 10h36q6 0 6 6q0 107 11 143q32 96 140 96q67 0 107 -38.5t45 -101.5q2 -11 -7 -12l-77 -15q-10 -2 -12 8q-8 66 -54 66 +q-35 0 -46 -34q-5 -15 -5 -112q0 -6 6 -6h130q10 0 10 -10l-10 -54q-1 -10 -10 -10h-120q-6 0 -6 -6v-43q0 -6 6 -6h115q10 0 10 -10l-10 -54q-1 -10 -10 -10h-105q-6 0 -6 -6q0 -102 5 -117q11 -34 46 -34q46 0 54 66q2 10 12 8l77 -15q9 -1 7 -12q-5 -63 -45 -101.5 +t-107 -38.5z" /> + <glyph glyph-name="cent.prop" horiz-adv-x="379" +d="M203 -99h-17q-10 0 -10 10v81q-99 6 -127 94q-12 37 -12 155t12 155q28 88 127 94v81q0 10 10 10h17q10 0 10 -10v-81q114 -11 130 -122q2 -11 -7 -12l-77 -15q-11 -2 -12 7q-7 39 -34 47v-308q27 8 34 46q1 9 12 7l77 -14q9 -1 7 -12q-15 -111 -130 -122v-81 +q0 -10 -10 -10zM144 116q8 -24 32 -30v309q-25 -4 -32 -29q-5 -16 -5 -125t5 -125z" /> + <glyph glyph-name="dollar.prop" horiz-adv-x="406" +d="M38 165q0 10 8 11l75 13q11 1 11 -9q1 -47 12.5 -69t37.5 -26v221l-28 11q-63 25 -86.5 67t-23.5 123q0 174 138 181v41q0 10 10 10h17q10 0 10 -10v-41q66 -6 97.5 -46t37.5 -114q1 -9 -9 -11l-73 -11q-9 -2 -11 8q-3 37 -12.5 55.5t-29.5 23.5v-190l26 -10 +q63 -24 88.5 -67.5t25.5 -130.5q0 -100 -34 -149t-106 -54v-55q0 -10 -10 -10h-17q-10 0 -10 10v55q-72 4 -106.5 46.5t-37.5 126.5zM182 419v175q-40 -8 -40 -83q0 -40 8 -59.5t32 -32.5zM219 86q22 5 32 26t10 69q0 46 -9.5 70.5t-32.5 38.5v-204z" /> + <glyph glyph-name="sterling.prop" horiz-adv-x="417" +d="M362 0h-302q-10 0 -10 10v73q0 5 3 10q27 36 27 91v93q0 6 -6 6h-29q-10 0 -10 10v53q0 10 10 10h29q6 0 6 6v172q0 73 36.5 114t108.5 41q130 0 144 -141q2 -10 -8 -12l-77 -13q-9 -2 -11 8q-3 35 -13.5 50t-33.5 15q-44 0 -44 -60v-174q0 -6 6 -6h89q10 0 10 -10v-53 +q0 -10 -10 -10h-89q-6 0 -6 -6v-93q0 -60 -25 -89v-2h205q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="florin.prop" horiz-adv-x="403" +d="M340 325h-78l-46 -343q-11 -84 -49.5 -123t-115.5 -39h-21q-10 0 -10 10v74q0 10 10 10h15q33 0 49 14t20 49l47 348h-67q-10 0 -10 10v62q0 10 10 10h78l15 111q11 84 49.5 123t115.5 39h21q10 0 10 -10v-74q0 -10 -10 -10h-15q-33 0 -49 -14t-20 -49l-16 -116h67 +q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="yen.prop" horiz-adv-x="397" +d="M239 0h-81q-10 0 -10 10v110q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h88q6 0 6 6v43q0 6 -6 6h-88q-10 0 -10 10v54q0 10 10 10h78v3l-109 338q-3 10 8 10h85q9 0 12 -10l71 -263h3l69 263q3 10 12 10h83q11 0 8 -10l-109 -338v-3h77q10 0 10 -10v-54q0 -10 -10 -10 +h-87q-6 0 -6 -6v-43q0 -6 6 -6h87q10 0 10 -10v-54q0 -10 -10 -10h-87q-6 0 -6 -6v-110q0 -10 -10 -10z" /> + <glyph glyph-name="zero.onumprop" +d="M199 -9q-55 0 -92 24.5t-51 68.5q-10 33 -10 157q0 123 10 156q14 45 51 69.5t92 24.5t92 -24.5t51 -69.5q10 -33 10 -156q0 -124 -10 -157q-14 -44 -51 -68.5t-92 -24.5zM148 241q0 -111 5 -126q9 -31 46 -31t46 31q5 15 5 126q0 110 -5 125q-9 31 -46 31t-46 -31 +q-5 -15 -5 -125z" /> + <glyph glyph-name="one.onumprop" horiz-adv-x="304" +d="M214 0h-82q-10 0 -10 10v366h-2l-85 -35q-11 -4 -11 7v77q0 11 7 14l90 40q6 3 15 3h78q10 0 10 -10v-462q0 -10 -10 -10z" /> + <glyph glyph-name="two.onumprop" horiz-adv-x="389" +d="M334 0h-282q-10 0 -10 10v71q0 11 7 18l153 141q22 20 31 39.5t9 53.5q0 20 -4 32q-10 32 -47 32q-36 0 -46 -32q-4 -12 -4 -51q0 -12 -12 -10l-77 8q-10 1 -10 12q0 44 9 72q30 95 142 95q111 0 142 -95q9 -29 9 -63q0 -53 -13.5 -85.5t-44.5 -59.5l-104 -94v-1h152 +q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="three.onumprop" horiz-adv-x="387" +d="M190 -189q-111 0 -141 96q-9 29 -9 78q0 11 10 12l77 7q12 2 12 -10q0 -44 4 -57q11 -33 46 -33q36 0 47 33q4 13 4 91q0 80 -4 93q-10 31 -50 31h-30q-10 0 -10 10v72q0 8 4 15l85 138v1h-181q-10 0 -10 10v74q0 10 10 10h278q10 0 10 -10v-72q0 -6 -3 -14l-90 -142v-2 +q62 -11 83 -76q10 -31 10 -138q0 -91 -10 -123q-31 -94 -142 -94z" /> + <glyph glyph-name="four.onumprop" horiz-adv-x="406" +d="M322 -180h-82q-10 0 -10 10v164q0 6 -6 6h-186q-10 0 -10 10v71q0 4 2 10l139 400q3 8 12 8h83q10 0 7 -11l-134 -393v-2h87q6 0 6 6v112q0 10 10 10h82q10 0 10 -10v-112q0 -6 5 -6h37q10 0 10 -10v-73q0 -10 -10 -10h-36q-6 0 -6 -6v-164q0 -10 -10 -10z" /> + <glyph glyph-name="five.onumprop" horiz-adv-x="397" +d="M200 -189q-109 0 -141 96q-9 29 -9 67q0 11 10 12l77 8q12 2 12 -10q0 -34 4 -47q11 -33 47 -33q35 0 46 33q4 13 4 92t-4 91q-10 33 -46 33q-34 0 -47 -30q-4 -9 -15 -9h-67q-10 0 -10 10v348q0 10 10 10h271q10 0 10 -10v-74q0 -10 -10 -10h-184q-6 0 -6 -6v-163h1 +q26 28 73 28q90 0 116 -80q10 -31 10 -138q0 -92 -10 -124q-31 -94 -142 -94z" /> + <glyph glyph-name="six.onumprop" horiz-adv-x="395" +d="M197 -9q-113 0 -143 96q-9 28 -9 111q0 69 6.5 107t25.5 86l108 282q3 7 12 7h84q12 0 7 -11l-104 -270l2 -2q10 6 34 6q90 0 120 -91q10 -32 10 -114t-9 -111q-32 -96 -144 -96zM197 84q36 0 47 33q4 13 4 81q0 67 -4 79q-10 33 -47 33q-35 0 -46 -33q-4 -12 -4 -79 +q0 -68 4 -81q11 -33 46 -33z" /> + <glyph glyph-name="seven.onumprop" horiz-adv-x="390" +d="M173 -180h-83q-10 0 -6 13l164 553v2h-104q-6 0 -6 -6v-63q0 -10 -10 -10h-74q-10 0 -10 10v153q0 10 10 10h286q10 0 10 -10v-72q0 -5 -2 -13l-162 -557q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.onumprop" horiz-adv-x="397" +d="M198 -9q-113 0 -143 96q-9 28 -9 110q0 69 9 96q13 41 44 62v2q-31 21 -44 62q-9 27 -9 81q0 64 9 93q30 96 143 96q112 0 144 -96q9 -28 9 -93q0 -54 -9 -81q-13 -41 -44 -62v-2q31 -22 44 -62q9 -27 9 -96q0 -81 -9 -110q-32 -96 -144 -96zM198 403q36 0 47 33 +q4 12 4 64q0 50 -4 63q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -63q0 -52 4 -64q10 -33 46 -33zM198 84q36 0 47 33q4 13 4 80t-4 79q-11 33 -47 33t-46 -33q-4 -12 -4 -79t4 -80q11 -33 46 -33z" /> + <glyph glyph-name="nine.onumprop" horiz-adv-x="397" +d="M206 -180h-84q-12 0 -7 11l96 252l-2 2q-12 -7 -34 -7q-90 0 -119 92q-10 32 -10 114t9 110q30 97 143 97q112 0 144 -97q9 -28 9 -110q0 -69 -6.5 -106.5t-25.5 -86.5l-101 -264q-3 -7 -12 -7zM198 172q36 0 47 33q4 12 4 79q0 68 -4 80q-11 33 -47 33t-46 -33 +q-4 -12 -4 -80q0 -67 4 -79q10 -33 46 -33z" /> + <glyph glyph-name="one.superior" horiz-adv-x="281" +d="M191 430h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.superior" horiz-adv-x="281" +d="M238 430h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.superior" horiz-adv-x="281" +d="M139 422q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="a.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34z" /> + <glyph glyph-name="agrave.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM219 555h-57q-10 0 -18 10l-90 125q-3 4 -1.5 7t6.5 3h81q10 0 16 -10l69 -125q5 -10 -6 -10z" /> + <glyph glyph-name="aacute.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM212 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="acircumflex.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM336 555h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="atilde.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM252 567q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q24 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="adieresis.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM317 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10zM165 574h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="amacron.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM311 588h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60q0 -10 -10 -10z" /> + <glyph glyph-name="abreve.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM208 556q-56 0 -88 33.5t-36 85.5q0 10 10 10h45q7 0 10 -10q17 -49 59 -49q43 0 60 49q3 10 10 10h45q10 0 10 -10q-4 -52 -36 -85.5t-89 -33.5z" /> + <glyph glyph-name="aring.alt01" horiz-adv-x="401" +d="M340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122 +q11 -34 49 -34zM208 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM208 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="aringacute.alt01" horiz-adv-x="401" +d="M232 773h-58q-4 0 -5.5 3t1.5 7l82 95q9 10 21 10h77q5 0 6.5 -3t-1.5 -7l-104 -95q-10 -10 -19 -10zM340 0h-82q-10 0 -10 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -10 -10 -10 +zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34zM208 539q-38 0 -64 26t-26 64q0 39 26 65t64 26q39 0 65 -26t26 -65q0 -38 -26 -64t-65 -26zM208 582q20 0 33 13.5t13 33.5q0 21 -13 34.5t-33 13.5t-32.5 -13.5 +t-12.5 -34.5q0 -20 13 -33.5t32 -13.5z" /> + <glyph glyph-name="aogonek.alt01" horiz-adv-x="401" +d="M248 10v39h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-462q0 -7 -7 -11q-29 -19 -48 -44.5t-19 -45.5q0 -24 19 -24q10 0 18 5q9 6 13 -4l21 -46q3 -8 -5 -13q-25 -17 -60 -17q-41 0 -65.5 21.5 +t-24.5 61.5q0 54 57 107l2 2q-3 3 -3 8zM195 85q37 0 48 34q5 17 5 122t-5 122q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34z" /> + <glyph glyph-name="ae.alt01" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -80 -28q-10 -7 -15 4l-26 59q-4 7 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64z" /> + <glyph glyph-name="aeacute.alt01" horiz-adv-x="578" +d="M388 -9q-86 0 -123 58h-1q-24 -33 -50.5 -45.5t-64.5 -12.5q-47 0 -81 34t-34 110q0 80 41 116.5t106 36.5h52q6 0 6 6v28q0 41 -14.5 59t-51.5 18q-39 0 -82 -29q-9 -6 -13 5l-26 59q-3 8 3 14q55 43 131 43q72 0 106 -33h1q35 33 96 33q113 0 144 -96q11 -38 11 -179 +q0 -10 -10 -10h-191q-6 0 -6 -6q0 -65 5 -83q11 -33 47 -33q40 0 53 44q3 9 12 7l77 -15q9 -1 7 -12q-11 -54 -51 -85.5t-99 -31.5zM436 288q6 0 6 6q0 55 -7 74q-10 32 -46 32t-46 -32q-6 -16 -6 -74q0 -6 6 -6h93zM179 75q27 0 43.5 19t16.5 49v57q0 6 -6 6h-35 +q-67 0 -67 -67q0 -64 48 -64zM315 555h-57q-11 0 -6 10l69 125q6 10 16 10h81q5 0 6.5 -3t-1.5 -7l-90 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="germandbls.alt01" horiz-adv-x="438" +d="M189 -180q-10 0 -10 10v72q0 10 10 10q79 0 101 68q8 24 8 92q0 58 -7 75q-16 48 -71 48q-10 0 -10 10v70q0 9 5 16l61 99v2h-117q-6 0 -6 -6v-376q0 -10 -10 -10h-82q-10 0 -10 10v519q0 151 143 151h21q10 0 10 -10v-74q0 -10 -10 -10h-25q-21 0 -29 -8.5t-8 -29.5v-60 +q0 -6 6 -6h226q10 0 10 -10v-57q0 -7 -3 -13l-79 -131v-2q56 -26 77 -89q10 -31 10 -108q0 -86 -12 -125q-41 -127 -199 -127z" /> + <glyph glyph-name="q.alt01" horiz-adv-x="401" +d="M339 -180h-81q-10 0 -10 10v219h-1q-22 -58 -90 -58q-80 0 -105 80q-13 39 -13 170t13 170q25 80 105 80q67 0 90 -58h1v39q0 10 10 10h82q10 0 10 -10v-544h1l45 47q7 7 14 0l40 -41q6 -6 -1 -14l-101 -97q-3 -3 -9 -3zM195 85q37 0 48 34q5 17 5 122t-5 122 +q-11 34 -48 34q-38 0 -49 -34q-5 -17 -5 -122t5 -122q11 -34 49 -34z" /> + <glyph glyph-name="C.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49z" /> + <glyph glyph-name="Cacute.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM226 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Ccircumflex.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM338 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Ccaron.alt01" horiz-adv-x="408" +d="M209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10 +q0 -102 -40.5 -151t-127.5 -49zM236 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10z" /> + <glyph glyph-name="Cdotaccent.alt01" horiz-adv-x="408" +d="M251 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM209 -9q-121 0 -155 104q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214 +t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84q10 0 10 -10q0 -102 -40.5 -151t-127.5 -49z" /> + <glyph glyph-name="Ccedilla.alt01" horiz-adv-x="408" +d="M109 -145l58 140q-86 15 -113 100q-13 40 -13 245t13 245q34 104 155 104q87 0 127.5 -49t40.5 -151q0 -10 -10 -10h-84q-10 0 -10 10q0 56 -14.5 79.5t-46.5 23.5q-43 0 -55 -38q-7 -22 -7 -214t7 -214q12 -38 55 -38q32 0 46.5 23.5t14.5 79.5q0 10 10 10h84 +q10 0 10 -10q0 -178 -130 -197l-49 -139q-4 -10 -16 -10h-66q-10 0 -7 10z" /> + <glyph glyph-name="G.alt01" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53 +q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gcircumflex.alt01" horiz-adv-x="429" +d="M215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53 +q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106zM342 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Gbreve.alt01" horiz-adv-x="429" +d="M214 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84 +q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gdotaccent.alt01" horiz-adv-x="429" +d="M255 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38q-7 -22 -7 -214 +t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="Gcommaaccent.alt01" horiz-adv-x="429" +d="M177 -221q-8 0 -8 10v147q0 10 10 10h70q10 0 10 -10v-55q0 -13 -8 -22l-61 -73q-6 -7 -13 -7zM215 -9q-126 0 -161 106q-8 24 -10.5 66t-2.5 177t2.5 177t10.5 66q35 106 161 106q171 0 171 -200q0 -10 -10 -10h-84q-10 0 -10 10q0 53 -16 78t-50 25q-47 0 -59 -38 +q-7 -22 -7 -214t7 -214q5 -17 22 -27.5t38 -10.5q22 0 39 10.5t22 27.5q7 24 7 153q0 6 -6 6h-53q-10 0 -10 10v74q0 10 10 10h152q10 0 10 -10v-30q0 -135 -2.5 -176.5t-10.5 -65.5q-35 -106 -160 -106z" /> + <glyph glyph-name="I.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="Igrave.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM171 761h-55q-10 0 -20 10l-99 107q-3 4 -1.5 7t6.5 3h81 +q10 0 17 -10l76 -107q3 -4 1.5 -7t-6.5 -3z" /> + <glyph glyph-name="Iacute.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM153 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3 +t-1.5 -7l-98 -107q-10 -10 -20 -10z" /> + <glyph glyph-name="Ibreve.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM132 742q-56 0 -88 34t-36 85q0 10 10 10h45q7 0 10 -10 +q17 -48 59 -48q43 0 60 48q3 10 10 10h45q10 0 10 -10q-4 -51 -36 -85t-89 -34z" /> + <glyph glyph-name="Icircumflex.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM260 750h-60q-10 0 -19 10l-48 60h-2l-47 -60q-9 -10 -19 -10 +h-60q-5 0 -6 3t2 7l88 125q7 10 17 10h52q11 0 18 -10l88 -125q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Itilde.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM177 763q-24 0 -52 18q-23 16 -38 16q-22 0 -48 -26 +q-4 -4 -8 -2.5t-4 6.5v61q0 9 10 19q24 24 51 24q25 0 51 -18q25 -16 39 -16q22 0 48 26q4 4 8 2.5t4 -6.5v-61q0 -9 -10 -19q-24 -24 -51 -24z" /> + <glyph glyph-name="Idieresis.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM241 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86 +q0 -10 -10 -10zM89 769h-65q-10 0 -10 10v86q0 10 10 10h65q10 0 10 -10v-86q0 -10 -10 -10z" /> + <glyph glyph-name="Imacron.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM235 780h-205q-10 0 -10 10v60q0 10 10 10h205q10 0 10 -10v-60 +q0 -10 -10 -10z" /> + <glyph glyph-name="Idotaccent.alt01" horiz-adv-x="264" +d="M219 0h-173q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10zM174 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86 +q0 -10 -10 -10z" /> + <glyph glyph-name="Iogonek.alt01" horiz-adv-x="264" +d="M134 -190q-41 0 -65 21.5t-24 61.5q0 63 47 107h-46q-10 0 -10 10v73q0 10 10 10h27q6 0 6 6v482q0 6 -6 6h-27q-10 0 -10 10v73q0 10 10 10h173q10 0 10 -10v-73q0 -10 -10 -10h-27q-6 0 -6 -6v-482q0 -6 6 -6h27q10 0 10 -10v-73q0 -10 -10 -10h-38q-53 -52 -53 -91 +q0 -24 19 -24q11 0 19 5q9 6 13 -4l20 -46q3 -8 -5 -13q-25 -17 -60 -17z" /> + <glyph glyph-name="Z.alt01" horiz-adv-x="370" +d="M294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zacute.alt01" horiz-adv-x="370" +d="M202 761h-55q-5 0 -7 3t1 7l77 107q7 10 16 10h81q5 0 6.5 -3t-1.5 -7l-98 -107q-10 -10 -20 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77 +q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron.alt01" horiz-adv-x="370" +d="M214 747h-52q-10 0 -17 10l-88 125q-3 4 -2 7t6 3h60q10 0 19 -10l47 -59h2l48 59q9 10 19 10h60q4 0 5.5 -3t-1.5 -7l-88 -125q-7 -10 -18 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63 +q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="Zdotaccent.alt01" horiz-adv-x="370" +d="M229 769h-82q-10 0 -10 10v86q0 10 10 10h82q10 0 10 -10v-86q0 -10 -10 -10zM294 302h-68l-76 -203v-2h176q10 0 10 -10v-77q0 -10 -10 -10h-281q-10 0 -10 10v72q0 4 2 10l80 210h-40q-10 0 -10 10v63q0 10 10 10h72l75 196v2h-169q-10 0 -10 10v77q0 10 10 10h271 +q10 0 10 -10v-74q0 -4 -2 -10l-76 -201h36q10 0 10 -10v-63q0 -10 -10 -10z" /> + <glyph glyph-name="zero.alt01" +d="M199 -9q-54 0 -91 24t-51 69q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93zM148 340v-70l101 229q0 50 -4 66q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225zM199 84q36 0 46 31q5 16 5 225v70l-102 -229 +q1 -53 6 -66q10 -31 45 -31z" /> + <glyph glyph-name="one.alt01" +d="M347 0h-268q-10 0 -10 10v73q0 10 10 10h77q6 0 6 6v463h-2l-85 -60q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v85q0 8 7 14l90 66q7 6 14 6h79q10 0 10 -10v-571q0 -6 6 -6h77q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt01" +d="M200 -9q-113 0 -143 96q-9 28 -9 122v319q0 76 42 118.5t116 42.5t123 -34q9 -6 3 -14l-39 -64q-5 -8 -14 -3q-35 22 -64 22q-65 0 -65 -69v-123h2q23 21 64 21q98 0 127 -87q10 -32 10 -129q0 -93 -9 -122q-32 -96 -144 -96zM200 84q36 0 47 33q4 13 4 92q0 77 -4 90 +q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -90q0 -79 4 -92q11 -33 46 -33z" /> + <glyph glyph-name="seven.alt01" +d="M325 295h-62l-83 -285q-3 -10 -13 -10h-83q-10 0 -6 13l83 282h-62q-10 0 -10 10v62q0 10 10 10h87l61 208v2h-194q-10 0 -10 10v73q0 10 10 10h286q10 0 10 -10v-72q0 -6 -2 -12l-60 -209h38q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt01" +d="M198 689q113 0 143 -96q9 -28 9 -122v-319q0 -76 -42 -118.5t-116 -42.5t-123 34q-9 6 -3 14l39 64q5 8 14 3q35 -22 64 -22q65 0 65 69v123h-2q-23 -21 -64 -21q-98 0 -127 87q-10 32 -10 129q0 93 9 122q32 96 144 96zM198 596q-36 0 -47 -33q-4 -13 -4 -92 +q0 -77 4 -90q11 -33 47 -33q35 0 46 33q4 13 4 90q0 79 -4 92q-11 33 -46 33z" /> + <glyph glyph-name="zero.alt02" +d="M199 -9q-54 0 -91 24t-51 69q-11 36 -11 256t11 256q14 45 51 69t91 24q112 0 143 -93q10 -33 10 -256t-10 -256q-31 -93 -143 -93zM148 340v-70l101 229q0 50 -4 66q-10 31 -46 31q-35 0 -45 -31q-6 -19 -6 -225zM199 84q36 0 46 31q5 16 5 225v70l-102 -229 +q1 -53 6 -66q10 -31 45 -31z" /> + <glyph glyph-name="one.alt02" horiz-adv-x="341" +d="M319 0h-268q-10 0 -10 10v73q0 10 10 10h77q6 0 6 6v463h-2l-85 -60q-3 -2 -5.5 -2t-4 2.5t-1.5 6.5v85q0 8 7 14l90 66q8 6 14 6h79q10 0 10 -10v-571q0 -6 6 -6h77q10 0 10 -10v-73q0 -10 -10 -10z" /> + <glyph glyph-name="six.alt02" +d="M201 -9q-113 0 -143 96q-9 28 -9 122v319q0 76 42.5 118.5t115.5 42.5q74 0 123 -34q9 -6 3 -14l-39 -64q-5 -8 -14 -3q-35 22 -64 22q-65 0 -65 -69v-123h2q23 21 64 21q98 0 127 -87q10 -32 10 -129q0 -93 -9 -122q-32 -96 -144 -96zM201 84q36 0 47 33q4 13 4 92 +q0 77 -4 90q-11 33 -47 33q-35 0 -46 -33q-4 -13 -4 -90q0 -79 4 -92q11 -33 46 -33z" /> + <glyph glyph-name="seven.alt02" horiz-adv-x="386" +d="M328 295h-62l-83 -285q-3 -10 -13 -10h-83q-10 0 -6 13l83 282h-62q-10 0 -10 10v62q0 10 10 10h87l61 208v2h-194q-10 0 -10 10v73q0 10 10 10h286q10 0 10 -10v-72q0 -6 -2 -12l-60 -209h38q10 0 10 -10v-62q0 -10 -10 -10z" /> + <glyph glyph-name="nine.alt02" +d="M198 689q113 0 143 -96q9 -28 9 -122v-319q0 -76 -42 -118.5t-116 -42.5t-123 34q-9 6 -3 14l39 64q5 8 14 3q35 -22 64 -22q65 0 65 69v123h-2q-23 -21 -64 -21q-98 0 -127 87q-10 32 -10 129q0 93 9 122q32 96 144 96zM198 596q-36 0 -47 -33q-4 -13 -4 -92 +q0 -77 4 -90q11 -33 47 -33q35 0 46 33q4 13 4 90q0 79 -4 92q-11 33 -46 33z" /> + <glyph glyph-name="zero.nominator" horiz-adv-x="281" +d="M140 266q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 337q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.nominator" horiz-adv-x="281" +d="M191 274h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.nominator" horiz-adv-x="281" +d="M238 274h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.nominator" horiz-adv-x="281" +d="M139 266q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 7 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -19 6 -53t-4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.nominator" horiz-adv-x="281" +d="M224 274h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.nominator" horiz-adv-x="281" +d="M140 266q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 7 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.nominator" horiz-adv-x="281" +d="M140 266q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 64q0 44 4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 337q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17 +t-26 -17q-3 -7 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.nominator" horiz-adv-x="281" +d="M131 274h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.nominator" horiz-adv-x="281" +d="M140 266q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 521q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -8 -3 -31t3 -31q6 -17 26 -17zM140 337q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.nominator" horiz-adv-x="281" +d="M146 274h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 501q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -8 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <glyph glyph-name="zero.denominator" horiz-adv-x="281" +d="M140 -8q-80 0 -102 65q-8 23 -8 146t8 146q22 65 102 65t102 -65q8 -23 8 -146t-8 -146q-22 -65 -102 -65zM140 63q20 0 26 18q4 8 4 122t-4 122q-6 18 -26 18t-26 -18q-3 -9 -3 -122t3 -122q6 -18 26 -18z" /> + <glyph glyph-name="one.denominator" horiz-adv-x="281" +d="M191 0h-61q-10 0 -10 10v307h-1l-57 -32q-12 -7 -12 5v61q0 8 8 13l60 37q8 5 15 5h58q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="two.denominator" horiz-adv-x="281" +d="M238 0h-193q-10 0 -10 10v48q0 8 5 16l111 169q17 24 17 54q0 23 -3 30q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -40q0 -12 -12 -10l-54 6q-10 1 -10 12q0 35 6 53q21 66 101 66q81 0 102 -66q6 -18 6 -50q0 -51 -26 -90l-90 -136v-1h106q10 0 10 -10v-51q0 -10 -10 -10z +" /> + <glyph glyph-name="three.denominator" horiz-adv-x="281" +d="M139 -8q-80 0 -101 65q-6 19 -6 40q0 11 10 12l54 6q12 2 12 -10q0 -19 3 -26q5 -16 26 -16q20 0 27 16q3 8 3 37q0 31 -3 40q-5 17 -27 17h-8q-10 0 -10 10v52q0 10 10 10h7q22 0 29 17q2 6 2 34q0 24 -3 31q-7 16 -27 16q-21 0 -26 -16q-3 -7 -3 -26q0 -12 -12 -10 +l-54 6q-10 1 -10 12q0 21 6 40q21 65 101 65q81 0 102 -65q6 -20 6 -53q0 -34 -4 -46q-9 -27 -36 -38v-1q27 -16 35 -40q5 -14 5 -55q0 -40 -6 -59q-21 -65 -102 -65z" /> + <glyph glyph-name="four.denominator" horiz-adv-x="281" +d="M224 0h-55q-10 0 -10 10v36q0 6 -6 6h-123q-10 0 -10 10v50q0 7 3 16l88 268q3 10 12 10h62q10 0 7 -10l-89 -271v-3h50q6 0 6 6v95q0 10 10 10h55q10 0 10 -10v-95q0 -6 5 -6h15q10 0 10 -10v-50q0 -10 -10 -10h-14q-6 0 -6 -6v-36q0 -10 -10 -10z" /> + <glyph glyph-name="five.denominator" horiz-adv-x="281" +d="M140 -8q-81 0 -102 65q-5 15 -5 31q0 11 10 12l54 6q12 2 12 -10q0 -10 3 -17q5 -16 26 -16q20 0 27 16q3 8 3 51q0 42 -3 50q-8 16 -27 16q-16 0 -25 -14q-7 -10 -16 -10h-51q-10 0 -10 10v214q0 10 10 10h190q10 0 10 -10v-51q0 -10 -10 -10h-120q-6 0 -6 -6v-76h1 +q16 14 46 14q68 0 86 -58q5 -16 5 -79q0 -54 -6 -73q-21 -65 -102 -65z" /> + <glyph glyph-name="six.denominator" horiz-adv-x="281" +d="M140 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 64q0 44 4.5 66t17.5 53l69 155q4 10 14 10h62q11 0 8 -10l-65 -147l1 -1q6 2 17 2q65 0 85 -59q7 -21 7 -69q0 -44 -6 -64q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 63q20 0 26 17q4 7 4 42q0 33 -4 40q-6 17 -26 17t-26 -17 +q-3 -8 -3 -40q0 -34 3 -42q6 -17 26 -17z" /> + <glyph glyph-name="seven.denominator" horiz-adv-x="281" +d="M131 0h-62q-11 0 -8 10l106 322v3h-50q-6 0 -6 -6v-32q0 -10 -10 -10h-57q-10 0 -10 10v99q0 10 10 10h196q10 0 10 -10v-50q0 -9 -3 -18l-103 -318q-3 -10 -13 -10z" /> + <glyph glyph-name="eight.denominator" horiz-adv-x="281" +d="M140 -8q-39 0 -66.5 17.5t-37.5 48.5q-6 19 -6 62q0 32 5 49q8 26 31 43v1q-23 17 -31 43q-5 17 -5 39q0 33 6 53q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -53q0 -22 -5 -39q-8 -27 -30 -43v-1q22 -16 30 -43q5 -17 5 -49q0 -42 -6 -62 +q-10 -31 -37.5 -48.5t-66.5 -17.5zM140 247q20 0 26 17q4 7 4 31t-4 31q-6 17 -26 17t-26 -17q-3 -7 -3 -31q0 -23 3 -31q6 -17 26 -17zM140 63q20 0 26 17q4 7 4 40q0 32 -4 39q-6 17 -26 17t-26 -17q-3 -7 -3 -39t3 -40q6 -17 26 -17z" /> + <glyph glyph-name="nine.denominator" horiz-adv-x="281" +d="M146 0h-63q-11 0 -8 10l66 147l-1 1q-6 -2 -17 -2q-66 0 -86 59q-7 21 -7 69q0 44 6 64q10 31 37.5 48.5t66.5 17.5t66.5 -17.5t37.5 -48.5q6 -19 6 -64q0 -44 -4.5 -66t-17.5 -53l-69 -155q-4 -10 -13 -10zM140 227q20 0 26 17q4 7 4 40q0 35 -4 42q-6 17 -26 17 +t-26 -17q-3 -7 -3 -42q0 -32 3 -40q6 -17 26 -17z" /> + <hkern u1=" " u2="Ỳ" k="18" /> + <hkern u1=" " u2="Ẅ" k="14" /> + <hkern u1=" " u2="Ẃ" k="14" /> + <hkern u1=" " u2="Ẁ" k="14" /> + <hkern u1=" " u2="Ț" k="10" /> + <hkern u1=" " u2="Ÿ" k="18" /> + <hkern u1=" " u2="Ŷ" k="18" /> + <hkern u1=" " u2="Ŵ" k="14" /> + <hkern u1=" " u2="Ŧ" k="10" /> + <hkern u1=" " u2="Ť" k="10" /> + <hkern u1=" " u2="Ţ" k="10" /> + <hkern u1=" " u2="Ý" k="18" /> + <hkern u1=" " u2="Y" k="18" /> + <hkern u1=" " u2="X" k="6" /> + <hkern u1=" " u2="W" k="14" /> + <hkern u1=" " u2="V" k="20" /> + <hkern u1=" " u2="T" k="10" /> + <hkern u1=""" u2="ï" k="-52" /> + <hkern u1=""" u2="y" k="-5" /> + <hkern u1=""" u2="v" k="-5" /> + <hkern u1="'" u2="ï" k="-52" /> + <hkern u1="'" u2="y" k="-5" /> + <hkern u1="'" u2="v" k="-5" /> + <hkern u1="," u2=" " k="16" /> + <hkern u1="-" u2="Ŧ" k="45" /> + <hkern u1="-" u2="y" k="19" /> + <hkern u1="-" u2="x" k="40" /> + <hkern u1="-" u2="v" k="17" /> + <hkern u1="-" u2="X" k="46" /> + <hkern u1="-" u2="V" k="40" /> + <hkern u1="." u2=" " k="16" /> + <hkern u1="A" g2="v.sc" k="14" /> + <hkern u1="A" u2="®" k="44" /> + <hkern u1="A" u2="«" k="15" /> + <hkern u1="A" u2="y" k="36" /> + <hkern u1="A" u2="v" k="38" /> + <hkern u1="A" u2="V" k="36" /> + <hkern u1="A" u2="?" k="40" /> + <hkern u1="B" g2="jcircumflex.sc" k="14" /> + <hkern u1="B" g2="aeacute.sc" k="6" /> + <hkern u1="B" g2="ae.sc" k="6" /> + <hkern u1="B" g2="j.sc" k="14" /> + <hkern u1="B" u2="Ỳ" k="20" /> + <hkern u1="B" u2="Ẅ" k="7" /> + <hkern u1="B" u2="Ẃ" k="7" /> + <hkern u1="B" u2="Ẁ" k="7" /> + <hkern u1="B" u2="Ǽ" k="24" /> + <hkern u1="B" u2="Ǻ" k="6" /> + <hkern u1="B" u2="Ÿ" k="20" /> + <hkern u1="B" u2="Ŷ" k="20" /> + <hkern u1="B" u2="Ŵ" k="7" /> + <hkern u1="B" u2="Ĵ" k="12" /> + <hkern u1="B" u2="Ą" k="6" /> + <hkern u1="B" u2="Ă" k="6" /> + <hkern u1="B" u2="Ā" k="6" /> + <hkern u1="B" u2="Ý" k="20" /> + <hkern u1="B" u2="Æ" k="24" /> + <hkern u1="B" u2="Å" k="6" /> + <hkern u1="B" u2="Ä" k="6" /> + <hkern u1="B" u2="Ã" k="6" /> + <hkern u1="B" u2="Â" k="6" /> + <hkern u1="B" u2="Á" k="6" /> + <hkern u1="B" u2="À" k="6" /> + <hkern u1="B" u2="Y" k="20" /> + <hkern u1="B" u2="X" k="20" /> + <hkern u1="B" u2="W" k="7" /> + <hkern u1="B" u2="V" k="9" /> + <hkern u1="B" u2="J" k="12" /> + <hkern u1="B" u2="A" k="6" /> + <hkern u1="C" u2="y" k="18" /> + <hkern u1="D" u2="X" k="18" /> + <hkern u1="D" u2="V" k="16" /> + <hkern u1="E" g2="v.sc" k="12" /> + <hkern u1="E" u2="y" k="18" /> + <hkern u1="E" u2="v" k="18" /> + <hkern u1="F" g2="aogonek.alt01" k="8" /> + <hkern u1="F" g2="aringacute.alt01" k="8" /> + <hkern u1="F" g2="aring.alt01" k="8" /> + <hkern u1="F" g2="abreve.alt01" k="8" /> + <hkern u1="F" g2="amacron.alt01" k="8" /> + <hkern u1="F" g2="adieresis.alt01" k="8" /> + <hkern u1="F" g2="atilde.alt01" k="8" /> + <hkern u1="F" g2="acircumflex.alt01" k="8" /> + <hkern u1="F" g2="aacute.alt01" k="8" /> + <hkern u1="F" g2="agrave.alt01" k="8" /> + <hkern u1="F" g2="a.alt01" k="8" /> + <hkern u1="F" g2="eng.sc" k="18" /> + <hkern u1="F" g2="ij.sc" k="18" /> + <hkern u1="F" g2="ygrave.sc" k="18" /> + <hkern u1="F" g2="ydieresis.sc" k="18" /> + <hkern u1="F" g2="ycircumflex.sc" k="18" /> + <hkern u1="F" g2="yacute.sc" k="18" /> + <hkern u1="F" g2="uogonek.sc" k="18" /> + <hkern u1="F" g2="uhungarumlaut.sc" k="18" /> + <hkern u1="F" g2="uring.sc" k="18" /> + <hkern u1="F" g2="ubreve.sc" k="18" /> + <hkern u1="F" g2="umacron.sc" k="18" /> + <hkern u1="F" g2="udieresis.sc" k="18" /> + <hkern u1="F" g2="utilde.sc" k="18" /> + <hkern u1="F" g2="ucircumflex.sc" k="18" /> + <hkern u1="F" g2="uacute.sc" k="18" /> + <hkern u1="F" g2="ugrave.sc" k="18" /> + <hkern u1="F" g2="thorn.sc" k="18" /> + <hkern u1="F" g2="rcommaaccent.sc" k="18" /> + <hkern u1="F" g2="rcaron.sc" k="18" /> + <hkern u1="F" g2="racute.sc" k="18" /> + <hkern u1="F" g2="oslash.sc" k="18" /> + <hkern u1="F" g2="ohungarumlaut.sc" k="18" /> + <hkern u1="F" g2="obreve.sc" k="18" /> + <hkern u1="F" g2="omacron.sc" k="18" /> + <hkern u1="F" g2="odieresis.sc" k="18" /> + <hkern u1="F" g2="otilde.sc" k="18" /> + <hkern u1="F" g2="ocircumflex.sc" k="18" /> + <hkern u1="F" g2="oacute.sc" k="18" /> + <hkern u1="F" g2="ograve.sc" k="18" /> + <hkern u1="F" g2="ncommaaccent.sc" k="18" /> + <hkern u1="F" g2="ntilde.sc" k="18" /> + <hkern u1="F" g2="ncaron.sc" k="18" /> + <hkern u1="F" g2="nacute.sc" k="18" /> + <hkern u1="F" g2="ldot.sc" k="18" /> + <hkern u1="F" g2="lslash.sc" k="18" /> + <hkern u1="F" g2="lcommaaccent.sc" k="18" /> + <hkern u1="F" g2="lcaron.sc" k="18" /> + <hkern u1="F" g2="lacute.sc" k="18" /> + <hkern u1="F" g2="kcommaaccent.sc" k="18" /> + <hkern u1="F" g2="jcircumflex.sc" k="52" /> + <hkern u1="F" g2="iogonek.sc" k="18" /> + <hkern u1="F" g2="idotaccent.sc" k="18" /> + <hkern u1="F" g2="imacron.sc" k="18" /> + <hkern u1="F" g2="idieresis.sc" k="18" /> + <hkern u1="F" g2="itilde.sc" k="18" /> + <hkern u1="F" g2="icircumflex.sc" k="18" /> + <hkern u1="F" g2="ibreve.sc" k="18" /> + <hkern u1="F" g2="iacute.sc" k="18" /> + <hkern u1="F" g2="igrave.sc" k="18" /> + <hkern u1="F" g2="hbar.sc" k="18" /> + <hkern u1="F" g2="hcircumflex.sc" k="18" /> + <hkern u1="F" g2="gcommaaccent.sc" k="18" /> + <hkern u1="F" g2="gdotaccent.sc" k="18" /> + <hkern u1="F" g2="gbreve.sc" k="18" /> + <hkern u1="F" g2="gcircumflex.sc" k="18" /> + <hkern u1="F" g2="eogonek.sc" k="18" /> + <hkern u1="F" g2="edotaccent.sc" k="18" /> + <hkern u1="F" g2="ebreve.sc" k="18" /> + <hkern u1="F" g2="emacron.sc" k="18" /> + <hkern u1="F" g2="edieresis.sc" k="18" /> + <hkern u1="F" g2="ecaron.sc" k="18" /> + <hkern u1="F" g2="ecircumflex.sc" k="18" /> + <hkern u1="F" g2="eacute.sc" k="18" /> + <hkern u1="F" g2="egrave.sc" k="18" /> + <hkern u1="F" g2="eth.sc" k="18" /> + <hkern u1="F" g2="dcroat.sc" k="18" /> + <hkern u1="F" g2="dcaron.sc" k="18" /> + <hkern u1="F" g2="ccedilla.sc" k="18" /> + <hkern u1="F" g2="cdotaccent.sc" k="18" /> + <hkern u1="F" g2="ccaron.sc" k="18" /> + <hkern u1="F" g2="ccircumflex.sc" k="18" /> + <hkern u1="F" g2="cacute.sc" k="18" /> + <hkern u1="F" g2="aeacute.sc" k="52" /> + <hkern u1="F" g2="ae.sc" k="52" /> + <hkern u1="F" g2="aogonek.sc" k="36" /> + <hkern u1="F" g2="aringacute.sc" k="36" /> + <hkern u1="F" g2="aring.sc" k="36" /> + <hkern u1="F" g2="abreve.sc" k="36" /> + <hkern u1="F" g2="amacron.sc" k="36" /> + <hkern u1="F" g2="adieresis.sc" k="36" /> + <hkern u1="F" g2="atilde.sc" k="36" /> + <hkern u1="F" g2="acircumflex.sc" k="36" /> + <hkern u1="F" g2="aacute.sc" k="36" /> + <hkern u1="F" g2="agrave.sc" k="36" /> + <hkern u1="F" g2="y.sc" k="18" /> + <hkern u1="F" g2="u.sc" k="18" /> + <hkern u1="F" g2="r.sc" k="18" /> + <hkern u1="F" g2="q.sc" k="18" /> + <hkern u1="F" g2="p.sc" k="18" /> + <hkern u1="F" g2="o.sc" k="18" /> + <hkern u1="F" g2="n.sc" k="18" /> + <hkern u1="F" g2="m.sc" k="18" /> + <hkern u1="F" g2="l.sc" k="18" /> + <hkern u1="F" g2="k.sc" k="18" /> + <hkern u1="F" g2="j.sc" k="52" /> + <hkern u1="F" g2="i.sc" k="18" /> + <hkern u1="F" g2="h.sc" k="18" /> + <hkern u1="F" g2="g.sc" k="18" /> + <hkern u1="F" g2="f.sc" k="18" /> + <hkern u1="F" g2="e.sc" k="18" /> + <hkern u1="F" g2="d.sc" k="18" /> + <hkern u1="F" g2="c.sc" k="18" /> + <hkern u1="F" g2="b.sc" k="18" /> + <hkern u1="F" g2="a.sc" k="36" /> + <hkern u1="F" u2="…" k="70" /> + <hkern u1="F" u2="ș" k="11" /> + <hkern u1="F" u2="ǿ" k="8" /> + <hkern u1="F" u2="ǽ" k="30" /> + <hkern u1="F" u2="Ǽ" k="55" /> + <hkern u1="F" u2="ǻ" k="30" /> + <hkern u1="F" u2="Ǻ" k="29" /> + <hkern u1="F" u2="ų" k="18" /> + <hkern u1="F" u2="ű" k="18" /> + <hkern u1="F" u2="ů" k="18" /> + <hkern u1="F" u2="ŭ" k="18" /> + <hkern u1="F" u2="ū" k="18" /> + <hkern u1="F" u2="ũ" k="18" /> + <hkern u1="F" u2="š" k="11" /> + <hkern u1="F" u2="ş" k="11" /> + <hkern u1="F" u2="ŝ" k="11" /> + <hkern u1="F" u2="ś" k="11" /> + <hkern u1="F" u2="ř" k="18" /> + <hkern u1="F" u2="ŗ" k="18" /> + <hkern u1="F" u2="ŕ" k="18" /> + <hkern u1="F" u2="œ" k="24" /> + <hkern u1="F" u2="ő" k="24" /> + <hkern u1="F" u2="ŏ" k="24" /> + <hkern u1="F" u2="ō" k="24" /> + <hkern u1="F" u2="ŋ" k="18" /> + <hkern u1="F" u2="ň" k="18" /> + <hkern u1="F" u2="ņ" k="18" /> + <hkern u1="F" u2="ń" k="18" /> + <hkern u1="F" u2="Ĵ" k="62" /> + <hkern u1="F" u2="ı" k="18" /> + <hkern u1="F" u2="ģ" k="8" /> + <hkern u1="F" u2="ġ" k="8" /> + <hkern u1="F" u2="ğ" k="8" /> + <hkern u1="F" u2="ĝ" k="8" /> + <hkern u1="F" u2="ě" k="24" /> + <hkern u1="F" u2="ę" k="24" /> + <hkern u1="F" u2="ė" k="24" /> + <hkern u1="F" u2="ĕ" k="24" /> + <hkern u1="F" u2="ē" k="24" /> + <hkern u1="F" u2="đ" k="8" /> + <hkern u1="F" u2="ď" k="8" /> + <hkern u1="F" u2="č" k="24" /> + <hkern u1="F" u2="ċ" k="24" /> + <hkern u1="F" u2="ĉ" k="24" /> + <hkern u1="F" u2="ć" k="24" /> + <hkern u1="F" u2="ą" k="30" /> + <hkern u1="F" u2="Ą" k="29" /> + <hkern u1="F" u2="ă" k="30" /> + <hkern u1="F" u2="Ă" k="29" /> + <hkern u1="F" u2="ā" k="30" /> + <hkern u1="F" u2="Ā" k="29" /> + <hkern u1="F" u2="ü" k="18" /> + <hkern u1="F" u2="û" k="18" /> + <hkern u1="F" u2="ú" k="18" /> + <hkern u1="F" u2="ù" k="18" /> + <hkern u1="F" u2="ø" k="8" /> + <hkern u1="F" u2="ö" k="24" /> + <hkern u1="F" u2="õ" k="24" /> + <hkern u1="F" u2="ô" k="24" /> + <hkern u1="F" u2="ó" k="24" /> + <hkern u1="F" u2="ò" k="24" /> + <hkern u1="F" u2="ñ" k="18" /> + <hkern u1="F" u2="ð" k="8" /> + <hkern u1="F" u2="ë" k="24" /> + <hkern u1="F" u2="ê" k="24" /> + <hkern u1="F" u2="é" k="24" /> + <hkern u1="F" u2="è" k="24" /> + <hkern u1="F" u2="ç" k="24" /> + <hkern u1="F" u2="æ" k="30" /> + <hkern u1="F" u2="å" k="30" /> + <hkern u1="F" u2="ä" k="30" /> + <hkern u1="F" u2="ã" k="30" /> + <hkern u1="F" u2="â" k="30" /> + <hkern u1="F" u2="á" k="30" /> + <hkern u1="F" u2="à" k="30" /> + <hkern u1="F" u2="Æ" k="55" /> + <hkern u1="F" u2="Å" k="29" /> + <hkern u1="F" u2="Ä" k="29" /> + <hkern u1="F" u2="Ã" k="29" /> + <hkern u1="F" u2="Â" k="29" /> + <hkern u1="F" u2="Á" k="29" /> + <hkern u1="F" u2="À" k="29" /> + <hkern u1="F" u2="y" k="18" /> + <hkern u1="F" u2="u" k="18" /> + <hkern u1="F" u2="s" k="11" /> + <hkern u1="F" u2="r" k="18" /> + <hkern u1="F" u2="q" k="8" /> + <hkern u1="F" u2="p" k="18" /> + <hkern u1="F" u2="o" k="24" /> + <hkern u1="F" u2="n" k="18" /> + <hkern u1="F" u2="m" k="18" /> + <hkern u1="F" u2="g" k="8" /> + <hkern u1="F" u2="e" k="24" /> + <hkern u1="F" u2="d" k="8" /> + <hkern u1="F" u2="c" k="24" /> + <hkern u1="F" u2="a" k="30" /> + <hkern u1="F" u2="J" k="62" /> + <hkern u1="F" u2="A" k="29" /> + <hkern u1="F" u2="." k="70" /> + <hkern u1="F" u2="," k="70" /> + <hkern u1="G" u2="X" k="19" /> + <hkern u1="G" u2="V" k="14" /> + <hkern u1="H" u2="ï" k="-19" /> + <hkern u1="I" u2="ï" k="-19" /> + <hkern u1="K" g2="v.sc" k="35" /> + <hkern u1="K" u2="®" k="51" /> + <hkern u1="K" u2="«" k="50" /> + <hkern u1="K" u2="y" k="22" /> + <hkern u1="K" u2="v" k="34" /> + <hkern u1="L" g2="v.sc" k="28" /> + <hkern u1="L" u2="®" k="36" /> + <hkern u1="L" u2="«" k="16" /> + <hkern u1="L" u2="y" k="20" /> + <hkern u1="L" u2="v" k="40" /> + <hkern u1="L" u2="V" k="66" /> + <hkern u1="L" u2="?" k="15" /> + <hkern u1="M" u2="ï" k="-19" /> + <hkern u1="N" u2="ï" k="-19" /> + <hkern u1="O" u2="X" k="19" /> + <hkern u1="O" u2="V" k="14" /> + <hkern u1="P" g2="jcircumflex.sc" k="69" /> + <hkern u1="P" g2="aeacute.sc" k="80" /> + <hkern u1="P" g2="ae.sc" k="80" /> + <hkern u1="P" g2="aogonek.sc" k="51" /> + <hkern u1="P" g2="aringacute.sc" k="51" /> + <hkern u1="P" g2="aring.sc" k="51" /> + <hkern u1="P" g2="abreve.sc" k="51" /> + <hkern u1="P" g2="amacron.sc" k="51" /> + <hkern u1="P" g2="adieresis.sc" k="51" /> + <hkern u1="P" g2="atilde.sc" k="51" /> + <hkern u1="P" g2="acircumflex.sc" k="51" /> + <hkern u1="P" g2="aacute.sc" k="51" /> + <hkern u1="P" g2="agrave.sc" k="51" /> + <hkern u1="P" g2="j.sc" k="69" /> + <hkern u1="P" g2="a.sc" k="51" /> + <hkern u1="P" u2="…" k="110" /> + <hkern u1="P" u2="”" k="-20" /> + <hkern u1="P" u2="“" k="-20" /> + <hkern u1="P" u2="’" k="-20" /> + <hkern u1="P" u2="‘" k="-20" /> + <hkern u1="P" u2="Ỳ" k="12" /> + <hkern u1="P" u2="ǽ" k="18" /> + <hkern u1="P" u2="Ǽ" k="94" /> + <hkern u1="P" u2="ǻ" k="18" /> + <hkern u1="P" u2="Ǻ" k="50" /> + <hkern u1="P" u2="Ÿ" k="12" /> + <hkern u1="P" u2="Ŷ" k="12" /> + <hkern u1="P" u2="œ" k="6" /> + <hkern u1="P" u2="ő" k="6" /> + <hkern u1="P" u2="ŏ" k="6" /> + <hkern u1="P" u2="ō" k="6" /> + <hkern u1="P" u2="Ĵ" k="84" /> + <hkern u1="P" u2="ě" k="6" /> + <hkern u1="P" u2="ę" k="6" /> + <hkern u1="P" u2="ė" k="6" /> + <hkern u1="P" u2="ĕ" k="6" /> + <hkern u1="P" u2="ē" k="6" /> + <hkern u1="P" u2="č" k="6" /> + <hkern u1="P" u2="ċ" k="6" /> + <hkern u1="P" u2="ĉ" k="6" /> + <hkern u1="P" u2="ć" k="6" /> + <hkern u1="P" u2="ą" k="18" /> + <hkern u1="P" u2="Ą" k="50" /> + <hkern u1="P" u2="ă" k="18" /> + <hkern u1="P" u2="Ă" k="50" /> + <hkern u1="P" u2="ā" k="18" /> + <hkern u1="P" u2="Ā" k="50" /> + <hkern u1="P" u2="ö" k="6" /> + <hkern u1="P" u2="õ" k="6" /> + <hkern u1="P" u2="ô" k="6" /> + <hkern u1="P" u2="ó" k="6" /> + <hkern u1="P" u2="ò" k="6" /> + <hkern u1="P" u2="ë" k="6" /> + <hkern u1="P" u2="ê" k="6" /> + <hkern u1="P" u2="é" k="6" /> + <hkern u1="P" u2="è" k="6" /> + <hkern u1="P" u2="ç" k="6" /> + <hkern u1="P" u2="æ" k="18" /> + <hkern u1="P" u2="å" k="18" /> + <hkern u1="P" u2="ä" k="18" /> + <hkern u1="P" u2="ã" k="18" /> + <hkern u1="P" u2="â" k="18" /> + <hkern u1="P" u2="á" k="18" /> + <hkern u1="P" u2="à" k="18" /> + <hkern u1="P" u2="Ý" k="12" /> + <hkern u1="P" u2="Æ" k="94" /> + <hkern u1="P" u2="Å" k="50" /> + <hkern u1="P" u2="Ä" k="50" /> + <hkern u1="P" u2="Ã" k="50" /> + <hkern u1="P" u2="Â" k="50" /> + <hkern u1="P" u2="Á" k="50" /> + <hkern u1="P" u2="À" k="50" /> + <hkern u1="P" u2="o" k="6" /> + <hkern u1="P" u2="e" k="6" /> + <hkern u1="P" u2="c" k="6" /> + <hkern u1="P" u2="a" k="18" /> + <hkern u1="P" u2="Y" k="12" /> + <hkern u1="P" u2="X" k="24" /> + <hkern u1="P" u2="J" k="84" /> + <hkern u1="P" u2="A" k="50" /> + <hkern u1="P" u2="." k="110" /> + <hkern u1="P" u2="," k="110" /> + <hkern u1="P" u2="'" k="-20" /> + <hkern u1="P" u2=""" k="-20" /> + <hkern u1="Q" u2="…" k="-25" /> + <hkern u1="Q" u2="Ỳ" k="26" /> + <hkern u1="Q" u2="Ẅ" k="13" /> + <hkern u1="Q" u2="Ẃ" k="13" /> + <hkern u1="Q" u2="Ẁ" k="13" /> + <hkern u1="Q" u2="Ÿ" k="26" /> + <hkern u1="Q" u2="Ŷ" k="26" /> + <hkern u1="Q" u2="Ŵ" k="13" /> + <hkern u1="Q" u2="Ý" k="26" /> + <hkern u1="Q" u2="Y" k="26" /> + <hkern u1="Q" u2="W" k="13" /> + <hkern u1="Q" u2="V" k="16" /> + <hkern u1="Q" u2=";" k="-25" /> + <hkern u1="Q" u2=":" k="-25" /> + <hkern u1="Q" u2="." k="-25" /> + <hkern u1="Q" u2="," k="-25" /> + <hkern u1="Q" u2="!" k="-17" /> + <hkern u1="R" u2="«" k="16" /> + <hkern u1="R" u2="V" k="14" /> + <hkern u1="S" u2="y" k="5" /> + <hkern u1="S" u2="x" k="10" /> + <hkern u1="S" u2="v" k="8" /> + <hkern u1="T" g2="z.sc" k="24" /> + <hkern u1="T" g2="x.sc" k="37" /> + <hkern u1="T" g2="v.sc" k="48" /> + <hkern u1="T" u2="ï" k="-29" /> + <hkern u1="T" u2="«" k="45" /> + <hkern u1="T" u2="y" k="66" /> + <hkern u1="T" u2="x" k="24" /> + <hkern u1="T" u2="v" k="66" /> + <hkern u1="T" u2="?" k="-20" /> + <hkern u1="T" u2=" " k="10" /> + <hkern u1="V" g2="Gcommaaccent.alt01" k="14" /> + <hkern u1="V" g2="Gdotaccent.alt01" k="14" /> + <hkern u1="V" g2="Gbreve.alt01" k="14" /> + <hkern u1="V" g2="Gcircumflex.alt01" k="14" /> + <hkern u1="V" g2="G.alt01" k="14" /> + <hkern u1="V" g2="Ccedilla.alt01" k="14" /> + <hkern u1="V" g2="Cdotaccent.alt01" k="14" /> + <hkern u1="V" g2="Ccaron.alt01" k="14" /> + <hkern u1="V" g2="Ccircumflex.alt01" k="14" /> + <hkern u1="V" g2="Cacute.alt01" k="14" /> + <hkern u1="V" g2="C.alt01" k="14" /> + <hkern u1="V" g2="aogonek.alt01" k="40" /> + <hkern u1="V" g2="aringacute.alt01" k="40" /> + <hkern u1="V" g2="aring.alt01" k="40" /> + <hkern u1="V" g2="abreve.alt01" k="40" /> + <hkern u1="V" g2="amacron.alt01" k="40" /> + <hkern u1="V" g2="adieresis.alt01" k="40" /> + <hkern u1="V" g2="atilde.alt01" k="40" /> + <hkern u1="V" g2="acircumflex.alt01" k="40" /> + <hkern u1="V" g2="aacute.alt01" k="40" /> + <hkern u1="V" g2="agrave.alt01" k="40" /> + <hkern u1="V" g2="a.alt01" k="40" /> + <hkern u1="V" g2="eng.sc" k="10" /> + <hkern u1="V" g2="germandbls.sc" k="10" /> + <hkern u1="V" g2="ij.sc" k="10" /> + <hkern u1="V" g2="uogonek.sc" k="12" /> + <hkern u1="V" g2="uhungarumlaut.sc" k="12" /> + <hkern u1="V" g2="uring.sc" k="12" /> + <hkern u1="V" g2="ubreve.sc" k="12" /> + <hkern u1="V" g2="umacron.sc" k="12" /> + <hkern u1="V" g2="udieresis.sc" k="12" /> + <hkern u1="V" g2="utilde.sc" k="12" /> + <hkern u1="V" g2="ucircumflex.sc" k="12" /> + <hkern u1="V" g2="uacute.sc" k="12" /> + <hkern u1="V" g2="ugrave.sc" k="12" /> + <hkern u1="V" g2="thorn.sc" k="10" /> + <hkern u1="V" g2="scommaaccent.sc" k="10" /> + <hkern u1="V" g2="scedilla.sc" k="10" /> + <hkern u1="V" g2="scaron.sc" k="10" /> + <hkern u1="V" g2="scircumflex.sc" k="10" /> + <hkern u1="V" g2="sacute.sc" k="10" /> + <hkern u1="V" g2="rcommaaccent.sc" k="10" /> + <hkern u1="V" g2="rcaron.sc" k="10" /> + <hkern u1="V" g2="racute.sc" k="10" /> + <hkern u1="V" g2="oslash.sc" k="16" /> + <hkern u1="V" g2="ohungarumlaut.sc" k="16" /> + <hkern u1="V" g2="obreve.sc" k="16" /> + <hkern u1="V" g2="omacron.sc" k="16" /> + <hkern u1="V" g2="odieresis.sc" k="16" /> + <hkern u1="V" g2="otilde.sc" k="16" /> + <hkern u1="V" g2="ocircumflex.sc" k="16" /> + <hkern u1="V" g2="oacute.sc" k="16" /> + <hkern u1="V" g2="ograve.sc" k="16" /> + <hkern u1="V" g2="ncommaaccent.sc" k="10" /> + <hkern u1="V" g2="ntilde.sc" k="10" /> + <hkern u1="V" g2="ncaron.sc" k="10" /> + <hkern u1="V" g2="nacute.sc" k="10" /> + <hkern u1="V" g2="ldot.sc" k="10" /> + <hkern u1="V" g2="lslash.sc" k="10" /> + <hkern u1="V" g2="lcommaaccent.sc" k="10" /> + <hkern u1="V" g2="lcaron.sc" k="10" /> + <hkern u1="V" g2="lacute.sc" k="10" /> + <hkern u1="V" g2="kcommaaccent.sc" k="10" /> + <hkern u1="V" g2="jcircumflex.sc" k="50" /> + <hkern u1="V" g2="iogonek.sc" k="10" /> + <hkern u1="V" g2="idotaccent.sc" k="10" /> + <hkern u1="V" g2="imacron.sc" k="10" /> + <hkern u1="V" g2="idieresis.sc" k="10" /> + <hkern u1="V" g2="itilde.sc" k="10" /> + <hkern u1="V" g2="icircumflex.sc" k="10" /> + <hkern u1="V" g2="ibreve.sc" k="10" /> + <hkern u1="V" g2="iacute.sc" k="10" /> + <hkern u1="V" g2="igrave.sc" k="10" /> + <hkern u1="V" g2="hbar.sc" k="10" /> + <hkern u1="V" g2="hcircumflex.sc" k="10" /> + <hkern u1="V" g2="gcommaaccent.sc" k="16" /> + <hkern u1="V" g2="gdotaccent.sc" k="16" /> + <hkern u1="V" g2="gbreve.sc" k="16" /> + <hkern u1="V" g2="gcircumflex.sc" k="16" /> + <hkern u1="V" g2="eogonek.sc" k="10" /> + <hkern u1="V" g2="edotaccent.sc" k="10" /> + <hkern u1="V" g2="ebreve.sc" k="10" /> + <hkern u1="V" g2="emacron.sc" k="10" /> + <hkern u1="V" g2="edieresis.sc" k="10" /> + <hkern u1="V" g2="ecaron.sc" k="10" /> + <hkern u1="V" g2="ecircumflex.sc" k="10" /> + <hkern u1="V" g2="eacute.sc" k="10" /> + <hkern u1="V" g2="egrave.sc" k="10" /> + <hkern u1="V" g2="eth.sc" k="10" /> + <hkern u1="V" g2="dcroat.sc" k="10" /> + <hkern u1="V" g2="dcaron.sc" k="10" /> + <hkern u1="V" g2="ccedilla.sc" k="16" /> + <hkern u1="V" g2="cdotaccent.sc" k="16" /> + <hkern u1="V" g2="ccaron.sc" k="16" /> + <hkern u1="V" g2="ccircumflex.sc" k="16" /> + <hkern u1="V" g2="cacute.sc" k="16" /> + <hkern u1="V" g2="aeacute.sc" k="62" /> + <hkern u1="V" g2="ae.sc" k="62" /> + <hkern u1="V" g2="aogonek.sc" k="40" /> + <hkern u1="V" g2="aringacute.sc" k="40" /> + <hkern u1="V" g2="aring.sc" k="40" /> + <hkern u1="V" g2="abreve.sc" k="40" /> + <hkern u1="V" g2="amacron.sc" k="40" /> + <hkern u1="V" g2="adieresis.sc" k="40" /> + <hkern u1="V" g2="atilde.sc" k="40" /> + <hkern u1="V" g2="acircumflex.sc" k="40" /> + <hkern u1="V" g2="aacute.sc" k="40" /> + <hkern u1="V" g2="agrave.sc" k="40" /> + <hkern u1="V" g2="z.sc" k="6" /> + <hkern u1="V" g2="x.sc" k="10" /> + <hkern u1="V" g2="u.sc" k="12" /> + <hkern u1="V" g2="s.sc" k="10" /> + <hkern u1="V" g2="r.sc" k="10" /> + <hkern u1="V" g2="q.sc" k="16" /> + <hkern u1="V" g2="p.sc" k="10" /> + <hkern u1="V" g2="o.sc" k="16" /> + <hkern u1="V" g2="n.sc" k="10" /> + <hkern u1="V" g2="m.sc" k="10" /> + <hkern u1="V" g2="l.sc" k="10" /> + <hkern u1="V" g2="k.sc" k="10" /> + <hkern u1="V" g2="j.sc" k="50" /> + <hkern u1="V" g2="i.sc" k="10" /> + <hkern u1="V" g2="h.sc" k="10" /> + <hkern u1="V" g2="g.sc" k="16" /> + <hkern u1="V" g2="f.sc" k="10" /> + <hkern u1="V" g2="e.sc" k="10" /> + <hkern u1="V" g2="d.sc" k="10" /> + <hkern u1="V" g2="c.sc" k="16" /> + <hkern u1="V" g2="b.sc" k="10" /> + <hkern u1="V" g2="a.sc" k="40" /> + <hkern u1="V" g2="f_f_l" k="6" /> + <hkern u1="V" g2="f_f_i" k="6" /> + <hkern u1="V" g2="fl" k="6" /> + <hkern u1="V" g2="fi" k="6" /> + <hkern u1="V" g2="f_f" k="6" /> + <hkern u1="V" u2="∙" k="31" /> + <hkern u1="V" u2="›" k="22" /> + <hkern u1="V" u2="…" k="85" /> + <hkern u1="V" u2="•" k="31" /> + <hkern u1="V" u2="—" k="40" /> + <hkern u1="V" u2="–" k="40" /> + <hkern u1="V" u2="ẅ" k="9" /> + <hkern u1="V" u2="ẃ" k="9" /> + <hkern u1="V" u2="ẁ" k="9" /> + <hkern u1="V" u2="ț" k="6" /> + <hkern u1="V" u2="ș" k="38" /> + <hkern u1="V" u2="Ș" k="11" /> + <hkern u1="V" u2="ǿ" k="41" /> + <hkern u1="V" u2="Ǿ" k="14" /> + <hkern u1="V" u2="ǽ" k="28" /> + <hkern u1="V" u2="Ǽ" k="84" /> + <hkern u1="V" u2="ǻ" k="28" /> + <hkern u1="V" u2="Ǻ" k="36" /> + <hkern u1="V" u2="ž" k="22" /> + <hkern u1="V" u2="ż" k="22" /> + <hkern u1="V" u2="ź" k="22" /> + <hkern u1="V" u2="ŵ" k="9" /> + <hkern u1="V" u2="ų" k="22" /> + <hkern u1="V" u2="ű" k="22" /> + <hkern u1="V" u2="ů" k="22" /> + <hkern u1="V" u2="ŭ" k="22" /> + <hkern u1="V" u2="ū" k="22" /> + <hkern u1="V" u2="ũ" k="22" /> + <hkern u1="V" u2="ŧ" k="6" /> + <hkern u1="V" u2="ť" k="6" /> + <hkern u1="V" u2="ţ" k="6" /> + <hkern u1="V" u2="š" k="38" /> + <hkern u1="V" u2="Š" k="11" /> + <hkern u1="V" u2="ş" k="38" /> + <hkern u1="V" u2="Ş" k="11" /> + <hkern u1="V" u2="ŝ" k="38" /> + <hkern u1="V" u2="Ŝ" k="11" /> + <hkern u1="V" u2="ś" k="38" /> + <hkern u1="V" u2="Ś" k="11" /> + <hkern u1="V" u2="ř" k="24" /> + <hkern u1="V" u2="ŗ" k="24" /> + <hkern u1="V" u2="ŕ" k="24" /> + <hkern u1="V" u2="œ" k="41" /> + <hkern u1="V" u2="Œ" k="14" /> + <hkern u1="V" u2="ő" k="41" /> + <hkern u1="V" u2="Ő" k="14" /> + <hkern u1="V" u2="ŏ" k="41" /> + <hkern u1="V" u2="Ŏ" k="14" /> + <hkern u1="V" u2="ō" k="41" /> + <hkern u1="V" u2="Ō" k="14" /> + <hkern u1="V" u2="ŋ" k="24" /> + <hkern u1="V" u2="ň" k="24" /> + <hkern u1="V" u2="ņ" k="24" /> + <hkern u1="V" u2="ń" k="24" /> + <hkern u1="V" u2="Ĵ" k="64" /> + <hkern u1="V" u2="ı" k="24" /> + <hkern u1="V" u2="ģ" k="40" /> + <hkern u1="V" u2="Ģ" k="14" /> + <hkern u1="V" u2="ġ" k="40" /> + <hkern u1="V" u2="Ġ" k="14" /> + <hkern u1="V" u2="ğ" k="40" /> + <hkern u1="V" u2="Ğ" k="14" /> + <hkern u1="V" u2="ĝ" k="40" /> + <hkern u1="V" u2="Ĝ" k="14" /> + <hkern u1="V" u2="ě" k="41" /> + <hkern u1="V" u2="ę" k="41" /> + <hkern u1="V" u2="ė" k="41" /> + <hkern u1="V" u2="ĕ" k="41" /> + <hkern u1="V" u2="ē" k="41" /> + <hkern u1="V" u2="đ" k="40" /> + <hkern u1="V" u2="ď" k="40" /> + <hkern u1="V" u2="č" k="41" /> + <hkern u1="V" u2="Č" k="14" /> + <hkern u1="V" u2="ċ" k="41" /> + <hkern u1="V" u2="Ċ" k="14" /> + <hkern u1="V" u2="ĉ" k="41" /> + <hkern u1="V" u2="Ĉ" k="14" /> + <hkern u1="V" u2="ć" k="41" /> + <hkern u1="V" u2="Ć" k="14" /> + <hkern u1="V" u2="ą" k="28" /> + <hkern u1="V" u2="Ą" k="36" /> + <hkern u1="V" u2="ă" k="28" /> + <hkern u1="V" u2="Ă" k="36" /> + <hkern u1="V" u2="ā" k="28" /> + <hkern u1="V" u2="Ā" k="36" /> + <hkern u1="V" u2="ü" k="22" /> + <hkern u1="V" u2="û" k="22" /> + <hkern u1="V" u2="ú" k="22" /> + <hkern u1="V" u2="ù" k="22" /> + <hkern u1="V" u2="ø" k="41" /> + <hkern u1="V" u2="ö" k="41" /> + <hkern u1="V" u2="õ" k="41" /> + <hkern u1="V" u2="ô" k="41" /> + <hkern u1="V" u2="ó" k="41" /> + <hkern u1="V" u2="ò" k="41" /> + <hkern u1="V" u2="ñ" k="24" /> + <hkern u1="V" u2="ð" k="40" /> + <hkern u1="V" u2="ì" k="-14" /> + <hkern u1="V" u2="ë" k="41" /> + <hkern u1="V" u2="ê" k="41" /> + <hkern u1="V" u2="é" k="41" /> + <hkern u1="V" u2="è" k="41" /> + <hkern u1="V" u2="ç" k="41" /> + <hkern u1="V" u2="æ" k="28" /> + <hkern u1="V" u2="å" k="28" /> + <hkern u1="V" u2="ä" k="28" /> + <hkern u1="V" u2="ã" k="28" /> + <hkern u1="V" u2="â" k="28" /> + <hkern u1="V" u2="á" k="28" /> + <hkern u1="V" u2="à" k="28" /> + <hkern u1="V" u2="Ø" k="14" /> + <hkern u1="V" u2="Ö" k="14" /> + <hkern u1="V" u2="Õ" k="14" /> + <hkern u1="V" u2="Ô" k="14" /> + <hkern u1="V" u2="Ó" k="14" /> + <hkern u1="V" u2="Ò" k="14" /> + <hkern u1="V" u2="Ç" k="14" /> + <hkern u1="V" u2="Æ" k="84" /> + <hkern u1="V" u2="Å" k="36" /> + <hkern u1="V" u2="Ä" k="36" /> + <hkern u1="V" u2="Ã" k="36" /> + <hkern u1="V" u2="Â" k="36" /> + <hkern u1="V" u2="Á" k="36" /> + <hkern u1="V" u2="À" k="36" /> + <hkern u1="V" u2="»" k="22" /> + <hkern u1="V" u2="·" k="31" /> + <hkern u1="V" u2="®" k="11" /> + <hkern u1="V" u2="­" k="40" /> + <hkern u1="V" u2="«" k="45" /> + <hkern u1="V" u2="z" k="22" /> + <hkern u1="V" u2="y" k="9" /> + <hkern u1="V" u2="x" k="17" /> + <hkern u1="V" u2="w" k="9" /> + <hkern u1="V" u2="v" k="9" /> + <hkern u1="V" u2="u" k="22" /> + <hkern u1="V" u2="t" k="6" /> + <hkern u1="V" u2="s" k="38" /> + <hkern u1="V" u2="r" k="24" /> + <hkern u1="V" u2="q" k="40" /> + <hkern u1="V" u2="p" k="24" /> + <hkern u1="V" u2="o" k="41" /> + <hkern u1="V" u2="n" k="24" /> + <hkern u1="V" u2="m" k="24" /> + <hkern u1="V" u2="g" k="40" /> + <hkern u1="V" u2="f" k="6" /> + <hkern u1="V" u2="e" k="41" /> + <hkern u1="V" u2="d" k="40" /> + <hkern u1="V" u2="c" k="41" /> + <hkern u1="V" u2="a" k="28" /> + <hkern u1="V" u2="S" k="11" /> + <hkern u1="V" u2="Q" k="14" /> + <hkern u1="V" u2="O" k="14" /> + <hkern u1="V" u2="J" k="64" /> + <hkern u1="V" u2="G" k="14" /> + <hkern u1="V" u2="C" k="14" /> + <hkern u1="V" u2="A" k="36" /> + <hkern u1="V" u2=";" k="22" /> + <hkern u1="V" u2=":" k="22" /> + <hkern u1="V" u2="." k="85" /> + <hkern u1="V" u2="-" k="40" /> + <hkern u1="V" u2="," k="85" /> + <hkern u1="V" u2=" " k="25" /> + <hkern u1="W" g2="z.sc" k="6" /> + <hkern u1="W" g2="x.sc" k="6" /> + <hkern u1="W" u2="®" k="3" /> + <hkern u1="W" u2="«" k="40" /> + <hkern u1="W" u2="y" k="3" /> + <hkern u1="W" u2="x" k="16" /> + <hkern u1="W" u2="v" k="5" /> + <hkern u1="W" u2=" " k="19" /> + <hkern u1="X" g2="Gcommaaccent.alt01" k="18" /> + <hkern u1="X" g2="Gdotaccent.alt01" k="18" /> + <hkern u1="X" g2="Gbreve.alt01" k="18" /> + <hkern u1="X" g2="Gcircumflex.alt01" k="18" /> + <hkern u1="X" g2="G.alt01" k="18" /> + <hkern u1="X" g2="Ccedilla.alt01" k="18" /> + <hkern u1="X" g2="Cdotaccent.alt01" k="18" /> + <hkern u1="X" g2="Ccaron.alt01" k="18" /> + <hkern u1="X" g2="Ccircumflex.alt01" k="18" /> + <hkern u1="X" g2="Cacute.alt01" k="18" /> + <hkern u1="X" g2="C.alt01" k="18" /> + <hkern u1="X" g2="aogonek.alt01" k="13" /> + <hkern u1="X" g2="aringacute.alt01" k="13" /> + <hkern u1="X" g2="aring.alt01" k="13" /> + <hkern u1="X" g2="abreve.alt01" k="13" /> + <hkern u1="X" g2="amacron.alt01" k="13" /> + <hkern u1="X" g2="adieresis.alt01" k="13" /> + <hkern u1="X" g2="atilde.alt01" k="13" /> + <hkern u1="X" g2="acircumflex.alt01" k="13" /> + <hkern u1="X" g2="aacute.alt01" k="13" /> + <hkern u1="X" g2="agrave.alt01" k="13" /> + <hkern u1="X" g2="a.alt01" k="13" /> + <hkern u1="X" g2="ygrave.sc" k="10" /> + <hkern u1="X" g2="ydieresis.sc" k="10" /> + <hkern u1="X" g2="ycircumflex.sc" k="10" /> + <hkern u1="X" g2="yacute.sc" k="10" /> + <hkern u1="X" g2="wgrave.sc" k="9" /> + <hkern u1="X" g2="wdieresis.sc" k="9" /> + <hkern u1="X" g2="wcircumflex.sc" k="9" /> + <hkern u1="X" g2="wacute.sc" k="9" /> + <hkern u1="X" g2="tbar.sc" k="5" /> + <hkern u1="X" g2="tcommaaccent.sc" k="5" /> + <hkern u1="X" g2="tcaron.sc" k="5" /> + <hkern u1="X" g2="oslash.sc" k="6" /> + <hkern u1="X" g2="ohungarumlaut.sc" k="6" /> + <hkern u1="X" g2="obreve.sc" k="6" /> + <hkern u1="X" g2="omacron.sc" k="6" /> + <hkern u1="X" g2="odieresis.sc" k="6" /> + <hkern u1="X" g2="otilde.sc" k="6" /> + <hkern u1="X" g2="ocircumflex.sc" k="6" /> + <hkern u1="X" g2="oacute.sc" k="6" /> + <hkern u1="X" g2="ograve.sc" k="6" /> + <hkern u1="X" g2="gcommaaccent.sc" k="6" /> + <hkern u1="X" g2="gdotaccent.sc" k="6" /> + <hkern u1="X" g2="gbreve.sc" k="6" /> + <hkern u1="X" g2="gcircumflex.sc" k="6" /> + <hkern u1="X" g2="ccedilla.sc" k="6" /> + <hkern u1="X" g2="cdotaccent.sc" k="6" /> + <hkern u1="X" g2="ccaron.sc" k="6" /> + <hkern u1="X" g2="ccircumflex.sc" k="6" /> + <hkern u1="X" g2="cacute.sc" k="6" /> + <hkern u1="X" g2="y.sc" k="10" /> + <hkern u1="X" g2="w.sc" k="9" /> + <hkern u1="X" g2="v.sc" k="12" /> + <hkern u1="X" g2="t.sc" k="5" /> + <hkern u1="X" g2="q.sc" k="6" /> + <hkern u1="X" g2="o.sc" k="6" /> + <hkern u1="X" g2="g.sc" k="6" /> + <hkern u1="X" g2="c.sc" k="6" /> + <hkern u1="X" u2="∙" k="38" /> + <hkern u1="X" u2="›" k="7" /> + <hkern u1="X" u2="•" k="38" /> + <hkern u1="X" u2="—" k="46" /> + <hkern u1="X" u2="–" k="46" /> + <hkern u1="X" u2="ẅ" k="33" /> + <hkern u1="X" u2="ẃ" k="33" /> + <hkern u1="X" u2="ẁ" k="33" /> + <hkern u1="X" u2="ŵ" k="33" /> + <hkern u1="X" u2="œ" k="18" /> + <hkern u1="X" u2="Œ" k="18" /> + <hkern u1="X" u2="ő" k="18" /> + <hkern u1="X" u2="Ő" k="18" /> + <hkern u1="X" u2="ŏ" k="18" /> + <hkern u1="X" u2="Ŏ" k="18" /> + <hkern u1="X" u2="ō" k="18" /> + <hkern u1="X" u2="Ō" k="18" /> + <hkern u1="X" u2="Ģ" k="18" /> + <hkern u1="X" u2="Ġ" k="18" /> + <hkern u1="X" u2="Ğ" k="18" /> + <hkern u1="X" u2="Ĝ" k="18" /> + <hkern u1="X" u2="ě" k="18" /> + <hkern u1="X" u2="ę" k="18" /> + <hkern u1="X" u2="ė" k="18" /> + <hkern u1="X" u2="ĕ" k="18" /> + <hkern u1="X" u2="ē" k="18" /> + <hkern u1="X" u2="đ" k="13" /> + <hkern u1="X" u2="ď" k="13" /> + <hkern u1="X" u2="č" k="18" /> + <hkern u1="X" u2="Č" k="18" /> + <hkern u1="X" u2="ċ" k="18" /> + <hkern u1="X" u2="Ċ" k="18" /> + <hkern u1="X" u2="ĉ" k="18" /> + <hkern u1="X" u2="Ĉ" k="18" /> + <hkern u1="X" u2="ć" k="18" /> + <hkern u1="X" u2="Ć" k="18" /> + <hkern u1="X" u2="ö" k="18" /> + <hkern u1="X" u2="õ" k="18" /> + <hkern u1="X" u2="ô" k="18" /> + <hkern u1="X" u2="ó" k="18" /> + <hkern u1="X" u2="ò" k="18" /> + <hkern u1="X" u2="ð" k="13" /> + <hkern u1="X" u2="ë" k="18" /> + <hkern u1="X" u2="ê" k="18" /> + <hkern u1="X" u2="é" k="18" /> + <hkern u1="X" u2="è" k="18" /> + <hkern u1="X" u2="ç" k="18" /> + <hkern u1="X" u2="Ö" k="18" /> + <hkern u1="X" u2="Õ" k="18" /> + <hkern u1="X" u2="Ô" k="18" /> + <hkern u1="X" u2="Ó" k="18" /> + <hkern u1="X" u2="Ò" k="18" /> + <hkern u1="X" u2="Ç" k="18" /> + <hkern u1="X" u2="»" k="7" /> + <hkern u1="X" u2="·" k="38" /> + <hkern u1="X" u2="®" k="16" /> + <hkern u1="X" u2="­" k="46" /> + <hkern u1="X" u2="«" k="47" /> + <hkern u1="X" u2="y" k="30" /> + <hkern u1="X" u2="w" k="33" /> + <hkern u1="X" u2="v" k="34" /> + <hkern u1="X" u2="q" k="13" /> + <hkern u1="X" u2="o" k="18" /> + <hkern u1="X" u2="e" k="18" /> + <hkern u1="X" u2="d" k="13" /> + <hkern u1="X" u2="c" k="18" /> + <hkern u1="X" u2="Q" k="18" /> + <hkern u1="X" u2="O" k="18" /> + <hkern u1="X" u2="G" k="18" /> + <hkern u1="X" u2="C" k="18" /> + <hkern u1="X" u2="-" k="46" /> + <hkern u1="X" u2=" " k="5" /> + <hkern u1="Y" g2="z.sc" k="15" /> + <hkern u1="Y" g2="x.sc" k="16" /> + <hkern u1="Y" g2="v.sc" k="8" /> + <hkern u1="Y" u2="®" k="10" /> + <hkern u1="Y" u2="«" k="64" /> + <hkern u1="Y" u2="y" k="24" /> + <hkern u1="Y" u2="x" k="40" /> + <hkern u1="Y" u2="v" k="25" /> + <hkern u1="Y" u2=" " k="18" /> + <hkern u1="Z" u2="y" k="18" /> + <hkern u1="a" u2="y" k="6" /> + <hkern u1="a" u2="v" k="6" /> + <hkern u1="b" u2="y" k="6" /> + <hkern u1="b" u2="x" k="10" /> + <hkern u1="b" u2="v" k="6" /> + <hkern u1="c" u2="y" k="5" /> + <hkern u1="c" u2="x" k="5" /> + <hkern u1="c" u2="v" k="4" /> + <hkern u1="d" g2="napostrophe" k="-48" /> + <hkern u1="d" u2="ï" k="-19" /> + <hkern u1="e" u2="y" k="9" /> + <hkern u1="e" u2="x" k="7" /> + <hkern u1="e" u2="v" k="7" /> + <hkern u1="f" u2="…" k="45" /> + <hkern u1="f" u2="”" k="-24" /> + <hkern u1="f" u2="“" k="-24" /> + <hkern u1="f" u2="’" k="-24" /> + <hkern u1="f" u2="‘" k="-24" /> + <hkern u1="f" u2="—" k="3" /> + <hkern u1="f" u2="–" k="3" /> + <hkern u1="f" u2="ǿ" k="6" /> + <hkern u1="f" u2="ǽ" k="6" /> + <hkern u1="f" u2="ǻ" k="6" /> + <hkern u1="f" u2="œ" k="6" /> + <hkern u1="f" u2="ő" k="6" /> + <hkern u1="f" u2="ŏ" k="6" /> + <hkern u1="f" u2="ō" k="6" /> + <hkern u1="f" u2="ě" k="6" /> + <hkern u1="f" u2="ę" k="6" /> + <hkern u1="f" u2="ė" k="6" /> + <hkern u1="f" u2="ĕ" k="6" /> + <hkern u1="f" u2="ē" k="6" /> + <hkern u1="f" u2="č" k="6" /> + <hkern u1="f" u2="ċ" k="6" /> + <hkern u1="f" u2="ĉ" k="6" /> + <hkern u1="f" u2="ć" k="6" /> + <hkern u1="f" u2="ą" k="6" /> + <hkern u1="f" u2="ă" k="6" /> + <hkern u1="f" u2="ā" k="6" /> + <hkern u1="f" u2="ø" k="6" /> + <hkern u1="f" u2="ö" k="6" /> + <hkern u1="f" u2="õ" k="6" /> + <hkern u1="f" u2="ô" k="6" /> + <hkern u1="f" u2="ó" k="6" /> + <hkern u1="f" u2="ò" k="6" /> + <hkern u1="f" u2="ë" k="6" /> + <hkern u1="f" u2="ê" k="6" /> + <hkern u1="f" u2="é" k="6" /> + <hkern u1="f" u2="è" k="6" /> + <hkern u1="f" u2="ç" k="6" /> + <hkern u1="f" u2="æ" k="6" /> + <hkern u1="f" u2="å" k="6" /> + <hkern u1="f" u2="ä" k="6" /> + <hkern u1="f" u2="ã" k="6" /> + <hkern u1="f" u2="â" k="6" /> + <hkern u1="f" u2="á" k="6" /> + <hkern u1="f" u2="à" k="6" /> + <hkern u1="f" u2="­" k="3" /> + <hkern u1="f" u2="o" k="6" /> + <hkern u1="f" u2="e" k="6" /> + <hkern u1="f" u2="c" k="6" /> + <hkern u1="f" u2="a" k="6" /> + <hkern u1="f" u2="?" k="-23" /> + <hkern u1="f" u2="." k="45" /> + <hkern u1="f" u2="-" k="3" /> + <hkern u1="f" u2="," k="45" /> + <hkern u1="f" u2="'" k="-24" /> + <hkern u1="f" u2=""" k="-24" /> + <hkern u1="h" u2="y" k="8" /> + <hkern u1="h" u2="v" k="9" /> + <hkern u1="k" u2="y" k="18" /> + <hkern u1="l" u2="®" k="25" /> + <hkern u1="l" u2="«" k="10" /> + <hkern u1="l" u2="y" k="15" /> + <hkern u1="l" u2="v" k="19" /> + <hkern u1="m" u2="y" k="8" /> + <hkern u1="m" u2="v" k="9" /> + <hkern u1="n" u2="y" k="8" /> + <hkern u1="n" u2="v" k="9" /> + <hkern u1="o" u2="y" k="10" /> + <hkern u1="o" u2="x" k="13" /> + <hkern u1="o" u2="v" k="8" /> + <hkern u1="p" u2="y" k="6" /> + <hkern u1="p" u2="x" k="10" /> + <hkern u1="p" u2="v" k="6" /> + <hkern u1="r" u2="?" k="-20" /> + <hkern u1="s" u2="v" k="5" /> + <hkern u1="v" g2="aogonek.alt01" k="6" /> + <hkern u1="v" g2="aringacute.alt01" k="6" /> + <hkern u1="v" g2="aring.alt01" k="6" /> + <hkern u1="v" g2="abreve.alt01" k="6" /> + <hkern u1="v" g2="amacron.alt01" k="6" /> + <hkern u1="v" g2="adieresis.alt01" k="6" /> + <hkern u1="v" g2="atilde.alt01" k="6" /> + <hkern u1="v" g2="acircumflex.alt01" k="6" /> + <hkern u1="v" g2="aacute.alt01" k="6" /> + <hkern u1="v" g2="agrave.alt01" k="6" /> + <hkern u1="v" g2="a.alt01" k="6" /> + <hkern u1="v" u2="…" k="50" /> + <hkern u1="v" u2="”" k="-5" /> + <hkern u1="v" u2="“" k="-5" /> + <hkern u1="v" u2="’" k="-5" /> + <hkern u1="v" u2="‘" k="-5" /> + <hkern u1="v" u2="—" k="17" /> + <hkern u1="v" u2="–" k="17" /> + <hkern u1="v" u2="ș" k="8" /> + <hkern u1="v" u2="ǿ" k="10" /> + <hkern u1="v" u2="š" k="8" /> + <hkern u1="v" u2="ş" k="8" /> + <hkern u1="v" u2="ŝ" k="8" /> + <hkern u1="v" u2="ś" k="8" /> + <hkern u1="v" u2="œ" k="10" /> + <hkern u1="v" u2="ő" k="10" /> + <hkern u1="v" u2="ŏ" k="10" /> + <hkern u1="v" u2="ō" k="10" /> + <hkern u1="v" u2="ģ" k="6" /> + <hkern u1="v" u2="ġ" k="6" /> + <hkern u1="v" u2="ğ" k="6" /> + <hkern u1="v" u2="ĝ" k="6" /> + <hkern u1="v" u2="ě" k="10" /> + <hkern u1="v" u2="ę" k="10" /> + <hkern u1="v" u2="ė" k="10" /> + <hkern u1="v" u2="ĕ" k="10" /> + <hkern u1="v" u2="ē" k="10" /> + <hkern u1="v" u2="đ" k="6" /> + <hkern u1="v" u2="ď" k="6" /> + <hkern u1="v" u2="č" k="10" /> + <hkern u1="v" u2="ċ" k="10" /> + <hkern u1="v" u2="ĉ" k="10" /> + <hkern u1="v" u2="ć" k="10" /> + <hkern u1="v" u2="ø" k="10" /> + <hkern u1="v" u2="ö" k="10" /> + <hkern u1="v" u2="õ" k="10" /> + <hkern u1="v" u2="ô" k="10" /> + <hkern u1="v" u2="ó" k="10" /> + <hkern u1="v" u2="ò" k="10" /> + <hkern u1="v" u2="ð" k="6" /> + <hkern u1="v" u2="ë" k="10" /> + <hkern u1="v" u2="ê" k="10" /> + <hkern u1="v" u2="é" k="10" /> + <hkern u1="v" u2="è" k="10" /> + <hkern u1="v" u2="ç" k="10" /> + <hkern u1="v" u2="­" k="17" /> + <hkern u1="v" u2="«" k="8" /> + <hkern u1="v" u2="s" k="8" /> + <hkern u1="v" u2="q" k="6" /> + <hkern u1="v" u2="o" k="10" /> + <hkern u1="v" u2="g" k="6" /> + <hkern u1="v" u2="e" k="10" /> + <hkern u1="v" u2="d" k="6" /> + <hkern u1="v" u2="c" k="10" /> + <hkern u1="v" u2="." k="50" /> + <hkern u1="v" u2="-" k="17" /> + <hkern u1="v" u2="," k="50" /> + <hkern u1="v" u2="'" k="-5" /> + <hkern u1="v" u2=""" k="-5" /> + <hkern u1="w" u2="«" k="8" /> + <hkern u1="x" g2="aogonek.alt01" k="10" /> + <hkern u1="x" g2="aringacute.alt01" k="10" /> + <hkern u1="x" g2="aring.alt01" k="10" /> + <hkern u1="x" g2="abreve.alt01" k="10" /> + <hkern u1="x" g2="amacron.alt01" k="10" /> + <hkern u1="x" g2="adieresis.alt01" k="10" /> + <hkern u1="x" g2="atilde.alt01" k="10" /> + <hkern u1="x" g2="acircumflex.alt01" k="10" /> + <hkern u1="x" g2="aacute.alt01" k="10" /> + <hkern u1="x" g2="agrave.alt01" k="10" /> + <hkern u1="x" g2="a.alt01" k="10" /> + <hkern u1="x" u2="—" k="40" /> + <hkern u1="x" u2="–" k="40" /> + <hkern u1="x" u2="ǿ" k="8" /> + <hkern u1="x" u2="œ" k="13" /> + <hkern u1="x" u2="ő" k="13" /> + <hkern u1="x" u2="ŏ" k="13" /> + <hkern u1="x" u2="ō" k="13" /> + <hkern u1="x" u2="ģ" k="11" /> + <hkern u1="x" u2="ġ" k="11" /> + <hkern u1="x" u2="ğ" k="11" /> + <hkern u1="x" u2="ĝ" k="11" /> + <hkern u1="x" u2="ě" k="13" /> + <hkern u1="x" u2="ę" k="13" /> + <hkern u1="x" u2="ė" k="13" /> + <hkern u1="x" u2="ĕ" k="13" /> + <hkern u1="x" u2="ē" k="13" /> + <hkern u1="x" u2="đ" k="10" /> + <hkern u1="x" u2="ď" k="10" /> + <hkern u1="x" u2="č" k="13" /> + <hkern u1="x" u2="ċ" k="13" /> + <hkern u1="x" u2="ĉ" k="13" /> + <hkern u1="x" u2="ć" k="13" /> + <hkern u1="x" u2="ø" k="8" /> + <hkern u1="x" u2="ö" k="13" /> + <hkern u1="x" u2="õ" k="13" /> + <hkern u1="x" u2="ô" k="13" /> + <hkern u1="x" u2="ó" k="13" /> + <hkern u1="x" u2="ò" k="13" /> + <hkern u1="x" u2="ð" k="10" /> + <hkern u1="x" u2="ë" k="13" /> + <hkern u1="x" u2="ê" k="13" /> + <hkern u1="x" u2="é" k="13" /> + <hkern u1="x" u2="è" k="13" /> + <hkern u1="x" u2="ç" k="13" /> + <hkern u1="x" u2="­" k="40" /> + <hkern u1="x" u2="«" k="20" /> + <hkern u1="x" u2="q" k="10" /> + <hkern u1="x" u2="o" k="13" /> + <hkern u1="x" u2="g" k="11" /> + <hkern u1="x" u2="e" k="13" /> + <hkern u1="x" u2="d" k="10" /> + <hkern u1="x" u2="c" k="13" /> + <hkern u1="x" u2="-" k="40" /> + <hkern u1="y" g2="aogonek.alt01" k="9" /> + <hkern u1="y" g2="aringacute.alt01" k="9" /> + <hkern u1="y" g2="aring.alt01" k="9" /> + <hkern u1="y" g2="abreve.alt01" k="9" /> + <hkern u1="y" g2="amacron.alt01" k="9" /> + <hkern u1="y" g2="adieresis.alt01" k="9" /> + <hkern u1="y" g2="atilde.alt01" k="9" /> + <hkern u1="y" g2="acircumflex.alt01" k="9" /> + <hkern u1="y" g2="aacute.alt01" k="9" /> + <hkern u1="y" g2="agrave.alt01" k="9" /> + <hkern u1="y" g2="a.alt01" k="9" /> + <hkern u1="y" u2="…" k="50" /> + <hkern u1="y" u2="“" k="-5" /> + <hkern u1="y" u2="‘" k="-5" /> + <hkern u1="y" u2="—" k="19" /> + <hkern u1="y" u2="–" k="19" /> + <hkern u1="y" u2="ș" k="6" /> + <hkern u1="y" u2="ǿ" k="15" /> + <hkern u1="y" u2="ǽ" k="6" /> + <hkern u1="y" u2="ǻ" k="6" /> + <hkern u1="y" u2="š" k="6" /> + <hkern u1="y" u2="ş" k="6" /> + <hkern u1="y" u2="ŝ" k="6" /> + <hkern u1="y" u2="ś" k="6" /> + <hkern u1="y" u2="œ" k="15" /> + <hkern u1="y" u2="ő" k="15" /> + <hkern u1="y" u2="ŏ" k="15" /> + <hkern u1="y" u2="ō" k="15" /> + <hkern u1="y" u2="ģ" k="11" /> + <hkern u1="y" u2="ġ" k="11" /> + <hkern u1="y" u2="ğ" k="11" /> + <hkern u1="y" u2="ĝ" k="11" /> + <hkern u1="y" u2="ě" k="15" /> + <hkern u1="y" u2="ę" k="15" /> + <hkern u1="y" u2="ė" k="15" /> + <hkern u1="y" u2="ĕ" k="15" /> + <hkern u1="y" u2="ē" k="15" /> + <hkern u1="y" u2="đ" k="9" /> + <hkern u1="y" u2="ď" k="9" /> + <hkern u1="y" u2="č" k="15" /> + <hkern u1="y" u2="ċ" k="15" /> + <hkern u1="y" u2="ĉ" k="15" /> + <hkern u1="y" u2="ć" k="15" /> + <hkern u1="y" u2="ą" k="6" /> + <hkern u1="y" u2="ă" k="6" /> + <hkern u1="y" u2="ā" k="6" /> + <hkern u1="y" u2="ø" k="15" /> + <hkern u1="y" u2="ö" k="15" /> + <hkern u1="y" u2="õ" k="15" /> + <hkern u1="y" u2="ô" k="15" /> + <hkern u1="y" u2="ó" k="15" /> + <hkern u1="y" u2="ò" k="15" /> + <hkern u1="y" u2="ð" k="9" /> + <hkern u1="y" u2="ë" k="15" /> + <hkern u1="y" u2="ê" k="15" /> + <hkern u1="y" u2="é" k="15" /> + <hkern u1="y" u2="è" k="15" /> + <hkern u1="y" u2="ç" k="15" /> + <hkern u1="y" u2="æ" k="6" /> + <hkern u1="y" u2="å" k="6" /> + <hkern u1="y" u2="ä" k="6" /> + <hkern u1="y" u2="ã" k="6" /> + <hkern u1="y" u2="â" k="6" /> + <hkern u1="y" u2="á" k="6" /> + <hkern u1="y" u2="à" k="6" /> + <hkern u1="y" u2="­" k="19" /> + <hkern u1="y" u2="«" k="9" /> + <hkern u1="y" u2="s" k="6" /> + <hkern u1="y" u2="q" k="9" /> + <hkern u1="y" u2="o" k="15" /> + <hkern u1="y" u2="g" k="11" /> + <hkern u1="y" u2="e" k="15" /> + <hkern u1="y" u2="d" k="9" /> + <hkern u1="y" u2="c" k="15" /> + <hkern u1="y" u2="a" k="6" /> + <hkern u1="y" u2="." k="50" /> + <hkern u1="y" u2="-" k="19" /> + <hkern u1="y" u2="," k="50" /> + <hkern u1="y" u2="'" k="-5" /> + <hkern u1="y" u2=""" k="-5" /> + <hkern u1="¡" u2="Ỳ" k="34" /> + <hkern u1="¡" u2="Ẅ" k="17" /> + <hkern u1="¡" u2="Ẃ" k="17" /> + <hkern u1="¡" u2="Ẁ" k="17" /> + <hkern u1="¡" u2="ȷ" k="-24" /> + <hkern u1="¡" u2="Ț" k="25" /> + <hkern u1="¡" u2="Ÿ" k="34" /> + <hkern u1="¡" u2="Ŷ" k="34" /> + <hkern u1="¡" u2="Ŵ" k="17" /> + <hkern u1="¡" u2="Ŧ" k="25" /> + <hkern u1="¡" u2="Ť" k="25" /> + <hkern u1="¡" u2="Ţ" k="25" /> + <hkern u1="¡" u2="ĵ" k="-24" /> + <hkern u1="¡" u2="Ý" k="34" /> + <hkern u1="¡" u2="j" k="-24" /> + <hkern u1="¡" u2="Y" k="34" /> + <hkern u1="¡" u2="W" k="17" /> + <hkern u1="¡" u2="V" k="22" /> + <hkern u1="¡" u2="T" k="25" /> + <hkern u1="«" u2="X" k="7" /> + <hkern u1="«" u2="V" k="22" /> + <hkern u1="­" u2="Ŧ" k="45" /> + <hkern u1="­" u2="y" k="19" /> + <hkern u1="­" u2="x" k="40" /> + <hkern u1="­" u2="v" k="17" /> + <hkern u1="­" u2="X" k="46" /> + <hkern u1="­" u2="V" k="40" /> + <hkern u1="·" u2="X" k="38" /> + <hkern u1="·" u2="V" k="31" /> + <hkern u1="»" u2="Ỳ" k="64" /> + <hkern u1="»" u2="ẅ" k="8" /> + <hkern u1="»" u2="Ẅ" k="40" /> + <hkern u1="»" u2="ẃ" k="8" /> + <hkern u1="»" u2="Ẃ" k="40" /> + <hkern u1="»" u2="ẁ" k="8" /> + <hkern u1="»" u2="Ẁ" k="40" /> + <hkern u1="»" u2="Ț" k="45" /> + <hkern u1="»" u2="Ǻ" k="15" /> + <hkern u1="»" u2="Ÿ" k="64" /> + <hkern u1="»" u2="Ŷ" k="64" /> + <hkern u1="»" u2="ŵ" k="8" /> + <hkern u1="»" u2="Ŵ" k="40" /> + <hkern u1="»" u2="Ŧ" k="45" /> + <hkern u1="»" u2="Ť" k="45" /> + <hkern u1="»" u2="Ţ" k="45" /> + <hkern u1="»" u2="Ĵ" k="17" /> + <hkern u1="»" u2="Ą" k="15" /> + <hkern u1="»" u2="Ă" k="15" /> + <hkern u1="»" u2="Ā" k="15" /> + <hkern u1="»" u2="Ý" k="64" /> + <hkern u1="»" u2="Å" k="15" /> + <hkern u1="»" u2="Ä" k="15" /> + <hkern u1="»" u2="Ã" k="15" /> + <hkern u1="»" u2="Â" k="15" /> + <hkern u1="»" u2="Á" k="15" /> + <hkern u1="»" u2="À" k="15" /> + <hkern u1="»" u2="y" k="9" /> + <hkern u1="»" u2="x" k="20" /> + <hkern u1="»" u2="w" k="8" /> + <hkern u1="»" u2="v" k="8" /> + <hkern u1="»" u2="Y" k="64" /> + <hkern u1="»" u2="X" k="47" /> + <hkern u1="»" u2="W" k="40" /> + <hkern u1="»" u2="V" k="45" /> + <hkern u1="»" u2="T" k="45" /> + <hkern u1="»" u2="J" k="17" /> + <hkern u1="»" u2="A" k="15" /> + <hkern u1="¿" u2="Ỳ" k="67" /> + <hkern u1="¿" u2="Ẅ" k="57" /> + <hkern u1="¿" u2="Ẃ" k="57" /> + <hkern u1="¿" u2="Ẁ" k="57" /> + <hkern u1="¿" u2="ȷ" k="-64" /> + <hkern u1="¿" u2="Ț" k="64" /> + <hkern u1="¿" u2="Ÿ" k="67" /> + <hkern u1="¿" u2="Ŷ" k="67" /> + <hkern u1="¿" u2="Ŵ" k="57" /> + <hkern u1="¿" u2="Ŧ" k="64" /> + <hkern u1="¿" u2="Ť" k="64" /> + <hkern u1="¿" u2="Ţ" k="64" /> + <hkern u1="¿" u2="ĵ" k="-64" /> + <hkern u1="¿" u2="Ý" k="67" /> + <hkern u1="¿" u2="j" k="-64" /> + <hkern u1="¿" u2="Y" k="67" /> + <hkern u1="¿" u2="W" k="57" /> + <hkern u1="¿" u2="V" k="62" /> + <hkern u1="¿" u2="T" k="64" /> + <hkern u1="À" g2="v.sc" k="14" /> + <hkern u1="À" u2="®" k="44" /> + <hkern u1="À" u2="«" k="15" /> + <hkern u1="À" u2="y" k="36" /> + <hkern u1="À" u2="v" k="38" /> + <hkern u1="À" u2="V" k="36" /> + <hkern u1="À" u2="?" k="40" /> + <hkern u1="Á" g2="v.sc" k="14" /> + <hkern u1="Á" u2="®" k="44" /> + <hkern u1="Á" u2="«" k="15" /> + <hkern u1="Á" u2="y" k="36" /> + <hkern u1="Á" u2="v" k="38" /> + <hkern u1="Á" u2="V" k="36" /> + <hkern u1="Á" u2="?" k="40" /> + <hkern u1="Â" g2="v.sc" k="14" /> + <hkern u1="Â" u2="®" k="44" /> + <hkern u1="Â" u2="«" k="15" /> + <hkern u1="Â" u2="y" k="36" /> + <hkern u1="Â" u2="v" k="38" /> + <hkern u1="Â" u2="V" k="36" /> + <hkern u1="Â" u2="?" k="40" /> + <hkern u1="Ã" g2="v.sc" k="14" /> + <hkern u1="Ã" u2="®" k="44" /> + <hkern u1="Ã" u2="«" k="15" /> + <hkern u1="Ã" u2="y" k="36" /> + <hkern u1="Ã" u2="v" k="38" /> + <hkern u1="Ã" u2="V" k="36" /> + <hkern u1="Ã" u2="?" k="40" /> + <hkern u1="Ä" g2="v.sc" k="14" /> + <hkern u1="Ä" u2="®" k="44" /> + <hkern u1="Ä" u2="«" k="15" /> + <hkern u1="Ä" u2="y" k="36" /> + <hkern u1="Ä" u2="v" k="38" /> + <hkern u1="Ä" u2="V" k="36" /> + <hkern u1="Ä" u2="?" k="40" /> + <hkern u1="Å" g2="v.sc" k="14" /> + <hkern u1="Å" u2="®" k="44" /> + <hkern u1="Å" u2="«" k="15" /> + <hkern u1="Å" u2="y" k="36" /> + <hkern u1="Å" u2="v" k="38" /> + <hkern u1="Å" u2="V" k="36" /> + <hkern u1="Å" u2="?" k="40" /> + <hkern u1="Æ" g2="v.sc" k="12" /> + <hkern u1="Æ" u2="y" k="18" /> + <hkern u1="Æ" u2="v" k="18" /> + <hkern u1="Ç" u2="y" k="18" /> + <hkern u1="È" g2="v.sc" k="12" /> + <hkern u1="È" u2="y" k="18" /> + <hkern u1="È" u2="v" k="18" /> + <hkern u1="É" g2="v.sc" k="12" /> + <hkern u1="É" u2="y" k="18" /> + <hkern u1="É" u2="v" k="18" /> + <hkern u1="Ê" g2="v.sc" k="12" /> + <hkern u1="Ê" u2="y" k="18" /> + <hkern u1="Ê" u2="v" k="18" /> + <hkern u1="Ë" g2="v.sc" k="12" /> + <hkern u1="Ë" u2="y" k="18" /> + <hkern u1="Ë" u2="v" k="18" /> + <hkern u1="Ì" u2="ï" k="-19" /> + <hkern u1="Í" u2="ï" k="-19" /> + <hkern u1="Î" u2="ï" k="-19" /> + <hkern u1="Ï" u2="ï" k="-19" /> + <hkern u1="Ð" u2="X" k="18" /> + <hkern u1="Ð" u2="V" k="16" /> + <hkern u1="Ñ" u2="ï" k="-19" /> + <hkern u1="Ò" u2="X" k="19" /> + <hkern u1="Ò" u2="V" k="14" /> + <hkern u1="Ó" u2="X" k="19" /> + <hkern u1="Ó" u2="V" k="14" /> + <hkern u1="Ô" u2="X" k="19" /> + <hkern u1="Ô" u2="V" k="14" /> + <hkern u1="Õ" u2="X" k="19" /> + <hkern u1="Õ" u2="V" k="14" /> + <hkern u1="Ö" u2="X" k="19" /> + <hkern u1="Ö" u2="V" k="14" /> + <hkern u1="Ý" g2="z.sc" k="15" /> + <hkern u1="Ý" g2="x.sc" k="16" /> + <hkern u1="Ý" g2="v.sc" k="8" /> + <hkern u1="Ý" u2="®" k="10" /> + <hkern u1="Ý" u2="«" k="64" /> + <hkern u1="Ý" u2="y" k="24" /> + <hkern u1="Ý" u2="x" k="40" /> + <hkern u1="Ý" u2="v" k="25" /> + <hkern u1="Ý" u2=" " k="18" /> + <hkern u1="Þ" g2="aeacute.sc" k="53" /> + <hkern u1="Þ" g2="ae.sc" k="53" /> + <hkern u1="Þ" g2="aogonek.sc" k="24" /> + <hkern u1="Þ" g2="aringacute.sc" k="24" /> + <hkern u1="Þ" g2="aring.sc" k="24" /> + <hkern u1="Þ" g2="abreve.sc" k="24" /> + <hkern u1="Þ" g2="amacron.sc" k="24" /> + <hkern u1="Þ" g2="adieresis.sc" k="24" /> + <hkern u1="Þ" g2="atilde.sc" k="24" /> + <hkern u1="Þ" g2="acircumflex.sc" k="24" /> + <hkern u1="Þ" g2="aacute.sc" k="24" /> + <hkern u1="Þ" g2="agrave.sc" k="24" /> + <hkern u1="Þ" g2="a.sc" k="24" /> + <hkern u1="Þ" u2="…" k="56" /> + <hkern u1="Þ" u2="Ỳ" k="29" /> + <hkern u1="Þ" u2="Ẅ" k="10" /> + <hkern u1="Þ" u2="Ẃ" k="10" /> + <hkern u1="Þ" u2="Ẁ" k="10" /> + <hkern u1="Þ" u2="Ǽ" k="51" /> + <hkern u1="Þ" u2="Ǻ" k="22" /> + <hkern u1="Þ" u2="Ÿ" k="29" /> + <hkern u1="Þ" u2="Ŷ" k="29" /> + <hkern u1="Þ" u2="Ŵ" k="10" /> + <hkern u1="Þ" u2="Ą" k="22" /> + <hkern u1="Þ" u2="Ă" k="22" /> + <hkern u1="Þ" u2="Ā" k="22" /> + <hkern u1="Þ" u2="Ý" k="29" /> + <hkern u1="Þ" u2="Æ" k="51" /> + <hkern u1="Þ" u2="Å" k="22" /> + <hkern u1="Þ" u2="Ä" k="22" /> + <hkern u1="Þ" u2="Ã" k="22" /> + <hkern u1="Þ" u2="Â" k="22" /> + <hkern u1="Þ" u2="Á" k="22" /> + <hkern u1="Þ" u2="À" k="22" /> + <hkern u1="Þ" u2="Y" k="29" /> + <hkern u1="Þ" u2="X" k="27" /> + <hkern u1="Þ" u2="W" k="10" /> + <hkern u1="Þ" u2="V" k="18" /> + <hkern u1="Þ" u2="A" k="22" /> + <hkern u1="Þ" u2="." k="56" /> + <hkern u1="Þ" u2="," k="56" /> + <hkern u1="à" u2="y" k="6" /> + <hkern u1="à" u2="v" k="6" /> + <hkern u1="á" u2="y" k="6" /> + <hkern u1="á" u2="v" k="6" /> + <hkern u1="â" u2="y" k="6" /> + <hkern u1="â" u2="v" k="6" /> + <hkern u1="ã" u2="y" k="6" /> + <hkern u1="ã" u2="v" k="6" /> + <hkern u1="ä" u2="y" k="6" /> + <hkern u1="ä" u2="v" k="6" /> + <hkern u1="å" u2="y" k="6" /> + <hkern u1="å" u2="v" k="6" /> + <hkern u1="æ" u2="y" k="9" /> + <hkern u1="æ" u2="x" k="7" /> + <hkern u1="æ" u2="v" k="7" /> + <hkern u1="ç" u2="y" k="5" /> + <hkern u1="ç" u2="x" k="5" /> + <hkern u1="ç" u2="v" k="4" /> + <hkern u1="è" u2="y" k="9" /> + <hkern u1="è" u2="x" k="7" /> + <hkern u1="è" u2="v" k="7" /> + <hkern u1="é" u2="y" k="9" /> + <hkern u1="é" u2="x" k="7" /> + <hkern u1="é" u2="v" k="7" /> + <hkern u1="ê" u2="y" k="9" /> + <hkern u1="ê" u2="x" k="7" /> + <hkern u1="ê" u2="v" k="7" /> + <hkern u1="ë" u2="y" k="9" /> + <hkern u1="ë" u2="x" k="7" /> + <hkern u1="ë" u2="v" k="7" /> + <hkern u1="ï" u2="”" k="-52" /> + <hkern u1="ï" u2="“" k="-52" /> + <hkern u1="ï" u2="’" k="-52" /> + <hkern u1="ï" u2="‘" k="-52" /> + <hkern u1="ï" u2="ķ" k="-19" /> + <hkern u1="ï" u2="ħ" k="-19" /> + <hkern u1="ï" u2="ĥ" k="-19" /> + <hkern u1="ï" u2="þ" k="-19" /> + <hkern u1="ï" u2="k" k="-19" /> + <hkern u1="ï" u2="h" k="-19" /> + <hkern u1="ï" u2="b" k="-19" /> + <hkern u1="ï" u2="'" k="-52" /> + <hkern u1="ï" u2=""" k="-52" /> + <hkern u1="ñ" u2="y" k="8" /> + <hkern u1="ñ" u2="v" k="9" /> + <hkern u1="ò" u2="y" k="10" /> + <hkern u1="ò" u2="x" k="13" /> + <hkern u1="ò" u2="v" k="8" /> + <hkern u1="ó" u2="y" k="10" /> + <hkern u1="ó" u2="x" k="13" /> + <hkern u1="ó" u2="v" k="8" /> + <hkern u1="ô" u2="y" k="10" /> + <hkern u1="ô" u2="x" k="13" /> + <hkern u1="ô" u2="v" k="8" /> + <hkern u1="õ" u2="y" k="10" /> + <hkern u1="õ" u2="x" k="13" /> + <hkern u1="õ" u2="v" k="8" /> + <hkern u1="ö" u2="y" k="10" /> + <hkern u1="ö" u2="x" k="13" /> + <hkern u1="ö" u2="v" k="8" /> + <hkern u1="ø" u2="x" k="8" /> + <hkern u1="þ" u2="y" k="6" /> + <hkern u1="þ" u2="x" k="10" /> + <hkern u1="þ" u2="v" k="6" /> + <hkern u1="Ā" g2="v.sc" k="14" /> + <hkern u1="Ā" u2="®" k="44" /> + <hkern u1="Ā" u2="«" k="15" /> + <hkern u1="Ā" u2="y" k="36" /> + <hkern u1="Ā" u2="v" k="38" /> + <hkern u1="Ā" u2="V" k="36" /> + <hkern u1="Ā" u2="?" k="40" /> + <hkern u1="ā" u2="y" k="6" /> + <hkern u1="ā" u2="v" k="6" /> + <hkern u1="Ă" g2="v.sc" k="14" /> + <hkern u1="Ă" u2="®" k="44" /> + <hkern u1="Ă" u2="«" k="15" /> + <hkern u1="Ă" u2="y" k="36" /> + <hkern u1="Ă" u2="v" k="38" /> + <hkern u1="Ă" u2="V" k="36" /> + <hkern u1="Ă" u2="?" k="40" /> + <hkern u1="ă" u2="y" k="6" /> + <hkern u1="ă" u2="v" k="6" /> + <hkern u1="Ą" g2="v.sc" k="14" /> + <hkern u1="Ą" u2="®" k="44" /> + <hkern u1="Ą" u2="«" k="15" /> + <hkern u1="Ą" u2="y" k="36" /> + <hkern u1="Ą" u2="v" k="38" /> + <hkern u1="Ą" u2="V" k="36" /> + <hkern u1="Ą" u2="?" k="40" /> + <hkern u1="ą" u2="y" k="6" /> + <hkern u1="ą" u2="v" k="6" /> + <hkern u1="Ć" u2="y" k="18" /> + <hkern u1="ć" u2="y" k="5" /> + <hkern u1="ć" u2="x" k="5" /> + <hkern u1="ć" u2="v" k="4" /> + <hkern u1="Ĉ" u2="y" k="18" /> + <hkern u1="ĉ" u2="y" k="5" /> + <hkern u1="ĉ" u2="x" k="5" /> + <hkern u1="ĉ" u2="v" k="4" /> + <hkern u1="Ċ" u2="y" k="18" /> + <hkern u1="ċ" u2="y" k="5" /> + <hkern u1="ċ" u2="x" k="5" /> + <hkern u1="ċ" u2="v" k="4" /> + <hkern u1="Č" u2="y" k="18" /> + <hkern u1="č" u2="y" k="5" /> + <hkern u1="č" u2="x" k="5" /> + <hkern u1="č" u2="v" k="4" /> + <hkern u1="Ď" u2="X" k="18" /> + <hkern u1="Ď" u2="V" k="16" /> + <hkern u1="ď" u2="y" k="-24" /> + <hkern u1="ď" u2="x" k="-24" /> + <hkern u1="ď" u2="v" k="-29" /> + <hkern u1="ď" u2="?" k="-93" /> + <hkern u1="ď" u2="!" k="-73" /> + <hkern u1="Đ" u2="X" k="18" /> + <hkern u1="Đ" u2="V" k="16" /> + <hkern u1="đ" g2="napostrophe" k="-48" /> + <hkern u1="đ" u2="ï" k="-19" /> + <hkern u1="Ē" g2="v.sc" k="12" /> + <hkern u1="Ē" u2="y" k="18" /> + <hkern u1="Ē" u2="v" k="18" /> + <hkern u1="ē" u2="y" k="9" /> + <hkern u1="ē" u2="x" k="7" /> + <hkern u1="ē" u2="v" k="7" /> + <hkern u1="Ĕ" g2="v.sc" k="12" /> + <hkern u1="Ĕ" u2="y" k="18" /> + <hkern u1="Ĕ" u2="v" k="18" /> + <hkern u1="ĕ" u2="y" k="9" /> + <hkern u1="ĕ" u2="x" k="7" /> + <hkern u1="ĕ" u2="v" k="7" /> + <hkern u1="Ė" g2="v.sc" k="12" /> + <hkern u1="Ė" u2="y" k="18" /> + <hkern u1="Ė" u2="v" k="18" /> + <hkern u1="ė" u2="y" k="9" /> + <hkern u1="ė" u2="x" k="7" /> + <hkern u1="ė" u2="v" k="7" /> + <hkern u1="Ę" g2="v.sc" k="12" /> + <hkern u1="Ę" u2="y" k="18" /> + <hkern u1="Ę" u2="v" k="18" /> + <hkern u1="ę" u2="y" k="9" /> + <hkern u1="ę" u2="x" k="7" /> + <hkern u1="ę" u2="v" k="7" /> + <hkern u1="Ě" g2="v.sc" k="12" /> + <hkern u1="Ě" u2="y" k="18" /> + <hkern u1="Ě" u2="v" k="18" /> + <hkern u1="ě" u2="y" k="9" /> + <hkern u1="ě" u2="x" k="7" /> + <hkern u1="ě" u2="v" k="7" /> + <hkern u1="Ĝ" u2="X" k="19" /> + <hkern u1="Ĝ" u2="V" k="14" /> + <hkern u1="Ğ" u2="X" k="19" /> + <hkern u1="Ğ" u2="V" k="14" /> + <hkern u1="Ġ" u2="X" k="19" /> + <hkern u1="Ġ" u2="V" k="14" /> + <hkern u1="Ģ" u2="X" k="19" /> + <hkern u1="Ģ" u2="V" k="14" /> + <hkern u1="Ĥ" u2="ï" k="-19" /> + <hkern u1="ĥ" u2="y" k="8" /> + <hkern u1="ĥ" u2="v" k="9" /> + <hkern u1="Ħ" u2="ï" k="-19" /> + <hkern u1="ħ" u2="y" k="8" /> + <hkern u1="ħ" u2="v" k="9" /> + <hkern u1="Ĩ" u2="ï" k="-19" /> + <hkern u1="Ī" u2="ï" k="-19" /> + <hkern u1="Ĭ" u2="ï" k="-19" /> + <hkern u1="Į" u2="ï" k="-19" /> + <hkern u1="İ" u2="ï" k="-19" /> + <hkern u1="Ķ" g2="v.sc" k="35" /> + <hkern u1="Ķ" u2="®" k="51" /> + <hkern u1="Ķ" u2="«" k="50" /> + <hkern u1="Ķ" u2="y" k="22" /> + <hkern u1="Ķ" u2="v" k="34" /> + <hkern u1="ķ" u2="y" k="18" /> + <hkern u1="ĸ" u2="y" k="18" /> + <hkern u1="Ĺ" g2="v.sc" k="28" /> + <hkern u1="Ĺ" u2="®" k="36" /> + <hkern u1="Ĺ" u2="«" k="16" /> + <hkern u1="Ĺ" u2="y" k="20" /> + <hkern u1="Ĺ" u2="v" k="40" /> + <hkern u1="Ĺ" u2="V" k="66" /> + <hkern u1="Ĺ" u2="?" k="15" /> + <hkern u1="ĺ" u2="®" k="25" /> + <hkern u1="ĺ" u2="«" k="10" /> + <hkern u1="ĺ" u2="y" k="15" /> + <hkern u1="ĺ" u2="v" k="19" /> + <hkern u1="Ļ" g2="v.sc" k="28" /> + <hkern u1="Ļ" u2="®" k="36" /> + <hkern u1="Ļ" u2="«" k="16" /> + <hkern u1="Ļ" u2="y" k="20" /> + <hkern u1="Ļ" u2="v" k="40" /> + <hkern u1="Ļ" u2="V" k="66" /> + <hkern u1="Ļ" u2="?" k="15" /> + <hkern u1="ļ" u2="®" k="25" /> + <hkern u1="ļ" u2="«" k="10" /> + <hkern u1="ļ" u2="y" k="15" /> + <hkern u1="ļ" u2="v" k="19" /> + <hkern u1="Ľ" g2="v.sc" k="28" /> + <hkern u1="Ľ" u2="®" k="36" /> + <hkern u1="Ľ" u2="«" k="16" /> + <hkern u1="Ľ" u2="y" k="20" /> + <hkern u1="Ľ" u2="v" k="40" /> + <hkern u1="Ľ" u2="V" k="66" /> + <hkern u1="Ľ" u2="?" k="15" /> + <hkern u1="ľ" g2="f_f_l" k="-39" /> + <hkern u1="ľ" g2="f_f_i" k="-39" /> + <hkern u1="ľ" g2="fl" k="-39" /> + <hkern u1="ľ" g2="fi" k="-39" /> + <hkern u1="ľ" g2="f_f" k="-39" /> + <hkern u1="ľ" u2="”" k="-74" /> + <hkern u1="ľ" u2="“" k="-74" /> + <hkern u1="ľ" u2="’" k="-74" /> + <hkern u1="ľ" u2="‘" k="-74" /> + <hkern u1="ľ" u2="ẅ" k="-25" /> + <hkern u1="ľ" u2="ẃ" k="-25" /> + <hkern u1="ľ" u2="ẁ" k="-25" /> + <hkern u1="ľ" u2="ȷ" k="-53" /> + <hkern u1="ľ" u2="ț" k="-44" /> + <hkern u1="ľ" u2="ŵ" k="-25" /> + <hkern u1="ľ" u2="ų" k="-11" /> + <hkern u1="ľ" u2="ű" k="-11" /> + <hkern u1="ľ" u2="ů" k="-11" /> + <hkern u1="ľ" u2="ŭ" k="-11" /> + <hkern u1="ľ" u2="ū" k="-11" /> + <hkern u1="ľ" u2="ũ" k="-11" /> + <hkern u1="ľ" u2="ŧ" k="-44" /> + <hkern u1="ľ" u2="ť" k="-44" /> + <hkern u1="ľ" u2="ţ" k="-44" /> + <hkern u1="ľ" u2="ř" k="-11" /> + <hkern u1="ľ" u2="ŗ" k="-11" /> + <hkern u1="ľ" u2="ŕ" k="-11" /> + <hkern u1="ľ" u2="ŋ" k="-11" /> + <hkern u1="ľ" u2="ň" k="-11" /> + <hkern u1="ľ" u2="ņ" k="-11" /> + <hkern u1="ľ" u2="ń" k="-11" /> + <hkern u1="ľ" u2="ł" k="-49" /> + <hkern u1="ľ" u2="ŀ" k="-49" /> + <hkern u1="ľ" u2="ľ" k="-49" /> + <hkern u1="ľ" u2="ļ" k="-49" /> + <hkern u1="ľ" u2="ĺ" k="-49" /> + <hkern u1="ľ" u2="ķ" k="-39" /> + <hkern u1="ľ" u2="ĵ" k="-53" /> + <hkern u1="ľ" u2="ı" k="-11" /> + <hkern u1="ľ" u2="į" k="-49" /> + <hkern u1="ľ" u2="ĭ" k="-49" /> + <hkern u1="ľ" u2="ī" k="-49" /> + <hkern u1="ľ" u2="ĩ" k="-49" /> + <hkern u1="ľ" u2="ħ" k="-39" /> + <hkern u1="ľ" u2="ĥ" k="-39" /> + <hkern u1="ľ" u2="þ" k="-39" /> + <hkern u1="ľ" u2="ü" k="-11" /> + <hkern u1="ľ" u2="û" k="-11" /> + <hkern u1="ľ" u2="ú" k="-11" /> + <hkern u1="ľ" u2="ù" k="-11" /> + <hkern u1="ľ" u2="ñ" k="-11" /> + <hkern u1="ľ" u2="ï" k="-49" /> + <hkern u1="ľ" u2="î" k="-49" /> + <hkern u1="ľ" u2="í" k="-49" /> + <hkern u1="ľ" u2="ì" k="-49" /> + <hkern u1="ľ" u2="}" k="-58" /> + <hkern u1="ľ" u2="y" k="-20" /> + <hkern u1="ľ" u2="x" k="-20" /> + <hkern u1="ľ" u2="w" k="-25" /> + <hkern u1="ľ" u2="v" k="-25" /> + <hkern u1="ľ" u2="u" k="-11" /> + <hkern u1="ľ" u2="t" k="-44" /> + <hkern u1="ľ" u2="r" k="-11" /> + <hkern u1="ľ" u2="p" k="-11" /> + <hkern u1="ľ" u2="n" k="-11" /> + <hkern u1="ľ" u2="m" k="-11" /> + <hkern u1="ľ" u2="l" k="-49" /> + <hkern u1="ľ" u2="k" k="-39" /> + <hkern u1="ľ" u2="j" k="-53" /> + <hkern u1="ľ" u2="i" k="-49" /> + <hkern u1="ľ" u2="h" k="-39" /> + <hkern u1="ľ" u2="f" k="-39" /> + <hkern u1="ľ" u2="b" k="-39" /> + <hkern u1="ľ" u2="]" k="-58" /> + <hkern u1="ľ" u2="?" k="-79" /> + <hkern u1="ľ" u2=")" k="-58" /> + <hkern u1="ľ" u2="'" k="-74" /> + <hkern u1="ľ" u2=""" k="-74" /> + <hkern u1="ľ" u2="!" k="-59" /> + <hkern u1="Ł" g2="v.sc" k="28" /> + <hkern u1="Ł" u2="®" k="36" /> + <hkern u1="Ł" u2="«" k="16" /> + <hkern u1="Ł" u2="y" k="20" /> + <hkern u1="Ł" u2="v" k="40" /> + <hkern u1="Ł" u2="V" k="66" /> + <hkern u1="Ł" u2="?" k="15" /> + <hkern u1="ł" u2="®" k="25" /> + <hkern u1="ł" u2="«" k="10" /> + <hkern u1="ł" u2="y" k="15" /> + <hkern u1="ł" u2="v" k="19" /> + <hkern u1="Ń" u2="ï" k="-19" /> + <hkern u1="ń" u2="y" k="8" /> + <hkern u1="ń" u2="v" k="9" /> + <hkern u1="Ņ" u2="ï" k="-19" /> + <hkern u1="ņ" u2="y" k="8" /> + <hkern u1="ņ" u2="v" k="9" /> + <hkern u1="Ň" u2="ï" k="-19" /> + <hkern u1="ň" u2="y" k="8" /> + <hkern u1="ň" u2="v" k="9" /> + <hkern g1="napostrophe" u2="y" k="8" /> + <hkern g1="napostrophe" u2="v" k="9" /> + <hkern u1="Ŋ" u2="ï" k="-19" /> + <hkern u1="ŋ" u2="y" k="8" /> + <hkern u1="ŋ" u2="v" k="9" /> + <hkern u1="Ō" u2="X" k="19" /> + <hkern u1="Ō" u2="V" k="14" /> + <hkern u1="ō" u2="y" k="10" /> + <hkern u1="ō" u2="x" k="13" /> + <hkern u1="ō" u2="v" k="8" /> + <hkern u1="Ŏ" u2="X" k="19" /> + <hkern u1="Ŏ" u2="V" k="14" /> + <hkern u1="ŏ" u2="y" k="10" /> + <hkern u1="ŏ" u2="x" k="13" /> + <hkern u1="ŏ" u2="v" k="8" /> + <hkern u1="Ő" u2="X" k="19" /> + <hkern u1="Ő" u2="V" k="14" /> + <hkern u1="ő" u2="y" k="10" /> + <hkern u1="ő" u2="x" k="13" /> + <hkern u1="ő" u2="v" k="8" /> + <hkern u1="Œ" g2="v.sc" k="12" /> + <hkern u1="Œ" u2="y" k="18" /> + <hkern u1="Œ" u2="v" k="18" /> + <hkern u1="œ" u2="y" k="9" /> + <hkern u1="œ" u2="x" k="7" /> + <hkern u1="œ" u2="v" k="7" /> + <hkern u1="Ŕ" u2="«" k="16" /> + <hkern u1="Ŕ" u2="V" k="14" /> + <hkern u1="ŕ" u2="?" k="-20" /> + <hkern u1="Ŗ" u2="«" k="16" /> + <hkern u1="Ŗ" u2="V" k="14" /> + <hkern u1="ŗ" u2="?" k="-20" /> + <hkern u1="Ř" u2="«" k="16" /> + <hkern u1="Ř" u2="V" k="14" /> + <hkern u1="ř" u2="?" k="-20" /> + <hkern u1="Ś" u2="y" k="5" /> + <hkern u1="Ś" u2="x" k="10" /> + <hkern u1="Ś" u2="v" k="8" /> + <hkern u1="ś" u2="v" k="5" /> + <hkern u1="Ŝ" u2="y" k="5" /> + <hkern u1="Ŝ" u2="x" k="10" /> + <hkern u1="Ŝ" u2="v" k="8" /> + <hkern u1="ŝ" u2="v" k="5" /> + <hkern u1="Ş" u2="y" k="5" /> + <hkern u1="Ş" u2="x" k="10" /> + <hkern u1="Ş" u2="v" k="8" /> + <hkern u1="ş" u2="v" k="5" /> + <hkern u1="Š" u2="y" k="5" /> + <hkern u1="Š" u2="x" k="10" /> + <hkern u1="Š" u2="v" k="8" /> + <hkern u1="š" u2="v" k="5" /> + <hkern u1="Ţ" g2="z.sc" k="24" /> + <hkern u1="Ţ" g2="x.sc" k="37" /> + <hkern u1="Ţ" g2="v.sc" k="48" /> + <hkern u1="Ţ" u2="ï" k="-29" /> + <hkern u1="Ţ" u2="«" k="45" /> + <hkern u1="Ţ" u2="y" k="66" /> + <hkern u1="Ţ" u2="x" k="24" /> + <hkern u1="Ţ" u2="v" k="66" /> + <hkern u1="Ţ" u2="?" k="-20" /> + <hkern u1="Ţ" u2=" " k="10" /> + <hkern u1="Ť" g2="z.sc" k="24" /> + <hkern u1="Ť" g2="x.sc" k="37" /> + <hkern u1="Ť" g2="v.sc" k="48" /> + <hkern u1="Ť" u2="ï" k="-29" /> + <hkern u1="Ť" u2="«" k="45" /> + <hkern u1="Ť" u2="y" k="66" /> + <hkern u1="Ť" u2="x" k="24" /> + <hkern u1="Ť" u2="v" k="66" /> + <hkern u1="Ť" u2="?" k="-20" /> + <hkern u1="Ť" u2=" " k="10" /> + <hkern u1="ť" u2="ķ" k="-32" /> + <hkern u1="ť" u2="ħ" k="-32" /> + <hkern u1="ť" u2="ĥ" k="-32" /> + <hkern u1="ť" u2="þ" k="-32" /> + <hkern u1="ť" u2="y" k="-24" /> + <hkern u1="ť" u2="x" k="-24" /> + <hkern u1="ť" u2="v" k="-29" /> + <hkern u1="ť" u2="k" k="-32" /> + <hkern u1="ť" u2="h" k="-32" /> + <hkern u1="ť" u2="b" k="-32" /> + <hkern u1="ť" u2="?" k="-93" /> + <hkern u1="ť" u2="!" k="-73" /> + <hkern u1="Ŧ" g2="z.sc" k="24" /> + <hkern u1="Ŧ" g2="x.sc" k="37" /> + <hkern u1="Ŧ" g2="v.sc" k="48" /> + <hkern u1="Ŧ" u2="—" k="45" /> + <hkern u1="Ŧ" u2="–" k="45" /> + <hkern u1="Ŧ" u2="ï" k="-29" /> + <hkern u1="Ŧ" u2="­" k="45" /> + <hkern u1="Ŧ" u2="«" k="45" /> + <hkern u1="Ŧ" u2="y" k="66" /> + <hkern u1="Ŧ" u2="x" k="24" /> + <hkern u1="Ŧ" u2="v" k="66" /> + <hkern u1="Ŧ" u2="?" k="-20" /> + <hkern u1="Ŧ" u2="-" k="45" /> + <hkern u1="Ŧ" u2=" " k="10" /> + <hkern u1="Ŵ" g2="z.sc" k="6" /> + <hkern u1="Ŵ" g2="x.sc" k="6" /> + <hkern u1="Ŵ" u2="®" k="3" /> + <hkern u1="Ŵ" u2="«" k="40" /> + <hkern u1="Ŵ" u2="y" k="3" /> + <hkern u1="Ŵ" u2="x" k="16" /> + <hkern u1="Ŵ" u2="v" k="5" /> + <hkern u1="Ŵ" u2=" " k="19" /> + <hkern u1="ŵ" u2="«" k="8" /> + <hkern u1="Ŷ" g2="z.sc" k="15" /> + <hkern u1="Ŷ" g2="x.sc" k="16" /> + <hkern u1="Ŷ" g2="v.sc" k="8" /> + <hkern u1="Ŷ" u2="®" k="10" /> + <hkern u1="Ŷ" u2="«" k="64" /> + <hkern u1="Ŷ" u2="y" k="24" /> + <hkern u1="Ŷ" u2="x" k="40" /> + <hkern u1="Ŷ" u2="v" k="25" /> + <hkern u1="Ŷ" u2=" " k="18" /> + <hkern u1="Ÿ" g2="z.sc" k="15" /> + <hkern u1="Ÿ" g2="x.sc" k="16" /> + <hkern u1="Ÿ" g2="v.sc" k="8" /> + <hkern u1="Ÿ" u2="®" k="10" /> + <hkern u1="Ÿ" u2="«" k="64" /> + <hkern u1="Ÿ" u2="y" k="24" /> + <hkern u1="Ÿ" u2="x" k="40" /> + <hkern u1="Ÿ" u2="v" k="25" /> + <hkern u1="Ÿ" u2=" " k="18" /> + <hkern u1="Ź" u2="y" k="18" /> + <hkern u1="Ż" u2="y" k="18" /> + <hkern u1="Ž" u2="y" k="18" /> + <hkern u1="Ǻ" g2="v.sc" k="14" /> + <hkern u1="Ǻ" u2="®" k="44" /> + <hkern u1="Ǻ" u2="«" k="15" /> + <hkern u1="Ǻ" u2="y" k="36" /> + <hkern u1="Ǻ" u2="v" k="38" /> + <hkern u1="Ǻ" u2="V" k="36" /> + <hkern u1="Ǻ" u2="?" k="40" /> + <hkern u1="ǻ" u2="y" k="6" /> + <hkern u1="ǻ" u2="v" k="6" /> + <hkern u1="Ǽ" g2="v.sc" k="12" /> + <hkern u1="Ǽ" u2="y" k="18" /> + <hkern u1="Ǽ" u2="v" k="18" /> + <hkern u1="ǽ" u2="y" k="9" /> + <hkern u1="ǽ" u2="x" k="7" /> + <hkern u1="ǽ" u2="v" k="7" /> + <hkern u1="ǿ" u2="x" k="8" /> + <hkern u1="Ș" u2="y" k="5" /> + <hkern u1="Ș" u2="x" k="10" /> + <hkern u1="Ș" u2="v" k="8" /> + <hkern u1="ș" u2="v" k="5" /> + <hkern u1="Ț" g2="z.sc" k="24" /> + <hkern u1="Ț" g2="x.sc" k="37" /> + <hkern u1="Ț" g2="v.sc" k="48" /> + <hkern u1="Ț" u2="ï" k="-29" /> + <hkern u1="Ț" u2="«" k="45" /> + <hkern u1="Ț" u2="y" k="66" /> + <hkern u1="Ț" u2="x" k="24" /> + <hkern u1="Ț" u2="v" k="66" /> + <hkern u1="Ț" u2="?" k="-20" /> + <hkern u1="Ț" u2=" " k="10" /> + <hkern u1="Ẁ" g2="z.sc" k="6" /> + <hkern u1="Ẁ" g2="x.sc" k="6" /> + <hkern u1="Ẁ" u2="®" k="3" /> + <hkern u1="Ẁ" u2="«" k="40" /> + <hkern u1="Ẁ" u2="y" k="3" /> + <hkern u1="Ẁ" u2="x" k="16" /> + <hkern u1="Ẁ" u2="v" k="5" /> + <hkern u1="Ẁ" u2=" " k="19" /> + <hkern u1="ẁ" u2="«" k="8" /> + <hkern u1="Ẃ" g2="z.sc" k="6" /> + <hkern u1="Ẃ" g2="x.sc" k="6" /> + <hkern u1="Ẃ" u2="®" k="3" /> + <hkern u1="Ẃ" u2="«" k="40" /> + <hkern u1="Ẃ" u2="y" k="3" /> + <hkern u1="Ẃ" u2="x" k="16" /> + <hkern u1="Ẃ" u2="v" k="5" /> + <hkern u1="Ẃ" u2=" " k="19" /> + <hkern u1="ẃ" u2="«" k="8" /> + <hkern u1="Ẅ" g2="z.sc" k="6" /> + <hkern u1="Ẅ" g2="x.sc" k="6" /> + <hkern u1="Ẅ" u2="®" k="3" /> + <hkern u1="Ẅ" u2="«" k="40" /> + <hkern u1="Ẅ" u2="y" k="3" /> + <hkern u1="Ẅ" u2="x" k="16" /> + <hkern u1="Ẅ" u2="v" k="5" /> + <hkern u1="Ẅ" u2=" " k="19" /> + <hkern u1="ẅ" u2="«" k="8" /> + <hkern u1="Ỳ" g2="z.sc" k="15" /> + <hkern u1="Ỳ" g2="x.sc" k="16" /> + <hkern u1="Ỳ" g2="v.sc" k="8" /> + <hkern u1="Ỳ" u2="®" k="10" /> + <hkern u1="Ỳ" u2="«" k="64" /> + <hkern u1="Ỳ" u2="y" k="24" /> + <hkern u1="Ỳ" u2="x" k="40" /> + <hkern u1="Ỳ" u2="v" k="25" /> + <hkern u1="Ỳ" u2=" " k="18" /> + <hkern u1="–" u2="Ŧ" k="45" /> + <hkern u1="–" u2="y" k="19" /> + <hkern u1="–" u2="x" k="40" /> + <hkern u1="–" u2="v" k="17" /> + <hkern u1="–" u2="X" k="46" /> + <hkern u1="–" u2="V" k="40" /> + <hkern u1="—" u2="Ŧ" k="45" /> + <hkern u1="—" u2="y" k="19" /> + <hkern u1="—" u2="x" k="40" /> + <hkern u1="—" u2="v" k="17" /> + <hkern u1="—" u2="X" k="46" /> + <hkern u1="—" u2="V" k="40" /> + <hkern u1="‘" u2="ï" k="-52" /> + <hkern u1="‘" u2="y" k="-5" /> + <hkern u1="‘" u2="v" k="-5" /> + <hkern u1="’" u2="ï" k="-52" /> + <hkern u1="‚" u2="y" k="50" /> + <hkern u1="‚" u2="v" k="64" /> + <hkern u1="‚" u2="X" k="-17" /> + <hkern u1="‚" u2="V" k="90" /> + <hkern u1="“" u2="ï" k="-52" /> + <hkern u1="“" u2="y" k="-5" /> + <hkern u1="“" u2="v" k="-5" /> + <hkern u1="”" u2="ï" k="-52" /> + <hkern u1="„" u2="y" k="50" /> + <hkern u1="„" u2="v" k="64" /> + <hkern u1="„" u2="X" k="-17" /> + <hkern u1="„" u2="V" k="90" /> + <hkern u1="•" u2="X" k="38" /> + <hkern u1="•" u2="V" k="31" /> + <hkern u1="…" u2=" " k="16" /> + <hkern u1="‹" u2="X" k="7" /> + <hkern u1="‹" u2="V" k="22" /> + <hkern u1="∙" u2="X" k="38" /> + <hkern u1="∙" u2="V" k="31" /> + <hkern g1="fl" u2="®" k="25" /> + <hkern g1="fl" u2="«" k="10" /> + <hkern g1="fl" u2="y" k="15" /> + <hkern g1="fl" u2="v" k="19" /> + <hkern g1="f_f_l" u2="®" k="25" /> + <hkern g1="f_f_l" u2="«" k="10" /> + <hkern g1="f_f_l" u2="y" k="15" /> + <hkern g1="f_f_l" u2="v" k="19" /> + <hkern g1="a.sc" g2="v.sc" k="30" /> + <hkern g1="b.sc" g2="ygrave.sc" k="6" /> + <hkern g1="b.sc" g2="ydieresis.sc" k="6" /> + <hkern g1="b.sc" g2="ycircumflex.sc" k="6" /> + <hkern g1="b.sc" g2="yacute.sc" k="6" /> + <hkern g1="b.sc" g2="y.sc" k="6" /> + <hkern g1="b.sc" g2="x.sc" k="6" /> + <hkern g1="d.sc" g2="x.sc" k="8" /> + <hkern g1="d.sc" g2="v.sc" k="10" /> + <hkern g1="f.sc" g2="jcircumflex.sc" k="50" /> + <hkern g1="f.sc" g2="aeacute.sc" k="44" /> + <hkern g1="f.sc" g2="ae.sc" k="44" /> + <hkern g1="f.sc" g2="aogonek.sc" k="14" /> + <hkern g1="f.sc" g2="aringacute.sc" k="14" /> + <hkern g1="f.sc" g2="aring.sc" k="14" /> + <hkern g1="f.sc" g2="abreve.sc" k="14" /> + <hkern g1="f.sc" g2="amacron.sc" k="14" /> + <hkern g1="f.sc" g2="adieresis.sc" k="14" /> + <hkern g1="f.sc" g2="atilde.sc" k="14" /> + <hkern g1="f.sc" g2="acircumflex.sc" k="14" /> + <hkern g1="f.sc" g2="aacute.sc" k="14" /> + <hkern g1="f.sc" g2="agrave.sc" k="14" /> + <hkern g1="f.sc" g2="j.sc" k="50" /> + <hkern g1="f.sc" g2="a.sc" k="14" /> + <hkern g1="l.sc" g2="v.sc" k="26" /> + <hkern g1="p.sc" g2="ygrave.sc" k="10" /> + <hkern g1="p.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="p.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="p.sc" g2="yacute.sc" k="10" /> + <hkern g1="p.sc" g2="jcircumflex.sc" k="70" /> + <hkern g1="p.sc" g2="aeacute.sc" k="70" /> + <hkern g1="p.sc" g2="ae.sc" k="70" /> + <hkern g1="p.sc" g2="aogonek.sc" k="28" /> + <hkern g1="p.sc" g2="aringacute.sc" k="28" /> + <hkern g1="p.sc" g2="aring.sc" k="28" /> + <hkern g1="p.sc" g2="abreve.sc" k="28" /> + <hkern g1="p.sc" g2="amacron.sc" k="28" /> + <hkern g1="p.sc" g2="adieresis.sc" k="28" /> + <hkern g1="p.sc" g2="atilde.sc" k="28" /> + <hkern g1="p.sc" g2="acircumflex.sc" k="28" /> + <hkern g1="p.sc" g2="aacute.sc" k="28" /> + <hkern g1="p.sc" g2="agrave.sc" k="28" /> + <hkern g1="p.sc" g2="y.sc" k="10" /> + <hkern g1="p.sc" g2="x.sc" k="15" /> + <hkern g1="p.sc" g2="j.sc" k="70" /> + <hkern g1="p.sc" g2="a.sc" k="28" /> + <hkern g1="q.sc" g2="ygrave.sc" k="10" /> + <hkern g1="q.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="q.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="q.sc" g2="yacute.sc" k="10" /> + <hkern g1="q.sc" g2="y.sc" k="10" /> + <hkern g1="r.sc" g2="v.sc" k="6" /> + <hkern g1="v.sc" g2="jcircumflex.sc" k="60" /> + <hkern g1="v.sc" g2="aeacute.sc" k="56" /> + <hkern g1="v.sc" g2="ae.sc" k="56" /> + <hkern g1="v.sc" g2="aogonek.sc" k="30" /> + <hkern g1="v.sc" g2="aringacute.sc" k="30" /> + <hkern g1="v.sc" g2="aring.sc" k="30" /> + <hkern g1="v.sc" g2="abreve.sc" k="30" /> + <hkern g1="v.sc" g2="amacron.sc" k="30" /> + <hkern g1="v.sc" g2="adieresis.sc" k="30" /> + <hkern g1="v.sc" g2="atilde.sc" k="30" /> + <hkern g1="v.sc" g2="acircumflex.sc" k="30" /> + <hkern g1="v.sc" g2="aacute.sc" k="30" /> + <hkern g1="v.sc" g2="agrave.sc" k="30" /> + <hkern g1="v.sc" g2="j.sc" k="60" /> + <hkern g1="v.sc" g2="a.sc" k="30" /> + <hkern g1="x.sc" g2="oslash.sc" k="6" /> + <hkern g1="x.sc" g2="ohungarumlaut.sc" k="6" /> + <hkern g1="x.sc" g2="obreve.sc" k="6" /> + <hkern g1="x.sc" g2="omacron.sc" k="6" /> + <hkern g1="x.sc" g2="odieresis.sc" k="6" /> + <hkern g1="x.sc" g2="otilde.sc" k="6" /> + <hkern g1="x.sc" g2="ocircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="oacute.sc" k="6" /> + <hkern g1="x.sc" g2="ograve.sc" k="6" /> + <hkern g1="x.sc" g2="gcommaaccent.sc" k="6" /> + <hkern g1="x.sc" g2="gdotaccent.sc" k="6" /> + <hkern g1="x.sc" g2="gbreve.sc" k="6" /> + <hkern g1="x.sc" g2="gcircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="ccedilla.sc" k="6" /> + <hkern g1="x.sc" g2="cdotaccent.sc" k="6" /> + <hkern g1="x.sc" g2="ccaron.sc" k="6" /> + <hkern g1="x.sc" g2="ccircumflex.sc" k="6" /> + <hkern g1="x.sc" g2="cacute.sc" k="6" /> + <hkern g1="x.sc" g2="q.sc" k="6" /> + <hkern g1="x.sc" g2="o.sc" k="6" /> + <hkern g1="x.sc" g2="g.sc" k="6" /> + <hkern g1="x.sc" g2="c.sc" k="6" /> + <hkern g1="agrave.sc" g2="v.sc" k="30" /> + <hkern g1="aacute.sc" g2="v.sc" k="30" /> + <hkern g1="acircumflex.sc" g2="v.sc" k="30" /> + <hkern g1="atilde.sc" g2="v.sc" k="30" /> + <hkern g1="adieresis.sc" g2="v.sc" k="30" /> + <hkern g1="amacron.sc" g2="v.sc" k="30" /> + <hkern g1="abreve.sc" g2="v.sc" k="30" /> + <hkern g1="aring.sc" g2="v.sc" k="30" /> + <hkern g1="aringacute.sc" g2="v.sc" k="30" /> + <hkern g1="aogonek.sc" g2="v.sc" k="30" /> + <hkern g1="dcaron.sc" g2="x.sc" k="8" /> + <hkern g1="dcaron.sc" g2="v.sc" k="10" /> + <hkern g1="dcroat.sc" g2="x.sc" k="8" /> + <hkern g1="dcroat.sc" g2="v.sc" k="10" /> + <hkern g1="eth.sc" g2="x.sc" k="8" /> + <hkern g1="eth.sc" g2="v.sc" k="10" /> + <hkern g1="lacute.sc" g2="v.sc" k="26" /> + <hkern g1="lcaron.sc" g2="v.sc" k="26" /> + <hkern g1="lcommaaccent.sc" g2="v.sc" k="26" /> + <hkern g1="lslash.sc" g2="v.sc" k="26" /> + <hkern g1="racute.sc" g2="v.sc" k="6" /> + <hkern g1="rcaron.sc" g2="v.sc" k="6" /> + <hkern g1="rcommaaccent.sc" g2="v.sc" k="6" /> + <hkern g1="thorn.sc" g2="ygrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="ydieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="ycircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="yacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="jcircumflex.sc" k="40" /> + <hkern g1="thorn.sc" g2="aeacute.sc" k="36" /> + <hkern g1="thorn.sc" g2="ae.sc" k="36" /> + <hkern g1="thorn.sc" g2="aogonek.sc" k="10" /> + <hkern g1="thorn.sc" g2="aringacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="aring.sc" k="10" /> + <hkern g1="thorn.sc" g2="abreve.sc" k="10" /> + <hkern g1="thorn.sc" g2="amacron.sc" k="10" /> + <hkern g1="thorn.sc" g2="adieresis.sc" k="10" /> + <hkern g1="thorn.sc" g2="atilde.sc" k="10" /> + <hkern g1="thorn.sc" g2="acircumflex.sc" k="10" /> + <hkern g1="thorn.sc" g2="aacute.sc" k="10" /> + <hkern g1="thorn.sc" g2="agrave.sc" k="10" /> + <hkern g1="thorn.sc" g2="y.sc" k="10" /> + <hkern g1="thorn.sc" g2="x.sc" k="10" /> + <hkern g1="thorn.sc" g2="j.sc" k="40" /> + <hkern g1="thorn.sc" g2="a.sc" k="10" /> + <hkern g1="four.prop" u2="…" k="-20" /> + <hkern g1="four.prop" u2="." k="-20" /> + <hkern g1="four.prop" u2="," k="-20" /> + <hkern g1="seven.prop" g2="four.prop" k="46" /> + <hkern g1="seven.prop" u2="…" k="60" /> + <hkern g1="seven.prop" u2="." k="60" /> + <hkern g1="seven.prop" u2="," k="60" /> + <hkern g1="four.onumprop" u2="…" k="-30" /> + <hkern g1="four.onumprop" u2="." k="-30" /> + <hkern g1="four.onumprop" u2="," k="-30" /> + <hkern g1="seven.onumprop" u2="…" k="20" /> + <hkern g1="seven.onumprop" u2="." k="20" /> + <hkern g1="seven.onumprop" u2="," k="20" /> + <hkern g1="q.alt01" u2="ȷ" k="-72" /> + <hkern g1="q.alt01" u2="ĵ" k="-72" /> + <hkern g1="q.alt01" u2="ģ" k="-24" /> + <hkern g1="q.alt01" u2="ġ" k="-24" /> + <hkern g1="q.alt01" u2="ğ" k="-24" /> + <hkern g1="q.alt01" u2="ĝ" k="-24" /> + <hkern g1="q.alt01" u2="p" k="-34" /> + <hkern g1="q.alt01" u2="j" k="-72" /> + <hkern g1="q.alt01" u2="g" k="-24" /> + <hkern g1="C.alt01" u2="X" k="17" /> + <hkern g1="C.alt01" u2="V" k="3" /> + <hkern g1="Cacute.alt01" u2="X" k="17" /> + <hkern g1="Cacute.alt01" u2="V" k="3" /> + <hkern g1="Ccircumflex.alt01" u2="X" k="17" /> + <hkern g1="Ccircumflex.alt01" u2="V" k="3" /> + <hkern g1="Ccaron.alt01" u2="X" k="17" /> + <hkern g1="Ccaron.alt01" u2="V" k="3" /> + <hkern g1="Cdotaccent.alt01" u2="X" k="17" /> + <hkern g1="Cdotaccent.alt01" u2="V" k="3" /> + <hkern g1="Ccedilla.alt01" u2="X" k="17" /> + <hkern g1="Ccedilla.alt01" u2="V" k="3" /> + <hkern g1="G.alt01" u2="X" k="19" /> + <hkern g1="G.alt01" u2="V" k="14" /> + <hkern g1="Gcircumflex.alt01" u2="X" k="19" /> + <hkern g1="Gcircumflex.alt01" u2="V" k="14" /> + <hkern g1="Gbreve.alt01" u2="X" k="19" /> + <hkern g1="Gbreve.alt01" u2="V" k="14" /> + <hkern g1="Gdotaccent.alt01" u2="X" k="19" /> + <hkern g1="Gdotaccent.alt01" u2="V" k="14" /> + <hkern g1="Gcommaaccent.alt01" u2="X" k="19" /> + <hkern g1="Gcommaaccent.alt01" u2="V" k="14" /> + <hkern g1="Z.alt01" u2="y" k="18" /> + <hkern g1="Zacute.alt01" u2="y" k="18" /> + <hkern g1="Zcaron.alt01" u2="y" k="18" /> + <hkern g1="Zdotaccent.alt01" u2="y" k="18" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="23" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="AE,AEacute" + k="25" /> + <hkern g1="C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01" + g2="J,Jcircumflex" + k="18" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="12" /> + <hkern g1="C,Ccedilla,Cacute,Ccircumflex,Cdotaccent,Ccaron" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="comma,period,ellipsis" + k="16" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="11" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="29" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="AE,AEacute" + k="30" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="J,Jcircumflex" + k="22" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="6" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="j.sc,jcircumflex.sc" + k="14" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="D,Eth,Dcaron,Dcroat" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="20" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="12" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,OE,AEacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="18" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="13" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="25" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="AE,AEacute" + k="28" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="J,Jcircumflex" + k="20" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + k="3" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="G,O,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + g2="ae.sc,aeacute.sc" + k="6" /> + <hkern g1="Oslash,Oslashacute" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="15" /> + <hkern g1="Oslash,Oslashacute" + g2="AE,AEacute" + k="28" /> + <hkern g1="J,IJ,Jcircumflex" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="J,IJ,Jcircumflex" + g2="AE,AEacute" + k="22" /> + <hkern g1="J,IJ,Jcircumflex" + g2="J,Jcircumflex" + k="18" /> + <hkern g1="J,IJ,Jcircumflex" + g2="j.sc,jcircumflex.sc" + k="10" /> + <hkern g1="J,IJ,Jcircumflex" + g2="ae.sc,aeacute.sc" + k="12" /> + <hkern g1="J,IJ,Jcircumflex" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="quoteright,quotedblright" + k="4" /> + <hkern g1="K,Kcommaaccent" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="25" /> + <hkern g1="K,Kcommaaccent" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="24" /> + <hkern g1="K,Kcommaaccent" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="13" /> + <hkern g1="K,Kcommaaccent" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="25" /> + <hkern g1="K,Kcommaaccent" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="periodcentered,bullet,uni2219" + k="40" /> + <hkern g1="K,Kcommaaccent" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="31" /> + <hkern g1="K,Kcommaaccent" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="12" /> + <hkern g1="K,Kcommaaccent" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="18" /> + <hkern g1="K,Kcommaaccent" + g2="guillemotright,guilsinglright" + k="9" /> + <hkern g1="K,Kcommaaccent" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="6" /> + <hkern g1="K,Kcommaaccent" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="3" /> + <hkern g1="K,Kcommaaccent" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="hyphen,uni00AD,endash,emdash" + k="19" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="comma,period,ellipsis" + k="-11" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="25" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="50" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="34" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + k="24" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="44" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="78" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="periodcentered,bullet,uni2219" + k="10" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="36" /> + <hkern g1="L,Lacute,Lcommaaccent,Lcaron,Lslash" + g2="guillemotright,guilsinglright" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="12" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="22" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="9" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="periodcentered,bullet,uni2219" + k="6" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="10" /> + <hkern g1="R,Racute,Rcommaaccent,Rcaron" + g2="guillemotright,guilsinglright" + k="5" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="hyphen,uni00AD,endash,emdash" + k="-20" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-12" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="5" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="10" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + g2="AE,AEacute" + k="8" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="hyphen,uni00AD,endash,emdash" + k="80" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="comma,period,ellipsis" + k="97" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="colon,semicolon" + k="16" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-21" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="quoteright,quotedblright" + k="-21" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="18" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="6" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="48" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="38" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="periodcentered,bullet,uni2219" + k="42" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="5" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="66" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="41" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="44" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="AE,AEacute" + k="81" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="J,Jcircumflex" + k="74" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="j.sc,jcircumflex.sc" + k="61" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="ae.sc,aeacute.sc" + k="47" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="guillemotright,guilsinglright" + k="10" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="54" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="60" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="36" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="35" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="oslash,oslashacute" + k="45" /> + <hkern g1="T,Tcommaaccent,Tcaron,Tbar,uni021A" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="60" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="comma,period,ellipsis" + k="17" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="AE,AEacute" + k="22" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="J,Jcircumflex" + k="13" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="j.sc,jcircumflex.sc" + k="10" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="ae.sc,aeacute.sc" + k="12" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="10" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="28" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="comma,period,ellipsis" + k="79" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="colon,semicolon" + k="23" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="35" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="11" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="33" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="periodcentered,bullet,uni2219" + k="24" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="6" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="15" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="4" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="5" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="12" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="20" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="AE,AEacute" + k="72" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="J,Jcircumflex" + k="64" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="j.sc,jcircumflex.sc" + k="42" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="ae.sc,aeacute.sc" + k="46" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="26" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="8" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="guillemotright,guilsinglright" + k="14" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="33" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="32" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="28" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="8" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="10" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="oslash,oslashacute" + k="41" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="18" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="Oslash,Oslashacute" + k="13" /> + <hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + g2="z,zacute,zdotaccent,zcaron" + k="18" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="hyphen,uni00AD,endash,emdash" + k="80" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="comma,period,ellipsis" + k="100" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="colon,semicolon" + k="40" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="25" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="38" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="6" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" + k="13" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="56" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="periodcentered,bullet,uni2219" + k="62" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="14" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="41" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="21" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="28" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="48" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="AE,AEacute" + k="83" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="J,Jcircumflex" + k="67" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="j.sc,jcircumflex.sc" + k="50" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="ae.sc,aeacute.sc" + k="55" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="42" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="guillemotright,guilsinglright" + k="35" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="56" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="49" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="41" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="b.sc,d.sc,e.sc,f.sc,h.sc,i.sc,k.sc,l.sc,m.sc,n.sc,p.sc,r.sc,dcaron.sc,dcroat.sc,eth.sc,egrave.sc,eacute.sc,ecircumflex.sc,ecaron.sc,edieresis.sc,emacron.sc,ebreve.sc,edotaccent.sc,eogonek.sc,hcircumflex.sc,hbar.sc,igrave.sc,iacute.sc,ibreve.sc,icircumflex.sc,itilde.sc,idieresis.sc,imacron.sc,idotaccent.sc,iogonek.sc,kcommaaccent.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc,ldot.sc,nacute.sc,ncaron.sc,ntilde.sc,ncommaaccent.sc,racute.sc,rcaron.sc,rcommaaccent.sc,thorn.sc,ij.sc,eng.sc" + k="12" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="28" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="oslash,oslashacute" + k="63" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="39" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="Oslash,Oslashacute" + k="26" /> + <hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + g2="z,zacute,zdotaccent,zcaron" + k="36" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="12" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="18" /> + <hkern g1="Z,Zacute,Zdotaccent,Zcaron,Z.alt01,Zacute.alt01,Zcaron.alt01,Zdotaccent.alt01" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="18" /> + <hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="6" /> + <hkern g1="b,p,thorn" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="b,p,thorn" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="2" /> + <hkern g1="b,p,thorn" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="5" /> + <hkern g1="c,ccedilla,cacute,ccircumflex,cdotaccent,ccaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="3" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="2" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,oe,aeacute" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="6" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="h,m,n,ntilde,hcircumflex,hbar,nacute,ncommaaccent,ncaron,napostrophe,eng" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="9" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="hyphen,uni00AD,endash,emdash" + k="30" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="11" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="10" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="12" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="10" /> + <hkern g1="k,kcommaaccent,kgreenlandic" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="hyphen,uni00AD,endash,emdash" + k="15" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="comma,period,ellipsis" + k="-16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="34" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="quoteright,quotedblright" + k="27" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="asterisk,ordfeminine,ordmasculine,trademark" + k="23" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="12" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="3" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="13" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="16" /> + <hkern g1="l,lacute,lcommaaccent,lslash,fl,f_f_l" + g2="guillemotright,guilsinglright" + k="5" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="3" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="3" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="7" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="hyphen,uni00AD,endash,emdash" + k="10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="comma,period,ellipsis" + k="50" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="quoteright,quotedblright" + k="-10" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="18" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="8" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae,amacron,abreve,aogonek,aringacute,aeacute" + k="24" /> + <hkern g1="r,racute,rcommaaccent,rcaron" + g2="oslash,oslashacute" + k="13" /> + <hkern g1="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="4" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="hyphen,uni00AD,endash,emdash" + k="9" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="comma,period,ellipsis" + k="-13" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-6" /> + <hkern g1="t,tcommaaccent,tbar,uni021B" + g2="quoteright,quotedblright" + k="-6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="hyphen,uni00AD,endash,emdash" + k="11" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="comma,period,ellipsis" + k="40" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="quoteright,quotedblright" + k="-5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,cacute,ccircumflex,cdotaccent,ccaron,emacron,ebreve,edotaccent,eogonek,ecaron,omacron,obreve,ohungarumlaut,oe" + k="8" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="d,q,eth,dcaron,dcroat,a.alt01,agrave.alt01,aacute.alt01,acircumflex.alt01,atilde.alt01,adieresis.alt01,amacron.alt01,abreve.alt01,aring.alt01,aringacute.alt01,aogonek.alt01" + k="6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="g,gcircumflex,gbreve,gdotaccent,gcommaaccent" + k="6" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent" + k="5" /> + <hkern g1="w,wcircumflex,wgrave,wacute,wdieresis" + g2="oslash,oslashacute" + k="7" /> + <hkern g1="dcaron,tcaron" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="-88" /> + <hkern g1="dcaron,tcaron" + g2="quoteright,quotedblright" + k="-88" /> + <hkern g1="dcaron,tcaron" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="-43" /> + <hkern g1="dcaron,tcaron" + g2="l,lacute,lcommaaccent,lcaron,ldot,lslash" + k="-62" /> + <hkern g1="dcaron,tcaron" + g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek" + k="-14" /> + <hkern g1="dcaron,tcaron" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-48" /> + <hkern g1="dcaron,tcaron" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-29" /> + <hkern g1="dcaron,tcaron" + g2="m,n,p,r,ntilde,dotlessi,nacute,ncommaaccent,ncaron,eng,racute,rcommaaccent,rcaron" + k="-14" /> + <hkern g1="dcaron,tcaron" + g2="parenright,bracketright,braceright" + k="-67" /> + <hkern g1="dcaron,tcaron" + g2="b,h,k,thorn,hcircumflex,hbar,kcommaaccent" + k="-52" /> + <hkern g1="dcaron,tcaron" + g2="i,igrave,iacute,icircumflex,idieresis,itilde,imacron,ibreve,iogonek" + k="-62" /> + <hkern g1="dcaron,tcaron" + g2="j,jcircumflex,dotlessj" + k="-62" /> + <hkern g1="comma,period,ellipsis" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="60" /> + <hkern g1="comma,period,ellipsis" + g2="quoteright,quotedblright" + k="60" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="80" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="28" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="80" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="11" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="13" /> + <hkern g1="hyphen,uni00AD,endash,emdash" + g2="J,Jcircumflex" + k="50" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="42" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="24" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="62" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="26" /> + <hkern g1="periodcentered,bullet,uni2219" + g2="J,Jcircumflex" + k="35" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="10" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="14" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="35" /> + <hkern g1="guillemotleft,guilsinglleft" + g2="J,Jcircumflex" + k="3" /> + <hkern g1="parenleft,bracketleft,braceleft" + g2="j,jcircumflex,dotlessj" + k="-24" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="comma,period,ellipsis" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-21" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="-8" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="-5" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="72" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="J,Jcircumflex" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="j.sc,jcircumflex.sc" + k="60" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quoteright,quotedblright" + g2="comma,period,ellipsis" + k="70" /> + <hkern g1="quoteright,quotedblright" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="12" /> + <hkern g1="quoteright,quotedblright" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="-21" /> + <hkern g1="quoteright,quotedblright" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="7" /> + <hkern g1="quoteright,quotedblright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="78" /> + <hkern g1="quoteright,quotedblright" + g2="J,Jcircumflex" + k="65" /> + <hkern g1="quoteright,quotedblright" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Cacute,Ccircumflex,Cdotaccent,Ccaron,Gcircumflex,Gbreve,Gdotaccent,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,C.alt01,Cacute.alt01,Ccircumflex.alt01,Ccaron.alt01,Cdotaccent.alt01,Ccedilla.alt01,G.alt01,Gcircumflex.alt01,Gbreve.alt01,Gdotaccent.alt01,Gcommaaccent.alt01" + k="10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="T,Tcommaaccent,Tcaron,Tbar,uni021A" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" + k="74" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="Y,Yacute,Ycircumflex,Ydieresis,Ygrave" + k="100" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="f,f_f,fi,fl,f_f_i,f_f_l" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="t,tcommaaccent,tcaron,tbar,uni021B" + k="40" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="w,wcircumflex,wgrave,wacute,wdieresis" + k="60" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute" + k="-10" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="j,jcircumflex,dotlessj" + k="-50" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quotedbl,quotesingle,quoteleft,quotedblleft" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="quoteright,quotedblright" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="26" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="16" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="30" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="8" /> + <hkern g1="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="4" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="8" /> + <hkern g1="d.sc,dcaron.sc,dcroat.sc,eth.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="10" /> + <hkern g1="g.sc,o.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="10" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="ae.sc,aeacute.sc" + k="14" /> + <hkern g1="j.sc,jcircumflex.sc,ij.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + k="6" /> + <hkern g1="k.sc,kcommaaccent.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="6" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + k="26" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + k="18" /> + <hkern g1="l.sc,lacute.sc,lcaron.sc,lcommaaccent.sc,lslash.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="28" /> + <hkern g1="r.sc,racute.sc,rcaron.sc,rcommaaccent.sc" + g2="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + k="10" /> + <hkern g1="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + g2="ae.sc,aeacute.sc" + k="6" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="j.sc,jcircumflex.sc" + k="48" /> + <hkern g1="t.sc,tcaron.sc,tcommaaccent.sc,tbar.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="26" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="j.sc,jcircumflex.sc" + k="8" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="ae.sc,aeacute.sc" + k="8" /> + <hkern g1="u.sc,ugrave.sc,uacute.sc,ucircumflex.sc,utilde.sc,udieresis.sc,umacron.sc,ubreve.sc,uring.sc,uhungarumlaut.sc,uogonek.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="8" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="j.sc,jcircumflex.sc" + k="34" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="ae.sc,aeacute.sc" + k="34" /> + <hkern g1="w.sc,wacute.sc,wcircumflex.sc,wdieresis.sc,wgrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="16" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="c.sc,g.sc,o.sc,q.sc,cacute.sc,ccircumflex.sc,ccaron.sc,cdotaccent.sc,ccedilla.sc,gcircumflex.sc,gbreve.sc,gdotaccent.sc,gcommaaccent.sc,ograve.sc,oacute.sc,ocircumflex.sc,otilde.sc,odieresis.sc,omacron.sc,obreve.sc,ohungarumlaut.sc,oslash.sc" + k="10" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="j.sc,jcircumflex.sc" + k="40" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="ae.sc,aeacute.sc" + k="50" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="a.sc,agrave.sc,aacute.sc,acircumflex.sc,atilde.sc,adieresis.sc,amacron.sc,abreve.sc,aring.sc,aringacute.sc,aogonek.sc" + k="30" /> + <hkern g1="y.sc,yacute.sc,ycircumflex.sc,ydieresis.sc,ygrave.sc" + g2="s.sc,sacute.sc,scircumflex.sc,scaron.sc,scedilla.sc,scommaaccent.sc,germandbls.sc" + k="6" /> + </font> +</defs></svg> diff --git a/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b140c73b8e4886a49c37f2715bc6c840afff9d33 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf differ diff --git a/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff new file mode 100644 index 0000000000000000000000000000000000000000..7c4120adcbe8e6878e79d015ff909f49462a62e0 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff differ diff --git a/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8e2dac0b57042b32e6cc95239d9542235cd4d049 Binary files /dev/null and b/themes/simpletip/assets/css/fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2 differ diff --git a/themes/simpletip/assets/css/styles-legacy.css b/themes/simpletip/assets/css/styles-legacy.css new file mode 100644 index 0000000000000000000000000000000000000000..be70544877b0971336fc8abd97b4539ba2e205ad --- /dev/null +++ b/themes/simpletip/assets/css/styles-legacy.css @@ -0,0 +1,28 @@ +.loadingPosts{ + display: -webkit-box !important; + width: 30% !important; +} +.postText{ + margin-top: 1em; + max-width: 100% !important; +} + +@media (min-width: 1366px) { + #postImage{ + width: 43em; + } +} +.postText{ + margin-left: 1em; + max-width: 75%; + margin-top: -0.5em; +} +.serverInfo{ + display: -webkit-box !important +} +.serverInfo img{ + margin-top: 4px; +} +.serverInfo p { + margin-top: 5px; +} \ No newline at end of file diff --git a/themes/simpletip/assets/css/styles.css b/themes/simpletip/assets/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..a181715516fa5a6d511b853256aa817475cb3fe6 --- /dev/null +++ b/themes/simpletip/assets/css/styles.css @@ -0,0 +1,116 @@ +@font-face {font-family: "DINNextLTPro-Condensed"; + src: url("fonts/13ba9c94a7f164d315c9044db6d513ef.eot"); /* IE9*/ + src: url("fonts/13ba9c94a7f164d315c9044db6d513ef.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.woff") format("woff"), /* chrome、firefox */ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/13ba9c94a7f164d315c9044db6d513ef.svg#DINNextLTPro-Condensed") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "DINNextLTPro-MediumCond"; + src: url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot"); /* IE9*/ + src: url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.woff") format("woff"), /* chrome、firefox */ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/7f05d48f4a28cc6bd2f81faa3c7551f1.svg#DINNextLTPro-MediumCond") format("svg"); /* iOS 4.1- */ +} +body{ + background-color: black; +} +.background{ + background-size: cover; + position:absolute; + top:0px; + right:0px; + bottom:0px; + left:0px; + z-index: -1; +} + +.serverLogo{ + position: fixed; + width: 20%; + left: 0; + right: 0; + top: 5%; + margin: auto; +} + +.rightBottom{ + position: fixed; + bottom: 0; + right: 0; +} +.gmodLoadingBar{ + width: 400px; + height: 66px; + margin: 10px; + background-color: #6f7277; +} + +.bottomContent{ + position: fixed; + bottom: 0; + width: 100%; + height: 10em; + margin-left: -0.5%; + border-style: solid; + border-bottom-width: 0; + border-top-width: 8px; + border-left-width: 0; + border-right-width: 0; +} + +.postText{ + margin-left: 1em; + max-width: 75%; +} +.postText h1{ + color: white; + font-family: "DINNextLTPro-MediumCond"; + font-size: 2.5em; + font-weight: 400; + + margin-top: -1.2em; + text-transform: uppercase; +} +.postText p{ + color: white; + font-family: "DINNextLTPro-Condensed"; + font-size: 1.3em; + + margin-top: -0.5em; +} + +.leftInfos{ + position: fixed; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); + left: 3%; + margin: 0; + + display: flex; + flex-direction: column; +} +.leftInfos img{ + height: 56px; +} + +.serverInfo{ + width: auto; + height: 64px; + color: white; + font-family: "DINNextLTPro-Condensed"; + padding-left: 32px; + padding-right: 32px; + border-radius: 32px; + margin-top: 1em; + + display: flex; + flex-direction: row; + align-items: center; +} +.serverInfo p{ + font-size: 36px; +} \ No newline at end of file diff --git a/themes/simpletip/assets/images/location.png b/themes/simpletip/assets/images/location.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac243f691d3684125ac31664c92bed479a283d4 Binary files /dev/null and b/themes/simpletip/assets/images/location.png differ diff --git a/themes/simpletip/assets/images/themeTopImage.jpg b/themes/simpletip/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd1025529ec5a153dec1f32ab85b2c14ba15359f Binary files /dev/null and b/themes/simpletip/assets/images/themeTopImage.jpg differ diff --git a/themes/simpletip/assets/images/user.png b/themes/simpletip/assets/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc32ca73ae8351b5e5ed88ec2b4b64a46adace3 Binary files /dev/null and b/themes/simpletip/assets/images/user.png differ diff --git a/themes/simpletip/assets/includes/customFeatures.php b/themes/simpletip/assets/includes/customFeatures.php new file mode 100644 index 0000000000000000000000000000000000000000..3ca7c628dfc666876a69580a9c7d066fd1bd5568 --- /dev/null +++ b/themes/simpletip/assets/includes/customFeatures.php @@ -0,0 +1,13 @@ +<?php +function customSidebar (){ + echo ('<a href="themeFeature.php?p=themeSettings" class="list-group-item list-group-item-action bg-light">Paramètres du thème</a>'); + echo ('<a href="themeFeature.php?p=importAssets" class="list-group-item list-group-item-action bg-light">Import theme asssets</a>'); +} +function customPage($page){ + return "../themes/".getParameters("theme")."/assets/includes/".$page; +} +if (getParameters("stMainColor") == null){ + $sql = "INSERT INTO settings (parameter, value) VALUES ('stMainColor', ?), ('stSecondaryColor', ?), ('stThirdColor', ?)"; + $bdd->prepare($sql)->execute(["#3d3d3d", "#24aae4", "#3d3d3d"]); +} +?> \ No newline at end of file diff --git a/themes/simpletip/assets/includes/importAssets b/themes/simpletip/assets/includes/importAssets new file mode 100644 index 0000000000000000000000000000000000000000..ea6b56c980e8214a99d8df667bb6973381f19903 --- /dev/null +++ b/themes/simpletip/assets/includes/importAssets @@ -0,0 +1,26 @@ +<?php +if (isset($_POST["submit"])) { + $files = ["https://i.imgur.com/7bnQJrD.jpg", "https://i.imgur.com/esQVtxL.jpg", "https://i.imgur.com/0AH58yl.jpg", "https://i.imgur.com/wLLoi1V.jpg"]; + $filesnames = array(); + foreach ($files as $fileurl) { + uploadfiles($fileurl); + array_push($filesnames, str_replace("https://i.imgur.com/", "", $fileurl)); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([json_encode($filesnames)]); + } + //Actualisation de la page + header('Location: ?p=importAssets&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Importer les assets du thème</h1> + <p>Ici tu peux importer les images de fond du thème. ^^</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Images de fond importées avec succès!</div>'); + } + ?> + <form method="post" action=""> + <button type="submit" name="submit" class="btn btn-success my-2">Importer</button> + </form> +</div> \ No newline at end of file diff --git a/themes/simpletip/assets/includes/themeSettings b/themes/simpletip/assets/includes/themeSettings new file mode 100644 index 0000000000000000000000000000000000000000..6f2c8351bbe4bdc23a1ff623563efc9877b1670e --- /dev/null +++ b/themes/simpletip/assets/includes/themeSettings @@ -0,0 +1,52 @@ +<?php +if (isset($_POST["submit"])) { + //Modification des paramètres + $sql = "UPDATE settings SET value = ? WHERE parameter = 'stMainColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor1"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'stSecondaryColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor2"]]); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'stThirdColor'"; + $bdd->prepare($sql)->execute([$_POST["inputColor3"]]); + //Actualisation de la page + header('Location: ?p=themeSettings&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Paramètres du thème</h1> + <p>Ici tu peux changer les couleurs de l'écran de chargement.</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Paramètres mis à jour avec succès!</div>'); + } + ?> + <form method="post" action=""> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor1">Couleur #1</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("stMainColor")?>;"></div> + </div> + <input type="text" id="inputColor1" name="inputColor1" class="form-control" value="<?=getParameters("stMainColor")?>" placeholder="Couleur #1" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor2">Couleur #2</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("stSecondaryColor")?>;"></div> + </div> + <input type="text" id="inputColor2" name="inputColor2" class="form-control" value="<?=getParameters("stSecondaryColor")?>" placeholder="Couleur #2" required="required"> + </div> + </div> + <div class="form-group"> + <div class="form-label-group"> + <div class="d-flex"> + <label for="inputColor3">Couleur #3</label> + <div class="ml-2" style="height: 28px;width: 60px; background-color: <?=getParameters("stThirdColor")?>;"></div> + </div> + <input type="text" id="inputColor3" name="inputColor3" class="form-control" value="<?=getParameters("stThirdColor")?>" placeholder="Couleur #3" required="required"> + </div> + </div> + <button type="submit" name="submit" value="update" class="btn btn-success my-2">Mettre à jour</button> + </form> +</div> \ No newline at end of file diff --git a/themes/simpletip/index.php b/themes/simpletip/index.php new file mode 100644 index 0000000000000000000000000000000000000000..6039c47a700f02f4d12ceb1557bf271e3bb73bac --- /dev/null +++ b/themes/simpletip/index.php @@ -0,0 +1,168 @@ +<?php +//Détection du naviguateur et récupération de l'ip +function getUserIpAddr(){ + if(!empty($_SERVER['HTTP_CLIENT_IP'])){ + //ip from share internet + $ip = $_SERVER['HTTP_CLIENT_IP']; + }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ + //ip pass from proxy + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + }else{ + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; +} +$browser = new Browser(); +if( $browser->getBrowser() == (Browser::BROWSER_CHROME OR Browser::BROWSER_EDGE) && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; //Version non Chromium de Garry's Mod +} else { + $oldWebBrowser = true; //Naviguateur & Version Chromium de Garry's Mod +} + +//Récupération du contenu depuis la base de donnée +$backgroundImage = json_decode(getParameters("backgroundImages")); + + //////////////////////////////// + // Récupère les posts/Astuces // +//////////////////////////////// +$res=$bdd->query("SELECT * FROM posts"); +$result = $res->fetchAll(); +$loadingPostsText = array(); //Création d'une liste +foreach ( $result as $row ) {; //Boucle qui s'éxecute à chaque post/Astuce + array_push($loadingPostsText, "<h1>".$row[1]."</h1>".$row[2]); //Assemble le titre et le texte du post/astuce (j'allais pas créer une variable juste pour le titre mdr) +} +$loadingPostsText = json_encode($loadingPostsText); //Encode en JSON pour pouvoir récupérer la variable plus bas +?> + +<!DOCTYPE html> +<html> +<head> + <title><?=getParameters("siteName")?></title> + <meta charset="utf-8"> + + <link rel="stylesheet" href="themes/<?=getParameters("theme")?>/assets/css/styles.css"> + <?php + if ($oldWebBrowser == true) { + echo ('<link rel="stylesheet" href="themes/'.getParameters("theme").'/assets/css/styles-legacy.css">'); + echo (''); + } + ?> + <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +</head> +<body> + <audio id="backMusic" preload="auto"></audio> + <!-- Fond --> + <div class="background"></div> + <img class="serverLogo" src="<?=getParameters("serverLogo")?>"> + + + <div class="bottomContent" style="background-color: <?=getParameters("stMainColor")?>; border-color: <?=getParameters("stSecondaryColor")?>;"> + <div class="postText"></div> + </div> + + <div class="rightBottom"> + <div class="gmodLoadingBar"></div> + </div> + + <div class="leftInfos"> + <div class="serverInfo" style="background-color: <?=getParameters("stThirdColor")?>;"> + <img src="themes/<?=getParameters("theme")?>/assets/images/user.png"> + <p><?=$serverInfos['players'].'/'.$serverInfos['places']?> Joueurs</p> + </div> + <div class="serverInfo" style="background-color: <?=getParameters("stThirdColor")?>;"> + <img src="themes/<?=getParameters("theme")?>/assets/images/location.png"> + <p><?=$serverInfos['map']?></p> + </div> + </div> + + <script type="text/javascript"> + var backgroundImages = <?=getParameters("backgroundImages")?>; + + //1s = 1000 ms + var timeBackChange = <?=getParameters("timeBackChange")?>; + var timePostChange = <?=getParameters("timePostChange")?>; + + //Il est important de mettre le même nombre d'images que de tips, et dans le bon ordre. + var loadingPostsText = <?=$loadingPostsText?>; + + var playlist = <?=getParameters("musics")?>; + + //Permet de générer un nombre aléatoire entre 0 et un nombre défini + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + //////////////////////// + // Partie backgrounds // + //////////////////////// + var i = getRandomInt(backgroundImages.length); //Prend comme valeur le nombre d'éléments que contient la liste + var b = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + $(".background").css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + setInterval(function () { + b = i; + i = getRandomInt(backgroundImages.length); + while (i == b) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + i = getRandomInt(backgroundImages.length); + } + $(".background").fadeOut("slow", function () { + $(this).css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + $(this).fadeIn("slow"); + }); + }, timeBackChange); + + ////////////////////////// + // Partie Posts/astuces // + ////////////////////////// + var o = getRandomInt(loadingPostsText.length); //Prend comme valeur le nombre d'éléments que contient la liste + var c = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + + <?php + if ($oldWebBrowser == true) { ?> + $(".postText").html("<h1>Hep hep hep!</h1><p>Il semblerait que tu n'utilises pas la Bêta Chromium de Garry's Mod!<br>Le naviguateur intégré est obsolète et ertains éléments risquent de en pas s'afficher correctement. Penses à faire le changement!</p>"); + <?php } else { ?> + $(".postText").html(loadingPostsText[0]); + <?php } ?> + + setInterval(function () { + c = o; + o = getRandomInt(loadingPostsText.length); + while (o == c) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + o = getRandomInt(loadingPostsText.length); + } + + $(".postText").fadeOut("slow", function () { + $(".postText").html(loadingPostsText[c]); + $(this).fadeIn("slow"); + }); + + }, timePostChange); + + $(document).ready(function() { + var backMusic = document.getElementById("backMusic"); + backMusic.volume = 0.3; + backMusic.controls = false; + + + function player(x) { + var i = 0; + backMusic.src = playlist[x]; // x is the index number of the playlist array + backMusic.load(); // use the load method when changing src + backMusic.play(); + backMusic.onended = function() { // Once the initial file is played it plays the rest of the files + /* This would be better as a 'for' loop */ + i++; + if (i > 2) { // ... Repeat + i = 0; // ^ + } // ^ + backMusic.src = playlist[i]; // Rinse, ^ + backMusic.load(); // Lather, ^ + backMusic.play(); // and.....^ + } + } + player(0); // Call the player() function at 0 index of playlist array + }); + + + </script> +</body> +</html> \ No newline at end of file diff --git a/themes/simpletip/theme.json b/themes/simpletip/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..786684dbceb56ce8b77783b302d403cc1c9a4884 --- /dev/null +++ b/themes/simpletip/theme.json @@ -0,0 +1,11 @@ +{ + "name": "simpletip", + "showname": "Simple tip", + "version": "1.0", + "compatible": "1.1c", + "author": "SofianeLasri", + "description": "Pourquoi se compliquer la vie? Un simple design suffis amplement. :D", + "index": "index.php", + "features": ["dynamicBackgrounds", "tips", "musics"], + "include": "assets/includes/customFeatures.php" +} \ No newline at end of file diff --git a/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.eot b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.eot new file mode 100644 index 0000000000000000000000000000000000000000..484be64f3ae1eff2d13520086cb8bcb58b33f797 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.eot differ diff --git a/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.svg b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.svg new file mode 100644 index 0000000000000000000000000000000000000000..1aa2fce7640d237dad84bb68369165b9079f2b6e --- /dev/null +++ b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.svg @@ -0,0 +1,2632 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Aug 27 11:41:50 2019 + By www + Copyright (c)2014 Talbot Type. All Rights Reserved +</metadata> +<defs> +<font id="Kamerik205-Thin" horiz-adv-x="1419" > + <font-face + font-family="Kamerik 205" + font-weight="100" + font-stretch="normal" + units-per-em="2048" + panose-1="2 11 4 3 3 6 0 2 0 4" + ascent="1638" + descent="-410" + x-height="1186" + cap-height="1536" + bbox="-49 -418 2757 1892" + underline-thickness="57" + underline-position="-148" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name=".notdef" horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name="glyph1" horiz-adv-x="0" + /> + <glyph glyph-name="glyph2" horiz-adv-x="682" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="552" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="280" +d="M111 14q0 12 9 21.5t21 9.5t21.5 -9.5t9.5 -21.5t-9.5 -21t-21.5 -9t-21 9t-9 21zM123 1536h35l-4 -1188h-27z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="301" +d="M102 1286v250h31v-250h-31zM168 1286v250h31v-250h-31z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1269" +d="M41 575v35h371l65 316h-436v35h444l123 575h35l-123 -575h314l120 575h35l-121 -575h361v-35h-367l-67 -316h434v-35h-441l-124 -575h-33l119 575h-312l-123 -575h-34l122 575h-362zM444 610h314l69 316h-315z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="1001" +d="M82 381h35q0 -155 114 -268t269 -113t269 113t114 268q0 156 -116.5 269.5t-272.5 113.5q-169 0 -287.5 116.5t-118.5 284.5q0 165 112 281.5t277 124.5v102h35v-102q162 -8 273.5 -124.5t111.5 -281.5h-35q0 156 -106.5 263.5t-261.5 107.5t-262 -108t-107 -263 +t106.5 -260.5t262.5 -105.5q171 0 298.5 -125t127.5 -293q0 -163 -120 -285.5t-282 -130.5v-104h-35v104q-165 8 -283 130t-118 286z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="1138" +d="M82 1290q0 117 81.5 199t198.5 82q73 0 135 -35t99 -94q19 -28 51 -46t66 -18q40 0 74 22.5t53 59.5l45 111l30 -15l-661 -1591l-31 15l578 1388q-45 -25 -88 -25q-41 0 -82 23q10 -31 10 -76q0 -115 -81.5 -196.5t-197.5 -81.5q-117 0 -198.5 81t-81.5 197zM119 1290 +q0 -100 71 -171.5t172 -71.5q100 0 171 71.5t71 171.5q0 101 -71 173.5t-171 72.5q-101 0 -172 -72t-71 -174zM498 244q0 117 81.5 198.5t198.5 81.5q116 0 197.5 -81.5t81.5 -198.5q0 -116 -81.5 -197.5t-197.5 -81.5q-117 0 -198.5 81.5t-81.5 197.5zM535 244 +q0 -101 71 -172.5t172 -71.5q100 0 171 71.5t71 172.5t-71 173t-171 72q-101 0 -172 -72t-71 -173z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="1314" +d="M82 463q0 173 107.5 308t273.5 175q-92 34 -149.5 116.5t-57.5 184.5q0 133 95 228.5t229 95.5q132 0 226.5 -95.5t94.5 -228.5t-94.5 -227t-226.5 -94q-192 0 -326.5 -135.5t-134.5 -327.5t134.5 -327.5t326.5 -135.5t327 135.5t135 327.5v278q0 91 63.5 155.5 +t151.5 64.5v-35q-75 0 -127.5 -55t-52.5 -130v-522q0 -75 52.5 -129.5t127.5 -54.5v-35q-88 0 -151.5 64.5t-63.5 154.5v60q-58 -139 -183 -226.5t-279 -87.5q-135 0 -249.5 66.5t-181.5 181t-67 250.5zM293 1247q0 -120 84 -203t203 -83q120 0 202 83t82 203 +q0 119 -82.5 204t-201.5 85q-118 0 -202.5 -85t-84.5 -204z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="235" +d="M102 1286v250h31v-250h-31z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="552" +d="M164 592q0 262 73.5 519t208.5 460h46q-138 -203 -214.5 -460t-76.5 -519q0 -260 77 -516.5t214 -460.5h-46q-135 203 -208.5 459t-73.5 518z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="552" +d="M61 -385q137 204 214 460.5t77 516.5q0 262 -76.5 519t-214.5 460h45q135 -204 209 -461t74 -518t-74 -517t-209 -460h-45z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="739" +d="M164 1210l180 99l-180 96l18 33l174 -107l-2 205h35l-6 -205l174 107l18 -33l-178 -96l178 -99l-18 -32l-174 106l6 -205h-35l2 205l-174 -106z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="1392" +d="M102 578v34h578v576h35v-576h575v-34h-575v-578h-35v578h-578z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="327" +d="M72 27q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-144q0 -26 -18 -44.5t-44 -18.5h-8v35h8q11 0 20 8t9 20v101h-6q-19 0 -31 12t-12 31z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="950" +d="M143 578v34h664v-34h-664z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="327" +d="M72 25q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="944" +d="M123 -20l665 1591l33 -15l-665 -1591z" /> + <glyph glyph-name="zero" unicode="0" horiz-adv-x="1226" +d="M106 471v592q0 138 68 255t185 185t255 68q137 0 253.5 -68t184.5 -185t68 -255v-592q0 -209 -148.5 -357.5t-357.5 -148.5q-138 0 -255 68t-185 184.5t-68 253.5zM141 471q0 -128 63.5 -236.5t172.5 -171.5t237 -63q127 0 235.5 63t172 171.5t63.5 236.5v592 +q0 129 -63.5 238t-172 172t-235.5 63q-195 0 -334 -138.5t-139 -334.5v-592z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="456" +d="M82 1372v37l217 127h35v-1536h-35v1495z" /> + <glyph glyph-name="two" unicode="2" horiz-adv-x="1161" +d="M82 1012v67q0 216 140.5 354t357.5 138q219 0 359 -138t140 -354q0 -115 -51 -219t-135 -182l-709 -643h863v-35h-916v35l739 672q77 70 124.5 167.5t47.5 204.5q0 203 -129.5 330t-332.5 127q-202 0 -332.5 -127t-130.5 -330v-67h-35z" /> + <glyph glyph-name="three" unicode="3" horiz-adv-x="1206" +d="M78 393h35q0 -172 133 -282.5t354 -110.5q226 0 356.5 104.5t130.5 288.5q0 189 -131.5 291t-355.5 102h-86v35h86q202 0 319 92t117 267q0 169 -115.5 262.5t-320.5 93.5q-201 0 -318.5 -99t-117.5 -257h-35q0 173 128 282t343 109q220 0 346.5 -103t126.5 -288 +q0 -160 -84.5 -254t-243.5 -121q182 -25 280.5 -130.5t98.5 -281.5q0 -199 -141 -313.5t-383 -114.5q-236 0 -379 120.5t-143 307.5z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="1245" +d="M66 401v35l835 1100h39v-1100h240v-35h-240v-401h-35v401h-839zM109 436h796v1041z" /> + <glyph glyph-name="five" unicode="5" horiz-adv-x="1206" +d="M78 489h35q0 -134 65.5 -246.5t177.5 -177.5t244 -65q133 0 245 65t177 177.5t65 246.5q0 201 -142.5 344.5t-344.5 143.5q-118 0 -221 -53.5t-170 -145.5l-35 8l133 750h664v-35h-635l-115 -653q74 77 172.5 120.5t206.5 43.5q143 0 264 -70.5t190.5 -191t69.5 -261.5 +q0 -143 -70 -263.5t-190.5 -190.5t-263.5 -70q-142 0 -262.5 70t-190 190.5t-69.5 263.5z" /> + <glyph glyph-name="six" unicode="6" horiz-adv-x="1210" +d="M82 489q0 159 88 293l504 754h41l-412 -621q134 97 301 97q143 0 264 -70.5t190.5 -191t69.5 -261.5q0 -143 -70 -263.5t-190.5 -190.5t-263.5 -70q-142 0 -262.5 70t-190 190.5t-69.5 263.5zM119 489q0 -134 65 -246.5t176.5 -177.5t243.5 -65q100 0 190 38.5 +t155.5 103.5t104 156t38.5 191q0 201 -143 344.5t-345 143.5q-132 0 -243.5 -65.5t-176.5 -178t-65 -244.5z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="1105" +d="M53 1501v35h991v-37l-626 -1499h-37l627 1501h-955z" /> + <glyph glyph-name="eight" unicode="8" horiz-adv-x="1210" +d="M82 393q0 169 100 278t279 134q-157 26 -242.5 123t-85.5 252q0 185 126.5 288t346.5 103t346.5 -103t126.5 -288q0 -155 -85 -252t-242 -123q179 -25 278.5 -134t99.5 -278q0 -199 -141 -313.5t-383 -114.5t-383 114.5t-141 313.5zM119 393q0 -184 130.5 -288.5 +t356.5 -104.5q227 0 357.5 104.5t130.5 288.5t-133.5 288.5t-354.5 104.5t-354 -104.5t-133 -288.5zM170 1180q0 -168 118.5 -263.5t317.5 -95.5t317.5 95.5t118.5 263.5q0 169 -115.5 262.5t-320.5 93.5t-320.5 -93.5t-115.5 -262.5z" /> + <glyph glyph-name="nine" unicode="9" horiz-adv-x="1210" +d="M82 1047q0 143 70 263.5t190.5 190.5t263.5 70q142 0 262.5 -70t190 -190.5t69.5 -263.5q0 -159 -88 -293l-503 -754h-41l411 621q-134 -97 -301 -97q-143 0 -264 70.5t-190.5 191t-69.5 261.5zM119 1047q0 -201 142.5 -344.5t344.5 -143.5q99 0 189 39t155 104.5 +t103.5 155.5t38.5 189q0 134 -65 246.5t-177 177.5t-244 65q-133 0 -245 -65t-177 -177.5t-65 -246.5z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="327" +d="M72 25q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29zM72 1159q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="327" +d="M72 27q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-144q0 -26 -18 -44.5t-44 -18.5h-8v35h8q11 0 20 8t9 20v101h-6q-19 0 -31 12t-12 31zM72 1159q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="864" +d="M82 575v33l700 578v-45l-665 -549l665 -549v-45z" /> + <glyph glyph-name="equal" unicode="=" horiz-adv-x="1392" +d="M102 401v35h1188v-35h-1188zM102 752v34h1188v-34h-1188z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="864" +d="M82 -2v45l666 549l-666 549v45l700 -578v-33z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="1210" +d="M82 1047q0 143 69.5 263.5t190 190.5t262.5 70q143 0 263.5 -70t190.5 -190.5t70 -263.5q0 -212 -147.5 -363.5t-359.5 -157.5v-198h-35v231h18q202 0 345 143.5t143 344.5q0 100 -38.5 191t-104 156t-155.5 103.5t-190 38.5q-132 0 -244 -64.5t-177.5 -177t-65.5 -247.5 +h-35zM573 14q0 12 9.5 21.5t21.5 9.5q13 0 23 -9.5t10 -21.5q0 -13 -9.5 -21.5t-23.5 -8.5q-12 0 -21.5 8.5t-9.5 21.5z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="1789" +d="M82 768q0 217 108 402t293 293t402 108t402 -108t293 -293t108 -402v-260q0 -81 -56.5 -137t-136.5 -56t-136 56t-56 137v86q-52 -126 -164.5 -202.5t-253.5 -76.5q-189 0 -322 132t-133 321t133 321t322 132t320.5 -132t131.5 -321v-260q0 -67 46.5 -112.5t111.5 -45.5 +t111.5 45.5t46.5 112.5v260q0 209 -103 385.5t-279.5 279.5t-385.5 103q-208 0 -384.5 -103t-279 -279.5t-102.5 -385.5t102.5 -385.5t279 -279.5t384.5 -103q186 0 344 82l14 -33q-168 -84 -358 -84q-217 0 -402 108t-293 293t-108 402zM467 768q0 -173 122.5 -295.5 +t295.5 -122.5t295.5 122.5t122.5 295.5t-122.5 295.5t-295.5 122.5t-295.5 -122.5t-122.5 -295.5z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="1386" +d="M31 0l647 1536h35l643 -1536h-37l-170 401h-911l-168 -401h-39zM252 436h883l-441 1051z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="1355" +d="M123 0v1536h723q148 0 254 -112t106 -265q0 -118 -69.5 -214t-178.5 -136q137 -32 226.5 -143.5t89.5 -253.5q0 -165 -114 -284.5t-277 -127.5h-760zM158 35h706q156 0 264.5 110t108.5 267q0 156 -108.5 264t-264.5 108h-706v-749zM158 819h671q141 0 240.5 100 +t99.5 240q0 142 -99.5 242t-240.5 100h-671v-682z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="1718" +d="M72 768q0 217 107.5 402t292.5 293t402 108q270 0 483.5 -162t289.5 -414h-37q-73 236 -276.5 388.5t-459.5 152.5q-155 0 -297 -61t-244.5 -163.5t-163 -245t-60.5 -298.5t60.5 -298.5t163 -245t244.5 -163.5t297 -61q257 0 460 151.5t276 389.5h37 +q-76 -252 -289.5 -414t-483.5 -162q-217 0 -402 108t-292.5 293t-107.5 402z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="1486" +d="M123 0v1536h524q155 0 297.5 -61t245.5 -163.5t164 -245t61 -298.5q0 -155 -61 -297.5t-164 -245.5t-245.5 -164t-297.5 -61h-524zM158 35h489q198 0 366.5 98t266.5 266.5t98 368.5q0 148 -58 284t-156 234t-233.5 156.5t-283.5 58.5h-489v-1466z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="1312" +d="M123 0v1536h1118v-35h-1083v-715h942v-34h-942v-717h1083v-35h-1118z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="1234" +d="M123 0v1536h1081v-35h-1046v-717h907v-34h-907v-750h-35z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="1748" +d="M72 768q0 217 107.5 402t292.5 293t402 108q252 0 456.5 -143t293.5 -371h-39q-86 214 -279 346.5t-432 132.5q-208 0 -384.5 -103t-278.5 -279.5t-102 -385.5t102 -385.5t278.5 -279.5t384.5 -103q143 0 274 59t227 159t154 239t62 293h-717v34h752v-784h-35v524 +q-73 -247 -270 -403t-447 -156q-217 0 -402 108t-292.5 293t-107.5 402z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="1433" +d="M123 0v1536h35v-750h1118v750h35v-1536h-35v752h-1118v-752h-35z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="280" +d="M123 0v1536h35v-1536h-35z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="1140" +d="M41 453h35q0 -203 125 -328t329 -125q202 0 327.5 125t125.5 328v1083h35v-1083q0 -217 -135.5 -352.5t-352.5 -135.5q-218 0 -353.5 135.5t-135.5 352.5z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="1370" +d="M123 0v1536h35v-1133l1132 1133h49l-768 -768l768 -768h-49l-743 743l-389 -389v-354h-35z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="1200" +d="M123 0v1536h35v-1501h1011v-35h-1046z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="1781" +d="M123 0v1536h35l733 -1491l733 1491h35v-1536h-35v1458l-715 -1458h-35l-716 1458v-1458h-35z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="1396" +d="M123 0v1536h35l1081 -1477v1477h35v-1536h-35l-1081 1477v-1477h-35z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="1748" +d="M72 768q0 154 56.5 295t158.5 250q113 121 264.5 189.5t322.5 68.5q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108t-402 108t-292.5 293t-107.5 402zM109 768q0 -209 102 -385.5t278.5 -279.5t384.5 -103t384.5 103t279 279.5t102.5 385.5 +t-102.5 385.5t-279 279.5t-384.5 103t-384.5 -103t-278.5 -279.5t-102 -385.5z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="1345" +d="M123 0v1536h688q192 0 327.5 -135.5t135.5 -327.5t-135.5 -327.5t-327.5 -135.5h-653v-610h-35zM158 645h653q177 0 301.5 125.5t124.5 302.5t-124.5 302.5t-301.5 125.5h-653v-856z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="1728" +d="M72 784q0 160 62.5 305.5t167.5 251t250.5 168t305.5 62.5t306 -62.5t252 -168t168.5 -251t62.5 -305.5q0 -265 -158.5 -471t-405.5 -278h564v-35h-789q-160 0 -305.5 62t-250.5 167t-167.5 250t-62.5 305zM109 784q0 -205 100 -377t272 -272t377 -100q153 0 292.5 59 +t240 159t160 239t59.5 292t-59.5 292.5t-160 240t-240 160t-292.5 59.5t-292 -59.5t-239 -160t-159 -240t-59 -292.5z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="1355" +d="M123 0v1536h688q192 0 327.5 -135.5t135.5 -327.5q0 -176 -117.5 -307t-290.5 -154l308 -612h-39l-306 610h-671v-610h-35zM158 645h653q177 0 301.5 125.5t124.5 302.5t-124.5 302.5t-301.5 125.5h-653v-856z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="1210" +d="M82 383h37q0 -111 65 -199t175.5 -136t244.5 -48q133 0 245.5 51t177.5 139t65 193q0 97 -33.5 168t-90 113.5t-129.5 72t-154 48.5t-161.5 37.5t-153.5 45t-129.5 64.5t-90 102.5t-33.5 153.5q0 159 142 271t345 112q206 0 348 -106t142 -275h-35q0 101 -61 180.5 +t-164.5 122.5t-229.5 43q-189 0 -319.5 -101.5t-130.5 -246.5q0 -82 33.5 -141t89.5 -94t129.5 -59.5t154 -42.5t161 -38t154 -52.5t129.5 -78t89.5 -121.5t33.5 -178q0 -113 -70.5 -209.5t-191.5 -152.5t-262 -56q-145 0 -263.5 51.5t-188.5 148t-70 218.5z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="1247" +d="M31 1501v35h1186v-35h-576v-1501h-35v1501h-575z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="1431" +d="M123 559v977h35v-977q0 -114 44 -217.5t119 -178.5t178.5 -119t217.5 -44q113 0 216 44t178 119t119 178.5t44 217.5v977h35v-977q0 -161 -79 -298t-215.5 -216.5t-297.5 -79.5t-298 79.5t-216.5 216.5t-79.5 298z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="1388" +d="M31 1536h39l626 -1487l623 1487h39l-645 -1536h-35z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="1839" +d="M31 1536h37l419 -1470l416 1470h35l418 -1470l416 1470h36l-436 -1536h-33l-419 1470l-416 -1470h-37z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="1263" +d="M31 0l579 768l-579 768h43l559 -739l557 739h43l-578 -768l578 -768h-43l-557 739l-559 -739h-43z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="1300" +d="M31 1536h45l575 -752l576 752h43l-600 -784v-752h-35v752z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1234" +d="M41 0v37l1108 1464h-1108v35h1153v-37l-1108 -1464h1108v-35h-1153z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="505" +d="M164 -350v1886h280v-35h-245v-1816h245v-35h-280z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="944" +d="M123 1556l33 15l665 -1591l-33 -15z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="505" +d="M61 -315h246v1816h-246v35h281v-1886h-281v35z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="1222" +d="M123 770l473 766h35l469 -766h-41l-447 729l-448 -729h-41z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="1062" +d="M0 -186h1186v-52h-1186v52z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="718" +d="M184 1516v55l351 -107v-16z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="1462" +d="M123 0v1536h35v-735q65 187 228 303.5t366 116.5q127 0 243.5 -49.5t200.5 -133.5t134 -200.5t50 -243.5q0 -128 -50 -244.5t-134 -201t-200 -134t-244 -49.5q-203 0 -366 117.5t-228 304.5v-387h-35zM158 594q0 -161 79.5 -298t216.5 -216.5t298 -79.5q120 0 229.5 47 +t188.5 126.5t126 189.5t47 231t-47 230.5t-126 189t-188.5 126t-229.5 46.5q-161 0 -298 -79t-216.5 -215.5t-79.5 -297.5z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="1378" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q203 0 366 -117t228 -303h-37q-65 171 -217 278t-340 107q-160 0 -296.5 -79t-216 -215.5t-79.5 -297.5t79.5 -298t216 -216.5t296.5 -79.5q188 0 340 107t217 278h37q-65 -186 -228 -303t-366 -117q-170 0 -315 84.5 +t-229.5 229.5t-84.5 315z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="1462" +d="M82 594q0 170 84.5 314.5t230 228.5t316.5 84q202 0 364.5 -117t227.5 -303v735h34v-1536h-34v387q-65 -187 -227.5 -304.5t-364.5 -117.5q-128 0 -245 49.5t-201.5 134t-134.5 201t-50 244.5zM119 594q0 -161 79.5 -298t216.5 -216.5t298 -79.5q160 0 296.5 79.5 +t216 216.5t79.5 298t-79.5 297.5t-216 215.5t-296.5 79q-161 0 -298 -79t-216.5 -215.5t-79.5 -297.5z" /> + <glyph glyph-name="e" unicode="e" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5v-16h-1218q5 -158 85.5 -291t215 -210t291.5 -77q174 0 317.5 93t216.5 245h37q-73 -167 -227.5 -270t-343.5 -103q-170 0 -315 84.5t-229.5 229.5t-84.5 315zM119 612 +h1181q-5 159 -84 290.5t-213 207.5t-292 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="606" +d="M41 1151v35h139v80q0 132 69 201t200 69h116v-35h-116q-234 0 -234 -235v-80h350v-35h-350v-1151h-35v1151h-139z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="1193" +d="M74 -43q0 107 57 182q-57 42 -57 107q0 93 101.5 141.5t275.5 58.5q-112 45 -183 147t-71 226q0 166 117.5 284t283.5 118q95 0 178 -41.5t139 -114.5q8 66 57 111t115 45h25v-35h-25q-57 0 -97 -40t-40 -97q0 -34 13 -60q36 -80 36 -170q0 -166 -117.5 -282.5 +t-283.5 -116.5q-487 0 -487 -174q0 -50 43 -80q128 131 444 131q243 0 382.5 -83.5t139.5 -256.5q0 -174 -139.5 -258t-382.5 -84q-119 0 -213.5 19.5t-165 60t-108 107t-37.5 155.5zM111 -43q0 -158 129 -232.5t358 -74.5q149 0 255 30.5t168 100t62 176.5 +q0 156 -128.5 230.5t-356.5 74.5t-357.5 -74.5t-129.5 -230.5zM233 819q0 -152 107 -258t258 -106q152 0 258.5 106t106.5 258q0 154 -106.5 260.5t-258.5 106.5q-151 0 -258 -107t-107 -260z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="1257" +d="M123 0v1536h35v-635q56 140 196 230t301 90q209 0 344.5 -135.5t135.5 -344.5v-741h-35v741q0 193 -126 319t-319 126q-129 0 -243.5 -63t-184 -171.5t-69.5 -234.5v-717h-35z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="280" +d="M115 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM123 0v1186h35v-1186h-35z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="471" +d="M-16 -315h106q101 0 162 62t61 163v1276h35v-1276q0 -115 -72 -187.5t-186 -72.5h-106v35zM305 1544q0 11 7.5 19t17.5 8t18 -8t8 -19q0 -10 -7.5 -17t-18.5 -7t-18 7t-7 17z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="1085" +d="M123 0v1536h35v-1202l852 852h51l-594 -592l594 -594h-51l-568 569l-284 -284v-285h-35z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="280" +d="M123 0v1536h35v-1536h-35z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="1781" +d="M123 0v1186h35v-197q47 104 152.5 168t226.5 64q132 0 232 -77.5t122 -197.5q37 119 149.5 197t245.5 78q164 0 268.5 -104t104.5 -267v-850h-35v850q0 148 -94.5 242t-243.5 94q-150 0 -263.5 -105.5t-113.5 -251.5v-829h-35v829q0 150 -95 253.5t-242 103.5 +q-97 0 -184.5 -47.5t-141 -130.5t-53.5 -179v-829h-35z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="1257" +d="M123 0v1186h35v-285q56 140 196 230t301 90q209 0 344.5 -135.5t135.5 -344.5v-741h-35v741q0 193 -126 319t-319 126q-129 0 -243.5 -63t-184 -171.5t-69.5 -234.5v-717h-35z" /> + <glyph glyph-name="o" unicode="o" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="1462" +d="M123 -350v1536h35v-387q65 187 227.5 304.5t364.5 117.5q171 0 316 -84t229.5 -229t84.5 -316q0 -170 -84.5 -314.5t-229.5 -228.5t-316 -84q-202 0 -364.5 117t-227.5 303v-735h-35zM158 592q0 -161 79.5 -297.5t216 -215.5t296.5 -79q161 0 297.5 79t216 215.5 +t79.5 297.5q0 121 -47 231t-126 189.5t-189 126.5t-231 47q-160 0 -296.5 -79.5t-216 -216.5t-79.5 -298z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="1462" +d="M82 592q0 128 50 244.5t134.5 201t201.5 134t245 49.5q202 0 364.5 -117.5t227.5 -304.5v387h34v-1536h-34v735q-65 -186 -227.5 -303t-364.5 -117q-171 0 -316.5 84t-230 228.5t-84.5 314.5zM119 592q0 -161 79.5 -297.5t216.5 -215.5t298 -79q160 0 296.5 79t216 215.5 +t79.5 297.5t-79.5 298t-216 216.5t-296.5 79.5q-161 0 -298 -79.5t-216.5 -216.5t-79.5 -298z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="608" +d="M123 0v1186h35v-232q53 124 160 195.5t241 71.5h19v-35h-19q-166 0 -283.5 -117.5t-117.5 -284.5v-784h-35z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="1069" +d="M82 305h35q0 -60 25.5 -111.5t67 -86.5t96 -59.5t113 -36t116.5 -11.5q189 0 302 82t113 221q0 77 -28.5 132t-77 85.5t-111 50t-132 31t-138.5 23t-131.5 31t-111 50t-77 85t-28.5 131.5q0 133 118 216t302 83q116 0 209 -35.5t149.5 -106t56.5 -164.5h-35 +q0 122 -109 196.5t-271 74.5q-168 0 -275.5 -73t-107.5 -191q0 -70 28.5 -119.5t77 -76.5t111 -44t132 -28t138.5 -23t131.5 -34.5t111 -56t77 -94t28.5 -143.5q0 -153 -125 -245.5t-327 -92.5q-195 0 -324 91.5t-129 248.5z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="606" +d="M41 1151v35h139v268h35v-268h350v-35h-350v-883q0 -233 234 -233h116v-35h-116q-131 0 -200 69t-69 199v883h-139z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="1257" +d="M123 444v742h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-209 0 -344 135t-135 344z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="1191" +d="M31 1186h39l526 -1141l526 1141h39l-547 -1186h-36z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="1675" +d="M31 1186h37l376 -1127l377 1127h37l375 -1127l375 1127h37l-396 -1186h-35l-374 1128l-377 -1128h-35z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="1095" +d="M31 0l493 594l-493 592h45l471 -565l473 565h45l-496 -592l496 -594h-45l-473 565l-471 -565h-45z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="1191" +d="M31 1186h39l524 -1141l528 1141h39l-710 -1536h-39l163 354z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="1026" +d="M41 0v35l899 1116h-899v35h944v-35l-899 -1116h899v-35h-944z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="645" +d="M164 575v35q79 0 135.5 56.5t56.5 136.5v506q0 94 66.5 160.5t161.5 66.5v-37q-80 0 -136.5 -55.5t-56.5 -134.5v-506q0 -69 -38 -125.5t-99 -83.5q61 -27 99 -84t38 -125v-508q0 -79 56.5 -135.5t136.5 -56.5v-35q-95 0 -161.5 67t-66.5 160v508q0 78 -56.5 134 +t-135.5 56z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="526" +d="M246 -350v1886h35v-1886h-35z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="645" +d="M61 -315q80 0 136.5 56.5t56.5 135.5v508q0 68 38 125t99 84q-61 27 -99 83.5t-38 125.5v506q0 79 -56.5 134.5t-136.5 55.5v37q95 0 161.5 -66.5t66.5 -160.5v-506q0 -80 56.5 -136.5t135.5 -56.5v-35q-79 0 -135.5 -56t-56.5 -134v-508q0 -93 -66.5 -160t-161.5 -67v35 +z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="917" +d="M123 526q0 76 54.5 130.5t129.5 54.5q53 0 96.5 -30.5t71.5 -80.5q51 -90 135 -90q61 0 104.5 43.5t43.5 105.5h37q0 -75 -55 -129.5t-130 -54.5q-53 0 -97.5 31t-70.5 80q-22 39 -57.5 64.5t-77.5 25.5q-63 0 -106 -44t-43 -106h-35z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="1024" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="280" +d="M111 1522q0 12 9 21t21 9t21.5 -9t9.5 -21t-9.5 -21.5t-21.5 -9.5t-21 9.5t-9 21.5zM123 0l4 1188h27l4 -1188h-35z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="1378" +d="M82 594q0 167 81.5 309t221.5 226.5t307 89.5v143h35v-141q197 -6 355.5 -122.5t222.5 -297.5h-37q-65 171 -217 278t-340 107q-160 0 -296.5 -79t-216 -215.5t-79.5 -297.5t79.5 -298t216 -216.5t296.5 -79.5q188 0 340 107t217 278h37q-64 -182 -222 -298t-356 -122 +v-139h-35v141q-166 5 -306.5 90t-222 227.5t-81.5 309.5z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="1296" +d="M82 -8l102 98q88 94 88 215v447h-190v34h190v312q0 212 129.5 342.5t339.5 130.5q212 0 342.5 -130.5t130.5 -342.5h-34q0 196 -121 317t-318 121q-194 0 -314 -121t-120 -317v-312h613v-34h-613v-447q0 -76 -35 -151q92 49 202 32.5t188 -96.5q91 -89 216 -89t216 89 +q86 89 86 215h34q0 -143 -96 -239q-100 -100 -240.5 -100t-240.5 100q-89 91 -214.5 91t-213.5 -89l-103 -101z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="1433" +d="M123 25l186 186q-153 163 -153 383q0 217 151 381l-184 186l24 25l185 -187q164 154 385 154q108 0 207 -41t176 -113l186 187l25 -25l-187 -186q154 -164 154 -381q0 -219 -154 -383l187 -186l-25 -25l-186 186q-76 -72 -175 -111.5t-208 -39.5q-222 0 -383 151 +l-187 -186zM193 594q0 -106 41.5 -203.5t111.5 -167.5t167.5 -111.5t203.5 -41.5t203.5 41.5t167.5 111.5t111.5 167.5t41.5 203.5t-41.5 203.5t-111.5 167.5t-167.5 111.5t-203.5 41.5t-203.5 -41.5t-167.5 -111.5t-111.5 -167.5t-41.5 -203.5z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="1122" +d="M31 1536h41l489 -735l488 735h43l-361 -541h275v-34h-297l-127 -193h424v-35h-426v-733h-35v733h-426v35h420l-127 193h-293v34h270z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="280" +d="M123 -98v592h35v-592h-35zM123 698v594h35v-594h-35z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="1007" +d="M102 -47h35q0 -137 105 -220t262 -83q155 0 259.5 83t104.5 220t-104.5 220t-259.5 83q-171 0 -286.5 92.5t-115.5 245.5q0 121 74 202t199 117q-120 34 -196.5 121.5t-76.5 198.5q0 150 116 244t286 94q111 0 202 -41t145 -119t54 -178h-35q0 137 -105.5 220t-260.5 83 +q-157 0 -261 -82.5t-104 -220.5q0 -126 106.5 -213.5t258.5 -87.5q170 0 285.5 -93t115.5 -245q0 -122 -74.5 -204.5t-199.5 -117.5q126 -34 200 -115t74 -204q0 -152 -115.5 -245t-285.5 -93t-286 93t-116 245zM139 594q0 -138 104 -220.5t261 -82.5q155 0 259.5 83 +t104.5 220q0 136 -104.5 219.5t-259.5 83.5q-156 0 -260.5 -83.5t-104.5 -219.5z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="401" +d="M31 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM317 1544q0 10 8.5 18.5t18.5 8.5t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18z" /> + <glyph glyph-name="copyright" unicode="©" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM109 594q0 -123 47.5 -234.5t128 -192t191.5 -128t233 -47.5q164 0 302.5 80.5t219 219t80.5 302.5 +q0 122 -47.5 233.5t-128 191.5t-192 127.5t-234.5 47.5q-122 0 -233 -47.5t-191.5 -127.5t-128 -191.5t-47.5 -233.5zM289 594q0 173 123.5 296.5t296.5 123.5q176 0 299 -123l-25 -25q-113 113 -274 113q-158 0 -270.5 -112.5t-112.5 -272.5q0 -161 112 -274t271 -113 +t274 112l25 -24q-123 -123 -299 -123q-174 0 -297 123t-123 299z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="729" +d="M82 1137q0 188 227 188h281v61q0 166 -228 166q-102 0 -163.5 -37t-61.5 -112h-16q0 83 66.5 125.5t174.5 42.5q114 0 179 -45t65 -140v-425h-16v157q-32 -75 -105 -125.5t-163 -50.5q-118 0 -179 54t-61 141zM100 1137q0 -79 57 -127.5t165 -48.5q104 0 186 72t82 171 +v103h-281q-209 0 -209 -170z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="735" +d="M82 594l332 332v-49l-283 -283l283 -285v-49zM322 594l331 332v-49l-282 -283l282 -285v-49z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="911" +d="M123 575v35h665v-192h-36v157h-629z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="950" +d="M143 578v34h664v-34h-664z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="653" +d="M82 1327q0 100 72.5 172t173.5 72q100 0 171.5 -72t71.5 -172q0 -101 -71.5 -173.5t-171.5 -72.5q-101 0 -173.5 72.5t-72.5 173.5zM111 1327q0 -91 63 -154t154 -63q89 0 152 63t63 154q0 89 -63 152t-152 63q-91 0 -154 -63t-63 -152zM215 1171v316h141q43 0 73 -29 +t30 -69q0 -34 -18.5 -60t-49.5 -37l62 -121l-31 -2l-60 119h-118v-117h-29zM244 1315h112q31 0 51.5 21t20.5 53q0 29 -21 50t-51 21h-112v-145z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="628" +d="M123 1501v35h383v-35h-383z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="622" +d="M102 1362q0 87 61 148t148 61q88 0 148.5 -60.5t60.5 -148.5q0 -87 -61 -148t-148 -61q-86 0 -147.5 61.5t-61.5 147.5zM137 1362q0 -72 51 -123t123 -51t123 51t51 123t-51 123t-123 51t-123 -51t-51 -123z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="1390" +d="M102 0v35h1186v-35h-1186zM102 752v34h576v400h35v-400h575v-34h-575v-402h-35v402h-576z" /> + <glyph glyph-name="uni00B2" unicode="²" horiz-adv-x="661" +d="M82 1274v33q0 108 70 176.5t178 68.5q109 0 179.5 -68.5t70.5 -176.5q0 -115 -93 -201l-354 -322h430v-16h-457v16l369 334q38 35 62 85t24 104q0 102 -64.5 165.5t-166.5 63.5q-101 0 -166.5 -63.5t-65.5 -165.5v-33h-16z" /> + <glyph glyph-name="uni00B3" unicode="³" horiz-adv-x="686" +d="M82 967h16q0 -86 66.5 -141.5t177.5 -55.5q114 0 179 52.5t65 144.5q0 95 -66 145.5t-178 50.5h-43v17h43q101 0 160 46.5t59 133.5q0 84 -58 131t-161 47q-99 0 -158 -50t-59 -128h-19q0 86 64.5 140t171.5 54q110 0 174 -51.5t64 -142.5q0 -161 -164 -189 +q90 -12 139 -64.5t49 -139.5q0 -100 -70 -157.5t-192 -57.5q-118 0 -189 60.5t-71 154.5z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="718" +d="M184 1448v16l351 107v-55z" /> + <glyph glyph-name="uni00B5" unicode="µ" horiz-adv-x="1257" +d="M123 -350v1536h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-157 0 -274.5 78t-169.5 211v-604h-35z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="1083" +d="M51 1153q0 158 112.5 270.5t272.5 112.5h525v-1536h-35v1501h-281v-1501h-35v768h-174q-160 0 -272.5 112.5t-112.5 272.5zM88 1153q0 -146 101.5 -248t246.5 -102h174v698h-174q-144 0 -246 -102.5t-102 -245.5z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="327" +d="M72 594q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="739" +d="M205 -260h26q0 -56 39 -93.5t97 -37.5q59 0 99 38t40 93t-40 92t-99 37q-39 0 -72 -22t-45 -54l-27 4l41 203h27l-31 -154q42 45 108 47t116.5 -40.5t50.5 -112.5q0 -69 -49.5 -113.5t-118.5 -44.5q-68 0 -115 45.5t-47 112.5z" /> + <glyph glyph-name="uni00B9" unicode="¹" horiz-adv-x="350" +d="M102 1454v19l109 63h16v-768h-16v748z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="792" +d="M82 1257q0 129 92 221.5t221 92.5q130 0 223 -92.5t93 -221.5q0 -130 -92.5 -222.5t-223.5 -92.5q-129 0 -221 92.5t-92 222.5zM102 1257q0 -123 85.5 -209.5t207.5 -86.5q123 0 209 86.5t86 209.5t-86 209t-209 86q-122 0 -207.5 -86t-85.5 -209z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="735" +d="M82 260v49l283 285l-283 283v49l332 -332zM322 260v49l282 285l-282 283v49l331 -332z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="1185" +d="M102 1454v19l109 63h16v-768h-16v748zM199 -27l669 1600l15 -6l-668 -1600zM588 203v16l418 549h18v-549h121v-16h-121v-203h-16v203h-420zM608 219h400v524z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="1331" +d="M102 1454v19l109 63h16v-768h-16v748zM199 -27l669 1600l15 -6l-668 -1600zM752 506v33q0 108 69.5 176.5t177.5 68.5q109 0 179.5 -68.5t70.5 -176.5q0 -116 -92 -201l-354 -322h430v-16h-457v16l369 334q38 35 62 85t24 104q0 102 -65 165.5t-167 63.5 +q-101 0 -166 -63.5t-65 -165.5v-33h-16z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="1409" +d="M82 967h16q0 -86 66.5 -141.5t177.5 -55.5q114 0 179 52.5t65 144.5q0 95 -66 145.5t-178 50.5h-43v17h43q101 0 160 46.5t59 133.5q0 84 -58 131t-161 47q-99 0 -158 -50t-59 -128h-19q0 86 64.5 140t171.5 54q110 0 174 -51.5t64 -142.5q0 -161 -164 -189 +q90 -12 139 -64.5t49 -139.5q0 -100 -70 -157.5t-192 -57.5q-118 0 -189 60.5t-71 154.5zM422 -27l670 1600l14 -6l-668 -1600zM811 203v16l418 549h18v-549h121v-16h-121v-203h-16v203h-420zM831 219h400v524z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="1210" +d="M82 489q0 212 148 363.5t360 157.5v198h35v-231h-19q-202 0 -344.5 -143.5t-142.5 -344.5q0 -134 65 -246.5t177 -177.5t245 -65q132 0 244.5 64.5t178 177.5t65.5 247h34q0 -143 -69.5 -263.5t-190 -190.5t-262.5 -70q-143 0 -263.5 70t-190.5 190.5t-70 263.5z +M573 1522q0 13 9.5 21.5t23.5 8.5q12 0 21.5 -8.5t9.5 -21.5q0 -12 -9.5 -21.5t-21.5 -9.5q-13 0 -23 9.5t-10 21.5z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM522 1708v53l348 -104v-19z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM522 1638v19l348 104v-53z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM506 1618l172 205h37l170 -205h-39l-150 176l-151 -176h-39z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM455 1647q0 55 39.5 95t95.5 40q71 0 121 -76q42 -64 92 -64q40 0 70 31t30 74h35q0 -55 -40 -95t-95 -40q-77 0 -121 76q-31 61 -92 61q-40 0 -70.5 -31t-30.5 -71h-34z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM526 1735q0 10 8 18t19 8t19 -8t8 -18q0 -11 -8 -19t-19 -8t-19 8t-8 19zM813 1735q0 10 8 18t19 8q10 0 18 -7.5t8 -18.5t-8 -19t-18 -8t-18.5 8t-8.5 19z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="1388" +d="M31 0l649 1536h33l645 -1536h-37l-170 401h-913l-166 -401h-41zM254 436h883l-441 1051zM543 1743q0 61 45 105t108 44q62 0 106 -44t44 -105q0 -63 -44 -107.5t-106 -44.5q-63 0 -108 44.5t-45 107.5zM575 1743q0 -49 35.5 -85t85.5 -36q48 0 83.5 36t35.5 85 +q0 47 -36 83t-83 36q-49 0 -85 -35.5t-36 -83.5z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="2304" +d="M0 0l1118 1536h1114v-35h-1079v-715h942v-34h-942v-717h1079v-35h-1114v401h-784l-291 -401h-43zM362 436h756v1041z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="1718" +d="M72 768q0 217 107.5 402t292.5 293t402 108q270 0 483.5 -162t289.5 -414h-37q-73 236 -276.5 388.5t-459.5 152.5q-155 0 -297 -61t-244.5 -163.5t-163 -245t-60.5 -298.5t60.5 -298.5t163 -245t244.5 -163.5t297 -61q257 0 460 151.5t276 389.5h37 +q-76 -252 -289.5 -414t-483.5 -162q-27 0 -81 4l-25 -123q42 45 107.5 47t116 -40.5t50.5 -112.5q0 -69 -49.5 -113.5t-118.5 -44.5q-68 0 -114.5 45.5t-46.5 112.5h26q0 -56 38.5 -93.5t96.5 -37.5q59 0 99.5 38t40.5 93t-40.5 92t-99.5 37q-39 0 -71.5 -22t-44.5 -54 +l-27 4l35 176q-193 25 -352 136.5t-250.5 285t-91.5 373.5z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="1312" +d="M123 0v1536h1118v-35h-1083v-715h942v-34h-942v-717h1083v-35h-1118zM512 1708v53l350 -104v-19z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="1312" +d="M123 0v1536h1118v-35h-1083v-715h942v-34h-942v-717h1083v-35h-1118zM512 1638v19l350 104v-53z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="1312" +d="M123 0v1536h1118v-35h-1083v-715h942v-34h-942v-717h1083v-35h-1118zM494 1618l172 205h36l170 -205h-38l-150 176l-152 -176h-38z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="1312" +d="M123 0v1536h1118v-35h-1083v-715h942v-34h-942v-717h1083v-35h-1118zM510 1735q0 10 8 18t19 8t18.5 -7.5t7.5 -18.5t-8 -19t-18 -8q-11 0 -19 8t-8 19zM797 1735q0 11 7.5 18.5t18.5 7.5t19 -8t8 -18q0 -11 -8 -19t-19 -8q-10 0 -18 8t-8 19z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="299" +d="M-33 1708v53l348 -104v-19zM123 0v1536h35v-1536h-35z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="280" +d="M-33 1638v19l348 104v-53zM123 0v1536h35v-1536h-35z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="280" +d="M-49 1618l172 205h37l170 -205h-39l-150 176l-151 -176h-39zM123 0v1536h35v-1536h-35z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="290" +d="M-25 1735q0 10 8 18t19 8t19 -8t8 -18q0 -11 -8.5 -19t-18.5 -8t-18.5 8t-8.5 19zM123 0v1536h35v-1536h-35zM262 1735q0 10 8 18t19 8t18.5 -7.5t7.5 -18.5t-8 -19t-18 -8q-11 0 -19 8t-8 19z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="1525" +d="M41 752v34h121v750h524q155 0 297.5 -61t245.5 -163.5t164 -245t61 -298.5q0 -155 -61 -297.5t-164 -245.5t-245.5 -164t-297.5 -61h-524v752h-121zM197 35h489q198 0 366.5 98t266.5 266.5t98 368.5q0 148 -58 284t-156 234t-233.5 156.5t-283.5 58.5h-489v-715h333v-34 +h-333v-717z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="1398" +d="M123 0v1536h35l1083 -1477v1477h35v-1536h-35l-1083 1477v-1477h-35zM459 1626q0 56 39.5 95.5t95.5 39.5q72 0 121 -75q42 -64 92 -64q40 0 70 31t30 73h35q0 -56 -40 -95.5t-95 -39.5q-77 0 -121 76q-32 62 -92 62q-39 0 -69.5 -31.5t-30.5 -71.5h-35z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="1748" +d="M72 768q0 154 56.5 294.5t156.5 250.5q115 122 266.5 190t322.5 68q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM106 768q0 -209 103 -385.5t279.5 -279.5t385.5 -103q155 0 297.5 61 +t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-209 0 -385.5 -103t-279.5 -279.5t-103 -385.5zM698 1708v53l351 -104v-19z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="1748" +d="M72 768q0 154 56.5 294.5t156.5 250.5q115 122 266.5 190t322.5 68q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM106 768q0 -209 103 -385.5t279.5 -279.5t385.5 -103q155 0 297.5 61 +t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-209 0 -385.5 -103t-279.5 -279.5t-103 -385.5zM698 1638v19l351 104v-53z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="1748" +d="M72 768q0 154 56.5 294.5t156.5 250.5q115 122 266.5 190t322.5 68q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM106 768q0 -209 103 -385.5t279.5 -279.5t385.5 -103q155 0 297.5 61 +t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-209 0 -385.5 -103t-279.5 -279.5t-103 -385.5zM684 1618l172 205h37l170 -205h-39l-150 176l-151 -176h-39z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="1748" +d="M72 768q0 154 56.5 294.5t156.5 250.5q115 122 266.5 190t322.5 68q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM106 768q0 -209 103 -385.5t279.5 -279.5t385.5 -103q155 0 297.5 61 +t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-209 0 -385.5 -103t-279.5 -279.5t-103 -385.5zM633 1667q0 55 39.5 95t95.5 40q71 0 121 -76q41 -63 92 -63q40 0 70 31t30 73h35q0 -55 -40 -95t-95 -40q-77 0 -121 76q-31 61 -92 61 +q-40 0 -70 -31t-30 -71h-35z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="1748" +d="M72 768q0 154 56.5 294.5t156.5 250.5q115 122 266.5 190t322.5 68q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM106 768q0 -209 103 -385.5t279.5 -279.5t385.5 -103q155 0 297.5 61 +t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-209 0 -385.5 -103t-279.5 -279.5t-103 -385.5zM705 1735q0 11 7.5 18.5t18.5 7.5t19 -8t8 -18q0 -11 -8 -19t-19 -8q-10 0 -18 8t-8 19zM991 1735q0 10 8 18t19 8q10 0 18 -7.5t8 -18.5t-8 -19 +t-18 -8t-18.5 8t-8.5 19z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="1351" +d="M82 25l569 569l-569 567l24 25l570 -568l569 568l25 -25l-570 -567l570 -569l-25 -25l-569 569l-570 -569z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="1769" +d="M82 768q0 217 108 402t293 293t402 108q160 0 303 -59t254 -166l186 190l25 -25l-187 -190q105 -108 163.5 -251t58.5 -302q0 -218 -107.5 -402.5t-292.5 -292.5t-403 -108q-157 0 -300.5 58.5t-252.5 162.5l-191 -186l-24 25l190 186q-106 112 -165.5 255t-59.5 302z +M119 768q0 -153 55.5 -289.5t157.5 -242.5l1085 1085q-105 102 -242 158.5t-290 56.5q-155 0 -297 -61t-244.5 -163.5t-163.5 -245t-61 -298.5zM356 211q105 -99 242.5 -155t286.5 -56q208 0 384.5 103t279 279.5t102.5 385.5q0 152 -54.5 288t-154.5 240z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="1431" +d="M123 559v977h35v-977q0 -114 44 -217.5t119 -178.5t178.5 -119t217.5 -44q113 0 216 44t178 119t119 178.5t44 217.5v977h35v-977q0 -161 -79 -298t-215.5 -216.5t-297.5 -79.5t-298 79.5t-216.5 216.5t-79.5 298zM541 1708v53l350 -104v-19z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="1431" +d="M123 559v977h35v-977q0 -114 44 -217.5t119 -178.5t178.5 -119t217.5 -44q113 0 216 44t178 119t119 178.5t44 217.5v977h35v-977q0 -161 -79 -298t-215.5 -216.5t-297.5 -79.5t-298 79.5t-216.5 216.5t-79.5 298zM541 1638v19l350 104v-53z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="1431" +d="M123 559v977h35v-977q0 -114 44 -217.5t119 -178.5t178.5 -119t217.5 -44q113 0 216 44t178 119t119 178.5t44 217.5v977h35v-977q0 -161 -79 -298t-215.5 -216.5t-297.5 -79.5t-298 79.5t-216.5 216.5t-79.5 298zM526 1618l172 205h37l170 -205h-39l-149 176l-152 -176 +h-39z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="1431" +d="M123 559v977h35v-977q0 -113 44 -216.5t119 -178.5t178.5 -119.5t217.5 -44.5q113 0 216 44.5t178 119.5t119 178.5t44 216.5v977h35v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298zM547 1735q0 11 7.5 18.5t18.5 7.5t19 -8 +t8 -18q0 -11 -8 -19t-19 -8q-10 0 -18 8t-8 19zM834 1735q0 11 8 18.5t18 7.5q11 0 19 -8t8 -18q0 -11 -8.5 -19t-18.5 -8t-18 8t-8 19z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="1300" +d="M31 1536h45l575 -752l576 752h43l-600 -784v-752h-35v752zM475 1638v19l350 104v-53z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="1331" +d="M123 0v1536h35v-190h688q170 0 290.5 -120.5t120.5 -289.5q0 -170 -120.5 -291t-290.5 -121h-688v-524h-35zM158 559h688q158 0 266.5 110t108.5 267q0 156 -108.5 265.5t-266.5 109.5h-688v-752z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="1097" +d="M123 0v1194q0 158 110.5 267.5t266.5 109.5t265 -109.5t109 -267.5q0 -113 -64.5 -208t-164.5 -134q157 -22 264 -142.5t107 -279.5q0 -178 -126 -304t-304 -126h-322v35h322q163 0 278 116t115 279q0 161 -115 276t-278 115h-322v35h244q137 0 233.5 99.5t96.5 238.5 +q0 143 -98.5 242.5t-239.5 99.5t-241.5 -100t-100.5 -242v-1194h-35z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM461 1516v55l350 -107v-16z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM461 1448v16l350 107v-55z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM442 1393l172 204h37l170 -204h-39l-149 176l-152 -176h-39z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM391 1436q0 56 39.5 95.5t95.5 39.5q71 0 121 -76q41 -63 92 -63q40 0 70.5 31t30.5 73h34q0 -56 -40 -95.5t-95 -39.5q-77 0 -121 76q-31 61 -92 61q-40 0 -70 -31t-30 -71h-35z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM463 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM750 1544q0 11 8 19t18 8t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8q-10 0 -18 8t-8 18z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="1243" +d="M72 354q0 177 108.5 276t343.5 99h561v123q0 334 -452 334q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q229 0 358 -89.5t129 -279.5v-852h-35v317q-64 -152 -208.5 -252t-325.5 -100q-236 0 -357.5 107.5t-121.5 281.5zM109 354q0 -158 112.5 -256t329.5 -98 +q133 0 256 65t200.5 178.5t77.5 243.5v207h-561q-415 0 -415 -340zM479 1489q0 61 45.5 105t108.5 44q60 0 104.5 -44t44.5 -105q0 -63 -44.5 -107.5t-104.5 -44.5q-63 0 -108.5 44.5t-45.5 107.5zM512 1489q0 -50 35 -85.5t86 -35.5q47 0 82 36t35 85q0 47 -35 83t-82 36 +q-50 0 -85.5 -35.5t-35.5 -83.5z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="2420" +d="M72 309q0 324 452 324h561v219q0 172 -119 253t-333 81q-205 0 -328 -75t-123 -226h-35q0 166 134 251t352 85q228 0 357.5 -90.5t129.5 -278.5v-35q63 181 225.5 292.5t366.5 111.5q171 0 315 -79t228 -218.5t84 -309.5v-16h-1219q4 -126 52.5 -237.5t127.5 -190.5 +t186.5 -124.5t225.5 -45.5q174 0 318 93t217 245h37q-73 -167 -228 -270t-344 -103q-204 0 -366.5 119.5t-225.5 312.5v-397h-35v317q-64 -152 -208.5 -252t-325.5 -100q-234 0 -356.5 94t-122.5 250zM109 309q0 -140 113.5 -224.5t328.5 -84.5q133 0 256 65t200.5 178.5 +t77.5 243.5v111h-561q-216 0 -315.5 -73.5t-99.5 -215.5zM1120 633h1182q-5 158 -84.5 285t-212.5 197.5t-293 70.5q-158 0 -291.5 -70.5t-214.5 -197.5t-86 -285z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="1378" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q203 0 366 -117t228 -303h-37q-65 171 -217 278t-340 107q-160 0 -296.5 -79t-216 -215.5t-79.5 -297.5t79.5 -298t216 -216.5t296.5 -79.5q188 0 340 107t217 278h37q-65 -186 -228 -303t-366 -117q-1 0 -82 6l-25 -125 +q42 45 108 47t116.5 -40.5t50.5 -112.5q0 -69 -49.5 -113.5t-118.5 -44.5q-68 0 -115 45.5t-47 112.5h26q0 -56 39 -93.5t97 -37.5q59 0 99 38t40 93t-40 92t-99 37q-39 0 -72 -22t-45 -54l-27 4l35 178q-222 37 -371 212.5t-149 406.5z" /> + <glyph glyph-name="egrave" unicode="è" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5v-16h-1218q5 -158 85.5 -291t215 -210t291.5 -77q174 0 317.5 93t216.5 245h37q-73 -167 -227.5 -270t-343.5 -103q-170 0 -315 84.5t-229.5 229.5t-84.5 315zM119 612 +h1181q-5 159 -84 290.5t-213 207.5t-292 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5zM528 1516v55l351 -107v-16z" /> + <glyph glyph-name="eacute" unicode="é" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5v-16h-1218q5 -158 85.5 -291t215 -210t291.5 -77q174 0 317.5 93t216.5 245h37q-73 -167 -227.5 -270t-343.5 -103q-170 0 -315 84.5t-229.5 229.5t-84.5 315zM119 612 +h1181q-5 159 -84 290.5t-213 207.5t-292 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5zM528 1448v16l351 107v-55z" /> + <glyph glyph-name="ecircumflex" unicode="ê" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5v-16h-1218q5 -158 85.5 -291t215 -210t291.5 -77q174 0 317.5 93t216.5 245h37q-73 -167 -227.5 -270t-343.5 -103q-170 0 -315 84.5t-229.5 229.5t-84.5 315zM119 612 +h1181q-5 159 -84 290.5t-213 207.5t-292 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5zM520 1393l172 204h37l170 -204h-39l-149 176l-152 -176h-39z" /> + <glyph glyph-name="edieresis" unicode="ë" +d="M82 594q0 170 84.5 314.5t229.5 228.5t315 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5v-16h-1218q5 -158 85.5 -291t215 -210t291.5 -77q174 0 317.5 93t216.5 245h37q-73 -167 -227.5 -270t-343.5 -103q-170 0 -315 84.5t-229.5 229.5t-84.5 315zM119 612 +h1181q-5 159 -84 290.5t-213 207.5t-292 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5zM541 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM827 1544q0 10 8.5 18.5t18.5 8.5t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18z +" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="280" +d="M-35 1516v55l350 -107v-16zM123 0v1186h35v-1186h-35z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="280" +d="M-35 1448v16l350 107v-55zM123 0v1186h35v-1186h-35z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="278" +d="M-49 1393l172 204h37l170 -204h-39l-150 176l-151 -176h-39zM123 0v1186h35v-1186h-35z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="278" +d="M-31 1544q0 10 8.5 18.5t18.5 8.5t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18zM123 0v1186h35v-1186h-35zM256 1544q0 10 8 18.5t19 8.5q10 0 18 -8t8 -19q0 -10 -7.5 -18t-18.5 -8t-19 8t-8 18z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="1384" +d="M82 575q0 165 81.5 306t222 223t306.5 82q134 0 264 -60l-251 252l-132 -131l-24 25l131 131l-133 133h49l109 -109l129 129l24 -24l-129 -129l397 -397q84 -82 130.5 -194.5t46.5 -236.5q0 -166 -81.5 -306.5t-222.5 -222t-307 -81.5t-306.5 81.5t-222 222t-81.5 306.5z +M119 575q0 -117 45.5 -223.5t122 -183.5t182.5 -122.5t223 -45.5q156 0 288 77t209 209.5t77 288.5q0 117 -43.5 223t-120.5 183q-81 81 -186.5 125.5t-223.5 44.5q-156 0 -288 -77.5t-208.5 -210t-76.5 -288.5z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="1257" +d="M123 0v1186h35v-285q56 140 196 230t301 90q209 0 344.5 -135.5t135.5 -344.5v-741h-35v741q0 193 -126 319t-319 126q-129 0 -243.5 -63t-184 -171.5t-69.5 -234.5v-717h-35zM414 1436q0 56 40 95.5t95 39.5q71 0 121 -76q41 -63 92 -63q40 0 70 31t30 73h35 +q0 -56 -39.5 -95.5t-95.5 -39.5q-77 0 -121 76q-31 61 -92 61q-40 0 -70 -31t-30 -71h-35z" /> + <glyph glyph-name="ograve" unicode="ò" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5zM535 1516v55l350 -107v-16z" /> + <glyph glyph-name="oacute" unicode="ó" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5zM535 1448v16l350 107v-55z" /> + <glyph glyph-name="ocircumflex" unicode="ô" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5zM518 1393l172 204h37l170 -204h-39l-149 176l-152 -176h-39z" /> + <glyph glyph-name="otilde" unicode="õ" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5zM467 1436q0 56 39.5 95.5t95.5 39.5q71 0 121 -76q41 -63 92 -63q40 0 70 31t30 73h35q0 -56 -40 -95.5t-95 -39.5q-77 0 -121 76q-31 61 -92 61q-40 0 -70 -31t-30 -71h-35z" /> + <glyph glyph-name="odieresis" unicode="ö" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231 +q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79t-215 -215.5t-79 -297.5zM539 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM825 1544q0 10 8.5 18.5t18.5 8.5t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="1390" +d="M102 575v35h1186v-35h-1186zM664 14q0 14 9.5 23.5t22.5 9.5q12 0 21.5 -10t9.5 -23q0 -12 -9.5 -21t-21.5 -9q-13 0 -22.5 9t-9.5 21zM664 1169q0 12 9.5 22.5t22.5 10.5q12 0 21.5 -10.5t9.5 -22.5t-9.5 -22t-21.5 -10q-13 0 -22.5 10t-9.5 22z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="1435" +d="M90 594q0 170 84.5 314.5t229.5 228.5t315 84q253 0 434 -172l147 149l25 -24l-147 -150q79 -85 123.5 -196t44.5 -234q0 -171 -84 -316t-228.5 -229t-314.5 -84q-252 0 -430 172l-139 -137l-25 25l139 137q-82 85 -128 197t-46 235zM127 594q0 -117 42.5 -222.5 +t119.5 -185.5l839 838q-177 162 -409 162q-161 0 -297.5 -79t-215.5 -215.5t-79 -297.5zM313 162q80 -76 185 -119t221 -43q161 0 297 79.5t214.5 216t78.5 298.5q0 236 -156 405z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="1257" +d="M123 444v742h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-209 0 -344 135t-135 344zM455 1516v55l350 -107v-16z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="1257" +d="M123 444v742h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-209 0 -344 135t-135 344zM455 1448v16l350 107v-55z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="1257" +d="M123 444v742h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-209 0 -344 135t-135 344zM440 1393l172 204h37l170 -204h-39l-149 176l-152 -176h-39z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="1257" +d="M123 444v742h35v-742q0 -194 125 -319t319 -125q129 0 244 62.5t184.5 171.5t69.5 235v717h35v-1186h-35v285q-55 -139 -196 -229.5t-302 -90.5q-209 0 -344 135t-135 344zM459 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18zM745 1544 +q0 10 8.5 18.5t18.5 8.5t18.5 -8.5t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="1191" +d="M31 1186h39l524 -1141l528 1141h39l-710 -1536h-39l163 354zM420 1448v16l350 107v-55z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="1462" +d="M123 -350v1886h35v-735q65 187 228 303.5t366 116.5q127 0 243.5 -49.5t200.5 -133.5t134 -200.5t50 -243.5q0 -128 -50 -244.5t-134 -201t-200 -134t-244 -49.5q-203 0 -366 117.5t-228 304.5v-737h-35zM158 594q0 -161 79.5 -298t216.5 -216.5t298 -79.5 +q120 0 229.5 47t188.5 126.5t126 189.5t47 231t-47 230.5t-126 189t-188.5 126t-229.5 46.5q-161 0 -298 -79t-216.5 -215.5t-79.5 -297.5z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="1191" +d="M31 1186h39l524 -1141l526 1141h41l-710 -1536h-37l164 354zM424 1524q0 10 8 18t19 8q12 0 20 -7.5t8 -18.5t-8 -19t-20 -8q-11 0 -19 8.5t-8 18.5zM711 1524q0 10 7.5 18t18.5 8t19 -8t8 -18t-8 -18.5t-19 -8.5q-10 0 -18 8t-8 19z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="2828" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q177 0 335 -73.5t270 -203t163 -293.5v535h1115v-35h-1080v-715h942v-34h-942v-717h1080v-35h-1115v535q-51 -164 -163 -293.5t-270 -203t-335 -73.5q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM109 768 +q0 -209 102 -385.5t278.5 -279.5t384.5 -103q155 0 297.5 61t245.5 163.5t164 245t61 298.5t-61 298.5t-164 245t-245.5 163.5t-297.5 61q-208 0 -384.5 -103t-278.5 -279.5t-102 -385.5z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="2637" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q219 0 388.5 -135t221.5 -343q52 208 221.5 343t388.5 135q170 0 314.5 -84t228.5 -228.5t84 -314.5v-16h-1219q5 -158 85.5 -291t215 -210t291.5 -77q174 0 318 93t217 245h37q-73 -167 -228 -270t-344 -103 +q-219 0 -388.5 134.5t-221.5 342.5q-52 -208 -221.5 -342.5t-388.5 -134.5q-170 0 -314.5 84t-228.5 229t-84 316zM119 594q0 -161 79 -298t215 -216.5t296 -79.5q121 0 230.5 47t188.5 126.5t125.5 189.5t46.5 231q0 161 -79 297.5t-215 215.5t-297 79q-160 0 -296 -79 +t-215 -215.5t-79 -297.5zM1337 612h1182q-5 159 -84.5 290.5t-213 207.5t-292.5 76q-118 0 -225.5 -45t-186.5 -121t-127.5 -182.5t-52.5 -225.5z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="1300" +d="M31 1536h45l575 -752l576 752h43l-600 -784v-752h-35v752zM481 1735q0 10 8 18t19 8q12 0 20.5 -7.5t8.5 -18.5q0 -12 -8.5 -20.5t-20.5 -8.5q-11 0 -19 8.5t-8 20.5zM768 1735q0 10 8 18t19 8t18.5 -7.5t7.5 -18.5q0 -12 -7.5 -20.5t-18.5 -8.5t-19 8.5t-8 20.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="823" +d="M221 1393l172 204h37l170 -204h-39l-149 176l-152 -176h-39z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="892" +d="M205 1436q0 56 39.5 95.5t95.5 39.5q80 0 121 -76q30 -59 92 -59q40 0 70 29t30 71h35q0 -56 -40 -95.5t-95 -39.5q-80 0 -121 76q-10 26 -35.5 41.5t-56.5 15.5q-40 0 -70 -29t-30 -69h-35z" /> + <glyph glyph-name="uni2000" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2001" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2002" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2003" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2004" unicode=" " horiz-adv-x="630" + /> + <glyph glyph-name="uni2005" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="uni2006" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2007" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2008" unicode=" " horiz-adv-x="236" + /> + <glyph glyph-name="uni2009" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="uni200A" unicode=" " horiz-adv-x="105" + /> + <glyph glyph-name="uni2010" unicode="‐" horiz-adv-x="950" +d="M143 578v34h664v-34h-664z" /> + <glyph glyph-name="uni2011" unicode="‑" horiz-adv-x="950" +d="M143 578v34h664v-34h-664z" /> + <glyph glyph-name="figuredash" unicode="‒" horiz-adv-x="950" +d="M143 578v34h664v-34h-664z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="1196" +d="M92 578v34h1012v-34h-1012z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="1720" +d="M92 575v35h1536v-35h-1536z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="286" +d="M102 1343v144q0 26 18 44.5t44 18.5h8v-34h-8q-11 0 -20 -8.5t-9 -20.5v-101h6q19 0 31 -12t12 -31q0 -16 -12.5 -28t-30.5 -12q-17 0 -28 12t-11 28z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="286" +d="M102 1509q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-143q0 -26 -17.5 -44.5t-43.5 -18.5h-8v34h8q11 0 20 8.5t9 20.5v100h-7q-19 0 -31 12t-12 31z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="245" +d="M102 27q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-144q0 -26 -17.5 -44.5t-43.5 -18.5h-8v35h8q11 0 20 8t9 20v101h-7q-19 0 -31 12t-12 31z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="364" +d="M102 1343v144q0 26 18 44.5t44 18.5h8v-34h-8q-11 0 -20 -8.5t-9 -20.5v-101h6q19 0 31 -12t12 -31q0 -16 -12.5 -28t-30.5 -12q-17 0 -28 12t-11 28zM221 1343v144q0 26 18 44.5t44 18.5h8v-34h-8q-11 0 -20 -8.5t-9 -20.5v-101h6q19 0 31 -12t12 -31q0 -16 -12.5 -28 +t-30.5 -12q-17 0 -28 12t-11 28z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="364" +d="M61 1509q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-143q0 -26 -17.5 -44.5t-43.5 -18.5h-8v34h8q11 0 20 8.5t9 20.5v100h-7q-19 0 -31 12t-12 31zM180 1509q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-143q0 -26 -17.5 -44.5t-43.5 -18.5h-8v34h8 +q11 0 19.5 8.5t8.5 20.5v100h-6q-19 0 -31 12t-12 31z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="364" +d="M61 27q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-144q0 -26 -17.5 -44.5t-43.5 -18.5h-8v35h8q11 0 20 8t9 20v101h-7q-19 0 -31 12t-12 31zM180 27q0 16 12.5 28.5t30.5 12.5q17 0 28 -12.5t11 -28.5v-144q0 -26 -17.5 -44.5t-43.5 -18.5h-8v35h8q11 0 19.5 8 +t8.5 20v101h-6q-19 0 -31 12t-12 31z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="550" +d="M205 594q0 29 20.5 48.5t50.5 19.5q28 0 49 -19.5t21 -48.5q0 -30 -21 -50t-49 -20q-30 0 -50.5 20t-20.5 50z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="1093" +d="M72 27q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29zM506 27q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29zM940 27q0 17 12 29t29 12t29 -12t12 -29t-12 -29t-29 -12t-29 12t-12 29z" /> + <glyph glyph-name="uni202F" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="495" +d="M82 594l332 332v-49l-283 -283l283 -285v-49z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="495" +d="M82 260v49l283 285l-283 283v49l332 -332z" /> + <glyph glyph-name="uni205F" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="1337" +d="M72 610v35h170v246h-170v35h170v137q0 138 68 255t185 185t255 68q137 0 253.5 -68t184 -185t67.5 -255v-33h-34v33q0 129 -63.5 238t-172 172t-235.5 63q-195 0 -334.5 -138.5t-139.5 -334.5v-137h701l-14 -35h-687v-246h607l-13 -35h-594v-139q0 -128 64 -236.5 +t173 -171.5t237 -63q127 0 235.5 63t172 171.5t63.5 236.5v33h34v-33q0 -137 -67.5 -253.5t-184 -184.5t-253.5 -68q-138 0 -255 68t-185 184.5t-68 253.5v139h-170z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="741" +d="M82 1522v14h240v-14h-111v-293h-16v293h-113zM348 1229v307h19l137 -289l137 289h18v-307h-16v274l-133 -274h-12l-133 274v-274h-17z" /> + <glyph glyph-name="uni25FC" unicode="◼" horiz-adv-x="1187" +d="M0 0v1188h1188v-1188h-1188z" /> + <glyph glyph-name="uniFB01" unicode="fi" horiz-adv-x="962" +d="M41 1151v35h139v80q0 132 69 201t200 69h116v-35h-116q-234 0 -234 -235v-80h625v-1186h-35v1151h-590v-1151h-35v1151h-139zM797 1544q0 11 8 19t18 8q11 0 19 -8.5t8 -18.5t-8 -18t-19 -8t-18.5 8t-7.5 18z" /> + <glyph glyph-name="uniFB02" unicode="fl" horiz-adv-x="962" +d="M41 1151v35h139v80q0 128 75 199t194 71h391v-1536h-35v1501h-356q-104 0 -169 -61t-65 -174v-80h350v-35h-350v-1151h-35v1151h-139z" /> + <glyph glyph-name="uniFB03" unicode="ffi" horiz-adv-x="1591" +d="M41 1151v35h139v80q0 132 69 201t200 69h116v-35h-116q-234 0 -234 -235v-80h594v80q0 132 68.5 201t199.5 69h117v-35h-117q-233 0 -233 -235v-80h624v-1186h-34v1151h-590v-1151h-35v1151h-594v-1151h-35v1151h-139zM1425 1544q0 10 8.5 18.5t18.5 8.5t18.5 -8.5 +t8.5 -18.5t-8 -18t-19 -8t-19 8t-8 18z" /> + <glyph glyph-name="uniFB04" unicode="ffl" horiz-adv-x="1587" +d="M41 1151v35h139v80q0 132 69 201t200 69h116v-35h-116q-234 0 -234 -235v-80h590v80q0 128 74.5 199t193.5 71h391v-1536h-34v1501h-357q-104 0 -168.5 -61t-64.5 -174v-80h350v-35h-350v-1151h-35v1151h-590v-1151h-35v1151h-139z" /> + <hkern u1="0" u2="7" k="37" /> + <hkern u1="1" u2="5" k="-33" /> + <hkern u1="1" u2="0" k="-41" /> + <hkern u1="2" u2="7" k="37" /> + <hkern u1="3" u2="1" k="61" /> + <hkern u1="4" u2="9" k="25" /> + <hkern u1="4" u2="7" k="41" /> + <hkern u1="4" u2="1" k="61" /> + <hkern u1="5" u2="9" k="37" /> + <hkern u1="5" u2="1" k="78" /> + <hkern u1="6" u2="9" k="57" /> + <hkern u1="6" u2="7" k="98" /> + <hkern u1="6" u2="1" k="61" /> + <hkern u1="7" u2="8" k="49" /> + <hkern u1="7" u2="6" k="61" /> + <hkern u1="7" u2="5" k="41" /> + <hkern u1="7" u2="4" k="98" /> + <hkern u1="7" u2="." k="102" /> + <hkern u1="7" u2="," k="102" /> + <hkern u1="8" u2="9" k="33" /> + <hkern u1="8" u2="7" k="68" /> + <hkern u1="8" u2="1" k="61" /> + <hkern u1="9" u2="8" k="33" /> + <hkern u1="9" u2="7" k="70" /> + <hkern u1="9" u2="6" k="57" /> + <hkern u1="9" u2="5" k="37" /> + <hkern u1="9" u2="4" k="49" /> + <hkern u1="9" u2="." k="102" /> + <hkern u1="9" u2="," k="102" /> + <hkern u1="A" u2="Ÿ" k="184" /> + <hkern u1="A" u2="œ" k="41" /> + <hkern u1="A" u2="Œ" k="41" /> + <hkern u1="A" u2="ÿ" k="123" /> + <hkern u1="A" u2="ý" k="123" /> + <hkern u1="A" u2="ü" k="20" /> + <hkern u1="A" u2="û" k="20" /> + <hkern u1="A" u2="ú" k="20" /> + <hkern u1="A" u2="ù" k="20" /> + <hkern u1="A" u2="ø" k="20" /> + <hkern u1="A" u2="ö" k="74" /> + <hkern u1="A" u2="ô" k="74" /> + <hkern u1="A" u2="ó" k="74" /> + <hkern u1="A" u2="ò" k="74" /> + <hkern u1="A" u2="ð" k="41" /> + <hkern u1="A" u2="ë" k="74" /> + <hkern u1="A" u2="ê" k="74" /> + <hkern u1="A" u2="é" k="74" /> + <hkern u1="A" u2="è" k="74" /> + <hkern u1="A" u2="ç" k="74" /> + <hkern u1="A" u2="æ" k="53" /> + <hkern u1="A" u2="å" k="20" /> + <hkern u1="A" u2="ä" k="20" /> + <hkern u1="A" u2="ã" k="20" /> + <hkern u1="A" u2="â" k="20" /> + <hkern u1="A" u2="á" k="20" /> + <hkern u1="A" u2="à" k="20" /> + <hkern u1="A" u2="Ý" k="184" /> + <hkern u1="A" u2="Ø" k="20" /> + <hkern u1="A" u2="Ö" k="57" /> + <hkern u1="A" u2="Õ" k="57" /> + <hkern u1="A" u2="Ô" k="57" /> + <hkern u1="A" u2="Ó" k="57" /> + <hkern u1="A" u2="Ò" k="57" /> + <hkern u1="A" u2="Ç" k="57" /> + <hkern u1="A" u2="z" k="-25" /> + <hkern u1="A" u2="y" k="123" /> + <hkern u1="A" u2="w" k="102" /> + <hkern u1="A" u2="v" k="143" /> + <hkern u1="A" u2="u" k="20" /> + <hkern u1="A" u2="t" k="45" /> + <hkern u1="A" u2="q" k="74" /> + <hkern u1="A" u2="o" k="74" /> + <hkern u1="A" u2="j" k="74" /> + <hkern u1="A" u2="f" k="25" /> + <hkern u1="A" u2="e" k="74" /> + <hkern u1="A" u2="d" k="74" /> + <hkern u1="A" u2="c" k="74" /> + <hkern u1="A" u2="a" k="20" /> + <hkern u1="A" u2="Z" k="-66" /> + <hkern u1="A" u2="Y" k="225" /> + <hkern u1="A" u2="X" k="-25" /> + <hkern u1="A" u2="W" k="147" /> + <hkern u1="A" u2="V" k="184" /> + <hkern u1="A" u2="U" k="61" /> + <hkern u1="A" u2="T" k="168" /> + <hkern u1="A" u2="Q" k="57" /> + <hkern u1="A" u2="O" k="57" /> + <hkern u1="A" u2="J" k="-25" /> + <hkern u1="A" u2="G" k="57" /> + <hkern u1="A" u2="C" k="57" /> + <hkern u1="A" u2="A" k="-25" /> + <hkern u1="B" u2="Ÿ" k="115" /> + <hkern u1="B" u2="Ý" k="115" /> + <hkern u1="B" u2="Æ" k="82" /> + <hkern u1="B" u2="j" k="156" /> + <hkern u1="B" u2="Z" k="41" /> + <hkern u1="B" u2="Y" k="115" /> + <hkern u1="B" u2="X" k="57" /> + <hkern u1="B" u2="W" k="66" /> + <hkern u1="B" u2="V" k="98" /> + <hkern u1="B" u2="T" k="74" /> + <hkern u1="C" u2="ø" k="20" /> + <hkern u1="C" u2="ö" k="25" /> + <hkern u1="C" u2="ô" k="25" /> + <hkern u1="C" u2="ó" k="25" /> + <hkern u1="C" u2="ò" k="25" /> + <hkern u1="C" u2="ï" k="-82" /> + <hkern u1="C" u2="ë" k="25" /> + <hkern u1="C" u2="ê" k="25" /> + <hkern u1="C" u2="é" k="25" /> + <hkern u1="C" u2="è" k="25" /> + <hkern u1="C" u2="å" k="25" /> + <hkern u1="C" u2="ä" k="25" /> + <hkern u1="C" u2="ã" k="25" /> + <hkern u1="C" u2="â" k="25" /> + <hkern u1="C" u2="á" k="25" /> + <hkern u1="C" u2="à" k="25" /> + <hkern u1="C" u2="Æ" k="102" /> + <hkern u1="C" u2="Å" k="25" /> + <hkern u1="C" u2="Ä" k="25" /> + <hkern u1="C" u2="Ã" k="25" /> + <hkern u1="C" u2="Â" k="25" /> + <hkern u1="C" u2="Á" k="25" /> + <hkern u1="C" u2="À" k="25" /> + <hkern u1="C" u2="z" k="-33" /> + <hkern u1="C" u2="s" k="20" /> + <hkern u1="C" u2="q" k="25" /> + <hkern u1="C" u2="o" k="25" /> + <hkern u1="C" u2="j" k="123" /> + <hkern u1="C" u2="g" k="25" /> + <hkern u1="C" u2="e" k="25" /> + <hkern u1="C" u2="a" k="25" /> + <hkern u1="C" u2="Z" k="41" /> + <hkern u1="C" u2="Y" k="41" /> + <hkern u1="C" u2="X" k="16" /> + <hkern u1="C" u2="W" k="16" /> + <hkern u1="C" u2="V" k="29" /> + <hkern u1="C" u2="T" k="123" /> + <hkern u1="C" u2="A" k="25" /> + <hkern u1="C" u2="." k="41" /> + <hkern u1="C" u2="," k="41" /> + <hkern u1="D" u2="Ÿ" k="164" /> + <hkern u1="D" u2="ÿ" k="25" /> + <hkern u1="D" u2="ý" k="25" /> + <hkern u1="D" u2="Ý" k="164" /> + <hkern u1="D" u2="Æ" k="164" /> + <hkern u1="D" u2="Å" k="57" /> + <hkern u1="D" u2="Ä" k="57" /> + <hkern u1="D" u2="Ã" k="57" /> + <hkern u1="D" u2="Â" k="57" /> + <hkern u1="D" u2="Á" k="57" /> + <hkern u1="D" u2="À" k="57" /> + <hkern u1="D" u2="y" k="25" /> + <hkern u1="D" u2="v" k="25" /> + <hkern u1="D" u2="j" k="123" /> + <hkern u1="D" u2="Z" k="66" /> + <hkern u1="D" u2="Y" k="164" /> + <hkern u1="D" u2="X" k="57" /> + <hkern u1="D" u2="W" k="49" /> + <hkern u1="D" u2="V" k="66" /> + <hkern u1="D" u2="T" k="123" /> + <hkern u1="D" u2="J" k="45" /> + <hkern u1="D" u2="A" k="57" /> + <hkern u1="D" u2="." k="41" /> + <hkern u1="D" u2="," k="41" /> + <hkern u1="E" u2="œ" k="41" /> + <hkern u1="E" u2="Œ" k="41" /> + <hkern u1="E" u2="ÿ" k="37" /> + <hkern u1="E" u2="ý" k="37" /> + <hkern u1="E" u2="ø" k="20" /> + <hkern u1="E" u2="ö" k="41" /> + <hkern u1="E" u2="ô" k="41" /> + <hkern u1="E" u2="ó" k="41" /> + <hkern u1="E" u2="ò" k="41" /> + <hkern u1="E" u2="ð" k="82" /> + <hkern u1="E" u2="ï" k="-102" /> + <hkern u1="E" u2="î" k="-41" /> + <hkern u1="E" u2="í" k="-41" /> + <hkern u1="E" u2="ì" k="-41" /> + <hkern u1="E" u2="ë" k="41" /> + <hkern u1="E" u2="ê" k="41" /> + <hkern u1="E" u2="é" k="41" /> + <hkern u1="E" u2="è" k="41" /> + <hkern u1="E" u2="ç" k="41" /> + <hkern u1="E" u2="æ" k="61" /> + <hkern u1="E" u2="å" k="41" /> + <hkern u1="E" u2="ä" k="41" /> + <hkern u1="E" u2="ã" k="41" /> + <hkern u1="E" u2="â" k="41" /> + <hkern u1="E" u2="á" k="41" /> + <hkern u1="E" u2="à" k="41" /> + <hkern u1="E" u2="Ø" k="20" /> + <hkern u1="E" u2="Ö" k="41" /> + <hkern u1="E" u2="Õ" k="41" /> + <hkern u1="E" u2="Ô" k="41" /> + <hkern u1="E" u2="Ó" k="41" /> + <hkern u1="E" u2="Ò" k="41" /> + <hkern u1="E" u2="Ç" k="49" /> + <hkern u1="E" u2="z" k="-20" /> + <hkern u1="E" u2="y" k="37" /> + <hkern u1="E" u2="w" k="25" /> + <hkern u1="E" u2="v" k="37" /> + <hkern u1="E" u2="s" k="41" /> + <hkern u1="E" u2="q" k="41" /> + <hkern u1="E" u2="o" k="41" /> + <hkern u1="E" u2="j" k="106" /> + <hkern u1="E" u2="g" k="41" /> + <hkern u1="E" u2="e" k="41" /> + <hkern u1="E" u2="d" k="41" /> + <hkern u1="E" u2="c" k="41" /> + <hkern u1="E" u2="a" k="41" /> + <hkern u1="E" u2="Z" k="-25" /> + <hkern u1="E" u2="Q" k="41" /> + <hkern u1="E" u2="O" k="41" /> + <hkern u1="E" u2="J" k="33" /> + <hkern u1="E" u2="G" k="41" /> + <hkern u1="E" u2="C" k="41" /> + <hkern u1="F" u2="œ" k="82" /> + <hkern u1="F" u2="Œ" k="61" /> + <hkern u1="F" u2="ÿ" k="61" /> + <hkern u1="F" u2="ý" k="61" /> + <hkern u1="F" u2="ü" k="45" /> + <hkern u1="F" u2="û" k="45" /> + <hkern u1="F" u2="ú" k="45" /> + <hkern u1="F" u2="ù" k="45" /> + <hkern u1="F" u2="ø" k="115" /> + <hkern u1="F" u2="ö" k="74" /> + <hkern u1="F" u2="ô" k="74" /> + <hkern u1="F" u2="ó" k="74" /> + <hkern u1="F" u2="ò" k="74" /> + <hkern u1="F" u2="ð" k="102" /> + <hkern u1="F" u2="ï" k="-143" /> + <hkern u1="F" u2="î" k="-82" /> + <hkern u1="F" u2="í" k="-82" /> + <hkern u1="F" u2="ì" k="-82" /> + <hkern u1="F" u2="ë" k="74" /> + <hkern u1="F" u2="ê" k="74" /> + <hkern u1="F" u2="é" k="74" /> + <hkern u1="F" u2="è" k="74" /> + <hkern u1="F" u2="æ" k="82" /> + <hkern u1="F" u2="å" k="115" /> + <hkern u1="F" u2="ä" k="115" /> + <hkern u1="F" u2="ã" k="115" /> + <hkern u1="F" u2="â" k="115" /> + <hkern u1="F" u2="á" k="115" /> + <hkern u1="F" u2="à" k="115" /> + <hkern u1="F" u2="Ø" k="41" /> + <hkern u1="F" u2="Ö" k="41" /> + <hkern u1="F" u2="Õ" k="41" /> + <hkern u1="F" u2="Ô" k="41" /> + <hkern u1="F" u2="Ó" k="41" /> + <hkern u1="F" u2="Ò" k="41" /> + <hkern u1="F" u2="Æ" k="307" /> + <hkern u1="F" u2="Å" k="147" /> + <hkern u1="F" u2="Ä" k="147" /> + <hkern u1="F" u2="Ã" k="147" /> + <hkern u1="F" u2="Â" k="147" /> + <hkern u1="F" u2="Á" k="147" /> + <hkern u1="F" u2="À" k="147" /> + <hkern u1="F" u2="z" k="41" /> + <hkern u1="F" u2="y" k="61" /> + <hkern u1="F" u2="w" k="41" /> + <hkern u1="F" u2="u" k="45" /> + <hkern u1="F" u2="s" k="61" /> + <hkern u1="F" u2="o" k="74" /> + <hkern u1="F" u2="j" k="180" /> + <hkern u1="F" u2="g" k="143" /> + <hkern u1="F" u2="e" k="74" /> + <hkern u1="F" u2="d" k="102" /> + <hkern u1="F" u2="a" k="115" /> + <hkern u1="F" u2="Z" k="-33" /> + <hkern u1="F" u2="W" k="-25" /> + <hkern u1="F" u2="V" k="-33" /> + <hkern u1="F" u2="Q" k="41" /> + <hkern u1="F" u2="O" k="41" /> + <hkern u1="F" u2="J" k="258" /> + <hkern u1="F" u2="G" k="41" /> + <hkern u1="F" u2="A" k="147" /> + <hkern u1="F" u2="." k="82" /> + <hkern u1="F" u2="," k="82" /> + <hkern u1="G" u2="Ÿ" k="139" /> + <hkern u1="G" u2="ÿ" k="33" /> + <hkern u1="G" u2="ý" k="33" /> + <hkern u1="G" u2="Ý" k="139" /> + <hkern u1="G" u2="y" k="33" /> + <hkern u1="G" u2="v" k="33" /> + <hkern u1="G" u2="j" k="139" /> + <hkern u1="G" u2="Y" k="98" /> + <hkern u1="G" u2="W" k="20" /> + <hkern u1="G" u2="V" k="25" /> + <hkern u1="G" u2="T" k="123" /> + <hkern u1="H" u2="ï" k="-41" /> + <hkern u1="H" u2="î" k="-41" /> + <hkern u1="H" u2="í" k="-41" /> + <hkern u1="H" u2="ì" k="-41" /> + <hkern u1="H" u2="Æ" k="20" /> + <hkern u1="H" u2="j" k="123" /> + <hkern u1="I" u2="ï" k="-41" /> + <hkern u1="I" u2="î" k="-41" /> + <hkern u1="I" u2="í" k="-41" /> + <hkern u1="I" u2="ì" k="-41" /> + <hkern u1="I" u2="Æ" k="20" /> + <hkern u1="I" u2="z" k="-25" /> + <hkern u1="I" u2="j" k="168" /> + <hkern u1="J" u2="ï" k="-41" /> + <hkern u1="J" u2="í" k="-41" /> + <hkern u1="J" u2="ì" k="-41" /> + <hkern u1="J" u2="Æ" k="82" /> + <hkern u1="J" u2="Å" k="20" /> + <hkern u1="J" u2="Ä" k="20" /> + <hkern u1="J" u2="Ã" k="20" /> + <hkern u1="J" u2="Â" k="20" /> + <hkern u1="J" u2="Á" k="20" /> + <hkern u1="J" u2="À" k="20" /> + <hkern u1="J" u2="J" k="49" /> + <hkern u1="J" u2="A" k="20" /> + <hkern u1="K" u2="œ" k="82" /> + <hkern u1="K" u2="Œ" k="102" /> + <hkern u1="K" u2="ÿ" k="102" /> + <hkern u1="K" u2="ý" k="102" /> + <hkern u1="K" u2="ü" k="53" /> + <hkern u1="K" u2="û" k="53" /> + <hkern u1="K" u2="ú" k="53" /> + <hkern u1="K" u2="ù" k="53" /> + <hkern u1="K" u2="ø" k="61" /> + <hkern u1="K" u2="ö" k="98" /> + <hkern u1="K" u2="ô" k="98" /> + <hkern u1="K" u2="ó" k="98" /> + <hkern u1="K" u2="ò" k="98" /> + <hkern u1="K" u2="ñ" k="20" /> + <hkern u1="K" u2="ð" k="102" /> + <hkern u1="K" u2="ï" k="-102" /> + <hkern u1="K" u2="î" k="-41" /> + <hkern u1="K" u2="í" k="-41" /> + <hkern u1="K" u2="ì" k="-41" /> + <hkern u1="K" u2="ë" k="98" /> + <hkern u1="K" u2="ê" k="98" /> + <hkern u1="K" u2="é" k="98" /> + <hkern u1="K" u2="è" k="98" /> + <hkern u1="K" u2="æ" k="82" /> + <hkern u1="K" u2="å" k="61" /> + <hkern u1="K" u2="ä" k="61" /> + <hkern u1="K" u2="ã" k="61" /> + <hkern u1="K" u2="â" k="61" /> + <hkern u1="K" u2="á" k="61" /> + <hkern u1="K" u2="à" k="61" /> + <hkern u1="K" u2="Ü" k="25" /> + <hkern u1="K" u2="Û" k="25" /> + <hkern u1="K" u2="Ú" k="25" /> + <hkern u1="K" u2="Ù" k="25" /> + <hkern u1="K" u2="Ø" k="41" /> + <hkern u1="K" u2="Ö" k="139" /> + <hkern u1="K" u2="Õ" k="139" /> + <hkern u1="K" u2="Ô" k="139" /> + <hkern u1="K" u2="Ó" k="139" /> + <hkern u1="K" u2="Ò" k="139" /> + <hkern u1="K" u2="Ç" k="102" /> + <hkern u1="K" u2="y" k="102" /> + <hkern u1="K" u2="w" k="78" /> + <hkern u1="K" u2="v" k="102" /> + <hkern u1="K" u2="u" k="53" /> + <hkern u1="K" u2="s" k="41" /> + <hkern u1="K" u2="q" k="123" /> + <hkern u1="K" u2="o" k="123" /> + <hkern u1="K" u2="n" k="20" /> + <hkern u1="K" u2="j" k="160" /> + <hkern u1="K" u2="g" k="20" /> + <hkern u1="K" u2="e" k="123" /> + <hkern u1="K" u2="d" k="123" /> + <hkern u1="K" u2="c" k="123" /> + <hkern u1="K" u2="a" k="61" /> + <hkern u1="K" u2="Z" k="-25" /> + <hkern u1="K" u2="U" k="25" /> + <hkern u1="K" u2="S" k="57" /> + <hkern u1="K" u2="Q" k="115" /> + <hkern u1="K" u2="O" k="115" /> + <hkern u1="K" u2="G" k="115" /> + <hkern u1="K" u2="C" k="115" /> + <hkern u1="L" u2="Ÿ" k="246" /> + <hkern u1="L" u2="œ" k="82" /> + <hkern u1="L" u2="Œ" k="82" /> + <hkern u1="L" u2="ÿ" k="225" /> + <hkern u1="L" u2="ý" k="225" /> + <hkern u1="L" u2="ü" k="61" /> + <hkern u1="L" u2="û" k="61" /> + <hkern u1="L" u2="ú" k="61" /> + <hkern u1="L" u2="ù" k="41" /> + <hkern u1="L" u2="ø" k="41" /> + <hkern u1="L" u2="ö" k="123" /> + <hkern u1="L" u2="ô" k="123" /> + <hkern u1="L" u2="ó" k="123" /> + <hkern u1="L" u2="ò" k="123" /> + <hkern u1="L" u2="ð" k="123" /> + <hkern u1="L" u2="ë" k="102" /> + <hkern u1="L" u2="ê" k="102" /> + <hkern u1="L" u2="é" k="102" /> + <hkern u1="L" u2="è" k="102" /> + <hkern u1="L" u2="æ" k="102" /> + <hkern u1="L" u2="å" k="61" /> + <hkern u1="L" u2="ä" k="61" /> + <hkern u1="L" u2="ã" k="61" /> + <hkern u1="L" u2="â" k="61" /> + <hkern u1="L" u2="á" k="90" /> + <hkern u1="L" u2="à" k="61" /> + <hkern u1="L" u2="Ý" k="246" /> + <hkern u1="L" u2="Ü" k="82" /> + <hkern u1="L" u2="Û" k="82" /> + <hkern u1="L" u2="Ú" k="82" /> + <hkern u1="L" u2="Ù" k="82" /> + <hkern u1="L" u2="Ø" k="20" /> + <hkern u1="L" u2="Ö" k="143" /> + <hkern u1="L" u2="Õ" k="143" /> + <hkern u1="L" u2="Ô" k="143" /> + <hkern u1="L" u2="Ó" k="143" /> + <hkern u1="L" u2="Ò" k="143" /> + <hkern u1="L" u2="Ç" k="115" /> + <hkern u1="L" u2="z" k="-41" /> + <hkern u1="L" u2="y" k="225" /> + <hkern u1="L" u2="x" k="-41" /> + <hkern u1="L" u2="w" k="143" /> + <hkern u1="L" u2="v" k="225" /> + <hkern u1="L" u2="u" k="41" /> + <hkern u1="L" u2="t" k="61" /> + <hkern u1="L" u2="q" k="102" /> + <hkern u1="L" u2="o" k="102" /> + <hkern u1="L" u2="j" k="82" /> + <hkern u1="L" u2="f" k="41" /> + <hkern u1="L" u2="e" k="102" /> + <hkern u1="L" u2="d" k="102" /> + <hkern u1="L" u2="c" k="102" /> + <hkern u1="L" u2="a" k="61" /> + <hkern u1="L" u2="Z" k="-61" /> + <hkern u1="L" u2="Y" k="246" /> + <hkern u1="L" u2="X" k="-41" /> + <hkern u1="L" u2="W" k="143" /> + <hkern u1="L" u2="V" k="266" /> + <hkern u1="L" u2="U" k="82" /> + <hkern u1="L" u2="T" k="324" /> + <hkern u1="L" u2="Q" k="123" /> + <hkern u1="L" u2="O" k="123" /> + <hkern u1="L" u2="G" k="123" /> + <hkern u1="L" u2="C" k="123" /> + <hkern u1="M" u2="ï" k="-61" /> + <hkern u1="M" u2="î" k="-41" /> + <hkern u1="M" u2="í" k="-41" /> + <hkern u1="M" u2="ì" k="-41" /> + <hkern u1="M" u2="Æ" k="20" /> + <hkern u1="M" u2="j" k="143" /> + <hkern u1="N" u2="ï" k="-61" /> + <hkern u1="N" u2="î" k="-41" /> + <hkern u1="N" u2="í" k="-41" /> + <hkern u1="N" u2="ì" k="-41" /> + <hkern u1="N" u2="Æ" k="20" /> + <hkern u1="N" u2="j" k="123" /> + <hkern u1="O" u2="Ÿ" k="123" /> + <hkern u1="O" u2="ÿ" k="25" /> + <hkern u1="O" u2="ý" k="25" /> + <hkern u1="O" u2="Ý" k="123" /> + <hkern u1="O" u2="Æ" k="184" /> + <hkern u1="O" u2="Å" k="57" /> + <hkern u1="O" u2="Ä" k="57" /> + <hkern u1="O" u2="Ã" k="57" /> + <hkern u1="O" u2="Â" k="57" /> + <hkern u1="O" u2="Á" k="57" /> + <hkern u1="O" u2="À" k="57" /> + <hkern u1="O" u2="y" k="25" /> + <hkern u1="O" u2="v" k="25" /> + <hkern u1="O" u2="s" k="20" /> + <hkern u1="O" u2="j" k="102" /> + <hkern u1="O" u2="Z" k="61" /> + <hkern u1="O" u2="Y" k="123" /> + <hkern u1="O" u2="X" k="82" /> + <hkern u1="O" u2="W" k="61" /> + <hkern u1="O" u2="V" k="82" /> + <hkern u1="O" u2="T" k="184" /> + <hkern u1="O" u2="J" k="29" /> + <hkern u1="O" u2="A" k="57" /> + <hkern u1="O" u2="." k="61" /> + <hkern u1="O" u2="," k="41" /> + <hkern u1="P" u2="Ÿ" k="61" /> + <hkern u1="P" u2="œ" k="41" /> + <hkern u1="P" u2="Œ" k="41" /> + <hkern u1="P" u2="ø" k="61" /> + <hkern u1="P" u2="ö" k="61" /> + <hkern u1="P" u2="ô" k="61" /> + <hkern u1="P" u2="ó" k="61" /> + <hkern u1="P" u2="ò" k="61" /> + <hkern u1="P" u2="ð" k="82" /> + <hkern u1="P" u2="ë" k="61" /> + <hkern u1="P" u2="ê" k="61" /> + <hkern u1="P" u2="é" k="61" /> + <hkern u1="P" u2="è" k="61" /> + <hkern u1="P" u2="ç" k="61" /> + <hkern u1="P" u2="æ" k="82" /> + <hkern u1="P" u2="å" k="61" /> + <hkern u1="P" u2="ä" k="61" /> + <hkern u1="P" u2="ã" k="61" /> + <hkern u1="P" u2="â" k="61" /> + <hkern u1="P" u2="á" k="61" /> + <hkern u1="P" u2="à" k="61" /> + <hkern u1="P" u2="Ý" k="61" /> + <hkern u1="P" u2="Æ" k="389" /> + <hkern u1="P" u2="Å" k="197" /> + <hkern u1="P" u2="Ä" k="197" /> + <hkern u1="P" u2="Ã" k="197" /> + <hkern u1="P" u2="Â" k="197" /> + <hkern u1="P" u2="Á" k="197" /> + <hkern u1="P" u2="À" k="197" /> + <hkern u1="P" u2="s" k="41" /> + <hkern u1="P" u2="o" k="61" /> + <hkern u1="P" u2="j" k="180" /> + <hkern u1="P" u2="g" k="143" /> + <hkern u1="P" u2="e" k="61" /> + <hkern u1="P" u2="d" k="82" /> + <hkern u1="P" u2="c" k="61" /> + <hkern u1="P" u2="a" k="61" /> + <hkern u1="P" u2="Z" k="61" /> + <hkern u1="P" u2="Y" k="61" /> + <hkern u1="P" u2="X" k="41" /> + <hkern u1="P" u2="W" k="29" /> + <hkern u1="P" u2="V" k="41" /> + <hkern u1="P" u2="T" k="66" /> + <hkern u1="P" u2="J" k="266" /> + <hkern u1="P" u2="A" k="197" /> + <hkern u1="P" u2="." k="123" /> + <hkern u1="P" u2="," k="123" /> + <hkern u1="Q" u2="Ÿ" k="123" /> + <hkern u1="Q" u2="Ý" k="123" /> + <hkern u1="Q" u2="Å" k="-41" /> + <hkern u1="Q" u2="Ä" k="-41" /> + <hkern u1="Q" u2="Ã" k="-41" /> + <hkern u1="Q" u2="Â" k="-41" /> + <hkern u1="Q" u2="Á" k="-41" /> + <hkern u1="Q" u2="À" k="-41" /> + <hkern u1="Q" u2="j" k="131" /> + <hkern u1="Q" u2="Z" k="-61" /> + <hkern u1="Q" u2="Y" k="123" /> + <hkern u1="Q" u2="X" k="-25" /> + <hkern u1="Q" u2="W" k="70" /> + <hkern u1="Q" u2="V" k="98" /> + <hkern u1="Q" u2="T" k="139" /> + <hkern u1="Q" u2="A" k="-41" /> + <hkern u1="R" u2="Ÿ" k="82" /> + <hkern u1="R" u2="œ" k="41" /> + <hkern u1="R" u2="Œ" k="41" /> + <hkern u1="R" u2="ø" k="61" /> + <hkern u1="R" u2="ö" k="61" /> + <hkern u1="R" u2="ô" k="61" /> + <hkern u1="R" u2="ó" k="61" /> + <hkern u1="R" u2="ò" k="61" /> + <hkern u1="R" u2="ð" k="82" /> + <hkern u1="R" u2="ë" k="61" /> + <hkern u1="R" u2="ê" k="61" /> + <hkern u1="R" u2="é" k="61" /> + <hkern u1="R" u2="è" k="61" /> + <hkern u1="R" u2="æ" k="61" /> + <hkern u1="R" u2="å" k="61" /> + <hkern u1="R" u2="ä" k="61" /> + <hkern u1="R" u2="ã" k="61" /> + <hkern u1="R" u2="â" k="61" /> + <hkern u1="R" u2="á" k="61" /> + <hkern u1="R" u2="à" k="61" /> + <hkern u1="R" u2="Ý" k="82" /> + <hkern u1="R" u2="Æ" k="123" /> + <hkern u1="R" u2="Å" k="37" /> + <hkern u1="R" u2="Ä" k="37" /> + <hkern u1="R" u2="Ã" k="37" /> + <hkern u1="R" u2="Â" k="37" /> + <hkern u1="R" u2="Á" k="16" /> + <hkern u1="R" u2="À" k="37" /> + <hkern u1="R" u2="z" k="-41" /> + <hkern u1="R" u2="s" k="20" /> + <hkern u1="R" u2="q" k="61" /> + <hkern u1="R" u2="o" k="61" /> + <hkern u1="R" u2="j" k="180" /> + <hkern u1="R" u2="g" k="61" /> + <hkern u1="R" u2="e" k="61" /> + <hkern u1="R" u2="d" k="61" /> + <hkern u1="R" u2="a" k="61" /> + <hkern u1="R" u2="Z" k="41" /> + <hkern u1="R" u2="Y" k="82" /> + <hkern u1="R" u2="X" k="33" /> + <hkern u1="R" u2="W" k="25" /> + <hkern u1="R" u2="V" k="45" /> + <hkern u1="R" u2="T" k="41" /> + <hkern u1="R" u2="J" k="57" /> + <hkern u1="R" u2="A" k="37" /> + <hkern u1="S" u2="Ÿ" k="41" /> + <hkern u1="S" u2="ø" k="20" /> + <hkern u1="S" u2="ö" k="20" /> + <hkern u1="S" u2="ô" k="20" /> + <hkern u1="S" u2="ó" k="20" /> + <hkern u1="S" u2="ò" k="20" /> + <hkern u1="S" u2="ç" k="20" /> + <hkern u1="S" u2="å" k="20" /> + <hkern u1="S" u2="ä" k="20" /> + <hkern u1="S" u2="ã" k="20" /> + <hkern u1="S" u2="â" k="20" /> + <hkern u1="S" u2="á" k="20" /> + <hkern u1="S" u2="à" k="20" /> + <hkern u1="S" u2="Ý" k="41" /> + <hkern u1="S" u2="Æ" k="82" /> + <hkern u1="S" u2="y" k="20" /> + <hkern u1="S" u2="v" k="20" /> + <hkern u1="S" u2="q" k="20" /> + <hkern u1="S" u2="o" k="20" /> + <hkern u1="S" u2="j" k="139" /> + <hkern u1="S" u2="e" k="20" /> + <hkern u1="S" u2="c" k="20" /> + <hkern u1="S" u2="a" k="20" /> + <hkern u1="S" u2="Y" k="41" /> + <hkern u1="S" u2="X" k="33" /> + <hkern u1="S" u2="W" k="33" /> + <hkern u1="S" u2="V" k="41" /> + <hkern u1="S" u2="T" k="41" /> + <hkern u1="T" u2="Ÿ" k="-20" /> + <hkern u1="T" u2="œ" k="287" /> + <hkern u1="T" u2="Œ" k="143" /> + <hkern u1="T" u2="ÿ" k="270" /> + <hkern u1="T" u2="ý" k="270" /> + <hkern u1="T" u2="ü" k="250" /> + <hkern u1="T" u2="û" k="250" /> + <hkern u1="T" u2="ú" k="250" /> + <hkern u1="T" u2="ù" k="250" /> + <hkern u1="T" u2="ø" k="266" /> + <hkern u1="T" u2="ö" k="360" /> + <hkern u1="T" u2="õ" k="360" /> + <hkern u1="T" u2="ô" k="360" /> + <hkern u1="T" u2="ó" k="360" /> + <hkern u1="T" u2="ò" k="360" /> + <hkern u1="T" u2="ñ" k="164" /> + <hkern u1="T" u2="ð" k="328" /> + <hkern u1="T" u2="ï" k="-123" /> + <hkern u1="T" u2="î" k="-82" /> + <hkern u1="T" u2="í" k="-61" /> + <hkern u1="T" u2="ì" k="-61" /> + <hkern u1="T" u2="ë" k="360" /> + <hkern u1="T" u2="ê" k="360" /> + <hkern u1="T" u2="é" k="360" /> + <hkern u1="T" u2="è" k="360" /> + <hkern u1="T" u2="ç" k="246" /> + <hkern u1="T" u2="æ" k="328" /> + <hkern u1="T" u2="å" k="360" /> + <hkern u1="T" u2="ä" k="360" /> + <hkern u1="T" u2="ã" k="360" /> + <hkern u1="T" u2="â" k="360" /> + <hkern u1="T" u2="á" k="360" /> + <hkern u1="T" u2="à" k="360" /> + <hkern u1="T" u2="ß" k="61" /> + <hkern u1="T" u2="Ý" k="-20" /> + <hkern u1="T" u2="Ø" k="143" /> + <hkern u1="T" u2="Ö" k="184" /> + <hkern u1="T" u2="Õ" k="184" /> + <hkern u1="T" u2="Ô" k="184" /> + <hkern u1="T" u2="Ó" k="184" /> + <hkern u1="T" u2="Ò" k="184" /> + <hkern u1="T" u2="Ç" k="123" /> + <hkern u1="T" u2="Æ" k="266" /> + <hkern u1="T" u2="Å" k="168" /> + <hkern u1="T" u2="Ä" k="168" /> + <hkern u1="T" u2="Ã" k="168" /> + <hkern u1="T" u2="Â" k="168" /> + <hkern u1="T" u2="Á" k="168" /> + <hkern u1="T" u2="À" k="168" /> + <hkern u1="T" u2="z" k="131" /> + <hkern u1="T" u2="y" k="270" /> + <hkern u1="T" u2="w" k="246" /> + <hkern u1="T" u2="v" k="188" /> + <hkern u1="T" u2="u" k="250" /> + <hkern u1="T" u2="s" k="246" /> + <hkern u1="T" u2="r" k="250" /> + <hkern u1="T" u2="o" k="360" /> + <hkern u1="T" u2="n" k="164" /> + <hkern u1="T" u2="j" k="217" /> + <hkern u1="T" u2="g" k="348" /> + <hkern u1="T" u2="e" k="360" /> + <hkern u1="T" u2="d" k="369" /> + <hkern u1="T" u2="c" k="246" /> + <hkern u1="T" u2="a" k="360" /> + <hkern u1="T" u2="Z" k="-20" /> + <hkern u1="T" u2="Y" k="-20" /> + <hkern u1="T" u2="X" k="-16" /> + <hkern u1="T" u2="W" k="-20" /> + <hkern u1="T" u2="V" k="-16" /> + <hkern u1="T" u2="T" k="-20" /> + <hkern u1="T" u2="S" k="41" /> + <hkern u1="T" u2="Q" k="184" /> + <hkern u1="T" u2="O" k="184" /> + <hkern u1="T" u2="J" k="225" /> + <hkern u1="T" u2="G" k="143" /> + <hkern u1="T" u2="C" k="123" /> + <hkern u1="T" u2="A" k="168" /> + <hkern u1="T" u2="." k="102" /> + <hkern u1="T" u2="," k="102" /> + <hkern u1="U" u2="ð" k="20" /> + <hkern u1="U" u2="ï" k="-61" /> + <hkern u1="U" u2="î" k="-41" /> + <hkern u1="U" u2="í" k="-41" /> + <hkern u1="U" u2="ì" k="-41" /> + <hkern u1="U" u2="Æ" k="102" /> + <hkern u1="U" u2="j" k="164" /> + <hkern u1="U" u2="V" k="25" /> + <hkern u1="U" u2="J" k="41" /> + <hkern u1="U" u2="A" k="61" /> + <hkern u1="V" u2="Ÿ" k="-25" /> + <hkern u1="V" u2="œ" k="102" /> + <hkern u1="V" u2="Œ" k="82" /> + <hkern u1="V" u2="ü" k="25" /> + <hkern u1="V" u2="û" k="25" /> + <hkern u1="V" u2="ú" k="25" /> + <hkern u1="V" u2="ù" k="25" /> + <hkern u1="V" u2="ø" k="147" /> + <hkern u1="V" u2="ö" k="147" /> + <hkern u1="V" u2="ô" k="147" /> + <hkern u1="V" u2="ó" k="147" /> + <hkern u1="V" u2="ò" k="147" /> + <hkern u1="V" u2="ñ" k="61" /> + <hkern u1="V" u2="ð" k="123" /> + <hkern u1="V" u2="ï" k="-102" /> + <hkern u1="V" u2="î" k="-61" /> + <hkern u1="V" u2="í" k="-61" /> + <hkern u1="V" u2="ì" k="-61" /> + <hkern u1="V" u2="ë" k="143" /> + <hkern u1="V" u2="ê" k="143" /> + <hkern u1="V" u2="é" k="143" /> + <hkern u1="V" u2="è" k="143" /> + <hkern u1="V" u2="ç" k="143" /> + <hkern u1="V" u2="æ" k="143" /> + <hkern u1="V" u2="å" k="147" /> + <hkern u1="V" u2="ä" k="147" /> + <hkern u1="V" u2="ã" k="147" /> + <hkern u1="V" u2="â" k="147" /> + <hkern u1="V" u2="á" k="147" /> + <hkern u1="V" u2="à" k="147" /> + <hkern u1="V" u2="ß" k="20" /> + <hkern u1="V" u2="Ý" k="-25" /> + <hkern u1="V" u2="Ü" k="25" /> + <hkern u1="V" u2="Û" k="25" /> + <hkern u1="V" u2="Ú" k="25" /> + <hkern u1="V" u2="Ù" k="25" /> + <hkern u1="V" u2="Ø" k="82" /> + <hkern u1="V" u2="Ö" k="82" /> + <hkern u1="V" u2="Õ" k="82" /> + <hkern u1="V" u2="Ô" k="82" /> + <hkern u1="V" u2="Ó" k="82" /> + <hkern u1="V" u2="Ò" k="82" /> + <hkern u1="V" u2="Ç" k="74" /> + <hkern u1="V" u2="Æ" k="266" /> + <hkern u1="V" u2="Å" k="184" /> + <hkern u1="V" u2="Ä" k="184" /> + <hkern u1="V" u2="Ã" k="184" /> + <hkern u1="V" u2="Â" k="184" /> + <hkern u1="V" u2="Á" k="184" /> + <hkern u1="V" u2="À" k="184" /> + <hkern u1="V" u2="u" k="25" /> + <hkern u1="V" u2="s" k="102" /> + <hkern u1="V" u2="r" k="29" /> + <hkern u1="V" u2="o" k="147" /> + <hkern u1="V" u2="n" k="61" /> + <hkern u1="V" u2="j" k="209" /> + <hkern u1="V" u2="g" k="205" /> + <hkern u1="V" u2="e" k="143" /> + <hkern u1="V" u2="d" k="184" /> + <hkern u1="V" u2="c" k="143" /> + <hkern u1="V" u2="a" k="147" /> + <hkern u1="V" u2="Z" k="-25" /> + <hkern u1="V" u2="Y" k="-25" /> + <hkern u1="V" u2="X" k="-25" /> + <hkern u1="V" u2="W" k="-29" /> + <hkern u1="V" u2="V" k="-20" /> + <hkern u1="V" u2="U" k="25" /> + <hkern u1="V" u2="T" k="-16" /> + <hkern u1="V" u2="S" k="41" /> + <hkern u1="V" u2="Q" k="98" /> + <hkern u1="V" u2="O" k="82" /> + <hkern u1="V" u2="J" k="217" /> + <hkern u1="V" u2="G" k="90" /> + <hkern u1="V" u2="C" k="74" /> + <hkern u1="V" u2="A" k="184" /> + <hkern u1="V" u2="." k="41" /> + <hkern u1="V" u2="," k="41" /> + <hkern u1="W" u2="Ÿ" k="-20" /> + <hkern u1="W" u2="œ" k="61" /> + <hkern u1="W" u2="Œ" k="20" /> + <hkern u1="W" u2="ü" k="25" /> + <hkern u1="W" u2="û" k="25" /> + <hkern u1="W" u2="ú" k="25" /> + <hkern u1="W" u2="ù" k="25" /> + <hkern u1="W" u2="ø" k="82" /> + <hkern u1="W" u2="ö" k="123" /> + <hkern u1="W" u2="ô" k="123" /> + <hkern u1="W" u2="ó" k="123" /> + <hkern u1="W" u2="ò" k="123" /> + <hkern u1="W" u2="ð" k="102" /> + <hkern u1="W" u2="ï" k="-102" /> + <hkern u1="W" u2="î" k="-61" /> + <hkern u1="W" u2="í" k="-61" /> + <hkern u1="W" u2="ì" k="-61" /> + <hkern u1="W" u2="ë" k="123" /> + <hkern u1="W" u2="ê" k="123" /> + <hkern u1="W" u2="é" k="123" /> + <hkern u1="W" u2="è" k="123" /> + <hkern u1="W" u2="ç" k="115" /> + <hkern u1="W" u2="æ" k="82" /> + <hkern u1="W" u2="å" k="123" /> + <hkern u1="W" u2="ä" k="123" /> + <hkern u1="W" u2="ã" k="123" /> + <hkern u1="W" u2="â" k="123" /> + <hkern u1="W" u2="á" k="123" /> + <hkern u1="W" u2="à" k="123" /> + <hkern u1="W" u2="Ý" k="-20" /> + <hkern u1="W" u2="Ø" k="61" /> + <hkern u1="W" u2="Ö" k="61" /> + <hkern u1="W" u2="Õ" k="61" /> + <hkern u1="W" u2="Ô" k="61" /> + <hkern u1="W" u2="Ó" k="61" /> + <hkern u1="W" u2="Ò" k="61" /> + <hkern u1="W" u2="Ç" k="49" /> + <hkern u1="W" u2="Æ" k="205" /> + <hkern u1="W" u2="Å" k="147" /> + <hkern u1="W" u2="Ä" k="147" /> + <hkern u1="W" u2="Ã" k="147" /> + <hkern u1="W" u2="Â" k="147" /> + <hkern u1="W" u2="Á" k="147" /> + <hkern u1="W" u2="À" k="147" /> + <hkern u1="W" u2="u" k="25" /> + <hkern u1="W" u2="s" k="61" /> + <hkern u1="W" u2="r" k="25" /> + <hkern u1="W" u2="o" k="123" /> + <hkern u1="W" u2="j" k="160" /> + <hkern u1="W" u2="g" k="123" /> + <hkern u1="W" u2="e" k="123" /> + <hkern u1="W" u2="d" k="102" /> + <hkern u1="W" u2="c" k="115" /> + <hkern u1="W" u2="a" k="123" /> + <hkern u1="W" u2="Z" k="-25" /> + <hkern u1="W" u2="Y" k="-20" /> + <hkern u1="W" u2="X" k="-25" /> + <hkern u1="W" u2="W" k="-20" /> + <hkern u1="W" u2="V" k="-29" /> + <hkern u1="W" u2="T" k="-20" /> + <hkern u1="W" u2="S" k="33" /> + <hkern u1="W" u2="Q" k="70" /> + <hkern u1="W" u2="O" k="61" /> + <hkern u1="W" u2="J" k="188" /> + <hkern u1="W" u2="G" k="66" /> + <hkern u1="W" u2="C" k="49" /> + <hkern u1="W" u2="A" k="147" /> + <hkern u1="W" u2="." k="20" /> + <hkern u1="W" u2="," k="20" /> + <hkern u1="X" u2="Ÿ" k="-25" /> + <hkern u1="X" u2="œ" k="41" /> + <hkern u1="X" u2="Œ" k="41" /> + <hkern u1="X" u2="ÿ" k="33" /> + <hkern u1="X" u2="ý" k="33" /> + <hkern u1="X" u2="ü" k="37" /> + <hkern u1="X" u2="û" k="37" /> + <hkern u1="X" u2="ú" k="37" /> + <hkern u1="X" u2="ù" k="37" /> + <hkern u1="X" u2="ø" k="20" /> + <hkern u1="X" u2="ö" k="66" /> + <hkern u1="X" u2="ô" k="66" /> + <hkern u1="X" u2="ó" k="66" /> + <hkern u1="X" u2="ò" k="66" /> + <hkern u1="X" u2="ð" k="61" /> + <hkern u1="X" u2="ï" k="-102" /> + <hkern u1="X" u2="î" k="-61" /> + <hkern u1="X" u2="í" k="-61" /> + <hkern u1="X" u2="ì" k="-61" /> + <hkern u1="X" u2="ë" k="78" /> + <hkern u1="X" u2="ê" k="78" /> + <hkern u1="X" u2="é" k="78" /> + <hkern u1="X" u2="è" k="78" /> + <hkern u1="X" u2="ç" k="66" /> + <hkern u1="X" u2="æ" k="102" /> + <hkern u1="X" u2="å" k="49" /> + <hkern u1="X" u2="ä" k="49" /> + <hkern u1="X" u2="ã" k="49" /> + <hkern u1="X" u2="â" k="49" /> + <hkern u1="X" u2="á" k="49" /> + <hkern u1="X" u2="à" k="49" /> + <hkern u1="X" u2="Ý" k="-25" /> + <hkern u1="X" u2="Ø" k="20" /> + <hkern u1="X" u2="Ö" k="82" /> + <hkern u1="X" u2="Õ" k="82" /> + <hkern u1="X" u2="Ô" k="82" /> + <hkern u1="X" u2="Ó" k="82" /> + <hkern u1="X" u2="Ò" k="82" /> + <hkern u1="X" u2="Ç" k="41" /> + <hkern u1="X" u2="Å" k="-25" /> + <hkern u1="X" u2="Ä" k="-25" /> + <hkern u1="X" u2="Ã" k="-25" /> + <hkern u1="X" u2="Â" k="-25" /> + <hkern u1="X" u2="Á" k="-25" /> + <hkern u1="X" u2="À" k="-25" /> + <hkern u1="X" u2="y" k="33" /> + <hkern u1="X" u2="u" k="37" /> + <hkern u1="X" u2="o" k="66" /> + <hkern u1="X" u2="j" k="123" /> + <hkern u1="X" u2="e" k="78" /> + <hkern u1="X" u2="d" k="82" /> + <hkern u1="X" u2="c" k="66" /> + <hkern u1="X" u2="a" k="49" /> + <hkern u1="X" u2="Z" k="-25" /> + <hkern u1="X" u2="Y" k="-25" /> + <hkern u1="X" u2="X" k="-25" /> + <hkern u1="X" u2="W" k="-25" /> + <hkern u1="X" u2="V" k="-25" /> + <hkern u1="X" u2="T" k="-16" /> + <hkern u1="X" u2="S" k="33" /> + <hkern u1="X" u2="Q" k="78" /> + <hkern u1="X" u2="O" k="82" /> + <hkern u1="X" u2="G" k="57" /> + <hkern u1="X" u2="C" k="41" /> + <hkern u1="X" u2="A" k="-25" /> + <hkern u1="Y" u2="œ" k="205" /> + <hkern u1="Y" u2="Œ" k="82" /> + <hkern u1="Y" u2="ü" k="147" /> + <hkern u1="Y" u2="û" k="147" /> + <hkern u1="Y" u2="ú" k="147" /> + <hkern u1="Y" u2="ù" k="147" /> + <hkern u1="Y" u2="ø" k="254" /> + <hkern u1="Y" u2="ö" k="295" /> + <hkern u1="Y" u2="õ" k="295" /> + <hkern u1="Y" u2="ô" k="295" /> + <hkern u1="Y" u2="ó" k="295" /> + <hkern u1="Y" u2="ò" k="295" /> + <hkern u1="Y" u2="ñ" k="102" /> + <hkern u1="Y" u2="ð" k="225" /> + <hkern u1="Y" u2="ï" k="-102" /> + <hkern u1="Y" u2="î" k="-61" /> + <hkern u1="Y" u2="í" k="-61" /> + <hkern u1="Y" u2="ì" k="-61" /> + <hkern u1="Y" u2="ë" k="295" /> + <hkern u1="Y" u2="ê" k="295" /> + <hkern u1="Y" u2="é" k="295" /> + <hkern u1="Y" u2="è" k="295" /> + <hkern u1="Y" u2="ç" k="205" /> + <hkern u1="Y" u2="æ" k="205" /> + <hkern u1="Y" u2="å" k="246" /> + <hkern u1="Y" u2="ä" k="246" /> + <hkern u1="Y" u2="ã" k="246" /> + <hkern u1="Y" u2="â" k="246" /> + <hkern u1="Y" u2="á" k="246" /> + <hkern u1="Y" u2="à" k="246" /> + <hkern u1="Y" u2="ß" k="20" /> + <hkern u1="Y" u2="Ø" k="123" /> + <hkern u1="Y" u2="Ö" k="123" /> + <hkern u1="Y" u2="Õ" k="123" /> + <hkern u1="Y" u2="Ô" k="123" /> + <hkern u1="Y" u2="Ó" k="123" /> + <hkern u1="Y" u2="Ò" k="123" /> + <hkern u1="Y" u2="Ç" k="102" /> + <hkern u1="Y" u2="Æ" k="348" /> + <hkern u1="Y" u2="Å" k="225" /> + <hkern u1="Y" u2="Ä" k="225" /> + <hkern u1="Y" u2="Ã" k="225" /> + <hkern u1="Y" u2="Â" k="225" /> + <hkern u1="Y" u2="Á" k="225" /> + <hkern u1="Y" u2="À" k="225" /> + <hkern u1="Y" u2="z" k="82" /> + <hkern u1="Y" u2="v" k="127" /> + <hkern u1="Y" u2="u" k="147" /> + <hkern u1="Y" u2="t" k="25" /> + <hkern u1="Y" u2="s" k="184" /> + <hkern u1="Y" u2="r" k="102" /> + <hkern u1="Y" u2="o" k="266" /> + <hkern u1="Y" u2="n" k="102" /> + <hkern u1="Y" u2="j" k="184" /> + <hkern u1="Y" u2="i" k="25" /> + <hkern u1="Y" u2="g" k="279" /> + <hkern u1="Y" u2="e" k="295" /> + <hkern u1="Y" u2="d" k="205" /> + <hkern u1="Y" u2="c" k="205" /> + <hkern u1="Y" u2="a" k="246" /> + <hkern u1="Y" u2="Z" k="-25" /> + <hkern u1="Y" u2="Y" k="-20" /> + <hkern u1="Y" u2="X" k="-25" /> + <hkern u1="Y" u2="W" k="-20" /> + <hkern u1="Y" u2="V" k="-25" /> + <hkern u1="Y" u2="T" k="-20" /> + <hkern u1="Y" u2="S" k="41" /> + <hkern u1="Y" u2="Q" k="123" /> + <hkern u1="Y" u2="O" k="123" /> + <hkern u1="Y" u2="J" k="266" /> + <hkern u1="Y" u2="G" k="123" /> + <hkern u1="Y" u2="C" k="102" /> + <hkern u1="Y" u2="A" k="225" /> + <hkern u1="Y" u2="." k="61" /> + <hkern u1="Y" u2="," k="61" /> + <hkern u1="Z" u2="Ÿ" k="-25" /> + <hkern u1="Z" u2="œ" k="41" /> + <hkern u1="Z" u2="Œ" k="41" /> + <hkern u1="Z" u2="ÿ" k="20" /> + <hkern u1="Z" u2="ý" k="20" /> + <hkern u1="Z" u2="ü" k="25" /> + <hkern u1="Z" u2="û" k="25" /> + <hkern u1="Z" u2="ú" k="25" /> + <hkern u1="Z" u2="ù" k="25" /> + <hkern u1="Z" u2="ø" k="41" /> + <hkern u1="Z" u2="ö" k="82" /> + <hkern u1="Z" u2="õ" k="82" /> + <hkern u1="Z" u2="ô" k="82" /> + <hkern u1="Z" u2="ó" k="82" /> + <hkern u1="Z" u2="ò" k="82" /> + <hkern u1="Z" u2="ð" k="82" /> + <hkern u1="Z" u2="ï" k="-102" /> + <hkern u1="Z" u2="î" k="-61" /> + <hkern u1="Z" u2="í" k="-61" /> + <hkern u1="Z" u2="ì" k="-61" /> + <hkern u1="Z" u2="ë" k="82" /> + <hkern u1="Z" u2="ê" k="82" /> + <hkern u1="Z" u2="é" k="82" /> + <hkern u1="Z" u2="è" k="82" /> + <hkern u1="Z" u2="æ" k="82" /> + <hkern u1="Z" u2="å" k="41" /> + <hkern u1="Z" u2="ä" k="41" /> + <hkern u1="Z" u2="ã" k="41" /> + <hkern u1="Z" u2="â" k="41" /> + <hkern u1="Z" u2="á" k="41" /> + <hkern u1="Z" u2="à" k="41" /> + <hkern u1="Z" u2="Ý" k="-25" /> + <hkern u1="Z" u2="Ø" k="20" /> + <hkern u1="Z" u2="Ç" k="33" /> + <hkern u1="Z" u2="Å" k="-66" /> + <hkern u1="Z" u2="Ä" k="-66" /> + <hkern u1="Z" u2="Ã" k="-66" /> + <hkern u1="Z" u2="Â" k="-66" /> + <hkern u1="Z" u2="Á" k="-66" /> + <hkern u1="Z" u2="À" k="-66" /> + <hkern u1="Z" u2="y" k="33" /> + <hkern u1="Z" u2="w" k="25" /> + <hkern u1="Z" u2="v" k="33" /> + <hkern u1="Z" u2="u" k="25" /> + <hkern u1="Z" u2="q" k="82" /> + <hkern u1="Z" u2="o" k="82" /> + <hkern u1="Z" u2="j" k="131" /> + <hkern u1="Z" u2="e" k="82" /> + <hkern u1="Z" u2="d" k="82" /> + <hkern u1="Z" u2="c" k="82" /> + <hkern u1="Z" u2="a" k="41" /> + <hkern u1="Z" u2="Y" k="-25" /> + <hkern u1="Z" u2="X" k="-25" /> + <hkern u1="Z" u2="W" k="-25" /> + <hkern u1="Z" u2="V" k="-25" /> + <hkern u1="Z" u2="T" k="-20" /> + <hkern u1="Z" u2="Q" k="61" /> + <hkern u1="Z" u2="O" k="61" /> + <hkern u1="Z" u2="J" k="-20" /> + <hkern u1="Z" u2="G" k="61" /> + <hkern u1="Z" u2="C" k="61" /> + <hkern u1="Z" u2="A" k="-66" /> + <hkern u1="a" u2="j" k="61" /> + <hkern u1="b" u2="å" k="41" /> + <hkern u1="b" u2="ä" k="41" /> + <hkern u1="b" u2="ã" k="41" /> + <hkern u1="b" u2="â" k="41" /> + <hkern u1="b" u2="á" k="41" /> + <hkern u1="b" u2="à" k="41" /> + <hkern u1="b" u2="z" k="49" /> + <hkern u1="b" u2="j" k="143" /> + <hkern u1="b" u2="a" k="20" /> + <hkern u1="c" u2="z" k="33" /> + <hkern u1="c" u2="y" k="29" /> + <hkern u1="c" u2="w" k="20" /> + <hkern u1="c" u2="v" k="29" /> + <hkern u1="c" u2="j" k="90" /> + <hkern u1="d" u2="j" k="66" /> + <hkern u1="e" u2="ÿ" k="57" /> + <hkern u1="e" u2="ý" k="57" /> + <hkern u1="e" u2="å" k="20" /> + <hkern u1="e" u2="ä" k="20" /> + <hkern u1="e" u2="ã" k="20" /> + <hkern u1="e" u2="â" k="20" /> + <hkern u1="e" u2="á" k="20" /> + <hkern u1="e" u2="à" k="20" /> + <hkern u1="e" u2="z" k="33" /> + <hkern u1="e" u2="y" k="57" /> + <hkern u1="e" u2="x" k="41" /> + <hkern u1="e" u2="w" k="41" /> + <hkern u1="e" u2="v" k="57" /> + <hkern u1="e" u2="j" k="70" /> + <hkern u1="f" u2="œ" k="61" /> + <hkern u1="f" u2="ø" k="123" /> + <hkern u1="f" u2="ö" k="143" /> + <hkern u1="f" u2="õ" k="143" /> + <hkern u1="f" u2="ô" k="143" /> + <hkern u1="f" u2="ó" k="143" /> + <hkern u1="f" u2="ò" k="143" /> + <hkern u1="f" u2="ð" k="82" /> + <hkern u1="f" u2="ë" k="143" /> + <hkern u1="f" u2="ê" k="143" /> + <hkern u1="f" u2="é" k="143" /> + <hkern u1="f" u2="è" k="143" /> + <hkern u1="f" u2="ç" k="123" /> + <hkern u1="f" u2="æ" k="61" /> + <hkern u1="f" u2="å" k="82" /> + <hkern u1="f" u2="ä" k="82" /> + <hkern u1="f" u2="ã" k="82" /> + <hkern u1="f" u2="â" k="82" /> + <hkern u1="f" u2="á" k="82" /> + <hkern u1="f" u2="à" k="82" /> + <hkern u1="f" u2="s" k="33" /> + <hkern u1="f" u2="q" k="143" /> + <hkern u1="f" u2="o" k="143" /> + <hkern u1="f" u2="j" k="147" /> + <hkern u1="f" u2="g" k="123" /> + <hkern u1="f" u2="e" k="143" /> + <hkern u1="f" u2="d" k="123" /> + <hkern u1="f" u2="c" k="123" /> + <hkern u1="f" u2="a" k="82" /> + <hkern u1="g" u2="ö" k="41" /> + <hkern u1="g" u2="õ" k="41" /> + <hkern u1="g" u2="ô" k="41" /> + <hkern u1="g" u2="ó" k="41" /> + <hkern u1="g" u2="ò" k="41" /> + <hkern u1="g" u2="ð" k="41" /> + <hkern u1="g" u2="ë" k="41" /> + <hkern u1="g" u2="ê" k="41" /> + <hkern u1="g" u2="é" k="41" /> + <hkern u1="g" u2="è" k="41" /> + <hkern u1="g" u2="ç" k="41" /> + <hkern u1="g" u2="æ" k="29" /> + <hkern u1="g" u2="å" k="29" /> + <hkern u1="g" u2="ä" k="29" /> + <hkern u1="g" u2="ã" k="29" /> + <hkern u1="g" u2="â" k="29" /> + <hkern u1="g" u2="á" k="29" /> + <hkern u1="g" u2="à" k="29" /> + <hkern u1="g" u2="q" k="41" /> + <hkern u1="g" u2="o" k="41" /> + <hkern u1="g" u2="j" k="37" /> + <hkern u1="g" u2="e" k="41" /> + <hkern u1="g" u2="d" k="41" /> + <hkern u1="g" u2="c" k="41" /> + <hkern u1="g" u2="a" k="29" /> + <hkern u1="h" u2="ÿ" k="66" /> + <hkern u1="h" u2="ý" k="66" /> + <hkern u1="h" u2="y" k="66" /> + <hkern u1="h" u2="w" k="53" /> + <hkern u1="h" u2="v" k="66" /> + <hkern u1="h" u2="j" k="74" /> + <hkern u1="i" u2="j" k="123" /> + <hkern u1="j" u2="j" k="25" /> + <hkern u1="k" u2="œ" k="82" /> + <hkern u1="k" u2="ø" k="61" /> + <hkern u1="k" u2="ö" k="90" /> + <hkern u1="k" u2="ô" k="90" /> + <hkern u1="k" u2="ó" k="90" /> + <hkern u1="k" u2="ò" k="90" /> + <hkern u1="k" u2="ð" k="61" /> + <hkern u1="k" u2="ë" k="78" /> + <hkern u1="k" u2="ê" k="78" /> + <hkern u1="k" u2="é" k="78" /> + <hkern u1="k" u2="è" k="78" /> + <hkern u1="k" u2="ç" k="66" /> + <hkern u1="k" u2="æ" k="82" /> + <hkern u1="k" u2="å" k="41" /> + <hkern u1="k" u2="ä" k="41" /> + <hkern u1="k" u2="ã" k="41" /> + <hkern u1="k" u2="â" k="41" /> + <hkern u1="k" u2="á" k="41" /> + <hkern u1="k" u2="à" k="41" /> + <hkern u1="k" u2="z" k="-41" /> + <hkern u1="k" u2="x" k="-41" /> + <hkern u1="k" u2="q" k="82" /> + <hkern u1="k" u2="o" k="82" /> + <hkern u1="k" u2="j" k="74" /> + <hkern u1="k" u2="f" k="-37" /> + <hkern u1="k" u2="e" k="82" /> + <hkern u1="k" u2="d" k="82" /> + <hkern u1="k" u2="c" k="66" /> + <hkern u1="k" u2="a" k="41" /> + <hkern u1="l" u2="j" k="74" /> + <hkern u1="l" u2="f" k="-45" /> + <hkern u1="m" u2="ÿ" k="29" /> + <hkern u1="m" u2="ý" k="29" /> + <hkern u1="m" u2="y" k="29" /> + <hkern u1="m" u2="j" k="74" /> + <hkern u1="n" u2="ÿ" k="33" /> + <hkern u1="n" u2="ý" k="33" /> + <hkern u1="n" u2="y" k="41" /> + <hkern u1="n" u2="v" k="41" /> + <hkern u1="n" u2="j" k="61" /> + <hkern u1="o" u2="ÿ" k="74" /> + <hkern u1="o" u2="ý" k="74" /> + <hkern u1="o" u2="å" k="20" /> + <hkern u1="o" u2="ä" k="20" /> + <hkern u1="o" u2="ã" k="20" /> + <hkern u1="o" u2="â" k="20" /> + <hkern u1="o" u2="á" k="20" /> + <hkern u1="o" u2="à" k="20" /> + <hkern u1="o" u2="z" k="49" /> + <hkern u1="o" u2="y" k="74" /> + <hkern u1="o" u2="x" k="74" /> + <hkern u1="o" u2="w" k="49" /> + <hkern u1="o" u2="v" k="74" /> + <hkern u1="o" u2="j" k="123" /> + <hkern u1="p" u2="ÿ" k="78" /> + <hkern u1="p" u2="ý" k="78" /> + <hkern u1="p" u2="å" k="20" /> + <hkern u1="p" u2="ä" k="20" /> + <hkern u1="p" u2="ã" k="20" /> + <hkern u1="p" u2="â" k="20" /> + <hkern u1="p" u2="á" k="20" /> + <hkern u1="p" u2="à" k="20" /> + <hkern u1="p" u2="z" k="49" /> + <hkern u1="p" u2="y" k="78" /> + <hkern u1="p" u2="x" k="45" /> + <hkern u1="p" u2="w" k="45" /> + <hkern u1="p" u2="v" k="57" /> + <hkern u1="p" u2="j" k="123" /> + <hkern u1="p" u2="a" k="20" /> + <hkern u1="r" u2="ÿ" k="-49" /> + <hkern u1="r" u2="ý" k="-49" /> + <hkern u1="r" u2="ø" k="82" /> + <hkern u1="r" u2="ö" k="82" /> + <hkern u1="r" u2="ô" k="82" /> + <hkern u1="r" u2="ó" k="82" /> + <hkern u1="r" u2="ò" k="82" /> + <hkern u1="r" u2="ð" k="61" /> + <hkern u1="r" u2="ë" k="78" /> + <hkern u1="r" u2="ê" k="78" /> + <hkern u1="r" u2="é" k="78" /> + <hkern u1="r" u2="è" k="78" /> + <hkern u1="r" u2="ç" k="82" /> + <hkern u1="r" u2="å" k="49" /> + <hkern u1="r" u2="ä" k="49" /> + <hkern u1="r" u2="ã" k="49" /> + <hkern u1="r" u2="â" k="49" /> + <hkern u1="r" u2="á" k="49" /> + <hkern u1="r" u2="à" k="49" /> + <hkern u1="r" u2="z" k="-41" /> + <hkern u1="r" u2="y" k="-49" /> + <hkern u1="r" u2="x" k="-49" /> + <hkern u1="r" u2="w" k="-57" /> + <hkern u1="r" u2="v" k="-49" /> + <hkern u1="r" u2="t" k="-41" /> + <hkern u1="r" u2="s" k="61" /> + <hkern u1="r" u2="q" k="82" /> + <hkern u1="r" u2="o" k="82" /> + <hkern u1="r" u2="j" k="98" /> + <hkern u1="r" u2="g" k="111" /> + <hkern u1="r" u2="f" k="-37" /> + <hkern u1="r" u2="e" k="82" /> + <hkern u1="r" u2="d" k="82" /> + <hkern u1="r" u2="c" k="82" /> + <hkern u1="r" u2="a" k="49" /> + <hkern u1="r" u2="." k="41" /> + <hkern u1="r" u2="," k="41" /> + <hkern u1="s" u2="ÿ" k="61" /> + <hkern u1="s" u2="ý" k="61" /> + <hkern u1="s" u2="y" k="61" /> + <hkern u1="s" u2="w" k="33" /> + <hkern u1="s" u2="v" k="61" /> + <hkern u1="s" u2="j" k="74" /> + <hkern u1="t" u2="ÿ" k="-20" /> + <hkern u1="t" u2="ý" k="-20" /> + <hkern u1="t" u2="ø" k="20" /> + <hkern u1="t" u2="ö" k="41" /> + <hkern u1="t" u2="ô" k="41" /> + <hkern u1="t" u2="ó" k="41" /> + <hkern u1="t" u2="ò" k="41" /> + <hkern u1="t" u2="ë" k="33" /> + <hkern u1="t" u2="ê" k="33" /> + <hkern u1="t" u2="é" k="33" /> + <hkern u1="t" u2="è" k="33" /> + <hkern u1="t" u2="ç" k="45" /> + <hkern u1="t" u2="æ" k="41" /> + <hkern u1="t" u2="å" k="41" /> + <hkern u1="t" u2="ä" k="41" /> + <hkern u1="t" u2="ã" k="41" /> + <hkern u1="t" u2="â" k="41" /> + <hkern u1="t" u2="á" k="41" /> + <hkern u1="t" u2="à" k="41" /> + <hkern u1="t" u2="z" k="-61" /> + <hkern u1="t" u2="y" k="-20" /> + <hkern u1="t" u2="w" k="-33" /> + <hkern u1="t" u2="v" k="-20" /> + <hkern u1="t" u2="q" k="66" /> + <hkern u1="t" u2="o" k="41" /> + <hkern u1="t" u2="j" k="66" /> + <hkern u1="t" u2="f" k="-49" /> + <hkern u1="t" u2="e" k="33" /> + <hkern u1="t" u2="d" k="66" /> + <hkern u1="t" u2="c" k="45" /> + <hkern u1="t" u2="a" k="41" /> + <hkern u1="u" u2="j" k="61" /> + <hkern u1="v" u2="œ" k="41" /> + <hkern u1="v" u2="ÿ" k="-20" /> + <hkern u1="v" u2="ý" k="-20" /> + <hkern u1="v" u2="ø" k="74" /> + <hkern u1="v" u2="ö" k="74" /> + <hkern u1="v" u2="ô" k="74" /> + <hkern u1="v" u2="ó" k="74" /> + <hkern u1="v" u2="ò" k="74" /> + <hkern u1="v" u2="ð" k="61" /> + <hkern u1="v" u2="ë" k="57" /> + <hkern u1="v" u2="ê" k="57" /> + <hkern u1="v" u2="é" k="57" /> + <hkern u1="v" u2="è" k="57" /> + <hkern u1="v" u2="ç" k="61" /> + <hkern u1="v" u2="æ" k="61" /> + <hkern u1="v" u2="å" k="61" /> + <hkern u1="v" u2="ä" k="61" /> + <hkern u1="v" u2="ã" k="61" /> + <hkern u1="v" u2="â" k="61" /> + <hkern u1="v" u2="á" k="61" /> + <hkern u1="v" u2="à" k="61" /> + <hkern u1="v" u2="z" k="-20" /> + <hkern u1="v" u2="y" k="-20" /> + <hkern u1="v" u2="x" k="-16" /> + <hkern u1="v" u2="w" k="-25" /> + <hkern u1="v" u2="v" k="-20" /> + <hkern u1="v" u2="s" k="61" /> + <hkern u1="v" u2="q" k="66" /> + <hkern u1="v" u2="o" k="74" /> + <hkern u1="v" u2="j" k="123" /> + <hkern u1="v" u2="g" k="86" /> + <hkern u1="v" u2="f" k="-61" /> + <hkern u1="v" u2="e" k="57" /> + <hkern u1="v" u2="d" k="74" /> + <hkern u1="v" u2="c" k="61" /> + <hkern u1="v" u2="a" k="61" /> + <hkern u1="v" u2="." k="61" /> + <hkern u1="v" u2="," k="61" /> + <hkern u1="w" u2="œ" k="20" /> + <hkern u1="w" u2="ÿ" k="-20" /> + <hkern u1="w" u2="ý" k="-20" /> + <hkern u1="w" u2="ø" k="49" /> + <hkern u1="w" u2="ö" k="49" /> + <hkern u1="w" u2="ô" k="49" /> + <hkern u1="w" u2="ó" k="49" /> + <hkern u1="w" u2="ò" k="49" /> + <hkern u1="w" u2="ð" k="41" /> + <hkern u1="w" u2="ë" k="41" /> + <hkern u1="w" u2="ê" k="41" /> + <hkern u1="w" u2="é" k="41" /> + <hkern u1="w" u2="è" k="41" /> + <hkern u1="w" u2="ç" k="41" /> + <hkern u1="w" u2="æ" k="41" /> + <hkern u1="w" u2="å" k="41" /> + <hkern u1="w" u2="ä" k="41" /> + <hkern u1="w" u2="ã" k="41" /> + <hkern u1="w" u2="â" k="41" /> + <hkern u1="w" u2="á" k="41" /> + <hkern u1="w" u2="à" k="41" /> + <hkern u1="w" u2="z" k="-20" /> + <hkern u1="w" u2="y" k="-20" /> + <hkern u1="w" u2="x" k="-20" /> + <hkern u1="w" u2="w" k="-37" /> + <hkern u1="w" u2="v" k="-25" /> + <hkern u1="w" u2="s" k="33" /> + <hkern u1="w" u2="q" k="49" /> + <hkern u1="w" u2="o" k="49" /> + <hkern u1="w" u2="j" k="111" /> + <hkern u1="w" u2="g" k="49" /> + <hkern u1="w" u2="f" k="-61" /> + <hkern u1="w" u2="e" k="41" /> + <hkern u1="w" u2="d" k="49" /> + <hkern u1="w" u2="c" k="41" /> + <hkern u1="w" u2="a" k="61" /> + <hkern u1="w" u2="." k="41" /> + <hkern u1="w" u2="," k="41" /> + <hkern u1="x" u2="œ" k="20" /> + <hkern u1="x" u2="ÿ" k="-20" /> + <hkern u1="x" u2="ý" k="-20" /> + <hkern u1="x" u2="ø" k="41" /> + <hkern u1="x" u2="ö" k="74" /> + <hkern u1="x" u2="ô" k="74" /> + <hkern u1="x" u2="ó" k="74" /> + <hkern u1="x" u2="ò" k="74" /> + <hkern u1="x" u2="ð" k="41" /> + <hkern u1="x" u2="ë" k="41" /> + <hkern u1="x" u2="ê" k="41" /> + <hkern u1="x" u2="é" k="41" /> + <hkern u1="x" u2="è" k="41" /> + <hkern u1="x" u2="æ" k="61" /> + <hkern u1="x" u2="å" k="41" /> + <hkern u1="x" u2="ä" k="41" /> + <hkern u1="x" u2="ã" k="41" /> + <hkern u1="x" u2="â" k="41" /> + <hkern u1="x" u2="á" k="41" /> + <hkern u1="x" u2="à" k="41" /> + <hkern u1="x" u2="z" k="-20" /> + <hkern u1="x" u2="y" k="-20" /> + <hkern u1="x" u2="x" k="-20" /> + <hkern u1="x" u2="w" k="-20" /> + <hkern u1="x" u2="v" k="-16" /> + <hkern u1="x" u2="q" k="45" /> + <hkern u1="x" u2="o" k="74" /> + <hkern u1="x" u2="j" k="82" /> + <hkern u1="x" u2="g" k="25" /> + <hkern u1="x" u2="f" k="-61" /> + <hkern u1="x" u2="e" k="41" /> + <hkern u1="x" u2="d" k="25" /> + <hkern u1="x" u2="a" k="41" /> + <hkern u1="y" u2="œ" k="41" /> + <hkern u1="y" u2="ø" k="74" /> + <hkern u1="y" u2="ö" k="74" /> + <hkern u1="y" u2="ô" k="74" /> + <hkern u1="y" u2="ó" k="74" /> + <hkern u1="y" u2="ò" k="74" /> + <hkern u1="y" u2="ð" k="61" /> + <hkern u1="y" u2="ë" k="57" /> + <hkern u1="y" u2="ê" k="57" /> + <hkern u1="y" u2="é" k="57" /> + <hkern u1="y" u2="è" k="57" /> + <hkern u1="y" u2="ç" k="61" /> + <hkern u1="y" u2="æ" k="61" /> + <hkern u1="y" u2="å" k="61" /> + <hkern u1="y" u2="ä" k="61" /> + <hkern u1="y" u2="ã" k="61" /> + <hkern u1="y" u2="â" k="61" /> + <hkern u1="y" u2="á" k="61" /> + <hkern u1="y" u2="à" k="61" /> + <hkern u1="y" u2="z" k="-20" /> + <hkern u1="y" u2="y" k="-20" /> + <hkern u1="y" u2="x" k="-20" /> + <hkern u1="y" u2="w" k="-20" /> + <hkern u1="y" u2="v" k="-20" /> + <hkern u1="y" u2="s" k="61" /> + <hkern u1="y" u2="q" k="82" /> + <hkern u1="y" u2="o" k="74" /> + <hkern u1="y" u2="j" k="102" /> + <hkern u1="y" u2="g" k="86" /> + <hkern u1="y" u2="f" k="-61" /> + <hkern u1="y" u2="e" k="57" /> + <hkern u1="y" u2="d" k="74" /> + <hkern u1="y" u2="c" k="61" /> + <hkern u1="y" u2="a" k="61" /> + <hkern u1="y" u2="." k="61" /> + <hkern u1="y" u2="," k="61" /> + <hkern u1="z" u2="œ" k="49" /> + <hkern u1="z" u2="ÿ" k="-20" /> + <hkern u1="z" u2="ý" k="-20" /> + <hkern u1="z" u2="ø" k="20" /> + <hkern u1="z" u2="ö" k="49" /> + <hkern u1="z" u2="õ" k="49" /> + <hkern u1="z" u2="ô" k="49" /> + <hkern u1="z" u2="ó" k="49" /> + <hkern u1="z" u2="ò" k="49" /> + <hkern u1="z" u2="ë" k="49" /> + <hkern u1="z" u2="ê" k="49" /> + <hkern u1="z" u2="é" k="49" /> + <hkern u1="z" u2="è" k="49" /> + <hkern u1="z" u2="ç" k="29" /> + <hkern u1="z" u2="æ" k="41" /> + <hkern u1="z" u2="å" k="29" /> + <hkern u1="z" u2="ä" k="29" /> + <hkern u1="z" u2="ã" k="29" /> + <hkern u1="z" u2="â" k="29" /> + <hkern u1="z" u2="á" k="29" /> + <hkern u1="z" u2="à" k="29" /> + <hkern u1="z" u2="y" k="-20" /> + <hkern u1="z" u2="x" k="-20" /> + <hkern u1="z" u2="w" k="-20" /> + <hkern u1="z" u2="v" k="-20" /> + <hkern u1="z" u2="q" k="49" /> + <hkern u1="z" u2="o" k="49" /> + <hkern u1="z" u2="j" k="61" /> + <hkern u1="z" u2="g" k="41" /> + <hkern u1="z" u2="f" k="-61" /> + <hkern u1="z" u2="e" k="49" /> + <hkern u1="z" u2="d" k="49" /> + <hkern u1="z" u2="c" k="49" /> + <hkern u1="z" u2="a" k="29" /> + <hkern u1="µ" u2="j" k="61" /> + <hkern u1="À" u2="À" k="-25" /> + <hkern u1="À" u2="z" k="-25" /> + <hkern u1="À" u2="y" k="143" /> + <hkern u1="À" u2="w" k="102" /> + <hkern u1="À" u2="v" k="143" /> + <hkern u1="À" u2="u" k="20" /> + <hkern u1="À" u2="t" k="47" /> + <hkern u1="À" u2="q" k="74" /> + <hkern u1="À" u2="o" k="74" /> + <hkern u1="À" u2="j" k="74" /> + <hkern u1="À" u2="f" k="25" /> + <hkern u1="À" u2="e" k="74" /> + <hkern u1="À" u2="d" k="74" /> + <hkern u1="À" u2="c" k="74" /> + <hkern u1="À" u2="a" k="20" /> + <hkern u1="À" u2="Z" k="-66" /> + <hkern u1="À" u2="Y" k="225" /> + <hkern u1="À" u2="X" k="-25" /> + <hkern u1="À" u2="W" k="147" /> + <hkern u1="À" u2="V" k="184" /> + <hkern u1="À" u2="T" k="168" /> + <hkern u1="À" u2="Q" k="57" /> + <hkern u1="À" u2="O" k="57" /> + <hkern u1="À" u2="J" k="-25" /> + <hkern u1="À" u2="G" k="57" /> + <hkern u1="À" u2="C" k="57" /> + <hkern u1="Á" u2="Á" k="-25" /> + <hkern u1="Á" u2="z" k="-25" /> + <hkern u1="Á" u2="y" k="143" /> + <hkern u1="Á" u2="w" k="102" /> + <hkern u1="Á" u2="v" k="143" /> + <hkern u1="Á" u2="u" k="20" /> + <hkern u1="Á" u2="t" k="45" /> + <hkern u1="Á" u2="q" k="74" /> + <hkern u1="Á" u2="o" k="74" /> + <hkern u1="Á" u2="j" k="74" /> + <hkern u1="Á" u2="f" k="25" /> + <hkern u1="Á" u2="e" k="74" /> + <hkern u1="Á" u2="d" k="74" /> + <hkern u1="Á" u2="c" k="74" /> + <hkern u1="Á" u2="a" k="20" /> + <hkern u1="Á" u2="Z" k="-66" /> + <hkern u1="Á" u2="Y" k="225" /> + <hkern u1="Á" u2="X" k="-25" /> + <hkern u1="Á" u2="W" k="147" /> + <hkern u1="Á" u2="V" k="184" /> + <hkern u1="Á" u2="T" k="168" /> + <hkern u1="Á" u2="Q" k="57" /> + <hkern u1="Á" u2="O" k="57" /> + <hkern u1="Á" u2="J" k="-25" /> + <hkern u1="Á" u2="G" k="57" /> + <hkern u1="Á" u2="C" k="57" /> + <hkern u1="Â" u2="Â" k="-25" /> + <hkern u1="Â" u2="z" k="-25" /> + <hkern u1="Â" u2="y" k="143" /> + <hkern u1="Â" u2="w" k="102" /> + <hkern u1="Â" u2="v" k="143" /> + <hkern u1="Â" u2="u" k="20" /> + <hkern u1="Â" u2="t" k="45" /> + <hkern u1="Â" u2="q" k="74" /> + <hkern u1="Â" u2="o" k="74" /> + <hkern u1="Â" u2="j" k="74" /> + <hkern u1="Â" u2="f" k="25" /> + <hkern u1="Â" u2="e" k="74" /> + <hkern u1="Â" u2="d" k="74" /> + <hkern u1="Â" u2="c" k="74" /> + <hkern u1="Â" u2="a" k="20" /> + <hkern u1="Â" u2="Z" k="-66" /> + <hkern u1="Â" u2="Y" k="225" /> + <hkern u1="Â" u2="X" k="-25" /> + <hkern u1="Â" u2="W" k="147" /> + <hkern u1="Â" u2="V" k="184" /> + <hkern u1="Â" u2="T" k="168" /> + <hkern u1="Â" u2="Q" k="57" /> + <hkern u1="Â" u2="O" k="57" /> + <hkern u1="Â" u2="J" k="-25" /> + <hkern u1="Â" u2="G" k="57" /> + <hkern u1="Â" u2="C" k="57" /> + <hkern u1="Ã" u2="Ã" k="-25" /> + <hkern u1="Ã" u2="z" k="-25" /> + <hkern u1="Ã" u2="y" k="143" /> + <hkern u1="Ã" u2="w" k="102" /> + <hkern u1="Ã" u2="v" k="143" /> + <hkern u1="Ã" u2="u" k="20" /> + <hkern u1="Ã" u2="t" k="45" /> + <hkern u1="Ã" u2="q" k="74" /> + <hkern u1="Ã" u2="o" k="74" /> + <hkern u1="Ã" u2="j" k="74" /> + <hkern u1="Ã" u2="f" k="25" /> + <hkern u1="Ã" u2="e" k="74" /> + <hkern u1="Ã" u2="d" k="74" /> + <hkern u1="Ã" u2="c" k="74" /> + <hkern u1="Ã" u2="a" k="20" /> + <hkern u1="Ã" u2="Z" k="-66" /> + <hkern u1="Ã" u2="Y" k="225" /> + <hkern u1="Ã" u2="X" k="-25" /> + <hkern u1="Ã" u2="W" k="147" /> + <hkern u1="Ã" u2="V" k="184" /> + <hkern u1="Ã" u2="T" k="168" /> + <hkern u1="Ã" u2="Q" k="57" /> + <hkern u1="Ã" u2="O" k="57" /> + <hkern u1="Ã" u2="J" k="-25" /> + <hkern u1="Ã" u2="G" k="57" /> + <hkern u1="Ã" u2="C" k="57" /> + <hkern u1="Ä" u2="Ä" k="-25" /> + <hkern u1="Ä" u2="z" k="-25" /> + <hkern u1="Ä" u2="y" k="143" /> + <hkern u1="Ä" u2="w" k="102" /> + <hkern u1="Ä" u2="v" k="143" /> + <hkern u1="Ä" u2="u" k="20" /> + <hkern u1="Ä" u2="t" k="45" /> + <hkern u1="Ä" u2="q" k="74" /> + <hkern u1="Ä" u2="o" k="74" /> + <hkern u1="Ä" u2="j" k="74" /> + <hkern u1="Ä" u2="f" k="25" /> + <hkern u1="Ä" u2="e" k="74" /> + <hkern u1="Ä" u2="d" k="74" /> + <hkern u1="Ä" u2="c" k="74" /> + <hkern u1="Ä" u2="a" k="20" /> + <hkern u1="Ä" u2="Z" k="-66" /> + <hkern u1="Ä" u2="Y" k="225" /> + <hkern u1="Ä" u2="X" k="-25" /> + <hkern u1="Ä" u2="W" k="147" /> + <hkern u1="Ä" u2="V" k="184" /> + <hkern u1="Ä" u2="T" k="168" /> + <hkern u1="Ä" u2="Q" k="57" /> + <hkern u1="Ä" u2="O" k="57" /> + <hkern u1="Ä" u2="J" k="-25" /> + <hkern u1="Ä" u2="G" k="57" /> + <hkern u1="Ä" u2="C" k="57" /> + <hkern u1="Å" u2="Å" k="-25" /> + <hkern u1="Å" u2="z" k="-25" /> + <hkern u1="Å" u2="y" k="143" /> + <hkern u1="Å" u2="w" k="102" /> + <hkern u1="Å" u2="v" k="143" /> + <hkern u1="Å" u2="u" k="20" /> + <hkern u1="Å" u2="t" k="45" /> + <hkern u1="Å" u2="q" k="74" /> + <hkern u1="Å" u2="o" k="74" /> + <hkern u1="Å" u2="j" k="74" /> + <hkern u1="Å" u2="f" k="25" /> + <hkern u1="Å" u2="e" k="74" /> + <hkern u1="Å" u2="d" k="74" /> + <hkern u1="Å" u2="c" k="74" /> + <hkern u1="Å" u2="a" k="20" /> + <hkern u1="Å" u2="Z" k="-66" /> + <hkern u1="Å" u2="Y" k="225" /> + <hkern u1="Å" u2="X" k="-25" /> + <hkern u1="Å" u2="W" k="147" /> + <hkern u1="Å" u2="V" k="184" /> + <hkern u1="Å" u2="T" k="168" /> + <hkern u1="Å" u2="Q" k="57" /> + <hkern u1="Å" u2="O" k="57" /> + <hkern u1="Å" u2="J" k="-25" /> + <hkern u1="Å" u2="G" k="57" /> + <hkern u1="Å" u2="C" k="57" /> + <hkern u1="Æ" u2="y" k="61" /> + <hkern u1="Æ" u2="w" k="41" /> + <hkern u1="Æ" u2="v" k="61" /> + <hkern u1="Æ" u2="u" k="20" /> + <hkern u1="Æ" u2="s" k="41" /> + <hkern u1="Æ" u2="q" k="41" /> + <hkern u1="Æ" u2="o" k="41" /> + <hkern u1="Æ" u2="j" k="61" /> + <hkern u1="Æ" u2="g" k="41" /> + <hkern u1="Æ" u2="e" k="41" /> + <hkern u1="Æ" u2="d" k="41" /> + <hkern u1="Æ" u2="c" k="41" /> + <hkern u1="Æ" u2="a" k="41" /> + <hkern u1="Æ" u2="S" k="41" /> + <hkern u1="Æ" u2="Q" k="41" /> + <hkern u1="Æ" u2="O" k="41" /> + <hkern u1="Æ" u2="G" k="41" /> + <hkern u1="Æ" u2="C" k="41" /> + <hkern u1="Ç" u2="z" k="-33" /> + <hkern u1="Ç" u2="s" k="20" /> + <hkern u1="Ç" u2="q" k="25" /> + <hkern u1="Ç" u2="o" k="25" /> + <hkern u1="Ç" u2="j" k="102" /> + <hkern u1="Ç" u2="g" k="25" /> + <hkern u1="Ç" u2="e" k="25" /> + <hkern u1="Ç" u2="a" k="25" /> + <hkern u1="Ç" u2="T" k="123" /> + <hkern u1="Ç" u2="." k="41" /> + <hkern u1="Ç" u2="," k="41" /> + <hkern u1="È" u2="z" k="-20" /> + <hkern u1="È" u2="y" k="37" /> + <hkern u1="È" u2="w" k="25" /> + <hkern u1="È" u2="v" k="37" /> + <hkern u1="È" u2="q" k="41" /> + <hkern u1="È" u2="o" k="41" /> + <hkern u1="È" u2="g" k="41" /> + <hkern u1="È" u2="e" k="41" /> + <hkern u1="È" u2="d" k="41" /> + <hkern u1="È" u2="c" k="41" /> + <hkern u1="È" u2="a" k="41" /> + <hkern u1="È" u2="Z" k="-25" /> + <hkern u1="È" u2="Q" k="41" /> + <hkern u1="È" u2="O" k="41" /> + <hkern u1="È" u2="G" k="41" /> + <hkern u1="È" u2="C" k="41" /> + <hkern u1="É" u2="z" k="-20" /> + <hkern u1="É" u2="y" k="37" /> + <hkern u1="É" u2="w" k="25" /> + <hkern u1="É" u2="v" k="37" /> + <hkern u1="É" u2="q" k="41" /> + <hkern u1="É" u2="o" k="41" /> + <hkern u1="É" u2="g" k="41" /> + <hkern u1="É" u2="e" k="41" /> + <hkern u1="É" u2="d" k="41" /> + <hkern u1="É" u2="c" k="41" /> + <hkern u1="É" u2="a" k="41" /> + <hkern u1="É" u2="Z" k="-25" /> + <hkern u1="É" u2="Q" k="41" /> + <hkern u1="É" u2="O" k="41" /> + <hkern u1="É" u2="G" k="41" /> + <hkern u1="É" u2="C" k="41" /> + <hkern u1="Ê" u2="z" k="-20" /> + <hkern u1="Ê" u2="y" k="37" /> + <hkern u1="Ê" u2="w" k="25" /> + <hkern u1="Ê" u2="v" k="37" /> + <hkern u1="Ê" u2="q" k="41" /> + <hkern u1="Ê" u2="o" k="41" /> + <hkern u1="Ê" u2="g" k="41" /> + <hkern u1="Ê" u2="e" k="41" /> + <hkern u1="Ê" u2="d" k="41" /> + <hkern u1="Ê" u2="c" k="41" /> + <hkern u1="Ê" u2="a" k="41" /> + <hkern u1="Ê" u2="Z" k="-25" /> + <hkern u1="Ê" u2="Q" k="41" /> + <hkern u1="Ê" u2="O" k="41" /> + <hkern u1="Ê" u2="G" k="41" /> + <hkern u1="Ê" u2="C" k="41" /> + <hkern u1="Ë" u2="z" k="-20" /> + <hkern u1="Ë" u2="y" k="37" /> + <hkern u1="Ë" u2="w" k="25" /> + <hkern u1="Ë" u2="v" k="37" /> + <hkern u1="Ë" u2="q" k="41" /> + <hkern u1="Ë" u2="o" k="41" /> + <hkern u1="Ë" u2="g" k="41" /> + <hkern u1="Ë" u2="e" k="41" /> + <hkern u1="Ë" u2="d" k="41" /> + <hkern u1="Ë" u2="c" k="41" /> + <hkern u1="Ë" u2="a" k="41" /> + <hkern u1="Ë" u2="Z" k="-25" /> + <hkern u1="Ë" u2="Q" k="41" /> + <hkern u1="Ë" u2="O" k="41" /> + <hkern u1="Ë" u2="G" k="41" /> + <hkern u1="Ë" u2="C" k="41" /> + <hkern u1="Ð" u2="y" k="25" /> + <hkern u1="Ð" u2="v" k="25" /> + <hkern u1="Ð" u2="j" k="123" /> + <hkern u1="Ð" u2="Z" k="66" /> + <hkern u1="Ð" u2="Y" k="123" /> + <hkern u1="Ð" u2="X" k="57" /> + <hkern u1="Ð" u2="W" k="49" /> + <hkern u1="Ð" u2="V" k="66" /> + <hkern u1="Ð" u2="T" k="82" /> + <hkern u1="Ð" u2="J" k="37" /> + <hkern u1="Ð" u2="A" k="57" /> + <hkern u1="Ñ" u2="j" k="123" /> + <hkern u1="Ò" u2="y" k="25" /> + <hkern u1="Ò" u2="v" k="25" /> + <hkern u1="Ò" u2="j" k="123" /> + <hkern u1="Ò" u2="Y" k="123" /> + <hkern u1="Ò" u2="X" k="82" /> + <hkern u1="Ò" u2="W" k="61" /> + <hkern u1="Ò" u2="V" k="82" /> + <hkern u1="Ò" u2="T" k="143" /> + <hkern u1="Ò" u2="J" k="29" /> + <hkern u1="Ò" u2="A" k="57" /> + <hkern u1="Ò" u2="." k="41" /> + <hkern u1="Ò" u2="," k="41" /> + <hkern u1="Ó" u2="y" k="25" /> + <hkern u1="Ó" u2="v" k="25" /> + <hkern u1="Ó" u2="j" k="123" /> + <hkern u1="Ó" u2="Y" k="123" /> + <hkern u1="Ó" u2="X" k="82" /> + <hkern u1="Ó" u2="W" k="61" /> + <hkern u1="Ó" u2="V" k="82" /> + <hkern u1="Ó" u2="T" k="184" /> + <hkern u1="Ó" u2="J" k="29" /> + <hkern u1="Ó" u2="A" k="57" /> + <hkern u1="Ó" u2="." k="41" /> + <hkern u1="Ó" u2="," k="41" /> + <hkern u1="Ô" u2="y" k="25" /> + <hkern u1="Ô" u2="v" k="25" /> + <hkern u1="Ô" u2="j" k="123" /> + <hkern u1="Ô" u2="Y" k="123" /> + <hkern u1="Ô" u2="X" k="82" /> + <hkern u1="Ô" u2="W" k="61" /> + <hkern u1="Ô" u2="V" k="82" /> + <hkern u1="Ô" u2="T" k="184" /> + <hkern u1="Ô" u2="J" k="29" /> + <hkern u1="Ô" u2="A" k="57" /> + <hkern u1="Ô" u2="." k="41" /> + <hkern u1="Ô" u2="," k="41" /> + <hkern u1="Õ" u2="y" k="25" /> + <hkern u1="Õ" u2="v" k="25" /> + <hkern u1="Õ" u2="j" k="123" /> + <hkern u1="Õ" u2="Y" k="123" /> + <hkern u1="Õ" u2="X" k="82" /> + <hkern u1="Õ" u2="W" k="61" /> + <hkern u1="Õ" u2="V" k="82" /> + <hkern u1="Õ" u2="T" k="184" /> + <hkern u1="Õ" u2="J" k="29" /> + <hkern u1="Õ" u2="A" k="57" /> + <hkern u1="Õ" u2="." k="41" /> + <hkern u1="Õ" u2="," k="41" /> + <hkern u1="Ö" u2="y" k="25" /> + <hkern u1="Ö" u2="v" k="25" /> + <hkern u1="Ö" u2="j" k="123" /> + <hkern u1="Ö" u2="Y" k="123" /> + <hkern u1="Ö" u2="X" k="82" /> + <hkern u1="Ö" u2="W" k="61" /> + <hkern u1="Ö" u2="V" k="82" /> + <hkern u1="Ö" u2="T" k="184" /> + <hkern u1="Ö" u2="J" k="29" /> + <hkern u1="Ö" u2="A" k="57" /> + <hkern u1="Ö" u2="." k="41" /> + <hkern u1="Ø" u2="y" k="25" /> + <hkern u1="Ø" u2="x" k="20" /> + <hkern u1="Ø" u2="v" k="25" /> + <hkern u1="Ø" u2="s" k="20" /> + <hkern u1="Ø" u2="j" k="123" /> + <hkern u1="Ø" u2="Z" k="20" /> + <hkern u1="Ø" u2="Y" k="20" /> + <hkern u1="Ø" u2="X" k="20" /> + <hkern u1="Ø" u2="J" k="29" /> + <hkern u1="Ø" u2="A" k="57" /> + <hkern u1="Ø" u2="." k="41" /> + <hkern u1="Ø" u2="," k="41" /> + <hkern u1="Ù" u2="j" k="143" /> + <hkern u1="Ù" u2="V" k="25" /> + <hkern u1="Ù" u2="J" k="41" /> + <hkern u1="Ú" u2="j" k="143" /> + <hkern u1="Ú" u2="V" k="25" /> + <hkern u1="Ú" u2="J" k="41" /> + <hkern u1="Û" u2="j" k="143" /> + <hkern u1="Û" u2="V" k="25" /> + <hkern u1="Û" u2="J" k="41" /> + <hkern u1="Ü" u2="j" k="143" /> + <hkern u1="Ü" u2="V" k="25" /> + <hkern u1="Ü" u2="J" k="41" /> + <hkern u1="Ý" u2="Ý" k="-20" /> + <hkern u1="Ý" u2="z" k="82" /> + <hkern u1="Ý" u2="v" k="127" /> + <hkern u1="Ý" u2="u" k="147" /> + <hkern u1="Ý" u2="o" k="295" /> + <hkern u1="Ý" u2="j" k="184" /> + <hkern u1="Ý" u2="i" k="25" /> + <hkern u1="Ý" u2="g" k="279" /> + <hkern u1="Ý" u2="e" k="295" /> + <hkern u1="Ý" u2="a" k="246" /> + <hkern u1="Ý" u2="Z" k="-25" /> + <hkern u1="Ý" u2="X" k="-25" /> + <hkern u1="Ý" u2="W" k="-20" /> + <hkern u1="Ý" u2="V" k="-25" /> + <hkern u1="Ý" u2="T" k="-20" /> + <hkern u1="Ý" u2="S" k="41" /> + <hkern u1="Ý" u2="Q" k="123" /> + <hkern u1="Ý" u2="O" k="123" /> + <hkern u1="Ý" u2="J" k="266" /> + <hkern u1="Ý" u2="G" k="123" /> + <hkern u1="Ý" u2="C" k="102" /> + <hkern u1="Ý" u2="A" k="184" /> + <hkern u1="Ý" u2="." k="61" /> + <hkern u1="Ý" u2="," k="61" /> + <hkern u1="Þ" u2="s" k="41" /> + <hkern u1="Þ" u2="q" k="41" /> + <hkern u1="Þ" u2="o" k="41" /> + <hkern u1="Þ" u2="j" k="102" /> + <hkern u1="Þ" u2="g" k="41" /> + <hkern u1="Þ" u2="e" k="41" /> + <hkern u1="Þ" u2="d" k="41" /> + <hkern u1="Þ" u2="c" k="41" /> + <hkern u1="Þ" u2="a" k="41" /> + <hkern u1="Þ" u2="Z" k="61" /> + <hkern u1="Þ" u2="Y" k="82" /> + <hkern u1="Þ" u2="X" k="61" /> + <hkern u1="Þ" u2="W" k="29" /> + <hkern u1="Þ" u2="V" k="41" /> + <hkern u1="Þ" u2="T" k="147" /> + <hkern u1="Þ" u2="J" k="225" /> + <hkern u1="Þ" u2="A" k="184" /> + <hkern u1="Þ" u2="." k="143" /> + <hkern u1="Þ" u2="," k="123" /> + <hkern u1="ß" u2="y" k="41" /> + <hkern u1="ß" u2="x" k="20" /> + <hkern u1="ß" u2="w" k="20" /> + <hkern u1="ß" u2="v" k="41" /> + <hkern u1="ß" u2="j" k="61" /> + <hkern u1="ß" u2="Y" k="61" /> + <hkern u1="ß" u2="W" k="20" /> + <hkern u1="ß" u2="V" k="61" /> + <hkern u1="ß" u2="T" k="82" /> + <hkern u1="à" u2="j" k="61" /> + <hkern u1="á" u2="j" k="61" /> + <hkern u1="â" u2="j" k="61" /> + <hkern u1="ã" u2="j" k="61" /> + <hkern u1="ä" u2="j" k="61" /> + <hkern u1="å" u2="j" k="61" /> + <hkern u1="æ" u2="z" k="41" /> + <hkern u1="æ" u2="y" k="61" /> + <hkern u1="æ" u2="x" k="61" /> + <hkern u1="æ" u2="w" k="41" /> + <hkern u1="æ" u2="v" k="61" /> + <hkern u1="æ" u2="A" k="53" /> + <hkern u1="ç" u2="z" k="-25" /> + <hkern u1="ç" u2="q" k="20" /> + <hkern u1="ç" u2="j" k="90" /> + <hkern u1="ç" u2="e" k="20" /> + <hkern u1="ç" u2="d" k="20" /> + <hkern u1="ç" u2="a" k="20" /> + <hkern u1="è" u2="z" k="33" /> + <hkern u1="è" u2="y" k="57" /> + <hkern u1="è" u2="x" k="41" /> + <hkern u1="è" u2="w" k="41" /> + <hkern u1="è" u2="v" k="57" /> + <hkern u1="è" u2="a" k="20" /> + <hkern u1="è" u2="T" k="117" /> + <hkern u1="é" u2="z" k="33" /> + <hkern u1="é" u2="y" k="57" /> + <hkern u1="é" u2="x" k="41" /> + <hkern u1="é" u2="w" k="41" /> + <hkern u1="é" u2="v" k="57" /> + <hkern u1="é" u2="a" k="20" /> + <hkern u1="ê" u2="z" k="33" /> + <hkern u1="ê" u2="y" k="57" /> + <hkern u1="ê" u2="x" k="41" /> + <hkern u1="ê" u2="w" k="41" /> + <hkern u1="ê" u2="v" k="57" /> + <hkern u1="ê" u2="a" k="20" /> + <hkern u1="ë" u2="z" k="33" /> + <hkern u1="ë" u2="y" k="57" /> + <hkern u1="ë" u2="x" k="41" /> + <hkern u1="ë" u2="w" k="41" /> + <hkern u1="ë" u2="v" k="57" /> + <hkern u1="ë" u2="a" k="20" /> + <hkern u1="ì" u2="j" k="123" /> + <hkern u1="í" u2="j" k="123" /> + <hkern u1="î" u2="j" k="123" /> + <hkern u1="ï" u2="j" k="123" /> + <hkern u1="ð" u2="y" k="61" /> + <hkern u1="ð" u2="x" k="41" /> + <hkern u1="ð" u2="w" k="41" /> + <hkern u1="ð" u2="v" k="61" /> + <hkern u1="ñ" u2="y" k="41" /> + <hkern u1="ñ" u2="v" k="41" /> + <hkern u1="ñ" u2="j" k="61" /> + <hkern u1="ò" u2="z" k="49" /> + <hkern u1="ò" u2="y" k="74" /> + <hkern u1="ò" u2="x" k="74" /> + <hkern u1="ò" u2="w" k="49" /> + <hkern u1="ò" u2="v" k="74" /> + <hkern u1="ò" u2="j" k="123" /> + <hkern u1="ò" u2="a" k="20" /> + <hkern u1="ó" u2="z" k="49" /> + <hkern u1="ó" u2="y" k="74" /> + <hkern u1="ó" u2="x" k="74" /> + <hkern u1="ó" u2="w" k="49" /> + <hkern u1="ó" u2="v" k="74" /> + <hkern u1="ó" u2="j" k="123" /> + <hkern u1="ó" u2="a" k="20" /> + <hkern u1="ô" u2="z" k="49" /> + <hkern u1="ô" u2="y" k="74" /> + <hkern u1="ô" u2="x" k="74" /> + <hkern u1="ô" u2="w" k="49" /> + <hkern u1="ô" u2="v" k="74" /> + <hkern u1="ô" u2="j" k="123" /> + <hkern u1="ô" u2="a" k="20" /> + <hkern u1="õ" u2="z" k="49" /> + <hkern u1="ö" u2="z" k="49" /> + <hkern u1="ö" u2="y" k="74" /> + <hkern u1="ö" u2="x" k="74" /> + <hkern u1="ö" u2="w" k="49" /> + <hkern u1="ö" u2="v" k="74" /> + <hkern u1="ö" u2="j" k="123" /> + <hkern u1="ö" u2="a" k="20" /> + <hkern u1="ø" u2="z" k="20" /> + <hkern u1="ø" u2="y" k="41" /> + <hkern u1="ø" u2="x" k="41" /> + <hkern u1="ø" u2="w" k="33" /> + <hkern u1="ø" u2="v" k="41" /> + <hkern u1="ø" u2="j" k="123" /> + <hkern u1="ø" u2="a" k="20" /> + <hkern u1="ù" u2="j" k="61" /> + <hkern u1="ú" u2="j" k="61" /> + <hkern u1="û" u2="j" k="61" /> + <hkern u1="ü" u2="j" k="61" /> + <hkern u1="ý" u2="ý" k="-20" /> + <hkern u1="ý" u2="z" k="-20" /> + <hkern u1="ý" u2="x" k="-20" /> + <hkern u1="ý" u2="w" k="-20" /> + <hkern u1="ý" u2="v" k="-20" /> + <hkern u1="ý" u2="s" k="61" /> + <hkern u1="ý" u2="q" k="82" /> + <hkern u1="ý" u2="o" k="74" /> + <hkern u1="ý" u2="j" k="102" /> + <hkern u1="ý" u2="g" k="86" /> + <hkern u1="ý" u2="e" k="57" /> + <hkern u1="ý" u2="d" k="61" /> + <hkern u1="ý" u2="c" k="53" /> + <hkern u1="ý" u2="a" k="61" /> + <hkern u1="ý" u2="." k="61" /> + <hkern u1="ý" u2="," k="61" /> + <hkern u1="þ" u2="z" k="49" /> + <hkern u1="þ" u2="y" k="57" /> + <hkern u1="þ" u2="x" k="45" /> + <hkern u1="þ" u2="w" k="45" /> + <hkern u1="þ" u2="v" k="57" /> + <hkern u1="þ" u2="j" k="123" /> + <hkern u1="þ" u2="a" k="20" /> + <hkern u1="ÿ" u2="ÿ" k="-20" /> + <hkern u1="ÿ" u2="z" k="-20" /> + <hkern u1="ÿ" u2="x" k="-20" /> + <hkern u1="ÿ" u2="w" k="-20" /> + <hkern u1="ÿ" u2="v" k="-20" /> + <hkern u1="ÿ" u2="s" k="61" /> + <hkern u1="ÿ" u2="q" k="82" /> + <hkern u1="ÿ" u2="o" k="74" /> + <hkern u1="ÿ" u2="j" k="102" /> + <hkern u1="ÿ" u2="g" k="86" /> + <hkern u1="ÿ" u2="e" k="57" /> + <hkern u1="ÿ" u2="d" k="61" /> + <hkern u1="ÿ" u2="c" k="53" /> + <hkern u1="ÿ" u2="a" k="61" /> + <hkern u1="ÿ" u2="." k="61" /> + <hkern u1="ÿ" u2="," k="61" /> + <hkern u1="Œ" u2="y" k="41" /> + <hkern u1="Œ" u2="w" k="41" /> + <hkern u1="Œ" u2="v" k="41" /> + <hkern u1="Œ" u2="u" k="20" /> + <hkern u1="Œ" u2="s" k="20" /> + <hkern u1="Œ" u2="q" k="41" /> + <hkern u1="Œ" u2="o" k="41" /> + <hkern u1="Œ" u2="j" k="61" /> + <hkern u1="Œ" u2="g" k="20" /> + <hkern u1="Œ" u2="e" k="41" /> + <hkern u1="Œ" u2="d" k="41" /> + <hkern u1="Œ" u2="c" k="41" /> + <hkern u1="Œ" u2="a" k="41" /> + <hkern u1="œ" u2="z" k="33" /> + <hkern u1="œ" u2="y" k="41" /> + <hkern u1="œ" u2="x" k="20" /> + <hkern u1="œ" u2="w" k="20" /> + <hkern u1="œ" u2="v" k="41" /> + <hkern u1="œ" u2="A" k="41" /> + <hkern u1="Ÿ" u2="Ÿ" k="-20" /> + <hkern u1="Ÿ" u2="z" k="82" /> + <hkern u1="Ÿ" u2="v" k="127" /> + <hkern u1="Ÿ" u2="u" k="147" /> + <hkern u1="Ÿ" u2="o" k="295" /> + <hkern u1="Ÿ" u2="j" k="184" /> + <hkern u1="Ÿ" u2="i" k="25" /> + <hkern u1="Ÿ" u2="g" k="279" /> + <hkern u1="Ÿ" u2="e" k="295" /> + <hkern u1="Ÿ" u2="a" k="246" /> + <hkern u1="Ÿ" u2="Z" k="-25" /> + <hkern u1="Ÿ" u2="X" k="-25" /> + <hkern u1="Ÿ" u2="W" k="-20" /> + <hkern u1="Ÿ" u2="V" k="-25" /> + <hkern u1="Ÿ" u2="T" k="-20" /> + <hkern u1="Ÿ" u2="S" k="41" /> + <hkern u1="Ÿ" u2="Q" k="123" /> + <hkern u1="Ÿ" u2="O" k="123" /> + <hkern u1="Ÿ" u2="J" k="266" /> + <hkern u1="Ÿ" u2="G" k="123" /> + <hkern u1="Ÿ" u2="C" k="102" /> + <hkern u1="Ÿ" u2="A" k="184" /> + <hkern u1="Ÿ" u2="." k="61" /> + <hkern u1="Ÿ" u2="," k="61" /> + </font> +</defs></svg> diff --git a/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.ttf b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d9e8f464c43650710bee70820d830637b9b15865 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.ttf differ diff --git a/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff new file mode 100644 index 0000000000000000000000000000000000000000..8f765630877c194c8ab85d8b0c195ff57ada062f Binary files /dev/null and b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff differ diff --git a/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff2 b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f45d5f5cd58be39e1f35bc373807b6cab1022511 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/0254a98dd4dd664268f86802ef75f4df.woff2 differ diff --git a/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.eot b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.eot new file mode 100644 index 0000000000000000000000000000000000000000..168e7b26f3cb5540f4507b6b7ab194be2de9bacd Binary files /dev/null and b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.eot differ diff --git a/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.svg b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.svg new file mode 100644 index 0000000000000000000000000000000000000000..34fe4cf83e8f0e43a940ff141d8db5a6a023667d --- /dev/null +++ b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.svg @@ -0,0 +1,2702 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Sep 24 23:11:50 2019 + By www + Copyright (c)2014 Talbot Type. All Rights Reserved +</metadata> +<defs> +<font id="Kamerik205-Book" horiz-adv-x="1257" > + <font-face + font-family="Kamerik 205" + font-weight="400" + font-stretch="normal" + units-per-em="2048" + panose-1="2 11 5 3 3 6 0 2 0 4" + ascent="1638" + descent="-410" + x-height="1186" + cap-height="1536" + bbox="-100 -418 2654 1892" + underline-thickness="57" + underline-position="-148" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name=".notdef" horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name="glyph1" horiz-adv-x="0" + /> + <glyph glyph-name="glyph2" horiz-adv-x="682" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="552" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="389" +d="M90 86q0 44 31.5 75.5t75.5 31.5q41 0 71.5 -31.5t30.5 -75.5q0 -41 -30.5 -71.5t-71.5 -30.5q-44 0 -75.5 30.5t-31.5 71.5zM123 1536h143l-22 -1186h-99z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="473" +d="M102 1135v401h95v-401h-95zM276 1135v401h95v-401h-95z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1269" +d="M41 524v111h324l57 264h-381v113h405l107 524h115l-107 -524h262l107 524h114l-106 -524h291v-113h-320l-57 -264h377v-111h-398l-114 -524h-115l119 524h-264l-117 -524h-111l115 524h-303zM479 635h262l58 264h-264z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="1042" +d="M82 397h143q0 -133 82 -215t213 -82q134 0 215.5 82t81.5 215q0 132 -82 213.5t-215 81.5q-189 0 -313.5 124t-124.5 314q0 169 102 287t267 144v108h141v-108q165 -26 267 -144t102 -287h-144q0 132 -82.5 219t-214.5 87q-129 0 -212 -87t-83 -219q0 -133 82 -216 +t213 -83q191 0 316 -122.5t125 -311.5q0 -170 -101.5 -288t-267.5 -144v-110h-141v110q-166 26 -267.5 144t-101.5 288z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="1226" +d="M82 1290q0 117 82 199t198 82q64 0 120.5 -27t95.5 -74q48 -61 129 -61q51 0 92.5 28.5t60.5 73.5l25 60l104 -45l-651 -1561l-102 43l538 1297q-52 -9 -67 -9q-19 0 -64 9v-15q0 -115 -82.5 -197.5t-198.5 -82.5t-198 82t-82 198zM197 1290q0 -69 48 -119.5t117 -50.5 +t117.5 50.5t48.5 119.5t-48.5 119.5t-117.5 50.5t-117 -50.5t-48 -119.5zM584 244q0 116 82 197t198 81t198.5 -81t82.5 -197t-82.5 -197.5t-198.5 -81.5t-198 81t-82 198zM698 244q0 -70 48.5 -119t117.5 -49t117.5 49t48.5 119t-48.5 119t-117.5 49t-117.5 -49t-48.5 -119 +z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="1361" +d="M82 487q0 153 81 280t214 191q-56 49 -90.5 119t-34.5 144q0 144 104.5 247t249.5 103t250 -103t105 -247t-104.5 -245.5t-250.5 -101.5q-158 0 -269.5 -113t-111.5 -274q0 -159 111.5 -273t269.5 -114q159 0 272 114t113 273v281q0 101 71.5 172.5t172.5 71.5h70v-140 +h-68q-44 0 -75.5 -30.5t-31.5 -73.5v-524q0 -43 31.5 -74t75.5 -31h68v-139h-70q-75 0 -138.5 48.5t-88.5 119.5q-69 -92 -174 -147.5t-228 -55.5q-107 0 -203.5 41t-167 111t-112 167t-41.5 203zM395 1221q0 -86 62.5 -148.5t148.5 -62.5q87 0 149 62t62 149 +q0 88 -62 151.5t-149 63.5q-86 0 -148.5 -63.5t-62.5 -151.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="299" +d="M102 1135v401h95v-401h-95z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="606" +d="M164 588q0 262 63 518.5t179 464.5h139q-121 -195 -181.5 -452t-60.5 -531q0 -270 60.5 -523t181.5 -450h-139q-115 208 -178.5 463t-63.5 510z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="606" +d="M61 -385q121 197 181.5 450t60.5 523q0 274 -60.5 531t-181.5 452h140q116 -208 178.5 -464t62.5 -519q0 -256 -63.5 -510.5t-177.5 -462.5h-140z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="776" +d="M164 1257l133 68l-133 64l55 96l121 -82l-6 147h108l-8 -147l123 82l55 -96l-131 -64l131 -68l-55 -96l-123 82l8 -147h-108l6 147l-121 -82z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="1390" +d="M102 524v140h525v522h139v-522h522v-140h-522v-524h-139v524h-525z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="454" +d="M72 90q0 43 30 74t74 31q43 0 74 -31t31 -74v-137q0 -74 -46 -126t-110 -52h-23v90h23q29 0 49.5 27t20.5 61v35q-6 -4 -19 -4q-44 0 -74 31t-30 75z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="952" +d="M143 524v140h666v-140h-666z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="454" +d="M72 88q0 43 31 74t75 31q41 0 72 -31t31 -74q0 -42 -30.5 -73t-72.5 -31q-44 0 -75 30.5t-31 73.5z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="999" +d="M123 8l653 1563l101 -45l-650 -1561z" /> + <glyph glyph-name="zero" unicode="0" horiz-adv-x="1224" +d="M106 471v592q0 138 68 255t185 185t255 68q137 0 253 -68t183.5 -185t67.5 -255v-592q0 -137 -67.5 -253.5t-183.5 -184.5t-253 -68q-138 0 -255 68t-185 184.5t-68 253.5zM246 471q0 -153 108 -262t260 -109q151 0 258 109.5t107 261.5v592q0 154 -107 263.5t-258 109.5 +q-152 0 -260 -109.5t-108 -263.5v-592z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="653" +d="M102 1225v157l260 154h140v-1536h-140v1374z" /> + <glyph glyph-name="two" unicode="2" horiz-adv-x="1185" +d="M82 999v68q0 217 146.5 360.5t365.5 143.5q218 0 364 -143.5t146 -360.5q0 -113 -54.5 -217t-140.5 -184l-561 -523v-4h709v-139h-928v139l690 635q64 58 103 133.5t39 159.5q0 160 -104.5 264.5t-262.5 104.5q-159 0 -266 -105t-107 -264v-68h-139z" /> + <glyph glyph-name="three" unicode="3" horiz-adv-x="1206" +d="M78 418h139q0 -153 100.5 -235.5t284.5 -82.5q183 0 281 82t98 236q0 156 -106 236.5t-273 80.5h-88v135h88q145 0 236.5 71t91.5 212q0 138 -83.5 210.5t-244.5 72.5t-245.5 -72.5t-84.5 -210.5h-139q0 196 124.5 307t344.5 111q221 0 346 -111t125 -307 +q0 -244 -227 -344v-4q126 -44 202 -142t76 -245q0 -212 -140 -332.5t-382 -120.5q-244 0 -384 120.5t-140 332.5z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="1255" +d="M66 350v135l741 1051h139v-1051h244v-135h-244v-350h-139v350h-741zM233 489l3 -4h571v795l-4 2z" /> + <glyph glyph-name="five" unicode="5" horiz-adv-x="1206" +d="M78 485h139q0 -158 113.5 -271.5t271.5 -113.5t268.5 113t110.5 272q0 162 -110.5 275.5t-268.5 113.5q-164 0 -278 -133l-138 25l136 770h653v-139h-537l-78 -445l5 -2q117 60 237 60q223 0 372.5 -150.5t149.5 -374.5q0 -221 -149.5 -370.5t-372.5 -149.5 +q-143 0 -263.5 69.5t-190.5 189.5t-70 261z" /> + <glyph glyph-name="six" unicode="6" horiz-adv-x="1210" +d="M82 485q0 161 92 297l502 754h166l-359 -537l2 -4q59 15 121 15q106 0 203 -41.5t167 -111.5t111 -167.5t41 -204.5q0 -106 -41 -202t-111 -166t-167 -111t-203 -41q-110 0 -207.5 40t-167 109t-109.5 165.5t-40 205.5zM225 485q0 -159 111.5 -272t269.5 -113t268.5 113 +t110.5 272q0 162 -110.5 275.5t-268.5 113.5t-269.5 -114t-111.5 -275z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="1103" +d="M53 1397v139h989v-139l-579 -1397h-154l582 1391l-4 6h-834z" /> + <glyph glyph-name="eight" unicode="8" horiz-adv-x="1232" +d="M82 418q0 136 74 235t202 152v4q-223 107 -223 344q0 128 63 224t171.5 145t246.5 49q139 0 247.5 -49t171.5 -145t63 -224q0 -236 -224 -344v-4q128 -53 202.5 -152t74.5 -235q0 -139 -71 -243t-191.5 -157t-272.5 -53t-272.5 53t-191 157t-70.5 243zM225 418 +q0 -152 107.5 -235t283.5 -83t284 83t108 235q0 144 -112 229.5t-280 85.5t-279.5 -85.5t-111.5 -229.5zM279 1153q0 -131 96.5 -208t240.5 -77q145 0 241.5 77t96.5 208q0 136 -93 209.5t-245 73.5t-244.5 -73.5t-92.5 -209.5z" /> + <glyph glyph-name="nine" unicode="9" horiz-adv-x="1210" +d="M82 1051q0 106 41 202t111 166t167 111t203 41q110 0 207.5 -40t167 -109t109.5 -165.5t40 -205.5q0 -161 -92 -297l-501 -754h-166l358 537l-2 4q-58 -15 -121 -15q-106 0 -203 41.5t-167 111.5t-111 167.5t-41 204.5zM225 1051q0 -162 110.5 -275.5t268.5 -113.5 +t269.5 114t111.5 275q0 159 -111.5 272t-269.5 113t-268.5 -113t-110.5 -272z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="454" +d="M72 88q0 43 30.5 74t73.5 31t74 -31t31 -74t-31 -73.5t-74 -30.5t-73.5 30.5t-30.5 73.5zM72 1096q0 44 30.5 75t73.5 31t74 -31t31 -75q0 -43 -31 -74t-74 -31t-73.5 31t-30.5 74z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="454" +d="M72 90q0 43 30 74t74 31q43 0 74 -31t31 -74v-137q0 -74 -46 -126t-110 -52h-23v90h23q29 0 49.5 27t20.5 61v35q-6 -4 -19 -4q-44 0 -74 31t-30 75zM72 1096q0 44 30.5 75t73.5 31t74 -31t31 -75q0 -43 -31 -74t-74 -31t-73.5 31t-30.5 74z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="862" +d="M82 524v138l698 524v-174l-559 -418l559 -420v-174z" /> + <glyph glyph-name="equal" unicode="=" horiz-adv-x="1390" +d="M102 352v140h1186v-140h-1186zM102 700v140h1186v-140h-1186z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="862" +d="M82 0v174l559 420l-559 418v174l698 -524v-138z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="1208" +d="M82 1051q0 106 41 202t111 166t167 111t203 41t203 -41t167 -111t111 -166t41 -202q0 -199 -130 -347t-322 -174v-180h-139v316h69q158 0 268.5 112t110.5 273q0 159 -110.5 272t-268.5 113t-270.5 -113.5t-112.5 -271.5h-139zM498 88q0 44 31 75.5t75 31.5 +q42 0 72.5 -31.5t30.5 -75.5q0 -42 -30.5 -73t-72.5 -31q-44 0 -75 30.5t-31 73.5z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="1792" +d="M82 768q0 217 108 402t293.5 293t403.5 108q217 0 402 -108t293 -293t108 -402v-209q0 -101 -71.5 -172.5t-172.5 -71.5q-75 0 -136 40t-89 106q-65 -68 -151 -107t-183 -39q-189 0 -322 132t-133 321t133 320t322 131q123 0 227 -59.5t164.5 -163.5t60.5 -228v-209 +q0 -44 31.5 -76t75.5 -32q42 0 73 32t31 76v209q0 181 -88.5 334.5t-241.5 243.5t-333 90q-135 0 -258 -53t-211 -143t-140.5 -213.5t-52.5 -258.5t52.5 -258.5t140.5 -213.5t211 -143t258 -53q150 0 297 70l61 -121q-173 -84 -358 -84q-218 0 -403.5 108t-293.5 293 +t-108 402zM575 768q0 -131 91.5 -224t220.5 -93q130 0 222.5 93t92.5 224q0 129 -92.5 222t-222.5 93q-129 0 -220.5 -93t-91.5 -222z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="1357" +d="M123 0v1536h682q166 0 283.5 -117.5t117.5 -283.5q0 -106 -54 -189t-132 -127v-4q106 -44 181 -147t75 -232q0 -119 -58 -219.5t-158.5 -158.5t-219.5 -58h-717zM262 139h578q121 0 207 87t86 210t-86 210t-207 87h-578v-594zM262 872h543q107 0 182.5 77t75.5 186 +q0 108 -75.5 185t-182.5 77h-543v-525z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="1716" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q178 0 337.5 -74.5t272 -205.5t161.5 -296h-150q-70 194 -239.5 317.5t-381.5 123.5q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5t87.5 -334.5t239.5 -243.5t332 -90q212 0 381.5 123.5t239.5 317.5h150 +q-49 -165 -161.5 -296t-272 -205.5t-337.5 -74.5q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="1486" +d="M123 0v1536h524q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103h-524zM262 139h385q171 0 315 84.5t227 229.5t83 315q0 128 -49 244.5t-132.5 201t-199.5 134t-244 49.5h-385v-1258z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="1312" +d="M123 0v1536h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="1234" +d="M123 0v1536h1081v-139h-942v-559h803v-140h-803v-698h-139z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="1777" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q254 0 461 -147.5t293 -379.5h-153q-80 174 -242 283t-359 109q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5t87.5 -334.5t239.5 -243.5t332 -90q126 0 240 46.5t198 127t139 190.5t69 234h-646v140h781v-838h-139 +v322l-5 2q-114 -166 -277.5 -262.5t-359.5 -96.5q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="1431" +d="M123 0v1536h139v-698h907v698h140v-1536h-140v698h-907v-698h-139z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="385" +d="M123 0v1536h139v-1536h-139z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="1140" +d="M41 453h139q0 -159 97.5 -256t252.5 -97q154 0 251.5 97.5t97.5 255.5v1083h139v-1083q0 -215 -138.5 -351.5t-349.5 -136.5q-212 0 -350.5 136.5t-138.5 351.5z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="1368" +d="M123 0v1536h139v-879l879 879h196l-768 -768l768 -768h-196l-670 670l-209 -209v-461h-139z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="1200" +d="M123 0v1536h139v-1397h907v-139h-1046z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="1781" +d="M123 0v1536h139l627 -1354h4l627 1354h139v-1536h-139v1200h-4l-555 -1200h-140l-555 1200h-4v-1200h-139z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="1431" +d="M123 0v1536h139l905 -1292l2 2v1290h140v-1536h-140l-905 1292l-2 -2v-1290h-139z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="1347" +d="M123 0v1536h665q201 0 344.5 -143.5t143.5 -345.5q0 -99 -39 -189.5t-104.5 -156.5t-155.5 -105t-189 -39h-526v-557h-139zM262 696h526q144 0 244.5 103t100.5 248q0 146 -100 248t-245 102h-526v-701z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="1734" +d="M72 784q0 160 62 305.5t167 251t250 168t305 62.5t305.5 -62.5t250.5 -168t167.5 -251t62.5 -305.5q0 -198 -100.5 -366t-263.5 -273l4 -6h360v-139h-786q-160 0 -305 62t-250 167t-167 250t-62 305zM215 784q0 -175 85 -323.5t232 -235t322 -86.5t323.5 86.5t235 235 +t86.5 323.5t-86.5 325.5t-235 238.5t-323.5 88q-131 0 -249.5 -52t-204 -140t-135.5 -208.5t-50 -251.5z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="1357" +d="M123 0v1536h665q201 0 344.5 -143.5t143.5 -345.5q0 -155 -88.5 -280.5t-231.5 -178.5l293 -588h-153l-283 557h-551v-557h-139zM262 696h526q144 0 244.5 103t100.5 248q0 146 -100 248t-245 102h-526v-701z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="1210" +d="M82 412h141q0 -151 99.5 -231.5t283.5 -80.5q178 0 278.5 78.5t100.5 233.5q0 82 -29.5 140.5t-80 91t-115.5 54t-137 35.5t-144 29.5t-137 43t-115.5 69t-80 113.5t-29.5 171q0 191 134 301.5t355 110.5q227 0 357.5 -109.5t130.5 -302.5h-138q0 134 -91 205.5 +t-259 71.5q-163 0 -254.5 -71.5t-91.5 -205.5q0 -63 21.5 -110.5t54.5 -76t86.5 -50t102 -33t116.5 -25.5q67 -13 102 -21t95.5 -26.5t93.5 -38t76.5 -54t65.5 -76t38 -102t16 -134.5q0 -211 -142.5 -329t-379.5 -118q-242 0 -383 119.5t-141 327.5z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="1245" +d="M31 1397v139h1183v-139h-522v-1397h-139v1397h-522z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="1431" +d="M123 559v977h139v-977q0 -124 60.5 -229.5t165.5 -167.5t229 -62q187 0 319.5 135t132.5 324v977h140v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="1388" +d="M31 1536h149l512 -1329h4l510 1329h152l-594 -1536h-139z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="1957" +d="M31 1536h145l365 -1290h4l366 1290h140l362 -1290h4l365 1290h145l-436 -1536h-150l-360 1270h-4l-356 -1270h-154z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="1320" +d="M31 0l544 768l-544 768h174l454 -647l457 647h174l-545 -768l545 -768h-174l-457 647l-454 -647h-174z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="1372" +d="M31 1536h172l483 -678l483 678h172l-585 -819v-717h-140v717z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1310" +d="M61 0v139l1006 1252v6h-1006v139h1188v-139l-1005 -1252v-6h1005v-139h-1188z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="575" +d="M164 -350v1886h350v-135h-211v-1614h211v-137h-350z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="999" +d="M123 1526l100 45l654 -1563l-105 -43z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="575" +d="M61 -213h211v1614h-211v135h351v-1886h-351v137z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="1222" +d="M123 768l418 768h141l418 -768h-158l-330 604l-329 -604h-160z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="1062" +d="M0 -186h1186v-52h-1186v52z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="718" +d="M184 1454v117l351 -121v-82z" /> + <glyph glyph-name="a" unicode="a" +d="M71 353v14q0 135 92 234q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-43 -55 -43 -121q0 -28 8 -58z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="1464" +d="M123 0v1536h139v-590h4q79 120 205 197.5t293 77.5q127 0 242 -49.5t197 -133.5t130.5 -200t48.5 -244t-48.5 -244.5t-130.5 -201t-197 -134t-242 -49.5q-167 0 -292.5 77.5t-205.5 197.5h-4v-240h-139zM262 594q0 -100 39 -191.5t105 -157.5t156.5 -105.5t189.5 -39.5 +q202 0 344.5 145t142.5 349q0 133 -65 246t-177 179t-245 66q-201 0 -345.5 -144.5t-144.5 -346.5z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="1376" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q203 0 366 -116.5t228 -301.5h-150q-61 127 -180.5 204.5t-263.5 77.5q-132 0 -243.5 -66t-176 -179t-64.5 -246q0 -203 142 -348.5t342 -145.5q143 0 263 79t181 206h150q-65 -186 -228 -303t-366 -117q-170 0 -314.5 84.5 +t-228.5 229.5t-84 315z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="1464" +d="M82 594q0 128 48.5 244t130.5 200t197 133.5t242 49.5q167 0 293 -77.5t205 -197.5h4v590h139v-1536h-139v240h-4q-80 -120 -205.5 -197.5t-292.5 -77.5q-127 0 -242 49.5t-197 134t-130.5 201t-48.5 244.5zM225 594q0 -204 143 -349t345 -145q132 0 244.5 66t178.5 180 +t66 248q0 202 -144 346.5t-345 144.5q-133 0 -245.5 -66t-177.5 -179t-65 -246z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="1415" +d="M82 594q0 170 84 314.5t228 228.5t313 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1100q27 -179 162.5 -301.5t317.5 -122.5q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-169 0 -313 84.5t-228 229.5t-84 315zM227 664 +h961q-26 180 -162 300.5t-319 120.5t-318 -120.5t-162 -300.5z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="616" +d="M41 1047v139h141v69q0 117 81.5 199t195.5 82h106v-139h-106q-57 0 -97 -41.5t-40 -100.5v-69h243v-139h-243v-1047h-140v1047h-141z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="1193" +d="M74 -43q0 108 59 182q-59 59 -59 144q0 219 278 237v4q-73 51 -118.5 127.5t-45.5 169.5q0 165 121 283.5t287 118.5q153 0 268 -101q30 46 80.5 73.5t108.5 27.5h53v-138h-53q-37 0 -62.5 -26.5t-25.5 -63.5q0 -15 8 -28q31 -100 31 -146q0 -165 -121 -283t-287 -118 +h-17h-60.5t-55 -1t-53 -2.5t-46 -4.5t-43.5 -8.5t-35 -12.5t-30 -16.5t-20.5 -22.5t-14.5 -29t-4 -36q0 -35 25 -60q132 72 354 72q240 0 382 -86t142 -256q0 -113 -68.5 -191.5t-184 -114.5t-271.5 -36q-155 0 -270.5 36t-183.5 114.5t-68 191.5zM217 -43 +q0 -112 98.5 -159.5t280.5 -47.5t281.5 47.5t99.5 159.5t-99.5 159.5t-281.5 47.5t-280.5 -47.5t-98.5 -159.5zM332 821q0 -107 78.5 -186.5t185.5 -79.5q108 0 186 79t78 187q0 109 -77.5 187.5t-186.5 78.5q-107 0 -185.5 -78.5t-78.5 -187.5z" /> + <glyph glyph-name="h" unicode="h" +d="M123 0v1536h139v-551h4q43 91 159.5 163.5t248.5 72.5q217 0 339 -129.5t122 -343.5v-748h-140v748q0 151 -91.5 244t-241.5 93q-98 0 -189 -47t-149.5 -129.5t-61.5 -177.5v-731h-139z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="385" +d="M100 1479q0 37 28 64.5t65 27.5t64.5 -27.5t27.5 -64.5t-27.5 -65t-64.5 -28t-65 28t-28 65zM123 0v1186h139v-1186h-139z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="493" +d="M-16 -211h106q57 0 98 41.5t41 99.5v1256h140v-1256q0 -115 -82.5 -197.5t-196.5 -82.5h-106v139zM209 1479q0 37 26.5 64.5t63.5 27.5t64.5 -27.5t27.5 -64.5t-27.5 -63.5t-64.5 -26.5t-63.5 26.5t-26.5 63.5z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="1083" +d="M123 0v1536h139v-948l598 598h199l-594 -592l594 -594h-199l-493 496l-105 -107v-389h-139z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="385" +d="M123 0v1536h139v-1536h-139z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="1781" +d="M123 0v1186h139v-148h4q42 74 116.5 128.5t180.5 54.5q224 0 352 -195q59 88 150.5 141.5t196.5 53.5q171 0 284 -112.5t113 -285.5v-823h-139v823q0 115 -81 188.5t-198 73.5t-198.5 -82.5t-81.5 -199.5v-803h-140v803q0 117 -80.5 199.5t-197.5 82.5q-113 0 -195.5 -80 +t-85.5 -192v-813h-139z" /> + <glyph glyph-name="n" unicode="n" +d="M123 0v1186h139v-201h4q43 91 159.5 163.5t248.5 72.5q217 0 339 -129.5t122 -343.5v-748h-140v748q0 151 -91.5 244t-241.5 93q-98 0 -189 -47t-149.5 -129.5t-61.5 -177.5v-731h-139z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="1464" +d="M123 -350v1536h139v-240h4q80 120 205.5 197.5t292.5 77.5q127 0 242 -49.5t197 -134t130.5 -201t48.5 -244.5t-48.5 -244t-130.5 -200t-197 -133.5t-242 -49.5q-167 0 -293 77.5t-205 197.5h-4v-590h-139zM262 592q0 -202 144.5 -347t345.5 -145q133 0 245 66t177 179.5 +t65 246.5q0 204 -142.5 348.5t-344.5 144.5q-132 0 -245 -66t-179 -179.5t-66 -247.5z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="1464" +d="M82 592q0 128 48.5 244.5t130.5 201t197 134t242 49.5q167 0 292.5 -77.5t205.5 -197.5h4v240h139v-1536h-139v590h-4q-79 -120 -205 -197.5t-293 -77.5q-127 0 -242 49.5t-197 133.5t-130.5 200t-48.5 244zM225 592q0 -100 38.5 -190.5t104 -157t156 -105.5t189.5 -39 +q132 0 244.5 66t178.5 179.5t66 246.5q0 134 -66 247.5t-178.5 179.5t-244.5 66q-202 0 -345 -144.5t-143 -348.5z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="643" +d="M123 0v1186h139v-189h4q44 83 141.5 151.5t204.5 72.5v-152q-142 -6 -243 -102.5t-107 -235.5v-731h-139z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="1120" +d="M82 356h141q0 -113 90.5 -184.5t245.5 -71.5q159 0 247.5 61t88.5 171q0 61 -26.5 102.5t-71 63t-102.5 34t-122 20.5t-128 18t-122 32t-102.5 56.5t-71 97t-26.5 149.5q0 79 35 140.5t96 99t138.5 57t166.5 19.5q195 0 315.5 -95.5t120.5 -244.5h-141q0 89 -81 146.5 +t-214 57.5q-137 0 -215 -48t-78 -128q0 -63 26.5 -105.5t71 -64t102.5 -34.5t122 -21t128 -18.5t122 -33t102.5 -57.5t71 -98.5t26.5 -150.5q0 -169 -128.5 -265t-350.5 -96q-216 0 -346.5 109.5t-130.5 281.5z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="606" +d="M41 1047v139h139v268h139v-268h246v-139h-246v-768q0 -69 39.5 -104.5t100.5 -35.5h106v-139h-106q-118 0 -198.5 76t-80.5 203v768h-139z" /> + <glyph glyph-name="u" unicode="u" +d="M123 438v748h139v-748q0 -151 92 -244.5t242 -93.5q98 0 188.5 47.5t149 130t61.5 177.5v731h140v-1186h-140v201h-4q-43 -91 -159 -163.5t-248 -72.5q-217 0 -339 129.5t-122 343.5z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="1191" +d="M31 1186h151l410 -991h4l412 991h153l-495 -1186h-142z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="1783" +d="M31 1186h149l320 -965h4l321 965h138l319 -965h4l322 965h145l-395 -1186h-148l-315 954h-4l-316 -954h-147z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="1097" +d="M31 0l432 594l-432 592h172l346 -475l346 475h172l-430 -592l428 -594h-172l-344 475l-346 -475h-172z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="1189" +d="M31 1186h151l412 -993l414 993h151l-639 -1536h-153l153 364z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="1075" +d="M66 0v139l759 903v5h-759v139h944v-139l-760 -904v-4h760v-139h-944z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="679" +d="M164 524v138h35q44 0 75 31t31 75v522q0 102 71 174t173 72h69v-135h-69q-43 0 -74 -33.5t-31 -77.5v-522q0 -108 -104 -172v-4q104 -64 104 -174v-520q0 -45 31.5 -79t73.5 -34h69v-135h-69q-102 0 -173 72.5t-71 175.5v520q0 44 -31 75t-75 31h-35z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="606" +d="M246 -350v1886h114v-1886h-114z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="679" +d="M61 -215h70q42 0 73.5 34t31.5 79v520q0 110 104 174v4q-104 64 -104 172v522q0 44 -31 77.5t-74 33.5h-70v135h70q102 0 173 -72t71 -174v-522q0 -44 31 -75t75 -31h35v-138h-35q-44 0 -75 -31t-31 -75v-520q0 -103 -71 -175.5t-173 -72.5h-70v135z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="960" +d="M123 516q0 92 64.5 156.5t156.5 64.5q61 0 113 -30.5t80 -83.5q28 -48 81 -48q39 0 66 28t27 69h127q0 -92 -64.5 -156.5t-155.5 -64.5q-62 0 -113 30.5t-79 81.5q-30 49 -82 49q-40 0 -68 -27.5t-28 -68.5h-125z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="1024" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="389" +d="M90 1450q0 41 31.5 71.5t75.5 30.5q41 0 71.5 -30.5t30.5 -71.5q0 -44 -30.5 -75.5t-71.5 -31.5q-44 0 -75.5 31.5t-31.5 75.5zM123 0l22 1186h99l22 -1186h-143z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="1376" +d="M82 594q0 159 73.5 296t201.5 223.5t284 103.5v145h137v-145q182 -20 323.5 -132.5t201.5 -281.5h-150q-61 127 -180.5 204.5t-263.5 77.5q-132 0 -243.5 -66t-176 -179t-64.5 -246q0 -203 142 -348.5t342 -145.5q143 0 263 79t181 206h150q-61 -169 -202.5 -282.5 +t-322.5 -133.5v-143h-137v143q-237 25 -398 204t-161 421z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="1267" +d="M82 63l102 103q62 65 62 149v394h-164v139h164v250q0 199 131.5 336t339.5 137q137 0 245 -64t166 -171.5t58 -237.5h-137q0 142 -92 240t-240 98t-240 -98t-92 -240v-250h533v-139h-533v-396q0 -19 -8 -51l2 -2q32 8 55 8q143 0 250 -102q70 -66 152 -66q86 0 149 66 +q62 62 62 149h139q0 -146 -103 -249q-104 -101 -247 -101q-70 0 -136.5 27.5t-115.5 73.5q-74 67 -150 67q-91 0 -151 -67l-101 -101z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="1382" +d="M98 98l152 152q-121 154 -121 344q0 188 121 342l-152 151l99 99l151 -152q151 119 344 119q191 0 342 -119l152 152l98 -99l-151 -151q122 -155 122 -342q0 -189 -122 -344l151 -152l-98 -98l-152 152q-149 -117 -342 -117q-195 0 -344 117l-151 -152zM272 594 +q0 -175 123 -299.5t297 -124.5t297 124.5t123 299.5t-123 299.5t-297 124.5t-297 -124.5t-123 -299.5z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="1247" +d="M31 1536h166l426 -643l426 643h168l-322 -489h235v-140h-329l-94 -139h423v-139h-436v-629h-139v629h-436v139h420l-90 139h-330v140h235z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="387" +d="M123 -102v591h141v-591h-141zM123 698v594h141v-594h-141z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="1075" +d="M102 -12h140q0 -107 81.5 -172.5t213.5 -65.5q134 0 213 65t79 173q0 106 -79 169.5t-213 63.5q-192 0 -313.5 103.5t-121.5 269.5q0 188 183 303q-85 50 -134 129.5t-49 171.5q0 164 122 268.5t313 104.5q192 0 314 -104.5t122 -268.5h-139q0 107 -81 172.5t-216 65.5 +q-132 0 -211.5 -65.5t-79.5 -172.5q0 -99 81 -166t210 -67q192 0 314 -104t122 -267q0 -191 -180 -303q180 -112 180 -303q0 -164 -122 -268.5t-314 -104.5q-191 0 -313 104.5t-122 268.5zM246 594q0 -107 79.5 -172.5t211.5 -65.5q134 0 213 65t79 173q0 106 -79 170.5 +t-213 64.5q-132 0 -211.5 -64.5t-79.5 -170.5z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="647" +d="M31 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM436 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="1419" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM156 594q0 -112 44 -215t118 -177.5t176.5 -118.5t214.5 -44q114 0 217 44t177 118.5t117.5 177.5 +t43.5 215t-43.5 214.5t-117.5 176.5t-177 118t-217 44q-112 0 -214.5 -44t-176.5 -118t-118 -176.5t-44 -214.5zM287 594q0 173 124.5 296.5t297.5 123.5q176 0 299 -123l-70 -72q-96 96 -229 96q-132 0 -226 -94.5t-94 -226.5q0 -134 94 -229t226 -95q131 0 229 95l70 -70 +q-123 -123 -299 -123q-174 0 -298 123t-124 299z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="739" +d="M105 1229.5q54 95.5 196 95.5h246v43q0 63 -44.5 99t-133.5 36q-88 0 -132 -33.5t-44 -87.5h-72q0 82 67 135.5t181 53.5q117 0 182 -55.5t65 -147.5v-407h-69v100h-2q-77 -119 -223 -119q-144 0 -207.5 96t-9.5 191.5zM168.5 1193.5q-34.5 -61.5 11 -122.5t142.5 -61 +q92 0 158.5 57t66.5 147v41h-246q-98 0 -132.5 -61.5z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="897" +d="M82 594l383 383v-197l-186 -186l186 -188v-197zM432 594l383 383v-197l-186 -186l186 -188v-197z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="911" +d="M123 524v140h665v-279h-139v139h-526z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="952" +d="M143 524v140h666v-140h-666z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="653" +d="M82 1327q0 100 72.5 172t173.5 72q100 0 171.5 -72t71.5 -172q0 -101 -71.5 -173.5t-171.5 -72.5q-101 0 -173.5 72.5t-72.5 173.5zM111 1327q0 -91 63 -154t154 -63q89 0 152 63t63 154q0 89 -63 152t-152 63q-91 0 -154 -63t-63 -152zM215 1171v316h141q43 0 73 -29 +t30 -69q0 -34 -18.5 -60t-49.5 -37l62 -121l-31 -2l-60 119h-118v-117h-29zM244 1315h112q31 0 51.5 21t20.5 53q0 29 -21 50t-51 21h-112v-145z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="628" +d="M123 1421v115h383v-115h-383z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="626" +d="M102 1366q0 86 61 145.5t148 59.5t150 -59.5t63 -145.5t-63 -145.5t-150 -59.5t-148 59.5t-61 145.5zM209 1366q0 -43 29.5 -72.5t72.5 -29.5t75 30t32 72t-32 72t-75 30t-72.5 -29.5t-29.5 -72.5z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="1390" +d="M102 0v139h1186v-139h-1186zM102 698v140h525v348h139v-348h522v-140h-522v-348h-139v348h-525z" /> + <glyph glyph-name="uni00B2" unicode="²" horiz-adv-x="673" +d="M82 1268v32q0 108 73.5 180t182.5 72q108 0 181 -72t73 -180q0 -111 -96 -200l-281 -260v-2h354v-70h-465v70l347 317q69 62 69 145q0 79 -52 132t-130 53q-80 0 -133 -53t-53 -132v-32h-70z" /> + <glyph glyph-name="uni00B3" unicode="³" horiz-adv-x="686" +d="M82 979h70q0 -77 50 -118.5t142 -41.5q91 0 139.5 41.5t48.5 118.5q0 78 -52.5 118t-135.5 40h-45v67h45q72 0 118 36t46 106q0 69 -42 105t-122 36q-82 0 -124 -36t-42 -105h-69q0 98 62.5 153t172.5 55q111 0 173.5 -55t62.5 -153q0 -121 -115 -172v-3q63 -21 101 -70 +t38 -122q0 -106 -70 -166.5t-190 -60.5q-122 0 -192 60.5t-70 166.5z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="718" +d="M184 1368v82l351 121v-117z" /> + <glyph glyph-name="uni00B5" unicode="µ" horiz-adv-x="1259" +d="M123 -350v1536h139v-748q0 -151 92 -244.5t242 -93.5q98 0 188.5 47.5t149 130t61.5 177.5v731h140v-1186h-140v201h-4q-43 -91 -159 -163.5t-248 -72.5q-192 0 -320 125h-2v-440h-139z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="1220" +d="M51 1153q0 158 112.5 270.5t272.5 112.5h662v-1536h-140v1397h-208v-1397h-140v768h-174q-160 0 -272.5 112.5t-112.5 272.5zM195 1153q0 -103 69.5 -174.5t171.5 -71.5h174v490h-174q-102 0 -171.5 -71t-69.5 -173z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="454" +d="M72 594q0 43 31 73.5t75 30.5q42 0 72.5 -31t30.5 -73q0 -43 -31 -74t-72 -31q-44 0 -75 31t-31 74z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="739" +d="M205 -260h59q0 -43 30 -72.5t73 -29.5t72.5 29.5t29.5 72.5t-29.5 72.5t-72.5 29.5q-63 0 -88 -49l-56 6l35 201h55l-22 -135q28 25 70 29.5t80.5 -9t66 -51.5t27.5 -92q0 -70 -48.5 -115t-119.5 -45t-116.5 44t-45.5 114z" /> + <glyph glyph-name="uni00B9" unicode="¹" horiz-adv-x="423" +d="M102 1380v80l129 76h70v-768h-70v688z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="792" +d="M82 1257q0 129 92.5 221.5t222.5 92.5t223 -92.5t93 -221.5q0 -130 -92.5 -222.5t-223.5 -92.5t-223 92t-92 223zM154 1257q0 -103 71 -175t172 -72t172.5 72t71.5 175q0 101 -71.5 173.5t-172.5 72.5t-172 -72t-71 -174z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="897" +d="M82 209v197l186 188l-186 186v197l383 -383zM432 209v197l186 188l-186 186v197l383 -383z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="1320" +d="M102 1380v80l129 76h70v-768h-70v688zM254 -10l657 1581l58 -25l-660 -1581zM717 176v68l370 524h70v-524h123v-68h-123v-176h-70v176h-370zM801 246l2 -2h284v397h-2z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="1413" +d="M102 1380v80l129 76h70v-768h-70v688zM254 -10l657 1581l58 -25l-660 -1581zM821 500v32q0 108 73.5 180t182.5 72q108 0 181 -72t73 -180q0 -111 -96 -200l-281 -260v-2h355v-70h-465v70l346 317q70 63 70 145q0 79 -52.5 132t-130.5 53q-80 0 -133 -53t-53 -132v-32 +h-70z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="1527" +d="M82 979h70q0 -77 50 -118.5t142 -41.5q91 0 139.5 41.5t48.5 118.5q0 78 -52.5 118t-135.5 40h-45v67h45q72 0 118 36t46 106q0 69 -42 105t-122 36q-82 0 -124 -36t-42 -105h-69q0 98 62.5 153t172.5 55q111 0 173.5 -55t62.5 -153q0 -121 -115 -172v-3q63 -21 101 -70 +t38 -122q0 -106 -70 -166.5t-190 -60.5q-122 0 -192 60.5t-70 166.5zM461 -10l657 1581l58 -25l-660 -1581zM924 176v68l370 524h70v-524h123v-68h-123v-176h-70v176h-370zM1008 246l2 -2h284v397h-2z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="1208" +d="M82 485q0 199 130.5 346.5t322.5 174.5v180h139v-316h-70q-158 0 -268.5 -112t-110.5 -273q0 -159 110.5 -272t268.5 -113t270.5 113.5t112.5 271.5h139q0 -106 -41 -202t-111 -166t-167 -111t-203 -41t-203 41t-167 111t-111 166t-41 202zM502 1448q0 43 30.5 73.5 +t71.5 30.5q44 0 75.5 -30.5t31.5 -73.5q0 -44 -31.5 -75.5t-75.5 -31.5q-41 0 -71.5 31.5t-30.5 75.5z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM520 1686v116l350 -121v-82z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM520 1599v82l350 121v-116z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM469 1618l178 205h98l177 -205h-93l-133 115l-133 -115h-94z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM461 1657q0 60 41.5 102.5t101.5 42.5q41 0 75.5 -22t49.5 -56q16 -26 53 -26q25 0 43.5 16.5t18.5 42.5h80q0 -60 -41.5 -102.5t-100.5 -42.5q-39 0 -72 21.5t-51 54.5 +q-20 30 -55 30q-26 0 -43.5 -17.5t-17.5 -43.5h-82z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM399 1712q0 37 25.5 63.5t64.5 26.5q37 0 64 -26.5t27 -63.5q0 -38 -27 -64t-64 -26q-39 0 -64.5 25.5t-25.5 64.5zM805 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5 +t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="1388" +d="M31 0l594 1536h139l594 -1536h-152l-135 350h-756l-135 -350h-149zM371 487h647l-322 842h-4zM541 1743q0 61 45.5 105t107.5 44t108 -44t46 -105q0 -62 -46 -106t-108 -44t-107.5 44t-45.5 106zM631 1743q0 -28 17.5 -46t45.5 -18q27 0 45.5 18.5t18.5 45.5 +q0 26 -19 44.5t-45 18.5q-27 0 -45 -18t-18 -45z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="2306" +d="M0 0l1118 1536h1116v-139h-977v-559h838v-140h-838v-559h977v-139h-1116v350h-692l-252 -350h-174zM530 487h588v809h-4z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="1716" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q178 0 337.5 -74.5t272 -205.5t161.5 -296h-150q-70 194 -239.5 317.5t-381.5 123.5q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5t87.5 -334.5t239.5 -243.5t332 -90q212 0 381.5 123.5t239.5 317.5h150 +q-49 -165 -161.5 -296t-272 -205.5t-337.5 -74.5q-19 0 -59 4l-16 -104q28 25 70 29.5t80 -9t65.5 -51.5t27.5 -92q0 -70 -48.5 -115t-119.5 -45t-116 44t-45 114h59q0 -43 29.5 -72.5t72.5 -29.5t73 29.5t30 72.5t-30 72.5t-73 29.5q-63 0 -88 -49l-55 6l29 174 +q-192 27 -349.5 139t-248 285t-90.5 371z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="1312" +d="M123 0v1536h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118zM512 1686v116l350 -121v-82z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="1312" +d="M123 0v1536h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118zM512 1599v82l350 121v-116z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="1312" +d="M123 0v1536h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118zM455 1618l178 205h98l176 -205h-92l-133 115l-133 -115h-94z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="1312" +d="M123 0v1536h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118zM362 1712q0 37 26 63.5t65 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -65 26t-26 64zM768 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64 +t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="385" +d="M18 1686v116l351 -121v-82zM123 0v1536h139v-1536h-139z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="385" +d="M18 1599v82l351 121v-116zM123 0v1536h139v-1536h-139z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="382" +d="M-33 1618l178 205h99l176 -205h-92l-133 115l-134 -115h-94zM123 0v1536h139v-1536h-139z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="385" +d="M-100 1712q0 37 27.5 63.5t64.5 26.5t63.5 -26.5t26.5 -63.5q0 -38 -26.5 -65t-63.5 -27t-64.5 27t-27.5 65zM123 0v1536h139v-1536h-139zM307 1712q0 37 26 63.5t64 26.5q37 0 62.5 -26.5t25.5 -63.5q0 -38 -25.5 -65t-62.5 -27q-38 0 -64 27t-26 65z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="1525" +d="M41 698v140h121v698h524q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103h-524v698h-121zM301 139h385q170 0 314 84.5t227.5 229.5t83.5 315q0 171 -83.5 316t-227.5 229t-314 84h-385v-559h334v-140h-334v-559z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="1431" +d="M123 0v1536h139l905 -1292l2 2v1290h140v-1536h-140l-905 1292l-2 -2v-1290h-139zM485 1616q0 60 42 102.5t102 42.5q41 0 75.5 -22t49.5 -56q16 -26 53 -26q25 0 43 16.5t18 42.5h80q0 -60 -41.5 -102.5t-99.5 -42.5q-39 0 -72 21.5t-51 54.5q-20 30 -55 30 +q-26 0 -44 -17.5t-18 -43.5h-82z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5zM700 1686v116l351 -121v-82z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5zM698 1599v82l351 121v-116z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5zM647 1618l178 205h99l176 -205h-92l-134 115l-133 -115h-94z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5zM639 1677q0 60 41.5 103t101.5 43q41 0 75.5 -22t49.5 -56q17 -27 54 -27q25 0 43 17t18 43h80q0 -60 -41.5 -103t-99.5 -43q-39 0 -72 21.5t-51 54.5q-21 31 -56 31 +q-26 0 -43.5 -18t-17.5 -44h-82z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="1748" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q217 0 402 -108t293 -293t108 -402t-108 -402t-293 -293t-402 -108q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5t239.5 -243.5t332 -90q135 0 257.5 53t210.5 143t140 213.5 +t52 258.5t-52 258.5t-140 213.5t-210.5 143t-257.5 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5zM578 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM983 1712q0 37 25.5 63.5t64.5 26.5 +q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="1349" +d="M82 98l493 496l-493 493l98 99l496 -494l493 494l99 -99l-494 -493l494 -496l-99 -98l-493 496l-496 -496z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="1767" +d="M82 768q0 218 107.5 402.5t292.5 292.5t403 108q287 0 516 -187l151 152l101 -98l-154 -156q89 -104 138 -236.5t49 -277.5q0 -163 -63.5 -311.5t-171 -256t-255.5 -171.5t-311 -64q-291 0 -516 189l-154 -154l-98 98l151 154q-186 225 -186 516zM225 768 +q0 -239 144 -416l931 930q-188 154 -415 154q-181 0 -333 -90t-239.5 -243.5t-87.5 -334.5zM467 252q190 -152 418 -152q180 0 331.5 90t238.5 243.5t87 334.5q0 239 -141 416z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="1431" +d="M123 559v977h139v-977q0 -124 60.5 -229.5t165.5 -167.5t229 -62q187 0 319.5 135t132.5 324v977h140v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298zM541 1686v116l350 -121v-82z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="1431" +d="M123 559v977h139v-977q0 -124 60.5 -229.5t165.5 -167.5t229 -62q187 0 319.5 135t132.5 324v977h140v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298zM541 1599v82l350 121v-116z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="1431" +d="M123 559v977h139v-977q0 -124 60.5 -229.5t165.5 -167.5t229 -62q187 0 319.5 135t132.5 324v977h140v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298zM487 1618l179 205h98l176 -205h-92l-133 115l-133 -115h-95z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="1431" +d="M123 559v977h139v-977q0 -124 60.5 -229.5t165.5 -167.5t229 -62q187 0 319.5 135t132.5 324v977h140v-977q0 -161 -79.5 -298t-216 -216.5t-296.5 -79.5q-161 0 -298 79.5t-216.5 216.5t-79.5 298zM422 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5 +q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM827 1712q0 37 26 63.5t65 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-40 0 -65.5 26t-25.5 64z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="1372" +d="M31 1536h172l483 -678l483 678h172l-585 -819v-717h-140v717zM510 1599v82l350 121v-116z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="1331" +d="M123 0v1536h139v-193h584q170 0 290.5 -119t120.5 -288q0 -170 -120.5 -291t-290.5 -121h-584v-524h-139zM262 664h584q113 0 190.5 79.5t77.5 192.5q0 111 -77.5 189.5t-190.5 78.5h-584v-540z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="1130" +d="M123 0v1169q0 166 117.5 284t283.5 118q167 0 285.5 -118t118.5 -284q0 -90 -37.5 -169t-102.5 -136q117 -55 189 -166t72 -245q0 -186 -133 -319.5t-320 -133.5h-262v139h262q129 0 219 92.5t90 221.5q0 132 -90 224.5t-219 92.5h-262v139h190q109 0 184.5 75.5 +t75.5 184.5t-76 188t-184 79q-106 0 -184 -79t-78 -188v-1169h-139z" /> + <glyph glyph-name="agrave" unicode="à" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM463 1454v117l350 -121v-82z" /> + <glyph glyph-name="aacute" unicode="á" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM463 1368v82l350 121v-117z" /> + <glyph glyph-name="acircumflex" unicode="â" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM412 1393l178 204h98l176 -204h-92l-133 114l-133 -114h-94z" /> + <glyph glyph-name="atilde" unicode="ã" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM406 1425q0 60 41.5 103t101.5 43q41 0 75.5 -22t49.5 -56q17 -27 53 -27q25 0 43 17t18 43h80q0 -60 -41.5 -103t-99.5 -43q-39 0 -72 21.5t-51 54.5 +q-21 31 -55 31q-26 0 -44 -18t-18 -44h-81z" /> + <glyph glyph-name="adieresis" unicode="ä" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM346 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM752 1481q0 37 25.5 63.5 +t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="aring" unicode="å" +d="M71 353q-5 144 92 248q120 128 341 128h491v88q0 125 -88.5 196.5t-267.5 71.5q-175 0 -262.5 -66t-87.5 -175h-146q0 165 134.5 271t361.5 106q234 0 365 -111.5t131 -292.5v-817h-140v201h-4q-155 -236 -444 -236q-233 0 -367 137q-105 106 -109 251zM222 311 +q25 -103 126 -162q84 -49 199 -49q119 0 221 50t164.5 144.5t62.5 213.5v82h-491q-170 0 -247 -100q-61 -79 -35 -179zM485 1489q0 61 46 105t108 44t108 -44t46 -105q0 -62 -46 -106t-108 -44t-108 44t-46 106zM575 1489q0 -28 18 -46t46 -18q27 0 45 18.5t18 45.5 +q0 26 -18.5 44.5t-44.5 18.5q-27 0 -45.5 -18t-18.5 -45z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="2322" +d="M72 334q0 135 95 228q108 106 296 106h532v149q0 268 -356 268q-182 0 -266 -65.5t-84 -175.5h-146q0 167 131 273t365 106q191 0 308.5 -71t162.5 -196q85 122 217.5 193.5t286.5 71.5q170 0 314.5 -84t228.5 -228.5t84 -314.5q0 -13 -3.5 -39t-3.5 -31h-1099 +q27 -180 162 -302t317 -122q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-142 0 -264.5 63t-210.5 173h-4v-201h-140v201h-4q-155 -236 -475 -236q-222 0 -347 131q-97 101 -97 238zM225 274q30 -92 129 -140q70 -34 162 -34q129 0 238 50t175 144 +t66 214v20h-532q-150 0 -214 -91q-53 -73 -24 -163zM1135 664h960q-26 180 -162 300.5t-319 120.5t-317.5 -120.5t-161.5 -300.5z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="1376" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q203 0 366 -116.5t228 -301.5h-150q-61 127 -180.5 204.5t-263.5 77.5q-132 0 -243.5 -66t-176 -179t-64.5 -246q0 -203 142 -348.5t342 -145.5q143 0 263 79t181 206h150q-65 -186 -228 -303t-366 -117q-20 0 -60 4 +l-16 -104q28 25 70 29.5t80.5 -9t66 -51.5t27.5 -92q0 -70 -48.5 -115t-119.5 -45t-116.5 44t-45.5 114h59q0 -43 30 -72.5t73 -29.5t72.5 29.5t29.5 72.5t-29.5 72.5t-72.5 29.5q-63 0 -88 -49l-56 6l31 176q-221 40 -367.5 215t-146.5 404z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="1415" +d="M82 594q0 170 84 314.5t228 228.5t313 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1100q27 -179 162.5 -301.5t317.5 -122.5q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-169 0 -313 84.5t-228 229.5t-84 315zM227 664 +h961q-26 180 -162 300.5t-319 120.5t-318 -120.5t-162 -300.5zM535 1454v117l350 -121v-82z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="1415" +d="M82 594q0 170 84 314.5t228 228.5t313 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1100q27 -179 162.5 -301.5t317.5 -122.5q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-169 0 -313 84.5t-228 229.5t-84 315zM227 664 +h961q-26 180 -162 300.5t-319 120.5t-318 -120.5t-162 -300.5zM535 1368v82l350 121v-117z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="1415" +d="M82 594q0 170 84 314.5t228 228.5t313 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1100q27 -179 162.5 -301.5t317.5 -122.5q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-169 0 -313 84.5t-228 229.5t-84 315zM227 664 +h961q-26 180 -162 300.5t-319 120.5t-318 -120.5t-162 -300.5zM479 1393l178 204h99l176 -204h-92l-133 114l-134 -114h-94z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="1415" +d="M82 594q0 170 84 314.5t228 228.5t313 84q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1100q27 -179 162.5 -301.5t317.5 -122.5q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103q-169 0 -313 84.5t-228 229.5t-84 315zM227 664 +h961q-26 180 -162 300.5t-319 120.5t-318 -120.5t-162 -300.5zM416 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM821 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64 +t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="385" +d="M18 1454v117l351 -121v-82zM123 0v1186h139v-1186h-139z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="385" +d="M18 1368v82l351 121v-117zM123 0v1186h139v-1186h-139z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="385" +d="M-33 1393l178 204h99l176 -204h-92l-133 114l-134 -114h-94zM123 0v1186h139v-1186h-139z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="385" +d="M-61 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM123 0v1186h139v-1186h-139zM266 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5 +t-25.5 64.5z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="1384" +d="M82 575q0 118 52 226.5t132.5 182t178 117.5t188.5 44q181 0 266 -66l4 6l-231 209l-125 -106l-68 82l113 96l-184 170h196l88 -86l123 106l68 -81l-115 -99l340 -323q107 -117 151 -228.5t44 -249.5q0 -166 -81.5 -306.5t-222.5 -222t-307 -81.5t-306.5 81.5t-222 222 +t-81.5 306.5zM225 575q0 -129 62.5 -238.5t170 -173t234.5 -63.5q194 0 329.5 139t137.5 336q0 121 -65 223t-172.5 160t-229.5 58q-116 0 -222.5 -55.5t-175.5 -158.5t-69 -227z" /> + <glyph glyph-name="ntilde" unicode="ñ" +d="M123 0v1186h139v-201h4q43 91 159.5 163.5t248.5 72.5q217 0 339 -129.5t122 -343.5v-748h-140v748q0 151 -91.5 244t-241.5 93q-98 0 -189 -47t-149.5 -129.5t-61.5 -177.5v-731h-139zM416 1425q0 60 41.5 103t101.5 43q41 0 75.5 -22t49.5 -56q17 -27 53 -27 +q25 0 43.5 17t18.5 43h80q0 -60 -42 -103t-100 -43q-39 0 -72 21.5t-51 54.5q-21 31 -55 31q-26 0 -43.5 -18t-17.5 -44h-82z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM535 1454v117l350 -121v-82z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM539 1368v82l350 121v-117z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM485 1393l179 204h98l176 -204h-92l-133 114l-133 -114h-95z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM477 1425q0 60 42 103t102 43q41 0 75 -22t49 -56q17 -27 54 -27q25 0 43 17t18 43h80q0 -60 -41.5 -103t-99.5 -43q-39 0 -72 21.5t-51 54.5q-21 31 -55 31q-26 0 -44 -18t-18 -44h-82z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="1425" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q171 0 316 -84t229.5 -228.5t84.5 -314.5q0 -171 -84.5 -316t-229.5 -229t-316 -84q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5 +q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM418 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM823 1481q0 37 25.5 63.5t64.5 26.5q37 0 64 -26.5t27 -63.5q0 -38 -27 -64 +t-64 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="1390" +d="M102 524v140h1186v-140h-1186zM592 94q0 42 31 72.5t73 30.5q44 0 74.5 -30.5t30.5 -72.5q0 -44 -30.5 -75t-74.5 -31q-43 0 -73.5 31t-30.5 75zM592 1096q0 44 30.5 75t73.5 31q44 0 74.5 -31t30.5 -75q0 -43 -30.5 -74t-74.5 -31q-43 0 -73.5 31t-30.5 74z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="1439" +d="M90 594q0 170 84.5 314.5t229.5 228.5t315 84q109 0 210.5 -36.5t180.5 -101.5l104 103l99 -99l-101 -102q138 -178 138 -391q0 -128 -50 -244.5t-134.5 -201t-201.5 -134t-245 -49.5q-217 0 -391 137l-103 -102l-98 98l102 105q-66 79 -102.5 180.5t-36.5 210.5z +M233 594q0 -164 95 -293l684 684q-131 100 -293 100q-132 0 -244 -66t-177 -179t-65 -246zM426 203q142 -103 293 -103q202 0 344.5 145t142.5 349q0 164 -96 293z" /> + <glyph glyph-name="ugrave" unicode="ù" +d="M123 438v748h139v-748q0 -151 92 -244.5t242 -93.5q98 0 188.5 47.5t149 130t61.5 177.5v731h140v-1186h-140v201h-4q-43 -91 -159 -163.5t-248 -72.5q-217 0 -339 129.5t-122 343.5zM457 1454v117l350 -121v-82z" /> + <glyph glyph-name="uacute" unicode="ú" +d="M123 438v748h139v-748q0 -149 101 -243.5t253 -94.5q97 0 183.5 47.5t139.5 130t56 177.5v731h140v-1186h-140v219q-36 -91 -148.5 -172.5t-250.5 -81.5q-224 0 -348.5 129.5t-124.5 343.5zM457 1368v82l350 121v-117z" /> + <glyph glyph-name="ucircumflex" unicode="û" +d="M123 438v748h139v-748q0 -151 92 -244.5t242 -93.5q98 0 188.5 47.5t149 130t61.5 177.5v731h140v-1186h-140v201h-4q-43 -91 -159 -163.5t-248 -72.5q-217 0 -339 129.5t-122 343.5zM403 1393l179 204h98l176 -204h-92l-133 114l-133 -114h-95z" /> + <glyph glyph-name="udieresis" unicode="ü" +d="M123 438v748h139v-748q0 -151 92 -244.5t242 -93.5q98 0 188.5 47.5t149 130t61.5 177.5v731h140v-1186h-140v201h-4q-43 -91 -159 -163.5t-248 -72.5q-217 0 -339 129.5t-122 343.5zM338 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64 +t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM743 1481q0 37 26 63.5t65 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-40 0 -65.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="1189" +d="M31 1186h151l412 -993l414 993h151l-639 -1536h-153l153 364zM420 1368v82l350 121v-117z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="1464" +d="M123 -350v1886h139v-590h4q80 120 205.5 197.5t292.5 77.5q127 0 242 -49.5t197 -134t130.5 -201t48.5 -244.5t-48.5 -244t-130.5 -200t-197 -133.5t-242 -49.5q-167 0 -293 77.5t-205 197.5h-4v-590h-139zM262 592q0 -202 144.5 -347t345.5 -145q133 0 245 66t177 179.5 +t65 246.5q0 204 -142.5 348.5t-344.5 144.5q-132 0 -245 -66t-179 -179.5t-66 -247.5z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="1191" +d="M31 1186h151l412 -993l414 993h151l-639 -1536h-153l153 364zM299 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM705 1481q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64 +t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="2725" +d="M72 768q0 163 63.5 311.5t170.5 256t256 171.5t312 64q202 0 377 -95t285 -255v315h1118v-139h-979v-559h838v-140h-838v-559h979v-139h-1118v315q-109 -162 -284 -256t-378 -94q-163 0 -312 64t-256 171.5t-170.5 256t-63.5 311.5zM215 768q0 -181 87.5 -334.5 +t239.5 -243.5t332 -90q135 0 258 53t211 143t140.5 213.5t52.5 258.5t-52.5 258.5t-140.5 213.5t-211 143t-258 53q-180 0 -332 -90t-239.5 -243.5t-87.5 -334.5z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="2533" +d="M82 594q0 170 85 314.5t230.5 228.5t315.5 84q180 0 329 -92t230 -246q78 153 226 245.5t327 92.5q127 0 243 -49.5t200 -133.5t133.5 -200.5t49.5 -243.5q0 -1 -6 -70h-1099q27 -180 162 -302t317 -122q128 0 237 65.5t174 172.5h158q-73 -167 -226.5 -270t-342.5 -103 +q-178 0 -326 92t-227 246q-79 -153 -229 -245.5t-330 -92.5q-170 0 -315.5 84t-230.5 229t-85 316zM225 594q0 -134 65.5 -247.5t178 -180t244.5 -66.5q134 0 246 66.5t176.5 180t64.5 247.5q0 203 -142 347t-345 144q-201 0 -344.5 -144.5t-143.5 -346.5zM1346 664h960 +q-26 180 -162 300.5t-319 120.5t-317.5 -120.5t-161.5 -300.5z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="1372" +d="M31 1536h172l483 -678l483 678h172l-585 -819v-717h-140v717zM387 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5zM793 1712q0 37 25.5 63.5t64.5 26.5q37 0 63.5 -26.5t26.5 -63.5q0 -38 -26.5 -64 +t-63.5 -26q-39 0 -64.5 25.5t-25.5 64.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="862" +d="M205 1393l178 204h98l176 -204h-92l-133 114l-133 -114h-94z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="872" +d="M205 1425q0 60 41.5 103t101.5 43q41 0 75.5 -22t49.5 -56q17 -27 53 -27q25 0 43.5 17t18.5 43h80q0 -60 -42 -103t-100 -43q-39 0 -72 21.5t-51 54.5q-21 31 -55 31q-26 0 -43.5 -18t-17.5 -44h-82z" /> + <glyph glyph-name="uni2000" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2001" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2002" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2003" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2004" unicode=" " horiz-adv-x="630" + /> + <glyph glyph-name="uni2005" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="uni2006" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2007" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2008" unicode=" " horiz-adv-x="236" + /> + <glyph glyph-name="uni2009" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="uni200A" unicode=" " horiz-adv-x="105" + /> + <glyph glyph-name="uni2010" unicode="‐" horiz-adv-x="952" +d="M143 524v140h666v-140h-666z" /> + <glyph glyph-name="uni2011" unicode="‑" horiz-adv-x="952" +d="M143 524v140h666v-140h-666z" /> + <glyph glyph-name="figuredash" unicode="‒" horiz-adv-x="952" +d="M143 524v140h666v-140h-666z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="1196" +d="M92 524v140h1012v-140h-1012z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="1720" +d="M92 524v140h1536v-140h-1536z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="413" +d="M102 1235v137q0 74 46 126t110 52h23v-90h-23q-29 0 -49.5 -27t-20.5 -61v-35q6 4 19 4q44 0 74 -31t30 -75q0 -43 -30 -74t-74 -31q-43 0 -74 31t-31 74z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="413" +d="M102 1446q0 43 30.5 73.5t74.5 30.5q43 0 73.5 -30.5t30.5 -73.5v-137q0 -74 -45.5 -126.5t-109.5 -52.5h-23v91h23q29 0 49 26.5t20 61.5v34q-6 -4 -18 -4q-44 0 -74.5 31.5t-30.5 75.5z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="413" +d="M102 90q0 43 30.5 74t74.5 31q43 0 73.5 -31t30.5 -74v-137q0 -74 -45.5 -126t-109.5 -52h-23v90h23q29 0 49 26.5t20 61.5v35q-6 -4 -18 -4q-44 0 -74.5 31t-30.5 75z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="622" +d="M102 1235v137q0 74 46 126t110 52h23v-90h-23q-29 0 -49.5 -27t-20.5 -61v-35q6 4 19 4q44 0 74 -31t30 -75q0 -43 -30 -74t-74 -31q-43 0 -74 31t-31 74zM352 1235v137q0 74 46 126t110 52h22v-90h-22q-29 0 -49.5 -27t-20.5 -61v-35q6 4 19 4q44 0 74 -31t30 -75 +q0 -43 -30 -74t-74 -31q-43 0 -74 31t-31 74z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="622" +d="M61 1446q0 43 30.5 73.5t74.5 30.5q43 0 73.5 -30.5t30.5 -73.5v-137q0 -74 -45.5 -126.5t-109.5 -52.5h-23v91h23q29 0 49 26.5t20 61.5v34q-6 -4 -18 -4q-44 0 -74.5 31.5t-30.5 75.5zM311 1446q0 43 30.5 73.5t74.5 30.5q43 0 73.5 -30.5t30.5 -73.5v-137 +q0 -74 -45.5 -126.5t-109.5 -52.5h-23v91h23q29 0 49 26.5t20 61.5v34q-6 -4 -18 -4q-44 0 -74.5 31.5t-30.5 75.5z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="622" +d="M61 90q0 43 30.5 74t74.5 31q43 0 73.5 -31t30.5 -74v-137q0 -74 -45.5 -126t-109.5 -52h-23v90h23q29 0 49 26.5t20 61.5v35q-6 -4 -18 -4q-44 0 -74.5 31t-30.5 75zM311 90q0 43 30.5 74t74.5 31q43 0 73.5 -31t30.5 -74v-137q0 -74 -45.5 -126t-109.5 -52h-23v90h23 +q29 0 49 26.5t20 61.5v35q-6 -4 -18 -4q-44 0 -74.5 31t-30.5 75z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="827" +d="M205 594q0 86 61.5 147.5t147.5 61.5q87 0 148 -61t61 -148q0 -88 -60.5 -148.5t-148.5 -60.5q-87 0 -148 61t-61 148z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="1587" +d="M82 88q0 43 31 74t75 31q43 0 74 -31t31 -74t-31 -73.5t-74 -30.5q-44 0 -75 30.5t-31 73.5zM690 88q0 43 30.5 74t74.5 31q43 0 73.5 -31t30.5 -74t-30.5 -73.5t-73.5 -30.5q-44 0 -74.5 30.5t-30.5 73.5zM1296 88q0 43 31 74t72 31q44 0 75 -31t31 -74t-31 -73.5 +t-75 -30.5q-41 0 -72 31t-31 73z" /> + <glyph glyph-name="uni202F" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="546" +d="M82 594l383 383v-197l-186 -186l186 -188v-197z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="546" +d="M82 209v197l186 188l-186 186v197l383 -383z" /> + <glyph glyph-name="uni205F" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="1343" +d="M72 557v139h178v142h-178v139h178v86q0 138 68 255t185 185t255 68q137 0 253 -68t183.5 -185t67.5 -255v-33h-140v33q0 154 -106.5 263.5t-257.5 109.5q-152 0 -260.5 -109.5t-108.5 -263.5v-86h608l-55 -139h-553v-142h514l-51 -139h-463v-86q0 -152 108.5 -261.5 +t260.5 -109.5q150 0 257 109t107 262v33h140v-33q0 -137 -67.5 -253.5t-183.5 -184.5t-253 -68q-138 0 -255 68t-185 184.5t-68 253.5v86h-178z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="741" +d="M82 1507v29h242v-29h-107v-278h-29v278h-106zM350 1229v307h29l127 -270l125 270h28v-307h-28v241l-111 -241h-28l-113 241v-241h-29z" /> + <glyph glyph-name="uni25FC" unicode="◼" horiz-adv-x="1187" +d="M0 0v1188h1188v-1188h-1188z" /> + <glyph glyph-name="uniFB01" unicode="fi" horiz-adv-x="1075" +d="M41 1047v139h141v69q0 117 81.5 199t195.5 82h106v-139h-106q-57 0 -97 -41.5t-40 -100.5v-69h630v-1186h-139v1047h-491v-1047h-140v1047h-141zM791 1479q0 37 27.5 64.5t64.5 27.5t64.5 -27.5t27.5 -64.5t-27.5 -65t-64.5 -28t-64.5 28t-27.5 65z" /> + <glyph glyph-name="uniFB02" unicode="fl" horiz-adv-x="1058" +d="M41 1047v139h141v80q0 127 79 198.5t198 71.5h477v-1536h-139v1401h-338q-62 0 -99.5 -32.5t-37.5 -102.5v-80h243v-139h-243v-1047h-140v1047h-141z" /> + <glyph glyph-name="uniFB03" unicode="ffi" horiz-adv-x="1705" +d="M41 1047v139h141v69q0 117 81.5 199t195.5 82h106v-139h-106q-57 0 -97 -41.5t-40 -100.5v-69h491v69q0 117 81.5 199t195.5 82h106v-139h-106q-57 0 -97.5 -41.5t-40.5 -100.5v-69h631v-1186h-139v1047h-492v-1047h-139v1047h-491v-1047h-140v1047h-141zM1421 1479 +q0 37 27.5 64.5t64.5 27.5t65 -27.5t28 -64.5t-28 -65t-65 -28t-64.5 28t-27.5 65z" /> + <glyph glyph-name="uniFB04" unicode="ffl" horiz-adv-x="1671" +d="M41 1047v139h141v69q0 117 81.5 199t195.5 82h106v-139h-106q-57 0 -97 -41.5t-40 -100.5v-69h473v80q0 127 78.5 198.5t197.5 71.5h477v-1536h-139v1401h-338q-62 0 -99.5 -32.5t-37.5 -102.5v-80h244v-139h-244v-1047h-139v1047h-473v-1047h-140v1047h-141z" /> + <hkern u1="0" u2="7" k="37" /> + <hkern u1="1" u2="8" k="-20" /> + <hkern u1="1" u2="2" k="-20" /> + <hkern u1="2" u2="8" k="20" /> + <hkern u1="2" u2="7" k="20" /> + <hkern u1="2" u2="6" k="61" /> + <hkern u1="3" u2="9" k="61" /> + <hkern u1="3" u2="1" k="61" /> + <hkern u1="4" u2="9" k="25" /> + <hkern u1="4" u2="7" k="41" /> + <hkern u1="4" u2="1" k="61" /> + <hkern u1="5" u2="9" k="37" /> + <hkern u1="5" u2="1" k="78" /> + <hkern u1="6" u2="9" k="57" /> + <hkern u1="6" u2="7" k="98" /> + <hkern u1="6" u2="2" k="61" /> + <hkern u1="6" u2="1" k="61" /> + <hkern u1="7" u2="8" k="49" /> + <hkern u1="7" u2="6" k="61" /> + <hkern u1="7" u2="5" k="41" /> + <hkern u1="7" u2="4" k="98" /> + <hkern u1="7" u2="." k="123" /> + <hkern u1="7" u2="," k="123" /> + <hkern u1="8" u2="9" k="33" /> + <hkern u1="8" u2="7" k="68" /> + <hkern u1="8" u2="2" k="20" /> + <hkern u1="8" u2="1" k="61" /> + <hkern u1="9" u2="8" k="33" /> + <hkern u1="9" u2="7" k="70" /> + <hkern u1="9" u2="6" k="57" /> + <hkern u1="9" u2="5" k="37" /> + <hkern u1="9" u2="4" k="49" /> + <hkern u1="9" u2="3" k="61" /> + <hkern u1="9" u2="." k="102" /> + <hkern u1="9" u2="," k="102" /> + <hkern u1="A" u2="Ÿ" k="184" /> + <hkern u1="A" u2="œ" k="41" /> + <hkern u1="A" u2="Œ" k="61" /> + <hkern u1="A" u2="ÿ" k="123" /> + <hkern u1="A" u2="ý" k="123" /> + <hkern u1="A" u2="ü" k="20" /> + <hkern u1="A" u2="û" k="20" /> + <hkern u1="A" u2="ú" k="20" /> + <hkern u1="A" u2="ù" k="20" /> + <hkern u1="A" u2="ø" k="41" /> + <hkern u1="A" u2="ö" k="74" /> + <hkern u1="A" u2="ô" k="74" /> + <hkern u1="A" u2="ó" k="74" /> + <hkern u1="A" u2="ò" k="74" /> + <hkern u1="A" u2="ð" k="61" /> + <hkern u1="A" u2="ë" k="74" /> + <hkern u1="A" u2="ê" k="74" /> + <hkern u1="A" u2="é" k="74" /> + <hkern u1="A" u2="è" k="74" /> + <hkern u1="A" u2="ç" k="74" /> + <hkern u1="A" u2="æ" k="61" /> + <hkern u1="A" u2="å" k="33" /> + <hkern u1="A" u2="ä" k="33" /> + <hkern u1="A" u2="ã" k="33" /> + <hkern u1="A" u2="â" k="33" /> + <hkern u1="A" u2="á" k="33" /> + <hkern u1="A" u2="à" k="33" /> + <hkern u1="A" u2="Ý" k="184" /> + <hkern u1="A" u2="Ø" k="20" /> + <hkern u1="A" u2="Ö" k="57" /> + <hkern u1="A" u2="Õ" k="57" /> + <hkern u1="A" u2="Ô" k="57" /> + <hkern u1="A" u2="Ó" k="57" /> + <hkern u1="A" u2="Ò" k="57" /> + <hkern u1="A" u2="Ç" k="57" /> + <hkern u1="A" u2="z" k="-25" /> + <hkern u1="A" u2="y" k="123" /> + <hkern u1="A" u2="w" k="102" /> + <hkern u1="A" u2="v" k="143" /> + <hkern u1="A" u2="u" k="20" /> + <hkern u1="A" u2="t" k="45" /> + <hkern u1="A" u2="q" k="74" /> + <hkern u1="A" u2="o" k="74" /> + <hkern u1="A" u2="j" k="49" /> + <hkern u1="A" u2="f" k="25" /> + <hkern u1="A" u2="e" k="74" /> + <hkern u1="A" u2="d" k="74" /> + <hkern u1="A" u2="c" k="74" /> + <hkern u1="A" u2="a" k="33" /> + <hkern u1="A" u2="Z" k="-61" /> + <hkern u1="A" u2="Y" k="184" /> + <hkern u1="A" u2="X" k="-25" /> + <hkern u1="A" u2="W" k="127" /> + <hkern u1="A" u2="V" k="160" /> + <hkern u1="A" u2="T" k="168" /> + <hkern u1="A" u2="Q" k="57" /> + <hkern u1="A" u2="O" k="57" /> + <hkern u1="A" u2="J" k="-25" /> + <hkern u1="A" u2="G" k="57" /> + <hkern u1="A" u2="C" k="57" /> + <hkern u1="A" u2="A" k="-25" /> + <hkern u1="B" u2="Ÿ" k="115" /> + <hkern u1="B" u2="ð" k="20" /> + <hkern u1="B" u2="Ý" k="115" /> + <hkern u1="B" u2="Æ" k="82" /> + <hkern u1="B" u2="y" k="29" /> + <hkern u1="B" u2="j" k="74" /> + <hkern u1="B" u2="Z" k="41" /> + <hkern u1="B" u2="Y" k="115" /> + <hkern u1="B" u2="X" k="57" /> + <hkern u1="B" u2="W" k="66" /> + <hkern u1="B" u2="V" k="98" /> + <hkern u1="B" u2="T" k="74" /> + <hkern u1="C" u2="Ÿ" k="41" /> + <hkern u1="C" u2="ø" k="20" /> + <hkern u1="C" u2="ö" k="25" /> + <hkern u1="C" u2="ô" k="25" /> + <hkern u1="C" u2="ó" k="25" /> + <hkern u1="C" u2="ò" k="25" /> + <hkern u1="C" u2="ï" k="-82" /> + <hkern u1="C" u2="ë" k="25" /> + <hkern u1="C" u2="ê" k="25" /> + <hkern u1="C" u2="é" k="25" /> + <hkern u1="C" u2="è" k="25" /> + <hkern u1="C" u2="å" k="25" /> + <hkern u1="C" u2="ä" k="25" /> + <hkern u1="C" u2="ã" k="25" /> + <hkern u1="C" u2="â" k="25" /> + <hkern u1="C" u2="á" k="25" /> + <hkern u1="C" u2="à" k="25" /> + <hkern u1="C" u2="Ý" k="41" /> + <hkern u1="C" u2="Æ" k="184" /> + <hkern u1="C" u2="Å" k="41" /> + <hkern u1="C" u2="Ä" k="41" /> + <hkern u1="C" u2="Ã" k="41" /> + <hkern u1="C" u2="Â" k="41" /> + <hkern u1="C" u2="Á" k="41" /> + <hkern u1="C" u2="À" k="41" /> + <hkern u1="C" u2="z" k="20" /> + <hkern u1="C" u2="s" k="20" /> + <hkern u1="C" u2="q" k="25" /> + <hkern u1="C" u2="o" k="25" /> + <hkern u1="C" u2="j" k="102" /> + <hkern u1="C" u2="g" k="45" /> + <hkern u1="C" u2="e" k="25" /> + <hkern u1="C" u2="a" k="25" /> + <hkern u1="C" u2="Z" k="61" /> + <hkern u1="C" u2="Y" k="41" /> + <hkern u1="C" u2="T" k="82" /> + <hkern u1="C" u2="A" k="41" /> + <hkern u1="C" u2="." k="41" /> + <hkern u1="C" u2="," k="41" /> + <hkern u1="D" u2="Ÿ" k="123" /> + <hkern u1="D" u2="ÿ" k="25" /> + <hkern u1="D" u2="ý" k="25" /> + <hkern u1="D" u2="Ý" k="123" /> + <hkern u1="D" u2="Æ" k="205" /> + <hkern u1="D" u2="Å" k="57" /> + <hkern u1="D" u2="Ä" k="57" /> + <hkern u1="D" u2="Ã" k="57" /> + <hkern u1="D" u2="Â" k="57" /> + <hkern u1="D" u2="Á" k="57" /> + <hkern u1="D" u2="À" k="57" /> + <hkern u1="D" u2="y" k="25" /> + <hkern u1="D" u2="v" k="25" /> + <hkern u1="D" u2="j" k="102" /> + <hkern u1="D" u2="g" k="61" /> + <hkern u1="D" u2="Z" k="66" /> + <hkern u1="D" u2="Y" k="123" /> + <hkern u1="D" u2="X" k="57" /> + <hkern u1="D" u2="W" k="49" /> + <hkern u1="D" u2="V" k="66" /> + <hkern u1="D" u2="T" k="82" /> + <hkern u1="D" u2="J" k="41" /> + <hkern u1="D" u2="A" k="57" /> + <hkern u1="D" u2="." k="41" /> + <hkern u1="E" u2="œ" k="41" /> + <hkern u1="E" u2="Œ" k="41" /> + <hkern u1="E" u2="ÿ" k="37" /> + <hkern u1="E" u2="ý" k="37" /> + <hkern u1="E" u2="ø" k="20" /> + <hkern u1="E" u2="ö" k="41" /> + <hkern u1="E" u2="ô" k="41" /> + <hkern u1="E" u2="ó" k="41" /> + <hkern u1="E" u2="ò" k="41" /> + <hkern u1="E" u2="ð" k="41" /> + <hkern u1="E" u2="ï" k="-102" /> + <hkern u1="E" u2="î" k="-41" /> + <hkern u1="E" u2="í" k="-41" /> + <hkern u1="E" u2="ì" k="-41" /> + <hkern u1="E" u2="ë" k="41" /> + <hkern u1="E" u2="ê" k="41" /> + <hkern u1="E" u2="é" k="41" /> + <hkern u1="E" u2="è" k="41" /> + <hkern u1="E" u2="ç" k="41" /> + <hkern u1="E" u2="æ" k="61" /> + <hkern u1="E" u2="å" k="41" /> + <hkern u1="E" u2="ä" k="41" /> + <hkern u1="E" u2="ã" k="41" /> + <hkern u1="E" u2="â" k="41" /> + <hkern u1="E" u2="á" k="41" /> + <hkern u1="E" u2="à" k="41" /> + <hkern u1="E" u2="Ö" k="41" /> + <hkern u1="E" u2="Õ" k="41" /> + <hkern u1="E" u2="Ô" k="41" /> + <hkern u1="E" u2="Ó" k="41" /> + <hkern u1="E" u2="Ò" k="41" /> + <hkern u1="E" u2="Ç" k="49" /> + <hkern u1="E" u2="z" k="-20" /> + <hkern u1="E" u2="y" k="37" /> + <hkern u1="E" u2="w" k="25" /> + <hkern u1="E" u2="v" k="37" /> + <hkern u1="E" u2="q" k="41" /> + <hkern u1="E" u2="o" k="41" /> + <hkern u1="E" u2="j" k="45" /> + <hkern u1="E" u2="g" k="41" /> + <hkern u1="E" u2="e" k="41" /> + <hkern u1="E" u2="d" k="41" /> + <hkern u1="E" u2="c" k="41" /> + <hkern u1="E" u2="a" k="41" /> + <hkern u1="E" u2="Z" k="-25" /> + <hkern u1="E" u2="Q" k="41" /> + <hkern u1="E" u2="O" k="41" /> + <hkern u1="E" u2="G" k="41" /> + <hkern u1="E" u2="C" k="41" /> + <hkern u1="F" u2="œ" k="82" /> + <hkern u1="F" u2="Œ" k="41" /> + <hkern u1="F" u2="ÿ" k="61" /> + <hkern u1="F" u2="ý" k="61" /> + <hkern u1="F" u2="ü" k="45" /> + <hkern u1="F" u2="û" k="45" /> + <hkern u1="F" u2="ú" k="45" /> + <hkern u1="F" u2="ù" k="45" /> + <hkern u1="F" u2="ø" k="74" /> + <hkern u1="F" u2="ö" k="74" /> + <hkern u1="F" u2="ô" k="74" /> + <hkern u1="F" u2="ó" k="74" /> + <hkern u1="F" u2="ò" k="74" /> + <hkern u1="F" u2="ð" k="82" /> + <hkern u1="F" u2="ï" k="-143" /> + <hkern u1="F" u2="î" k="-82" /> + <hkern u1="F" u2="í" k="-82" /> + <hkern u1="F" u2="ì" k="-82" /> + <hkern u1="F" u2="ë" k="74" /> + <hkern u1="F" u2="ê" k="74" /> + <hkern u1="F" u2="é" k="74" /> + <hkern u1="F" u2="è" k="74" /> + <hkern u1="F" u2="æ" k="82" /> + <hkern u1="F" u2="å" k="115" /> + <hkern u1="F" u2="ä" k="115" /> + <hkern u1="F" u2="ã" k="115" /> + <hkern u1="F" u2="â" k="115" /> + <hkern u1="F" u2="á" k="115" /> + <hkern u1="F" u2="à" k="115" /> + <hkern u1="F" u2="Ø" k="41" /> + <hkern u1="F" u2="Ö" k="41" /> + <hkern u1="F" u2="Õ" k="41" /> + <hkern u1="F" u2="Ô" k="41" /> + <hkern u1="F" u2="Ó" k="41" /> + <hkern u1="F" u2="Ò" k="41" /> + <hkern u1="F" u2="Æ" k="389" /> + <hkern u1="F" u2="Å" k="147" /> + <hkern u1="F" u2="Ä" k="147" /> + <hkern u1="F" u2="Ã" k="147" /> + <hkern u1="F" u2="Â" k="147" /> + <hkern u1="F" u2="Á" k="147" /> + <hkern u1="F" u2="À" k="147" /> + <hkern u1="F" u2="y" k="61" /> + <hkern u1="F" u2="w" k="41" /> + <hkern u1="F" u2="u" k="45" /> + <hkern u1="F" u2="o" k="74" /> + <hkern u1="F" u2="j" k="78" /> + <hkern u1="F" u2="g" k="143" /> + <hkern u1="F" u2="e" k="74" /> + <hkern u1="F" u2="a" k="115" /> + <hkern u1="F" u2="Z" k="-33" /> + <hkern u1="F" u2="W" k="-25" /> + <hkern u1="F" u2="V" k="-33" /> + <hkern u1="F" u2="T" k="-61" /> + <hkern u1="F" u2="Q" k="41" /> + <hkern u1="F" u2="O" k="41" /> + <hkern u1="F" u2="J" k="217" /> + <hkern u1="F" u2="G" k="41" /> + <hkern u1="F" u2="A" k="147" /> + <hkern u1="F" u2="." k="102" /> + <hkern u1="F" u2="," k="102" /> + <hkern u1="G" u2="Ÿ" k="33" /> + <hkern u1="G" u2="ÿ" k="33" /> + <hkern u1="G" u2="ý" k="33" /> + <hkern u1="G" u2="Ý" k="33" /> + <hkern u1="G" u2="Æ" k="41" /> + <hkern u1="G" u2="y" k="33" /> + <hkern u1="G" u2="j" k="61" /> + <hkern u1="G" u2="Y" k="33" /> + <hkern u1="G" u2="T" k="61" /> + <hkern u1="H" u2="ï" k="-41" /> + <hkern u1="H" u2="î" k="-41" /> + <hkern u1="H" u2="í" k="-41" /> + <hkern u1="H" u2="ì" k="-41" /> + <hkern u1="H" u2="Æ" k="41" /> + <hkern u1="I" u2="ï" k="-41" /> + <hkern u1="I" u2="î" k="-41" /> + <hkern u1="I" u2="í" k="-41" /> + <hkern u1="I" u2="ì" k="-41" /> + <hkern u1="I" u2="Æ" k="20" /> + <hkern u1="I" u2="z" k="-25" /> + <hkern u1="I" u2="j" k="66" /> + <hkern u1="I" u2="g" k="20" /> + <hkern u1="J" u2="ï" k="-41" /> + <hkern u1="J" u2="í" k="-41" /> + <hkern u1="J" u2="ì" k="-41" /> + <hkern u1="J" u2="Æ" k="123" /> + <hkern u1="J" u2="Å" k="20" /> + <hkern u1="J" u2="Ä" k="20" /> + <hkern u1="J" u2="Ã" k="20" /> + <hkern u1="J" u2="Â" k="20" /> + <hkern u1="J" u2="Á" k="20" /> + <hkern u1="J" u2="À" k="20" /> + <hkern u1="J" u2="g" k="20" /> + <hkern u1="J" u2="J" k="49" /> + <hkern u1="J" u2="A" k="20" /> + <hkern u1="K" u2="œ" k="164" /> + <hkern u1="K" u2="Œ" k="123" /> + <hkern u1="K" u2="ÿ" k="82" /> + <hkern u1="K" u2="ý" k="82" /> + <hkern u1="K" u2="ü" k="53" /> + <hkern u1="K" u2="û" k="53" /> + <hkern u1="K" u2="ú" k="53" /> + <hkern u1="K" u2="ù" k="53" /> + <hkern u1="K" u2="ø" k="61" /> + <hkern u1="K" u2="ö" k="143" /> + <hkern u1="K" u2="õ" k="143" /> + <hkern u1="K" u2="ô" k="143" /> + <hkern u1="K" u2="ó" k="143" /> + <hkern u1="K" u2="ò" k="143" /> + <hkern u1="K" u2="ñ" k="20" /> + <hkern u1="K" u2="ð" k="123" /> + <hkern u1="K" u2="ï" k="-102" /> + <hkern u1="K" u2="î" k="-41" /> + <hkern u1="K" u2="í" k="-41" /> + <hkern u1="K" u2="ì" k="-41" /> + <hkern u1="K" u2="ë" k="143" /> + <hkern u1="K" u2="ê" k="143" /> + <hkern u1="K" u2="é" k="143" /> + <hkern u1="K" u2="è" k="143" /> + <hkern u1="K" u2="æ" k="143" /> + <hkern u1="K" u2="å" k="82" /> + <hkern u1="K" u2="ä" k="82" /> + <hkern u1="K" u2="ã" k="82" /> + <hkern u1="K" u2="â" k="82" /> + <hkern u1="K" u2="á" k="82" /> + <hkern u1="K" u2="à" k="82" /> + <hkern u1="K" u2="Ü" k="25" /> + <hkern u1="K" u2="Û" k="25" /> + <hkern u1="K" u2="Ú" k="25" /> + <hkern u1="K" u2="Ù" k="25" /> + <hkern u1="K" u2="Ø" k="41" /> + <hkern u1="K" u2="Ö" k="123" /> + <hkern u1="K" u2="Õ" k="123" /> + <hkern u1="K" u2="Ô" k="123" /> + <hkern u1="K" u2="Ó" k="123" /> + <hkern u1="K" u2="Ò" k="123" /> + <hkern u1="K" u2="Ç" k="102" /> + <hkern u1="K" u2="y" k="82" /> + <hkern u1="K" u2="w" k="74" /> + <hkern u1="K" u2="v" k="82" /> + <hkern u1="K" u2="u" k="61" /> + <hkern u1="K" u2="s" k="41" /> + <hkern u1="K" u2="o" k="143" /> + <hkern u1="K" u2="n" k="20" /> + <hkern u1="K" u2="j" k="61" /> + <hkern u1="K" u2="e" k="143" /> + <hkern u1="K" u2="d" k="143" /> + <hkern u1="K" u2="a" k="82" /> + <hkern u1="K" u2="Z" k="-25" /> + <hkern u1="K" u2="U" k="25" /> + <hkern u1="K" u2="S" k="57" /> + <hkern u1="K" u2="Q" k="123" /> + <hkern u1="K" u2="O" k="123" /> + <hkern u1="K" u2="G" k="123" /> + <hkern u1="K" u2="C" k="123" /> + <hkern u1="L" u2="Ÿ" k="217" /> + <hkern u1="L" u2="œ" k="82" /> + <hkern u1="L" u2="Œ" k="61" /> + <hkern u1="L" u2="ÿ" k="164" /> + <hkern u1="L" u2="ý" k="164" /> + <hkern u1="L" u2="ü" k="61" /> + <hkern u1="L" u2="û" k="61" /> + <hkern u1="L" u2="ú" k="61" /> + <hkern u1="L" u2="ù" k="41" /> + <hkern u1="L" u2="ø" k="41" /> + <hkern u1="L" u2="ö" k="82" /> + <hkern u1="L" u2="õ" k="82" /> + <hkern u1="L" u2="ô" k="82" /> + <hkern u1="L" u2="ó" k="82" /> + <hkern u1="L" u2="ò" k="82" /> + <hkern u1="L" u2="ð" k="20" /> + <hkern u1="L" u2="ë" k="82" /> + <hkern u1="L" u2="ê" k="82" /> + <hkern u1="L" u2="é" k="82" /> + <hkern u1="L" u2="è" k="82" /> + <hkern u1="L" u2="æ" k="82" /> + <hkern u1="L" u2="å" k="20" /> + <hkern u1="L" u2="ä" k="20" /> + <hkern u1="L" u2="ã" k="20" /> + <hkern u1="L" u2="â" k="20" /> + <hkern u1="L" u2="á" k="20" /> + <hkern u1="L" u2="à" k="20" /> + <hkern u1="L" u2="Ý" k="217" /> + <hkern u1="L" u2="Ü" k="82" /> + <hkern u1="L" u2="Û" k="82" /> + <hkern u1="L" u2="Ú" k="82" /> + <hkern u1="L" u2="Ù" k="82" /> + <hkern u1="L" u2="Ö" k="123" /> + <hkern u1="L" u2="Õ" k="123" /> + <hkern u1="L" u2="Ô" k="123" /> + <hkern u1="L" u2="Ó" k="123" /> + <hkern u1="L" u2="Ò" k="123" /> + <hkern u1="L" u2="Ç" k="115" /> + <hkern u1="L" u2="z" k="-41" /> + <hkern u1="L" u2="y" k="164" /> + <hkern u1="L" u2="x" k="-41" /> + <hkern u1="L" u2="w" k="143" /> + <hkern u1="L" u2="v" k="164" /> + <hkern u1="L" u2="u" k="41" /> + <hkern u1="L" u2="q" k="82" /> + <hkern u1="L" u2="o" k="82" /> + <hkern u1="L" u2="j" k="41" /> + <hkern u1="L" u2="e" k="82" /> + <hkern u1="L" u2="a" k="20" /> + <hkern u1="L" u2="Z" k="-41" /> + <hkern u1="L" u2="Y" k="184" /> + <hkern u1="L" u2="X" k="-41" /> + <hkern u1="L" u2="W" k="143" /> + <hkern u1="L" u2="V" k="184" /> + <hkern u1="L" u2="U" k="61" /> + <hkern u1="L" u2="T" k="242" /> + <hkern u1="L" u2="Q" k="102" /> + <hkern u1="L" u2="O" k="102" /> + <hkern u1="L" u2="J" k="-20" /> + <hkern u1="L" u2="G" k="102" /> + <hkern u1="L" u2="C" k="102" /> + <hkern u1="M" u2="ï" k="-61" /> + <hkern u1="M" u2="î" k="-41" /> + <hkern u1="M" u2="í" k="-41" /> + <hkern u1="M" u2="ì" k="-41" /> + <hkern u1="M" u2="Æ" k="41" /> + <hkern u1="M" u2="j" k="82" /> + <hkern u1="N" u2="ï" k="-61" /> + <hkern u1="N" u2="î" k="-41" /> + <hkern u1="N" u2="í" k="-41" /> + <hkern u1="N" u2="ì" k="-41" /> + <hkern u1="N" u2="Æ" k="41" /> + <hkern u1="N" u2="j" k="82" /> + <hkern u1="O" u2="Ÿ" k="123" /> + <hkern u1="O" u2="ÿ" k="25" /> + <hkern u1="O" u2="ý" k="25" /> + <hkern u1="O" u2="Ý" k="123" /> + <hkern u1="O" u2="Æ" k="184" /> + <hkern u1="O" u2="Å" k="57" /> + <hkern u1="O" u2="Ä" k="57" /> + <hkern u1="O" u2="Ã" k="57" /> + <hkern u1="O" u2="Â" k="57" /> + <hkern u1="O" u2="Á" k="57" /> + <hkern u1="O" u2="À" k="57" /> + <hkern u1="O" u2="z" k="20" /> + <hkern u1="O" u2="y" k="25" /> + <hkern u1="O" u2="v" k="25" /> + <hkern u1="O" u2="s" k="20" /> + <hkern u1="O" u2="j" k="82" /> + <hkern u1="O" u2="g" k="41" /> + <hkern u1="O" u2="Z" k="61" /> + <hkern u1="O" u2="Y" k="123" /> + <hkern u1="O" u2="X" k="82" /> + <hkern u1="O" u2="W" k="61" /> + <hkern u1="O" u2="V" k="82" /> + <hkern u1="O" u2="T" k="143" /> + <hkern u1="O" u2="J" k="29" /> + <hkern u1="O" u2="A" k="57" /> + <hkern u1="O" u2="." k="41" /> + <hkern u1="O" u2="," k="41" /> + <hkern u1="P" u2="Ÿ" k="61" /> + <hkern u1="P" u2="œ" k="61" /> + <hkern u1="P" u2="ø" k="61" /> + <hkern u1="P" u2="ö" k="61" /> + <hkern u1="P" u2="ô" k="61" /> + <hkern u1="P" u2="ó" k="61" /> + <hkern u1="P" u2="ò" k="61" /> + <hkern u1="P" u2="ð" k="82" /> + <hkern u1="P" u2="ë" k="61" /> + <hkern u1="P" u2="ê" k="61" /> + <hkern u1="P" u2="é" k="61" /> + <hkern u1="P" u2="è" k="61" /> + <hkern u1="P" u2="ç" k="61" /> + <hkern u1="P" u2="æ" k="61" /> + <hkern u1="P" u2="å" k="61" /> + <hkern u1="P" u2="ä" k="61" /> + <hkern u1="P" u2="ã" k="61" /> + <hkern u1="P" u2="â" k="61" /> + <hkern u1="P" u2="á" k="61" /> + <hkern u1="P" u2="à" k="61" /> + <hkern u1="P" u2="Ý" k="61" /> + <hkern u1="P" u2="Æ" k="369" /> + <hkern u1="P" u2="Å" k="197" /> + <hkern u1="P" u2="Ä" k="197" /> + <hkern u1="P" u2="Ã" k="197" /> + <hkern u1="P" u2="Â" k="197" /> + <hkern u1="P" u2="Á" k="197" /> + <hkern u1="P" u2="À" k="197" /> + <hkern u1="P" u2="s" k="41" /> + <hkern u1="P" u2="o" k="61" /> + <hkern u1="P" u2="j" k="111" /> + <hkern u1="P" u2="g" k="164" /> + <hkern u1="P" u2="e" k="61" /> + <hkern u1="P" u2="c" k="61" /> + <hkern u1="P" u2="a" k="61" /> + <hkern u1="P" u2="Z" k="61" /> + <hkern u1="P" u2="Y" k="61" /> + <hkern u1="P" u2="X" k="61" /> + <hkern u1="P" u2="W" k="29" /> + <hkern u1="P" u2="V" k="41" /> + <hkern u1="P" u2="T" k="66" /> + <hkern u1="P" u2="J" k="225" /> + <hkern u1="P" u2="A" k="197" /> + <hkern u1="P" u2="." k="143" /> + <hkern u1="P" u2="," k="143" /> + <hkern u1="Q" u2="Ÿ" k="123" /> + <hkern u1="Q" u2="Ý" k="123" /> + <hkern u1="Q" u2="y" k="25" /> + <hkern u1="Q" u2="j" k="90" /> + <hkern u1="Q" u2="Z" k="-41" /> + <hkern u1="Q" u2="Y" k="123" /> + <hkern u1="Q" u2="X" k="-25" /> + <hkern u1="Q" u2="W" k="82" /> + <hkern u1="Q" u2="V" k="98" /> + <hkern u1="Q" u2="T" k="98" /> + <hkern u1="R" u2="Ÿ" k="61" /> + <hkern u1="R" u2="œ" k="41" /> + <hkern u1="R" u2="ø" k="61" /> + <hkern u1="R" u2="ö" k="61" /> + <hkern u1="R" u2="ô" k="61" /> + <hkern u1="R" u2="ó" k="61" /> + <hkern u1="R" u2="ò" k="61" /> + <hkern u1="R" u2="ð" k="41" /> + <hkern u1="R" u2="ë" k="61" /> + <hkern u1="R" u2="ê" k="61" /> + <hkern u1="R" u2="é" k="61" /> + <hkern u1="R" u2="è" k="61" /> + <hkern u1="R" u2="æ" k="41" /> + <hkern u1="R" u2="å" k="61" /> + <hkern u1="R" u2="ä" k="61" /> + <hkern u1="R" u2="ã" k="61" /> + <hkern u1="R" u2="â" k="61" /> + <hkern u1="R" u2="á" k="61" /> + <hkern u1="R" u2="à" k="61" /> + <hkern u1="R" u2="Ý" k="61" /> + <hkern u1="R" u2="Å" k="37" /> + <hkern u1="R" u2="Ä" k="37" /> + <hkern u1="R" u2="Ã" k="37" /> + <hkern u1="R" u2="Â" k="37" /> + <hkern u1="R" u2="Á" k="16" /> + <hkern u1="R" u2="À" k="37" /> + <hkern u1="R" u2="o" k="61" /> + <hkern u1="R" u2="j" k="98" /> + <hkern u1="R" u2="g" k="20" /> + <hkern u1="R" u2="e" k="61" /> + <hkern u1="R" u2="d" k="61" /> + <hkern u1="R" u2="c" k="61" /> + <hkern u1="R" u2="a" k="61" /> + <hkern u1="R" u2="Z" k="41" /> + <hkern u1="R" u2="Y" k="61" /> + <hkern u1="R" u2="X" k="33" /> + <hkern u1="R" u2="W" k="25" /> + <hkern u1="R" u2="V" k="45" /> + <hkern u1="R" u2="J" k="57" /> + <hkern u1="R" u2="A" k="37" /> + <hkern u1="S" u2="Ÿ" k="41" /> + <hkern u1="S" u2="ø" k="20" /> + <hkern u1="S" u2="ö" k="20" /> + <hkern u1="S" u2="õ" k="20" /> + <hkern u1="S" u2="ô" k="20" /> + <hkern u1="S" u2="ó" k="20" /> + <hkern u1="S" u2="ò" k="20" /> + <hkern u1="S" u2="ë" k="20" /> + <hkern u1="S" u2="ê" k="20" /> + <hkern u1="S" u2="é" k="20" /> + <hkern u1="S" u2="è" k="20" /> + <hkern u1="S" u2="ç" k="20" /> + <hkern u1="S" u2="å" k="20" /> + <hkern u1="S" u2="ä" k="20" /> + <hkern u1="S" u2="ã" k="20" /> + <hkern u1="S" u2="â" k="20" /> + <hkern u1="S" u2="á" k="20" /> + <hkern u1="S" u2="à" k="20" /> + <hkern u1="S" u2="Ý" k="41" /> + <hkern u1="S" u2="Æ" k="102" /> + <hkern u1="S" u2="q" k="20" /> + <hkern u1="S" u2="o" k="20" /> + <hkern u1="S" u2="j" k="98" /> + <hkern u1="S" u2="g" k="20" /> + <hkern u1="S" u2="e" k="20" /> + <hkern u1="S" u2="c" k="20" /> + <hkern u1="S" u2="a" k="20" /> + <hkern u1="S" u2="Y" k="41" /> + <hkern u1="S" u2="X" k="33" /> + <hkern u1="S" u2="W" k="33" /> + <hkern u1="S" u2="V" k="41" /> + <hkern u1="S" u2="T" k="41" /> + <hkern u1="T" u2="Ÿ" k="-20" /> + <hkern u1="T" u2="œ" k="328" /> + <hkern u1="T" u2="Œ" k="123" /> + <hkern u1="T" u2="ÿ" k="188" /> + <hkern u1="T" u2="ý" k="188" /> + <hkern u1="T" u2="ü" k="209" /> + <hkern u1="T" u2="û" k="209" /> + <hkern u1="T" u2="ú" k="209" /> + <hkern u1="T" u2="ù" k="209" /> + <hkern u1="T" u2="ø" k="266" /> + <hkern u1="T" u2="ö" k="348" /> + <hkern u1="T" u2="õ" k="348" /> + <hkern u1="T" u2="ô" k="348" /> + <hkern u1="T" u2="ó" k="348" /> + <hkern u1="T" u2="ò" k="348" /> + <hkern u1="T" u2="ñ" k="164" /> + <hkern u1="T" u2="ð" k="205" /> + <hkern u1="T" u2="ï" k="-123" /> + <hkern u1="T" u2="î" k="-41" /> + <hkern u1="T" u2="í" k="-61" /> + <hkern u1="T" u2="ì" k="-61" /> + <hkern u1="T" u2="ë" k="348" /> + <hkern u1="T" u2="ê" k="348" /> + <hkern u1="T" u2="é" k="348" /> + <hkern u1="T" u2="è" k="348" /> + <hkern u1="T" u2="ç" k="348" /> + <hkern u1="T" u2="æ" k="348" /> + <hkern u1="T" u2="å" k="348" /> + <hkern u1="T" u2="ä" k="348" /> + <hkern u1="T" u2="ã" k="348" /> + <hkern u1="T" u2="â" k="348" /> + <hkern u1="T" u2="á" k="348" /> + <hkern u1="T" u2="à" k="348" /> + <hkern u1="T" u2="ß" k="20" /> + <hkern u1="T" u2="Ý" k="-20" /> + <hkern u1="T" u2="Ø" k="143" /> + <hkern u1="T" u2="Ö" k="143" /> + <hkern u1="T" u2="Õ" k="143" /> + <hkern u1="T" u2="Ô" k="143" /> + <hkern u1="T" u2="Ó" k="143" /> + <hkern u1="T" u2="Ò" k="143" /> + <hkern u1="T" u2="Ç" k="86" /> + <hkern u1="T" u2="Æ" k="348" /> + <hkern u1="T" u2="Å" k="168" /> + <hkern u1="T" u2="Ä" k="168" /> + <hkern u1="T" u2="Ã" k="168" /> + <hkern u1="T" u2="Â" k="168" /> + <hkern u1="T" u2="Á" k="168" /> + <hkern u1="T" u2="À" k="168" /> + <hkern u1="T" u2="z" k="131" /> + <hkern u1="T" u2="y" k="188" /> + <hkern u1="T" u2="x" k="164" /> + <hkern u1="T" u2="w" k="180" /> + <hkern u1="T" u2="v" k="188" /> + <hkern u1="T" u2="u" k="209" /> + <hkern u1="T" u2="s" k="205" /> + <hkern u1="T" u2="r" k="229" /> + <hkern u1="T" u2="q" k="348" /> + <hkern u1="T" u2="p" k="246" /> + <hkern u1="T" u2="o" k="348" /> + <hkern u1="T" u2="n" k="164" /> + <hkern u1="T" u2="m" k="164" /> + <hkern u1="T" u2="j" k="115" /> + <hkern u1="T" u2="g" k="287" /> + <hkern u1="T" u2="e" k="348" /> + <hkern u1="T" u2="d" k="348" /> + <hkern u1="T" u2="c" k="348" /> + <hkern u1="T" u2="a" k="348" /> + <hkern u1="T" u2="Z" k="-20" /> + <hkern u1="T" u2="Y" k="-20" /> + <hkern u1="T" u2="X" k="-16" /> + <hkern u1="T" u2="W" k="-20" /> + <hkern u1="T" u2="V" k="-16" /> + <hkern u1="T" u2="T" k="-20" /> + <hkern u1="T" u2="S" k="41" /> + <hkern u1="T" u2="Q" k="123" /> + <hkern u1="T" u2="O" k="143" /> + <hkern u1="T" u2="J" k="225" /> + <hkern u1="T" u2="G" k="86" /> + <hkern u1="T" u2="C" k="86" /> + <hkern u1="T" u2="A" k="168" /> + <hkern u1="T" u2="." k="102" /> + <hkern u1="T" u2="," k="102" /> + <hkern u1="U" u2="ï" k="-61" /> + <hkern u1="U" u2="î" k="-41" /> + <hkern u1="U" u2="í" k="-41" /> + <hkern u1="U" u2="ì" k="-41" /> + <hkern u1="U" u2="Æ" k="143" /> + <hkern u1="U" u2="j" k="61" /> + <hkern u1="U" u2="g" k="61" /> + <hkern u1="U" u2="V" k="25" /> + <hkern u1="U" u2="J" k="25" /> + <hkern u1="V" u2="Ÿ" k="-25" /> + <hkern u1="V" u2="œ" k="164" /> + <hkern u1="V" u2="Œ" k="82" /> + <hkern u1="V" u2="ü" k="25" /> + <hkern u1="V" u2="û" k="25" /> + <hkern u1="V" u2="ú" k="25" /> + <hkern u1="V" u2="ù" k="25" /> + <hkern u1="V" u2="ø" k="147" /> + <hkern u1="V" u2="ö" k="147" /> + <hkern u1="V" u2="ô" k="147" /> + <hkern u1="V" u2="ó" k="147" /> + <hkern u1="V" u2="ò" k="147" /> + <hkern u1="V" u2="ñ" k="61" /> + <hkern u1="V" u2="ð" k="143" /> + <hkern u1="V" u2="ï" k="-102" /> + <hkern u1="V" u2="î" k="-61" /> + <hkern u1="V" u2="í" k="-61" /> + <hkern u1="V" u2="ì" k="-61" /> + <hkern u1="V" u2="ë" k="143" /> + <hkern u1="V" u2="ê" k="143" /> + <hkern u1="V" u2="é" k="143" /> + <hkern u1="V" u2="è" k="143" /> + <hkern u1="V" u2="ç" k="143" /> + <hkern u1="V" u2="æ" k="184" /> + <hkern u1="V" u2="å" k="164" /> + <hkern u1="V" u2="ä" k="164" /> + <hkern u1="V" u2="ã" k="164" /> + <hkern u1="V" u2="â" k="164" /> + <hkern u1="V" u2="á" k="168" /> + <hkern u1="V" u2="à" k="164" /> + <hkern u1="V" u2="ß" k="20" /> + <hkern u1="V" u2="Ý" k="-25" /> + <hkern u1="V" u2="Ü" k="25" /> + <hkern u1="V" u2="Û" k="25" /> + <hkern u1="V" u2="Ú" k="25" /> + <hkern u1="V" u2="Ù" k="25" /> + <hkern u1="V" u2="Ø" k="82" /> + <hkern u1="V" u2="Ö" k="82" /> + <hkern u1="V" u2="Õ" k="82" /> + <hkern u1="V" u2="Ô" k="82" /> + <hkern u1="V" u2="Ó" k="82" /> + <hkern u1="V" u2="Ò" k="82" /> + <hkern u1="V" u2="Ç" k="74" /> + <hkern u1="V" u2="Æ" k="307" /> + <hkern u1="V" u2="Å" k="160" /> + <hkern u1="V" u2="Ä" k="160" /> + <hkern u1="V" u2="Ã" k="160" /> + <hkern u1="V" u2="Â" k="160" /> + <hkern u1="V" u2="Á" k="160" /> + <hkern u1="V" u2="À" k="160" /> + <hkern u1="V" u2="u" k="25" /> + <hkern u1="V" u2="s" k="123" /> + <hkern u1="V" u2="o" k="143" /> + <hkern u1="V" u2="n" k="61" /> + <hkern u1="V" u2="j" k="106" /> + <hkern u1="V" u2="g" k="205" /> + <hkern u1="V" u2="e" k="143" /> + <hkern u1="V" u2="d" k="147" /> + <hkern u1="V" u2="c" k="143" /> + <hkern u1="V" u2="a" k="164" /> + <hkern u1="V" u2="Z" k="-25" /> + <hkern u1="V" u2="Y" k="-25" /> + <hkern u1="V" u2="X" k="-25" /> + <hkern u1="V" u2="W" k="-29" /> + <hkern u1="V" u2="V" k="-20" /> + <hkern u1="V" u2="U" k="25" /> + <hkern u1="V" u2="T" k="-16" /> + <hkern u1="V" u2="S" k="41" /> + <hkern u1="V" u2="Q" k="98" /> + <hkern u1="V" u2="O" k="82" /> + <hkern u1="V" u2="J" k="176" /> + <hkern u1="V" u2="G" k="98" /> + <hkern u1="V" u2="C" k="74" /> + <hkern u1="V" u2="A" k="160" /> + <hkern u1="V" u2="." k="82" /> + <hkern u1="V" u2="," k="82" /> + <hkern u1="W" u2="Ÿ" k="-20" /> + <hkern u1="W" u2="œ" k="123" /> + <hkern u1="W" u2="Œ" k="41" /> + <hkern u1="W" u2="ü" k="25" /> + <hkern u1="W" u2="û" k="25" /> + <hkern u1="W" u2="ú" k="25" /> + <hkern u1="W" u2="ù" k="25" /> + <hkern u1="W" u2="ø" k="123" /> + <hkern u1="W" u2="ö" k="123" /> + <hkern u1="W" u2="ô" k="123" /> + <hkern u1="W" u2="ó" k="123" /> + <hkern u1="W" u2="ò" k="123" /> + <hkern u1="W" u2="ð" k="115" /> + <hkern u1="W" u2="ï" k="-102" /> + <hkern u1="W" u2="î" k="-61" /> + <hkern u1="W" u2="í" k="-61" /> + <hkern u1="W" u2="ì" k="-61" /> + <hkern u1="W" u2="ë" k="123" /> + <hkern u1="W" u2="ê" k="123" /> + <hkern u1="W" u2="é" k="123" /> + <hkern u1="W" u2="è" k="123" /> + <hkern u1="W" u2="ç" k="115" /> + <hkern u1="W" u2="æ" k="123" /> + <hkern u1="W" u2="å" k="123" /> + <hkern u1="W" u2="ä" k="123" /> + <hkern u1="W" u2="ã" k="123" /> + <hkern u1="W" u2="â" k="123" /> + <hkern u1="W" u2="á" k="123" /> + <hkern u1="W" u2="à" k="123" /> + <hkern u1="W" u2="ß" k="20" /> + <hkern u1="W" u2="Ý" k="-20" /> + <hkern u1="W" u2="Ø" k="61" /> + <hkern u1="W" u2="Ö" k="61" /> + <hkern u1="W" u2="Õ" k="61" /> + <hkern u1="W" u2="Ô" k="61" /> + <hkern u1="W" u2="Ó" k="61" /> + <hkern u1="W" u2="Ò" k="61" /> + <hkern u1="W" u2="Ç" k="49" /> + <hkern u1="W" u2="Æ" k="225" /> + <hkern u1="W" u2="Å" k="127" /> + <hkern u1="W" u2="Ä" k="127" /> + <hkern u1="W" u2="Ã" k="127" /> + <hkern u1="W" u2="Â" k="127" /> + <hkern u1="W" u2="Á" k="127" /> + <hkern u1="W" u2="À" k="127" /> + <hkern u1="W" u2="u" k="25" /> + <hkern u1="W" u2="s" k="82" /> + <hkern u1="W" u2="r" k="25" /> + <hkern u1="W" u2="o" k="123" /> + <hkern u1="W" u2="j" k="94" /> + <hkern u1="W" u2="g" k="164" /> + <hkern u1="W" u2="e" k="123" /> + <hkern u1="W" u2="d" k="102" /> + <hkern u1="W" u2="c" k="115" /> + <hkern u1="W" u2="a" k="123" /> + <hkern u1="W" u2="Z" k="-25" /> + <hkern u1="W" u2="Y" k="-20" /> + <hkern u1="W" u2="X" k="-25" /> + <hkern u1="W" u2="W" k="-20" /> + <hkern u1="W" u2="V" k="-29" /> + <hkern u1="W" u2="T" k="-20" /> + <hkern u1="W" u2="S" k="33" /> + <hkern u1="W" u2="Q" k="82" /> + <hkern u1="W" u2="O" k="61" /> + <hkern u1="W" u2="J" k="147" /> + <hkern u1="W" u2="G" k="74" /> + <hkern u1="W" u2="C" k="49" /> + <hkern u1="W" u2="A" k="127" /> + <hkern u1="W" u2="." k="82" /> + <hkern u1="W" u2="," k="82" /> + <hkern u1="X" u2="Ÿ" k="-25" /> + <hkern u1="X" u2="œ" k="102" /> + <hkern u1="X" u2="Œ" k="82" /> + <hkern u1="X" u2="ÿ" k="33" /> + <hkern u1="X" u2="ý" k="33" /> + <hkern u1="X" u2="ü" k="37" /> + <hkern u1="X" u2="û" k="37" /> + <hkern u1="X" u2="ú" k="37" /> + <hkern u1="X" u2="ù" k="37" /> + <hkern u1="X" u2="ø" k="20" /> + <hkern u1="X" u2="ö" k="66" /> + <hkern u1="X" u2="ô" k="66" /> + <hkern u1="X" u2="ó" k="66" /> + <hkern u1="X" u2="ò" k="66" /> + <hkern u1="X" u2="ð" k="102" /> + <hkern u1="X" u2="ï" k="-102" /> + <hkern u1="X" u2="î" k="-61" /> + <hkern u1="X" u2="í" k="-61" /> + <hkern u1="X" u2="ì" k="-61" /> + <hkern u1="X" u2="ë" k="78" /> + <hkern u1="X" u2="ê" k="78" /> + <hkern u1="X" u2="é" k="78" /> + <hkern u1="X" u2="è" k="78" /> + <hkern u1="X" u2="ç" k="66" /> + <hkern u1="X" u2="æ" k="102" /> + <hkern u1="X" u2="å" k="49" /> + <hkern u1="X" u2="ä" k="49" /> + <hkern u1="X" u2="ã" k="49" /> + <hkern u1="X" u2="â" k="49" /> + <hkern u1="X" u2="á" k="49" /> + <hkern u1="X" u2="à" k="49" /> + <hkern u1="X" u2="ß" k="20" /> + <hkern u1="X" u2="Ý" k="-25" /> + <hkern u1="X" u2="Ø" k="20" /> + <hkern u1="X" u2="Ö" k="82" /> + <hkern u1="X" u2="Õ" k="82" /> + <hkern u1="X" u2="Ô" k="82" /> + <hkern u1="X" u2="Ó" k="82" /> + <hkern u1="X" u2="Ò" k="82" /> + <hkern u1="X" u2="Ç" k="41" /> + <hkern u1="X" u2="Å" k="-25" /> + <hkern u1="X" u2="Ä" k="-25" /> + <hkern u1="X" u2="Ã" k="-25" /> + <hkern u1="X" u2="Â" k="-25" /> + <hkern u1="X" u2="Á" k="-25" /> + <hkern u1="X" u2="À" k="-25" /> + <hkern u1="X" u2="y" k="33" /> + <hkern u1="X" u2="u" k="37" /> + <hkern u1="X" u2="s" k="41" /> + <hkern u1="X" u2="o" k="66" /> + <hkern u1="X" u2="j" k="61" /> + <hkern u1="X" u2="e" k="78" /> + <hkern u1="X" u2="c" k="66" /> + <hkern u1="X" u2="a" k="49" /> + <hkern u1="X" u2="Z" k="-25" /> + <hkern u1="X" u2="Y" k="-25" /> + <hkern u1="X" u2="X" k="-25" /> + <hkern u1="X" u2="W" k="-25" /> + <hkern u1="X" u2="V" k="-25" /> + <hkern u1="X" u2="T" k="-16" /> + <hkern u1="X" u2="S" k="33" /> + <hkern u1="X" u2="Q" k="78" /> + <hkern u1="X" u2="O" k="82" /> + <hkern u1="X" u2="G" k="57" /> + <hkern u1="X" u2="C" k="41" /> + <hkern u1="X" u2="A" k="-25" /> + <hkern u1="Y" u2="œ" k="246" /> + <hkern u1="Y" u2="Œ" k="143" /> + <hkern u1="Y" u2="ü" k="168" /> + <hkern u1="Y" u2="û" k="168" /> + <hkern u1="Y" u2="ú" k="168" /> + <hkern u1="Y" u2="ù" k="168" /> + <hkern u1="Y" u2="ø" k="254" /> + <hkern u1="Y" u2="ö" k="274" /> + <hkern u1="Y" u2="õ" k="274" /> + <hkern u1="Y" u2="ô" k="274" /> + <hkern u1="Y" u2="ó" k="274" /> + <hkern u1="Y" u2="ò" k="274" /> + <hkern u1="Y" u2="ñ" k="102" /> + <hkern u1="Y" u2="ð" k="225" /> + <hkern u1="Y" u2="ï" k="-82" /> + <hkern u1="Y" u2="î" k="-41" /> + <hkern u1="Y" u2="í" k="-41" /> + <hkern u1="Y" u2="ì" k="-41" /> + <hkern u1="Y" u2="ë" k="274" /> + <hkern u1="Y" u2="ê" k="274" /> + <hkern u1="Y" u2="é" k="274" /> + <hkern u1="Y" u2="è" k="274" /> + <hkern u1="Y" u2="ç" k="225" /> + <hkern u1="Y" u2="æ" k="287" /> + <hkern u1="Y" u2="å" k="274" /> + <hkern u1="Y" u2="ä" k="274" /> + <hkern u1="Y" u2="ã" k="274" /> + <hkern u1="Y" u2="â" k="274" /> + <hkern u1="Y" u2="á" k="274" /> + <hkern u1="Y" u2="à" k="274" /> + <hkern u1="Y" u2="ß" k="41" /> + <hkern u1="Y" u2="Ø" k="123" /> + <hkern u1="Y" u2="Ö" k="123" /> + <hkern u1="Y" u2="Õ" k="123" /> + <hkern u1="Y" u2="Ô" k="123" /> + <hkern u1="Y" u2="Ó" k="123" /> + <hkern u1="Y" u2="Ò" k="123" /> + <hkern u1="Y" u2="Ç" k="102" /> + <hkern u1="Y" u2="Æ" k="328" /> + <hkern u1="Y" u2="Å" k="184" /> + <hkern u1="Y" u2="Ä" k="184" /> + <hkern u1="Y" u2="Ã" k="184" /> + <hkern u1="Y" u2="Â" k="184" /> + <hkern u1="Y" u2="Á" k="184" /> + <hkern u1="Y" u2="À" k="184" /> + <hkern u1="Y" u2="z" k="123" /> + <hkern u1="Y" u2="v" k="106" /> + <hkern u1="Y" u2="u" k="168" /> + <hkern u1="Y" u2="s" k="184" /> + <hkern u1="Y" u2="r" k="143" /> + <hkern u1="Y" u2="o" k="274" /> + <hkern u1="Y" u2="n" k="102" /> + <hkern u1="Y" u2="j" k="143" /> + <hkern u1="Y" u2="i" k="25" /> + <hkern u1="Y" u2="g" k="266" /> + <hkern u1="Y" u2="e" k="274" /> + <hkern u1="Y" u2="d" k="266" /> + <hkern u1="Y" u2="c" k="205" /> + <hkern u1="Y" u2="a" k="274" /> + <hkern u1="Y" u2="Z" k="-25" /> + <hkern u1="Y" u2="Y" k="-20" /> + <hkern u1="Y" u2="X" k="-25" /> + <hkern u1="Y" u2="W" k="-20" /> + <hkern u1="Y" u2="V" k="-25" /> + <hkern u1="Y" u2="T" k="-20" /> + <hkern u1="Y" u2="S" k="41" /> + <hkern u1="Y" u2="Q" k="123" /> + <hkern u1="Y" u2="O" k="123" /> + <hkern u1="Y" u2="J" k="246" /> + <hkern u1="Y" u2="G" k="123" /> + <hkern u1="Y" u2="C" k="102" /> + <hkern u1="Y" u2="A" k="184" /> + <hkern u1="Y" u2="." k="123" /> + <hkern u1="Y" u2="," k="123" /> + <hkern u1="Z" u2="Ÿ" k="-25" /> + <hkern u1="Z" u2="œ" k="82" /> + <hkern u1="Z" u2="Œ" k="41" /> + <hkern u1="Z" u2="ÿ" k="20" /> + <hkern u1="Z" u2="ý" k="20" /> + <hkern u1="Z" u2="ü" k="25" /> + <hkern u1="Z" u2="û" k="25" /> + <hkern u1="Z" u2="ú" k="25" /> + <hkern u1="Z" u2="ù" k="25" /> + <hkern u1="Z" u2="ø" k="41" /> + <hkern u1="Z" u2="ö" k="82" /> + <hkern u1="Z" u2="ô" k="82" /> + <hkern u1="Z" u2="ó" k="82" /> + <hkern u1="Z" u2="ò" k="82" /> + <hkern u1="Z" u2="ð" k="61" /> + <hkern u1="Z" u2="ï" k="-102" /> + <hkern u1="Z" u2="î" k="-61" /> + <hkern u1="Z" u2="í" k="-61" /> + <hkern u1="Z" u2="ì" k="-61" /> + <hkern u1="Z" u2="ë" k="61" /> + <hkern u1="Z" u2="ê" k="61" /> + <hkern u1="Z" u2="é" k="61" /> + <hkern u1="Z" u2="è" k="61" /> + <hkern u1="Z" u2="æ" k="82" /> + <hkern u1="Z" u2="å" k="49" /> + <hkern u1="Z" u2="ä" k="49" /> + <hkern u1="Z" u2="ã" k="49" /> + <hkern u1="Z" u2="â" k="49" /> + <hkern u1="Z" u2="á" k="49" /> + <hkern u1="Z" u2="à" k="49" /> + <hkern u1="Z" u2="Ý" k="-25" /> + <hkern u1="Z" u2="Ø" k="20" /> + <hkern u1="Z" u2="Å" k="-66" /> + <hkern u1="Z" u2="Ä" k="-66" /> + <hkern u1="Z" u2="Ã" k="-66" /> + <hkern u1="Z" u2="Â" k="-66" /> + <hkern u1="Z" u2="Á" k="-66" /> + <hkern u1="Z" u2="À" k="-66" /> + <hkern u1="Z" u2="y" k="29" /> + <hkern u1="Z" u2="w" k="25" /> + <hkern u1="Z" u2="v" k="29" /> + <hkern u1="Z" u2="u" k="25" /> + <hkern u1="Z" u2="q" k="82" /> + <hkern u1="Z" u2="o" k="82" /> + <hkern u1="Z" u2="j" k="49" /> + <hkern u1="Z" u2="e" k="61" /> + <hkern u1="Z" u2="d" k="82" /> + <hkern u1="Z" u2="c" k="82" /> + <hkern u1="Z" u2="a" k="49" /> + <hkern u1="Z" u2="Z" k="-25" /> + <hkern u1="Z" u2="Y" k="-25" /> + <hkern u1="Z" u2="X" k="-25" /> + <hkern u1="Z" u2="W" k="-25" /> + <hkern u1="Z" u2="V" k="-25" /> + <hkern u1="Z" u2="T" k="-20" /> + <hkern u1="Z" u2="Q" k="61" /> + <hkern u1="Z" u2="O" k="61" /> + <hkern u1="Z" u2="J" k="-20" /> + <hkern u1="Z" u2="G" k="61" /> + <hkern u1="Z" u2="C" k="61" /> + <hkern u1="Z" u2="A" k="-61" /> + <hkern u1="a" u2="ÿ" k="33" /> + <hkern u1="a" u2="ý" k="33" /> + <hkern u1="a" u2="y" k="33" /> + <hkern u1="a" u2="w" k="29" /> + <hkern u1="a" u2="v" k="33" /> + <hkern u1="a" u2="j" k="61" /> + <hkern u1="b" u2="œ" k="20" /> + <hkern u1="b" u2="å" k="41" /> + <hkern u1="b" u2="ä" k="41" /> + <hkern u1="b" u2="ã" k="41" /> + <hkern u1="b" u2="â" k="41" /> + <hkern u1="b" u2="á" k="41" /> + <hkern u1="b" u2="à" k="41" /> + <hkern u1="b" u2="z" k="53" /> + <hkern u1="b" u2="t" k="41" /> + <hkern u1="b" u2="j" k="90" /> + <hkern u1="b" u2="g" k="20" /> + <hkern u1="b" u2="a" k="41" /> + <hkern u1="c" u2="œ" k="20" /> + <hkern u1="c" u2="ö" k="20" /> + <hkern u1="c" u2="ô" k="20" /> + <hkern u1="c" u2="ó" k="20" /> + <hkern u1="c" u2="ò" k="20" /> + <hkern u1="c" u2="ð" k="20" /> + <hkern u1="c" u2="ë" k="20" /> + <hkern u1="c" u2="ê" k="20" /> + <hkern u1="c" u2="é" k="20" /> + <hkern u1="c" u2="è" k="20" /> + <hkern u1="c" u2="æ" k="20" /> + <hkern u1="c" u2="å" k="20" /> + <hkern u1="c" u2="ä" k="20" /> + <hkern u1="c" u2="ã" k="20" /> + <hkern u1="c" u2="â" k="20" /> + <hkern u1="c" u2="á" k="20" /> + <hkern u1="c" u2="à" k="20" /> + <hkern u1="c" u2="z" k="41" /> + <hkern u1="c" u2="t" k="20" /> + <hkern u1="c" u2="q" k="20" /> + <hkern u1="c" u2="o" k="20" /> + <hkern u1="c" u2="j" k="82" /> + <hkern u1="c" u2="e" k="20" /> + <hkern u1="c" u2="d" k="20" /> + <hkern u1="c" u2="a" k="20" /> + <hkern u1="d" u2="j" k="66" /> + <hkern u1="e" u2="œ" k="20" /> + <hkern u1="e" u2="ÿ" k="57" /> + <hkern u1="e" u2="ý" k="57" /> + <hkern u1="e" u2="å" k="20" /> + <hkern u1="e" u2="ä" k="20" /> + <hkern u1="e" u2="ã" k="20" /> + <hkern u1="e" u2="â" k="20" /> + <hkern u1="e" u2="á" k="20" /> + <hkern u1="e" u2="à" k="20" /> + <hkern u1="e" u2="z" k="41" /> + <hkern u1="e" u2="y" k="57" /> + <hkern u1="e" u2="x" k="41" /> + <hkern u1="e" u2="w" k="41" /> + <hkern u1="e" u2="v" k="57" /> + <hkern u1="e" u2="j" k="70" /> + <hkern u1="e" u2="g" k="20" /> + <hkern u1="e" u2="a" k="20" /> + <hkern u1="f" u2="œ" k="102" /> + <hkern u1="f" u2="ø" k="61" /> + <hkern u1="f" u2="ö" k="102" /> + <hkern u1="f" u2="õ" k="102" /> + <hkern u1="f" u2="ô" k="102" /> + <hkern u1="f" u2="ó" k="102" /> + <hkern u1="f" u2="ò" k="102" /> + <hkern u1="f" u2="ë" k="123" /> + <hkern u1="f" u2="ê" k="123" /> + <hkern u1="f" u2="é" k="123" /> + <hkern u1="f" u2="è" k="123" /> + <hkern u1="f" u2="ç" k="123" /> + <hkern u1="f" u2="æ" k="82" /> + <hkern u1="f" u2="å" k="74" /> + <hkern u1="f" u2="ä" k="74" /> + <hkern u1="f" u2="ã" k="74" /> + <hkern u1="f" u2="â" k="74" /> + <hkern u1="f" u2="á" k="74" /> + <hkern u1="f" u2="à" k="74" /> + <hkern u1="f" u2="s" k="33" /> + <hkern u1="f" u2="q" k="123" /> + <hkern u1="f" u2="o" k="102" /> + <hkern u1="f" u2="j" k="147" /> + <hkern u1="f" u2="g" k="82" /> + <hkern u1="f" u2="e" k="123" /> + <hkern u1="f" u2="d" k="123" /> + <hkern u1="f" u2="c" k="82" /> + <hkern u1="f" u2="a" k="74" /> + <hkern u1="f" u2="," k="41" /> + <hkern u1="g" u2="ö" k="33" /> + <hkern u1="g" u2="õ" k="33" /> + <hkern u1="g" u2="ô" k="33" /> + <hkern u1="g" u2="ó" k="33" /> + <hkern u1="g" u2="ò" k="33" /> + <hkern u1="g" u2="ð" k="33" /> + <hkern u1="g" u2="ë" k="33" /> + <hkern u1="g" u2="ê" k="33" /> + <hkern u1="g" u2="é" k="33" /> + <hkern u1="g" u2="è" k="33" /> + <hkern u1="g" u2="ç" k="33" /> + <hkern u1="g" u2="æ" k="45" /> + <hkern u1="g" u2="å" k="45" /> + <hkern u1="g" u2="ä" k="45" /> + <hkern u1="g" u2="ã" k="45" /> + <hkern u1="g" u2="â" k="45" /> + <hkern u1="g" u2="á" k="45" /> + <hkern u1="g" u2="à" k="45" /> + <hkern u1="g" u2="q" k="33" /> + <hkern u1="g" u2="o" k="33" /> + <hkern u1="g" u2="j" k="37" /> + <hkern u1="g" u2="e" k="33" /> + <hkern u1="g" u2="d" k="33" /> + <hkern u1="g" u2="c" k="33" /> + <hkern u1="g" u2="a" k="45" /> + <hkern u1="h" u2="ÿ" k="66" /> + <hkern u1="h" u2="ý" k="66" /> + <hkern u1="h" u2="y" k="66" /> + <hkern u1="h" u2="w" k="53" /> + <hkern u1="h" u2="v" k="66" /> + <hkern u1="h" u2="j" k="74" /> + <hkern u1="i" u2="j" k="74" /> + <hkern u1="j" u2="j" k="25" /> + <hkern u1="k" u2="œ" k="123" /> + <hkern u1="k" u2="ø" k="61" /> + <hkern u1="k" u2="ö" k="90" /> + <hkern u1="k" u2="ô" k="90" /> + <hkern u1="k" u2="ó" k="90" /> + <hkern u1="k" u2="ò" k="90" /> + <hkern u1="k" u2="ë" k="90" /> + <hkern u1="k" u2="ê" k="90" /> + <hkern u1="k" u2="é" k="90" /> + <hkern u1="k" u2="è" k="90" /> + <hkern u1="k" u2="ç" k="90" /> + <hkern u1="k" u2="æ" k="111" /> + <hkern u1="k" u2="å" k="49" /> + <hkern u1="k" u2="ä" k="49" /> + <hkern u1="k" u2="ã" k="49" /> + <hkern u1="k" u2="â" k="49" /> + <hkern u1="k" u2="á" k="49" /> + <hkern u1="k" u2="à" k="49" /> + <hkern u1="k" u2="z" k="-41" /> + <hkern u1="k" u2="x" k="-41" /> + <hkern u1="k" u2="s" k="41" /> + <hkern u1="k" u2="q" k="90" /> + <hkern u1="k" u2="o" k="90" /> + <hkern u1="k" u2="j" k="74" /> + <hkern u1="k" u2="f" k="-37" /> + <hkern u1="k" u2="e" k="82" /> + <hkern u1="k" u2="d" k="57" /> + <hkern u1="k" u2="c" k="66" /> + <hkern u1="k" u2="a" k="49" /> + <hkern u1="l" u2="j" k="74" /> + <hkern u1="l" u2="f" k="-45" /> + <hkern u1="m" u2="ÿ" k="29" /> + <hkern u1="m" u2="ý" k="29" /> + <hkern u1="m" u2="y" k="29" /> + <hkern u1="m" u2="j" k="74" /> + <hkern u1="n" u2="ÿ" k="33" /> + <hkern u1="n" u2="ý" k="33" /> + <hkern u1="n" u2="y" k="41" /> + <hkern u1="n" u2="v" k="41" /> + <hkern u1="n" u2="j" k="61" /> + <hkern u1="o" u2="œ" k="20" /> + <hkern u1="o" u2="ÿ" k="74" /> + <hkern u1="o" u2="ý" k="74" /> + <hkern u1="o" u2="z" k="53" /> + <hkern u1="o" u2="y" k="74" /> + <hkern u1="o" u2="x" k="74" /> + <hkern u1="o" u2="w" k="49" /> + <hkern u1="o" u2="v" k="74" /> + <hkern u1="o" u2="t" k="41" /> + <hkern u1="o" u2="j" k="102" /> + <hkern u1="o" u2="g" k="20" /> + <hkern u1="p" u2="œ" k="20" /> + <hkern u1="p" u2="ÿ" k="57" /> + <hkern u1="p" u2="ý" k="57" /> + <hkern u1="p" u2="å" k="20" /> + <hkern u1="p" u2="ä" k="20" /> + <hkern u1="p" u2="ã" k="20" /> + <hkern u1="p" u2="â" k="20" /> + <hkern u1="p" u2="á" k="20" /> + <hkern u1="p" u2="à" k="20" /> + <hkern u1="p" u2="z" k="53" /> + <hkern u1="p" u2="y" k="57" /> + <hkern u1="p" u2="x" k="45" /> + <hkern u1="p" u2="w" k="45" /> + <hkern u1="p" u2="v" k="57" /> + <hkern u1="p" u2="t" k="41" /> + <hkern u1="p" u2="j" k="123" /> + <hkern u1="p" u2="g" k="20" /> + <hkern u1="p" u2="a" k="20" /> + <hkern u1="r" u2="œ" k="61" /> + <hkern u1="r" u2="ÿ" k="-49" /> + <hkern u1="r" u2="ý" k="-49" /> + <hkern u1="r" u2="ø" k="41" /> + <hkern u1="r" u2="ö" k="82" /> + <hkern u1="r" u2="ô" k="82" /> + <hkern u1="r" u2="ó" k="82" /> + <hkern u1="r" u2="ò" k="82" /> + <hkern u1="r" u2="ð" k="41" /> + <hkern u1="r" u2="ë" k="78" /> + <hkern u1="r" u2="ê" k="78" /> + <hkern u1="r" u2="é" k="78" /> + <hkern u1="r" u2="è" k="78" /> + <hkern u1="r" u2="ç" k="82" /> + <hkern u1="r" u2="æ" k="41" /> + <hkern u1="r" u2="å" k="41" /> + <hkern u1="r" u2="ä" k="41" /> + <hkern u1="r" u2="ã" k="41" /> + <hkern u1="r" u2="â" k="41" /> + <hkern u1="r" u2="á" k="41" /> + <hkern u1="r" u2="à" k="41" /> + <hkern u1="r" u2="z" k="-41" /> + <hkern u1="r" u2="y" k="-49" /> + <hkern u1="r" u2="x" k="-49" /> + <hkern u1="r" u2="w" k="-57" /> + <hkern u1="r" u2="v" k="-49" /> + <hkern u1="r" u2="t" k="-41" /> + <hkern u1="r" u2="s" k="49" /> + <hkern u1="r" u2="q" k="82" /> + <hkern u1="r" u2="o" k="82" /> + <hkern u1="r" u2="j" k="98" /> + <hkern u1="r" u2="g" k="82" /> + <hkern u1="r" u2="f" k="-37" /> + <hkern u1="r" u2="e" k="82" /> + <hkern u1="r" u2="d" k="82" /> + <hkern u1="r" u2="c" k="82" /> + <hkern u1="r" u2="a" k="41" /> + <hkern u1="s" u2="ÿ" k="25" /> + <hkern u1="s" u2="ý" k="25" /> + <hkern u1="s" u2="y" k="25" /> + <hkern u1="s" u2="w" k="16" /> + <hkern u1="s" u2="v" k="25" /> + <hkern u1="s" u2="j" k="74" /> + <hkern u1="t" u2="ÿ" k="-20" /> + <hkern u1="t" u2="ý" k="-20" /> + <hkern u1="t" u2="ø" k="20" /> + <hkern u1="t" u2="ö" k="41" /> + <hkern u1="t" u2="ô" k="41" /> + <hkern u1="t" u2="ó" k="41" /> + <hkern u1="t" u2="ò" k="41" /> + <hkern u1="t" u2="ë" k="33" /> + <hkern u1="t" u2="ê" k="33" /> + <hkern u1="t" u2="é" k="33" /> + <hkern u1="t" u2="è" k="33" /> + <hkern u1="t" u2="ç" k="45" /> + <hkern u1="t" u2="z" k="-61" /> + <hkern u1="t" u2="y" k="-20" /> + <hkern u1="t" u2="w" k="-33" /> + <hkern u1="t" u2="v" k="-20" /> + <hkern u1="t" u2="q" k="66" /> + <hkern u1="t" u2="o" k="41" /> + <hkern u1="t" u2="j" k="66" /> + <hkern u1="t" u2="f" k="-49" /> + <hkern u1="t" u2="e" k="29" /> + <hkern u1="t" u2="d" k="66" /> + <hkern u1="t" u2="c" k="41" /> + <hkern u1="u" u2="j" k="61" /> + <hkern u1="v" u2="œ" k="61" /> + <hkern u1="v" u2="ÿ" k="-20" /> + <hkern u1="v" u2="ý" k="-20" /> + <hkern u1="v" u2="ø" k="74" /> + <hkern u1="v" u2="ö" k="74" /> + <hkern u1="v" u2="ô" k="74" /> + <hkern u1="v" u2="ó" k="74" /> + <hkern u1="v" u2="ò" k="74" /> + <hkern u1="v" u2="ð" k="61" /> + <hkern u1="v" u2="ë" k="57" /> + <hkern u1="v" u2="ê" k="57" /> + <hkern u1="v" u2="é" k="57" /> + <hkern u1="v" u2="è" k="57" /> + <hkern u1="v" u2="ç" k="61" /> + <hkern u1="v" u2="æ" k="82" /> + <hkern u1="v" u2="å" k="82" /> + <hkern u1="v" u2="ä" k="82" /> + <hkern u1="v" u2="ã" k="82" /> + <hkern u1="v" u2="â" k="82" /> + <hkern u1="v" u2="á" k="82" /> + <hkern u1="v" u2="à" k="82" /> + <hkern u1="v" u2="z" k="-20" /> + <hkern u1="v" u2="y" k="-20" /> + <hkern u1="v" u2="x" k="-16" /> + <hkern u1="v" u2="w" k="-25" /> + <hkern u1="v" u2="v" k="-20" /> + <hkern u1="v" u2="s" k="25" /> + <hkern u1="v" u2="q" k="66" /> + <hkern u1="v" u2="o" k="74" /> + <hkern u1="v" u2="j" k="123" /> + <hkern u1="v" u2="g" k="78" /> + <hkern u1="v" u2="f" k="-61" /> + <hkern u1="v" u2="e" k="57" /> + <hkern u1="v" u2="d" k="66" /> + <hkern u1="v" u2="c" k="61" /> + <hkern u1="v" u2="a" k="82" /> + <hkern u1="v" u2="." k="82" /> + <hkern u1="v" u2="," k="82" /> + <hkern u1="w" u2="œ" k="41" /> + <hkern u1="w" u2="ÿ" k="-20" /> + <hkern u1="w" u2="ý" k="-20" /> + <hkern u1="w" u2="ø" k="49" /> + <hkern u1="w" u2="ö" k="49" /> + <hkern u1="w" u2="ô" k="49" /> + <hkern u1="w" u2="ó" k="49" /> + <hkern u1="w" u2="ò" k="49" /> + <hkern u1="w" u2="ð" k="41" /> + <hkern u1="w" u2="ë" k="41" /> + <hkern u1="w" u2="ê" k="41" /> + <hkern u1="w" u2="é" k="41" /> + <hkern u1="w" u2="è" k="41" /> + <hkern u1="w" u2="ç" k="41" /> + <hkern u1="w" u2="æ" k="61" /> + <hkern u1="w" u2="å" k="61" /> + <hkern u1="w" u2="ä" k="61" /> + <hkern u1="w" u2="ã" k="61" /> + <hkern u1="w" u2="â" k="61" /> + <hkern u1="w" u2="á" k="61" /> + <hkern u1="w" u2="à" k="61" /> + <hkern u1="w" u2="z" k="-20" /> + <hkern u1="w" u2="y" k="-20" /> + <hkern u1="w" u2="x" k="-20" /> + <hkern u1="w" u2="w" k="-37" /> + <hkern u1="w" u2="v" k="-25" /> + <hkern u1="w" u2="s" k="16" /> + <hkern u1="w" u2="q" k="49" /> + <hkern u1="w" u2="o" k="49" /> + <hkern u1="w" u2="j" k="111" /> + <hkern u1="w" u2="g" k="49" /> + <hkern u1="w" u2="f" k="-61" /> + <hkern u1="w" u2="e" k="41" /> + <hkern u1="w" u2="d" k="49" /> + <hkern u1="w" u2="c" k="41" /> + <hkern u1="w" u2="a" k="61" /> + <hkern u1="w" u2="." k="61" /> + <hkern u1="w" u2="," k="61" /> + <hkern u1="x" u2="œ" k="61" /> + <hkern u1="x" u2="ÿ" k="-20" /> + <hkern u1="x" u2="ý" k="-20" /> + <hkern u1="x" u2="ø" k="41" /> + <hkern u1="x" u2="ö" k="74" /> + <hkern u1="x" u2="ô" k="74" /> + <hkern u1="x" u2="ó" k="74" /> + <hkern u1="x" u2="ò" k="74" /> + <hkern u1="x" u2="ð" k="61" /> + <hkern u1="x" u2="ë" k="41" /> + <hkern u1="x" u2="ê" k="41" /> + <hkern u1="x" u2="é" k="41" /> + <hkern u1="x" u2="è" k="41" /> + <hkern u1="x" u2="æ" k="82" /> + <hkern u1="x" u2="å" k="41" /> + <hkern u1="x" u2="ä" k="41" /> + <hkern u1="x" u2="ã" k="41" /> + <hkern u1="x" u2="â" k="41" /> + <hkern u1="x" u2="á" k="41" /> + <hkern u1="x" u2="à" k="41" /> + <hkern u1="x" u2="z" k="-20" /> + <hkern u1="x" u2="y" k="-20" /> + <hkern u1="x" u2="x" k="-20" /> + <hkern u1="x" u2="w" k="-20" /> + <hkern u1="x" u2="v" k="-16" /> + <hkern u1="x" u2="q" k="45" /> + <hkern u1="x" u2="o" k="74" /> + <hkern u1="x" u2="j" k="82" /> + <hkern u1="x" u2="g" k="12" /> + <hkern u1="x" u2="f" k="-61" /> + <hkern u1="x" u2="e" k="41" /> + <hkern u1="x" u2="d" k="61" /> + <hkern u1="x" u2="a" k="41" /> + <hkern u1="y" u2="œ" k="61" /> + <hkern u1="y" u2="ø" k="74" /> + <hkern u1="y" u2="ö" k="74" /> + <hkern u1="y" u2="ô" k="74" /> + <hkern u1="y" u2="ó" k="74" /> + <hkern u1="y" u2="ò" k="74" /> + <hkern u1="y" u2="ð" k="61" /> + <hkern u1="y" u2="ë" k="57" /> + <hkern u1="y" u2="ê" k="57" /> + <hkern u1="y" u2="é" k="57" /> + <hkern u1="y" u2="è" k="57" /> + <hkern u1="y" u2="ç" k="61" /> + <hkern u1="y" u2="æ" k="82" /> + <hkern u1="y" u2="å" k="82" /> + <hkern u1="y" u2="ä" k="82" /> + <hkern u1="y" u2="ã" k="82" /> + <hkern u1="y" u2="â" k="82" /> + <hkern u1="y" u2="á" k="82" /> + <hkern u1="y" u2="à" k="82" /> + <hkern u1="y" u2="z" k="-20" /> + <hkern u1="y" u2="y" k="-20" /> + <hkern u1="y" u2="x" k="-20" /> + <hkern u1="y" u2="w" k="-20" /> + <hkern u1="y" u2="v" k="-20" /> + <hkern u1="y" u2="s" k="25" /> + <hkern u1="y" u2="q" k="61" /> + <hkern u1="y" u2="o" k="74" /> + <hkern u1="y" u2="j" k="102" /> + <hkern u1="y" u2="g" k="78" /> + <hkern u1="y" u2="f" k="-61" /> + <hkern u1="y" u2="e" k="57" /> + <hkern u1="y" u2="d" k="61" /> + <hkern u1="y" u2="c" k="61" /> + <hkern u1="y" u2="a" k="82" /> + <hkern u1="y" u2="." k="82" /> + <hkern u1="y" u2="," k="82" /> + <hkern u1="z" u2="œ" k="41" /> + <hkern u1="z" u2="ÿ" k="-20" /> + <hkern u1="z" u2="ý" k="-20" /> + <hkern u1="z" u2="ø" k="20" /> + <hkern u1="z" u2="ö" k="61" /> + <hkern u1="z" u2="ô" k="61" /> + <hkern u1="z" u2="ó" k="61" /> + <hkern u1="z" u2="ò" k="61" /> + <hkern u1="z" u2="ð" k="20" /> + <hkern u1="z" u2="ë" k="25" /> + <hkern u1="z" u2="ê" k="25" /> + <hkern u1="z" u2="é" k="25" /> + <hkern u1="z" u2="è" k="25" /> + <hkern u1="z" u2="ç" k="29" /> + <hkern u1="z" u2="æ" k="41" /> + <hkern u1="z" u2="å" k="25" /> + <hkern u1="z" u2="ä" k="25" /> + <hkern u1="z" u2="ã" k="25" /> + <hkern u1="z" u2="â" k="25" /> + <hkern u1="z" u2="á" k="25" /> + <hkern u1="z" u2="à" k="25" /> + <hkern u1="z" u2="z" k="-20" /> + <hkern u1="z" u2="y" k="-20" /> + <hkern u1="z" u2="x" k="-20" /> + <hkern u1="z" u2="w" k="-20" /> + <hkern u1="z" u2="v" k="-20" /> + <hkern u1="z" u2="q" k="53" /> + <hkern u1="z" u2="o" k="53" /> + <hkern u1="z" u2="j" k="61" /> + <hkern u1="z" u2="f" k="-61" /> + <hkern u1="z" u2="e" k="53" /> + <hkern u1="z" u2="d" k="53" /> + <hkern u1="z" u2="c" k="53" /> + <hkern u1="z" u2="a" k="25" /> + <hkern u1="µ" u2="j" k="61" /> + <hkern u1="À" u2="À" k="-25" /> + <hkern u1="À" u2="z" k="-25" /> + <hkern u1="À" u2="y" k="143" /> + <hkern u1="À" u2="w" k="102" /> + <hkern u1="À" u2="v" k="143" /> + <hkern u1="À" u2="u" k="20" /> + <hkern u1="À" u2="t" k="47" /> + <hkern u1="À" u2="q" k="74" /> + <hkern u1="À" u2="o" k="74" /> + <hkern u1="À" u2="j" k="49" /> + <hkern u1="À" u2="f" k="25" /> + <hkern u1="À" u2="e" k="74" /> + <hkern u1="À" u2="d" k="74" /> + <hkern u1="À" u2="c" k="74" /> + <hkern u1="À" u2="a" k="33" /> + <hkern u1="À" u2="Z" k="-66" /> + <hkern u1="À" u2="Y" k="184" /> + <hkern u1="À" u2="X" k="-25" /> + <hkern u1="À" u2="W" k="127" /> + <hkern u1="À" u2="V" k="160" /> + <hkern u1="À" u2="T" k="168" /> + <hkern u1="À" u2="Q" k="57" /> + <hkern u1="À" u2="O" k="57" /> + <hkern u1="À" u2="J" k="-25" /> + <hkern u1="À" u2="G" k="57" /> + <hkern u1="À" u2="C" k="57" /> + <hkern u1="Á" u2="Á" k="-25" /> + <hkern u1="Á" u2="z" k="-25" /> + <hkern u1="Á" u2="y" k="143" /> + <hkern u1="Á" u2="w" k="102" /> + <hkern u1="Á" u2="v" k="143" /> + <hkern u1="Á" u2="u" k="20" /> + <hkern u1="Á" u2="t" k="45" /> + <hkern u1="Á" u2="q" k="74" /> + <hkern u1="Á" u2="o" k="74" /> + <hkern u1="Á" u2="j" k="49" /> + <hkern u1="Á" u2="f" k="25" /> + <hkern u1="Á" u2="e" k="74" /> + <hkern u1="Á" u2="d" k="74" /> + <hkern u1="Á" u2="c" k="74" /> + <hkern u1="Á" u2="a" k="33" /> + <hkern u1="Á" u2="Z" k="-66" /> + <hkern u1="Á" u2="Y" k="184" /> + <hkern u1="Á" u2="X" k="-25" /> + <hkern u1="Á" u2="W" k="127" /> + <hkern u1="Á" u2="V" k="160" /> + <hkern u1="Á" u2="T" k="168" /> + <hkern u1="Á" u2="Q" k="57" /> + <hkern u1="Á" u2="O" k="57" /> + <hkern u1="Á" u2="J" k="-25" /> + <hkern u1="Á" u2="G" k="57" /> + <hkern u1="Á" u2="C" k="57" /> + <hkern u1="Â" u2="Â" k="-25" /> + <hkern u1="Â" u2="z" k="-25" /> + <hkern u1="Â" u2="y" k="143" /> + <hkern u1="Â" u2="w" k="102" /> + <hkern u1="Â" u2="v" k="143" /> + <hkern u1="Â" u2="u" k="20" /> + <hkern u1="Â" u2="t" k="45" /> + <hkern u1="Â" u2="q" k="74" /> + <hkern u1="Â" u2="o" k="74" /> + <hkern u1="Â" u2="j" k="49" /> + <hkern u1="Â" u2="f" k="25" /> + <hkern u1="Â" u2="e" k="74" /> + <hkern u1="Â" u2="d" k="74" /> + <hkern u1="Â" u2="c" k="74" /> + <hkern u1="Â" u2="a" k="33" /> + <hkern u1="Â" u2="Z" k="-66" /> + <hkern u1="Â" u2="Y" k="184" /> + <hkern u1="Â" u2="X" k="-25" /> + <hkern u1="Â" u2="W" k="127" /> + <hkern u1="Â" u2="V" k="160" /> + <hkern u1="Â" u2="T" k="168" /> + <hkern u1="Â" u2="Q" k="57" /> + <hkern u1="Â" u2="O" k="57" /> + <hkern u1="Â" u2="J" k="-25" /> + <hkern u1="Â" u2="G" k="57" /> + <hkern u1="Â" u2="C" k="57" /> + <hkern u1="Ã" u2="Ã" k="-25" /> + <hkern u1="Ã" u2="z" k="-25" /> + <hkern u1="Ã" u2="y" k="143" /> + <hkern u1="Ã" u2="w" k="102" /> + <hkern u1="Ã" u2="v" k="143" /> + <hkern u1="Ã" u2="u" k="20" /> + <hkern u1="Ã" u2="t" k="45" /> + <hkern u1="Ã" u2="q" k="74" /> + <hkern u1="Ã" u2="o" k="74" /> + <hkern u1="Ã" u2="j" k="49" /> + <hkern u1="Ã" u2="f" k="25" /> + <hkern u1="Ã" u2="e" k="74" /> + <hkern u1="Ã" u2="d" k="74" /> + <hkern u1="Ã" u2="c" k="74" /> + <hkern u1="Ã" u2="a" k="33" /> + <hkern u1="Ã" u2="Z" k="-66" /> + <hkern u1="Ã" u2="Y" k="184" /> + <hkern u1="Ã" u2="X" k="-25" /> + <hkern u1="Ã" u2="W" k="127" /> + <hkern u1="Ã" u2="V" k="160" /> + <hkern u1="Ã" u2="T" k="168" /> + <hkern u1="Ã" u2="Q" k="57" /> + <hkern u1="Ã" u2="O" k="57" /> + <hkern u1="Ã" u2="J" k="-25" /> + <hkern u1="Ã" u2="G" k="57" /> + <hkern u1="Ã" u2="C" k="57" /> + <hkern u1="Ä" u2="Ä" k="-25" /> + <hkern u1="Ä" u2="z" k="-25" /> + <hkern u1="Ä" u2="y" k="143" /> + <hkern u1="Ä" u2="w" k="102" /> + <hkern u1="Ä" u2="v" k="143" /> + <hkern u1="Ä" u2="u" k="20" /> + <hkern u1="Ä" u2="t" k="45" /> + <hkern u1="Ä" u2="q" k="74" /> + <hkern u1="Ä" u2="o" k="74" /> + <hkern u1="Ä" u2="j" k="49" /> + <hkern u1="Ä" u2="f" k="25" /> + <hkern u1="Ä" u2="e" k="74" /> + <hkern u1="Ä" u2="d" k="74" /> + <hkern u1="Ä" u2="c" k="74" /> + <hkern u1="Ä" u2="a" k="33" /> + <hkern u1="Ä" u2="Z" k="-66" /> + <hkern u1="Ä" u2="Y" k="184" /> + <hkern u1="Ä" u2="X" k="-25" /> + <hkern u1="Ä" u2="W" k="127" /> + <hkern u1="Ä" u2="V" k="160" /> + <hkern u1="Ä" u2="T" k="168" /> + <hkern u1="Ä" u2="Q" k="57" /> + <hkern u1="Ä" u2="O" k="57" /> + <hkern u1="Ä" u2="J" k="-25" /> + <hkern u1="Ä" u2="G" k="57" /> + <hkern u1="Ä" u2="C" k="57" /> + <hkern u1="Å" u2="Å" k="-25" /> + <hkern u1="Å" u2="z" k="-25" /> + <hkern u1="Å" u2="y" k="143" /> + <hkern u1="Å" u2="w" k="102" /> + <hkern u1="Å" u2="v" k="143" /> + <hkern u1="Å" u2="u" k="20" /> + <hkern u1="Å" u2="t" k="45" /> + <hkern u1="Å" u2="q" k="74" /> + <hkern u1="Å" u2="o" k="74" /> + <hkern u1="Å" u2="j" k="49" /> + <hkern u1="Å" u2="f" k="25" /> + <hkern u1="Å" u2="e" k="74" /> + <hkern u1="Å" u2="d" k="74" /> + <hkern u1="Å" u2="c" k="74" /> + <hkern u1="Å" u2="a" k="33" /> + <hkern u1="Å" u2="Z" k="-66" /> + <hkern u1="Å" u2="Y" k="184" /> + <hkern u1="Å" u2="X" k="-25" /> + <hkern u1="Å" u2="W" k="127" /> + <hkern u1="Å" u2="V" k="160" /> + <hkern u1="Å" u2="T" k="168" /> + <hkern u1="Å" u2="Q" k="57" /> + <hkern u1="Å" u2="O" k="57" /> + <hkern u1="Å" u2="J" k="-25" /> + <hkern u1="Å" u2="G" k="57" /> + <hkern u1="Å" u2="C" k="57" /> + <hkern u1="Æ" u2="y" k="41" /> + <hkern u1="Æ" u2="w" k="20" /> + <hkern u1="Æ" u2="v" k="41" /> + <hkern u1="Æ" u2="q" k="41" /> + <hkern u1="Æ" u2="o" k="41" /> + <hkern u1="Æ" u2="j" k="20" /> + <hkern u1="Æ" u2="e" k="41" /> + <hkern u1="Æ" u2="d" k="41" /> + <hkern u1="Æ" u2="c" k="41" /> + <hkern u1="Æ" u2="a" k="41" /> + <hkern u1="Æ" u2="Q" k="41" /> + <hkern u1="Æ" u2="O" k="41" /> + <hkern u1="Æ" u2="G" k="41" /> + <hkern u1="Æ" u2="C" k="41" /> + <hkern u1="Ç" u2="z" k="-33" /> + <hkern u1="Ç" u2="s" k="20" /> + <hkern u1="Ç" u2="q" k="25" /> + <hkern u1="Ç" u2="o" k="25" /> + <hkern u1="Ç" u2="j" k="102" /> + <hkern u1="Ç" u2="g" k="25" /> + <hkern u1="Ç" u2="e" k="25" /> + <hkern u1="Ç" u2="a" k="25" /> + <hkern u1="Ç" u2="Y" k="41" /> + <hkern u1="Ç" u2="." k="41" /> + <hkern u1="Ç" u2="," k="41" /> + <hkern u1="È" u2="z" k="-20" /> + <hkern u1="È" u2="y" k="37" /> + <hkern u1="È" u2="w" k="25" /> + <hkern u1="È" u2="v" k="37" /> + <hkern u1="È" u2="q" k="41" /> + <hkern u1="È" u2="o" k="41" /> + <hkern u1="È" u2="j" k="45" /> + <hkern u1="È" u2="g" k="41" /> + <hkern u1="È" u2="e" k="41" /> + <hkern u1="È" u2="d" k="41" /> + <hkern u1="È" u2="c" k="41" /> + <hkern u1="È" u2="a" k="41" /> + <hkern u1="È" u2="Z" k="-25" /> + <hkern u1="È" u2="Q" k="41" /> + <hkern u1="È" u2="O" k="41" /> + <hkern u1="È" u2="G" k="41" /> + <hkern u1="È" u2="C" k="41" /> + <hkern u1="É" u2="z" k="-20" /> + <hkern u1="É" u2="y" k="37" /> + <hkern u1="É" u2="w" k="25" /> + <hkern u1="É" u2="v" k="37" /> + <hkern u1="É" u2="q" k="41" /> + <hkern u1="É" u2="o" k="41" /> + <hkern u1="É" u2="j" k="45" /> + <hkern u1="É" u2="g" k="41" /> + <hkern u1="É" u2="e" k="41" /> + <hkern u1="É" u2="d" k="41" /> + <hkern u1="É" u2="c" k="41" /> + <hkern u1="É" u2="a" k="41" /> + <hkern u1="É" u2="Z" k="-25" /> + <hkern u1="É" u2="Q" k="41" /> + <hkern u1="É" u2="O" k="41" /> + <hkern u1="É" u2="G" k="41" /> + <hkern u1="É" u2="C" k="41" /> + <hkern u1="Ê" u2="z" k="-20" /> + <hkern u1="Ê" u2="y" k="37" /> + <hkern u1="Ê" u2="w" k="25" /> + <hkern u1="Ê" u2="v" k="37" /> + <hkern u1="Ê" u2="q" k="41" /> + <hkern u1="Ê" u2="o" k="41" /> + <hkern u1="Ê" u2="j" k="45" /> + <hkern u1="Ê" u2="g" k="41" /> + <hkern u1="Ê" u2="e" k="41" /> + <hkern u1="Ê" u2="d" k="41" /> + <hkern u1="Ê" u2="c" k="41" /> + <hkern u1="Ê" u2="a" k="41" /> + <hkern u1="Ê" u2="Z" k="-25" /> + <hkern u1="Ê" u2="Q" k="41" /> + <hkern u1="Ê" u2="O" k="41" /> + <hkern u1="Ê" u2="G" k="41" /> + <hkern u1="Ê" u2="C" k="41" /> + <hkern u1="Ë" u2="z" k="-20" /> + <hkern u1="Ë" u2="y" k="37" /> + <hkern u1="Ë" u2="w" k="25" /> + <hkern u1="Ë" u2="v" k="37" /> + <hkern u1="Ë" u2="q" k="41" /> + <hkern u1="Ë" u2="o" k="41" /> + <hkern u1="Ë" u2="j" k="45" /> + <hkern u1="Ë" u2="g" k="41" /> + <hkern u1="Ë" u2="e" k="41" /> + <hkern u1="Ë" u2="d" k="41" /> + <hkern u1="Ë" u2="c" k="41" /> + <hkern u1="Ë" u2="a" k="41" /> + <hkern u1="Ë" u2="Z" k="-25" /> + <hkern u1="Ë" u2="Q" k="41" /> + <hkern u1="Ë" u2="O" k="41" /> + <hkern u1="Ë" u2="G" k="41" /> + <hkern u1="Ë" u2="C" k="41" /> + <hkern u1="Ì" u2="j" k="66" /> + <hkern u1="Ì" u2="g" k="20" /> + <hkern u1="Í" u2="j" k="66" /> + <hkern u1="Í" u2="g" k="20" /> + <hkern u1="Î" u2="j" k="66" /> + <hkern u1="Î" u2="g" k="20" /> + <hkern u1="Ï" u2="j" k="41" /> + <hkern u1="Ï" u2="g" k="20" /> + <hkern u1="Ð" u2="z" k="20" /> + <hkern u1="Ð" u2="y" k="25" /> + <hkern u1="Ð" u2="x" k="41" /> + <hkern u1="Ð" u2="v" k="25" /> + <hkern u1="Ð" u2="j" k="123" /> + <hkern u1="Ð" u2="Z" k="66" /> + <hkern u1="Ð" u2="Y" k="123" /> + <hkern u1="Ð" u2="X" k="78" /> + <hkern u1="Ð" u2="W" k="49" /> + <hkern u1="Ð" u2="V" k="86" /> + <hkern u1="Ð" u2="T" k="102" /> + <hkern u1="Ð" u2="J" k="61" /> + <hkern u1="Ð" u2="A" k="78" /> + <hkern u1="Ñ" u2="j" k="123" /> + <hkern u1="Ò" u2="y" k="25" /> + <hkern u1="Ò" u2="v" k="25" /> + <hkern u1="Ò" u2="s" k="20" /> + <hkern u1="Ò" u2="j" k="123" /> + <hkern u1="Ò" u2="g" k="41" /> + <hkern u1="Ò" u2="Y" k="123" /> + <hkern u1="Ò" u2="X" k="82" /> + <hkern u1="Ò" u2="W" k="61" /> + <hkern u1="Ò" u2="V" k="82" /> + <hkern u1="Ò" u2="T" k="143" /> + <hkern u1="Ò" u2="J" k="29" /> + <hkern u1="Ò" u2="A" k="57" /> + <hkern u1="Ò" u2="." k="41" /> + <hkern u1="Ò" u2="," k="41" /> + <hkern u1="Ó" u2="y" k="25" /> + <hkern u1="Ó" u2="v" k="25" /> + <hkern u1="Ó" u2="s" k="20" /> + <hkern u1="Ó" u2="j" k="123" /> + <hkern u1="Ó" u2="g" k="41" /> + <hkern u1="Ó" u2="Y" k="123" /> + <hkern u1="Ó" u2="X" k="82" /> + <hkern u1="Ó" u2="W" k="61" /> + <hkern u1="Ó" u2="V" k="82" /> + <hkern u1="Ó" u2="T" k="143" /> + <hkern u1="Ó" u2="J" k="29" /> + <hkern u1="Ó" u2="A" k="57" /> + <hkern u1="Ó" u2="." k="41" /> + <hkern u1="Ó" u2="," k="41" /> + <hkern u1="Ô" u2="y" k="25" /> + <hkern u1="Ô" u2="v" k="25" /> + <hkern u1="Ô" u2="j" k="123" /> + <hkern u1="Ô" u2="g" k="41" /> + <hkern u1="Ô" u2="Y" k="123" /> + <hkern u1="Ô" u2="X" k="82" /> + <hkern u1="Ô" u2="W" k="61" /> + <hkern u1="Ô" u2="V" k="82" /> + <hkern u1="Ô" u2="T" k="143" /> + <hkern u1="Ô" u2="J" k="29" /> + <hkern u1="Ô" u2="A" k="57" /> + <hkern u1="Ô" u2="." k="41" /> + <hkern u1="Ô" u2="," k="41" /> + <hkern u1="Õ" u2="y" k="25" /> + <hkern u1="Õ" u2="v" k="25" /> + <hkern u1="Õ" u2="s" k="20" /> + <hkern u1="Õ" u2="j" k="123" /> + <hkern u1="Õ" u2="g" k="41" /> + <hkern u1="Õ" u2="Y" k="123" /> + <hkern u1="Õ" u2="X" k="82" /> + <hkern u1="Õ" u2="W" k="61" /> + <hkern u1="Õ" u2="V" k="82" /> + <hkern u1="Õ" u2="T" k="143" /> + <hkern u1="Õ" u2="J" k="29" /> + <hkern u1="Õ" u2="A" k="57" /> + <hkern u1="Õ" u2="." k="41" /> + <hkern u1="Õ" u2="," k="41" /> + <hkern u1="Ö" u2="y" k="25" /> + <hkern u1="Ö" u2="v" k="25" /> + <hkern u1="Ö" u2="s" k="20" /> + <hkern u1="Ö" u2="j" k="123" /> + <hkern u1="Ö" u2="g" k="41" /> + <hkern u1="Ö" u2="Y" k="123" /> + <hkern u1="Ö" u2="X" k="82" /> + <hkern u1="Ö" u2="W" k="61" /> + <hkern u1="Ö" u2="V" k="82" /> + <hkern u1="Ö" u2="T" k="143" /> + <hkern u1="Ö" u2="J" k="29" /> + <hkern u1="Ö" u2="A" k="57" /> + <hkern u1="Ö" u2="." k="41" /> + <hkern u1="Ö" u2="," k="41" /> + <hkern u1="Ø" u2="y" k="25" /> + <hkern u1="Ø" u2="v" k="25" /> + <hkern u1="Ø" u2="s" k="20" /> + <hkern u1="Ø" u2="j" k="82" /> + <hkern u1="Ø" u2="Z" k="20" /> + <hkern u1="Ø" u2="Y" k="20" /> + <hkern u1="Ø" u2="X" k="20" /> + <hkern u1="Ø" u2="J" k="70" /> + <hkern u1="Ø" u2="A" k="57" /> + <hkern u1="Ø" u2="." k="41" /> + <hkern u1="Ø" u2="," k="41" /> + <hkern u1="Ù" u2="j" k="61" /> + <hkern u1="Ù" u2="V" k="25" /> + <hkern u1="Ù" u2="J" k="25" /> + <hkern u1="Ú" u2="j" k="61" /> + <hkern u1="Ú" u2="V" k="25" /> + <hkern u1="Ú" u2="J" k="25" /> + <hkern u1="Û" u2="j" k="61" /> + <hkern u1="Û" u2="V" k="25" /> + <hkern u1="Û" u2="J" k="25" /> + <hkern u1="Ü" u2="j" k="61" /> + <hkern u1="Ü" u2="V" k="25" /> + <hkern u1="Ü" u2="J" k="25" /> + <hkern u1="Ý" u2="Ý" k="-20" /> + <hkern u1="Ý" u2="z" k="123" /> + <hkern u1="Ý" u2="v" k="106" /> + <hkern u1="Ý" u2="u" k="168" /> + <hkern u1="Ý" u2="r" k="102" /> + <hkern u1="Ý" u2="o" k="274" /> + <hkern u1="Ý" u2="j" k="143" /> + <hkern u1="Ý" u2="i" k="25" /> + <hkern u1="Ý" u2="g" k="266" /> + <hkern u1="Ý" u2="e" k="274" /> + <hkern u1="Ý" u2="a" k="274" /> + <hkern u1="Ý" u2="Z" k="-25" /> + <hkern u1="Ý" u2="X" k="-25" /> + <hkern u1="Ý" u2="W" k="-20" /> + <hkern u1="Ý" u2="V" k="-25" /> + <hkern u1="Ý" u2="T" k="-20" /> + <hkern u1="Ý" u2="S" k="41" /> + <hkern u1="Ý" u2="Q" k="123" /> + <hkern u1="Ý" u2="O" k="123" /> + <hkern u1="Ý" u2="J" k="246" /> + <hkern u1="Ý" u2="G" k="123" /> + <hkern u1="Ý" u2="C" k="102" /> + <hkern u1="Ý" u2="A" k="184" /> + <hkern u1="Ý" u2="." k="123" /> + <hkern u1="Ý" u2="," k="123" /> + <hkern u1="Þ" u2="y" k="20" /> + <hkern u1="Þ" u2="x" k="20" /> + <hkern u1="Þ" u2="v" k="20" /> + <hkern u1="Þ" u2="s" k="41" /> + <hkern u1="Þ" u2="q" k="41" /> + <hkern u1="Þ" u2="o" k="41" /> + <hkern u1="Þ" u2="g" k="41" /> + <hkern u1="Þ" u2="e" k="41" /> + <hkern u1="Þ" u2="c" k="41" /> + <hkern u1="Þ" u2="a" k="41" /> + <hkern u1="Þ" u2="Z" k="61" /> + <hkern u1="Þ" u2="Y" k="82" /> + <hkern u1="Þ" u2="X" k="61" /> + <hkern u1="Þ" u2="W" k="29" /> + <hkern u1="Þ" u2="V" k="41" /> + <hkern u1="Þ" u2="T" k="86" /> + <hkern u1="Þ" u2="J" k="225" /> + <hkern u1="Þ" u2="A" k="184" /> + <hkern u1="Þ" u2="." k="143" /> + <hkern u1="Þ" u2="," k="143" /> + <hkern u1="ß" u2="y" k="61" /> + <hkern u1="ß" u2="x" k="82" /> + <hkern u1="ß" u2="w" k="41" /> + <hkern u1="ß" u2="v" k="61" /> + <hkern u1="ß" u2="j" k="41" /> + <hkern u1="ß" u2="Y" k="123" /> + <hkern u1="ß" u2="X" k="82" /> + <hkern u1="ß" u2="W" k="41" /> + <hkern u1="ß" u2="V" k="82" /> + <hkern u1="ß" u2="T" k="82" /> + <hkern u1="ß" u2="A" k="41" /> + <hkern u1="à" u2="y" k="33" /> + <hkern u1="à" u2="w" k="29" /> + <hkern u1="à" u2="v" k="31" /> + <hkern u1="à" u2="j" k="61" /> + <hkern u1="á" u2="y" k="33" /> + <hkern u1="á" u2="w" k="29" /> + <hkern u1="á" u2="v" k="33" /> + <hkern u1="á" u2="j" k="61" /> + <hkern u1="â" u2="y" k="33" /> + <hkern u1="â" u2="w" k="29" /> + <hkern u1="â" u2="v" k="33" /> + <hkern u1="â" u2="j" k="61" /> + <hkern u1="ã" u2="y" k="33" /> + <hkern u1="ã" u2="w" k="29" /> + <hkern u1="ã" u2="v" k="33" /> + <hkern u1="ã" u2="j" k="61" /> + <hkern u1="ä" u2="y" k="33" /> + <hkern u1="ä" u2="w" k="29" /> + <hkern u1="ä" u2="v" k="33" /> + <hkern u1="ä" u2="j" k="61" /> + <hkern u1="å" u2="y" k="33" /> + <hkern u1="å" u2="w" k="29" /> + <hkern u1="å" u2="v" k="33" /> + <hkern u1="å" u2="j" k="61" /> + <hkern u1="æ" u2="g" k="20" /> + <hkern u1="ç" u2="z" k="-25" /> + <hkern u1="ç" u2="q" k="20" /> + <hkern u1="ç" u2="o" k="20" /> + <hkern u1="ç" u2="j" k="90" /> + <hkern u1="ç" u2="e" k="20" /> + <hkern u1="ç" u2="d" k="20" /> + <hkern u1="ç" u2="a" k="20" /> + <hkern u1="è" u2="y" k="57" /> + <hkern u1="è" u2="x" k="41" /> + <hkern u1="è" u2="w" k="41" /> + <hkern u1="è" u2="v" k="57" /> + <hkern u1="è" u2="g" k="20" /> + <hkern u1="è" u2="a" k="20" /> + <hkern u1="é" u2="y" k="57" /> + <hkern u1="é" u2="x" k="41" /> + <hkern u1="é" u2="w" k="41" /> + <hkern u1="é" u2="v" k="57" /> + <hkern u1="é" u2="g" k="20" /> + <hkern u1="é" u2="a" k="20" /> + <hkern u1="ê" u2="y" k="57" /> + <hkern u1="ê" u2="x" k="41" /> + <hkern u1="ê" u2="w" k="41" /> + <hkern u1="ê" u2="v" k="57" /> + <hkern u1="ê" u2="g" k="20" /> + <hkern u1="ê" u2="a" k="20" /> + <hkern u1="ë" u2="y" k="57" /> + <hkern u1="ë" u2="x" k="41" /> + <hkern u1="ë" u2="w" k="41" /> + <hkern u1="ë" u2="v" k="57" /> + <hkern u1="ë" u2="g" k="20" /> + <hkern u1="ë" u2="a" k="20" /> + <hkern u1="ì" u2="j" k="49" /> + <hkern u1="í" u2="j" k="49" /> + <hkern u1="î" u2="j" k="49" /> + <hkern u1="ð" u2="z" k="20" /> + <hkern u1="ð" u2="y" k="61" /> + <hkern u1="ð" u2="x" k="61" /> + <hkern u1="ð" u2="w" k="41" /> + <hkern u1="ð" u2="v" k="61" /> + <hkern u1="ð" u2="j" k="41" /> + <hkern u1="ð" u2="g" k="20" /> + <hkern u1="ñ" u2="y" k="41" /> + <hkern u1="ñ" u2="v" k="41" /> + <hkern u1="ñ" u2="j" k="61" /> + <hkern u1="ò" u2="z" k="61" /> + <hkern u1="ò" u2="y" k="74" /> + <hkern u1="ò" u2="x" k="74" /> + <hkern u1="ò" u2="w" k="49" /> + <hkern u1="ò" u2="v" k="74" /> + <hkern u1="ò" u2="j" k="102" /> + <hkern u1="ò" u2="g" k="20" /> + <hkern u1="ò" u2="a" k="20" /> + <hkern u1="ó" u2="z" k="61" /> + <hkern u1="ó" u2="y" k="74" /> + <hkern u1="ó" u2="x" k="74" /> + <hkern u1="ó" u2="w" k="49" /> + <hkern u1="ó" u2="v" k="74" /> + <hkern u1="ó" u2="j" k="102" /> + <hkern u1="ó" u2="g" k="20" /> + <hkern u1="ó" u2="a" k="20" /> + <hkern u1="ô" u2="z" k="61" /> + <hkern u1="ô" u2="y" k="74" /> + <hkern u1="ô" u2="x" k="74" /> + <hkern u1="ô" u2="w" k="49" /> + <hkern u1="ô" u2="v" k="74" /> + <hkern u1="ô" u2="j" k="102" /> + <hkern u1="ô" u2="g" k="20" /> + <hkern u1="ô" u2="a" k="20" /> + <hkern u1="õ" u2="j" k="-20" /> + <hkern u1="õ" u2="g" k="20" /> + <hkern u1="ö" u2="z" k="61" /> + <hkern u1="ö" u2="y" k="74" /> + <hkern u1="ö" u2="x" k="74" /> + <hkern u1="ö" u2="w" k="49" /> + <hkern u1="ö" u2="v" k="74" /> + <hkern u1="ö" u2="j" k="102" /> + <hkern u1="ö" u2="g" k="20" /> + <hkern u1="ö" u2="a" k="20" /> + <hkern u1="ø" u2="z" k="20" /> + <hkern u1="ø" u2="y" k="41" /> + <hkern u1="ø" u2="x" k="41" /> + <hkern u1="ø" u2="w" k="33" /> + <hkern u1="ø" u2="v" k="41" /> + <hkern u1="ø" u2="j" k="102" /> + <hkern u1="ù" u2="j" k="61" /> + <hkern u1="ú" u2="j" k="61" /> + <hkern u1="û" u2="j" k="61" /> + <hkern u1="ü" u2="j" k="61" /> + <hkern u1="ý" u2="ý" k="-20" /> + <hkern u1="ý" u2="z" k="-20" /> + <hkern u1="ý" u2="x" k="-20" /> + <hkern u1="ý" u2="w" k="-20" /> + <hkern u1="ý" u2="v" k="-20" /> + <hkern u1="ý" u2="q" k="61" /> + <hkern u1="ý" u2="o" k="74" /> + <hkern u1="ý" u2="j" k="102" /> + <hkern u1="ý" u2="g" k="66" /> + <hkern u1="ý" u2="e" k="57" /> + <hkern u1="ý" u2="d" k="61" /> + <hkern u1="ý" u2="c" k="53" /> + <hkern u1="ý" u2="a" k="82" /> + <hkern u1="ý" u2="." k="82" /> + <hkern u1="ý" u2="," k="82" /> + <hkern u1="þ" u2="z" k="49" /> + <hkern u1="þ" u2="y" k="57" /> + <hkern u1="þ" u2="x" k="45" /> + <hkern u1="þ" u2="w" k="45" /> + <hkern u1="þ" u2="v" k="57" /> + <hkern u1="þ" u2="j" k="123" /> + <hkern u1="þ" u2="a" k="20" /> + <hkern u1="ÿ" u2="ÿ" k="-20" /> + <hkern u1="ÿ" u2="z" k="-20" /> + <hkern u1="ÿ" u2="x" k="-20" /> + <hkern u1="ÿ" u2="w" k="-20" /> + <hkern u1="ÿ" u2="v" k="-20" /> + <hkern u1="ÿ" u2="q" k="61" /> + <hkern u1="ÿ" u2="o" k="74" /> + <hkern u1="ÿ" u2="j" k="102" /> + <hkern u1="ÿ" u2="g" k="66" /> + <hkern u1="ÿ" u2="e" k="57" /> + <hkern u1="ÿ" u2="d" k="61" /> + <hkern u1="ÿ" u2="c" k="53" /> + <hkern u1="ÿ" u2="a" k="82" /> + <hkern u1="ÿ" u2="." k="82" /> + <hkern u1="ÿ" u2="," k="82" /> + <hkern u1="Œ" u2="y" k="61" /> + <hkern u1="Œ" u2="w" k="41" /> + <hkern u1="Œ" u2="v" k="61" /> + <hkern u1="Œ" u2="q" k="41" /> + <hkern u1="Œ" u2="o" k="41" /> + <hkern u1="Œ" u2="j" k="20" /> + <hkern u1="Œ" u2="e" k="41" /> + <hkern u1="Œ" u2="d" k="41" /> + <hkern u1="Œ" u2="c" k="41" /> + <hkern u1="Œ" u2="a" k="41" /> + <hkern u1="Œ" u2="Q" k="41" /> + <hkern u1="Œ" u2="O" k="41" /> + <hkern u1="Œ" u2="G" k="41" /> + <hkern u1="Œ" u2="C" k="41" /> + <hkern u1="œ" u2="z" k="41" /> + <hkern u1="œ" u2="y" k="61" /> + <hkern u1="œ" u2="x" k="61" /> + <hkern u1="œ" u2="w" k="41" /> + <hkern u1="œ" u2="v" k="61" /> + <hkern u1="œ" u2="q" k="20" /> + <hkern u1="œ" u2="o" k="20" /> + <hkern u1="œ" u2="j" k="41" /> + <hkern u1="œ" u2="g" k="20" /> + <hkern u1="œ" u2="e" k="20" /> + <hkern u1="œ" u2="d" k="20" /> + <hkern u1="œ" u2="c" k="20" /> + <hkern u1="œ" u2="a" k="20" /> + <hkern u1="œ" u2="A" k="41" /> + <hkern u1="Ÿ" u2="Ÿ" k="-20" /> + <hkern u1="Ÿ" u2="z" k="123" /> + <hkern u1="Ÿ" u2="v" k="106" /> + <hkern u1="Ÿ" u2="u" k="168" /> + <hkern u1="Ÿ" u2="r" k="102" /> + <hkern u1="Ÿ" u2="o" k="274" /> + <hkern u1="Ÿ" u2="j" k="143" /> + <hkern u1="Ÿ" u2="i" k="25" /> + <hkern u1="Ÿ" u2="g" k="266" /> + <hkern u1="Ÿ" u2="e" k="274" /> + <hkern u1="Ÿ" u2="a" k="274" /> + <hkern u1="Ÿ" u2="Z" k="-25" /> + <hkern u1="Ÿ" u2="X" k="-25" /> + <hkern u1="Ÿ" u2="W" k="-20" /> + <hkern u1="Ÿ" u2="V" k="-25" /> + <hkern u1="Ÿ" u2="T" k="-20" /> + <hkern u1="Ÿ" u2="S" k="41" /> + <hkern u1="Ÿ" u2="Q" k="123" /> + <hkern u1="Ÿ" u2="O" k="123" /> + <hkern u1="Ÿ" u2="J" k="246" /> + <hkern u1="Ÿ" u2="G" k="123" /> + <hkern u1="Ÿ" u2="C" k="102" /> + <hkern u1="Ÿ" u2="A" k="184" /> + <hkern u1="Ÿ" u2="." k="123" /> + <hkern u1="Ÿ" u2="," k="123" /> + </font> +</defs></svg> diff --git a/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.ttf b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.ttf new file mode 100644 index 0000000000000000000000000000000000000000..55c490a8466842ed2ced309dc9bb5518302fbc1f Binary files /dev/null and b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.ttf differ diff --git a/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff new file mode 100644 index 0000000000000000000000000000000000000000..63afd7ad4dfdebfd6cdbdb3f29a3e4d1079461b5 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff differ diff --git a/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff2 b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..aea99288ec6bb016710aa5605081026491217196 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/19d621e7fe650c7c82424fa2754767da.woff2 differ diff --git a/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.eot b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.eot new file mode 100644 index 0000000000000000000000000000000000000000..a324a13e4a5f44305949ac0e729f390f335d9aad Binary files /dev/null and b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.eot differ diff --git a/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.svg b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.svg new file mode 100644 index 0000000000000000000000000000000000000000..b4a69a4d0916e8581b78a6a49a30341a3448a814 --- /dev/null +++ b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.svg @@ -0,0 +1,2692 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Tue Sep 24 23:12:33 2019 + By www + Copyright (c)2014 Talbot Type. All Rights Reserved +</metadata> +<defs> +<font id="Kamerik205-Bold" horiz-adv-x="536" > + <font-face + font-family="Kamerik 205" + font-weight="700" + font-stretch="normal" + units-per-em="2048" + panose-1="2 11 8 3 3 6 0 2 0 4" + ascent="1638" + descent="-410" + x-height="1186" + cap-height="1536" + bbox="-29 -418 2548 1892" + underline-thickness="57" + underline-position="-148" + unicode-range="U+0020-FB04" + /> +<missing-glyph horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name=".notdef" horiz-adv-x="748" +d="M68 0v1365h544v-1365h-544zM136 68h408v1229h-408v-1229z" /> + <glyph glyph-name="glyph1" horiz-adv-x="0" + /> + <glyph glyph-name="glyph2" horiz-adv-x="682" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="552" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="548" +d="M117 143q0 64 46 109t111 45t111.5 -45t46.5 -109q0 -67 -46.5 -112t-111.5 -45t-111 45t-46 112zM123 418v1118h260v-1118h-260z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="632" +d="M102 977v559h150v-559h-150zM383 977v559h147v-559h-147z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1269" +d="M41 524v138h328l45 210h-373v140h401l111 524h141l-110 -524h209l110 524h141l-110 -524h295v-140h-328l-45 -210h373v-138h-402l-110 -524h-142l115 524h-211l-112 -524h-138l111 524h-299zM510 662h209l45 210h-211z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="1189" +d="M82 428h301q0 -87 60.5 -149t150.5 -62t150.5 60.5t60.5 150.5q0 89 -61 150t-150 61q-225 0 -364.5 131t-139.5 346q0 180 96.5 283.5t266.5 134.5v125h278v-125q361 -60 361 -438h-295q0 101 -57 162t-146 61t-145 -56t-56 -147q0 -89 55.5 -142.5t145.5 -53.5 +q225 0 369.5 -137.5t144.5 -354.5q0 -176 -107.5 -300.5t-269.5 -156.5v-127h-278v127q-159 31 -265 159t-106 298z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="1284" +d="M82 1292q0 116 84 197.5t199 81.5q76 0 141 -37.5t102 -99.5q37 -66 111 -66q39 0 71.5 22t47.5 58l51 123l141 -60l-645 -1546l-141 60l497 1192h-22q-43 0 -80 12q-24 -94 -100 -154.5t-174 -60.5q-115 0 -199 81t-84 197zM238 1292q0 -53 37.5 -90t89.5 -37 +q54 0 91.5 36.5t37.5 90.5t-37.5 91.5t-91.5 37.5q-51 0 -89 -37.5t-38 -91.5zM641 246q0 115 83 196.5t198 81.5q117 0 198.5 -81t81.5 -197q0 -117 -81.5 -199t-198.5 -82q-115 0 -198 82.5t-83 198.5zM797 246q0 -54 37 -91.5t88 -37.5q54 0 89.5 37.5t35.5 91.5 +q0 53 -36 90t-89 37q-51 0 -88 -37.5t-37 -89.5z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="1366" +d="M82 477q0 134 72.5 247.5t185.5 190.5q-104 132 -104 254q0 169 122.5 285.5t294.5 116.5t295 -116.5t123 -285.5q0 -164 -125.5 -282.5t-292.5 -118.5q-118 0 -193 -77t-75 -193q0 -118 74.5 -196.5t193.5 -78.5q114 0 193.5 86.5t79.5 198.5v86q0 148 75 231.5 +t218 83.5h86v-270h-86q-14 0 -25.5 -11t-11.5 -24v-297q0 -15 11.5 -26t25.5 -11h86v-270h-86q-127 0 -213 104q-146 -139 -353 -139q-167 0 -296 60t-202 177t-73 275zM508 1167q0 -60 43 -102.5t102 -42.5q58 0 102 43t44 102q0 57 -44.5 101.5t-101.5 44.5 +q-58 0 -101.5 -44.5t-43.5 -101.5z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="354" +d="M102 977v559h150v-559h-150z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="690" +d="M164 588q0 261 63 517.5t179 465.5h223q-129 -194 -192.5 -450.5t-63.5 -532.5q0 -274 64 -527.5t192 -445.5h-223q-115 208 -178.5 463t-63.5 510z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="690" +d="M61 -385q128 192 192 445.5t64 527.5q0 276 -63.5 532.5t-192.5 450.5h224q115 -209 178 -465.5t63 -517.5q0 -256 -63.5 -510.5t-177.5 -462.5h-224z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="788" +d="M164 1268l121 57l-121 53l69 117l107 -78l-12 133h135l-12 -133l108 78l66 -117l-121 -53l121 -57l-66 -115l-108 76l12 -133h-135l12 133l-107 -76z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="1392" +d="M102 487v209h492v490h209v-490h487v-209h-487v-487h-209v487h-492z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="561" +d="M72 141q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -46.5t46.5 -111.5v-151q0 -98 -69 -168t-166 -70v133q41 0 72 30t32 73q-10 -4 -27 -4q-65 0 -111 46t-46 111z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="952" +d="M143 487v209h666v-209h-666z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="561" +d="M72 141q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -46.5t46.5 -111.5q0 -64 -46.5 -110.5t-111.5 -46.5t-111 46t-46 111z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="1028" +d="M123 25l643 1546l139 -60l-643 -1546z" /> + <glyph glyph-name="zero" unicode="0" horiz-adv-x="1312" +d="M106 504v526q0 155 75 279.5t200.5 193t275.5 68.5q149 0 274 -68.5t200 -193t75 -279.5v-526q0 -155 -75 -279t-200 -192t-274 -68q-150 0 -275.5 68t-200.5 192t-75 279zM397 483q0 -108 76 -184t184 -76q107 0 182.5 76.5t75.5 183.5v568q0 108 -75.5 185t-182.5 77 +q-108 0 -184 -77t-76 -185v-568z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="827" +d="M102 1083v279l291 174h291v-1536h-291v1235l-6 6z" /> + <glyph glyph-name="two" unicode="2" horiz-adv-x="1220" +d="M82 987v68q0 230 141 373t381 143q242 0 388.5 -135t146.5 -361q0 -110 -60 -223.5t-143 -192.5l-395 -374l2 -6h551v-279h-971v279l631 589q39 39 60.5 94.5t21.5 112.5q0 107 -59.5 172.5t-172.5 65.5q-112 0 -173.5 -74.5t-61.5 -183.5v-68h-287z" /> + <glyph glyph-name="three" unicode="3" horiz-adv-x="1267" +d="M78 438v17h299q0 -111 63 -171.5t189 -60.5q254 0 254 221q0 106 -65.5 164t-188.5 58h-107v276h107q200 0 200 186q0 96 -47 140.5t-153 44.5q-104 0 -152.5 -49t-48.5 -146h-299v17q0 209 130.5 322.5t369.5 113.5q504 0 504 -426q0 -118 -55.5 -203t-149.5 -125v-8 +q117 -42 187.5 -142t70.5 -239q0 -230 -145 -346.5t-412 -116.5q-262 0 -406.5 125t-144.5 348z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="1216" +d="M41 279v278l672 979h291v-979h172v-278h-172v-279h-291v279h-672zM354 563l2 -6h357v530l-6 3z" /> + <glyph glyph-name="five" unicode="5" horiz-adv-x="1284" +d="M82 483h289q0 -108 78 -184t186 -76q109 0 186.5 76t77.5 184q0 109 -77.5 185.5t-186.5 76.5q-59 0 -113 -25t-92 -67l-268 47l143 836h735v-279h-501l-39 -288l6 -4q103 34 194 34q215 0 358.5 -146.5t143.5 -369.5q0 -244 -155.5 -381t-411.5 -137q-243 0 -398 141 +t-155 377z" /> + <glyph glyph-name="six" unicode="6" horiz-adv-x="1288" +d="M82 487q0 75 19.5 154t54.5 137l458 758h322l-318 -530l3 -2q20 2 38 2q108 0 208 -38.5t175 -106t119.5 -165t44.5 -209.5q0 -153 -76 -273t-204 -184.5t-283 -64.5q-154 0 -281.5 64.5t-203.5 184.5t-76 273zM385 487q0 -109 75 -186.5t183 -77.5t184 77.5t76 186.5 +q0 107 -76 184t-184 77t-183 -77t-75 -184z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="1138" +d="M53 1257v279h1024v-279l-516 -1257h-315l530 1251l-2 6h-721z" /> + <glyph glyph-name="eight" unicode="8" horiz-adv-x="1314" +d="M82 436q0 133 79 230.5t197 138.5v8q-96 40 -159.5 124t-63.5 198q0 212 142.5 324t379.5 112q236 0 379.5 -112.5t143.5 -323.5q0 -114 -64 -198t-160 -124v-8q119 -41 198 -138t79 -231q0 -152 -74.5 -259.5t-203 -159.5t-298.5 -52q-260 0 -417.5 122t-157.5 349z +M385 446q0 -111 73 -167t199 -56t199.5 56t73.5 167q0 112 -73.5 168t-199.5 56t-199 -56t-73 -168zM434 1124q0 -96 60 -144t163 -48t163.5 48t60.5 144q0 95 -60.5 142t-163.5 47t-163 -47t-60 -142z" /> + <glyph glyph-name="nine" unicode="9" horiz-adv-x="1288" +d="M82 1049q0 153 76 273t204 184.5t283 64.5q154 0 281.5 -64.5t203.5 -184.5t76 -273q0 -76 -19 -154.5t-54 -136.5l-459 -758h-322l318 530l-2 2q-20 -2 -39 -2q-108 0 -208 38.5t-175 106t-119.5 165t-44.5 209.5zM385 1049q0 -107 76 -184t184 -77t183 77t75 184 +q0 109 -75 186.5t-183 77.5t-184 -77.5t-76 -186.5z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="561" +d="M72 141q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -46.5t46.5 -111.5q0 -64 -46.5 -110.5t-111.5 -46.5t-111 46t-46 111zM72 1044q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -47t46.5 -111t-46.5 -110.5t-111.5 -46.5t-111 46.5t-46 110.5z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="561" +d="M72 141q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -46.5t46.5 -111.5v-151q0 -98 -69 -168t-166 -70v133q41 0 72 30t32 73q-10 -4 -27 -4q-65 0 -111 46t-46 111zM72 1044q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -47t46.5 -111t-46.5 -110.5t-111.5 -46.5t-111 46.5 +t-46 110.5z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="862" +d="M82 487v209l698 490v-256l-497 -332v-10l497 -332v-256z" /> + <glyph glyph-name="equal" unicode="=" horiz-adv-x="1390" +d="M102 315v209h1186v-209h-1186zM102 664v208h1186v-208h-1186z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="862" +d="M82 0v256l498 332v10l-498 332v256l698 -490v-209z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="1249" +d="M82 1053q0 230 149.5 375t384.5 145q237 0 394 -146t157 -374q0 -195 -121.5 -329.5t-291.5 -148.5v-163h-275v385h137q109 0 178.5 73.5t69.5 182.5q0 108 -70 184t-178 76t-177.5 -76t-69.5 -184h-287zM459 141q0 65 45.5 111.5t111.5 46.5q64 0 110 -46.5t46 -111.5 +t-46 -111t-110 -46q-66 0 -111.5 46t-45.5 111z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="1792" +d="M82 768q0 217 108 402t293.5 293t403.5 108q217 0 402 -108t293 -293t108 -402v-78q0 -133 -95 -228t-229 -95t-223 92q-114 -90 -256 -90q-166 0 -285 117t-119 282t119 282t285 117t283.5 -116.5t117.5 -282.5v-86q3 -30 25.5 -52t52.5 -22q34 0 57 24t23 58v78 +q0 113 -44.5 217t-119.5 179t-178.5 120t-216.5 45q-114 0 -217 -45t-177.5 -120.5t-118.5 -179t-44 -216.5t44 -216.5t118.5 -179t177.5 -120.5t217 -45q125 0 250 61l108 -219q-173 -84 -358 -84q-218 0 -403.5 108t-293.5 293t-108 402zM731 768q0 -65 46 -111.5 +t110 -46.5t109.5 46.5t45.5 111.5t-45.5 111.5t-109.5 46.5t-110 -46.5t-46 -111.5z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM541 557h377l-181 627h-16z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="1421" +d="M123 0v1536h690q125 0 229.5 -53t166 -149.5t61.5 -215.5q0 -193 -193 -297q49 -19 92.5 -49.5t83 -75t63 -107.5t23.5 -136q0 -127 -66 -231.5t-178.5 -163t-246.5 -58.5h-725zM414 279h434q79 0 133.5 58t54.5 138q0 79 -54.5 137t-133.5 58h-434v-391zM414 932h399 +q64 0 109 48.5t45 113.5q0 67 -45 115t-109 48h-399v-325z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="1738" +d="M72 768q0 224 110 409t298.5 289.5t414.5 104.5q179 0 340 -69.5t277 -202t155 -304.5h-299q-67 136 -194 223t-279 87q-141 0 -261.5 -73.5t-190.5 -197.5t-70 -266q0 -143 70 -267t190.5 -197t261.5 -73q152 0 279 86.5t194 223.5h299q-39 -172 -155 -304.5t-277 -202 +t-340 -69.5q-226 0 -414.5 104.5t-298.5 289.5t-110 409z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="1517" +d="M123 0v1536h534q164 0 310 -58t251.5 -159t166.5 -244t61 -307t-61 -307t-166.5 -244t-251.5 -159t-310 -58h-534zM414 279h243q201 0 343.5 143.5t142.5 345.5q0 132 -65 244.5t-177 178.5t-244 66h-243v-978z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="1323" +d="M123 0v1536h1128v-279h-837v-348h696v-278h-696v-352h837v-279h-1128z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="1245" +d="M123 0v1536h1091v-279h-800v-348h661v-278h-661v-631h-291z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="1800" +d="M72 768q0 169 65 318t177 255.5t268.5 168t332.5 61.5q166 0 321 -61t272.5 -180t158.5 -273h-315q-57 112 -173 180t-264 68q-151 0 -276 -74t-194.5 -197t-69.5 -266q0 -107 40.5 -206t109 -171.5t164.5 -116t202 -43.5q178 0 321.5 117t171.5 283h-469v278h752v-909 +h-270v248h-8q-73 -126 -218 -204.5t-331 -78.5q-155 0 -296.5 62t-245 168t-165 255.5t-61.5 317.5z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="1452" +d="M123 0v1536h291v-627h624v627h291v-1536h-291v631h-624v-631h-291z" /> + <glyph glyph-name="I" unicode="I" +d="M123 0v1536h291v-1536h-291z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="1134" +d="M41 440h287q0 -92 54 -150.5t142 -58.5q91 0 144 57.5t53 151.5v1096h291v-1096q0 -220 -132.5 -347.5t-355.5 -127.5t-353 127t-130 348z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="1431" +d="M123 0v1536h291v-711l618 711h369l-668 -768l668 -768h-369l-483 553l-135 -154v-399h-291z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="1210" +d="M123 0v1536h291v-1257h766v-279h-1057z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="1802" +d="M123 0v1536h291l483 -1149h8l486 1149h288v-1536h-288l2 840h-7l-342 -840h-284l-342 840h-6l2 -840h-291z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="1452" +d="M123 0v1536h291l620 -1026h4v1026h291v-1536h-291l-620 1024h-4v-1024h-291z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="1411" +d="M123 0v1536h676q148 0 271.5 -67.5t196 -188t72.5 -268.5t-72.5 -268.5t-196 -188.5t-271.5 -68h-385v-487h-291zM414 766h385q99 0 168 72t69 174t-69 173.5t-168 71.5h-385v-491z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="1810" +d="M72 774q0 222 110 405t298.5 286.5t414.5 103.5q169 0 321 -62.5t262 -168t175 -253t65 -311.5q0 -152 -70 -270t-192 -219l6 -9h256v-276h-823q-170 0 -321.5 58t-262 159t-175 246t-64.5 311zM375 774q0 -139 69.5 -255t189 -182.5t261.5 -66.5q139 0 258.5 65 +t190.5 181.5t71 257.5q0 105 -40.5 201.5t-110 166.5t-166 112t-203.5 42q-106 0 -202.5 -42t-166 -112t-110.5 -166.5t-41 -201.5z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="1421" +d="M123 0v1536h676q148 0 271.5 -67.5t196 -188t72.5 -268.5q0 -162 -85.5 -287.5t-225.5 -187.5l268 -537h-323l-244 487h-315v-487h-291zM414 766h385q99 0 168 72t69 174t-69 173.5t-168 71.5h-385v-491z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="1312" +d="M82 463h287q0 -105 79 -175.5t201 -70.5q124 0 201.5 63.5t77.5 163.5q0 59 -28 100t-75.5 64t-109 38.5t-129.5 29.5t-135.5 31.5t-129 49.5t-109 78t-75.5 123t-28 179q0 136 72 235.5t193 149t275 49.5q156 0 278 -53t194.5 -159t72.5 -251h-287q0 89 -74.5 150 +t-183.5 61q-112 0 -174.5 -48.5t-62.5 -133.5q0 -57 28 -96.5t75.5 -61.5t109 -38t129.5 -30.5t135.5 -32.5t129 -51t109 -79.5t75.5 -124t28 -179.5q0 -148 -76.5 -258t-207.5 -165.5t-298 -55.5q-254 0 -410.5 134.5t-156.5 363.5z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="1261" +d="M31 1257v279h1200v-279h-455v-1257h-291v1257h-454z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="1470" +d="M123 535v1001h291v-1008q0 -134 91 -215.5t230 -81.5t230.5 81.5t91.5 215.5v1008h291v-1001q0 -173 -80 -303.5t-218.5 -198.5t-314.5 -68q-270 0 -441 154.5t-171 415.5z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="1441" +d="M31 1536h305l381 -1110h8l381 1110h305l-549 -1536h-282z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="2052" +d="M31 1536h297l274 -1032h8l271 1032h290l271 -1032h8l274 1032h297l-430 -1536h-286l-273 1030h-8l-274 -1030h-287z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="1419" +d="M31 0l501 768l-501 768h348l328 -528h8l325 528h349l-502 -768l502 -768h-349l-325 526h-8l-328 -526h-348z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="1464" +d="M31 1536h344l356 -596h8l351 596h344l-553 -891v-645h-291v645z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1308" +d="M61 0v279l824 974v4h-824v279h1186v-279l-821 -974v-4h821v-279h-1186z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="643" +d="M164 -350v1886h418v-193h-209v-1501h209v-192h-418z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="1028" +d="M123 1511l139 60l643 -1546l-139 -60z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="643" +d="M61 -158h209v1501h-209v193h418v-1886h-418v192z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="1224" +d="M123 768l385 768h209l385 -768h-236l-250 537h-4l-254 -537h-235z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="1062" +d="M0 -186h1186v-52h-1186v52z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="718" +d="M184 1401v170l351 -121v-135z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="1490" +d="M123 0v1536h291v-522h4q153 207 395 207q175 0 311.5 -82t210.5 -224.5t74 -320.5q0 -179 -74 -322t-210.5 -225t-311.5 -82q-241 0 -395 209h-4v-174h-291zM414 594q0 -149 98 -256t248 -107q149 0 247.5 107.5t98.5 255.5q0 146 -98.5 253t-247.5 107 +q-150 0 -248 -106.5t-98 -253.5z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="1413" +d="M82 594q0 178 81.5 321.5t230.5 225.5t337 82q253 0 414.5 -130.5t206.5 -357.5h-297q-42 105 -123 170.5t-201 65.5q-157 0 -252.5 -107t-95.5 -270t95.5 -270t252.5 -107q120 0 201 65.5t123 170.5h297q-44 -227 -205.5 -357.5t-415.5 -130.5q-188 0 -337 82 +t-230.5 225.5t-81.5 321.5z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="1490" +d="M82 594q0 178 74 320.5t210.5 224.5t311.5 82q242 0 395 -207h4v522h291v-1536h-291v174h-4q-154 -209 -395 -209q-175 0 -311.5 82t-210.5 225t-74 322zM385 594q0 -148 98.5 -255.5t247.5 -107.5q150 0 248 107t98 256q0 147 -98 253.5t-248 106.5q-149 0 -247.5 -107 +t-98.5 -253z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="1447" +d="M82 594q0 175 87 319.5t235.5 226t324.5 81.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-175 0 -322.5 82 +t-234 227t-86.5 320zM397 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="710" +d="M61 961v225h107v41q0 150 92 229.5t256 79.5h105v-238h-91q-29 0 -50 -21t-21 -50v-41h162v-225h-162v-961h-291v961h-107z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="1304" +d="M74 -27q0 79 84 179q-72 79 -72 159q0 99 67 169t193 83v8q-55 38 -94 105.5t-39 140.5q0 175 124 289.5t316 114.5q161 0 279 -97q73 97 184 97h80v-211h-80q-30 0 -44 -16t-11 -40q1 -7 16 -54t15 -83q0 -181 -117.5 -283t-321.5 -102h-39q-74 0 -108 -1t-76 -8.5 +t-58 -25.5t-16 -49q0 -36 31 -55q93 29 266 29q277 0 427.5 -85.5t150.5 -263.5q0 -97 -40.5 -167t-118 -111.5t-181 -60.5t-238.5 -19q-136 0 -239.5 19t-181 60.5t-118 111.5t-40.5 167zM377 -27q0 -71 67.5 -100t208.5 -29q140 0 207.5 29t67.5 100q0 72 -69 104t-206 32 +q-139 0 -207.5 -32t-68.5 -104zM496 817q0 -63 46 -108t111 -45q63 0 109.5 45t46.5 108t-46.5 109.5t-109.5 46.5q-64 0 -110.5 -46.5t-46.5 -109.5z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="1341" +d="M123 0v1536h291v-498q1 0 2 -1t2 -1l2 2q53 77 142 130t198 53q207 0 333 -139t126 -365v-717h-291v680q0 109 -74.5 185.5t-181.5 76.5q-108 0 -183 -76.5t-75 -185.5v-680h-291z" /> + <glyph glyph-name="i" unicode="i" +d="M106 1411q0 66 48 113t114 47t114 -47t48 -113q0 -67 -47.5 -113.5t-114.5 -46.5t-114.5 46.5t-47.5 113.5zM123 0v1186h291v-1186h-291z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="585" +d="M37 -113h67q29 0 50.5 21.5t21.5 50.5v1227h291v-1227q0 -150 -92 -229.5t-256 -79.5h-82v237zM160 1411q-1 65 47 112.5t115 47.5q66 0 113.5 -47t47.5 -113q0 -67 -47.5 -113.5t-113.5 -46.5q-67 0 -114.5 46.5t-47.5 113.5z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="1286" +d="M123 0v1536h291v-840l460 490h388l-527 -551l527 -635h-365l-356 434l-127 -139v-295h-291z" /> + <glyph glyph-name="l" unicode="l" +d="M123 0v1536h291v-1536h-291z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="1945" +d="M123 0v1186h268v-162h4q115 197 310 197q201 0 331 -205q63 86 161.5 145.5t199.5 59.5q197 0 311.5 -135t114.5 -353v-733h-291v745q0 88 -59.5 148.5t-147.5 60.5q-86 0 -146.5 -60.5t-60.5 -148.5v-745h-291v745q0 88 -59.5 148.5t-146.5 60.5q-86 0 -146.5 -60.5 +t-60.5 -148.5v-745h-291z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="1345" +d="M123 0v1186h268v-170h4q49 91 144 148t223 57q204 0 332.5 -140.5t128.5 -363.5v-717h-291v692q0 109 -75.5 185.5t-182.5 76.5q-109 0 -184.5 -76.5t-75.5 -185.5v-692h-291z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="1490" +d="M123 -350v1536h291v-174h4q154 209 395 209q175 0 311.5 -82t210.5 -225t74 -322q0 -178 -74 -320.5t-210.5 -224.5t-311.5 -82q-242 0 -395 207h-4v-522h-291zM414 592q0 -147 98 -254t248 -107q149 0 247.5 107.5t98.5 253.5q0 148 -98.5 255t-247.5 107 +q-150 0 -248 -106.5t-98 -255.5z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="1490" +d="M82 592q0 179 74 322t210.5 225t311.5 82q241 0 395 -209h4v174h291v-1536h-291v522h-4q-153 -207 -395 -207q-175 0 -311.5 82t-210.5 224.5t-74 320.5zM385 592q0 -146 98.5 -253.5t247.5 -107.5q150 0 248 107t98 254q0 149 -98 255.5t-248 106.5q-149 0 -247.5 -107 +t-98.5 -255z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="798" +d="M123 0v1186h258v-164h4q117 199 324 199h24v-295h-67q-104 0 -179.5 -71.5t-83.5 -174.5v-680h-280z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="1200" +d="M82 367h280q0 -73 64 -119.5t164 -46.5q104 0 166.5 35.5t62.5 101.5q0 44 -24 72t-65 42t-94.5 22t-112 15.5t-117 19t-112 35.5t-94.5 61.5t-65 101.5t-24 151q0 177 127 270t352 93q228 0 358.5 -106t130.5 -296h-278q0 79 -57.5 123.5t-153.5 44.5 +q-91 0 -137.5 -35.5t-46.5 -93.5q0 -41 24.5 -68t65.5 -40.5t94.5 -22.5t112.5 -17.5t118 -21t112.5 -38t94.5 -63t65.5 -101t24.5 -148.5q0 -95 -40.5 -167.5t-113 -117t-167 -66.5t-207.5 -22q-230 0 -369 109.5t-139 292.5z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="704" +d="M51 961v225h109v268h291v-268h202v-225h-202v-631q0 -30 20.5 -51t48.5 -21h133v-258h-133q-161 0 -260.5 95t-99.5 255v611h-109z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="1345" +d="M123 469v717h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-204 0 -332.5 140.5t-128.5 363.5z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="1261" +d="M31 1186h301l299 -795h4l295 795h301l-461 -1186h-278z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="1892" +d="M31 1186h301l233 -735h4l236 735h280l240 -735h4l232 735h301l-398 -1186h-278l-238 721h-4l-239 -721h-279z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="1269" +d="M31 0l432 594l-432 592h346l256 -357h4l256 357h346l-430 -592l430 -594h-346l-256 358h-4l-256 -358h-346z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="1259" +d="M31 1186h301l297 -772h4l295 772h301l-594 -1536h-299l145 377z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="1167" +d="M78 0v266l620 649v5h-620v266h1012v-266l-619 -650v-4h619v-266h-1012z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="784" +d="M164 487v209h72q42 0 72 32t30 75v418q0 132 92 223.5t223 91.5h70v-193h-70q-43 0 -74.5 -38t-31.5 -84v-418q0 -129 -125 -205v-8q125 -76 125 -205v-420q0 -46 31.5 -84.5t74.5 -38.5h70v-192h-70q-131 0 -223 92t-92 223v420q0 42 -30 72t-72 30h-72z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="634" +d="M246 -350v1886h143v-1886h-143z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="784" +d="M61 -158h70q43 0 75 38.5t32 84.5v420q0 129 124 205v8q-124 76 -124 205v418q0 46 -32 84t-75 38h-70v193h70q131 0 223 -91.5t92 -223.5v-418q0 -43 30.5 -75t72.5 -32h72v-209h-72q-43 0 -73 -30.5t-30 -71.5v-420q0 -131 -92 -223t-223 -92h-70v192z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="1067" +d="M123 504q2 69 36.5 130t98.5 95q92 54 191.5 26.5t154.5 -122.5q22 -37 59 -47.5t74 10.5q47 21 47 88h160q0 -69 -35 -129.5t-98 -95.5q-94 -54 -193 -27t-153 121q-22 37 -59.5 48.5t-73.5 -9.5q-47 -21 -47 -88h-162z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="1024" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="548" +d="M117 1393q0 67 46 112t111 45t111.5 -45t46.5 -112q0 -64 -46.5 -109t-111.5 -45t-111 45t-46 109zM123 0l41 1118h219l41 -1118h-301z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="1413" +d="M82 594q0 235 139 403t369 211v154h282v-152q194 -33 317.5 -157.5t162.5 -317.5h-297q-42 105 -123 170.5t-201 65.5q-157 0 -252.5 -107t-95.5 -270t95.5 -270t252.5 -107q120 0 201 65.5t123 170.5h297q-37 -193 -161.5 -318t-318.5 -158v-151h-282v154 +q-230 41 -369 209.5t-139 404.5z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="1304" +d="M82 651v267h166v161q0 227 132 358.5t355 131.5t355.5 -131.5t132.5 -358.5h-279q0 104 -56.5 169t-152.5 65q-97 0 -153 -64.5t-56 -169.5v-161h394v-267h-394v-295q144 3 236 -96q46 -36 86.5 -32t67.5 38.5t26 81.5h281q0 -151 -94 -255.5t-238 -125.5 +q-90 -11 -177.5 16.5t-154.5 94.5q-29 29 -72 29t-75 -29l-109 -113l-197 199l109 110q15 15 33 27v350h-166z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="1437" +d="M123 143l135 136q-96 142 -96 315q0 171 96 313l-133 135l147 148l134 -135q145 98 315 98q168 0 313 -98l133 133l148 -148l-133 -133q98 -145 98 -313q0 -170 -98 -315l133 -132l-148 -149l-133 133q-138 -96 -313 -96q-173 0 -315 96l-136 -135zM367 594 +q0 -146 104 -250t250 -104t250 104t104 250t-104 250t-250 104t-250 -104t-104 -250z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="1331" +d="M31 1536h334l299 -500h4l301 500h331l-284 -473h162v-174h-269l-63 -105h332v-174h-367v-610h-291v610h-366v174h333l-65 105h-268v174h170z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="454" +d="M123 -102v591h209v-591h-209zM123 698v594h209v-594h-209z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="1179" +d="M102 594q0 159 152 293q-74 65 -113 128.5t-39 153.5q0 192 133 297t353 105q215 0 344 -109t129 -305h-281q0 160 -192 160q-92 0 -140.5 -40.5t-48.5 -119.5q0 -66 54.5 -105.5t134.5 -39.5q224 0 356.5 -111t132.5 -307q0 -160 -151 -293q74 -65 112.5 -129t38.5 -154 +q0 -192 -132.5 -296.5t-352.5 -104.5q-215 0 -344 109t-129 305h280q0 -79 49.5 -119.5t143.5 -40.5q91 0 139.5 40.5t48.5 119.5q0 66 -54 105.5t-134 39.5q-224 0 -357 111t-133 307zM399 594q0 -77 51 -123.5t142 -46.5q88 0 138 47t50 123q0 77 -51 123.5t-141 46.5 +q-88 0 -138.5 -47t-50.5 -123z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="675" +d="M31 1466q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM436 1466q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="1419" +d="M82 594q0 170 84 314.5t228.5 228.5t314.5 84q171 0 315.5 -84t228.5 -228.5t84 -314.5q0 -171 -84 -316t-228.5 -229t-315.5 -84q-170 0 -314.5 84t-228.5 229t-84 316zM160 594q0 -112 43.5 -215t116.5 -178t175 -119.5t214 -44.5q114 0 216.5 44.5t175.5 119.5 +t116 177.5t43 215.5t-43 215.5t-116 177t-175.5 118.5t-216.5 44q-112 0 -214 -44t-175.5 -118.5t-116.5 -177.5t-43 -215zM289 594q0 173 123.5 296.5t296.5 123.5q176 0 299 -123l-109 -109q-79 82 -190 82q-110 0 -187.5 -79.5t-77.5 -190.5t77.5 -191.5t187.5 -80.5 +q112 0 190 81l109 -108q-123 -123 -299 -123q-174 0 -297 123t-123 299z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="768" +d="M82 1139q0 90 59.5 138t180.5 48h178v43q0 50 -29 67t-92 17q-62 0 -91.5 -17t-29.5 -67h-139q0 101 69.5 152t190.5 51q123 0 194.5 -51t71.5 -152v-407h-145v86h-2q-29 -44 -75.5 -74.5t-107.5 -30.5q-233 0 -233 197zM233 1143q0 -38 24.5 -54t90.5 -16q69 0 110.5 27 +t41.5 67v43h-178q-89 0 -89 -67z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="1038" +d="M82 594l436 434v-295l-153 -135v-8l153 -137v-295zM520 594l436 434v-295l-153 -135v-8l153 -137v-295z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="909" +d="M123 487v209h663v-346h-208v137h-455z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="952" +d="M143 487v209h666v-209h-666z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="653" +d="M82 1327q0 100 72.5 172t173.5 72q100 0 171.5 -72t71.5 -172q0 -101 -71.5 -173.5t-171.5 -72.5q-101 0 -173.5 72.5t-72.5 173.5zM113 1327q0 -91 62 -154t153 -63q89 0 151 63t62 154q0 89 -62 152t-151 63q-90 0 -152.5 -62.5t-62.5 -152.5zM215 1174v313h141 +q43 0 73 -29t30 -69q0 -65 -62 -95l62 -120h-64l-57 114h-68v-114h-55zM270 1343h86q20 0 31.5 13.5t11.5 32.5q0 18 -11.5 29.5t-31.5 11.5h-86v-87z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="628" +d="M123 1376v160h383v-160h-383z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="630" +d="M102 1364q0 87 63 147t150 60q88 0 150.5 -60t62.5 -147q0 -86 -62.5 -146.5t-150.5 -60.5q-87 0 -150 60.5t-63 146.5zM229 1364q0 -36 25 -61t61 -25q37 0 61.5 24.5t24.5 61.5q0 36 -25 61t-61 25q-35 0 -60.5 -25.5t-25.5 -60.5z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="1392" +d="M102 0v209h1188v-209h-1188zM102 664v208h492v314h209v-314h487v-208h-487v-314h-209v314h-492z" /> + <glyph glyph-name="uni00B2" unicode="²" horiz-adv-x="692" +d="M82 1262v32q0 116 70 187t190 71q122 0 195 -66.5t73 -180.5q0 -54 -30.5 -110.5t-71.5 -96.5l-197 -189v-2h277v-139h-486v139l316 295q41 41 41 103q0 54 -30 86t-87 32q-56 0 -86.5 -36.5t-30.5 -92.5v-32h-143z" /> + <glyph glyph-name="uni00B3" unicode="³" horiz-adv-x="718" +d="M82 987v8h149q0 -114 127 -114t127 110q0 53 -33 82t-94 29h-53v137h53q101 0 101 94q0 48 -24 70t-77 22q-100 0 -100 -98h-149v8q0 105 64.5 162t184.5 57q252 0 252 -213q0 -59 -28 -101t-74 -62v-4q59 -22 94 -72t35 -119q0 -115 -73 -173t-206 -58q-131 0 -203.5 62 +t-72.5 173z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="718" +d="M184 1315v135l351 121v-170z" /> + <glyph glyph-name="uni00B5" unicode="µ" horiz-adv-x="1345" +d="M123 -350v1536h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-86 0 -170 64v-379h-291z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="1241" +d="M51 1118q0 181 128 299.5t313 118.5h626v-1536h-209v1257h-137v-1257h-209v696h-71q-185 0 -313 120.5t-128 301.5zM354 1118q0 -60 40.5 -101.5t97.5 -41.5h71v282h-71q-57 0 -97.5 -41t-40.5 -98z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="561" +d="M72 594q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -47t46.5 -111t-46.5 -111t-111.5 -47q-64 0 -110.5 46.5t-46.5 111.5z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="776" +d="M205 -248h100q0 -35 24 -58.5t58 -23.5q35 0 58.5 23.5t23.5 58.5q0 33 -23.5 55.5t-58.5 22.5q-45 0 -65 -29l-89 17l29 182h94l-14 -92q92 30 160.5 -18.5t68.5 -137.5q0 -80 -50.5 -125t-133.5 -45q-79 0 -130.5 46.5t-51.5 123.5z" /> + <glyph glyph-name="uni00B9" unicode="¹" horiz-adv-x="475" +d="M82 1311v139l145 86h146v-768h-146v618l-4 3z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="813" +d="M82 1260q0 133 95 223t231 90t229.5 -90t93.5 -223q0 -134 -93.5 -225t-229.5 -91t-231 91t-95 225zM233 1260q0 -81 48.5 -134t126.5 -53t125 53t47 134q0 80 -47 132t-125 52t-126.5 -52.5t-48.5 -131.5z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="1038" +d="M82 158v295l154 137v8l-154 135v295l436 -434zM520 158v295l154 137v8l-154 135v295l436 -434z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="1306" +d="M82 1311v139l145 86h146v-768h-146v618l-4 3zM254 10l649 1563l113 -43l-654 -1563zM696 139v140l336 489h146v-489h86v-140h-86v-139h-146v139h-336zM854 279h178v266h-2l-176 -262v-4z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="1398" +d="M82 1311v139l145 86h146v-768h-146v618l-4 3zM254 10l649 1563l113 -43l-654 -1563zM788 494v32q0 115 70.5 186.5t190.5 71.5q122 0 195 -66.5t73 -180.5q0 -54 -30.5 -110.5t-72.5 -96.5l-196 -189v-2h276v-139h-485v139l315 295q41 41 41 103q0 54 -29.5 86t-86.5 32 +q-56 0 -86.5 -36.5t-30.5 -92.5v-32h-144z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="1466" +d="M82 987v8h149q0 -114 127 -114t127 110q0 53 -33 82t-94 29h-53v137h53q101 0 101 94q0 48 -24 70t-77 22q-100 0 -100 -98h-149v8q0 105 64.5 162t184.5 57q252 0 252 -213q0 -59 -28 -101t-74 -62v-4q59 -22 94 -72t35 -119q0 -115 -73 -173t-206 -58q-131 0 -203.5 62 +t-72.5 173zM432 10l649 1563l113 -43l-653 -1563zM858 139v140l336 489h145v-489h86v-140h-86v-139h-145v139h-336zM1016 279h178v266h-2l-176 -262v-4z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="1251" +d="M82 485q0 190 118.5 329t288.5 169v143h275v-395h-137q-100 0 -171 -72t-71 -174q0 -101 71 -171t171 -70q101 0 174 70.5t73 170.5h295q0 -147 -72.5 -266.5t-196.5 -186.5t-273 -67t-274 67t-198 186.5t-73 266.5zM471 1397q0 65 46 111t110 46q66 0 111.5 -46 +t45.5 -111t-45.5 -111.5t-111.5 -46.5q-64 0 -110 46.5t-46 111.5z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM541 557h377l-181 627h-16zM555 1694v170l350 -121v-135z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM541 557h377l-181 627h-16zM555 1608v135l350 121v-170z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM498 1618l164 209h135l164 -209h-132l-96 92h-8l-96 -92h-131zM541 557h377l-181 627h-16z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM498 1651q0 62 43.5 106.5t105.5 44.5q42 0 76.5 -22t52.5 -58q11 -20 37 -20q18 0 28.5 10.5t10.5 28.5h111q0 -62 -44 -107t-106 -45q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -13 16t-20 7q-18 0 -28.5 -10.5 +t-10.5 -28.5h-110zM541 557h377l-181 627h-16z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM420 1718q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM541 557h377l-181 627h-16zM825 1718q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5 +q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="1458" +d="M31 0l540 1536h316l540 -1536h-313l-96 279h-578l-96 -279h-313zM541 557h377l-181 627h-16zM573 1745q0 61 47 104t109 43t109 -43t47 -104q0 -62 -47 -107t-109 -45t-109 45t-47 107zM674 1745q0 -25 16 -41t39 -16t39 16t16 41q0 22 -16 37.5t-39 15.5t-39 -15.5 +t-16 -37.5z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="2230" +d="M0 0l1018 1536h1141v-281h-838v-346h698v-280h-698v-350h838v-279h-1129v279h-491l-185 -279h-354zM694 557h336v512h-8z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="1738" +d="M72 768q0 224 110 409t298.5 289.5t414.5 104.5q179 0 340 -69.5t277 -202t155 -304.5h-299q-67 136 -194 223t-279 87q-141 0 -261.5 -73.5t-190.5 -197.5t-70 -266q0 -143 70 -267t190.5 -197t261.5 -73q152 0 279 86.5t194 223.5h299q-39 -172 -155 -304.5t-277 -202 +t-340 -69.5q-6 0 -18.5 1t-18.5 1l-8 -59q92 30 160.5 -18.5t68.5 -137.5q0 -80 -50.5 -125t-133.5 -45q-79 0 -130.5 46.5t-51.5 123.5h100q0 -35 24 -58.5t58 -23.5q35 0 58.5 23.5t23.5 58.5q0 33 -23.5 55.5t-58.5 22.5q-46 0 -66 -29l-88 17l25 157q-196 28 -354 137 +t-249 281t-91 375z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="1323" +d="M123 0v1536h1128v-279h-837v-348h696v-278h-696v-352h837v-279h-1128zM516 1694v170l350 -121v-135z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="1323" +d="M123 0v1536h1128v-279h-837v-348h696v-278h-696v-352h837v-279h-1128zM516 1608v135l350 121v-170z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="1323" +d="M123 0v1536h1128v-279h-837v-348h696v-278h-696v-352h837v-279h-1128zM457 1618l164 209h135l164 -209h-132l-96 92h-8l-96 -92h-131z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="1323" +d="M123 0v1536h1128v-279h-837v-348h696v-278h-696v-352h837v-279h-1128zM360 1718q0 44 30.5 74.5t74.5 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74.5 30.5t-30.5 73.5zM766 1718q0 44 30.5 74.5t73.5 30.5q44 0 74.5 -30.5t30.5 -74.5 +q0 -43 -30.5 -73.5t-74.5 -30.5q-43 0 -73.5 30.5t-30.5 73.5z" /> + <glyph glyph-name="Igrave" unicode="Ì" +d="M94 1694v170l350 -121v-135zM123 0v1536h291v-1536h-291z" /> + <glyph glyph-name="Iacute" unicode="Í" +d="M94 1608v135l350 121v-170zM123 0v1536h291v-1536h-291z" /> + <glyph glyph-name="Icircumflex" unicode="Î" +d="M37 1618l164 209h135l164 -209h-131l-97 92h-8l-96 -92h-131zM123 0v1536h291v-1536h-291z" /> + <glyph glyph-name="Idieresis" unicode="Ï" +d="M-27 1718q0 44 30.5 74.5t74.5 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74.5 30.5t-30.5 73.5zM123 0v1536h291v-1536h-291zM354 1718q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="1558" +d="M41 629v280h123v627h534q164 0 310 -58t251.5 -159t166.5 -244t61 -307t-61 -307t-166.5 -244t-251.5 -159t-310 -58h-534v629h-123zM455 279h243q201 0 344.5 143.5t143.5 345.5q0 132 -65.5 244t-178 177.5t-244.5 65.5h-243v-346h319v-280h-319v-350z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="1452" +d="M123 0v1536h291l620 -1026h6l-2 1026h291v-1536h-291l-620 1024h-6l2 -1024h-291zM496 1610q0 62 43.5 106.5t105.5 44.5q42 0 76.5 -22t52.5 -58q11 -20 37 -20q18 0 28.5 10.5t10.5 28.5h111q0 -62 -44 -107t-106 -45q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -13 16t-20 7 +q-18 0 -28.5 -10.5t-10.5 -28.5h-110z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5zM719 1694v170l350 -121v-135z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5zM719 1608v135l350 121v-170z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5zM664 1618l163 209h136l163 -209h-131l-96 92h-8l-96 -92h-131z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5zM662 1671q0 62 43.5 107t105.5 45q42 0 76.5 -22t52.5 -58q12 -21 37 -21q18 0 28.5 10.5t10.5 28.5h110q0 -62 -43.5 -106.5t-105.5 -44.5q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -12.5 15.5t-20.5 6.5 +q-18 0 -28.5 -10.5t-10.5 -28.5h-110z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="1789" +d="M72 768q0 223 110 408t298.5 290t414.5 105q225 0 413.5 -105t299 -290t110.5 -408t-110.5 -408t-299 -290t-413.5 -105q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5t68.5 264.5t-68.5 264 +t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5zM586 1718q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM991 1718q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5 +q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="1349" +d="M80 143l450 451l-448 448l147 148l449 -449l446 447l148 -148l-447 -446l447 -447l-148 -149l-446 448l-451 -450z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="1810" +d="M82 768q0 223 110 408t298.5 290t414.5 105q277 0 496 -160l160 160l147 -148l-156 -155q85 -103 131 -231.5t46 -268.5q0 -167 -65 -316.5t-176 -256t-263 -168.5t-320 -62q-277 0 -497 158l-158 -158l-148 148l154 153q-174 219 -174 502zM385 768q0 -164 84 -289 +l725 725q-146 92 -289 92q-142 0 -262 -71.5t-189 -193t-69 -263.5zM614 330q137 -90 291 -90q143 0 263 71t188.5 192.5t68.5 264.5q0 164 -84 289z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="1470" +d="M123 535v1001h291v-1008q0 -134 91 -215.5t230 -81.5t230.5 81.5t91.5 215.5v1008h291v-1001q0 -173 -80 -303.5t-218.5 -198.5t-314.5 -68q-270 0 -441 154.5t-171 415.5zM561 1694v170l350 -121v-135z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="1470" +d="M123 535v1001h291v-1008q0 -134 91 -215.5t230 -81.5t230.5 81.5t91.5 215.5v1008h291v-1001q0 -173 -80 -303.5t-218.5 -198.5t-314.5 -68q-270 0 -441 154.5t-171 415.5zM561 1608v135l350 121v-170z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="1470" +d="M123 535v1001h291v-1008q0 -134 91 -215.5t230 -81.5t230.5 81.5t91.5 215.5v1008h291v-1001q0 -173 -80 -303.5t-218.5 -198.5t-314.5 -68q-270 0 -441 154.5t-171 415.5zM502 1618l164 209h135l164 -209h-131l-97 92h-8l-96 -92h-131z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="1470" +d="M123 535v1001h291v-1008q0 -134 91 -215.5t230 -81.5t230.5 81.5t91.5 215.5v1008h291v-1001q0 -173 -80 -303.5t-218.5 -198.5t-314.5 -68q-270 0 -441 154.5t-171 415.5zM424 1718q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31 +q-44 0 -74 30.5t-30 73.5zM829 1718q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="1464" +d="M31 1536h344l356 -596h8l351 596h344l-553 -891v-645h-291v645zM555 1608v135l348 121v-170z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="1331" +d="M123 0v1536h291v-190h415q177 0 302.5 -126.5t125.5 -304.5q0 -175 -125.5 -300.5t-302.5 -125.5h-415v-489h-291zM414 768h391q63 0 106 43t43 104q0 63 -43 107.5t-106 44.5h-391v-299z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="1249" +d="M123 0v1153q0 113 61.5 210t164.5 152.5t220 55.5q195 0 327 -116.5t132 -301.5q0 -183 -145 -272v-7q124 -31 204 -141t80 -262q0 -135 -68 -243.5t-183.5 -168t-256.5 -59.5h-141v279h141q86 0 145.5 60.5t59.5 147.5t-59.5 148t-145.5 61h-141v279h51q67 0 112.5 46.5 +t45.5 113.5q0 65 -45.5 111t-112.5 46q-59 0 -104 -40.5t-51 -98.5v-1153h-291z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM492 1401v170l350 -121v-135z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM492 1315v135l350 121v-170z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM434 1393l164 209h135l164 -209h-131l-96 92h-8l-97 -92h-131z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM436 1419q0 62 44 107t106 45q42 0 76.5 -22t52.5 -58q12 -21 37 -21q18 0 28.5 10.5t10.5 28.5h110q0 -62 -43.5 -106.5t-105.5 -44.5q-42 0 -77.5 21.5t-56.5 56.5 +q-3 9 -12.5 15.5t-19.5 6.5q-18 0 -28.5 -10.5t-10.5 -28.5h-111z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM358 1466q0 44 30.5 74.5t74.5 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74.5 30.5t-30.5 73.5zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM764 1466q0 44 30.5 74.5t73.5 30.5q44 0 74.5 -30.5 +t30.5 -74.5q0 -43 -30.5 -73.5t-74.5 -30.5q-43 0 -73.5 30.5t-30.5 73.5z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="1320" +d="M72 356q0 181 118.5 277t358.5 96h358v88q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q245 0 388.5 -102t143.5 -302v-817h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-234 0 -349.5 100 +t-115.5 291zM373 365q0 -74 49.5 -106t179.5 -32q138 0 221.5 55t83.5 134v86h-358q-176 0 -176 -137zM510 1491q0 61 47 104t109 43t108.5 -43t46.5 -104q0 -62 -46.5 -107t-108.5 -45t-109 45t-47 107zM610 1491q0 -25 16 -41t40 -16q23 0 39 16t16 41q0 22 -16 37.5 +t-39 15.5t-39.5 -15.5t-16.5 -37.5z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="2316" +d="M72 352q0 180 118 274.5t359 94.5h358v96q0 100 -58.5 134t-182.5 34q-47 0 -82 -4t-67 -14.5t-52 -29t-31.5 -49t-11.5 -71.5h-279q0 201 140 302.5t383 101.5q174 0 298.5 -51.5t184.5 -155.5q164 207 448 207q173 0 319 -81t232 -223.5t86 -314.5q0 -61 -16 -133h-956 +q24 -102 117.5 -177t213.5 -75q88 0 158.5 39.5t108.5 99.5h315q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-126 0 -224.5 55.5t-164.5 135.5l-6 -2v-154h-291v172l-6 2q-57 -90 -149 -149.5t-215 -59.5q-465 0 -465 387zM373 360q0 -74 49 -103.5t180 -29.5 +q138 0 221.5 55t83.5 134v78h-358q-176 0 -176 -134zM1266 721h657q-23 111 -110 182.5t-216 71.5t-219 -72t-112 -182z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="1413" +d="M82 594q0 178 81.5 321.5t230.5 225.5t337 82q253 0 414.5 -130.5t206.5 -357.5h-297q-42 105 -123 170.5t-201 65.5q-157 0 -252.5 -107t-95.5 -270t95.5 -270t252.5 -107q120 0 201 65.5t123 170.5h297q-44 -227 -205.5 -357.5t-415.5 -130.5q-25 0 -37 2l-8 -59 +q92 30 160.5 -18.5t68.5 -137.5q0 -80 -50.5 -125t-133.5 -45q-79 0 -130.5 46.5t-51.5 123.5h100q0 -35 24 -58.5t58 -23.5q35 0 58.5 23.5t23.5 58.5q0 33 -23.5 55.5t-58.5 22.5q-45 0 -65 -29l-88 17l24 159q-235 38 -377.5 208t-142.5 409z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="1447" +d="M82 594q0 175 87 319.5t235.5 226t324.5 81.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-175 0 -322.5 82 +t-234 227t-86.5 320zM397 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5zM551 1401v170l350 -121v-135z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="1447" +d="M82 594q0 175 87 319.5t235.5 226t324.5 81.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-175 0 -322.5 82 +t-234 227t-86.5 320zM397 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5zM549 1315v135l350 121v-170z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="1447" +d="M82 594q0 175 87 319.5t235.5 226t324.5 81.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-175 0 -322.5 82 +t-234 227t-86.5 320zM397 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5zM498 1393l164 209h135l164 -209h-132l-96 92h-8l-96 -92h-131z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="1447" +d="M82 594q0 175 87 319.5t235.5 226t324.5 81.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-175 0 -322.5 82 +t-234 227t-86.5 320zM397 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5zM422 1466q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM827 1466q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5 +q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="igrave" unicode="ì" +d="M94 1401v170l350 -121v-135zM123 0v1186h291v-1186h-291z" /> + <glyph glyph-name="iacute" unicode="í" +d="M94 1315v135l348 121v-170zM123 0v1186h291v-1186h-291z" /> + <glyph glyph-name="icircumflex" unicode="î" +d="M37 1393l164 209h135l164 -209h-131l-97 92h-8l-96 -92h-131zM123 0v1186h291v-1186h-291z" /> + <glyph glyph-name="idieresis" unicode="ï" +d="M-29 1466q0 44 30.5 74.5t74.5 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74.5 30.5t-30.5 73.5zM123 0v1186h291v-1186h-291zM354 1466q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="1441" +d="M82 575q0 112 44 211.5t117.5 168.5t171.5 109t203 40q54 0 118 -18t114 -44h6l-43 41l-156 152l-108 -92l-68 82l101 84l-234 227h395l48 -51l83 71l68 -81l-78 -66l217 -225q93 -101 128 -148q151 -204 151 -461q0 -175 -85 -315.5t-230.5 -217.5t-323.5 -77 +q-175 0 -319 75t-230 215t-90 320zM385 575q0 -136 99.5 -233.5t236.5 -97.5q138 0 237 97.5t99 233.5t-99 234t-237 98q-137 0 -236.5 -98t-99.5 -234z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="1345" +d="M123 0v1186h268v-170h4q49 91 144 148t223 57q204 0 332.5 -140.5t128.5 -363.5v-717h-291v692q0 109 -75.5 185.5t-182.5 76.5q-109 0 -184.5 -76.5t-75.5 -185.5v-692h-291zM487 1419q0 62 44 107t106 45q42 0 76.5 -22t52.5 -58q12 -21 37 -21q18 0 28.5 10.5 +t10.5 28.5h110q0 -62 -43.5 -106.5t-105.5 -44.5q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -12.5 15.5t-20.5 6.5q-18 0 -28.5 -10.5t-10.5 -28.5h-111z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265zM557 1401v170l350 -121v-135z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265zM559 1315v135l350 121v-170z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265zM498 1393l164 209h135l164 -209h-132l-96 92h-8l-96 -92h-131z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265zM498 1419q0 62 43.5 107t105.5 45q42 0 76.5 -22t52.5 -58q12 -21 37 -21q18 0 28.5 10.5t10.5 28.5h111q0 -62 -43.5 -106.5t-106.5 -44.5q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -12.5 15.5t-20.5 6.5q-18 0 -28.5 -10.5t-10.5 -28.5h-110z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="1462" +d="M82 594q0 175 87 319.5t236 226t326 81.5q178 0 326.5 -81.5t235.5 -225.5t87 -320q0 -177 -87 -321.5t-235.5 -226t-326.5 -81.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q158 0 252 104t94 267q0 162 -94 265.5t-252 103.5 +q-156 0 -251 -104t-95 -265zM422 1466q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM827 1466q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="1390" +d="M102 487v209h1186v-209h-1186zM557 123q0 58 40 98.5t97 40.5q60 0 101 -40t41 -99t-41 -99t-101 -40q-57 0 -97 40.5t-40 98.5zM557 1061q0 60 40 100.5t97 40.5q60 0 101 -40.5t41 -100.5q0 -57 -41 -97t-101 -40q-57 0 -97 40t-40 97z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="1478" +d="M90 594q0 175 87 319.5t236 226t326 81.5q212 0 375 -113l113 113l147 -150l-106 -106q121 -162 121 -371q0 -177 -87 -321.5t-236 -226t-327 -81.5q-205 0 -366 105l-105 -105l-147 150l98 98q-129 164 -129 381zM393 594q0 -101 33 -174l496 495q-84 48 -183 48 +q-156 0 -251 -104t-95 -265zM567 264q74 -41 172 -41q158 0 252 104t94 267q0 84 -28 160z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="1345" +d="M123 469v717h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-204 0 -332.5 140.5t-128.5 363.5zM502 1401v170l350 -121v-135z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="1345" +d="M123 469v717h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-204 0 -332.5 140.5t-128.5 363.5zM502 1315v135l350 121v-170z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="1345" +d="M123 469v717h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-204 0 -332.5 140.5t-128.5 363.5zM440 1393l164 209h135l164 -209h-131l-96 92h-8l-97 -92h-131z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="1345" +d="M123 469v717h291v-692q0 -109 75.5 -186t182.5 -77q108 0 184 77t76 186v692h291v-1186h-269v170h-4q-49 -91 -143.5 -148t-222.5 -57q-204 0 -332.5 140.5t-128.5 363.5zM365 1466q0 44 30 74.5t74 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74 30.5 +t-30 73.5zM770 1466q0 44 30.5 74.5t73.5 30.5q44 0 74.5 -30.5t30.5 -74.5q0 -43 -30.5 -73.5t-74.5 -30.5q-43 0 -73.5 30.5t-30.5 73.5z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="1259" +d="M31 1186h301l297 -772h4l295 772h301l-594 -1536h-299l145 377zM457 1315v135l350 121v-170z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="1490" +d="M123 -350v1886h291v-549h4q28 41 55 73.5t63.5 63.5t76 51.5t91 33t109.5 12.5q163 0 299.5 -81.5t216.5 -226t80 -321.5q0 -176 -80 -320.5t-216.5 -225.5t-299.5 -81q-238 0 -395 207h-4v-522h-291zM414 592q0 -144 101.5 -252.5t244.5 -108.5q144 0 245 108t101 253 +q0 147 -101 254.5t-245 107.5q-143 0 -244.5 -108t-101.5 -254z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="1259" +d="M31 1186h301l297 -772h4l295 772h301l-594 -1536h-299l145 377zM324 1466q0 44 30 74.5t74 30.5q42 0 73 -30.5t31 -74.5q0 -42 -31 -73t-73 -31q-44 0 -74 30.5t-30 73.5zM729 1466q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5 +q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="2619" +d="M72 768q0 223 110 408t298.5 290t414.5 105q303 0 524 -195v160h1129v-279h-838v-348h696v-278h-696v-352h838v-279h-1129v158q-219 -193 -524 -193q-226 0 -414.5 105t-298.5 290t-110 408zM375 768q0 -143 69 -264.5t189 -192.5t262 -71q143 0 263 71t188.5 192.5 +t68.5 264.5t-68.5 264t-188.5 192.5t-263 71.5q-142 0 -262 -71.5t-189 -193t-69 -263.5z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="2426" +d="M82 594q0 175 87 319.5t236 226t326 81.5q147 0 275 -57t219 -158q88 102 213 158.5t270 56.5q103 0 200 -31.5t175.5 -89t137.5 -134.5t91.5 -173t32.5 -199q0 -61 -16 -133h-957q24 -101 117.5 -172.5t214.5 -71.5q87 0 157.5 39.5t108.5 99.5h316 +q-41 -118 -128.5 -207t-205 -136.5t-248.5 -47.5q-144 0 -267.5 56.5t-211.5 158.5q-90 -102 -218 -158.5t-276 -56.5q-177 0 -326 81.5t-236 226.5t-87 321zM385 594q0 -162 95 -266.5t251 -104.5q155 0 248 101.5t98 269.5q-5 165 -98 267t-248 102q-156 0 -251 -104 +t-95 -265zM1376 713h658q-23 112 -110 187t-216 75q-128 0 -218.5 -75.5t-113.5 -186.5z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="1464" +d="M31 1536h344l356 -596h8l351 596h344l-553 -891v-645h-291v645zM426 1718q0 44 30 74.5t74 30.5q42 0 73.5 -30.5t31.5 -74.5q0 -42 -31.5 -73t-73.5 -31q-44 0 -74 30.5t-30 73.5zM831 1718q0 44 31 74.5t74 30.5q44 0 74 -30.5t30 -74.5q0 -43 -30 -73.5t-74 -30.5 +q-43 0 -74 30.5t-31 73.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="872" +d="M205 1393l164 209h135l164 -209h-131l-97 92h-8l-96 -92h-131z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="874" +d="M205 1419q0 62 43.5 107t105.5 45q42 0 76.5 -22t52.5 -58q12 -21 37 -21q18 0 28.5 10.5t10.5 28.5h111q0 -62 -43.5 -106.5t-106.5 -44.5q-41 0 -76.5 21.5t-56.5 56.5q-3 9 -13 15.5t-20 6.5q-18 0 -28.5 -10.5t-10.5 -28.5h-110z" /> + <glyph glyph-name="uni2000" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2001" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2002" unicode=" " horiz-adv-x="946" + /> + <glyph glyph-name="uni2003" unicode=" " horiz-adv-x="1892" + /> + <glyph glyph-name="uni2004" unicode=" " horiz-adv-x="630" + /> + <glyph glyph-name="uni2005" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="uni2006" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2007" unicode=" " horiz-adv-x="315" + /> + <glyph glyph-name="uni2008" unicode=" " horiz-adv-x="236" + /> + <glyph glyph-name="uni2009" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="uni200A" unicode=" " horiz-adv-x="105" + /> + <glyph glyph-name="uni2010" unicode="‐" horiz-adv-x="952" +d="M143 487v209h666v-209h-666z" /> + <glyph glyph-name="uni2011" unicode="‑" horiz-adv-x="952" +d="M143 487v209h666v-209h-666z" /> + <glyph glyph-name="figuredash" unicode="‒" horiz-adv-x="952" +d="M143 487v209h666v-209h-666z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="1267" +d="M92 487v209h1084v-209h-1084z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="1861" +d="M92 489v209h1677v-209h-1677z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="479" +d="M102 1161v154q0 98 69.5 166.5t166.5 68.5h33v-133h-33q-42 0 -73 -29t-32 -71q8 2 27 2q65 0 111.5 -45.5t46.5 -112.5q0 -64 -46.5 -108.5t-111.5 -44.5t-111.5 44.5t-46.5 108.5z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="479" +d="M61 1397q0 64 46.5 108.5t111.5 44.5t111.5 -44.5t46.5 -108.5v-154q0 -98 -69 -166.5t-167 -68.5h-32v133h32q42 0 72.5 29t30.5 71q-6 -2 -25 -2q-65 0 -111.5 45.5t-46.5 112.5z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="479" +d="M102 141q0 65 47 111.5t111 46.5t111 -46.5t47 -111.5v-151q0 -98 -69.5 -168t-166.5 -70v133q41 0 72.5 30t32.5 73q-10 -4 -27 -4q-65 0 -111.5 46.5t-46.5 110.5z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="856" +d="M102 1161v154q0 98 69.5 166.5t166.5 68.5h33v-133h-33q-42 0 -73 -29t-32 -71q8 2 27 2q65 0 111.5 -45.5t46.5 -112.5q0 -64 -46.5 -108.5t-111.5 -44.5t-111.5 44.5t-46.5 108.5zM479 1161v154q0 98 69 166.5t167 68.5h33v-133h-33q-42 0 -72.5 -29t-30.5 -71 +q6 2 25 2q65 0 111.5 -45.5t46.5 -112.5q0 -64 -46.5 -108.5t-111.5 -44.5t-111.5 44.5t-46.5 108.5z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="856" +d="M61 1397q0 64 46.5 108.5t111.5 44.5t111.5 -44.5t46.5 -108.5v-154q0 -98 -69 -166.5t-167 -68.5h-32v133h32q42 0 72.5 29t30.5 71q-6 -2 -25 -2q-65 0 -111.5 45.5t-46.5 112.5zM438 1397q0 64 46.5 108.5t111.5 44.5t111.5 -44.5t46.5 -108.5v-154 +q0 -98 -69.5 -166.5t-166.5 -68.5h-33v133h33q42 0 73 29t32 71q-8 -2 -27 -2q-65 0 -111.5 45.5t-46.5 112.5z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="856" +d="M61 141q0 64 46.5 109t111.5 45t111.5 -45t46.5 -109v-153q0 -98 -69 -167t-167 -69h-32v133h32q42 0 72.5 29.5t30.5 71.5q-6 -2 -25 -2q-65 0 -111.5 45t-46.5 112zM438 141q0 64 46.5 109t111.5 45t111.5 -45t46.5 -109v-153q0 -98 -69.5 -167t-166.5 -69h-33v133h33 +q42 0 73 29.5t32 71.5q-8 -2 -27 -2q-65 0 -111.5 45t-46.5 112z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="899" +d="M205 594q0 101 72.5 172.5t173.5 71.5q100 0 171.5 -71.5t71.5 -172.5t-71.5 -172.5t-171.5 -71.5q-101 0 -173.5 71.5t-72.5 172.5z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="2037" +d="M72 141q0 65 46.5 111.5t110.5 46.5q65 0 111.5 -46.5t46.5 -111.5q0 -64 -46.5 -110.5t-111.5 -46.5t-111 46t-46 111zM862 141q0 65 47 111.5t111 46.5t111 -46.5t47 -111.5q0 -64 -46.5 -110.5t-111.5 -46.5t-111.5 46.5t-46.5 110.5zM1653 141q0 65 45.5 111.5 +t111.5 46.5q65 0 110.5 -46.5t45.5 -111.5t-45 -111t-111 -46t-111.5 46t-45.5 111z" /> + <glyph glyph-name="uni202F" unicode=" " horiz-adv-x="378" + /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="600" +d="M82 594l436 434v-295l-153 -135v-8l153 -137v-295z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="600" +d="M82 158v295l154 137v8l-154 135v295l436 -434z" /> + <glyph glyph-name="uni205F" unicode=" " horiz-adv-x="473" + /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="1384" +d="M72 541v176h131v102h-131v176h131v35q0 155 75 279.5t200.5 193t275.5 68.5q149 0 274 -68.5t200 -193t75 -279.5h-291q0 112 -75.5 190t-182.5 78q-108 0 -184 -77t-76 -185v-41h393l-66 -176h-327v-102h297l-62 -176h-235v-43q0 -108 76 -184t184 -76q107 0 182.5 76.5 +t75.5 183.5h291q0 -155 -75 -278t-200 -189t-274 -66q-150 0 -275.5 68t-200.5 192t-75 279v37h-131z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="743" +d="M82 1481v55h240v-55h-91v-252h-57v252h-92zM352 1229v307h58l96 -231h4l94 231h58v-307h-58v168h-2l-65 -168h-58l-67 168h-2v-168h-58z" /> + <glyph glyph-name="uni25FC" unicode="◼" horiz-adv-x="1187" +d="M0 0v1188h1188v-1188h-1188z" /> + <glyph glyph-name="uniFB01" unicode="fi" horiz-adv-x="1280" +d="M61 961v225h107v41q0 150 92 229.5t256 79.5h105v-238h-91q-29 0 -50 -21t-21 -50v-41h698v-1186h-291v961h-407v-961h-291v961h-107zM850 1417q0 67 47 114.5t115 47.5t115 -47.5t47 -114.5t-47 -114.5t-115 -47.5t-115 47.5t-47 114.5z" /> + <glyph glyph-name="uniFB02" unicode="fl" horiz-adv-x="1284" +d="M61 932v254h111v37q0 147 100.5 230t253.5 83h635v-1536h-291v1300h-335q-29 0 -50.5 -23.5t-21.5 -53.5v-37h205v-254h-205v-932h-291v932h-111z" /> + <glyph glyph-name="uniFB03" unicode="ffi" horiz-adv-x="1976" +d="M61 961v225h107v41q0 150 92 229.5t256 79.5h105v-238h-91q-29 0 -50 -21t-21 -50v-41h405v41q0 150 92 229.5t256 79.5h105v-238h-90q-29 0 -50.5 -21t-21.5 -50v-41h698v-1186h-290v961h-408v-961h-291v961h-405v-961h-291v961h-107zM1546 1417q0 67 47 114.5t115 47.5 +t115 -47.5t47 -114.5t-47 -114.5t-115 -47.5t-115 47.5t-47 114.5z" /> + <glyph glyph-name="uniFB04" unicode="ffl" horiz-adv-x="1994" +d="M61 961v225h107v41q0 150 92 229.5t256 79.5h105v-238h-91q-29 0 -50 -21t-21 -50v-41h424v37q0 147 100.5 230t253.5 83h635v-1536h-291v1300h-336q-29 0 -50 -23.5t-21 -53.5v-37h204v-225h-204v-961h-291v961h-424v-961h-291v961h-107z" /> + <hkern u1="0" u2="7" k="20" /> + <hkern u1="0" u2="1" k="41" /> + <hkern u1="1" u2="8" k="-20" /> + <hkern u1="1" u2="5" k="-33" /> + <hkern u1="1" u2="0" k="-41" /> + <hkern u1="2" u2="7" k="37" /> + <hkern u1="3" u2="9" k="61" /> + <hkern u1="3" u2="1" k="61" /> + <hkern u1="4" u2="9" k="45" /> + <hkern u1="4" u2="7" k="41" /> + <hkern u1="4" u2="1" k="41" /> + <hkern u1="5" u2="9" k="37" /> + <hkern u1="5" u2="1" k="78" /> + <hkern u1="6" u2="9" k="57" /> + <hkern u1="6" u2="7" k="98" /> + <hkern u1="6" u2="1" k="82" /> + <hkern u1="7" u2="8" k="49" /> + <hkern u1="7" u2="6" k="61" /> + <hkern u1="7" u2="5" k="41" /> + <hkern u1="7" u2="4" k="98" /> + <hkern u1="7" u2="." k="164" /> + <hkern u1="7" u2="," k="164" /> + <hkern u1="8" u2="9" k="61" /> + <hkern u1="8" u2="7" k="68" /> + <hkern u1="8" u2="1" k="102" /> + <hkern u1="9" u2="8" k="41" /> + <hkern u1="9" u2="7" k="70" /> + <hkern u1="9" u2="6" k="57" /> + <hkern u1="9" u2="5" k="37" /> + <hkern u1="9" u2="4" k="70" /> + <hkern u1="9" u2="3" k="82" /> + <hkern u1="9" u2="." k="143" /> + <hkern u1="9" u2="," k="143" /> + <hkern u1="A" u2="Ÿ" k="184" /> + <hkern u1="A" u2="Œ" k="57" /> + <hkern u1="A" u2="ÿ" k="123" /> + <hkern u1="A" u2="ý" k="123" /> + <hkern u1="A" u2="ü" k="45" /> + <hkern u1="A" u2="û" k="45" /> + <hkern u1="A" u2="ú" k="45" /> + <hkern u1="A" u2="ù" k="45" /> + <hkern u1="A" u2="ø" k="41" /> + <hkern u1="A" u2="ö" k="74" /> + <hkern u1="A" u2="ô" k="74" /> + <hkern u1="A" u2="ó" k="74" /> + <hkern u1="A" u2="ò" k="74" /> + <hkern u1="A" u2="ë" k="74" /> + <hkern u1="A" u2="ê" k="74" /> + <hkern u1="A" u2="é" k="74" /> + <hkern u1="A" u2="è" k="74" /> + <hkern u1="A" u2="ç" k="74" /> + <hkern u1="A" u2="å" k="33" /> + <hkern u1="A" u2="ä" k="33" /> + <hkern u1="A" u2="ã" k="33" /> + <hkern u1="A" u2="â" k="33" /> + <hkern u1="A" u2="á" k="33" /> + <hkern u1="A" u2="à" k="33" /> + <hkern u1="A" u2="Ý" k="184" /> + <hkern u1="A" u2="Ø" k="20" /> + <hkern u1="A" u2="Ö" k="57" /> + <hkern u1="A" u2="Õ" k="57" /> + <hkern u1="A" u2="Ô" k="57" /> + <hkern u1="A" u2="Ó" k="57" /> + <hkern u1="A" u2="Ò" k="57" /> + <hkern u1="A" u2="Ç" k="57" /> + <hkern u1="A" u2="z" k="-25" /> + <hkern u1="A" u2="y" k="123" /> + <hkern u1="A" u2="w" k="102" /> + <hkern u1="A" u2="v" k="143" /> + <hkern u1="A" u2="u" k="45" /> + <hkern u1="A" u2="t" k="45" /> + <hkern u1="A" u2="q" k="74" /> + <hkern u1="A" u2="o" k="74" /> + <hkern u1="A" u2="j" k="12" /> + <hkern u1="A" u2="g" k="12" /> + <hkern u1="A" u2="f" k="25" /> + <hkern u1="A" u2="e" k="74" /> + <hkern u1="A" u2="d" k="74" /> + <hkern u1="A" u2="c" k="74" /> + <hkern u1="A" u2="a" k="33" /> + <hkern u1="A" u2="Z" k="-66" /> + <hkern u1="A" u2="Y" k="184" /> + <hkern u1="A" u2="X" k="-25" /> + <hkern u1="A" u2="W" k="127" /> + <hkern u1="A" u2="V" k="160" /> + <hkern u1="A" u2="T" k="168" /> + <hkern u1="A" u2="Q" k="57" /> + <hkern u1="A" u2="O" k="57" /> + <hkern u1="A" u2="J" k="-25" /> + <hkern u1="A" u2="G" k="57" /> + <hkern u1="A" u2="C" k="57" /> + <hkern u1="A" u2="A" k="-25" /> + <hkern u1="B" u2="Ÿ" k="115" /> + <hkern u1="B" u2="ÿ" k="41" /> + <hkern u1="B" u2="ý" k="41" /> + <hkern u1="B" u2="Ý" k="115" /> + <hkern u1="B" u2="Æ" k="113" /> + <hkern u1="B" u2="y" k="41" /> + <hkern u1="B" u2="j" k="74" /> + <hkern u1="B" u2="g" k="41" /> + <hkern u1="B" u2="Z" k="20" /> + <hkern u1="B" u2="Y" k="115" /> + <hkern u1="B" u2="X" k="57" /> + <hkern u1="B" u2="W" k="66" /> + <hkern u1="B" u2="V" k="98" /> + <hkern u1="B" u2="T" k="74" /> + <hkern u1="C" u2="ø" k="20" /> + <hkern u1="C" u2="ö" k="25" /> + <hkern u1="C" u2="ô" k="25" /> + <hkern u1="C" u2="ó" k="25" /> + <hkern u1="C" u2="ò" k="25" /> + <hkern u1="C" u2="ï" k="-82" /> + <hkern u1="C" u2="ë" k="25" /> + <hkern u1="C" u2="ê" k="25" /> + <hkern u1="C" u2="é" k="25" /> + <hkern u1="C" u2="è" k="25" /> + <hkern u1="C" u2="å" k="25" /> + <hkern u1="C" u2="ä" k="25" /> + <hkern u1="C" u2="ã" k="25" /> + <hkern u1="C" u2="â" k="25" /> + <hkern u1="C" u2="á" k="25" /> + <hkern u1="C" u2="à" k="25" /> + <hkern u1="C" u2="Æ" k="164" /> + <hkern u1="C" u2="s" k="20" /> + <hkern u1="C" u2="q" k="25" /> + <hkern u1="C" u2="o" k="25" /> + <hkern u1="C" u2="j" k="41" /> + <hkern u1="C" u2="g" k="66" /> + <hkern u1="C" u2="e" k="25" /> + <hkern u1="C" u2="a" k="25" /> + <hkern u1="C" u2="Y" k="61" /> + <hkern u1="C" u2="A" k="41" /> + <hkern u1="C" u2="." k="61" /> + <hkern u1="C" u2="," k="61" /> + <hkern u1="D" u2="Ÿ" k="123" /> + <hkern u1="D" u2="ÿ" k="25" /> + <hkern u1="D" u2="ý" k="25" /> + <hkern u1="D" u2="Ý" k="123" /> + <hkern u1="D" u2="Æ" k="205" /> + <hkern u1="D" u2="Å" k="57" /> + <hkern u1="D" u2="Ä" k="57" /> + <hkern u1="D" u2="Ã" k="57" /> + <hkern u1="D" u2="Â" k="57" /> + <hkern u1="D" u2="Á" k="57" /> + <hkern u1="D" u2="À" k="57" /> + <hkern u1="D" u2="y" k="25" /> + <hkern u1="D" u2="v" k="25" /> + <hkern u1="D" u2="j" k="49" /> + <hkern u1="D" u2="g" k="41" /> + <hkern u1="D" u2="Z" k="61" /> + <hkern u1="D" u2="Y" k="123" /> + <hkern u1="D" u2="X" k="57" /> + <hkern u1="D" u2="W" k="49" /> + <hkern u1="D" u2="V" k="66" /> + <hkern u1="D" u2="J" k="45" /> + <hkern u1="D" u2="A" k="57" /> + <hkern u1="D" u2="." k="61" /> + <hkern u1="D" u2="," k="61" /> + <hkern u1="E" u2="Œ" k="33" /> + <hkern u1="E" u2="ÿ" k="37" /> + <hkern u1="E" u2="ý" k="37" /> + <hkern u1="E" u2="ø" k="20" /> + <hkern u1="E" u2="ö" k="41" /> + <hkern u1="E" u2="ô" k="41" /> + <hkern u1="E" u2="ó" k="41" /> + <hkern u1="E" u2="ò" k="41" /> + <hkern u1="E" u2="ï" k="-102" /> + <hkern u1="E" u2="î" k="-41" /> + <hkern u1="E" u2="í" k="-41" /> + <hkern u1="E" u2="ì" k="-41" /> + <hkern u1="E" u2="ë" k="41" /> + <hkern u1="E" u2="ê" k="41" /> + <hkern u1="E" u2="é" k="41" /> + <hkern u1="E" u2="è" k="41" /> + <hkern u1="E" u2="ç" k="41" /> + <hkern u1="E" u2="å" k="41" /> + <hkern u1="E" u2="ä" k="41" /> + <hkern u1="E" u2="ã" k="41" /> + <hkern u1="E" u2="â" k="41" /> + <hkern u1="E" u2="á" k="41" /> + <hkern u1="E" u2="à" k="41" /> + <hkern u1="E" u2="Ö" k="41" /> + <hkern u1="E" u2="Õ" k="41" /> + <hkern u1="E" u2="Ô" k="41" /> + <hkern u1="E" u2="Ó" k="41" /> + <hkern u1="E" u2="Ò" k="41" /> + <hkern u1="E" u2="Ç" k="49" /> + <hkern u1="E" u2="z" k="-20" /> + <hkern u1="E" u2="y" k="37" /> + <hkern u1="E" u2="w" k="25" /> + <hkern u1="E" u2="v" k="37" /> + <hkern u1="E" u2="q" k="41" /> + <hkern u1="E" u2="o" k="41" /> + <hkern u1="E" u2="j" k="20" /> + <hkern u1="E" u2="g" k="41" /> + <hkern u1="E" u2="e" k="41" /> + <hkern u1="E" u2="d" k="41" /> + <hkern u1="E" u2="c" k="41" /> + <hkern u1="E" u2="a" k="41" /> + <hkern u1="E" u2="Z" k="-25" /> + <hkern u1="E" u2="Q" k="41" /> + <hkern u1="E" u2="O" k="41" /> + <hkern u1="E" u2="G" k="41" /> + <hkern u1="E" u2="C" k="41" /> + <hkern u1="F" u2="Œ" k="33" /> + <hkern u1="F" u2="ÿ" k="61" /> + <hkern u1="F" u2="ý" k="61" /> + <hkern u1="F" u2="ü" k="45" /> + <hkern u1="F" u2="û" k="45" /> + <hkern u1="F" u2="ú" k="45" /> + <hkern u1="F" u2="ù" k="45" /> + <hkern u1="F" u2="ø" k="74" /> + <hkern u1="F" u2="ö" k="74" /> + <hkern u1="F" u2="ô" k="74" /> + <hkern u1="F" u2="ó" k="74" /> + <hkern u1="F" u2="ò" k="74" /> + <hkern u1="F" u2="ï" k="-143" /> + <hkern u1="F" u2="î" k="-82" /> + <hkern u1="F" u2="í" k="-82" /> + <hkern u1="F" u2="ì" k="-82" /> + <hkern u1="F" u2="ë" k="74" /> + <hkern u1="F" u2="ê" k="74" /> + <hkern u1="F" u2="é" k="74" /> + <hkern u1="F" u2="è" k="74" /> + <hkern u1="F" u2="å" k="90" /> + <hkern u1="F" u2="ä" k="90" /> + <hkern u1="F" u2="ã" k="90" /> + <hkern u1="F" u2="â" k="90" /> + <hkern u1="F" u2="á" k="90" /> + <hkern u1="F" u2="à" k="90" /> + <hkern u1="F" u2="Ø" k="41" /> + <hkern u1="F" u2="Ö" k="41" /> + <hkern u1="F" u2="Õ" k="41" /> + <hkern u1="F" u2="Ô" k="41" /> + <hkern u1="F" u2="Ó" k="41" /> + <hkern u1="F" u2="Ò" k="41" /> + <hkern u1="F" u2="Æ" k="348" /> + <hkern u1="F" u2="Å" k="147" /> + <hkern u1="F" u2="Ä" k="147" /> + <hkern u1="F" u2="Ã" k="147" /> + <hkern u1="F" u2="Â" k="147" /> + <hkern u1="F" u2="Á" k="147" /> + <hkern u1="F" u2="À" k="147" /> + <hkern u1="F" u2="y" k="61" /> + <hkern u1="F" u2="w" k="41" /> + <hkern u1="F" u2="u" k="45" /> + <hkern u1="F" u2="o" k="74" /> + <hkern u1="F" u2="j" k="49" /> + <hkern u1="F" u2="g" k="184" /> + <hkern u1="F" u2="e" k="74" /> + <hkern u1="F" u2="a" k="90" /> + <hkern u1="F" u2="Z" k="-33" /> + <hkern u1="F" u2="W" k="-25" /> + <hkern u1="F" u2="V" k="-33" /> + <hkern u1="F" u2="Q" k="41" /> + <hkern u1="F" u2="O" k="41" /> + <hkern u1="F" u2="J" k="217" /> + <hkern u1="F" u2="G" k="41" /> + <hkern u1="F" u2="A" k="147" /> + <hkern u1="F" u2="." k="143" /> + <hkern u1="F" u2="," k="143" /> + <hkern u1="G" u2="Ÿ" k="33" /> + <hkern u1="G" u2="ÿ" k="33" /> + <hkern u1="G" u2="ý" k="33" /> + <hkern u1="G" u2="Ý" k="33" /> + <hkern u1="G" u2="Æ" k="20" /> + <hkern u1="G" u2="y" k="33" /> + <hkern u1="G" u2="j" k="41" /> + <hkern u1="G" u2="Z" k="-41" /> + <hkern u1="G" u2="Y" k="123" /> + <hkern u1="G" u2="V" k="61" /> + <hkern u1="G" u2="T" k="61" /> + <hkern u1="H" u2="ï" k="-41" /> + <hkern u1="H" u2="î" k="-41" /> + <hkern u1="H" u2="í" k="-41" /> + <hkern u1="H" u2="ì" k="-41" /> + <hkern u1="H" u2="Æ" k="20" /> + <hkern u1="I" u2="ï" k="-41" /> + <hkern u1="I" u2="î" k="-41" /> + <hkern u1="I" u2="í" k="-41" /> + <hkern u1="I" u2="ì" k="-41" /> + <hkern u1="I" u2="Æ" k="41" /> + <hkern u1="I" u2="z" k="-25" /> + <hkern u1="I" u2="j" k="41" /> + <hkern u1="J" u2="ï" k="-41" /> + <hkern u1="J" u2="í" k="-41" /> + <hkern u1="J" u2="ì" k="-41" /> + <hkern u1="J" u2="Æ" k="123" /> + <hkern u1="J" u2="Å" k="20" /> + <hkern u1="J" u2="Ä" k="20" /> + <hkern u1="J" u2="Ã" k="20" /> + <hkern u1="J" u2="Â" k="20" /> + <hkern u1="J" u2="Á" k="20" /> + <hkern u1="J" u2="À" k="20" /> + <hkern u1="J" u2="J" k="49" /> + <hkern u1="J" u2="A" k="20" /> + <hkern u1="K" u2="Œ" k="123" /> + <hkern u1="K" u2="ÿ" k="82" /> + <hkern u1="K" u2="ý" k="82" /> + <hkern u1="K" u2="ü" k="90" /> + <hkern u1="K" u2="û" k="90" /> + <hkern u1="K" u2="ú" k="90" /> + <hkern u1="K" u2="ù" k="90" /> + <hkern u1="K" u2="ø" k="82" /> + <hkern u1="K" u2="ö" k="143" /> + <hkern u1="K" u2="õ" k="143" /> + <hkern u1="K" u2="ô" k="143" /> + <hkern u1="K" u2="ó" k="143" /> + <hkern u1="K" u2="ò" k="143" /> + <hkern u1="K" u2="ñ" k="20" /> + <hkern u1="K" u2="ï" k="-102" /> + <hkern u1="K" u2="î" k="-41" /> + <hkern u1="K" u2="í" k="-41" /> + <hkern u1="K" u2="ì" k="-41" /> + <hkern u1="K" u2="ë" k="143" /> + <hkern u1="K" u2="ê" k="143" /> + <hkern u1="K" u2="é" k="143" /> + <hkern u1="K" u2="è" k="143" /> + <hkern u1="K" u2="æ" k="143" /> + <hkern u1="K" u2="å" k="82" /> + <hkern u1="K" u2="ä" k="82" /> + <hkern u1="K" u2="ã" k="82" /> + <hkern u1="K" u2="â" k="82" /> + <hkern u1="K" u2="á" k="82" /> + <hkern u1="K" u2="à" k="82" /> + <hkern u1="K" u2="Ü" k="25" /> + <hkern u1="K" u2="Û" k="25" /> + <hkern u1="K" u2="Ú" k="25" /> + <hkern u1="K" u2="Ù" k="25" /> + <hkern u1="K" u2="Ø" k="61" /> + <hkern u1="K" u2="Ö" k="139" /> + <hkern u1="K" u2="Õ" k="139" /> + <hkern u1="K" u2="Ô" k="139" /> + <hkern u1="K" u2="Ó" k="139" /> + <hkern u1="K" u2="Ò" k="139" /> + <hkern u1="K" u2="Ç" k="102" /> + <hkern u1="K" u2="y" k="82" /> + <hkern u1="K" u2="w" k="86" /> + <hkern u1="K" u2="v" k="102" /> + <hkern u1="K" u2="u" k="90" /> + <hkern u1="K" u2="s" k="61" /> + <hkern u1="K" u2="r" k="20" /> + <hkern u1="K" u2="o" k="143" /> + <hkern u1="K" u2="n" k="20" /> + <hkern u1="K" u2="j" k="20" /> + <hkern u1="K" u2="e" k="143" /> + <hkern u1="K" u2="a" k="82" /> + <hkern u1="K" u2="Z" k="-25" /> + <hkern u1="K" u2="U" k="25" /> + <hkern u1="K" u2="S" k="61" /> + <hkern u1="K" u2="Q" k="143" /> + <hkern u1="K" u2="O" k="143" /> + <hkern u1="K" u2="J" k="25" /> + <hkern u1="K" u2="G" k="143" /> + <hkern u1="K" u2="C" k="143" /> + <hkern u1="L" u2="Ÿ" k="217" /> + <hkern u1="L" u2="Œ" k="82" /> + <hkern u1="L" u2="ÿ" k="164" /> + <hkern u1="L" u2="ý" k="164" /> + <hkern u1="L" u2="ü" k="61" /> + <hkern u1="L" u2="û" k="61" /> + <hkern u1="L" u2="ú" k="61" /> + <hkern u1="L" u2="ù" k="41" /> + <hkern u1="L" u2="ø" k="41" /> + <hkern u1="L" u2="ö" k="41" /> + <hkern u1="L" u2="õ" k="41" /> + <hkern u1="L" u2="ô" k="41" /> + <hkern u1="L" u2="ó" k="41" /> + <hkern u1="L" u2="ò" k="41" /> + <hkern u1="L" u2="ë" k="41" /> + <hkern u1="L" u2="ê" k="61" /> + <hkern u1="L" u2="é" k="41" /> + <hkern u1="L" u2="è" k="41" /> + <hkern u1="L" u2="Ý" k="217" /> + <hkern u1="L" u2="Ü" k="41" /> + <hkern u1="L" u2="Û" k="41" /> + <hkern u1="L" u2="Ú" k="41" /> + <hkern u1="L" u2="Ù" k="41" /> + <hkern u1="L" u2="Ö" k="123" /> + <hkern u1="L" u2="Õ" k="123" /> + <hkern u1="L" u2="Ô" k="123" /> + <hkern u1="L" u2="Ó" k="123" /> + <hkern u1="L" u2="Ò" k="123" /> + <hkern u1="L" u2="Ç" k="115" /> + <hkern u1="L" u2="Å" k="-41" /> + <hkern u1="L" u2="Ä" k="-41" /> + <hkern u1="L" u2="Ã" k="-41" /> + <hkern u1="L" u2="Â" k="-41" /> + <hkern u1="L" u2="Á" k="-41" /> + <hkern u1="L" u2="À" k="-41" /> + <hkern u1="L" u2="z" k="-41" /> + <hkern u1="L" u2="y" k="164" /> + <hkern u1="L" u2="x" k="-41" /> + <hkern u1="L" u2="w" k="143" /> + <hkern u1="L" u2="v" k="164" /> + <hkern u1="L" u2="u" k="41" /> + <hkern u1="L" u2="q" k="41" /> + <hkern u1="L" u2="o" k="41" /> + <hkern u1="L" u2="e" k="41" /> + <hkern u1="L" u2="Z" k="-41" /> + <hkern u1="L" u2="Y" k="225" /> + <hkern u1="L" u2="X" k="-41" /> + <hkern u1="L" u2="W" k="123" /> + <hkern u1="L" u2="V" k="164" /> + <hkern u1="L" u2="U" k="41" /> + <hkern u1="L" u2="T" k="221" /> + <hkern u1="L" u2="Q" k="102" /> + <hkern u1="L" u2="O" k="61" /> + <hkern u1="L" u2="J" k="-20" /> + <hkern u1="L" u2="G" k="61" /> + <hkern u1="L" u2="C" k="61" /> + <hkern u1="L" u2="A" k="-41" /> + <hkern u1="M" u2="ï" k="-61" /> + <hkern u1="M" u2="î" k="-41" /> + <hkern u1="M" u2="í" k="-41" /> + <hkern u1="M" u2="ì" k="-41" /> + <hkern u1="M" u2="Æ" k="20" /> + <hkern u1="M" u2="j" k="20" /> + <hkern u1="N" u2="ï" k="-61" /> + <hkern u1="N" u2="î" k="-41" /> + <hkern u1="N" u2="í" k="-41" /> + <hkern u1="N" u2="ì" k="-41" /> + <hkern u1="N" u2="Æ" k="20" /> + <hkern u1="N" u2="j" k="20" /> + <hkern u1="O" u2="Ÿ" k="123" /> + <hkern u1="O" u2="ÿ" k="25" /> + <hkern u1="O" u2="ý" k="25" /> + <hkern u1="O" u2="å" k="41" /> + <hkern u1="O" u2="ä" k="41" /> + <hkern u1="O" u2="ã" k="41" /> + <hkern u1="O" u2="â" k="41" /> + <hkern u1="O" u2="á" k="41" /> + <hkern u1="O" u2="à" k="41" /> + <hkern u1="O" u2="Ý" k="123" /> + <hkern u1="O" u2="Æ" k="164" /> + <hkern u1="O" u2="Å" k="57" /> + <hkern u1="O" u2="Ä" k="57" /> + <hkern u1="O" u2="Ã" k="57" /> + <hkern u1="O" u2="Â" k="57" /> + <hkern u1="O" u2="Á" k="57" /> + <hkern u1="O" u2="À" k="57" /> + <hkern u1="O" u2="y" k="25" /> + <hkern u1="O" u2="v" k="25" /> + <hkern u1="O" u2="s" k="20" /> + <hkern u1="O" u2="j" k="41" /> + <hkern u1="O" u2="g" k="61" /> + <hkern u1="O" u2="a" k="41" /> + <hkern u1="O" u2="Z" k="41" /> + <hkern u1="O" u2="Y" k="123" /> + <hkern u1="O" u2="X" k="82" /> + <hkern u1="O" u2="W" k="61" /> + <hkern u1="O" u2="V" k="82" /> + <hkern u1="O" u2="T" k="82" /> + <hkern u1="O" u2="J" k="49" /> + <hkern u1="O" u2="A" k="57" /> + <hkern u1="O" u2="." k="61" /> + <hkern u1="O" u2="," k="61" /> + <hkern u1="P" u2="Ÿ" k="61" /> + <hkern u1="P" u2="ø" k="82" /> + <hkern u1="P" u2="ö" k="61" /> + <hkern u1="P" u2="ô" k="61" /> + <hkern u1="P" u2="ó" k="61" /> + <hkern u1="P" u2="ò" k="61" /> + <hkern u1="P" u2="ë" k="61" /> + <hkern u1="P" u2="ê" k="61" /> + <hkern u1="P" u2="é" k="61" /> + <hkern u1="P" u2="è" k="61" /> + <hkern u1="P" u2="ç" k="61" /> + <hkern u1="P" u2="å" k="61" /> + <hkern u1="P" u2="ä" k="61" /> + <hkern u1="P" u2="ã" k="61" /> + <hkern u1="P" u2="â" k="61" /> + <hkern u1="P" u2="á" k="61" /> + <hkern u1="P" u2="à" k="61" /> + <hkern u1="P" u2="Ý" k="61" /> + <hkern u1="P" u2="Æ" k="369" /> + <hkern u1="P" u2="Å" k="197" /> + <hkern u1="P" u2="Ä" k="197" /> + <hkern u1="P" u2="Ã" k="197" /> + <hkern u1="P" u2="Â" k="197" /> + <hkern u1="P" u2="Á" k="197" /> + <hkern u1="P" u2="À" k="197" /> + <hkern u1="P" u2="s" k="41" /> + <hkern u1="P" u2="o" k="61" /> + <hkern u1="P" u2="j" k="57" /> + <hkern u1="P" u2="g" k="143" /> + <hkern u1="P" u2="e" k="74" /> + <hkern u1="P" u2="c" k="61" /> + <hkern u1="P" u2="a" k="61" /> + <hkern u1="P" u2="Z" k="61" /> + <hkern u1="P" u2="Y" k="61" /> + <hkern u1="P" u2="X" k="41" /> + <hkern u1="P" u2="W" k="29" /> + <hkern u1="P" u2="V" k="41" /> + <hkern u1="P" u2="T" k="25" /> + <hkern u1="P" u2="J" k="225" /> + <hkern u1="P" u2="A" k="197" /> + <hkern u1="P" u2="." k="143" /> + <hkern u1="P" u2="," k="143" /> + <hkern u1="Q" u2="Ÿ" k="123" /> + <hkern u1="Q" u2="Ý" k="123" /> + <hkern u1="Q" u2="Å" k="-41" /> + <hkern u1="Q" u2="Ä" k="-41" /> + <hkern u1="Q" u2="Ã" k="-41" /> + <hkern u1="Q" u2="Â" k="-41" /> + <hkern u1="Q" u2="Á" k="-41" /> + <hkern u1="Q" u2="À" k="-41" /> + <hkern u1="Q" u2="j" k="37" /> + <hkern u1="Q" u2="Z" k="-41" /> + <hkern u1="Q" u2="Y" k="123" /> + <hkern u1="Q" u2="X" k="-25" /> + <hkern u1="Q" u2="W" k="82" /> + <hkern u1="Q" u2="V" k="98" /> + <hkern u1="Q" u2="T" k="98" /> + <hkern u1="Q" u2="A" k="-41" /> + <hkern u1="R" u2="Ÿ" k="61" /> + <hkern u1="R" u2="ø" k="61" /> + <hkern u1="R" u2="ö" k="61" /> + <hkern u1="R" u2="ô" k="61" /> + <hkern u1="R" u2="ó" k="61" /> + <hkern u1="R" u2="ò" k="61" /> + <hkern u1="R" u2="ë" k="61" /> + <hkern u1="R" u2="ê" k="61" /> + <hkern u1="R" u2="é" k="61" /> + <hkern u1="R" u2="è" k="61" /> + <hkern u1="R" u2="å" k="61" /> + <hkern u1="R" u2="ä" k="61" /> + <hkern u1="R" u2="ã" k="61" /> + <hkern u1="R" u2="â" k="61" /> + <hkern u1="R" u2="á" k="61" /> + <hkern u1="R" u2="à" k="61" /> + <hkern u1="R" u2="Ý" k="61" /> + <hkern u1="R" u2="Æ" k="41" /> + <hkern u1="R" u2="Å" k="37" /> + <hkern u1="R" u2="Ä" k="37" /> + <hkern u1="R" u2="Ã" k="37" /> + <hkern u1="R" u2="Â" k="37" /> + <hkern u1="R" u2="Á" k="16" /> + <hkern u1="R" u2="À" k="37" /> + <hkern u1="R" u2="o" k="61" /> + <hkern u1="R" u2="j" k="37" /> + <hkern u1="R" u2="g" k="41" /> + <hkern u1="R" u2="e" k="61" /> + <hkern u1="R" u2="d" k="61" /> + <hkern u1="R" u2="c" k="61" /> + <hkern u1="R" u2="a" k="61" /> + <hkern u1="R" u2="Y" k="61" /> + <hkern u1="R" u2="X" k="33" /> + <hkern u1="R" u2="W" k="25" /> + <hkern u1="R" u2="V" k="45" /> + <hkern u1="R" u2="J" k="57" /> + <hkern u1="R" u2="A" k="37" /> + <hkern u1="S" u2="Ÿ" k="41" /> + <hkern u1="S" u2="ÿ" k="20" /> + <hkern u1="S" u2="ý" k="20" /> + <hkern u1="S" u2="ø" k="20" /> + <hkern u1="S" u2="ö" k="20" /> + <hkern u1="S" u2="ô" k="20" /> + <hkern u1="S" u2="ó" k="20" /> + <hkern u1="S" u2="ò" k="20" /> + <hkern u1="S" u2="ë" k="20" /> + <hkern u1="S" u2="ê" k="20" /> + <hkern u1="S" u2="é" k="20" /> + <hkern u1="S" u2="è" k="20" /> + <hkern u1="S" u2="ç" k="20" /> + <hkern u1="S" u2="å" k="20" /> + <hkern u1="S" u2="ä" k="20" /> + <hkern u1="S" u2="ã" k="20" /> + <hkern u1="S" u2="â" k="20" /> + <hkern u1="S" u2="á" k="20" /> + <hkern u1="S" u2="à" k="20" /> + <hkern u1="S" u2="Ý" k="41" /> + <hkern u1="S" u2="Æ" k="123" /> + <hkern u1="S" u2="y" k="20" /> + <hkern u1="S" u2="q" k="20" /> + <hkern u1="S" u2="o" k="20" /> + <hkern u1="S" u2="j" k="49" /> + <hkern u1="S" u2="e" k="20" /> + <hkern u1="S" u2="c" k="20" /> + <hkern u1="S" u2="a" k="20" /> + <hkern u1="S" u2="Y" k="41" /> + <hkern u1="S" u2="X" k="33" /> + <hkern u1="S" u2="W" k="33" /> + <hkern u1="S" u2="V" k="41" /> + <hkern u1="S" u2="T" k="41" /> + <hkern u1="T" u2="Ÿ" k="-20" /> + <hkern u1="T" u2="ÿ" k="188" /> + <hkern u1="T" u2="ý" k="188" /> + <hkern u1="T" u2="ü" k="147" /> + <hkern u1="T" u2="û" k="147" /> + <hkern u1="T" u2="ú" k="147" /> + <hkern u1="T" u2="ù" k="147" /> + <hkern u1="T" u2="ø" k="246" /> + <hkern u1="T" u2="ö" k="246" /> + <hkern u1="T" u2="ô" k="246" /> + <hkern u1="T" u2="ó" k="246" /> + <hkern u1="T" u2="ò" k="246" /> + <hkern u1="T" u2="ñ" k="164" /> + <hkern u1="T" u2="ï" k="-123" /> + <hkern u1="T" u2="î" k="-82" /> + <hkern u1="T" u2="í" k="-61" /> + <hkern u1="T" u2="ì" k="-61" /> + <hkern u1="T" u2="ë" k="246" /> + <hkern u1="T" u2="ê" k="246" /> + <hkern u1="T" u2="é" k="246" /> + <hkern u1="T" u2="è" k="246" /> + <hkern u1="T" u2="ç" k="246" /> + <hkern u1="T" u2="å" k="246" /> + <hkern u1="T" u2="ä" k="246" /> + <hkern u1="T" u2="ã" k="246" /> + <hkern u1="T" u2="â" k="246" /> + <hkern u1="T" u2="á" k="246" /> + <hkern u1="T" u2="à" k="246" /> + <hkern u1="T" u2="Ý" k="-20" /> + <hkern u1="T" u2="Ø" k="102" /> + <hkern u1="T" u2="Ö" k="82" /> + <hkern u1="T" u2="Õ" k="82" /> + <hkern u1="T" u2="Ô" k="82" /> + <hkern u1="T" u2="Ó" k="82" /> + <hkern u1="T" u2="Ò" k="82" /> + <hkern u1="T" u2="Ç" k="86" /> + <hkern u1="T" u2="Æ" k="287" /> + <hkern u1="T" u2="Å" k="168" /> + <hkern u1="T" u2="Ä" k="168" /> + <hkern u1="T" u2="Ã" k="168" /> + <hkern u1="T" u2="Â" k="168" /> + <hkern u1="T" u2="Á" k="168" /> + <hkern u1="T" u2="À" k="168" /> + <hkern u1="T" u2="z" k="131" /> + <hkern u1="T" u2="y" k="188" /> + <hkern u1="T" u2="w" k="139" /> + <hkern u1="T" u2="v" k="152" /> + <hkern u1="T" u2="u" k="147" /> + <hkern u1="T" u2="s" k="205" /> + <hkern u1="T" u2="r" k="86" /> + <hkern u1="T" u2="o" k="246" /> + <hkern u1="T" u2="n" k="164" /> + <hkern u1="T" u2="m" k="164" /> + <hkern u1="T" u2="j" k="74" /> + <hkern u1="T" u2="g" k="246" /> + <hkern u1="T" u2="e" k="246" /> + <hkern u1="T" u2="c" k="246" /> + <hkern u1="T" u2="a" k="246" /> + <hkern u1="T" u2="Z" k="-20" /> + <hkern u1="T" u2="Y" k="-20" /> + <hkern u1="T" u2="X" k="-16" /> + <hkern u1="T" u2="W" k="-20" /> + <hkern u1="T" u2="V" k="-16" /> + <hkern u1="T" u2="T" k="-20" /> + <hkern u1="T" u2="S" k="41" /> + <hkern u1="T" u2="Q" k="123" /> + <hkern u1="T" u2="O" k="82" /> + <hkern u1="T" u2="J" k="225" /> + <hkern u1="T" u2="G" k="135" /> + <hkern u1="T" u2="C" k="86" /> + <hkern u1="T" u2="A" k="168" /> + <hkern u1="T" u2="." k="102" /> + <hkern u1="T" u2="," k="102" /> + <hkern u1="U" u2="ÿ" k="20" /> + <hkern u1="U" u2="ý" k="20" /> + <hkern u1="U" u2="ø" k="29" /> + <hkern u1="U" u2="ö" k="29" /> + <hkern u1="U" u2="õ" k="29" /> + <hkern u1="U" u2="ô" k="29" /> + <hkern u1="U" u2="ó" k="29" /> + <hkern u1="U" u2="ò" k="29" /> + <hkern u1="U" u2="ï" k="-61" /> + <hkern u1="U" u2="î" k="-41" /> + <hkern u1="U" u2="í" k="-41" /> + <hkern u1="U" u2="ì" k="-41" /> + <hkern u1="U" u2="ë" k="29" /> + <hkern u1="U" u2="ê" k="29" /> + <hkern u1="U" u2="é" k="29" /> + <hkern u1="U" u2="è" k="29" /> + <hkern u1="U" u2="ç" k="29" /> + <hkern u1="U" u2="æ" k="29" /> + <hkern u1="U" u2="å" k="29" /> + <hkern u1="U" u2="ä" k="29" /> + <hkern u1="U" u2="ã" k="29" /> + <hkern u1="U" u2="â" k="29" /> + <hkern u1="U" u2="á" k="29" /> + <hkern u1="U" u2="à" k="29" /> + <hkern u1="U" u2="Æ" k="123" /> + <hkern u1="U" u2="y" k="20" /> + <hkern u1="U" u2="s" k="20" /> + <hkern u1="U" u2="q" k="29" /> + <hkern u1="U" u2="o" k="29" /> + <hkern u1="U" u2="j" k="20" /> + <hkern u1="U" u2="g" k="29" /> + <hkern u1="U" u2="e" k="29" /> + <hkern u1="U" u2="d" k="29" /> + <hkern u1="U" u2="c" k="29" /> + <hkern u1="U" u2="a" k="29" /> + <hkern u1="U" u2="V" k="25" /> + <hkern u1="U" u2="J" k="20" /> + <hkern u1="V" u2="Ÿ" k="-25" /> + <hkern u1="V" u2="Œ" k="123" /> + <hkern u1="V" u2="ÿ" k="41" /> + <hkern u1="V" u2="ý" k="41" /> + <hkern u1="V" u2="ü" k="41" /> + <hkern u1="V" u2="û" k="41" /> + <hkern u1="V" u2="ú" k="41" /> + <hkern u1="V" u2="ù" k="41" /> + <hkern u1="V" u2="ø" k="168" /> + <hkern u1="V" u2="ö" k="147" /> + <hkern u1="V" u2="ô" k="147" /> + <hkern u1="V" u2="ó" k="147" /> + <hkern u1="V" u2="ò" k="147" /> + <hkern u1="V" u2="ñ" k="61" /> + <hkern u1="V" u2="ï" k="-102" /> + <hkern u1="V" u2="î" k="-61" /> + <hkern u1="V" u2="í" k="-61" /> + <hkern u1="V" u2="ì" k="-61" /> + <hkern u1="V" u2="ë" k="143" /> + <hkern u1="V" u2="ê" k="143" /> + <hkern u1="V" u2="é" k="143" /> + <hkern u1="V" u2="è" k="143" /> + <hkern u1="V" u2="ç" k="143" /> + <hkern u1="V" u2="å" k="147" /> + <hkern u1="V" u2="ä" k="184" /> + <hkern u1="V" u2="ã" k="147" /> + <hkern u1="V" u2="â" k="184" /> + <hkern u1="V" u2="á" k="184" /> + <hkern u1="V" u2="à" k="184" /> + <hkern u1="V" u2="ß" k="41" /> + <hkern u1="V" u2="Ý" k="-25" /> + <hkern u1="V" u2="Ü" k="25" /> + <hkern u1="V" u2="Û" k="25" /> + <hkern u1="V" u2="Ú" k="25" /> + <hkern u1="V" u2="Ù" k="25" /> + <hkern u1="V" u2="Ø" k="82" /> + <hkern u1="V" u2="Ö" k="82" /> + <hkern u1="V" u2="Õ" k="82" /> + <hkern u1="V" u2="Ô" k="82" /> + <hkern u1="V" u2="Ó" k="82" /> + <hkern u1="V" u2="Ò" k="82" /> + <hkern u1="V" u2="Ç" k="74" /> + <hkern u1="V" u2="Æ" k="328" /> + <hkern u1="V" u2="Å" k="160" /> + <hkern u1="V" u2="Ä" k="160" /> + <hkern u1="V" u2="Ã" k="160" /> + <hkern u1="V" u2="Â" k="160" /> + <hkern u1="V" u2="Á" k="160" /> + <hkern u1="V" u2="À" k="160" /> + <hkern u1="V" u2="z" k="41" /> + <hkern u1="V" u2="y" k="41" /> + <hkern u1="V" u2="u" k="41" /> + <hkern u1="V" u2="s" k="102" /> + <hkern u1="V" u2="r" k="82" /> + <hkern u1="V" u2="o" k="147" /> + <hkern u1="V" u2="n" k="61" /> + <hkern u1="V" u2="j" k="61" /> + <hkern u1="V" u2="g" k="205" /> + <hkern u1="V" u2="e" k="143" /> + <hkern u1="V" u2="c" k="143" /> + <hkern u1="V" u2="a" k="184" /> + <hkern u1="V" u2="Z" k="-25" /> + <hkern u1="V" u2="Y" k="-25" /> + <hkern u1="V" u2="X" k="-25" /> + <hkern u1="V" u2="W" k="-29" /> + <hkern u1="V" u2="V" k="-20" /> + <hkern u1="V" u2="U" k="25" /> + <hkern u1="V" u2="T" k="-16" /> + <hkern u1="V" u2="S" k="41" /> + <hkern u1="V" u2="Q" k="98" /> + <hkern u1="V" u2="O" k="82" /> + <hkern u1="V" u2="J" k="217" /> + <hkern u1="V" u2="G" k="98" /> + <hkern u1="V" u2="C" k="74" /> + <hkern u1="V" u2="A" k="160" /> + <hkern u1="V" u2="." k="102" /> + <hkern u1="V" u2="," k="102" /> + <hkern u1="W" u2="Ÿ" k="-20" /> + <hkern u1="W" u2="Œ" k="102" /> + <hkern u1="W" u2="ÿ" k="20" /> + <hkern u1="W" u2="ý" k="20" /> + <hkern u1="W" u2="ü" k="33" /> + <hkern u1="W" u2="û" k="33" /> + <hkern u1="W" u2="ú" k="33" /> + <hkern u1="W" u2="ù" k="33" /> + <hkern u1="W" u2="ø" k="123" /> + <hkern u1="W" u2="ö" k="123" /> + <hkern u1="W" u2="ô" k="123" /> + <hkern u1="W" u2="ó" k="123" /> + <hkern u1="W" u2="ò" k="123" /> + <hkern u1="W" u2="ï" k="-102" /> + <hkern u1="W" u2="î" k="-61" /> + <hkern u1="W" u2="í" k="-61" /> + <hkern u1="W" u2="ì" k="-61" /> + <hkern u1="W" u2="ë" k="123" /> + <hkern u1="W" u2="ê" k="123" /> + <hkern u1="W" u2="é" k="123" /> + <hkern u1="W" u2="è" k="123" /> + <hkern u1="W" u2="ç" k="115" /> + <hkern u1="W" u2="å" k="135" /> + <hkern u1="W" u2="ä" k="135" /> + <hkern u1="W" u2="ã" k="135" /> + <hkern u1="W" u2="â" k="135" /> + <hkern u1="W" u2="á" k="135" /> + <hkern u1="W" u2="à" k="135" /> + <hkern u1="W" u2="ß" k="29" /> + <hkern u1="W" u2="Ý" k="-20" /> + <hkern u1="W" u2="Ø" k="61" /> + <hkern u1="W" u2="Ö" k="61" /> + <hkern u1="W" u2="Õ" k="61" /> + <hkern u1="W" u2="Ô" k="61" /> + <hkern u1="W" u2="Ó" k="61" /> + <hkern u1="W" u2="Ò" k="61" /> + <hkern u1="W" u2="Ç" k="49" /> + <hkern u1="W" u2="Æ" k="246" /> + <hkern u1="W" u2="Å" k="127" /> + <hkern u1="W" u2="Ä" k="127" /> + <hkern u1="W" u2="Ã" k="127" /> + <hkern u1="W" u2="Â" k="127" /> + <hkern u1="W" u2="Á" k="127" /> + <hkern u1="W" u2="À" k="127" /> + <hkern u1="W" u2="z" k="33" /> + <hkern u1="W" u2="y" k="20" /> + <hkern u1="W" u2="u" k="33" /> + <hkern u1="W" u2="s" k="61" /> + <hkern u1="W" u2="r" k="61" /> + <hkern u1="W" u2="o" k="123" /> + <hkern u1="W" u2="j" k="53" /> + <hkern u1="W" u2="g" k="143" /> + <hkern u1="W" u2="e" k="123" /> + <hkern u1="W" u2="c" k="115" /> + <hkern u1="W" u2="a" k="135" /> + <hkern u1="W" u2="Z" k="-25" /> + <hkern u1="W" u2="Y" k="-20" /> + <hkern u1="W" u2="X" k="-25" /> + <hkern u1="W" u2="W" k="-20" /> + <hkern u1="W" u2="V" k="-29" /> + <hkern u1="W" u2="T" k="-20" /> + <hkern u1="W" u2="S" k="33" /> + <hkern u1="W" u2="Q" k="82" /> + <hkern u1="W" u2="O" k="61" /> + <hkern u1="W" u2="J" k="188" /> + <hkern u1="W" u2="G" k="74" /> + <hkern u1="W" u2="C" k="49" /> + <hkern u1="W" u2="A" k="127" /> + <hkern u1="W" u2="." k="82" /> + <hkern u1="W" u2="," k="82" /> + <hkern u1="X" u2="Ÿ" k="-25" /> + <hkern u1="X" u2="Œ" k="123" /> + <hkern u1="X" u2="ÿ" k="74" /> + <hkern u1="X" u2="ý" k="74" /> + <hkern u1="X" u2="ü" k="37" /> + <hkern u1="X" u2="û" k="37" /> + <hkern u1="X" u2="ú" k="37" /> + <hkern u1="X" u2="ù" k="37" /> + <hkern u1="X" u2="ø" k="41" /> + <hkern u1="X" u2="ö" k="66" /> + <hkern u1="X" u2="ô" k="66" /> + <hkern u1="X" u2="ó" k="66" /> + <hkern u1="X" u2="ò" k="66" /> + <hkern u1="X" u2="ï" k="-102" /> + <hkern u1="X" u2="î" k="-61" /> + <hkern u1="X" u2="í" k="-61" /> + <hkern u1="X" u2="ì" k="-61" /> + <hkern u1="X" u2="ë" k="78" /> + <hkern u1="X" u2="ê" k="78" /> + <hkern u1="X" u2="é" k="78" /> + <hkern u1="X" u2="è" k="78" /> + <hkern u1="X" u2="ç" k="66" /> + <hkern u1="X" u2="å" k="82" /> + <hkern u1="X" u2="ä" k="82" /> + <hkern u1="X" u2="ã" k="82" /> + <hkern u1="X" u2="â" k="82" /> + <hkern u1="X" u2="á" k="82" /> + <hkern u1="X" u2="à" k="82" /> + <hkern u1="X" u2="ß" k="20" /> + <hkern u1="X" u2="Ý" k="-25" /> + <hkern u1="X" u2="Ø" k="41" /> + <hkern u1="X" u2="Ö" k="82" /> + <hkern u1="X" u2="Õ" k="82" /> + <hkern u1="X" u2="Ô" k="82" /> + <hkern u1="X" u2="Ó" k="82" /> + <hkern u1="X" u2="Ò" k="82" /> + <hkern u1="X" u2="Ç" k="41" /> + <hkern u1="X" u2="Å" k="-25" /> + <hkern u1="X" u2="Ä" k="-25" /> + <hkern u1="X" u2="Ã" k="-25" /> + <hkern u1="X" u2="Â" k="-25" /> + <hkern u1="X" u2="Á" k="-25" /> + <hkern u1="X" u2="À" k="-25" /> + <hkern u1="X" u2="y" k="74" /> + <hkern u1="X" u2="u" k="37" /> + <hkern u1="X" u2="o" k="66" /> + <hkern u1="X" u2="j" k="20" /> + <hkern u1="X" u2="e" k="78" /> + <hkern u1="X" u2="c" k="66" /> + <hkern u1="X" u2="a" k="82" /> + <hkern u1="X" u2="Z" k="-25" /> + <hkern u1="X" u2="Y" k="-25" /> + <hkern u1="X" u2="X" k="-25" /> + <hkern u1="X" u2="W" k="-25" /> + <hkern u1="X" u2="V" k="-25" /> + <hkern u1="X" u2="T" k="-16" /> + <hkern u1="X" u2="S" k="33" /> + <hkern u1="X" u2="Q" k="78" /> + <hkern u1="X" u2="O" k="82" /> + <hkern u1="X" u2="G" k="57" /> + <hkern u1="X" u2="C" k="41" /> + <hkern u1="X" u2="A" k="-25" /> + <hkern u1="Y" u2="Œ" k="164" /> + <hkern u1="Y" u2="ü" k="147" /> + <hkern u1="Y" u2="û" k="147" /> + <hkern u1="Y" u2="ú" k="147" /> + <hkern u1="Y" u2="ù" k="147" /> + <hkern u1="Y" u2="ø" k="295" /> + <hkern u1="Y" u2="ö" k="274" /> + <hkern u1="Y" u2="õ" k="274" /> + <hkern u1="Y" u2="ô" k="274" /> + <hkern u1="Y" u2="ó" k="274" /> + <hkern u1="Y" u2="ò" k="274" /> + <hkern u1="Y" u2="ñ" k="102" /> + <hkern u1="Y" u2="ï" k="-61" /> + <hkern u1="Y" u2="ë" k="274" /> + <hkern u1="Y" u2="ê" k="274" /> + <hkern u1="Y" u2="é" k="274" /> + <hkern u1="Y" u2="è" k="274" /> + <hkern u1="Y" u2="ç" k="205" /> + <hkern u1="Y" u2="å" k="274" /> + <hkern u1="Y" u2="ä" k="274" /> + <hkern u1="Y" u2="ã" k="274" /> + <hkern u1="Y" u2="â" k="274" /> + <hkern u1="Y" u2="á" k="274" /> + <hkern u1="Y" u2="à" k="274" /> + <hkern u1="Y" u2="ß" k="82" /> + <hkern u1="Y" u2="Ø" k="123" /> + <hkern u1="Y" u2="Ö" k="123" /> + <hkern u1="Y" u2="Õ" k="123" /> + <hkern u1="Y" u2="Ô" k="123" /> + <hkern u1="Y" u2="Ó" k="123" /> + <hkern u1="Y" u2="Ò" k="123" /> + <hkern u1="Y" u2="Ç" k="102" /> + <hkern u1="Y" u2="Æ" k="389" /> + <hkern u1="Y" u2="Å" k="184" /> + <hkern u1="Y" u2="Ä" k="184" /> + <hkern u1="Y" u2="Ã" k="184" /> + <hkern u1="Y" u2="Â" k="184" /> + <hkern u1="Y" u2="Á" k="184" /> + <hkern u1="Y" u2="À" k="184" /> + <hkern u1="Y" u2="z" k="123" /> + <hkern u1="Y" u2="w" k="61" /> + <hkern u1="Y" u2="v" k="66" /> + <hkern u1="Y" u2="u" k="147" /> + <hkern u1="Y" u2="t" k="82" /> + <hkern u1="Y" u2="s" k="205" /> + <hkern u1="Y" u2="r" k="143" /> + <hkern u1="Y" u2="o" k="274" /> + <hkern u1="Y" u2="n" k="102" /> + <hkern u1="Y" u2="j" k="102" /> + <hkern u1="Y" u2="i" k="25" /> + <hkern u1="Y" u2="h" k="20" /> + <hkern u1="Y" u2="g" k="266" /> + <hkern u1="Y" u2="e" k="274" /> + <hkern u1="Y" u2="d" k="287" /> + <hkern u1="Y" u2="c" k="205" /> + <hkern u1="Y" u2="a" k="274" /> + <hkern u1="Y" u2="Z" k="-25" /> + <hkern u1="Y" u2="Y" k="-20" /> + <hkern u1="Y" u2="X" k="-25" /> + <hkern u1="Y" u2="W" k="-20" /> + <hkern u1="Y" u2="V" k="-25" /> + <hkern u1="Y" u2="T" k="-20" /> + <hkern u1="Y" u2="S" k="41" /> + <hkern u1="Y" u2="Q" k="123" /> + <hkern u1="Y" u2="O" k="123" /> + <hkern u1="Y" u2="J" k="246" /> + <hkern u1="Y" u2="G" k="143" /> + <hkern u1="Y" u2="C" k="123" /> + <hkern u1="Y" u2="A" k="184" /> + <hkern u1="Y" u2="." k="184" /> + <hkern u1="Y" u2="," k="184" /> + <hkern u1="Z" u2="Ÿ" k="-25" /> + <hkern u1="Z" u2="ÿ" k="20" /> + <hkern u1="Z" u2="ý" k="20" /> + <hkern u1="Z" u2="ü" k="25" /> + <hkern u1="Z" u2="û" k="25" /> + <hkern u1="Z" u2="ú" k="25" /> + <hkern u1="Z" u2="ù" k="25" /> + <hkern u1="Z" u2="ø" k="41" /> + <hkern u1="Z" u2="ö" k="41" /> + <hkern u1="Z" u2="õ" k="41" /> + <hkern u1="Z" u2="ô" k="41" /> + <hkern u1="Z" u2="ó" k="41" /> + <hkern u1="Z" u2="ò" k="41" /> + <hkern u1="Z" u2="ï" k="-102" /> + <hkern u1="Z" u2="î" k="-61" /> + <hkern u1="Z" u2="í" k="-61" /> + <hkern u1="Z" u2="ì" k="-61" /> + <hkern u1="Z" u2="ë" k="41" /> + <hkern u1="Z" u2="ê" k="41" /> + <hkern u1="Z" u2="é" k="41" /> + <hkern u1="Z" u2="è" k="41" /> + <hkern u1="Z" u2="å" k="25" /> + <hkern u1="Z" u2="ä" k="25" /> + <hkern u1="Z" u2="ã" k="25" /> + <hkern u1="Z" u2="â" k="25" /> + <hkern u1="Z" u2="á" k="25" /> + <hkern u1="Z" u2="à" k="25" /> + <hkern u1="Z" u2="Ý" k="-25" /> + <hkern u1="Z" u2="Ø" k="20" /> + <hkern u1="Z" u2="Ç" k="33" /> + <hkern u1="Z" u2="Å" k="-66" /> + <hkern u1="Z" u2="Ä" k="-66" /> + <hkern u1="Z" u2="Ã" k="-66" /> + <hkern u1="Z" u2="Â" k="-66" /> + <hkern u1="Z" u2="Á" k="-66" /> + <hkern u1="Z" u2="À" k="-66" /> + <hkern u1="Z" u2="y" k="20" /> + <hkern u1="Z" u2="o" k="41" /> + <hkern u1="Z" u2="j" k="20" /> + <hkern u1="Z" u2="e" k="41" /> + <hkern u1="Z" u2="d" k="41" /> + <hkern u1="Z" u2="a" k="25" /> + <hkern u1="Z" u2="Y" k="-25" /> + <hkern u1="Z" u2="X" k="-25" /> + <hkern u1="Z" u2="W" k="-25" /> + <hkern u1="Z" u2="V" k="-25" /> + <hkern u1="Z" u2="T" k="-20" /> + <hkern u1="Z" u2="Q" k="41" /> + <hkern u1="Z" u2="O" k="41" /> + <hkern u1="Z" u2="J" k="-20" /> + <hkern u1="Z" u2="G" k="41" /> + <hkern u1="Z" u2="C" k="41" /> + <hkern u1="Z" u2="A" k="-66" /> + <hkern u1="a" u2="ÿ" k="41" /> + <hkern u1="a" u2="ý" k="41" /> + <hkern u1="a" u2="y" k="41" /> + <hkern u1="a" u2="w" k="20" /> + <hkern u1="a" u2="v" k="41" /> + <hkern u1="a" u2="j" k="41" /> + <hkern u1="b" u2="ÿ" k="82" /> + <hkern u1="b" u2="ý" k="82" /> + <hkern u1="b" u2="å" k="41" /> + <hkern u1="b" u2="ä" k="41" /> + <hkern u1="b" u2="ã" k="41" /> + <hkern u1="b" u2="â" k="41" /> + <hkern u1="b" u2="á" k="41" /> + <hkern u1="b" u2="à" k="41" /> + <hkern u1="b" u2="z" k="41" /> + <hkern u1="b" u2="y" k="82" /> + <hkern u1="b" u2="j" k="82" /> + <hkern u1="b" u2="g" k="20" /> + <hkern u1="b" u2="a" k="41" /> + <hkern u1="c" u2="ø" k="20" /> + <hkern u1="c" u2="y" k="29" /> + <hkern u1="c" u2="x" k="20" /> + <hkern u1="c" u2="w" k="20" /> + <hkern u1="c" u2="v" k="29" /> + <hkern u1="c" u2="j" k="20" /> + <hkern u1="d" u2="j" k="41" /> + <hkern u1="e" u2="ÿ" k="57" /> + <hkern u1="e" u2="ý" k="57" /> + <hkern u1="e" u2="å" k="41" /> + <hkern u1="e" u2="ä" k="41" /> + <hkern u1="e" u2="ã" k="41" /> + <hkern u1="e" u2="â" k="41" /> + <hkern u1="e" u2="á" k="41" /> + <hkern u1="e" u2="à" k="41" /> + <hkern u1="e" u2="y" k="57" /> + <hkern u1="e" u2="x" k="61" /> + <hkern u1="e" u2="w" k="41" /> + <hkern u1="e" u2="v" k="57" /> + <hkern u1="e" u2="j" k="61" /> + <hkern u1="e" u2="g" k="20" /> + <hkern u1="e" u2="a" k="41" /> + <hkern u1="f" u2="œ" k="41" /> + <hkern u1="f" u2="ø" k="61" /> + <hkern u1="f" u2="ö" k="61" /> + <hkern u1="f" u2="õ" k="61" /> + <hkern u1="f" u2="ô" k="61" /> + <hkern u1="f" u2="ó" k="61" /> + <hkern u1="f" u2="ò" k="61" /> + <hkern u1="f" u2="ë" k="61" /> + <hkern u1="f" u2="ê" k="61" /> + <hkern u1="f" u2="é" k="61" /> + <hkern u1="f" u2="è" k="61" /> + <hkern u1="f" u2="ç" k="61" /> + <hkern u1="f" u2="æ" k="61" /> + <hkern u1="f" u2="å" k="29" /> + <hkern u1="f" u2="ä" k="29" /> + <hkern u1="f" u2="ã" k="29" /> + <hkern u1="f" u2="â" k="29" /> + <hkern u1="f" u2="á" k="29" /> + <hkern u1="f" u2="à" k="29" /> + <hkern u1="f" u2="s" k="33" /> + <hkern u1="f" u2="q" k="61" /> + <hkern u1="f" u2="o" k="61" /> + <hkern u1="f" u2="j" k="102" /> + <hkern u1="f" u2="g" k="61" /> + <hkern u1="f" u2="e" k="61" /> + <hkern u1="f" u2="d" k="61" /> + <hkern u1="f" u2="c" k="61" /> + <hkern u1="f" u2="a" k="29" /> + <hkern u1="g" u2="ÿ" k="20" /> + <hkern u1="g" u2="ý" k="20" /> + <hkern u1="g" u2="ö" k="33" /> + <hkern u1="g" u2="õ" k="33" /> + <hkern u1="g" u2="ô" k="33" /> + <hkern u1="g" u2="ó" k="33" /> + <hkern u1="g" u2="ò" k="33" /> + <hkern u1="g" u2="ð" k="33" /> + <hkern u1="g" u2="ë" k="33" /> + <hkern u1="g" u2="ê" k="33" /> + <hkern u1="g" u2="é" k="33" /> + <hkern u1="g" u2="è" k="33" /> + <hkern u1="g" u2="ç" k="33" /> + <hkern u1="g" u2="æ" k="25" /> + <hkern u1="g" u2="å" k="25" /> + <hkern u1="g" u2="ä" k="25" /> + <hkern u1="g" u2="ã" k="25" /> + <hkern u1="g" u2="â" k="25" /> + <hkern u1="g" u2="á" k="25" /> + <hkern u1="g" u2="à" k="25" /> + <hkern u1="g" u2="y" k="20" /> + <hkern u1="g" u2="v" k="20" /> + <hkern u1="g" u2="q" k="33" /> + <hkern u1="g" u2="o" k="33" /> + <hkern u1="g" u2="j" k="33" /> + <hkern u1="g" u2="e" k="33" /> + <hkern u1="g" u2="d" k="33" /> + <hkern u1="g" u2="c" k="33" /> + <hkern u1="g" u2="a" k="25" /> + <hkern u1="h" u2="ÿ" k="66" /> + <hkern u1="h" u2="ý" k="66" /> + <hkern u1="h" u2="y" k="66" /> + <hkern u1="h" u2="w" k="53" /> + <hkern u1="h" u2="v" k="66" /> + <hkern u1="h" u2="j" k="41" /> + <hkern u1="i" u2="j" k="41" /> + <hkern u1="k" u2="œ" k="123" /> + <hkern u1="k" u2="ø" k="61" /> + <hkern u1="k" u2="ö" k="90" /> + <hkern u1="k" u2="ô" k="90" /> + <hkern u1="k" u2="ó" k="90" /> + <hkern u1="k" u2="ò" k="90" /> + <hkern u1="k" u2="ð" k="74" /> + <hkern u1="k" u2="ë" k="78" /> + <hkern u1="k" u2="ê" k="78" /> + <hkern u1="k" u2="é" k="78" /> + <hkern u1="k" u2="è" k="78" /> + <hkern u1="k" u2="ç" k="66" /> + <hkern u1="k" u2="æ" k="102" /> + <hkern u1="k" u2="å" k="82" /> + <hkern u1="k" u2="ä" k="82" /> + <hkern u1="k" u2="ã" k="82" /> + <hkern u1="k" u2="â" k="82" /> + <hkern u1="k" u2="á" k="82" /> + <hkern u1="k" u2="à" k="82" /> + <hkern u1="k" u2="z" k="-41" /> + <hkern u1="k" u2="x" k="-20" /> + <hkern u1="k" u2="s" k="41" /> + <hkern u1="k" u2="q" k="82" /> + <hkern u1="k" u2="o" k="82" /> + <hkern u1="k" u2="j" k="41" /> + <hkern u1="k" u2="f" k="-37" /> + <hkern u1="k" u2="e" k="82" /> + <hkern u1="k" u2="d" k="82" /> + <hkern u1="k" u2="c" k="82" /> + <hkern u1="k" u2="a" k="82" /> + <hkern u1="l" u2="j" k="41" /> + <hkern u1="l" u2="f" k="-45" /> + <hkern u1="m" u2="ÿ" k="29" /> + <hkern u1="m" u2="ý" k="29" /> + <hkern u1="m" u2="y" k="29" /> + <hkern u1="m" u2="j" k="41" /> + <hkern u1="n" u2="ÿ" k="33" /> + <hkern u1="n" u2="ý" k="33" /> + <hkern u1="n" u2="y" k="41" /> + <hkern u1="n" u2="v" k="41" /> + <hkern u1="n" u2="j" k="41" /> + <hkern u1="o" u2="ÿ" k="74" /> + <hkern u1="o" u2="ý" k="74" /> + <hkern u1="o" u2="å" k="20" /> + <hkern u1="o" u2="ä" k="20" /> + <hkern u1="o" u2="ã" k="20" /> + <hkern u1="o" u2="â" k="20" /> + <hkern u1="o" u2="á" k="20" /> + <hkern u1="o" u2="à" k="20" /> + <hkern u1="o" u2="z" k="41" /> + <hkern u1="o" u2="y" k="74" /> + <hkern u1="o" u2="x" k="74" /> + <hkern u1="o" u2="w" k="49" /> + <hkern u1="o" u2="v" k="74" /> + <hkern u1="o" u2="j" k="61" /> + <hkern u1="o" u2="g" k="20" /> + <hkern u1="o" u2="a" k="20" /> + <hkern u1="p" u2="ÿ" k="82" /> + <hkern u1="p" u2="ý" k="82" /> + <hkern u1="p" u2="å" k="20" /> + <hkern u1="p" u2="ä" k="20" /> + <hkern u1="p" u2="ã" k="20" /> + <hkern u1="p" u2="â" k="20" /> + <hkern u1="p" u2="á" k="20" /> + <hkern u1="p" u2="à" k="20" /> + <hkern u1="p" u2="z" k="41" /> + <hkern u1="p" u2="y" k="82" /> + <hkern u1="p" u2="x" k="86" /> + <hkern u1="p" u2="w" k="45" /> + <hkern u1="p" u2="v" k="82" /> + <hkern u1="p" u2="j" k="61" /> + <hkern u1="p" u2="g" k="20" /> + <hkern u1="p" u2="a" k="20" /> + <hkern u1="r" u2="œ" k="41" /> + <hkern u1="r" u2="ÿ" k="-49" /> + <hkern u1="r" u2="ý" k="-49" /> + <hkern u1="r" u2="ø" k="61" /> + <hkern u1="r" u2="ö" k="61" /> + <hkern u1="r" u2="õ" k="61" /> + <hkern u1="r" u2="ô" k="61" /> + <hkern u1="r" u2="ó" k="61" /> + <hkern u1="r" u2="ò" k="61" /> + <hkern u1="r" u2="ð" k="41" /> + <hkern u1="r" u2="ë" k="61" /> + <hkern u1="r" u2="ê" k="61" /> + <hkern u1="r" u2="é" k="61" /> + <hkern u1="r" u2="è" k="61" /> + <hkern u1="r" u2="ç" k="61" /> + <hkern u1="r" u2="æ" k="61" /> + <hkern u1="r" u2="å" k="61" /> + <hkern u1="r" u2="ä" k="61" /> + <hkern u1="r" u2="ã" k="61" /> + <hkern u1="r" u2="â" k="61" /> + <hkern u1="r" u2="á" k="61" /> + <hkern u1="r" u2="à" k="61" /> + <hkern u1="r" u2="z" k="-20" /> + <hkern u1="r" u2="y" k="-41" /> + <hkern u1="r" u2="x" k="-20" /> + <hkern u1="r" u2="w" k="-41" /> + <hkern u1="r" u2="v" k="-41" /> + <hkern u1="r" u2="t" k="-41" /> + <hkern u1="r" u2="s" k="41" /> + <hkern u1="r" u2="q" k="61" /> + <hkern u1="r" u2="o" k="61" /> + <hkern u1="r" u2="j" k="61" /> + <hkern u1="r" u2="g" k="61" /> + <hkern u1="r" u2="f" k="-37" /> + <hkern u1="r" u2="e" k="61" /> + <hkern u1="r" u2="d" k="61" /> + <hkern u1="r" u2="c" k="61" /> + <hkern u1="r" u2="a" k="61" /> + <hkern u1="r" u2="." k="61" /> + <hkern u1="r" u2="," k="61" /> + <hkern u1="s" u2="ÿ" k="25" /> + <hkern u1="s" u2="ý" k="25" /> + <hkern u1="s" u2="y" k="25" /> + <hkern u1="s" u2="v" k="25" /> + <hkern u1="s" u2="j" k="61" /> + <hkern u1="t" u2="ÿ" k="-20" /> + <hkern u1="t" u2="ý" k="-20" /> + <hkern u1="t" u2="ö" k="41" /> + <hkern u1="t" u2="ô" k="41" /> + <hkern u1="t" u2="ó" k="41" /> + <hkern u1="t" u2="ò" k="41" /> + <hkern u1="t" u2="ë" k="33" /> + <hkern u1="t" u2="ê" k="33" /> + <hkern u1="t" u2="é" k="33" /> + <hkern u1="t" u2="è" k="33" /> + <hkern u1="t" u2="ç" k="20" /> + <hkern u1="t" u2="z" k="-41" /> + <hkern u1="t" u2="y" k="-20" /> + <hkern u1="t" u2="w" k="-33" /> + <hkern u1="t" u2="v" k="-20" /> + <hkern u1="t" u2="q" k="29" /> + <hkern u1="t" u2="o" k="20" /> + <hkern u1="t" u2="f" k="-49" /> + <hkern u1="t" u2="e" k="33" /> + <hkern u1="t" u2="d" k="41" /> + <hkern u1="t" u2="c" k="20" /> + <hkern u1="u" u2="j" k="41" /> + <hkern u1="v" u2="œ" k="82" /> + <hkern u1="v" u2="ÿ" k="-20" /> + <hkern u1="v" u2="ý" k="-20" /> + <hkern u1="v" u2="ø" k="74" /> + <hkern u1="v" u2="ö" k="74" /> + <hkern u1="v" u2="ô" k="74" /> + <hkern u1="v" u2="ó" k="74" /> + <hkern u1="v" u2="ò" k="74" /> + <hkern u1="v" u2="ð" k="61" /> + <hkern u1="v" u2="ë" k="57" /> + <hkern u1="v" u2="ê" k="57" /> + <hkern u1="v" u2="é" k="57" /> + <hkern u1="v" u2="è" k="57" /> + <hkern u1="v" u2="ç" k="61" /> + <hkern u1="v" u2="æ" k="82" /> + <hkern u1="v" u2="å" k="82" /> + <hkern u1="v" u2="ä" k="82" /> + <hkern u1="v" u2="ã" k="82" /> + <hkern u1="v" u2="â" k="82" /> + <hkern u1="v" u2="á" k="82" /> + <hkern u1="v" u2="à" k="82" /> + <hkern u1="v" u2="z" k="-20" /> + <hkern u1="v" u2="y" k="-20" /> + <hkern u1="v" u2="x" k="-16" /> + <hkern u1="v" u2="w" k="-25" /> + <hkern u1="v" u2="v" k="-20" /> + <hkern u1="v" u2="s" k="29" /> + <hkern u1="v" u2="q" k="74" /> + <hkern u1="v" u2="o" k="74" /> + <hkern u1="v" u2="j" k="82" /> + <hkern u1="v" u2="g" k="106" /> + <hkern u1="v" u2="f" k="-61" /> + <hkern u1="v" u2="e" k="57" /> + <hkern u1="v" u2="d" k="66" /> + <hkern u1="v" u2="c" k="61" /> + <hkern u1="v" u2="a" k="82" /> + <hkern u1="v" u2="." k="102" /> + <hkern u1="v" u2="," k="102" /> + <hkern u1="w" u2="œ" k="61" /> + <hkern u1="w" u2="ÿ" k="-20" /> + <hkern u1="w" u2="ý" k="-20" /> + <hkern u1="w" u2="ø" k="49" /> + <hkern u1="w" u2="ö" k="49" /> + <hkern u1="w" u2="ô" k="49" /> + <hkern u1="w" u2="ó" k="49" /> + <hkern u1="w" u2="ò" k="49" /> + <hkern u1="w" u2="ð" k="41" /> + <hkern u1="w" u2="ë" k="41" /> + <hkern u1="w" u2="ê" k="41" /> + <hkern u1="w" u2="é" k="41" /> + <hkern u1="w" u2="è" k="41" /> + <hkern u1="w" u2="ç" k="41" /> + <hkern u1="w" u2="æ" k="61" /> + <hkern u1="w" u2="å" k="61" /> + <hkern u1="w" u2="ä" k="61" /> + <hkern u1="w" u2="ã" k="61" /> + <hkern u1="w" u2="â" k="61" /> + <hkern u1="w" u2="á" k="61" /> + <hkern u1="w" u2="à" k="61" /> + <hkern u1="w" u2="z" k="-20" /> + <hkern u1="w" u2="y" k="-20" /> + <hkern u1="w" u2="x" k="-20" /> + <hkern u1="w" u2="w" k="-37" /> + <hkern u1="w" u2="v" k="-25" /> + <hkern u1="w" u2="q" k="49" /> + <hkern u1="w" u2="o" k="49" /> + <hkern u1="w" u2="j" k="70" /> + <hkern u1="w" u2="g" k="70" /> + <hkern u1="w" u2="f" k="-61" /> + <hkern u1="w" u2="e" k="41" /> + <hkern u1="w" u2="d" k="49" /> + <hkern u1="w" u2="c" k="41" /> + <hkern u1="w" u2="a" k="61" /> + <hkern u1="w" u2="." k="82" /> + <hkern u1="w" u2="," k="82" /> + <hkern u1="x" u2="œ" k="82" /> + <hkern u1="x" u2="ÿ" k="-20" /> + <hkern u1="x" u2="ý" k="-20" /> + <hkern u1="x" u2="ø" k="41" /> + <hkern u1="x" u2="ö" k="74" /> + <hkern u1="x" u2="ô" k="74" /> + <hkern u1="x" u2="ó" k="74" /> + <hkern u1="x" u2="ò" k="74" /> + <hkern u1="x" u2="ð" k="61" /> + <hkern u1="x" u2="ë" k="61" /> + <hkern u1="x" u2="ê" k="61" /> + <hkern u1="x" u2="é" k="61" /> + <hkern u1="x" u2="è" k="61" /> + <hkern u1="x" u2="ç" k="61" /> + <hkern u1="x" u2="æ" k="82" /> + <hkern u1="x" u2="å" k="61" /> + <hkern u1="x" u2="ä" k="61" /> + <hkern u1="x" u2="ã" k="61" /> + <hkern u1="x" u2="â" k="61" /> + <hkern u1="x" u2="á" k="61" /> + <hkern u1="x" u2="à" k="61" /> + <hkern u1="x" u2="z" k="-20" /> + <hkern u1="x" u2="y" k="-20" /> + <hkern u1="x" u2="x" k="-20" /> + <hkern u1="x" u2="w" k="-20" /> + <hkern u1="x" u2="v" k="-16" /> + <hkern u1="x" u2="s" k="20" /> + <hkern u1="x" u2="q" k="45" /> + <hkern u1="x" u2="o" k="74" /> + <hkern u1="x" u2="j" k="61" /> + <hkern u1="x" u2="f" k="-61" /> + <hkern u1="x" u2="e" k="61" /> + <hkern u1="x" u2="d" k="49" /> + <hkern u1="x" u2="c" k="61" /> + <hkern u1="x" u2="a" k="61" /> + <hkern u1="y" u2="œ" k="82" /> + <hkern u1="y" u2="ø" k="74" /> + <hkern u1="y" u2="ö" k="74" /> + <hkern u1="y" u2="ô" k="74" /> + <hkern u1="y" u2="ó" k="74" /> + <hkern u1="y" u2="ò" k="74" /> + <hkern u1="y" u2="ð" k="61" /> + <hkern u1="y" u2="ë" k="57" /> + <hkern u1="y" u2="ê" k="57" /> + <hkern u1="y" u2="é" k="57" /> + <hkern u1="y" u2="è" k="57" /> + <hkern u1="y" u2="ç" k="61" /> + <hkern u1="y" u2="æ" k="82" /> + <hkern u1="y" u2="å" k="102" /> + <hkern u1="y" u2="ä" k="102" /> + <hkern u1="y" u2="ã" k="102" /> + <hkern u1="y" u2="â" k="102" /> + <hkern u1="y" u2="á" k="102" /> + <hkern u1="y" u2="à" k="102" /> + <hkern u1="y" u2="z" k="-20" /> + <hkern u1="y" u2="y" k="-20" /> + <hkern u1="y" u2="x" k="-20" /> + <hkern u1="y" u2="w" k="-20" /> + <hkern u1="y" u2="v" k="-20" /> + <hkern u1="y" u2="s" k="29" /> + <hkern u1="y" u2="q" k="74" /> + <hkern u1="y" u2="o" k="74" /> + <hkern u1="y" u2="j" k="82" /> + <hkern u1="y" u2="g" k="106" /> + <hkern u1="y" u2="f" k="-61" /> + <hkern u1="y" u2="e" k="57" /> + <hkern u1="y" u2="d" k="61" /> + <hkern u1="y" u2="c" k="61" /> + <hkern u1="y" u2="a" k="82" /> + <hkern u1="y" u2="." k="102" /> + <hkern u1="y" u2="," k="102" /> + <hkern u1="z" u2="ÿ" k="-20" /> + <hkern u1="z" u2="ý" k="-20" /> + <hkern u1="z" u2="ø" k="20" /> + <hkern u1="z" u2="ö" k="29" /> + <hkern u1="z" u2="õ" k="29" /> + <hkern u1="z" u2="ô" k="29" /> + <hkern u1="z" u2="ó" k="29" /> + <hkern u1="z" u2="ò" k="29" /> + <hkern u1="z" u2="ë" k="25" /> + <hkern u1="z" u2="ê" k="25" /> + <hkern u1="z" u2="é" k="25" /> + <hkern u1="z" u2="è" k="25" /> + <hkern u1="z" u2="ç" k="29" /> + <hkern u1="z" u2="å" k="20" /> + <hkern u1="z" u2="ä" k="20" /> + <hkern u1="z" u2="ã" k="20" /> + <hkern u1="z" u2="â" k="20" /> + <hkern u1="z" u2="á" k="20" /> + <hkern u1="z" u2="à" k="20" /> + <hkern u1="z" u2="y" k="-20" /> + <hkern u1="z" u2="x" k="-20" /> + <hkern u1="z" u2="w" k="-20" /> + <hkern u1="z" u2="v" k="-20" /> + <hkern u1="z" u2="q" k="41" /> + <hkern u1="z" u2="o" k="41" /> + <hkern u1="z" u2="j" k="20" /> + <hkern u1="z" u2="f" k="-41" /> + <hkern u1="z" u2="e" k="41" /> + <hkern u1="z" u2="d" k="41" /> + <hkern u1="z" u2="c" k="41" /> + <hkern u1="z" u2="a" k="20" /> + <hkern u1="µ" u2="j" k="61" /> + <hkern u1="À" u2="À" k="-25" /> + <hkern u1="À" u2="z" k="-25" /> + <hkern u1="À" u2="y" k="143" /> + <hkern u1="À" u2="w" k="102" /> + <hkern u1="À" u2="v" k="143" /> + <hkern u1="À" u2="u" k="45" /> + <hkern u1="À" u2="t" k="47" /> + <hkern u1="À" u2="q" k="74" /> + <hkern u1="À" u2="o" k="74" /> + <hkern u1="À" u2="j" k="12" /> + <hkern u1="À" u2="g" k="12" /> + <hkern u1="À" u2="f" k="25" /> + <hkern u1="À" u2="e" k="74" /> + <hkern u1="À" u2="d" k="74" /> + <hkern u1="À" u2="c" k="74" /> + <hkern u1="À" u2="a" k="33" /> + <hkern u1="À" u2="Z" k="-66" /> + <hkern u1="À" u2="Y" k="184" /> + <hkern u1="À" u2="X" k="-25" /> + <hkern u1="À" u2="W" k="127" /> + <hkern u1="À" u2="V" k="160" /> + <hkern u1="À" u2="T" k="168" /> + <hkern u1="À" u2="Q" k="57" /> + <hkern u1="À" u2="O" k="57" /> + <hkern u1="À" u2="J" k="-25" /> + <hkern u1="À" u2="G" k="57" /> + <hkern u1="À" u2="C" k="57" /> + <hkern u1="Á" u2="Á" k="-25" /> + <hkern u1="Á" u2="z" k="-25" /> + <hkern u1="Á" u2="y" k="143" /> + <hkern u1="Á" u2="w" k="102" /> + <hkern u1="Á" u2="v" k="143" /> + <hkern u1="Á" u2="u" k="45" /> + <hkern u1="Á" u2="t" k="45" /> + <hkern u1="Á" u2="q" k="74" /> + <hkern u1="Á" u2="o" k="74" /> + <hkern u1="Á" u2="j" k="12" /> + <hkern u1="Á" u2="g" k="12" /> + <hkern u1="Á" u2="f" k="25" /> + <hkern u1="Á" u2="e" k="74" /> + <hkern u1="Á" u2="d" k="74" /> + <hkern u1="Á" u2="c" k="74" /> + <hkern u1="Á" u2="a" k="33" /> + <hkern u1="Á" u2="Z" k="-66" /> + <hkern u1="Á" u2="Y" k="184" /> + <hkern u1="Á" u2="X" k="-25" /> + <hkern u1="Á" u2="W" k="127" /> + <hkern u1="Á" u2="V" k="160" /> + <hkern u1="Á" u2="T" k="168" /> + <hkern u1="Á" u2="Q" k="57" /> + <hkern u1="Á" u2="O" k="57" /> + <hkern u1="Á" u2="J" k="-25" /> + <hkern u1="Á" u2="G" k="57" /> + <hkern u1="Á" u2="C" k="57" /> + <hkern u1="Â" u2="Â" k="-25" /> + <hkern u1="Â" u2="z" k="-25" /> + <hkern u1="Â" u2="y" k="143" /> + <hkern u1="Â" u2="w" k="102" /> + <hkern u1="Â" u2="v" k="143" /> + <hkern u1="Â" u2="u" k="45" /> + <hkern u1="Â" u2="t" k="45" /> + <hkern u1="Â" u2="q" k="74" /> + <hkern u1="Â" u2="o" k="74" /> + <hkern u1="Â" u2="j" k="12" /> + <hkern u1="Â" u2="g" k="12" /> + <hkern u1="Â" u2="f" k="25" /> + <hkern u1="Â" u2="e" k="74" /> + <hkern u1="Â" u2="d" k="74" /> + <hkern u1="Â" u2="c" k="74" /> + <hkern u1="Â" u2="a" k="33" /> + <hkern u1="Â" u2="Z" k="-66" /> + <hkern u1="Â" u2="Y" k="184" /> + <hkern u1="Â" u2="X" k="-25" /> + <hkern u1="Â" u2="W" k="127" /> + <hkern u1="Â" u2="V" k="160" /> + <hkern u1="Â" u2="T" k="168" /> + <hkern u1="Â" u2="Q" k="57" /> + <hkern u1="Â" u2="O" k="57" /> + <hkern u1="Â" u2="J" k="-25" /> + <hkern u1="Â" u2="G" k="57" /> + <hkern u1="Â" u2="C" k="57" /> + <hkern u1="Ã" u2="Ã" k="-25" /> + <hkern u1="Ã" u2="z" k="-25" /> + <hkern u1="Ã" u2="y" k="143" /> + <hkern u1="Ã" u2="w" k="102" /> + <hkern u1="Ã" u2="v" k="143" /> + <hkern u1="Ã" u2="u" k="45" /> + <hkern u1="Ã" u2="t" k="45" /> + <hkern u1="Ã" u2="q" k="74" /> + <hkern u1="Ã" u2="o" k="74" /> + <hkern u1="Ã" u2="j" k="12" /> + <hkern u1="Ã" u2="g" k="12" /> + <hkern u1="Ã" u2="f" k="25" /> + <hkern u1="Ã" u2="e" k="74" /> + <hkern u1="Ã" u2="d" k="74" /> + <hkern u1="Ã" u2="c" k="74" /> + <hkern u1="Ã" u2="a" k="33" /> + <hkern u1="Ã" u2="Z" k="-66" /> + <hkern u1="Ã" u2="Y" k="184" /> + <hkern u1="Ã" u2="X" k="-25" /> + <hkern u1="Ã" u2="W" k="127" /> + <hkern u1="Ã" u2="V" k="160" /> + <hkern u1="Ã" u2="T" k="168" /> + <hkern u1="Ã" u2="Q" k="57" /> + <hkern u1="Ã" u2="O" k="57" /> + <hkern u1="Ã" u2="J" k="-25" /> + <hkern u1="Ã" u2="G" k="57" /> + <hkern u1="Ã" u2="C" k="57" /> + <hkern u1="Ä" u2="Ä" k="-25" /> + <hkern u1="Ä" u2="z" k="-25" /> + <hkern u1="Ä" u2="y" k="143" /> + <hkern u1="Ä" u2="w" k="102" /> + <hkern u1="Ä" u2="v" k="143" /> + <hkern u1="Ä" u2="u" k="45" /> + <hkern u1="Ä" u2="t" k="45" /> + <hkern u1="Ä" u2="q" k="74" /> + <hkern u1="Ä" u2="o" k="74" /> + <hkern u1="Ä" u2="j" k="12" /> + <hkern u1="Ä" u2="g" k="12" /> + <hkern u1="Ä" u2="f" k="25" /> + <hkern u1="Ä" u2="e" k="74" /> + <hkern u1="Ä" u2="d" k="74" /> + <hkern u1="Ä" u2="c" k="74" /> + <hkern u1="Ä" u2="a" k="33" /> + <hkern u1="Ä" u2="Z" k="-66" /> + <hkern u1="Ä" u2="Y" k="184" /> + <hkern u1="Ä" u2="X" k="-25" /> + <hkern u1="Ä" u2="W" k="127" /> + <hkern u1="Ä" u2="V" k="160" /> + <hkern u1="Ä" u2="T" k="168" /> + <hkern u1="Ä" u2="Q" k="57" /> + <hkern u1="Ä" u2="O" k="57" /> + <hkern u1="Ä" u2="J" k="-25" /> + <hkern u1="Ä" u2="G" k="57" /> + <hkern u1="Ä" u2="C" k="57" /> + <hkern u1="Å" u2="Å" k="-25" /> + <hkern u1="Å" u2="z" k="-25" /> + <hkern u1="Å" u2="y" k="143" /> + <hkern u1="Å" u2="w" k="102" /> + <hkern u1="Å" u2="v" k="143" /> + <hkern u1="Å" u2="u" k="45" /> + <hkern u1="Å" u2="t" k="45" /> + <hkern u1="Å" u2="q" k="74" /> + <hkern u1="Å" u2="o" k="74" /> + <hkern u1="Å" u2="j" k="12" /> + <hkern u1="Å" u2="g" k="12" /> + <hkern u1="Å" u2="f" k="25" /> + <hkern u1="Å" u2="e" k="74" /> + <hkern u1="Å" u2="d" k="74" /> + <hkern u1="Å" u2="c" k="74" /> + <hkern u1="Å" u2="a" k="33" /> + <hkern u1="Å" u2="Z" k="-66" /> + <hkern u1="Å" u2="Y" k="184" /> + <hkern u1="Å" u2="X" k="-25" /> + <hkern u1="Å" u2="W" k="127" /> + <hkern u1="Å" u2="V" k="160" /> + <hkern u1="Å" u2="T" k="168" /> + <hkern u1="Å" u2="Q" k="57" /> + <hkern u1="Å" u2="O" k="57" /> + <hkern u1="Å" u2="J" k="-25" /> + <hkern u1="Å" u2="G" k="57" /> + <hkern u1="Å" u2="C" k="57" /> + <hkern u1="Æ" u2="O" k="20" /> + <hkern u1="Ç" u2="s" k="20" /> + <hkern u1="Ç" u2="q" k="25" /> + <hkern u1="Ç" u2="o" k="25" /> + <hkern u1="Ç" u2="j" k="41" /> + <hkern u1="Ç" u2="g" k="25" /> + <hkern u1="Ç" u2="e" k="25" /> + <hkern u1="Ç" u2="a" k="25" /> + <hkern u1="Ç" u2="." k="61" /> + <hkern u1="Ç" u2="," k="61" /> + <hkern u1="È" u2="z" k="-20" /> + <hkern u1="È" u2="y" k="37" /> + <hkern u1="È" u2="w" k="25" /> + <hkern u1="È" u2="v" k="37" /> + <hkern u1="È" u2="q" k="41" /> + <hkern u1="È" u2="o" k="41" /> + <hkern u1="È" u2="j" k="20" /> + <hkern u1="È" u2="g" k="41" /> + <hkern u1="È" u2="e" k="41" /> + <hkern u1="È" u2="d" k="41" /> + <hkern u1="È" u2="c" k="41" /> + <hkern u1="È" u2="a" k="41" /> + <hkern u1="È" u2="Z" k="-25" /> + <hkern u1="È" u2="Q" k="41" /> + <hkern u1="È" u2="O" k="41" /> + <hkern u1="È" u2="G" k="41" /> + <hkern u1="È" u2="C" k="41" /> + <hkern u1="É" u2="z" k="-20" /> + <hkern u1="É" u2="y" k="37" /> + <hkern u1="É" u2="w" k="25" /> + <hkern u1="É" u2="v" k="37" /> + <hkern u1="É" u2="q" k="41" /> + <hkern u1="É" u2="o" k="41" /> + <hkern u1="É" u2="j" k="20" /> + <hkern u1="É" u2="g" k="41" /> + <hkern u1="É" u2="e" k="41" /> + <hkern u1="É" u2="d" k="41" /> + <hkern u1="É" u2="c" k="41" /> + <hkern u1="É" u2="a" k="41" /> + <hkern u1="É" u2="Z" k="-25" /> + <hkern u1="É" u2="Q" k="41" /> + <hkern u1="É" u2="O" k="41" /> + <hkern u1="É" u2="G" k="41" /> + <hkern u1="É" u2="C" k="41" /> + <hkern u1="Ê" u2="z" k="-20" /> + <hkern u1="Ê" u2="y" k="37" /> + <hkern u1="Ê" u2="w" k="25" /> + <hkern u1="Ê" u2="v" k="37" /> + <hkern u1="Ê" u2="q" k="41" /> + <hkern u1="Ê" u2="o" k="41" /> + <hkern u1="Ê" u2="j" k="20" /> + <hkern u1="Ê" u2="g" k="41" /> + <hkern u1="Ê" u2="e" k="41" /> + <hkern u1="Ê" u2="d" k="41" /> + <hkern u1="Ê" u2="c" k="41" /> + <hkern u1="Ê" u2="a" k="41" /> + <hkern u1="Ê" u2="Z" k="-25" /> + <hkern u1="Ê" u2="Q" k="41" /> + <hkern u1="Ê" u2="O" k="41" /> + <hkern u1="Ê" u2="G" k="41" /> + <hkern u1="Ê" u2="C" k="41" /> + <hkern u1="Ë" u2="z" k="-20" /> + <hkern u1="Ë" u2="y" k="37" /> + <hkern u1="Ë" u2="w" k="25" /> + <hkern u1="Ë" u2="v" k="37" /> + <hkern u1="Ë" u2="q" k="41" /> + <hkern u1="Ë" u2="o" k="41" /> + <hkern u1="Ë" u2="j" k="20" /> + <hkern u1="Ë" u2="g" k="41" /> + <hkern u1="Ë" u2="e" k="41" /> + <hkern u1="Ë" u2="d" k="41" /> + <hkern u1="Ë" u2="c" k="41" /> + <hkern u1="Ë" u2="a" k="41" /> + <hkern u1="Ë" u2="Z" k="-25" /> + <hkern u1="Ë" u2="Q" k="41" /> + <hkern u1="Ë" u2="O" k="41" /> + <hkern u1="Ë" u2="G" k="41" /> + <hkern u1="Ë" u2="C" k="41" /> + <hkern u1="Ì" u2="j" k="41" /> + <hkern u1="Í" u2="j" k="41" /> + <hkern u1="Î" u2="j" k="41" /> + <hkern u1="Ï" u2="j" k="41" /> + <hkern u1="Ð" u2="y" k="25" /> + <hkern u1="Ð" u2="x" k="20" /> + <hkern u1="Ð" u2="w" k="20" /> + <hkern u1="Ð" u2="v" k="37" /> + <hkern u1="Ð" u2="j" k="123" /> + <hkern u1="Ð" u2="Z" k="66" /> + <hkern u1="Ð" u2="Y" k="139" /> + <hkern u1="Ð" u2="X" k="66" /> + <hkern u1="Ð" u2="W" k="61" /> + <hkern u1="Ð" u2="V" k="86" /> + <hkern u1="Ð" u2="T" k="41" /> + <hkern u1="Ð" u2="J" k="106" /> + <hkern u1="Ð" u2="A" k="78" /> + <hkern u1="Ñ" u2="j" k="123" /> + <hkern u1="Ò" u2="y" k="25" /> + <hkern u1="Ò" u2="v" k="25" /> + <hkern u1="Ò" u2="j" k="41" /> + <hkern u1="Ò" u2="g" k="61" /> + <hkern u1="Ò" u2="a" k="41" /> + <hkern u1="Ò" u2="Y" k="123" /> + <hkern u1="Ò" u2="X" k="82" /> + <hkern u1="Ò" u2="W" k="61" /> + <hkern u1="Ò" u2="V" k="82" /> + <hkern u1="Ò" u2="T" k="82" /> + <hkern u1="Ò" u2="J" k="49" /> + <hkern u1="Ò" u2="A" k="57" /> + <hkern u1="Ò" u2="." k="61" /> + <hkern u1="Ò" u2="," k="61" /> + <hkern u1="Ó" u2="y" k="25" /> + <hkern u1="Ó" u2="v" k="25" /> + <hkern u1="Ó" u2="j" k="41" /> + <hkern u1="Ó" u2="g" k="61" /> + <hkern u1="Ó" u2="a" k="41" /> + <hkern u1="Ó" u2="Y" k="123" /> + <hkern u1="Ó" u2="X" k="82" /> + <hkern u1="Ó" u2="W" k="61" /> + <hkern u1="Ó" u2="V" k="82" /> + <hkern u1="Ó" u2="T" k="82" /> + <hkern u1="Ó" u2="J" k="49" /> + <hkern u1="Ó" u2="A" k="57" /> + <hkern u1="Ó" u2="." k="61" /> + <hkern u1="Ó" u2="," k="61" /> + <hkern u1="Ô" u2="y" k="25" /> + <hkern u1="Ô" u2="v" k="25" /> + <hkern u1="Ô" u2="j" k="41" /> + <hkern u1="Ô" u2="g" k="61" /> + <hkern u1="Ô" u2="a" k="41" /> + <hkern u1="Ô" u2="Y" k="123" /> + <hkern u1="Ô" u2="X" k="82" /> + <hkern u1="Ô" u2="W" k="61" /> + <hkern u1="Ô" u2="V" k="82" /> + <hkern u1="Ô" u2="T" k="82" /> + <hkern u1="Ô" u2="J" k="49" /> + <hkern u1="Ô" u2="A" k="57" /> + <hkern u1="Ô" u2="." k="61" /> + <hkern u1="Ô" u2="," k="61" /> + <hkern u1="Õ" u2="y" k="25" /> + <hkern u1="Õ" u2="v" k="25" /> + <hkern u1="Õ" u2="j" k="41" /> + <hkern u1="Õ" u2="g" k="61" /> + <hkern u1="Õ" u2="a" k="41" /> + <hkern u1="Õ" u2="Y" k="123" /> + <hkern u1="Õ" u2="X" k="82" /> + <hkern u1="Õ" u2="W" k="61" /> + <hkern u1="Õ" u2="V" k="82" /> + <hkern u1="Õ" u2="T" k="82" /> + <hkern u1="Õ" u2="J" k="49" /> + <hkern u1="Õ" u2="A" k="57" /> + <hkern u1="Õ" u2="." k="61" /> + <hkern u1="Õ" u2="," k="61" /> + <hkern u1="Ö" u2="y" k="25" /> + <hkern u1="Ö" u2="v" k="25" /> + <hkern u1="Ö" u2="j" k="41" /> + <hkern u1="Ö" u2="g" k="61" /> + <hkern u1="Ö" u2="a" k="41" /> + <hkern u1="Ö" u2="Y" k="123" /> + <hkern u1="Ö" u2="X" k="82" /> + <hkern u1="Ö" u2="W" k="61" /> + <hkern u1="Ö" u2="V" k="82" /> + <hkern u1="Ö" u2="T" k="82" /> + <hkern u1="Ö" u2="J" k="49" /> + <hkern u1="Ö" u2="A" k="57" /> + <hkern u1="Ö" u2="." k="61" /> + <hkern u1="Ö" u2="," k="61" /> + <hkern u1="Ø" u2="y" k="25" /> + <hkern u1="Ø" u2="v" k="25" /> + <hkern u1="Ø" u2="s" k="20" /> + <hkern u1="Ø" u2="j" k="61" /> + <hkern u1="Ø" u2="a" k="41" /> + <hkern u1="Ø" u2="Z" k="20" /> + <hkern u1="Ø" u2="Y" k="20" /> + <hkern u1="Ø" u2="X" k="41" /> + <hkern u1="Ø" u2="W" k="20" /> + <hkern u1="Ø" u2="J" k="78" /> + <hkern u1="Ø" u2="A" k="57" /> + <hkern u1="Ø" u2="," k="61" /> + <hkern u1="Ù" u2="y" k="20" /> + <hkern u1="Ù" u2="s" k="20" /> + <hkern u1="Ù" u2="q" k="29" /> + <hkern u1="Ù" u2="o" k="29" /> + <hkern u1="Ù" u2="j" k="61" /> + <hkern u1="Ù" u2="g" k="29" /> + <hkern u1="Ù" u2="e" k="29" /> + <hkern u1="Ù" u2="d" k="29" /> + <hkern u1="Ù" u2="c" k="29" /> + <hkern u1="Ù" u2="a" k="29" /> + <hkern u1="Ù" u2="V" k="25" /> + <hkern u1="Ù" u2="J" k="20" /> + <hkern u1="Ú" u2="y" k="20" /> + <hkern u1="Ú" u2="s" k="20" /> + <hkern u1="Ú" u2="q" k="29" /> + <hkern u1="Ú" u2="o" k="29" /> + <hkern u1="Ú" u2="j" k="61" /> + <hkern u1="Ú" u2="g" k="29" /> + <hkern u1="Ú" u2="e" k="29" /> + <hkern u1="Ú" u2="d" k="29" /> + <hkern u1="Ú" u2="c" k="29" /> + <hkern u1="Ú" u2="a" k="29" /> + <hkern u1="Ú" u2="V" k="25" /> + <hkern u1="Ú" u2="J" k="20" /> + <hkern u1="Û" u2="y" k="20" /> + <hkern u1="Û" u2="s" k="20" /> + <hkern u1="Û" u2="q" k="29" /> + <hkern u1="Û" u2="o" k="29" /> + <hkern u1="Û" u2="j" k="61" /> + <hkern u1="Û" u2="g" k="29" /> + <hkern u1="Û" u2="e" k="29" /> + <hkern u1="Û" u2="d" k="29" /> + <hkern u1="Û" u2="c" k="29" /> + <hkern u1="Û" u2="a" k="29" /> + <hkern u1="Û" u2="V" k="25" /> + <hkern u1="Û" u2="J" k="20" /> + <hkern u1="Ü" u2="y" k="20" /> + <hkern u1="Ü" u2="s" k="20" /> + <hkern u1="Ü" u2="q" k="29" /> + <hkern u1="Ü" u2="o" k="29" /> + <hkern u1="Ü" u2="j" k="61" /> + <hkern u1="Ü" u2="g" k="29" /> + <hkern u1="Ü" u2="e" k="29" /> + <hkern u1="Ü" u2="d" k="29" /> + <hkern u1="Ü" u2="c" k="29" /> + <hkern u1="Ü" u2="a" k="29" /> + <hkern u1="Ü" u2="V" k="25" /> + <hkern u1="Ü" u2="J" k="20" /> + <hkern u1="Ý" u2="Ý" k="-20" /> + <hkern u1="Ý" u2="z" k="123" /> + <hkern u1="Ý" u2="w" k="61" /> + <hkern u1="Ý" u2="v" k="66" /> + <hkern u1="Ý" u2="u" k="147" /> + <hkern u1="Ý" u2="t" k="82" /> + <hkern u1="Ý" u2="s" k="205" /> + <hkern u1="Ý" u2="r" k="143" /> + <hkern u1="Ý" u2="o" k="274" /> + <hkern u1="Ý" u2="j" k="102" /> + <hkern u1="Ý" u2="i" k="25" /> + <hkern u1="Ý" u2="h" k="20" /> + <hkern u1="Ý" u2="g" k="266" /> + <hkern u1="Ý" u2="e" k="274" /> + <hkern u1="Ý" u2="a" k="274" /> + <hkern u1="Ý" u2="Z" k="-25" /> + <hkern u1="Ý" u2="X" k="-25" /> + <hkern u1="Ý" u2="W" k="-20" /> + <hkern u1="Ý" u2="V" k="-25" /> + <hkern u1="Ý" u2="T" k="-20" /> + <hkern u1="Ý" u2="S" k="41" /> + <hkern u1="Ý" u2="Q" k="123" /> + <hkern u1="Ý" u2="O" k="123" /> + <hkern u1="Ý" u2="J" k="246" /> + <hkern u1="Ý" u2="G" k="123" /> + <hkern u1="Ý" u2="C" k="102" /> + <hkern u1="Ý" u2="A" k="184" /> + <hkern u1="Ý" u2="." k="184" /> + <hkern u1="Ý" u2="," k="184" /> + <hkern u1="Þ" u2="y" k="20" /> + <hkern u1="Þ" u2="x" k="41" /> + <hkern u1="Þ" u2="v" k="20" /> + <hkern u1="Þ" u2="s" k="41" /> + <hkern u1="Þ" u2="o" k="61" /> + <hkern u1="Þ" u2="j" k="102" /> + <hkern u1="Þ" u2="g" k="61" /> + <hkern u1="Þ" u2="e" k="61" /> + <hkern u1="Þ" u2="d" k="41" /> + <hkern u1="Þ" u2="c" k="61" /> + <hkern u1="Þ" u2="a" k="61" /> + <hkern u1="Þ" u2="Z" k="61" /> + <hkern u1="Þ" u2="Y" k="123" /> + <hkern u1="Þ" u2="X" k="123" /> + <hkern u1="Þ" u2="W" k="29" /> + <hkern u1="Þ" u2="V" k="41" /> + <hkern u1="Þ" u2="T" k="66" /> + <hkern u1="Þ" u2="J" k="225" /> + <hkern u1="Þ" u2="A" k="184" /> + <hkern u1="Þ" u2="." k="143" /> + <hkern u1="ß" u2="y" k="82" /> + <hkern u1="ß" u2="x" k="82" /> + <hkern u1="ß" u2="w" k="61" /> + <hkern u1="ß" u2="v" k="82" /> + <hkern u1="ß" u2="Y" k="143" /> + <hkern u1="ß" u2="X" k="82" /> + <hkern u1="ß" u2="W" k="61" /> + <hkern u1="ß" u2="V" k="82" /> + <hkern u1="ß" u2="A" k="41" /> + <hkern u1="à" u2="y" k="41" /> + <hkern u1="à" u2="w" k="20" /> + <hkern u1="à" u2="v" k="41" /> + <hkern u1="à" u2="j" k="41" /> + <hkern u1="á" u2="y" k="41" /> + <hkern u1="á" u2="w" k="20" /> + <hkern u1="á" u2="v" k="41" /> + <hkern u1="á" u2="j" k="41" /> + <hkern u1="â" u2="y" k="41" /> + <hkern u1="â" u2="w" k="20" /> + <hkern u1="â" u2="v" k="41" /> + <hkern u1="â" u2="j" k="41" /> + <hkern u1="ã" u2="y" k="41" /> + <hkern u1="ã" u2="w" k="20" /> + <hkern u1="ã" u2="v" k="41" /> + <hkern u1="ã" u2="j" k="41" /> + <hkern u1="ä" u2="y" k="41" /> + <hkern u1="ä" u2="w" k="20" /> + <hkern u1="ä" u2="v" k="41" /> + <hkern u1="ä" u2="j" k="41" /> + <hkern u1="å" u2="y" k="41" /> + <hkern u1="å" u2="w" k="20" /> + <hkern u1="å" u2="v" k="41" /> + <hkern u1="å" u2="j" k="41" /> + <hkern u1="æ" u2="y" k="82" /> + <hkern u1="æ" u2="x" k="82" /> + <hkern u1="æ" u2="w" k="61" /> + <hkern u1="æ" u2="v" k="82" /> + <hkern u1="æ" u2="g" k="20" /> + <hkern u1="æ" u2="a" k="41" /> + <hkern u1="ç" u2="z" k="-25" /> + <hkern u1="ç" u2="y" k="29" /> + <hkern u1="ç" u2="x" k="20" /> + <hkern u1="ç" u2="w" k="20" /> + <hkern u1="ç" u2="v" k="29" /> + <hkern u1="ç" u2="q" k="20" /> + <hkern u1="ç" u2="j" k="20" /> + <hkern u1="è" u2="y" k="57" /> + <hkern u1="è" u2="x" k="61" /> + <hkern u1="è" u2="w" k="41" /> + <hkern u1="è" u2="v" k="57" /> + <hkern u1="è" u2="j" k="61" /> + <hkern u1="è" u2="g" k="20" /> + <hkern u1="è" u2="a" k="41" /> + <hkern u1="é" u2="y" k="57" /> + <hkern u1="é" u2="x" k="61" /> + <hkern u1="é" u2="w" k="41" /> + <hkern u1="é" u2="v" k="57" /> + <hkern u1="é" u2="j" k="61" /> + <hkern u1="é" u2="g" k="20" /> + <hkern u1="é" u2="a" k="41" /> + <hkern u1="ê" u2="y" k="57" /> + <hkern u1="ê" u2="x" k="61" /> + <hkern u1="ê" u2="w" k="41" /> + <hkern u1="ê" u2="v" k="57" /> + <hkern u1="ê" u2="j" k="61" /> + <hkern u1="ê" u2="g" k="20" /> + <hkern u1="ê" u2="a" k="41" /> + <hkern u1="ë" u2="y" k="57" /> + <hkern u1="ë" u2="x" k="61" /> + <hkern u1="ë" u2="w" k="41" /> + <hkern u1="ë" u2="v" k="57" /> + <hkern u1="ë" u2="j" k="61" /> + <hkern u1="ë" u2="g" k="20" /> + <hkern u1="ë" u2="a" k="41" /> + <hkern u1="ì" u2="j" k="41" /> + <hkern u1="í" u2="j" k="41" /> + <hkern u1="î" u2="j" k="41" /> + <hkern u1="ï" u2="j" k="20" /> + <hkern u1="ð" u2="y" k="61" /> + <hkern u1="ð" u2="x" k="61" /> + <hkern u1="ð" u2="w" k="41" /> + <hkern u1="ð" u2="v" k="61" /> + <hkern u1="ð" u2="j" k="41" /> + <hkern u1="ð" u2="g" k="20" /> + <hkern u1="ñ" u2="y" k="41" /> + <hkern u1="ñ" u2="v" k="41" /> + <hkern u1="ñ" u2="j" k="41" /> + <hkern u1="ò" u2="z" k="29" /> + <hkern u1="ò" u2="y" k="74" /> + <hkern u1="ò" u2="x" k="74" /> + <hkern u1="ò" u2="w" k="49" /> + <hkern u1="ò" u2="v" k="74" /> + <hkern u1="ò" u2="j" k="61" /> + <hkern u1="ò" u2="g" k="20" /> + <hkern u1="ò" u2="a" k="20" /> + <hkern u1="ó" u2="z" k="29" /> + <hkern u1="ó" u2="y" k="74" /> + <hkern u1="ó" u2="x" k="74" /> + <hkern u1="ó" u2="w" k="49" /> + <hkern u1="ó" u2="v" k="74" /> + <hkern u1="ó" u2="j" k="61" /> + <hkern u1="ó" u2="g" k="20" /> + <hkern u1="ó" u2="a" k="20" /> + <hkern u1="ô" u2="z" k="29" /> + <hkern u1="ô" u2="y" k="74" /> + <hkern u1="ô" u2="x" k="74" /> + <hkern u1="ô" u2="w" k="49" /> + <hkern u1="ô" u2="v" k="74" /> + <hkern u1="ô" u2="j" k="61" /> + <hkern u1="ô" u2="g" k="20" /> + <hkern u1="ô" u2="a" k="20" /> + <hkern u1="õ" u2="z" k="29" /> + <hkern u1="õ" u2="j" k="61" /> + <hkern u1="õ" u2="g" k="20" /> + <hkern u1="ö" u2="z" k="29" /> + <hkern u1="ö" u2="y" k="74" /> + <hkern u1="ö" u2="x" k="74" /> + <hkern u1="ö" u2="w" k="49" /> + <hkern u1="ö" u2="v" k="74" /> + <hkern u1="ö" u2="j" k="61" /> + <hkern u1="ö" u2="g" k="20" /> + <hkern u1="ö" u2="a" k="20" /> + <hkern u1="ø" u2="z" k="20" /> + <hkern u1="ø" u2="y" k="41" /> + <hkern u1="ø" u2="x" k="41" /> + <hkern u1="ø" u2="w" k="25" /> + <hkern u1="ø" u2="v" k="20" /> + <hkern u1="ø" u2="j" k="61" /> + <hkern u1="ø" u2="a" k="20" /> + <hkern u1="ù" u2="j" k="41" /> + <hkern u1="ú" u2="j" k="41" /> + <hkern u1="û" u2="j" k="41" /> + <hkern u1="ü" u2="j" k="41" /> + <hkern u1="ý" u2="ý" k="-20" /> + <hkern u1="ý" u2="z" k="-20" /> + <hkern u1="ý" u2="x" k="-20" /> + <hkern u1="ý" u2="w" k="-20" /> + <hkern u1="ý" u2="v" k="-20" /> + <hkern u1="ý" u2="s" k="29" /> + <hkern u1="ý" u2="q" k="74" /> + <hkern u1="ý" u2="o" k="74" /> + <hkern u1="ý" u2="j" k="102" /> + <hkern u1="ý" u2="g" k="106" /> + <hkern u1="ý" u2="e" k="57" /> + <hkern u1="ý" u2="d" k="61" /> + <hkern u1="ý" u2="c" k="53" /> + <hkern u1="ý" u2="a" k="102" /> + <hkern u1="ý" u2="." k="102" /> + <hkern u1="ý" u2="," k="102" /> + <hkern u1="þ" u2="z" k="49" /> + <hkern u1="þ" u2="y" k="57" /> + <hkern u1="þ" u2="x" k="66" /> + <hkern u1="þ" u2="w" k="45" /> + <hkern u1="þ" u2="v" k="57" /> + <hkern u1="þ" u2="j" k="123" /> + <hkern u1="þ" u2="f" k="20" /> + <hkern u1="þ" u2="a" k="20" /> + <hkern u1="ÿ" u2="ÿ" k="-20" /> + <hkern u1="ÿ" u2="z" k="-20" /> + <hkern u1="ÿ" u2="x" k="-20" /> + <hkern u1="ÿ" u2="w" k="-20" /> + <hkern u1="ÿ" u2="v" k="-20" /> + <hkern u1="ÿ" u2="s" k="29" /> + <hkern u1="ÿ" u2="q" k="74" /> + <hkern u1="ÿ" u2="o" k="74" /> + <hkern u1="ÿ" u2="j" k="102" /> + <hkern u1="ÿ" u2="g" k="106" /> + <hkern u1="ÿ" u2="e" k="57" /> + <hkern u1="ÿ" u2="d" k="61" /> + <hkern u1="ÿ" u2="c" k="53" /> + <hkern u1="ÿ" u2="a" k="102" /> + <hkern u1="ÿ" u2="." k="102" /> + <hkern u1="ÿ" u2="," k="102" /> + <hkern u1="œ" u2="y" k="82" /> + <hkern u1="œ" u2="x" k="82" /> + <hkern u1="œ" u2="w" k="61" /> + <hkern u1="œ" u2="v" k="82" /> + <hkern u1="Ÿ" u2="Ÿ" k="-20" /> + <hkern u1="Ÿ" u2="z" k="123" /> + <hkern u1="Ÿ" u2="w" k="61" /> + <hkern u1="Ÿ" u2="v" k="66" /> + <hkern u1="Ÿ" u2="u" k="147" /> + <hkern u1="Ÿ" u2="t" k="82" /> + <hkern u1="Ÿ" u2="s" k="205" /> + <hkern u1="Ÿ" u2="r" k="143" /> + <hkern u1="Ÿ" u2="o" k="274" /> + <hkern u1="Ÿ" u2="j" k="102" /> + <hkern u1="Ÿ" u2="i" k="25" /> + <hkern u1="Ÿ" u2="h" k="20" /> + <hkern u1="Ÿ" u2="g" k="266" /> + <hkern u1="Ÿ" u2="e" k="274" /> + <hkern u1="Ÿ" u2="a" k="274" /> + <hkern u1="Ÿ" u2="Z" k="-25" /> + <hkern u1="Ÿ" u2="X" k="-25" /> + <hkern u1="Ÿ" u2="W" k="-20" /> + <hkern u1="Ÿ" u2="V" k="-25" /> + <hkern u1="Ÿ" u2="T" k="-20" /> + <hkern u1="Ÿ" u2="S" k="41" /> + <hkern u1="Ÿ" u2="Q" k="123" /> + <hkern u1="Ÿ" u2="O" k="123" /> + <hkern u1="Ÿ" u2="J" k="246" /> + <hkern u1="Ÿ" u2="G" k="123" /> + <hkern u1="Ÿ" u2="C" k="102" /> + <hkern u1="Ÿ" u2="A" k="184" /> + <hkern u1="Ÿ" u2="." k="184" /> + <hkern u1="Ÿ" u2="," k="184" /> + </font> +</defs></svg> diff --git a/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.ttf b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.ttf new file mode 100644 index 0000000000000000000000000000000000000000..20a5e0f8780d55aa6a163f6aa5670fb23240c633 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.ttf differ diff --git a/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff new file mode 100644 index 0000000000000000000000000000000000000000..d44c71f1e796ee0ae0d41c987072519f9ffbc4f0 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff differ diff --git a/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff2 b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..65c95dd470f3025152142eedf5b568df5bc092e3 Binary files /dev/null and b/themes/stayonline/assets/css/fonts/585efefcd1042b6b7705b27073a916be.woff2 differ diff --git a/themes/stayonline/assets/css/styles-legacy.css b/themes/stayonline/assets/css/styles-legacy.css new file mode 100644 index 0000000000000000000000000000000000000000..1ad96bf14049be1386b35dd62080aa8ada5eeb24 --- /dev/null +++ b/themes/stayonline/assets/css/styles-legacy.css @@ -0,0 +1,6 @@ +.content{ + display: -webkit-box !important; +} +.postText{ + margin-top: 1em; +} \ No newline at end of file diff --git a/themes/stayonline/assets/css/styles.css b/themes/stayonline/assets/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..af88a0f92874e23705ca5494682a026dcbb04708 --- /dev/null +++ b/themes/stayonline/assets/css/styles.css @@ -0,0 +1,125 @@ +@font-face {font-family: "Kamerik 205 Bold"; + src: url("fonts/585efefcd1042b6b7705b27073a916be.eot"); /* IE9*/ + src: url("fonts/585efefcd1042b6b7705b27073a916be.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/585efefcd1042b6b7705b27073a916be.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/585efefcd1042b6b7705b27073a916be.woff") format("woff"), /* chrome、firefox */ + url("fonts/585efefcd1042b6b7705b27073a916be.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/585efefcd1042b6b7705b27073a916be.svg#Kamerik 205 Bold") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "Kamerik 205 Book"; + src: url("fonts/19d621e7fe650c7c82424fa2754767da.eot"); /* IE9*/ + src: url("fonts/19d621e7fe650c7c82424fa2754767da.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/19d621e7fe650c7c82424fa2754767da.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/19d621e7fe650c7c82424fa2754767da.woff") format("woff"), /* chrome、firefox */ + url("fonts/19d621e7fe650c7c82424fa2754767da.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/19d621e7fe650c7c82424fa2754767da.svg#Kamerik 205 Book") format("svg"); /* iOS 4.1- */ +} +@font-face {font-family: "Kamerik 205 Thin"; + src: url("fonts/0254a98dd4dd664268f86802ef75f4df.eot"); /* IE9*/ + src: url("fonts/0254a98dd4dd664268f86802ef75f4df.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("fonts/0254a98dd4dd664268f86802ef75f4df.woff2") format("woff2"), /* chrome、firefox */ + url("fonts/0254a98dd4dd664268f86802ef75f4df.woff") format("woff"), /* chrome、firefox */ + url("fonts/0254a98dd4dd664268f86802ef75f4df.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("fonts/0254a98dd4dd664268f86802ef75f4df.svg#Kamerik 205 Thin") format("svg"); /* iOS 4.1- */ +} +body{ + background-color: black; +} +.background{ + background-size: cover; + position:absolute; + top:0px; + right:0px; + bottom:0px; + left:0px; + z-index: -1; +} + +.serverLogo{ + position: fixed; + width: 20%; + left: 2.5%; + bottom: 2.5%; + margin: auto; +} + +.rightBottom{ + position: fixed; + bottom: 0; + right: 0; +} +.gmodLoadingBar{ + width: 400px; + height: 66px; + margin: 10px; + background-color: #6f7277; +} + +.content{ + position: fixed; + width: 70%; + height: 60%; + background-color: rgba(0,0,0,0.75); + top: 0; + bottom: 0; + right: 7.4%; + margin: auto; + + display: flex; + flex-direction: row; +} + +.postText{ + margin-left: 1em; + width: 67%; + margin: 1em; + margin-top: -0.5em; +} +.postText h1{ + color: white; + font-family: "Kamerik 205 Bold"; + font-size: 3em; + font-weight: 400; +} +.postText p{ + color: white; + font-family: "Kamerik 205 Book"; + font-size: 1.3em; +} +.postImage{ + height: 100%; + width: 33%; + background-size: cover; +} +.leftInfos{ + position: fixed; + top: 50%; + -ms-transform: translateY(-50%); + transform: translateY(-50%); + left: 3%; + margin: 0; + + display: flex; + flex-direction: column; +} +.leftInfos img{ + height: 56px; +} + +.serverInfo{ + width: auto; + height: 64px; + color: white; + font-family: "DINNextLTPro-Condensed"; + padding-left: 32px; + padding-right: 32px; + border-radius: 32px; + margin-top: 1em; + + display: flex; + flex-direction: row; + align-items: center; +} +.serverInfo p{ + font-size: 36px; +} \ No newline at end of file diff --git a/themes/stayonline/assets/images/postAwesomium.jpg b/themes/stayonline/assets/images/postAwesomium.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41decc56605f857ecdd7399be22da49ae0072e1c Binary files /dev/null and b/themes/stayonline/assets/images/postAwesomium.jpg differ diff --git a/themes/stayonline/assets/images/themeTopImage.jpg b/themes/stayonline/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..feb1b87cfe20a14396c3402952a26c95d75951d4 Binary files /dev/null and b/themes/stayonline/assets/images/themeTopImage.jpg differ diff --git a/themes/stayonline/index.php b/themes/stayonline/index.php new file mode 100644 index 0000000000000000000000000000000000000000..59f93296693048e12c78e4afb25777b57b7cc909 --- /dev/null +++ b/themes/stayonline/index.php @@ -0,0 +1,166 @@ +<?php +//Détection du naviguateur et récupération de l'ip +function getUserIpAddr(){ + if(!empty($_SERVER['HTTP_CLIENT_IP'])){ + //ip from share internet + $ip = $_SERVER['HTTP_CLIENT_IP']; + }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ + //ip pass from proxy + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + }else{ + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; +} +$browser = new Browser(); +if( $browser->getBrowser() == (Browser::BROWSER_CHROME OR Browser::BROWSER_EDGE) && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; //Version non Chromium de Garry's Mod +} else { + $oldWebBrowser = true; //Naviguateur & Version Chromium de Garry's Mod +} + +//Récupération du contenu depuis la base de donnée +$backgroundImage = json_decode(getParameters("backgroundImages")); + + //////////////////////////////// + // Récupère les posts/Astuces // +//////////////////////////////// +$res=$bdd->query("SELECT * FROM posts"); +$result = $res->fetchAll(); +$loadingPostsText = array(); //Création d'une liste +$loadingPostsImages = array(); //Idem +foreach ( $result as $row ) {; //Boucle qui s'éxecute à chaque post/Astuce + array_push($loadingPostsText, "<h1>".$row[1]."</h1>".$row[2]); //Assemble le titre et le texte du post/astuce (j'allais pas créer une variable juste pour le titre mdr) + array_push($loadingPostsImages, $row[3]); //Créé un item contenu l'image du post/Astuce, c'est dans le même ordre +} +$loadingPostsText = json_encode($loadingPostsText); //Encode en JSON pour pouvoir récupérer la variable plus bas +$loadingPostsImages = json_encode($loadingPostsImages); //Idem +?> + +<!DOCTYPE html> +<html> +<head> + <title><?=getParameters("siteName")?></title> + <meta charset="utf-8"> + + <link rel="stylesheet" href="themes/<?=getParameters("theme")?>/assets/css/styles.css"> + <?php + if ($oldWebBrowser == true) { + echo ('<link rel="stylesheet" href="themes/'.getParameters("theme").'/assets/css/styles-legacy.css">'); + echo (''); + } + ?> + <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +</head> +<body> + <audio id="backMusic" preload="auto"></audio> + <!-- Fond --> + <div class="background"></div> + <img class="serverLogo" src="<?=getParameters("serverLogo")?>"> + + + <div class="content"> + <div class="postText"></div> + <div class="postImage"></div> + </div> + + <div class="rightBottom"> + <div class="gmodLoadingBar"></div> + </div> + + <script type="text/javascript"> + var backgroundImages = <?=getParameters("backgroundImages")?>; + + //1s = 1000 ms + var timeBackChange = <?=getParameters("timeBackChange")?>; + var timePostChange = <?=getParameters("timePostChange")?>; + + //Il est important de mettre le même nombre d'images que de tips, et dans le bon ordre. + var loadingPostsText = <?=$loadingPostsText?>; + + var loadingPostsImages = <?=$loadingPostsImages?>; + + var playlist = <?=getParameters("musics")?>; + + //Permet de générer un nombre aléatoire entre 0 et un nombre défini + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + //////////////////////// + // Partie backgrounds // + //////////////////////// + var i = getRandomInt(backgroundImages.length); //Prend comme valeur le nombre d'éléments que contient la liste + var b = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + $(".background").css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + setInterval(function () { + b = i; + i = getRandomInt(backgroundImages.length); + while (i == b) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + i = getRandomInt(backgroundImages.length); + } + $(".background").fadeOut("slow", function () { + $(this).css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + $(this).fadeIn("slow"); + }); + }, timeBackChange); + + ////////////////////////// + // Partie Posts/astuces // + ////////////////////////// + var o = getRandomInt(loadingPostsText.length); //Prend comme valeur le nombre d'éléments que contient la liste + var c = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + + <?php + if ($oldWebBrowser == true) { ?> + $(".postText").html("<h1>Hep hep hep!</h1><p>Il semblerait que tu n'utilises pas la Bêta Chromium de Garry's Mod!<br>Le naviguateur intégré de la version par défaut se fait très vieux (2012). <br><br>La plupart des fonction de style utilisées aujourd'hui sont incompatible, et certains éléments risquent de ne pas s'afficher correctement. Penses à faire le changement!</p>"); + $(".postImage").css("background-image", "url(themes/<?=getParameters("theme")?>/assets/images/postAwesomium.jpg)"); + <?php } else { ?> + $(".postText").html(loadingPostsText[0]); + $(".postImage").css("background-image", "url("+loadingPostsImages[0]+")"); + <?php } ?> + + setInterval(function () { + c = o; + o = getRandomInt(loadingPostsText.length); + while (o == c) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + o = getRandomInt(loadingPostsText.length); + } + + $(".postText").fadeOut("slow", function () { + $(".postText").html(loadingPostsText[c]); + $(".postImage").css("background-image", "url("+loadingPostsImages[c]+")"); + $(this).fadeIn("slow"); + }); + + }, timePostChange); + + $(document).ready(function() { + var backMusic = document.getElementById("backMusic"); + backMusic.volume = 0.3; + backMusic.controls = false; + + + function player(x) { + var i = 0; + backMusic.src = playlist[x]; // x is the index number of the playlist array + backMusic.load(); // use the load method when changing src + backMusic.play(); + backMusic.onended = function() { // Once the initial file is played it plays the rest of the files + /* This would be better as a 'for' loop */ + i++; + if (i > 2) { // ... Repeat + i = 0; // ^ + } // ^ + backMusic.src = playlist[i]; // Rinse, ^ + backMusic.load(); // Lather, ^ + backMusic.play(); // and.....^ + } + } + player(0); // Call the player() function at 0 index of playlist array + }); + + + </script> +</body> +</html> \ No newline at end of file diff --git a/themes/stayonline/theme.json b/themes/stayonline/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..c3626ab8900b6cafaba5467935cf3f5abb45901c --- /dev/null +++ b/themes/stayonline/theme.json @@ -0,0 +1,11 @@ +{ + "name": "stayonline", + "showname": "Stay Online", + "version": "1.0", + "compatible": "1.1d", + "author": "SofianeLasri", + "description": "Reproduction d'un loading screen très connu.", + "index": "index.php", + "features": ["dynamicBackgrounds", "tips", "musics"], + "include": "" +} \ No newline at end of file diff --git a/themes/sunvibes/assets/css/styles-legacy.css b/themes/sunvibes/assets/css/styles-legacy.css new file mode 100644 index 0000000000000000000000000000000000000000..96b880a1f5c9d9920b2e2b1423c2cf2f00d1f27f --- /dev/null +++ b/themes/sunvibes/assets/css/styles-legacy.css @@ -0,0 +1,14 @@ +.loadingPosts{ + display: -webkit-box !important; + width: 30% !important; +} +.postText{ + margin-top: 1em; + max-width: 100% !important; +} + +@media (min-width: 1366px) { + #postImage{ + width: 43em; + } +} \ No newline at end of file diff --git a/themes/sunvibes/assets/css/styles.css b/themes/sunvibes/assets/css/styles.css new file mode 100644 index 0000000000000000000000000000000000000000..d4213471dd9e20e974b01597ddf42365900f4d59 --- /dev/null +++ b/themes/sunvibes/assets/css/styles.css @@ -0,0 +1,93 @@ +@font-face {font-family: "COCOGOOSE"; + src: url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.eot"); /* IE9*/ + src: url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff2") format("woff2"), /* chrome、firefox */ + url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff") format("woff"), /* chrome、firefox */ + url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("../fonts/d14035f6b1afeabafbee4abb2ebf0fc6.svg#COCOGOOSE") format("svg"); /* iOS 4.1- */ +} + +@font-face {font-family: "DIN Next LT W01 Bold"; + src: url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.eot"); /* IE9*/ + src: url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */ + url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff2") format("woff2"), /* chrome、firefox */ + url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff") format("woff"), /* chrome、firefox */ + url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url("../fonts/25c8d3f21fac75e401fe67e5c3878ae4.svg#DIN Next LT W01 Bold") format("svg"); /* iOS 4.1- */ +} +body{ + background-color: black; +} +.background{ + background-size: cover; + position:absolute; + top:0px; + right:0px; + bottom:0px; + left:0px; + z-index: -1; +} +.overlay{ + background-image: url("../images/blue-background-effect-trans.png"); + background-repeat: repeat; + -webkit-box-shadow: inset 0px 0px 90px 1px #000000; + -moz-box-shadow: inset 0px 0px 90px 1px #000000; + box-shadow: inset 0px 0px 90px 1px #000000; + position: absolute; + top: 0px; + right: 0px; + bottom: 0px; + left: 0px; +} + +.topImage{ + position: fixed; + width: 100%; + margin-top: -1%; + margin-left: -0.5%; +} + +.serverLogo{ + position: fixed; + width: 20%; + left: 5%; + top: 5%; +} + +.rightBottom{ + position: fixed; + bottom: 0; + right: 0; +} +.gmodLoadingBar{ + width: 400px; + height: 66px; + margin: 10px; + background-color: #6f7277; +} +.loadingPosts{ + z-index: 10; + position:fixed; + bottom: 5%; + left:2.5%; + margin:auto; + display: flex; + flex-direction: row; +} +#postImage{ + width: 45vw; +} +.postText{ + margin-top: 1em; + max-width: 50%; +} +.postText h1{ + color: white; + font-family: "DIN Next LT W01 Bold"; + font-size: 2.4em; +} +.postText p{ + color: white; + font-family: "COCOGOOSE"; + font-size: auto; +} \ No newline at end of file diff --git a/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.eot b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.eot new file mode 100644 index 0000000000000000000000000000000000000000..a2e4a48a0debb704280ad3bedd75dda700c8cbe1 Binary files /dev/null and b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.eot differ diff --git a/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.svg b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.svg new file mode 100644 index 0000000000000000000000000000000000000000..0b90880e160924686a65955a823ce63be82d4f53 --- /dev/null +++ b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.svg @@ -0,0 +1,2333 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Fri Aug 23 00:11:52 2019 + By www +Copyright (c) 2010 - 2017 Monotype GmbH. All rights reserved. +</metadata> +<defs> +<font id="DINNextLTW01-Bold" horiz-adv-x="556" > + <font-face + font-family="DIN Next LT W01" + font-weight="700" + font-stretch="normal" + units-per-em="1000" + panose-1="2 11 8 3 2 2 3 5 2 3" + ascent="800" + descent="-200" + x-height="484" + cap-height="680" + bbox="-46.6667 -207 1076 925" + underline-thickness="50" + underline-position="-75" + unicode-range="U+000D-2122" + /> +<missing-glyph horiz-adv-x="506" +d="M0 10v660q0 10 10 10h486q10 0 10 -10v-660q0 -10 -10 -10h-486q-10 0 -10 10zM69 71q0 -6 6 -6h356q6 0 6 6v538q0 6 -6 6h-356q-6 0 -6 -6v-538zM209 243q-10 0 -10 10v24q0 29 19 54l46 60q23 30 23 52q0 18 -11.5 30t-29.5 12q-38 0 -48 -39q-2 -11 -11 -9l-65 10 +q-10 0 -8 11q9 49 44.5 77t91.5 28t91.5 -33.5t35.5 -83.5q0 -46 -32 -82l-45 -60q-13 -18 -13 -38v-13q0 -10 -10 -10h-68zM198 124v67q0 10 10 10h71q10 0 10 -10v-67q0 -10 -10 -10h-71q-10 0 -10 10z" /> + <glyph glyph-name=".notdef" horiz-adv-x="506" +d="M0 10v660q0 10 10 10h486q10 0 10 -10v-660q0 -10 -10 -10h-486q-10 0 -10 10zM69 71q0 -6 6 -6h356q6 0 6 6v538q0 6 -6 6h-356q-6 0 -6 -6v-538zM209 243q-10 0 -10 10v24q0 29 19 54l46 60q23 30 23 52q0 18 -11.5 30t-29.5 12q-38 0 -48 -39q-2 -11 -11 -9l-65 10 +q-10 0 -8 11q9 49 44.5 77t91.5 28t91.5 -33.5t35.5 -83.5q0 -46 -32 -82l-45 -60q-13 -18 -13 -38v-13q0 -10 -10 -10h-68zM198 124v67q0 10 10 10h71q10 0 10 -10v-67q0 -10 -10 -10h-71q-10 0 -10 10z" /> + <glyph glyph-name=".null" horiz-adv-x="0" + /> + <glyph glyph-name="nonmarkingreturn" horiz-adv-x="333" + /> + <glyph glyph-name="NULL" horiz-adv-x="0" + /> + <glyph glyph-name="NULL" horiz-adv-x="0" + /> + <glyph glyph-name="CR" unicode="
" horiz-adv-x="236" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="236" + /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="312" +d="M115 199q-10 0 -10 10l-24 461q0 10 10 10h130q10 0 10 -10l-24 -461q0 -10 -10 -10h-82zM86 10v114q0 10 10 10h120q10 0 10 -10v-114q0 -10 -10 -10h-120q-10 0 -10 10z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="374" +d="M227 472q-10 0 -10 10v188q0 10 10 10h79q10 0 10 -10v-188q0 -10 -10 -10h-79zM68 472q-10 0 -10 10v188q0 10 10 10h79q10 0 10 -10v-188q0 -10 -10 -10h-79z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="548" +d="M66 10l25 185h-63q-10 0 -10 10v79q0 10 10 10h76l14 102h-64q-10 0 -10 10v79q0 10 10 10h78l24 175q2 10 11 10h89q11 0 9 -10l-24 -175h104l24 175q2 10 11 10h89q11 0 9 -10l-24 -175h66q10 0 10 -10v-79q0 -10 -10 -10h-80l-14 -102h68q10 0 10 -10v-79 +q0 -10 -10 -10h-81l-25 -185q-2 -10 -11 -10h-89q-11 0 -9 10l25 185h-104l-25 -185q-2 -10 -11 -10h-89q-11 0 -9 10zM213 294h104l14 102h-104z" /> + <glyph glyph-name="dollar" unicode="$" +d="M54 63q-9 7 -2 15l68 84q7 8 13 2q56 -46 120 -53v171q-88 14 -138 65.5t-50 131.5q0 84 52 141.5t136 68.5v59q0 10 10 10h46q10 0 10 -10v-59q88 -7 159 -54q8 -6 2 -15l-58 -84q-6 -8 -14 -3q-46 28 -89 35v-161q94 -15 141.5 -66t47.5 -133q0 -87 -50.5 -144.5 +t-138.5 -70.5v-61q0 -10 -10 -10h-46q-10 0 -10 10v58q-113 6 -199 73zM253 420v143q-50 -19 -50 -73q0 -52 50 -70zM319 118q51 20 51 83q0 48 -51 67v-150z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="814" +d="M158 -1l395 682q6 10 16 10h84q10 0 4 -10l-395 -682q-6 -10 -16 -10h-83q-11 0 -5 10zM198 330q-48 0 -82 22t-47 60q-9 26 -9 97t9 97q13 38 47 60t82 22t82 -22t47 -60q9 -26 9 -97t-9 -97q-13 -38 -47 -60t-82 -22zM198 409q27 0 35 23q4 11 4 77t-4 77q-8 23 -35 23 +t-35 -23q-4 -11 -4 -77t4 -77q8 -23 35 -23zM487 74q-9 26 -9 96q0 71 9 97q13 38 47 60t82 22t82 -22t47 -60q9 -30 9 -97q0 -66 -9 -96q-13 -39 -47 -61t-82 -22t-82 22t-47 61zM581 94q7 -24 35 -24t35 24q4 9 4 76q0 66 -4 77q-8 23 -35 23t-35 -23q-4 -11 -4 -77 +q0 -67 4 -76z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="648" +d="M54 172q0 56 28.5 104t97.5 102q-39 51 -56 84t-17 68q0 70 52 115.5t128 45.5q79 0 128 -46t49 -113q0 -46 -25.5 -84t-88.5 -87l89 -113l66 76q7 8 14 1l69 -58q7 -6 1 -14l-80 -95l18 -22q16 -21 39 -21h15q10 0 10 -10v-95q0 -10 -10 -10h-42q-37 0 -59.5 11.5 +t-47.5 43.5l-8 9q-79 -75 -174 -75q-92 0 -144 50.5t-52 132.5zM279 451q36 28 49 45.5t13 36.5q0 23 -15 38.5t-38 15.5q-24 0 -38.5 -15t-14.5 -39q0 -26 44 -82zM182 183q0 -35 20.5 -56t57.5 -21q46 0 95 48l-104 134q-69 -56 -69 -105z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="215" +d="M68 472q-10 0 -10 10v188q0 10 10 10h79q10 0 10 -10v-188q0 -10 -10 -10h-79z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="311" +d="M180 -74q-129 177 -129 402q0 224 129 402q7 10 16 10h72q11 0 6 -10q-90 -186 -90 -402t90 -402q5 -10 -6 -10h-72q-9 0 -16 10z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="311" +d="M37 -74q90 186 90 402t-90 402q-5 10 6 10h72q9 0 16 -10q129 -178 129 -402q0 -225 -129 -402q-7 -10 -16 -10h-72q-11 0 -6 10z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="367" +d="M156 374q-10 0 -10 10l1 80l-69 -41q-9 -5 -14 4l-27 48q-5 9 4 14l69 38l-69 39q-9 5 -4 14l27 48q5 8 14 3l69 -41l-1 80q0 10 10 10h55q10 0 10 -10l-2 -80l69 41q9 5 14 -3l27 -48q5 -9 -3 -14l-70 -39l70 -38q9 -5 4 -14l-28 -48q-5 -9 -14 -4l-69 41l2 -80 +q0 -10 -10 -10h-55z" /> + <glyph glyph-name="plus" unicode="+" +d="M217 59v152q0 6 -6 6h-150q-10 0 -10 10v98q0 10 10 10h150q6 0 6 6v152q0 10 10 10h102q10 0 10 -10v-152q0 -6 6 -6h150q10 0 10 -10v-98q0 -10 -10 -10h-150q-6 0 -6 -6v-152q0 -10 -10 -10h-102q-10 0 -10 10z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="253" +d="M60 -97v227q0 10 10 10h113q10 0 10 -10v-121q0 -11 -9 -20l-99 -90q-8 -7 -15 -7q-10 0 -10 11z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="392" +d="M52 204q-10 0 -10 10v102q0 10 10 10h288q10 0 10 -10v-102q0 -10 -10 -10h-288z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="259" +d="M60 10v120q0 10 10 10h119q10 0 10 -10v-120q0 -10 -10 -10h-119q-10 0 -10 10z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="436" +d="M45 -1l217 682q3 10 13 10h109q10 0 7 -10l-218 -682q-3 -10 -13 -10h-108q-10 0 -7 10z" /> + <glyph glyph-name="zero" unicode="0" +d="M73 128q-15 45 -15 212t15 212q21 66 73.5 102.5t131.5 36.5t131.5 -36.5t73.5 -102.5q15 -45 15 -212t-15 -212q-21 -66 -73.5 -102.5t-131.5 -36.5t-131.5 36.5t-73.5 102.5zM209 153q15 -46 69 -46t69 46q8 24 8 187t-8 187q-15 46 -69 46t-69 -46q-8 -24 -8 -187 +t8 -187z" /> + <glyph glyph-name="one" unicode="1" +d="M242 10v512h-2l-108 -74q-11 -7 -11 6v124q0 8 7 14l114 82q8 6 18 6h112q10 0 10 -10v-660q0 -10 -10 -10h-120q-10 0 -10 10z" /> + <glyph glyph-name="two" unicode="2" +d="M65 10v93q0 8 5 14l239 284q40 46 40 94q0 35 -20 56.5t-54 21.5q-71 0 -80 -80q0 -10 -11 -8l-110 18q-10 2 -8 12q6 74 63 125t151 51q95 0 152 -55t57 -139q0 -86 -69 -165l-179 -211v-2h238q10 0 10 -10v-99q0 -10 -10 -10h-404q-10 0 -10 10z" /> + <glyph glyph-name="three" unicode="3" +d="M56 145q-2 10 8 13l110 21q9 1 12 -8q21 -64 89 -64q38 0 61 24.5t23 63.5q0 45 -25.5 70.5t-69.5 25.5h-29q-10 0 -10 10v97q0 10 10 10h27q38 0 61 23t23 62q0 36 -20.5 58t-56.5 22q-60 0 -77 -63q-3 -9 -12 -7l-109 21q-10 2 -8 11q12 70 68.5 113t144.5 43 +q98 0 154 -52t56 -136q0 -90 -76 -140v-2q36 -17 62.5 -60t26.5 -105q0 -92 -62.5 -149.5t-159.5 -57.5q-88 0 -147.5 41.5t-73.5 114.5z" /> + <glyph glyph-name="four" unicode="4" +d="M51 99q-10 0 -10 10v102q0 8 2 12l204 449q4 8 14 8h127q10 0 7 -10l-204 -447v-3h125q6 0 6 6v147q0 10 10 10h116q10 0 10 -10v-147q0 -6 6 -6h45q10 0 10 -10v-101q0 -10 -10 -10h-45q-6 0 -6 -6v-83q0 -10 -10 -10h-116q-10 0 -10 10v83q0 6 -6 6h-265z" /> + <glyph glyph-name="five" unicode="5" +d="M71 139q-2 9 8 11l108 21q9 1 12 -8q21 -56 79 -56q56 0 71 48q8 21 8 66q0 46 -8 67q-15 47 -71 47q-50 0 -69 -39q-4 -10 -13 -10h-107q-10 0 -10 10v374q0 10 10 10h380q10 0 10 -10v-99q0 -10 -10 -10h-261q-6 0 -6 -6v-134h3q36 32 102 32q137 0 175 -115 +q14 -44 14 -116q0 -59 -15 -106q-20 -61 -73.5 -94t-127.5 -33q-86 0 -143 41.5t-66 108.5z" /> + <glyph glyph-name="six" unicode="6" +d="M50 203q0 77 50 168l165 302q3 7 12 7h127q12 0 7 -10l-144 -263l2 -2q14 6 42 6q82 0 138.5 -56.5t56.5 -148.5q0 -100 -64.5 -158.5t-163.5 -58.5q-100 0 -164 58t-64 156zM188 201q0 -42 24.5 -68t65.5 -26t65.5 26t24.5 68t-24.5 68.5t-65.5 26.5t-65.5 -26.5 +t-24.5 -68.5z" /> + <glyph glyph-name="seven" unicode="7" +d="M133 11l216 544v3h-143q-6 0 -6 -6v-71q0 -10 -10 -10h-111q-10 0 -10 10v189q0 10 10 10h407q10 0 10 -10v-104q0 -6 -2 -12l-216 -545q-4 -9 -14 -9h-125q-11 0 -6 11z" /> + <glyph glyph-name="eight" unicode="8" +d="M48 196q0 104 81 159v2q-27 19 -46.5 55t-19.5 81q0 83 58 140.5t157 57.5t157 -57.5t58 -140.5q0 -45 -19.5 -81t-46.5 -55v-2q81 -55 81 -159q0 -93 -65 -150t-165 -57t-165 57t-65 150zM278 414q34 0 56 23t22 56q0 34 -21.5 57t-56.5 23t-56.5 -23t-21.5 -57 +q0 -33 22 -56t56 -23zM186 202q0 -42 25.5 -68.5t66.5 -26.5t66.5 26.5t25.5 68.5q0 41 -25.5 67.5t-66.5 26.5t-66.5 -26.5t-25.5 -67.5z" /> + <glyph glyph-name="nine" unicode="9" +d="M145 10l144 263l-2 2q-14 -6 -42 -6q-82 0 -138.5 56.5t-56.5 148.5q0 100 64.5 158.5t163.5 58.5q100 0 164 -58t64 -156q0 -77 -50 -168l-165 -302q-3 -7 -12 -7h-127q-12 0 -7 10zM278 384q41 0 65.5 26.5t24.5 68.5t-24.5 68t-65.5 26t-65.5 -26t-24.5 -68 +t24.5 -68.5t65.5 -26.5z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="270" +d="M75 345q-10 0 -10 10v119q0 10 10 10h120q10 0 10 -10v-119q0 -10 -10 -10h-120zM65 10v120q0 10 10 10h120q10 0 10 -10v-120q0 -10 -10 -10h-120q-10 0 -10 10z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="270" +d="M75 345q-10 0 -10 10v119q0 10 10 10h120q10 0 10 -10v-119q0 -10 -10 -10h-120zM69 -97v227q0 10 10 10h113q10 0 10 -10v-121q0 -12 -8 -20l-100 -90q-8 -7 -15 -7q-10 0 -10 11z" /> + <glyph glyph-name="less" unicode="<" +d="M61 220q-10 3 -10 14v84q0 11 10 14l434 170q10 3 10 -6v-109q0 -9 -10 -13l-265 -97v-2l265 -97q10 -4 10 -13v-109q0 -9 -10 -6z" /> + <glyph glyph-name="equal" unicode="=" +d="M61 322q-10 0 -10 10v98q0 10 10 10h434q10 0 10 -10v-98q0 -10 -10 -10h-434zM61 112q-10 0 -10 10v98q0 10 10 10h434q10 0 10 -10v-98q0 -10 -10 -10h-434z" /> + <glyph glyph-name="greater" unicode=">" +d="M51 56v109q0 9 10 13l265 97v2l-265 97q-10 4 -10 13v109q0 9 10 6l434 -170q10 -3 10 -14v-84q0 -11 -10 -14l-434 -170q-10 -3 -10 6z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="473" +d="M170 199q-10 0 -10 10v42q0 48 29 84l70 91q38 45 38 80q0 29 -18 47.5t-48 18.5q-61 0 -75 -70q-3 -10 -13 -9l-108 16q-10 1 -8 12q11 78 66 124t142 46q88 0 144.5 -51.5t56.5 -128.5q0 -68 -53 -130l-67 -88q-20 -24 -20 -60v-24q0 -10 -10 -10h-116zM158 10v114 +q0 10 10 10h120q10 0 10 -10v-114q0 -10 -10 -10h-120q-10 0 -10 10z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="910" +d="M43 265q0 180 113.5 292t295.5 112t295.5 -111.5t113.5 -289.5q0 -104 -51 -159.5t-127 -55.5q-92 0 -129 65h-1q-34 -64 -134 -64q-113 0 -143 95q-14 41 -14 116q0 76 14 115q30 96 135 96q77 0 108 -51h1v31q0 9 8 9h96q8 0 8 -9v-243q0 -31 15 -47t38 -16 +q65 0 65 117q0 138 -80.5 221.5t-217.5 83.5t-217.5 -83.5t-80.5 -223.5q0 -137 80.5 -220t217.5 -83q113 0 207 47q10 5 14 -4l36 -65q5 -8 -4 -13q-107 -63 -253 -63q-181 0 -295 111.5t-114 289.5zM382 198q16 -46 66 -46q51 0 66 46q6 17 6 67t-6 66q-15 47 -66 47 +q-49 0 -66 -47q-6 -19 -6 -66q0 -46 6 -67z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="610" +d="M65 10v660q0 10 10 10h265q108 0 162.5 -48.5t54.5 -132.5q0 -101 -79 -145v-2q37 -14 64 -55.5t27 -98.5q0 -99 -61.5 -148.5t-174.5 -49.5h-258q-10 0 -10 10zM218 402h104q42 0 65.5 21t23.5 59q0 37 -23.5 58t-65.5 21h-104q-6 0 -6 -6v-147q0 -6 6 -6zM212 125 +q0 -6 6 -6h112q45 0 68.5 22.5t23.5 62.5t-24 62.5t-68 22.5h-112q-6 0 -6 -6v-158z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="575" +d="M66 156q-19 56 -19 184t19 184q27 82 89.5 124.5t152.5 42.5q86 0 147 -39.5t90 -111.5q5 -9 -5 -12l-109 -49q-9 -5 -14 5q-33 77 -108 77q-78 0 -102 -75q-11 -34 -11 -146t11 -146q24 -75 102 -75q75 0 108 77q5 10 14 5l109 -49q10 -3 5 -12q-29 -72 -90 -111.5 +t-147 -39.5q-90 0 -152.5 42.5t-89.5 124.5z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="630" +d="M65 10v660q0 10 10 10h253q186 0 235 -153q18 -57 18 -187t-18 -187q-49 -153 -235 -153h-253q-10 0 -10 10zM212 137q0 -6 6 -6h77q103 0 126 75q11 31 11 134t-11 134q-23 75 -126 75h-77q-6 0 -6 -6v-406z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="565" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10h-436q-10 0 -10 10z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="557" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-143q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-256q0 -10 -10 -10h-127q-10 0 -10 10z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="628" +d="M66 154q-19 60 -19 186t19 186q26 81 91.5 123t158.5 42q91 0 154 -40t88 -105q5 -10 -4 -15l-107 -45q-11 -3 -14 5q-41 70 -117 70q-85 0 -109 -76q-11 -33 -11 -145q0 -113 11 -146q24 -75 111 -75q39 0 69 18.5t40 51.5q8 27 8 67q0 6 -6 6h-92q-10 0 -10 10v96 +q0 10 10 10h234q10 0 10 -10v-56q0 -101 -17 -153q-25 -81 -91 -125.5t-157 -44.5q-93 0 -158.5 42t-91.5 123z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="658" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-255q0 -6 6 -6h222q6 0 6 6v255q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10v262q0 6 -6 6h-222q-6 0 -6 -6v-262q0 -10 -10 -10h-127q-10 0 -10 10z" /> + <glyph glyph-name="I" unicode="I" horiz-adv-x="277" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10z" /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="521" +d="M21 76q-5 8 1 14l93 71q7 5 14 -2q34 -40 83 -40q48 0 74 30.5t26 87.5v433q0 10 10 10h127q10 0 10 -10v-426q0 -124 -65 -189.5t-183 -65.5q-61 0 -113.5 24.5t-76.5 62.5z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="645" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-294l226 295q6 9 17 9h145q5 0 6.5 -4t-2.5 -9l-206 -258l225 -397q7 -12 -6 -12h-147q-10 0 -15 9l-154 286l-89 -112v-173q0 -10 -10 -10h-127q-10 0 -10 10z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="550" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-533q0 -6 6 -6h300q10 0 10 -10v-111q0 -10 -10 -10h-443q-10 0 -10 10z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="763" +d="M65 10v660q0 10 10 10h119q12 0 16 -10l172 -388h4l169 388q4 10 16 10h117q10 0 10 -10v-660q0 -10 -10 -10h-113q-10 0 -10 10v383h-4l-126 -287q-6 -13 -19 -13h-69q-13 0 -19 13l-126 287h-4v-383q0 -10 -10 -10h-113q-10 0 -10 10z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="655" +d="M65 10v660q0 10 10 10h120q11 0 17 -10l240 -428h5v428q0 10 10 10h113q10 0 10 -10v-660q0 -10 -10 -10h-119q-11 0 -17 10l-241 427h-5v-427q0 -10 -10 -10h-113q-10 0 -10 10z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="605" +d="M202 0h-127q-10 0 -10 10v660q0 10 10 10h264q110 0 173.5 -60t63.5 -159q0 -97 -64 -157.5t-173 -60.5h-121q-6 0 -6 -6v-227q0 -10 -10 -10zM330 370q46 0 72.5 24.5t26.5 66.5t-26.5 67t-72.5 25h-112q-6 0 -6 -6v-171q0 -6 6 -6h112z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="628" +d="M616 29l-80 -78q-8 -7 -15 0l-69 69q-62 -31 -138 -31q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-5 -15 -17 -41l71 -70q7 -7 0 -14zM314 118q21 0 36 4l-43 43q-7 7 0 14l80 76q8 7 15 0 +l27 -27q4 31 4 112q0 114 -11 147q-24 75 -108 75t-108 -75q-11 -33 -11 -147t11 -147q24 -75 108 -75z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="624" +d="M583 0h-142q-11 0 -15 10l-117 249h-91q-6 0 -6 -6v-243q0 -10 -10 -10h-127q-10 0 -10 10v660q0 10 10 10h271q104 0 167.5 -58.5t63.5 -152.5q0 -65 -32 -114.5t-89 -74.5l134 -268q2 -4 0 -8t-7 -4zM338 384q42 0 67 23t25 62q0 38 -25 61t-67 23h-120q-6 0 -6 -6 +v-157q0 -6 6 -6h120z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="595" +d="M294 -11q-77 0 -149 26.5t-113 66.5q-8 8 -1 17l76 87q6 8 15 1q88 -70 178 -70q52 0 81.5 22t29.5 59q0 32 -23.5 50t-81.5 26l-36 5q-215 30 -215 204q0 94 65.5 151t175.5 57q139 0 231 -71q9 -6 2 -15l-61 -91q-6 -8 -14 -3q-80 52 -158 52q-44 0 -67.5 -20.5 +t-23.5 -53.5q0 -30 24.5 -48.5t81.5 -26.5l36 -5q214 -29 214 -206q0 -96 -69.5 -155t-197.5 -59z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="557" +d="M342 0h-127q-10 0 -10 10v533q0 6 -6 6h-172q-10 0 -10 10v111q0 10 10 10h503q10 0 10 -10v-111q0 -10 -10 -10h-172q-6 0 -6 -6v-533q0 -10 -10 -10z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="645" +d="M323 -11q-118 0 -189.5 68.5t-71.5 192.5v420q0 10 10 10h127q10 0 10 -10v-424q0 -60 31 -93.5t83 -33.5t82.5 33.5t30.5 93.5v424q0 10 10 10h127q10 0 10 -10v-420q0 -124 -71.5 -192.5t-188.5 -68.5z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="595" +d="M356 0h-116q-10 0 -13 10l-216 659q-3 11 9 11h130q10 0 13 -10l136 -446h3l132 446q3 10 13 10h129q11 0 8 -11l-216 -659q-3 -10 -12 -10z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="865" +d="M665 0h-100q-10 0 -13 10l-118 423h-2l-119 -423q-3 -10 -13 -10h-100q-9 0 -12 10l-176 660q-2 10 8 10h129q10 0 12 -10l98 -427h2l116 427q3 10 13 10h87q9 0 12 -10l120 -427h2l94 427q1 10 12 10h128q10 0 8 -10l-175 -660q-2 -10 -13 -10z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="595" +d="M576 0h-139q-11 0 -17 10l-121 207h-3l-122 -207q-6 -10 -17 -10h-138q-5 0 -7 4t1 8l203 339l-189 317q-6 12 6 12h139q10 0 16 -10l108 -184h3l108 184q6 10 16 10h139q12 0 6 -12l-190 -317l204 -339q6 -12 -6 -12z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="568" +d="M347 0h-127q-10 0 -10 10v261l-201 399q-4 10 7 10h130q11 0 15 -10l123 -248h3l123 248q4 10 15 10h126q5 0 7 -3t0 -7l-201 -399v-261q0 -10 -10 -10z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="546" +d="M496 0h-446q-10 0 -10 10v110q0 6 3 10l293 417v2h-275q-10 0 -10 10v111q0 10 10 10h435q10 0 10 -10v-110q0 -6 -3 -10l-294 -417v-2h287q10 0 10 -10v-111q0 -10 -10 -10z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="302" +d="M264 -84h-190q-10 0 -10 10v804q0 10 10 10h190q10 0 10 -10v-84q0 -10 -10 -10h-70q-6 0 -6 -6v-604q0 -6 6 -6h70q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="436" +d="M384 -11h-109q-10 0 -13 10l-217 682q-3 10 7 10h108q10 0 13 -10l218 -682q3 -10 -7 -10z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="302" +d="M228 -84h-190q-10 0 -10 10v84q0 10 10 10h70q6 0 6 6v604q0 6 -6 6h-70q-10 0 -10 10v84q0 10 10 10h190q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="asciicircum" unicode="^" +d="M499 253h-109q-10 0 -14 10l-97 248h-2l-98 -248q-3 -10 -13 -10h-109q-10 0 -7 10l171 407q5 10 14 10h86q9 0 14 -10l171 -407q3 -10 -7 -10z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="520" +d="M520 -152h-520v88h520v-88z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="454" +d="M328 551h-92q-12 0 -19 10l-99 130q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="551" +d="M331 -11q-90 0 -127 56h-1v-35q0 -10 -10 -10h-120q-10 0 -10 10v660q0 10 10 10h120q10 0 10 -10v-231h1q37 56 127 56q126 0 164 -116q17 -54 17 -137t-17 -137q-38 -116 -164 -116zM286 107q58 0 75 52q9 28 9 83q0 54 -9 83q-16 52 -75 52q-58 0 -74 -52 +q-9 -29 -9 -83t9 -83q17 -52 74 -52z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="481" +d="M263 -11q-78 0 -133 35t-76 102q-15 43 -15 116q0 72 15 116q21 67 76 102t133 35q60 0 108 -25t75 -66q5 -8 -2 -14l-87 -57q-9 -6 -15 2q-30 42 -77 42q-59 0 -75 -52q-9 -26 -9 -83t9 -83q16 -52 75 -52q47 0 77 42q6 8 15 2l87 -57q7 -6 2 -14q-27 -41 -75 -66 +t-108 -25z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="551" +d="M478 0h-120q-10 0 -10 10v35h-1q-39 -56 -127 -56q-126 0 -164 116q-17 54 -17 137t17 137q38 116 164 116q88 0 127 -56h1v231q0 10 10 10h120q10 0 10 -10v-660q0 -10 -10 -10zM265 107q57 0 74 52q9 28 9 83q0 54 -9 83q-16 52 -74 52q-59 0 -75 -52q-9 -29 -9 -83 +t9 -83q17 -52 75 -52z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="527" +d="M270 -11q-82 0 -137.5 36t-76.5 102q-17 51 -17 115q0 68 16 116q21 65 76 101t132 36q79 0 133.5 -36t75.5 -100q16 -51 16 -149q0 -10 -11 -10h-293q-6 0 -6 -6q2 -15 6 -27q20 -64 100 -64q65 0 111 43q9 7 14 0l66 -62q8 -7 1 -14q-76 -81 -206 -81zM184 293h160 +q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -17 -5 -36q0 -6 6 -6z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="339" +d="M210 0h-119q-10 0 -10 10v365q0 6 -6 6h-30q-10 0 -10 10v83q0 10 10 10h30q6 0 6 6v23q0 88 41.5 127.5t128.5 39.5h55q10 0 10 -10v-94q0 -10 -10 -10h-31q-33 0 -44 -10.5t-11 -41.5v-24q0 -6 6 -6h79q10 0 10 -10v-83q0 -10 -10 -10h-79q-6 0 -6 -6v-365 +q0 -10 -10 -10z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="543" +d="M239 -191q-54 0 -105.5 20.5t-77.5 52.5q-6 8 1 15l71 72q8 7 15 0q47 -42 100 -42q97 0 97 107v41h-1q-35 -56 -124 -56q-124 0 -162 117q-16 52 -16 121q0 70 16 121q38 117 162 117q89 0 124 -56h1v35q0 10 10 10h120q10 0 10 -10v-422q0 -243 -241 -243zM259 137 +q55 0 72 52q9 27 9 68t-9 68q-17 52 -72 52q-54 0 -72 -52q-8 -29 -8 -68t8 -68q18 -52 72 -52z" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="553" +d="M484 0h-120q-10 0 -10 10v278q0 41 -19 64.5t-56 23.5q-36 0 -56 -24t-20 -64v-278q0 -10 -10 -10h-120q-10 0 -10 10v660q0 10 10 10h120q10 0 10 -10v-230h1q40 55 125 55q79 0 122 -49.5t43 -130.5v-305q0 -10 -10 -10z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="266" +d="M193 561h-120q-10 0 -10 10v99q0 10 10 10h120q10 0 10 -10v-99q0 -10 -10 -10zM193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="266" +d="M193 561h-120q-10 0 -10 10v99q0 10 10 10h120q10 0 10 -10v-99q0 -10 -10 -10zM22 -180h-33q-10 0 -10 10v98q0 10 10 10h20q30 0 42 12t12 44v480q0 10 10 10h120q10 0 10 -10v-479q0 -175 -181 -175z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="531" +d="M509 0h-133q-9 0 -15 10l-108 195l-50 -62v-133q0 -10 -10 -10h-120q-10 0 -10 10v660q0 10 10 10h120q10 0 10 -10v-367l139 171q9 10 19 10h128q4 0 5.5 -3.5t-1.5 -6.5l-148 -171l169 -293q1 -2 1 -4.5t-1.5 -4t-4.5 -1.5z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="304" +d="M264 -6h-53q-80 0 -115 36.5t-35 117.5v522q0 10 10 10h120q10 0 10 -10v-511q0 -46 42 -46h21q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="844" +d="M775 0h-120q-10 0 -10 10v278q0 41 -19.5 64.5t-56.5 23.5q-35 0 -55 -24t-20 -64v-278q0 -10 -10 -10h-120q-10 0 -10 10v278q0 41 -19 64.5t-56 23.5q-36 0 -56 -24t-20 -64v-278q0 -10 -10 -10h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-34h1q40 55 125 55 +q87 0 130 -61h1q58 61 152 61q84 0 128.5 -49t44.5 -131v-305q0 -10 -10 -10z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="553" +d="M484 0h-120q-10 0 -10 10v278q0 41 -19 64.5t-56 23.5q-36 0 -56 -24t-20 -64v-278q0 -10 -10 -10h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-34h1q40 55 125 55q79 0 122 -49.5t43 -130.5v-305q0 -10 -10 -10z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="551" +d="M193 -180h-120q-10 0 -10 10v644q0 10 10 10h120q10 0 10 -10v-35h1q37 56 127 56q126 0 164 -116q17 -54 17 -137t-17 -137q-38 -116 -164 -116q-90 0 -127 56h-1v-215q0 -10 -10 -10zM286 107q58 0 75 52q9 28 9 83q0 54 -9 83q-16 52 -75 52q-58 0 -74 -52 +q-9 -29 -9 -83t9 -83q17 -52 74 -52z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="551" +d="M478 -180h-120q-10 0 -10 10v215h-1q-39 -56 -127 -56q-126 0 -164 116q-17 54 -17 137t17 137q38 116 164 116q88 0 127 -56h1v35q0 10 10 10h120q10 0 10 -10v-644q0 -10 -10 -10zM265 107q57 0 74 52q9 28 9 83q0 54 -9 83q-16 52 -74 52q-59 0 -75 -52q-9 -29 -9 -83 +t9 -83q17 -52 75 -52z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="426" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-41h1q37 62 126 62q51 0 85 -29q7 -6 3 -14l-56 -102q-5 -6 -14 -2q-36 23 -70 22q-75 -3 -75 -105v-255q0 -10 -10 -10z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="505" +d="M253 -11q-134 0 -220 75q-7 7 0 14l65 73q6 6 14 0q69 -53 148 -53q75 0 75 46q0 19 -14.5 28.5t-54.5 13.5l-54 6q-77 8 -117.5 45.5t-40.5 102.5q0 72 52.5 113.5t146.5 41.5q117 0 196 -60q7 -7 1 -15l-56 -69q-6 -7 -14 -2q-61 39 -131 39q-61 0 -61 -40 +q0 -18 14 -27t53 -13l53 -6q161 -16 161 -147q-1 -76 -57.5 -121t-158.5 -45z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="331" +d="M280 -6h-53q-83 0 -118.5 38.5t-35.5 122.5v220q0 6 -6 6h-30q-10 0 -10 10v83q0 10 10 10h30q6 0 6 6v130q0 10 10 10h119q10 0 10 -10v-130q0 -6 6 -6h62q10 0 10 -10v-83q0 -10 -10 -10h-62q-6 0 -6 -6v-214q0 -27 10 -37.5t34 -10.5h24q10 0 10 -10v-99 +q0 -10 -10 -10z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="549" +d="M476 0h-120q-10 0 -10 10v35h-1q-42 -56 -124 -56q-78 0 -120.5 49.5t-42.5 130.5v305q0 10 10 10h120q10 0 10 -10v-278q0 -40 19 -64t55 -24q35 0 54.5 23.5t19.5 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="508" +d="M309 0h-110q-9 0 -12 10l-172 464q-3 10 8 10h126q10 0 13 -10l94 -287h2l90 287q3 10 13 10h124q11 0 8 -10l-172 -464q-3 -10 -12 -10z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="763" +d="M578 0h-100q-9 0 -12 10l-83 281h-2l-85 -281q-3 -10 -12 -10h-99q-9 0 -12 10l-155 464q-3 10 7 10h123q11 0 14 -10l80 -288h2l83 288q3 10 14 10h84q10 0 13 -10l85 -288h2l76 288q3 10 13 10h123q11 0 8 -10l-155 -464q-3 -10 -12 -10z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="515" +d="M489 0h-130q-9 0 -15 9l-87 132h-1l-86 -132q-8 -9 -16 -9h-129q-13 0 -7 10l163 241l-151 223q-6 10 7 10h130q11 0 17 -9l73 -114h1l74 114q8 9 16 9h129q14 0 8 -10l-151 -223l163 -241q6 -10 -8 -10z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="507" +d="M127 -180h-34q-10 0 -10 10v98q0 10 10 10h21q26 0 41.5 11.5t24.5 38.5l13 36l-180 450q-3 10 8 10h128q9 0 12 -10l97 -280h2l90 280q3 10 12 10h124q11 0 8 -10l-196 -515q-30 -79 -67.5 -109t-103.5 -30z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="490" +d="M434 0h-378q-10 0 -10 10v90q0 6 3 10l230 257v2h-210q-10 0 -10 10v95q0 10 10 10h365q10 0 10 -10v-95q0 -5 -3 -10l-228 -252v-2h221q10 0 10 -10v-95q0 -10 -10 -10z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="357" +d="M319 -84h-67q-61 0 -93.5 31.5t-32.5 91.5v153q0 81 -69 81q-10 0 -10 10v94q0 10 10 10q69 0 69 81v149q0 60 32.5 91.5t93.5 31.5h67q10 0 10 -10v-84q0 -10 -10 -10h-28q-42 0 -42 -43v-137q0 -56 -16.5 -83.5t-55.5 -41.5v-2q39 -14 55.5 -42t16.5 -84v-140 +q0 -43 42 -43h28q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="335" +d="M217 -84h-99q-10 0 -10 10v804q0 10 10 10h99q10 0 10 -10v-804q0 -10 -10 -10z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="357" +d="M105 -84h-67q-10 0 -10 10v84q0 10 10 10h28q42 0 42 43v140q0 56 16.5 84t55.5 42v2q-39 14 -55.5 41.5t-16.5 83.5v137q0 43 -42 43h-28q-10 0 -10 10v84q0 10 10 10h67q61 0 93.5 -31.5t32.5 -91.5v-149q0 -81 69 -81q10 0 10 -10v-94q0 -10 -10 -10q-69 0 -69 -81 +v-153q0 -60 -32.5 -91.5t-93.5 -31.5z" /> + <glyph glyph-name="asciitilde" unicode="~" +d="M510 296q-22 -48 -60 -76.5t-84 -28.5q-51 0 -105 35q-39 25 -65 25q-38 0 -65 -49q-5 -9 -15 -2l-67 41q-7 5 -3 14q22 48 60 76.5t84 28.5q51 0 105 -35q39 -25 65 -25q38 0 65 49q5 9 15 2l67 -41q7 -4 3 -14z" /> + <glyph glyph-name="uni00A0" unicode=" " horiz-adv-x="236" + /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="312" +d="M197 285q10 0 10 -10l24 -461q0 -10 -10 -10h-130q-10 0 -10 10l24 461q0 10 10 10h82zM226 474v-114q0 -10 -10 -10h-120q-10 0 -10 10v114q0 10 10 10h120q10 0 10 -10z" /> + <glyph glyph-name="cent" unicode="¢" +d="M329 572v-78q106 -12 157 -90q5 -9 -2 -14l-87 -57q-9 -7 -15 2q-23 33 -53 39v-264q30 7 53 40q6 8 15 1l87 -57q9 -4 2 -13q-50 -80 -157 -90v-79q0 -10 -10 -10h-45q-10 0 -10 10v79q-140 14 -178 135q-15 43 -15 116q0 72 15 116q39 120 178 136v78q0 10 10 10h45 +q10 0 10 -10zM213 242q0 -58 9 -82q11 -37 42 -47v258q-32 -12 -42 -46q-9 -26 -9 -83z" /> + <glyph glyph-name="sterling" unicode="£" +d="M481 0h-389q-10 0 -10 10v97q0 7 5 12q18 17 26 34.5t8 51.5v58q0 6 -6 6h-41q-10 0 -10 10v79q0 10 10 10h41q6 0 6 6v122q0 93 50.5 144t139.5 51q74 0 121 -38t59 -99q2 -9 -9 -11l-109 -24q-9 0 -11 9q-9 45 -50 45q-50 0 -50 -61v-138q0 -6 6 -6h121q10 0 10 -10 +v-79q0 -10 -10 -10h-121q-6 0 -6 -6v-43q0 -67 -26 -99v-2h245q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="currency" unicode="¤" +d="M520 134l-69 -69q-7 -7 -14 0l-60 60q-45 -25 -99 -25q-55 0 -100 25l-59 -59q-7 -7 -14 0l-68 69q-7 7 0 14l59 59q-23 43 -23 97q0 51 24 97l-60 60q-6 6 0 14l68 69q7 7 14 0l59 -60q47 25 100 25q54 0 99 -25l60 60q7 7 14 0l68 -69q7 -7 0 -14l-60 -60 +q25 -45 25 -97t-24 -97l60 -60q7 -7 0 -14zM278 203q43 0 71 29t28 73t-28 73t-71 29t-70.5 -29t-27.5 -73t27.5 -73t70.5 -29z" /> + <glyph glyph-name="yen" unicode="¥" +d="M338 0h-120q-10 0 -10 10v115q0 6 -6 6h-116q-10 0 -10 10v62q0 10 10 10h116q6 0 6 6v34q0 6 -6 6h-116q-10 0 -10 10v62q0 10 10 10h92v2l-148 327q-4 10 7 10h128q9 0 14 -10l100 -258h3l98 258q3 10 14 10h125q11 0 7 -10l-148 -327v-2h92q10 0 10 -10v-62 +q0 -10 -10 -10h-116q-6 0 -6 -6v-34q0 -6 6 -6h116q10 0 10 -10v-62q0 -10 -10 -10h-116q-6 0 -6 -6v-115q0 -10 -10 -10z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="335" +d="M217 388h-99q-10 0 -10 10v332q0 10 10 10h99q10 0 10 -10v-332q0 -10 -10 -10zM217 -84h-99q-10 0 -10 10v336q0 10 10 10h99q10 0 10 -10v-336q0 -10 -10 -10z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="558" +d="M276 -191q-86 0 -134 40t-54 102q-2 9 6 11l104 18q8 2 10 -7q7 -58 65 -58q31 0 48 15.5t17 41.5q0 33 -23.5 53t-85.5 35q-156 40 -156 191q0 51 23.5 91t64.5 62v1q-64 42 -64 125q0 67 51.5 114t133.5 47q85 0 133 -42t52 -102q1 -9 -7 -10l-102 -18q-10 -2 -10 8 +q-9 58 -63 58q-28 0 -44.5 -15t-16.5 -41q0 -32 23.5 -51t81.5 -34q156 -42 156 -191q0 -51 -25 -92t-63 -61v-1q36 -22 51.5 -53t15.5 -79q0 -68 -52 -113t-136 -45zM279 168q36 0 57.5 22.5t21.5 61.5t-21.5 61.5t-57.5 22.5t-57.5 -22.5t-21.5 -61.5t21.5 -61.5 +t57.5 -22.5z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="454" +d="M374 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99q0 -10 -10 -10zM173 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="811" +d="M405 -11q-149 0 -250 100.5t-101 250.5q0 149 101 250t250 101q150 0 251 -101t101 -250q0 -150 -101 -250.5t-251 -100.5zM405 69q116 0 192 77t76 194t-76 194t-192 77q-115 0 -191 -77t-76 -194t76 -194t191 -77zM415 144q-63 0 -106.5 28t-61.5 82q-10 32 -10 86 +t10 87q18 53 62 81.5t106 28.5q96 0 143 -69q6 -8 -3 -14l-65 -42q-7 -7 -13 2q-25 32 -60 32q-50 0 -64 -45q-6 -17 -6 -61t6 -61q14 -44 64 -44q35 0 60 31q5 9 13 3l65 -43q9 -5 3 -13q-21 -32 -58.5 -50.5t-84.5 -18.5z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="356" +d="M306 392h-77q-10 0 -10 10v13h-1q-26 -28 -82 -28q-43 0 -72.5 22t-29.5 65q0 47 33.5 71.5t95.5 24.5h49q6 0 6 6v6q0 28 -58 28q-36 0 -66 -16q-9 -5 -14 3l-30 51q-5 9 4 14q44 26 118 26q78 0 111 -25t33 -80v-181q0 -10 -10 -10zM165 458q53 0 53 35v8q0 6 -6 6h-42 +q-40 0 -40 -25q0 -24 35 -24z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="563" +d="M492 38l-220 219q-7 7 0 14l220 219q3 3 6.5 1.5t3.5 -5.5v-117q0 -10 -10 -20l-82 -81q-4 -4 0 -8l82 -81q10 -10 10 -20v-117q0 -4 -3.5 -5.5t-6.5 1.5zM248 38l-220 219q-7 7 0 14l220 219q3 3 6.5 1.5t3.5 -5.5v-117q0 -10 -10 -20l-82 -81q-4 -4 0 -8l82 -81 +q10 -10 10 -20v-117q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="logicalnot" unicode="¬" +d="M495 84h-102q-10 0 -10 10v117q0 6 -6 6h-316q-10 0 -10 10v98q0 10 10 10h434q10 0 10 -10v-231q0 -10 -10 -10z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="392" +d="M52 204q-10 0 -10 10v102q0 10 10 10h288q10 0 10 -10v-102q0 -10 -10 -10h-288z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="440" +d="M220 301q-82 0 -137 55t-55 137q0 81 55 136t137 55t137 -55t55 -136q0 -82 -55 -137t-137 -55zM220 341q65 0 107 42.5t42 109.5q0 66 -42 108.5t-107 42.5t-107 -42.5t-42 -108.5q0 -67 42 -109.5t107 -42.5zM187 388h-42q-7 0 -7 7v198q0 7 7 7h88q38 0 59 -18t21 -50 +q0 -43 -39 -60l40 -77q4 -7 -5 -7h-45q-7 0 -10 7l-34 70h-22q-4 0 -4 -5v-65q0 -7 -7 -7zM230 510q28 0 28 22t-28 22h-32q-4 0 -4 -4v-36q0 -4 4 -4h32z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="454" +d="M368 575h-283q-10 0 -10 10v75q0 10 10 10h283q10 0 10 -10v-75q0 -10 -10 -10z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="438" +d="M219 387q-66 0 -109.5 44t-43.5 109t43.5 108.5t109.5 43.5q65 0 109 -43.5t44 -108.5t-44 -109t-109 -44zM219 467q31 0 50 20.5t19 52.5t-19 52t-50 20t-50 -20t-19 -52t19 -52.5t50 -20.5z" /> + <glyph glyph-name="plusminus" unicode="±" +d="M329 170h-102q-10 0 -10 10v151q0 6 -6 6h-150q-10 0 -10 10v98q0 10 10 10h150q6 0 6 6v151q0 10 10 10h102q10 0 10 -10v-151q0 -6 6 -6h150q10 0 10 -10v-98q0 -10 -10 -10h-150q-6 0 -6 -6v-151q0 -10 -10 -10zM495 0h-434q-10 0 -10 10v98q0 10 10 10h434 +q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="358" +d="M309 430h-261q-10 0 -10 10v66q0 10 8 17l144 147q25 27 25 50q0 37 -37 37q-35 0 -41 -38q-2 -11 -11 -9l-79 13q-10 2 -8 11q3 43 41 76.5t102 33.5q60 0 98.5 -34t38.5 -89q0 -56 -49 -103l-96 -98v-1h135q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="358" +d="M181 422q-58 0 -98 25t-49 72q-2 11 7 12l77 15q9 1 13 -7q14 -30 46 -30q20 0 32 11.5t12 30.5q0 43 -50 43h-17q-10 0 -10 10v66q0 10 10 10h14q44 0 44 38q0 39 -39 39q-28 0 -40 -25q-4 -9 -13 -7l-75 14q-9 1 -7 11q9 42 45.5 68t93.5 26q65 0 102 -32t37 -84 +q0 -50 -42 -82v-1q21 -9 36 -34t15 -60q0 -58 -39.5 -93.5t-104.5 -35.5z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="454" +d="M217 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3t-1.5 -7l-99 -130q-7 -10 -19 -10z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="554" +d="M481 0h-120q-10 0 -10 10v37h-1q-30 -51 -92 -54q-34 -1 -54 15h-1v-178q0 -10 -10 -10h-120q-10 0 -10 10v644q0 10 10 10h120q10 0 10 -10v-278q0 -41 19 -64.5t55 -23.5t55 23.5t19 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="657" +d="M569 -180h-96q-10 0 -10 10v740q0 6 -6 6h-69q-6 0 -6 -6v-740q0 -10 -10 -10h-96q-10 0 -10 10v408q-91 6 -148 67.5t-57 153.5q0 96 63.5 158.5t171.5 62.5h273q10 0 10 -10v-840q0 -10 -10 -10z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="259" +d="M189 195h-119q-10 0 -10 10v119q0 10 10 10h119q10 0 10 -10v-119q0 -10 -10 -10z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="454" +d="M249 -160h-97q-10 0 -7 10l61 150q4 10 14 10h84q10 0 7 -10l-46 -150q-3 -10 -16 -10z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="358" +d="M247 430h-86q-10 0 -10 10v282h-2l-64 -40q-4 -2 -7 0t-3 7v84q0 10 9 15l62 41q10 7 17 7h84q10 0 10 -10v-386q0 -10 -10 -10z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="372" +d="M186 384q-113 0 -142 88q-9 26 -9 64t9 64q29 88 142 88t142 -88q9 -26 9 -64t-9 -64q-29 -88 -142 -88zM186 468q32 0 42 28q5 13 5 40t-5 40q-10 28 -42 28t-42 -28q-5 -13 -5 -40t5 -40q10 -28 42 -28z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="563" +d="M315 38q-3 -3 -6.5 -1.5t-3.5 5.5v117q0 10 10 20l82 81q4 4 0 8l-82 81q-10 10 -10 20v117q0 4 3.5 5.5t6.5 -1.5l220 -219q7 -7 0 -14zM71 38q-3 -3 -6.5 -1.5t-3.5 5.5v117q0 10 10 20l82 81q4 4 0 8l-82 81q-10 10 -10 20v117q0 4 3.5 5.5t6.5 -1.5l221 -219 +q7 -7 0 -14z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="873" +d="M259 274h-86q-10 0 -10 10v282h-2l-64 -40q-4 -2 -7 0t-3 7v84q0 10 9 15l62 41q10 7 17 7h84q10 0 10 -10v-386q0 -10 -10 -10zM263 -11h-84q-11 0 -5 10l395 682q6 10 16 10h84q11 0 5 -10l-395 -682q-6 -10 -16 -10zM745 0h-79q-10 0 -10 10v40q0 6 -6 6h-164 +q-10 0 -10 10v69q0 7 5 17l115 244q5 10 14 10h91q11 0 6 -10l-117 -251v-1h60q6 0 6 6v69q0 10 10 10h79q10 0 10 -10v-69q0 -6 6 -6h15q10 0 10 -10v-68q0 -10 -10 -10h-15q-6 0 -6 -6v-40q0 -10 -10 -10z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="907" +d="M259 274h-86q-10 0 -10 10v282h-2l-64 -40q-4 -2 -7 0t-3 7v84q0 10 9 15l62 41q10 7 17 7h84q10 0 10 -10v-386q0 -10 -10 -10zM263 -11h-84q-11 0 -5 10l395 682q6 10 16 10h84q11 0 5 -10l-395 -682q-6 -10 -16 -10zM809 0h-261q-10 0 -10 10v66q0 10 8 17l144 147 +q25 27 25 50q0 37 -37 37q-35 0 -41 -38q-2 -11 -11 -9l-79 13q-10 2 -8 11q3 43 41 76.5t102 33.5q60 0 98.5 -34t38.5 -89q0 -56 -49 -103l-96 -98v-1h135q10 0 10 -10v-69q0 -10 -10 -10z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="941" +d="M235 266q-58 0 -98 25t-49 72q-2 11 7 12l77 15q9 1 13 -7q14 -30 46 -30q20 0 32 11.5t12 30.5q0 43 -50 43h-17q-10 0 -10 10v66q0 10 10 10h14q44 0 44 38q0 39 -39 39q-28 0 -40 -25q-4 -9 -13 -7l-75 14q-9 1 -7 11q9 42 45.5 68t93.5 26q65 0 102 -32t37 -84 +q0 -50 -42 -82v-1q21 -9 36 -34t15 -60q0 -58 -39.5 -93.5t-104.5 -35.5zM332 -11h-84q-11 0 -5 10l395 682q6 10 16 10h84q11 0 5 -10l-395 -682q-6 -10 -16 -10zM812 0h-79q-10 0 -10 10v40q0 6 -6 6h-164q-10 0 -10 10v69q0 7 5 17l115 244q5 10 14 10h91q11 0 6 -10 +l-117 -251v-1h60q6 0 6 6v69q0 10 10 10h79q10 0 10 -10v-69q0 -6 6 -6h15q10 0 10 -10v-68q0 -10 -10 -10h-15q-6 0 -6 -6v-40q0 -10 -10 -10z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="473" +d="M305 285q10 0 10 -10v-42q0 -48 -29 -84l-70 -91q-38 -45 -38 -80q0 -29 18 -47.5t48 -18.5q61 0 75 70q3 10 13 9l108 -16q10 -1 8 -12q-11 -78 -66 -124t-142 -46q-88 0 -144.5 51.5t-56.5 128.5q0 68 53 130l67 88q20 24 20 60v24q0 10 10 10h116zM317 474v-114 +q0 -10 -10 -10h-120q-10 0 -10 10v114q0 10 10 10h120q10 0 10 -10z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM370 754h-93q-10 0 -19 9l-123 116q-3 4 -1.5 7t6.5 3h120q11 0 19 -10l95 -115q3 -4 1.5 -7 +t-5.5 -3z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM369 754h-93q-4 0 -5.5 3t1.5 7l95 115q8 10 19 10h120q5 0 6.5 -3t-1.5 -7l-123 -116 +q-9 -9 -19 -9z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM477 747h-80q-12 0 -22 10l-53 54h-2l-52 -54q-10 -10 -22 -10h-80q-4 0 -5.5 3t1.5 7l103 131 +q7 10 19 10h75q11 0 18 -10l104 -131q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM385 748q-33 0 -75 21q-31 18 -58 18q-31 0 -71 -31q-9 -7 -9 2v72q0 12 8 21q35 35 77 35 +q33 0 75 -21q33 -18 58 -18q31 0 71 31q4 3 7 2t3 -4v-72q0 -12 -9 -21q-33 -35 -77 -35z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM468 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10zM265 760h-90 +q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="644" +d="M14 10l234 660q3 10 13 10h126q10 0 13 -10l230 -660q3 -10 -7 -10h-130q-10 0 -13 10l-39 119h-238l-38 -119q-3 -10 -13 -10h-131q-10 0 -7 10zM244 254h157l-77 238h-3zM322 712q-46 0 -76.5 30.5t-30.5 76.5t30.5 76t76.5 30t76.5 -30t30.5 -76t-30.5 -76.5 +t-76.5 -30.5zM322 771q20 0 33 13.5t13 34.5q0 20 -13.5 34t-32.5 14q-20 0 -33.5 -14t-13.5 -34q0 -21 13.5 -34.5t33.5 -13.5z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="929" +d="M875 0h-436q-10 0 -10 10v113q0 6 -6 6h-192l-55 -119q-4 -10 -14 -10h-141q-11 0 -6 10l317 660q5 10 14 10h529q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10 +v-107q0 -10 -10 -10zM426 553l-138 -299h135q6 0 6 6v293h-3z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="575" +d="M298 -160h-97q-10 0 -7 10l58 144q-141 26 -186 162q-19 56 -19 184t19 184q27 82 89.5 124.5t152.5 42.5q86 0 147 -39.5t90 -111.5q5 -9 -5 -12l-109 -49q-9 -5 -14 5q-33 77 -108 77q-78 0 -102 -75q-11 -34 -11 -146t11 -146q24 -75 102 -75q75 0 108 77q5 10 14 5 +l109 -49q10 -3 5 -12q-50 -124 -187 -147l-44 -143q-3 -10 -16 -10z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="565" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10h-436q-10 0 -10 10zM360 754h-93q-10 0 -19 9l-123 116 +q-3 4 -1.5 7t6.5 3h120q11 0 19 -10l95 -115q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="565" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10h-436q-10 0 -10 10zM307 754h-93q-4 0 -5.5 3t1.5 7l95 115 +q8 10 19 10h120q5 0 6.5 -3t-1.5 -7l-123 -116q-9 -9 -19 -9z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="565" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10h-436q-10 0 -10 10zM449 747h-80q-12 0 -22 10l-53 54h-2l-52 -54 +q-10 -10 -22 -10h-80q-4 0 -5.5 3t1.5 7l103 131q7 10 19 10h75q11 0 18 -10l104 -131q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="565" +d="M65 10v660q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10h-436q-10 0 -10 10zM439 760h-90q-10 0 -10 10v98q0 10 10 10h90 +q10 0 10 -10v-98q0 -10 -10 -10zM236 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="Igrave" unicode="Ì" horiz-adv-x="277" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10zM191 754h-93q-10 0 -19 9l-123 116q-4 4 -2 7t7 3h120q11 0 19 -10l95 -115q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Iacute" unicode="Í" horiz-adv-x="277" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10zM183 754h-93q-4 0 -5.5 3t1.5 7l95 115q8 10 19 10h120q5 0 6.5 -3t-1.5 -7l-123 -116q-9 -9 -19 -9z" /> + <glyph glyph-name="Icircumflex" unicode="Î" horiz-adv-x="277" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10zM294 747h-80q-12 0 -22 10l-53 54h-2l-52 -54q-10 -10 -22 -10h-80q-5 0 -6 3t2 7l103 131q7 10 19 10h75q11 0 18 -10l104 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Idieresis" unicode="Ï" horiz-adv-x="277" +d="M65 10v660q0 10 10 10h127q10 0 10 -10v-660q0 -10 -10 -10h-127q-10 0 -10 10zM285 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10zM82 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="628" +d="M328 0h-253q-10 0 -10 10v273q0 6 -6 6h-25q-10 0 -10 10v88q0 10 10 10h25q6 0 6 6v267q0 10 10 10h253q186 0 235 -153q18 -57 18 -187t-18 -187q-49 -153 -235 -153zM295 131q103 0 126 75q11 31 11 134t-11 134q-23 75 -126 75h-77q-6 0 -6 -6v-140q0 -6 6 -6h83 +q10 0 10 -10v-88q0 -10 -10 -10h-83q-6 0 -6 -6v-146q0 -6 6 -6h77z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="655" +d="M65 10v660q0 10 10 10h120q11 0 17 -10l240 -428h5v428q0 10 10 10h113q10 0 10 -10v-660q0 -10 -10 -10h-119q-11 0 -17 10l-241 427h-5v-427q0 -10 -10 -10h-113q-10 0 -10 10zM391 748q-33 0 -75 21q-31 18 -58 18q-31 0 -71 -31q-9 -7 -9 2v72q0 12 8 21q35 35 77 35 +q33 0 75 -21q33 -18 58 -18q31 0 71 31q4 3 7 2t3 -4v-72q0 -12 -9 -21q-33 -35 -77 -35z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75zM376 754h-93q-10 0 -19 9l-123 116q-3 4 -1.5 7t6.5 3h120q11 0 19 -10l95 -115q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75zM344 754h-93q-5 0 -6 3t2 7l95 115q8 10 19 10h120q5 0 7 -3t-2 -7l-123 -116q-9 -9 -19 -9z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75zM469 747h-80q-12 0 -22 10l-53 54h-2l-52 -54q-10 -10 -22 -10h-80q-4 0 -5.5 3t1.5 7l103 131q7 10 19 10h75q11 0 18 -10l104 -131q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75zM377 748q-33 0 -75 21q-31 18 -58 18q-31 0 -71 -31q-9 -7 -9 2v72q0 12 8 21q35 35 77 35q33 0 75 -21q33 -18 58 -18q31 0 71 31q4 3 7 2t3 -4v-72q0 -12 -9 -21q-33 -35 -77 -35z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="628" +d="M314 -11q-91 0 -156.5 42t-91.5 123q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42t156.5 -42t91.5 -123q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146 +q24 -75 107 -75zM460 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10zM257 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="multiply" unicode="×" +d="M480 141l-67 -67q-7 -9 -14 0l-117 116q-4 4 -8 0l-118 -116q-7 -9 -14 0l-67 67q-7 7 0 14l117 117q4 4 0 8l-117 117q-7 7 0 14l68 68q7 7 14 0l117 -117q4 -4 9 0l116 117q7 7 14 0l67 -67q6 -8 0 -14l-116 -117q-4 -5 0 -9l116 -117q7 -7 0 -14z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="628" +d="M120 -30h-70q-11 0 -5 10l61 97q-28 36 -40 77q-19 60 -19 186t19 186q26 81 91.5 123t156.5 42q87 0 149 -38l30 48q5 9 15 9h70q11 0 5 -10l-61 -98q24 -30 40 -76q19 -60 19 -186t-19 -186q-26 -81 -91.5 -123t-156.5 -42q-88 0 -149 37l-30 -47q-5 -9 -15 -9z +M194 340q0 -81 5 -119l189 317q-30 24 -74 24q-83 0 -109 -76q-11 -36 -11 -146zM314 118q83 0 109 76q11 36 11 146q0 79 -5 117l-189 -316q29 -23 74 -23z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="645" +d="M323 -11q-118 0 -189.5 68.5t-71.5 192.5v420q0 10 10 10h127q10 0 10 -10v-424q0 -60 31 -93.5t83 -33.5t82.5 33.5t30.5 93.5v424q0 10 10 10h127q10 0 10 -10v-420q0 -124 -71.5 -192.5t-188.5 -68.5zM383 754h-93q-10 0 -19 9l-123 116q-4 4 -2 7t7 3h120 +q11 0 19 -10l95 -115q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="645" +d="M323 -11q-118 0 -189.5 68.5t-71.5 192.5v420q0 10 10 10h127q10 0 10 -10v-424q0 -60 31 -93.5t83 -33.5t82.5 33.5t30.5 93.5v424q0 10 10 10h127q10 0 10 -10v-420q0 -124 -71.5 -192.5t-188.5 -68.5zM357 754h-93q-4 0 -5.5 3t1.5 7l95 115q8 10 19 10h120 +q5 0 6.5 -3t-1.5 -7l-123 -116q-9 -9 -19 -9z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="645" +d="M323 -11q-118 0 -189.5 68.5t-71.5 192.5v420q0 10 10 10h127q10 0 10 -10v-424q0 -60 31 -93.5t83 -33.5t82.5 33.5t30.5 93.5v424q0 10 10 10h127q10 0 10 -10v-420q0 -124 -71.5 -192.5t-188.5 -68.5zM477 747h-80q-12 0 -22 10l-53 54h-2l-52 -54q-10 -10 -22 -10 +h-80q-4 0 -5.5 3t1.5 7l103 131q7 10 19 10h75q11 0 18 -10l104 -131q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="645" +d="M323 -11q-118 0 -189.5 68.5t-71.5 192.5v420q0 10 10 10h127q10 0 10 -10v-424q0 -60 31 -93.5t83 -33.5t82.5 33.5t30.5 93.5v424q0 10 10 10h127q10 0 10 -10v-420q0 -124 -71.5 -192.5t-188.5 -68.5zM469 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98 +q0 -10 -10 -10zM266 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="568" +d="M347 0h-127q-10 0 -10 10v261l-201 399q-4 10 7 10h130q11 0 15 -10l123 -248h3l123 248q4 10 15 10h126q5 0 7 -3t0 -7l-201 -399v-261q0 -10 -10 -10zM325 754h-93q-4 0 -5.5 3t1.5 7l95 115q8 10 19 10h120q5 0 6.5 -3t-1.5 -7l-123 -116q-9 -9 -19 -9z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="605" +d="M202 0h-127q-10 0 -10 10v660q0 10 10 10h127q10 0 10 -10v-92q0 -6 6 -6h121q110 0 173.5 -60t63.5 -159q0 -98 -64 -158t-173 -60h-121q-6 0 -6 -6v-119q0 -10 -10 -10zM330 262q46 0 72.5 24.5t26.5 66.5t-26.5 67t-72.5 25h-112q-6 0 -6 -6v-171q0 -6 6 -6h112z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="562" +d="M321 -4h-35q-10 0 -10 10v95q0 10 10 10h25q51 0 64 39q4 12 4 76q0 65 -5 80q-14 44 -73 44h-14q-10 0 -10 10v94q0 10 10 10h24q59 0 59 55q0 57 -79 57q-46 0 -67 -21t-21 -67v-478q0 -10 -10 -10h-120q-10 0 -10 10v475q0 206 226 206q106 0 163 -43.5t57 -123.5 +q0 -73 -56 -112v-2q41 -23 54 -67q12 -37 12 -118q0 -91 -13 -130q-17 -52 -62 -75.5t-123 -23.5z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM342 551h-92q-12 0 -19 10l-99 130q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM298 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3t-1.5 -7l-99 -130q-7 -10 -19 -10z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM418 550h-80q-12 0 -22 10l-52 54h-2l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM327 552q-31 0 -75 22q-34 18 -58 18q-32 0 -71 -32q-9 -7 -9 3v72q0 11 8 20q36 36 77 36q31 0 75 -22q36 -18 58 -18q32 0 71 32q4 3 7 2t3 -5v-72q0 -11 -9 -20q-34 -36 -77 -36z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM410 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99q0 -10 -10 -10zM209 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="528" +d="M458 0h-111q-10 0 -10 10v32h-1q-41 -53 -133 -53q-69 0 -115 37.5t-46 110.5q0 78 54 117t147 39h86q6 0 6 6v18q0 35 -21.5 50.5t-77.5 15.5q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48q117 0 166 -41.5t49 -133.5v-310q0 -10 -10 -10zM245 94 +q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51zM266 524q-46 0 -76.5 30t-30.5 76t30.5 76.5t76.5 30.5t76.5 -30.5t30.5 -76.5t-30.5 -76t-76.5 -30zM266 582q19 0 32.5 14t13.5 34q0 21 -13 35t-33 14t-33.5 -14t-13.5 -35q0 -20 13.5 -34t33.5 -14z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="816" +d="M560 -11q-110 0 -166 71h-1q-46 -71 -181 -71q-77 0 -123.5 37.5t-46.5 110.5q0 78 54 117t147 39h86q6 0 6 6v19q0 35 -21.5 50t-77.5 15q-66 0 -108 -31q-8 -6 -13 2l-45 79q-5 9 3 14q68 48 180 48t162 -45h2q52 45 135 45q79 0 133.5 -36t75.5 -100q16 -47 16 -149 +q0 -10 -11 -10h-293q-6 0 -6 -6q0 -11 6 -27q21 -64 101 -64q64 0 110 43q8 6 14 0l66 -62q8 -7 1 -14q-76 -81 -205 -81zM633 293q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -15 -5 -36q0 -6 6 -6h160zM245 94q90 0 90 67v33q0 6 -6 6h-68q-86 0 -86 -55q0 -51 70 -51z +" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="481" +d="M248 -160h-97q-10 0 -7 10l58 144q-116 30 -148 132q-15 43 -15 116q0 72 15 116q21 67 76 102t133 35q60 0 108 -25t75 -66q5 -8 -2 -14l-87 -57q-9 -6 -15 2q-30 42 -77 42q-59 0 -75 -52q-9 -26 -9 -83t9 -83q16 -52 75 -52q47 0 77 42q6 8 15 2l87 -57q7 -6 2 -14 +q-22 -32 -58.5 -56t-79.5 -31l-44 -143q-3 -10 -16 -10z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="527" +d="M270 -11q-82 0 -137.5 36t-76.5 102q-17 51 -17 115q0 68 16 116q21 65 76 101t132 36q79 0 133.5 -36t75.5 -100q16 -51 16 -149q0 -10 -11 -10h-293q-6 0 -6 -6q2 -15 6 -27q20 -64 100 -64q65 0 111 43q9 7 14 0l66 -62q8 -7 1 -14q-76 -81 -206 -81zM184 293h160 +q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -17 -5 -36q0 -6 6 -6zM328 551h-92q-12 0 -19 10l-99 130q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="527" +d="M270 -11q-82 0 -137.5 36t-76.5 102q-17 51 -17 115q0 68 16 116q21 65 76 101t132 36q79 0 133.5 -36t75.5 -100q16 -51 16 -149q0 -10 -11 -10h-293q-6 0 -6 -6q2 -15 6 -27q20 -64 100 -64q65 0 111 43q9 7 14 0l66 -62q8 -7 1 -14q-76 -81 -206 -81zM184 293h160 +q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -17 -5 -36q0 -6 6 -6zM295 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3t-1.5 -7l-99 -130q-8 -10 -19 -10z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="527" +d="M270 -11q-82 0 -137.5 36t-76.5 102q-17 51 -17 115q0 68 16 116q21 65 76 101t132 36q79 0 133.5 -36t75.5 -100q16 -51 16 -149q0 -10 -11 -10h-293q-6 0 -6 -6q2 -15 6 -27q20 -64 100 -64q65 0 111 43q9 7 14 0l66 -62q8 -7 1 -14q-76 -81 -206 -81zM184 293h160 +q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -17 -5 -36q0 -6 6 -6zM418 550h-80q-12 0 -22 10l-52 54h-2l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="527" +d="M270 -11q-82 0 -137.5 36t-76.5 102q-17 51 -17 115q0 68 16 116q21 65 76 101t132 36q79 0 133.5 -36t75.5 -100q16 -51 16 -149q0 -10 -11 -10h-293q-6 0 -6 -6q2 -15 6 -27q20 -64 100 -64q65 0 111 43q9 7 14 0l66 -62q8 -7 1 -14q-76 -81 -206 -81zM184 293h160 +q6 0 6 6q0 19 -5 36q-18 53 -81 53t-81 -53q-5 -17 -5 -36q0 -6 6 -6zM409 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99q0 -10 -10 -10zM208 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="igrave" unicode="ì" horiz-adv-x="266" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM183 551h-92q-11 0 -19 10l-99 130q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="iacute" unicode="í" horiz-adv-x="266" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM175 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3t-1.5 -7l-99 -130q-7 -10 -19 -10z" /> + <glyph glyph-name="icircumflex" unicode="î" horiz-adv-x="266" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM288 550h-80q-12 0 -22 10l-52 54h-2l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="idieresis" unicode="ï" horiz-adv-x="266" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM280 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99q0 -10 -10 -10zM79 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="530" +d="M414 570l-59 -18l20 -28q62 -86 89 -151t27 -138q0 -65 -14 -107q-22 -66 -77.5 -102.5t-133.5 -36.5q-80 0 -135 35.5t-76 99.5q-15 47 -15 98q0 57 14 102q19 59 64 92.5t106 33.5q38 0 64 -16h2l-59 81l-94 -28q-9 -2 -12 7l-20 65q-3 10 7 13l64 19l-57 79 +q-2 4 -0.5 7t6.5 3h123q12 0 19 -10l31 -43l90 27q10 3 13 -6l20 -65q3 -10 -7 -13zM266 104q62 0 79 55q10 27 10 67q0 34 -10 67q-17 56 -79 56q-63 0 -80 -56q-10 -33 -10 -67q0 -40 10 -67q17 -55 80 -55z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="553" +d="M484 0h-120q-10 0 -10 10v278q0 41 -19 64.5t-56 23.5q-36 0 -56 -24t-20 -64v-278q0 -10 -10 -10h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-34h1q40 55 125 55q79 0 122 -49.5t43 -130.5v-305q0 -10 -10 -10zM339 552q-31 0 -75 22q-34 18 -58 18 +q-32 0 -71 -32q-9 -7 -9 3v72q0 11 8 20q36 36 77 36q31 0 75 -22q36 -18 58 -18q32 0 71 32q4 3 7 2t3 -5v-72q0 -11 -9 -20q-34 -36 -77 -36z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52zM324 551h-92q-12 0 -19 10l-99 130q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52zM300 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3t-1.5 -7l-99 -130q-7 -10 -19 -10z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52zM420 550h-80q-12 0 -22 10l-52 54h-2l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52zM328 552q-31 0 -75 22q-34 18 -58 18q-32 0 -71 -32q-9 -7 -9 3v72q0 11 8 20q36 36 77 36q31 0 75 -22q36 -18 58 -18q32 0 71 32q4 3 7 2t3 -5v-72q0 -11 -9 -20q-34 -36 -77 -36z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="530" +d="M265 -11q-78 0 -133.5 35.5t-76.5 100.5q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5t133.5 -35.5t76.5 -100.5q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5t-133.5 -35.5zM265 107q58 0 75 52q9 28 9 83t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -83 +q17 -52 75 -52zM411 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99q0 -10 -10 -10zM210 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="divide" unicode="÷" +d="M278 387q-32 0 -54 22t-22 54q0 31 22 53.5t54 22.5t54 -22.5t22 -53.5q0 -32 -22 -54t-54 -22zM495 217h-434q-10 0 -10 10v98q0 10 10 10h434q10 0 10 -10v-98q0 -10 -10 -10zM278 13q-32 0 -54 22.5t-22 53.5q0 32 22 54t54 22t54 -22t22 -54q0 -31 -22 -53.5 +t-54 -22.5z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="530" +d="M265 -11q-71 0 -123 29l-28 -38q-7 -10 -19 -10h-51q-4 0 -5.5 3t1.5 7l54 75q-27 31 -39 70q-16 51 -16 117t16 117q21 65 76.5 100.5t133.5 35.5q72 0 123 -30l29 39q7 10 19 10h50q11 0 5 -10l-56 -76q26 -28 40 -69q16 -51 16 -117t-16 -117q-21 -65 -76.5 -100.5 +t-133.5 -35.5zM179 242q0 -44 4 -67l131 189q-22 14 -49 14q-60 0 -77 -52q-9 -28 -9 -84zM265 106q60 0 77 52q9 28 9 84q0 42 -4 65l-130 -188q19 -13 48 -13z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="549" +d="M476 0h-120q-10 0 -10 10v35h-1q-42 -56 -124 -56q-78 0 -120.5 49.5t-42.5 130.5v305q0 10 10 10h120q10 0 10 -10v-278q0 -40 19 -64t55 -24q35 0 54.5 23.5t19.5 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM332 551h-92q-11 0 -19 10l-99 130 +q-3 4 -1.5 7t6.5 3h116q12 0 18 -10l76 -130q5 -10 -5 -10z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="549" +d="M476 0h-120q-10 0 -10 10v35h-1q-42 -56 -124 -56q-78 0 -120.5 49.5t-42.5 130.5v305q0 10 10 10h120q10 0 10 -10v-278q0 -40 19 -64t55 -24q35 0 54.5 23.5t19.5 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM309 551h-91q-11 0 -6 10l77 130q6 10 18 10 +h115q5 0 6.5 -3t-1.5 -7l-99 -130q-8 -10 -19 -10z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="549" +d="M476 0h-120q-10 0 -10 10v35h-1q-42 -56 -124 -56q-78 0 -120.5 49.5t-42.5 130.5v305q0 10 10 10h120q10 0 10 -10v-278q0 -40 19 -64t55 -24q35 0 54.5 23.5t19.5 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM429 550h-80q-12 0 -22 10l-52 54h-2 +l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 2 -7t-6 -3z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="549" +d="M476 0h-120q-10 0 -10 10v35h-1q-42 -56 -124 -56q-78 0 -120.5 49.5t-42.5 130.5v305q0 10 10 10h120q10 0 10 -10v-278q0 -40 19 -64t55 -24q35 0 54.5 23.5t19.5 64.5v278q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10zM421 561h-93q-10 0 -10 10v99q0 10 10 10h93 +q10 0 10 -10v-99q0 -10 -10 -10zM220 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="507" +d="M127 -180h-34q-10 0 -10 10v98q0 10 10 10h21q26 0 41.5 11.5t24.5 38.5l13 36l-180 450q-3 10 8 10h128q9 0 12 -10l97 -280h2l90 280q3 10 12 10h124q11 0 8 -10l-196 -515q-30 -79 -67.5 -109t-103.5 -30zM294 551h-91q-11 0 -6 10l77 130q6 10 18 10h115q5 0 6.5 -3 +t-1.5 -7l-99 -130q-7 -10 -19 -10z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="551" +d="M193 -180h-120q-10 0 -10 10v840q0 10 10 10h120q10 0 10 -10v-231h1q37 56 127 56q126 0 164 -116q17 -54 17 -137t-17 -137q-38 -116 -164 -116q-90 0 -127 56h-1v-215q0 -10 -10 -10zM286 107q58 0 75 52q9 28 9 83q0 54 -9 83q-16 52 -75 52q-58 0 -74 -52 +q-9 -29 -9 -83t9 -83q17 -52 74 -52z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="507" +d="M127 -180h-34q-10 0 -10 10v98q0 10 10 10h21q26 0 41.5 11.5t24.5 38.5l13 36l-180 450q-3 10 8 10h128q9 0 12 -10l97 -280h2l90 280q3 10 12 10h124q11 0 8 -10l-196 -515q-30 -79 -67.5 -109t-103.5 -30zM402 561h-93q-10 0 -10 10v99q0 10 10 10h93q10 0 10 -10v-99 +q0 -10 -10 -10zM201 561h-92q-10 0 -10 10v99q0 10 10 10h92q10 0 10 -10v-99q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessi" unicode="ı" horiz-adv-x="266" +d="M193 0h-120q-10 0 -10 10v464q0 10 10 10h120q10 0 10 -10v-464q0 -10 -10 -10z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="932" +d="M878 0h-436q-10 0 -10 10v22h-2q-48 -43 -128 -43q-88 0 -149 41.5t-87 122.5q-19 61 -19 187t19 187q26 81 87 122.5t149 41.5q80 0 128 -43h2v22q0 10 10 10h436q10 0 10 -10v-107q0 -10 -10 -10h-293q-6 0 -6 -6v-135q0 -6 6 -6h244q10 0 10 -10v-106q0 -10 -10 -10 +h-244q-6 0 -6 -6v-141q0 -6 6 -6h293q10 0 10 -10v-107q0 -10 -10 -10zM314 119q83 0 107 75q11 33 11 146t-11 146q-24 75 -107 75t-107 -75q-11 -33 -11 -146t11 -146q24 -75 107 -75z" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="836" +d="M579 -11q-101 0 -157 59h-2q-58 -59 -155 -59q-78 0 -133.5 35.5t-76.5 101.5q-16 49 -16 116q0 66 16 117q21 65 76.5 100.5t133.5 35.5q98 0 154 -56h2q52 56 151 56q79 0 133.5 -36t75.5 -100q15 -48 15 -149q0 -10 -10 -10h-293q-6 0 -6 -6q2 -19 5 -27 +q21 -64 101 -64q65 0 110 43q9 6 15 0l66 -62q8 -6 0 -14q-76 -81 -205 -81zM652 293q6 0 6 6q0 23 -5 36q-16 53 -80 53q-30 0 -52 -14t-29 -39q-5 -17 -5 -36q0 -6 6 -6h159zM265 107q58 0 75 53q9 27 9 82t-9 83q-17 52 -75 52t-75 -52q-9 -28 -9 -83t9 -82 +q17 -53 75 -53z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="595" +d="M294 -11q-77 0 -149 26.5t-113 66.5q-8 8 -1 17l76 87q6 8 15 1q88 -70 178 -70q52 0 81.5 22t29.5 59q0 32 -23.5 50t-81.5 26l-36 5q-215 30 -215 204q0 94 65.5 151t175.5 57q139 0 231 -71q9 -6 2 -15l-61 -91q-6 -8 -14 -3q-80 52 -158 52q-44 0 -67.5 -20.5 +t-23.5 -53.5q0 -30 24.5 -48.5t81.5 -26.5l36 -5q214 -29 214 -206q0 -96 -69.5 -155t-197.5 -59zM337 744h-75q-12 0 -19 10l-103 130q-3 4 -1.5 7t5.5 3h80q12 0 22 -10l52 -54h2l53 54q10 10 22 10h80q5 0 6 -3t-2 -7l-104 -130q-7 -10 -18 -10z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="505" +d="M253 -11q-134 0 -220 75q-7 7 0 14l65 73q6 6 14 0q69 -53 148 -53q75 0 75 46q0 19 -14.5 28.5t-54.5 13.5l-54 6q-77 8 -117.5 45.5t-40.5 102.5q0 72 52.5 113.5t146.5 41.5q117 0 196 -60q7 -7 1 -15l-56 -69q-6 -7 -14 -2q-61 39 -131 39q-61 0 -61 -40 +q0 -18 14 -27t53 -13l53 -6q161 -16 161 -147q-1 -76 -57.5 -121t-158.5 -45zM289 547h-75q-11 0 -18 10l-104 131q-3 4 -1.5 7t6.5 3h79q12 0 22 -10l53 -54h2l52 54q10 10 22 10h80q5 0 6 -3t-2 -7l-103 -131q-7 -10 -19 -10z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="568" +d="M347 0h-127q-10 0 -10 10v261l-201 399q-4 10 7 10h130q11 0 15 -10l123 -248h3l123 248q4 10 15 10h126q5 0 7 -3t0 -7l-201 -399v-261q0 -10 -10 -10zM430 760h-90q-10 0 -10 10v98q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10zM227 760h-90q-10 0 -10 10v98 +q0 10 10 10h90q10 0 10 -10v-98q0 -10 -10 -10z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="546" +d="M496 0h-446q-10 0 -10 10v110q0 6 3 10l293 417v2h-275q-10 0 -10 10v111q0 10 10 10h435q10 0 10 -10v-110q0 -6 -3 -10l-294 -417v-2h287q10 0 10 -10v-111q0 -10 -10 -10zM311 744h-75q-12 0 -19 10l-103 130q-3 4 -1.5 7t5.5 3h80q12 0 22 -10l52 -54h2l53 54 +q10 10 22 10h80q5 0 6 -3t-2 -7l-104 -130q-7 -10 -18 -10z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="490" +d="M434 0h-378q-10 0 -10 10v90q0 6 3 10l230 257v2h-210q-10 0 -10 10v95q0 10 10 10h365q10 0 10 -10v-95q0 -5 -3 -10l-228 -252v-2h221q10 0 10 -10v-95q0 -10 -10 -10zM286 547h-75q-11 0 -18 10l-104 131q-3 4 -1.5 7t6.5 3h79q12 0 22 -10l53 -54h2l52 54 +q10 10 22 10h80q4 0 5.5 -3t-1.5 -7l-103 -131q-7 -10 -19 -10z" /> + <glyph glyph-name="florin" unicode="ƒ" +d="M449 313h-94l-49 -322q-15 -94 -58 -132.5t-130 -38.5h-32q-10 0 -10 10v97q0 10 10 10h19q32 0 46.5 12t19.5 45l48 319h-61q-10 0 -10 10v84q0 10 10 10h77l15 95q14 90 57.5 129t128.5 39h34q10 0 10 -10v-97q0 -10 -10 -10h-21q-29 0 -44 -13t-20 -42l-14 -91h78 +q10 0 10 -10v-84q0 -10 -10 -10z" /> + <glyph glyph-name="dotlessj" unicode="ȷ" horiz-adv-x="266" +d="M22 -180h-33q-10 0 -10 10v98q0 10 10 10h20q30 0 42 12t12 44v480q0 10 10 10h120q10 0 10 -10v-479q0 -175 -181 -175z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="454" +d="M382 550h-80q-12 0 -22 10l-52 54h-2l-53 -54q-10 -10 -22 -10h-79q-5 0 -6.5 3t1.5 7l104 131q7 10 18 10h75q12 0 19 -10l103 -131q3 -4 1.5 -7t-5.5 -3z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="454" +d="M289 552q-31 0 -75 22q-34 18 -58 18q-32 0 -71 -32q-9 -7 -9 3v72q0 11 8 20q36 36 77 36q31 0 75 -22q36 -18 58 -18q32 0 71 32q4 3 7 2t3 -5v-72q0 -11 -9 -20q-34 -36 -77 -36z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="535" +d="M505 207h-475q-10 0 -10 10v97q0 10 10 10h475q10 0 10 -10v-97q0 -10 -10 -10z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="894" +d="M864 207h-834q-10 0 -10 10v97q0 10 10 10h834q10 0 10 -10v-97q0 -10 -10 -10z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="231" +d="M165 472h-99q-10 0 -10 10v105q0 13 9 21l83 67q8 7 16 7q11 0 11 -11v-189q0 -10 -10 -10z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="231" +d="M67 470q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-105q0 -13 -9 -21l-83 -67q-8 -7 -16 -7z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="231" +d="M67 -90q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-104q0 -14 -9 -22l-83 -66q-8 -8 -16 -8z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="417" +d="M351 472h-99q-10 0 -10 10v105q0 13 9 21l83 67q8 7 16 7q11 0 11 -11v-189q0 -10 -10 -10zM165 472h-99q-10 0 -10 10v105q0 13 9 21l83 67q8 7 16 7q11 0 11 -11v-189q0 -10 -10 -10z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="417" +d="M253 470q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-105q0 -13 -9 -21l-83 -67q-8 -7 -16 -7zM67 470q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-105q0 -13 -9 -21l-83 -67q-8 -7 -16 -7z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="417" +d="M253 -90q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-104q0 -14 -9 -22l-83 -66q-8 -8 -16 -8zM67 -90q-11 0 -11 11v189q0 10 10 10h99q10 0 10 -10v-104q0 -14 -9 -22l-83 -66q-8 -8 -16 -8z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="548" +d="M332 -180h-116q-10 0 -10 10v503q0 6 -6 6h-144q-10 0 -10 10v102q0 10 10 10h144q6 0 6 6v203q0 10 10 10h116q10 0 10 -10v-203q0 -6 6 -6h144q10 0 10 -10v-102q0 -10 -10 -10h-144q-6 0 -6 -6v-503q0 -10 -10 -10z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="548" +d="M332 -180h-116q-10 0 -10 10v170q0 6 -6 6h-144q-10 0 -10 10v102q0 10 10 10h144q6 0 6 6v232q0 6 -6 6h-144q-10 0 -10 10v102q0 10 10 10h144q6 0 6 6v170q0 10 10 10h116q10 0 10 -10v-170q0 -6 6 -6h144q10 0 10 -10v-102q0 -10 -10 -10h-144q-6 0 -6 -6v-232 +q0 -6 6 -6h144q10 0 10 -10v-102q0 -10 -10 -10h-144q-6 0 -6 -6v-170q0 -10 -10 -10z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="475" +d="M237 158q-65 0 -107.5 42.5t-42.5 107.5q0 66 42.5 108.5t107.5 42.5q66 0 108.5 -42.5t42.5 -108.5q0 -65 -42.5 -107.5t-108.5 -42.5z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="777" +d="M707 0h-119q-10 0 -10 10v120q0 10 10 10h119q10 0 10 -10v-120q0 -10 -10 -10zM448 0h-119q-10 0 -10 10v120q0 10 10 10h119q10 0 10 -10v-120q0 -10 -10 -10zM189 0h-119q-10 0 -10 10v120q0 10 10 10h119q10 0 10 -10v-120q0 -10 -10 -10z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="1136" +d="M247 -11h-84q-11 0 -5 10l395 682q6 10 16 10h84q11 0 5 -10l-395 -682q-6 -10 -16 -10zM198 330q-48 0 -82 22t-47 60q-9 30 -9 97t9 97q13 38 47 60t82 22t82.5 -22t46.5 -60q9 -26 9 -97t-9 -97q-12 -38 -46.5 -60t-82.5 -22zM198 409q27 0 36 23q3 12 3 77t-3 77 +q-9 23 -36 23t-35 -23q-4 -11 -4 -77t4 -77q8 -23 35 -23zM938 -9q-48 0 -82.5 22t-46.5 61q-9 26 -9 96q0 71 9 97q12 38 46.5 60t82.5 22t82 -22t46 -60q10 -29 10 -97q0 -67 -10 -96q-12 -38 -46 -60.5t-82 -22.5zM616 -9q-48 0 -82 22t-47 61q-9 30 -9 96q0 67 9 97 +q13 38 47 60t82 22t82 -22t47 -60q9 -26 9 -97q0 -70 -9 -96q-13 -39 -47 -61t-82 -22zM938 70q28 0 35 24q4 9 4 76q0 66 -4 77q-8 23 -35 23q-28 0 -36 -23q-3 -12 -3 -77q0 -66 3 -76q8 -24 36 -24zM616 70q28 0 35 24q4 9 4 76q0 66 -4 77q-8 23 -35 23t-35 -23 +q-4 -11 -4 -77q0 -67 4 -76q7 -24 35 -24z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="319" +d="M248 38l-220 219q-7 7 0 14l220 219q3 3 6.5 1.5t3.5 -5.5v-117q0 -10 -10 -20l-82 -81q-4 -4 0 -8l82 -81q10 -10 10 -20v-117q0 -4 -3.5 -5.5t-6.5 1.5z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="319" +d="M291 257l-220 -219q-3 -3 -6.5 -1.5t-3.5 5.5v117q0 10 10 20l82 81q4 4 0 8l-82 81q-10 10 -10 20v117q0 4 3.5 5.5t6.5 -1.5l220 -219q7 -7 0 -14z" /> + <glyph glyph-name="Euro" unicode="€" +d="M316 -11q-80 0 -135 37t-77 107q-14 42 -14 98q0 6 -6 6h-36q-10 0 -10 10v62q0 10 10 10h36q6 0 6 6v34q0 6 -6 6h-36q-10 0 -10 10v62q0 10 10 10h36q6 0 6 6q0 52 14 94q22 70 77 107t135 37q143 0 202 -121q4 -9 -5 -14l-95 -44q-10 -3 -15 5q-31 56 -85 56 +q-59 0 -79 -59q-7 -23 -7 -61q0 -6 6 -6h166q10 0 10 -10l-10 -62q-1 -10 -10 -10h-156q-6 0 -6 -6v-34q0 -6 6 -6h146q10 0 10 -10l-10 -62q-1 -10 -10 -10h-136q-6 0 -6 -6q0 -42 7 -65q20 -59 79 -59q54 0 85 56q5 8 15 5l95 -44q9 -5 5 -14q-59 -121 -202 -121z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="846" +d="M784 286h-69q-10 0 -10 10v194h-2l-62 -138q-5 -10 -13 -10h-47q-8 0 -13 10l-62 138h-3v-194q0 -10 -10 -10h-69q-10 0 -10 10v374q0 10 10 10h68q9 0 14 -10l98 -216h3l96 216q5 10 15 10h66q10 0 10 -10v-374q0 -10 -10 -10zM236 286h-77q-10 0 -10 10v294q0 6 -6 6 +h-96q-10 0 -10 10v64q0 10 10 10h300q10 0 10 -10v-64q0 -10 -10 -10h-95q-6 0 -6 -6v-294q0 -10 -10 -10z" /> + <hkern u1=" " u2="Ÿ" k="26" /> + <hkern u1=" " u2="Ý" k="26" /> + <hkern u1=" " u2="Y" k="26" /> + <hkern u1=" " u2="W" k="21" /> + <hkern u1=" " u2="V" k="29" /> + <hkern u1=" " u2="T" k="11" /> + <hkern u1=""" u2="V" k="-7" /> + <hkern u1="'" u2="V" k="-7" /> + <hkern u1="(" u2="j" k="-36" /> + <hkern u1="," u2="’" k="64" /> + <hkern u1="," u2=" " k="18" /> + <hkern u1="-" u2="Ÿ" k="98" /> + <hkern u1="-" u2="Š" k="4" /> + <hkern u1="-" u2="ÿ" k="9" /> + <hkern u1="-" u2="ý" k="9" /> + <hkern u1="-" u2="Ý" k="98" /> + <hkern u1="-" u2="Å" k="19" /> + <hkern u1="-" u2="Ä" k="19" /> + <hkern u1="-" u2="Ã" k="19" /> + <hkern u1="-" u2="Â" k="19" /> + <hkern u1="-" u2="Á" k="19" /> + <hkern u1="-" u2="À" k="19" /> + <hkern u1="-" u2="y" k="9" /> + <hkern u1="-" u2="x" k="14" /> + <hkern u1="-" u2="w" k="3" /> + <hkern u1="-" u2="v" k="9" /> + <hkern u1="-" u2="Y" k="98" /> + <hkern u1="-" u2="X" k="46" /> + <hkern u1="-" u2="W" k="44" /> + <hkern u1="-" u2="V" k="69" /> + <hkern u1="-" u2="T" k="66" /> + <hkern u1="-" u2="S" k="4" /> + <hkern u1="-" u2="J" k="18" /> + <hkern u1="-" u2="A" k="19" /> + <hkern u1="." u2="’" k="64" /> + <hkern u1="." u2=" " k="18" /> + <hkern u1="/" u2="7" k="-11" /> + <hkern u1="1" u2="ï" k="-6" /> + <hkern u1="7" u2="/" k="21" /> + <hkern u1="8" u2="Ÿ" k="29" /> + <hkern u1="8" u2="Ý" k="29" /> + <hkern u1="8" u2="Å" k="9" /> + <hkern u1="8" u2="Ä" k="9" /> + <hkern u1="8" u2="Ã" k="9" /> + <hkern u1="8" u2="Â" k="9" /> + <hkern u1="8" u2="Á" k="9" /> + <hkern u1="8" u2="À" k="9" /> + <hkern u1="8" u2="X" k="25" /> + <hkern u1="8" u2="V" k="17" /> + <hkern u1="A" u2="•" k="31" /> + <hkern u1="A" u2="’" k="89" /> + <hkern u1="A" u2="®" k="56" /> + <hkern u1="A" u2="v" k="52" /> + <hkern u1="A" u2="u" k="8" /> + <hkern u1="A" u2="f" k="4" /> + <hkern u1="A" u2="V" k="40" /> + <hkern u1="A" u2="?" k="38" /> + <hkern u1="A" u2="-" k="19" /> + <hkern u1="A" u2="*" k="89" /> + <hkern u1="B" u2="Ÿ" k="29" /> + <hkern u1="B" u2="Ý" k="29" /> + <hkern u1="B" u2="Å" k="9" /> + <hkern u1="B" u2="Ä" k="9" /> + <hkern u1="B" u2="Ã" k="9" /> + <hkern u1="B" u2="Â" k="9" /> + <hkern u1="B" u2="Á" k="9" /> + <hkern u1="B" u2="À" k="9" /> + <hkern u1="B" u2="X" k="25" /> + <hkern u1="B" u2="V" k="17" /> + <hkern u1="D" u2="X" k="40" /> + <hkern u1="D" u2="V" k="20" /> + <hkern u1="E" u2="v" k="24" /> + <hkern u1="F" u2="…" k="100" /> + <hkern u1="F" u2="š" k="19" /> + <hkern u1="F" u2="œ" k="36" /> + <hkern u1="F" u2="ı" k="24" /> + <hkern u1="F" u2="ÿ" k="24" /> + <hkern u1="F" u2="ý" k="24" /> + <hkern u1="F" u2="ü" k="30" /> + <hkern u1="F" u2="û" k="30" /> + <hkern u1="F" u2="ú" k="30" /> + <hkern u1="F" u2="ù" k="30" /> + <hkern u1="F" u2="ø" k="19" /> + <hkern u1="F" u2="ö" k="36" /> + <hkern u1="F" u2="õ" k="36" /> + <hkern u1="F" u2="ô" k="36" /> + <hkern u1="F" u2="ó" k="36" /> + <hkern u1="F" u2="ò" k="36" /> + <hkern u1="F" u2="ñ" k="24" /> + <hkern u1="F" u2="ð" k="12" /> + <hkern u1="F" u2="ë" k="36" /> + <hkern u1="F" u2="ê" k="36" /> + <hkern u1="F" u2="é" k="36" /> + <hkern u1="F" u2="è" k="36" /> + <hkern u1="F" u2="ç" k="36" /> + <hkern u1="F" u2="æ" k="42" /> + <hkern u1="F" u2="å" k="42" /> + <hkern u1="F" u2="ä" k="42" /> + <hkern u1="F" u2="ã" k="42" /> + <hkern u1="F" u2="â" k="42" /> + <hkern u1="F" u2="á" k="42" /> + <hkern u1="F" u2="à" k="42" /> + <hkern u1="F" u2="Æ" k="83" /> + <hkern u1="F" u2="Å" k="58" /> + <hkern u1="F" u2="Ä" k="58" /> + <hkern u1="F" u2="Ã" k="58" /> + <hkern u1="F" u2="Â" k="58" /> + <hkern u1="F" u2="Á" k="58" /> + <hkern u1="F" u2="À" k="58" /> + <hkern u1="F" u2="y" k="24" /> + <hkern u1="F" u2="u" k="30" /> + <hkern u1="F" u2="s" k="19" /> + <hkern u1="F" u2="r" k="24" /> + <hkern u1="F" u2="q" k="12" /> + <hkern u1="F" u2="p" k="24" /> + <hkern u1="F" u2="o" k="36" /> + <hkern u1="F" u2="n" k="24" /> + <hkern u1="F" u2="m" k="24" /> + <hkern u1="F" u2="g" k="12" /> + <hkern u1="F" u2="e" k="36" /> + <hkern u1="F" u2="d" k="12" /> + <hkern u1="F" u2="c" k="36" /> + <hkern u1="F" u2="a" k="42" /> + <hkern u1="F" u2="J" k="79" /> + <hkern u1="F" u2="A" k="58" /> + <hkern u1="F" u2="." k="100" /> + <hkern u1="F" u2="," k="100" /> + <hkern u1="G" u2="X" k="12" /> + <hkern u1="G" u2="V" k="12" /> + <hkern u1="H" u2="ï" k="-6" /> + <hkern u1="I" u2="ï" k="-6" /> + <hkern u1="K" u2="›" k="14" /> + <hkern u1="K" u2="•" k="46" /> + <hkern u1="K" u2="’" k="2" /> + <hkern u1="K" u2="®" k="36" /> + <hkern u1="K" u2="v" k="38" /> + <hkern u1="K" u2="u" k="6" /> + <hkern u1="K" u2="-" k="41" /> + <hkern u1="K" u2="*" k="26" /> + <hkern u1="L" u2="›" k="4" /> + <hkern u1="L" u2="•" k="7" /> + <hkern u1="L" u2="’" k="108" /> + <hkern u1="L" u2="®" k="31" /> + <hkern u1="L" u2="v" k="34" /> + <hkern u1="L" u2="V" k="72" /> + <hkern u1="L" u2="?" k="16" /> + <hkern u1="L" u2="-" k="13" /> + <hkern u1="L" u2="*" k="50" /> + <hkern u1="M" u2="ï" k="-6" /> + <hkern u1="N" u2="ï" k="-6" /> + <hkern u1="O" u2="X" k="12" /> + <hkern u1="O" u2="V" k="12" /> + <hkern u1="P" u2="…" k="140" /> + <hkern u1="P" u2="”" k="-21" /> + <hkern u1="P" u2="“" k="-21" /> + <hkern u1="P" u2="’" k="-21" /> + <hkern u1="P" u2="‘" k="-21" /> + <hkern u1="P" u2="Ÿ" k="16" /> + <hkern u1="P" u2="œ" k="6" /> + <hkern u1="P" u2="ö" k="6" /> + <hkern u1="P" u2="õ" k="6" /> + <hkern u1="P" u2="ô" k="6" /> + <hkern u1="P" u2="ó" k="6" /> + <hkern u1="P" u2="ò" k="6" /> + <hkern u1="P" u2="ë" k="6" /> + <hkern u1="P" u2="ê" k="6" /> + <hkern u1="P" u2="é" k="6" /> + <hkern u1="P" u2="è" k="6" /> + <hkern u1="P" u2="ç" k="6" /> + <hkern u1="P" u2="æ" k="24" /> + <hkern u1="P" u2="å" k="24" /> + <hkern u1="P" u2="ä" k="24" /> + <hkern u1="P" u2="ã" k="24" /> + <hkern u1="P" u2="â" k="24" /> + <hkern u1="P" u2="á" k="24" /> + <hkern u1="P" u2="à" k="24" /> + <hkern u1="P" u2="Ý" k="16" /> + <hkern u1="P" u2="Æ" k="118" /> + <hkern u1="P" u2="Å" k="68" /> + <hkern u1="P" u2="Ä" k="68" /> + <hkern u1="P" u2="Ã" k="68" /> + <hkern u1="P" u2="Â" k="68" /> + <hkern u1="P" u2="Á" k="68" /> + <hkern u1="P" u2="À" k="68" /> + <hkern u1="P" u2="o" k="6" /> + <hkern u1="P" u2="e" k="6" /> + <hkern u1="P" u2="c" k="6" /> + <hkern u1="P" u2="a" k="24" /> + <hkern u1="P" u2="Y" k="16" /> + <hkern u1="P" u2="X" k="24" /> + <hkern u1="P" u2="J" k="99" /> + <hkern u1="P" u2="A" k="68" /> + <hkern u1="P" u2="." k="140" /> + <hkern u1="P" u2="," k="140" /> + <hkern u1="P" u2="'" k="-21" /> + <hkern u1="P" u2=""" k="-21" /> + <hkern u1="Q" u2="…" k="-19" /> + <hkern u1="Q" u2="Ÿ" k="25" /> + <hkern u1="Q" u2="Ý" k="25" /> + <hkern u1="Q" u2="Y" k="25" /> + <hkern u1="Q" u2="W" k="14" /> + <hkern u1="Q" u2="V" k="20" /> + <hkern u1="Q" u2=";" k="-19" /> + <hkern u1="Q" u2=":" k="-19" /> + <hkern u1="Q" u2="." k="-19" /> + <hkern u1="Q" u2="," k="-19" /> + <hkern u1="Q" u2="!" k="-19" /> + <hkern u1="R" u2="›" k="5" /> + <hkern u1="R" u2="•" k="10" /> + <hkern u1="R" u2="V" k="14" /> + <hkern u1="R" u2="-" k="10" /> + <hkern u1="S" u2="x" k="15" /> + <hkern u1="S" u2="v" k="15" /> + <hkern u1="S" u2="V" k="9" /> + <hkern u1="S" u2="-" k="-18" /> + <hkern u1="T" u2="›" k="11" /> + <hkern u1="T" u2="•" k="46" /> + <hkern u1="T" u2="’" k="-36" /> + <hkern u1="T" u2="x" k="19" /> + <hkern u1="T" u2="v" k="54" /> + <hkern u1="T" u2="u" k="54" /> + <hkern u1="T" u2="m" k="17" /> + <hkern u1="T" u2="f" k="4" /> + <hkern u1="T" u2="?" k="-20" /> + <hkern u1="T" u2="-" k="66" /> + <hkern u1="T" u2=" " k="11" /> + <hkern u1="V" u2="›" k="21" /> + <hkern u1="V" u2="‹" k="46" /> + <hkern u1="V" u2="…" k="100" /> + <hkern u1="V" u2="•" k="48" /> + <hkern u1="V" u2="”" k="-7" /> + <hkern u1="V" u2="“" k="-7" /> + <hkern u1="V" u2="’" k="-7" /> + <hkern u1="V" u2="‘" k="-7" /> + <hkern u1="V" u2="—" k="69" /> + <hkern u1="V" u2="–" k="69" /> + <hkern u1="V" u2="ž" k="28" /> + <hkern u1="V" u2="š" k="49" /> + <hkern u1="V" u2="Š" k="19" /> + <hkern u1="V" u2="œ" k="62" /> + <hkern u1="V" u2="Œ" k="12" /> + <hkern u1="V" u2="ı" k="33" /> + <hkern u1="V" u2="ÿ" k="9" /> + <hkern u1="V" u2="ý" k="9" /> + <hkern u1="V" u2="ü" k="24" /> + <hkern u1="V" u2="û" k="24" /> + <hkern u1="V" u2="ú" k="24" /> + <hkern u1="V" u2="ù" k="24" /> + <hkern u1="V" u2="ø" k="62" /> + <hkern u1="V" u2="ö" k="62" /> + <hkern u1="V" u2="õ" k="62" /> + <hkern u1="V" u2="ô" k="62" /> + <hkern u1="V" u2="ó" k="62" /> + <hkern u1="V" u2="ò" k="62" /> + <hkern u1="V" u2="ñ" k="33" /> + <hkern u1="V" u2="ð" k="53" /> + <hkern u1="V" u2="ë" k="62" /> + <hkern u1="V" u2="ê" k="62" /> + <hkern u1="V" u2="é" k="62" /> + <hkern u1="V" u2="è" k="62" /> + <hkern u1="V" u2="ç" k="62" /> + <hkern u1="V" u2="æ" k="47" /> + <hkern u1="V" u2="å" k="47" /> + <hkern u1="V" u2="ä" k="47" /> + <hkern u1="V" u2="ã" k="47" /> + <hkern u1="V" u2="â" k="47" /> + <hkern u1="V" u2="á" k="47" /> + <hkern u1="V" u2="à" k="47" /> + <hkern u1="V" u2="Ø" k="21" /> + <hkern u1="V" u2="Ö" k="12" /> + <hkern u1="V" u2="Õ" k="12" /> + <hkern u1="V" u2="Ô" k="12" /> + <hkern u1="V" u2="Ó" k="12" /> + <hkern u1="V" u2="Ò" k="12" /> + <hkern u1="V" u2="Ç" k="12" /> + <hkern u1="V" u2="Æ" k="107" /> + <hkern u1="V" u2="Å" k="40" /> + <hkern u1="V" u2="Ä" k="40" /> + <hkern u1="V" u2="Ã" k="40" /> + <hkern u1="V" u2="Â" k="40" /> + <hkern u1="V" u2="Á" k="40" /> + <hkern u1="V" u2="À" k="40" /> + <hkern u1="V" u2="»" k="21" /> + <hkern u1="V" u2="·" k="48" /> + <hkern u1="V" u2="®" k="22" /> + <hkern u1="V" u2="­" k="69" /> + <hkern u1="V" u2="«" k="46" /> + <hkern u1="V" u2="z" k="28" /> + <hkern u1="V" u2="y" k="9" /> + <hkern u1="V" u2="x" k="18" /> + <hkern u1="V" u2="w" k="10" /> + <hkern u1="V" u2="v" k="9" /> + <hkern u1="V" u2="u" k="24" /> + <hkern u1="V" u2="s" k="49" /> + <hkern u1="V" u2="r" k="33" /> + <hkern u1="V" u2="q" k="53" /> + <hkern u1="V" u2="p" k="33" /> + <hkern u1="V" u2="o" k="62" /> + <hkern u1="V" u2="n" k="33" /> + <hkern u1="V" u2="m" k="33" /> + <hkern u1="V" u2="g" k="53" /> + <hkern u1="V" u2="f" k="8" /> + <hkern u1="V" u2="e" k="62" /> + <hkern u1="V" u2="d" k="53" /> + <hkern u1="V" u2="c" k="62" /> + <hkern u1="V" u2="a" k="47" /> + <hkern u1="V" u2="S" k="19" /> + <hkern u1="V" u2="Q" k="12" /> + <hkern u1="V" u2="O" k="12" /> + <hkern u1="V" u2="J" k="87" /> + <hkern u1="V" u2="G" k="12" /> + <hkern u1="V" u2="C" k="12" /> + <hkern u1="V" u2="A" k="40" /> + <hkern u1="V" u2=";" k="36" /> + <hkern u1="V" u2=":" k="36" /> + <hkern u1="V" u2="." k="100" /> + <hkern u1="V" u2="-" k="69" /> + <hkern u1="V" u2="," k="100" /> + <hkern u1="V" u2="'" k="-7" /> + <hkern u1="V" u2=""" k="-7" /> + <hkern u1="V" u2=" " k="29" /> + <hkern u1="W" u2="›" k="9" /> + <hkern u1="W" u2="•" k="38" /> + <hkern u1="W" u2="’" k="-7" /> + <hkern u1="W" u2="®" k="2" /> + <hkern u1="W" u2="x" k="14" /> + <hkern u1="W" u2="v" k="9" /> + <hkern u1="W" u2="u" k="11" /> + <hkern u1="W" u2="m" k="16" /> + <hkern u1="W" u2="f" k="8" /> + <hkern u1="W" u2="-" k="44" /> + <hkern u1="W" u2=" " k="21" /> + <hkern u1="X" u2="›" k="2" /> + <hkern u1="X" u2="‹" k="44" /> + <hkern u1="X" u2="•" k="39" /> + <hkern u1="X" u2="—" k="46" /> + <hkern u1="X" u2="–" k="46" /> + <hkern u1="X" u2="œ" k="19" /> + <hkern u1="X" u2="Œ" k="12" /> + <hkern u1="X" u2="ÿ" k="34" /> + <hkern u1="X" u2="ý" k="34" /> + <hkern u1="X" u2="ö" k="19" /> + <hkern u1="X" u2="õ" k="19" /> + <hkern u1="X" u2="ô" k="19" /> + <hkern u1="X" u2="ó" k="19" /> + <hkern u1="X" u2="ò" k="19" /> + <hkern u1="X" u2="ð" k="13" /> + <hkern u1="X" u2="ë" k="19" /> + <hkern u1="X" u2="ê" k="19" /> + <hkern u1="X" u2="é" k="19" /> + <hkern u1="X" u2="è" k="19" /> + <hkern u1="X" u2="ç" k="19" /> + <hkern u1="X" u2="Ö" k="12" /> + <hkern u1="X" u2="Õ" k="12" /> + <hkern u1="X" u2="Ô" k="12" /> + <hkern u1="X" u2="Ó" k="12" /> + <hkern u1="X" u2="Ò" k="12" /> + <hkern u1="X" u2="Ç" k="12" /> + <hkern u1="X" u2="»" k="2" /> + <hkern u1="X" u2="·" k="39" /> + <hkern u1="X" u2="®" k="24" /> + <hkern u1="X" u2="­" k="46" /> + <hkern u1="X" u2="«" k="44" /> + <hkern u1="X" u2="y" k="34" /> + <hkern u1="X" u2="w" k="41" /> + <hkern u1="X" u2="v" k="42" /> + <hkern u1="X" u2="q" k="13" /> + <hkern u1="X" u2="o" k="19" /> + <hkern u1="X" u2="e" k="19" /> + <hkern u1="X" u2="d" k="13" /> + <hkern u1="X" u2="c" k="19" /> + <hkern u1="X" u2="Q" k="12" /> + <hkern u1="X" u2="O" k="12" /> + <hkern u1="X" u2="G" k="12" /> + <hkern u1="X" u2="C" k="12" /> + <hkern u1="X" u2="-" k="46" /> + <hkern u1="Y" u2="›" k="34" /> + <hkern u1="Y" u2="•" k="82" /> + <hkern u1="Y" u2="’" k="-4" /> + <hkern u1="Y" u2="®" k="20" /> + <hkern u1="Y" u2="x" k="48" /> + <hkern u1="Y" u2="v" k="31" /> + <hkern u1="Y" u2="u" k="50" /> + <hkern u1="Y" u2="m" k="53" /> + <hkern u1="Y" u2="f" k="19" /> + <hkern u1="Y" u2="-" k="98" /> + <hkern u1="Y" u2=" " k="26" /> + <hkern u1="Z" u2="v" k="8" /> + <hkern u1="]" u2="ï" k="-6" /> + <hkern u1="a" u2="v" k="4" /> + <hkern u1="b" u2="x" k="13" /> + <hkern u1="b" u2="v" k="3" /> + <hkern u1="c" u2="x" k="5" /> + <hkern u1="d" u2="ï" k="-6" /> + <hkern u1="d" u2="î" k="-4" /> + <hkern u1="e" u2="x" k="8" /> + <hkern u1="e" u2="v" k="6" /> + <hkern u1="f" u2="…" k="48" /> + <hkern u1="f" u2="”" k="-20" /> + <hkern u1="f" u2="“" k="-20" /> + <hkern u1="f" u2="’" k="-20" /> + <hkern u1="f" u2="‘" k="-20" /> + <hkern u1="f" u2="—" k="2" /> + <hkern u1="f" u2="–" k="2" /> + <hkern u1="f" u2="œ" k="2" /> + <hkern u1="f" u2="ø" k="2" /> + <hkern u1="f" u2="ö" k="2" /> + <hkern u1="f" u2="õ" k="2" /> + <hkern u1="f" u2="ô" k="2" /> + <hkern u1="f" u2="ó" k="2" /> + <hkern u1="f" u2="ò" k="2" /> + <hkern u1="f" u2="ï" k="-26" /> + <hkern u1="f" u2="ë" k="2" /> + <hkern u1="f" u2="ê" k="2" /> + <hkern u1="f" u2="é" k="2" /> + <hkern u1="f" u2="è" k="2" /> + <hkern u1="f" u2="ç" k="2" /> + <hkern u1="f" u2="æ" k="2" /> + <hkern u1="f" u2="å" k="2" /> + <hkern u1="f" u2="ä" k="2" /> + <hkern u1="f" u2="ã" k="2" /> + <hkern u1="f" u2="â" k="2" /> + <hkern u1="f" u2="á" k="2" /> + <hkern u1="f" u2="à" k="2" /> + <hkern u1="f" u2="·" k="2" /> + <hkern u1="f" u2="­" k="2" /> + <hkern u1="f" u2="o" k="2" /> + <hkern u1="f" u2="e" k="2" /> + <hkern u1="f" u2="c" k="2" /> + <hkern u1="f" u2="a" k="2" /> + <hkern u1="f" u2="?" k="-22" /> + <hkern u1="f" u2="." k="48" /> + <hkern u1="f" u2="-" k="2" /> + <hkern u1="f" u2="," k="48" /> + <hkern u1="f" u2="'" k="-20" /> + <hkern u1="f" u2=""" k="-20" /> + <hkern u1="g" u2="ï" k="-6" /> + <hkern u1="g" u2="î" k="-4" /> + <hkern u1="h" u2="ÿ" k="8" /> + <hkern u1="h" u2="ý" k="8" /> + <hkern u1="h" u2="y" k="8" /> + <hkern u1="h" u2="w" k="11" /> + <hkern u1="h" u2="v" k="8" /> + <hkern u1="i" u2="ï" k="-6" /> + <hkern u1="i" u2="î" k="-4" /> + <hkern u1="j" u2="ï" k="-6" /> + <hkern u1="j" u2="î" k="-4" /> + <hkern u1="k" u2="u" k="18" /> + <hkern u1="k" u2="-" k="25" /> + <hkern u1="l" u2="’" k="29" /> + <hkern u1="l" u2="®" k="20" /> + <hkern u1="l" u2="v" k="8" /> + <hkern u1="l" u2="-" k="5" /> + <hkern u1="l" u2="*" k="24" /> + <hkern u1="m" u2="ÿ" k="8" /> + <hkern u1="m" u2="ý" k="8" /> + <hkern u1="m" u2="y" k="8" /> + <hkern u1="m" u2="v" k="8" /> + <hkern u1="n" u2="ÿ" k="8" /> + <hkern u1="n" u2="ý" k="8" /> + <hkern u1="n" u2="y" k="8" /> + <hkern u1="n" u2="v" k="8" /> + <hkern u1="o" u2="x" k="24" /> + <hkern u1="o" u2="v" k="8" /> + <hkern u1="p" u2="ÿ" k="8" /> + <hkern u1="p" u2="ý" k="8" /> + <hkern u1="p" u2="y" k="8" /> + <hkern u1="p" u2="x" k="13" /> + <hkern u1="p" u2="v" k="3" /> + <hkern u1="q" u2="ï" k="-6" /> + <hkern u1="q" u2="î" k="-4" /> + <hkern u1="r" u2="’" k="-13" /> + <hkern u1="r" u2="?" k="-20" /> + <hkern u1="r" u2="-" k="7" /> + <hkern u1="t" u2="’" k="-10" /> + <hkern u1="t" u2="-" k="6" /> + <hkern u1="u" u2="ï" k="-6" /> + <hkern u1="u" u2="î" k="-4" /> + <hkern u1="v" u2="…" k="50" /> + <hkern u1="v" u2="”" k="-6" /> + <hkern u1="v" u2="’" k="-6" /> + <hkern u1="v" u2="–" k="9" /> + <hkern u1="v" u2="š" k="14" /> + <hkern u1="v" u2="œ" k="12" /> + <hkern u1="v" u2="ö" k="12" /> + <hkern u1="v" u2="õ" k="12" /> + <hkern u1="v" u2="ô" k="12" /> + <hkern u1="v" u2="ó" k="12" /> + <hkern u1="v" u2="ò" k="12" /> + <hkern u1="v" u2="ð" k="10" /> + <hkern u1="v" u2="ë" k="12" /> + <hkern u1="v" u2="ê" k="12" /> + <hkern u1="v" u2="é" k="12" /> + <hkern u1="v" u2="è" k="12" /> + <hkern u1="v" u2="ç" k="12" /> + <hkern u1="v" u2="­" k="9" /> + <hkern u1="v" u2="q" k="10" /> + <hkern u1="v" u2="o" k="12" /> + <hkern u1="v" u2="e" k="12" /> + <hkern u1="v" u2="." k="50" /> + <hkern u1="v" u2="-" k="9" /> + <hkern u1="w" u2="’" k="-6" /> + <hkern u1="w" u2="-" k="3" /> + <hkern u1="x" u2="‹" k="4" /> + <hkern u1="x" u2="—" k="14" /> + <hkern u1="x" u2="–" k="14" /> + <hkern u1="x" u2="œ" k="18" /> + <hkern u1="x" u2="ø" k="9" /> + <hkern u1="x" u2="ö" k="18" /> + <hkern u1="x" u2="õ" k="18" /> + <hkern u1="x" u2="ô" k="18" /> + <hkern u1="x" u2="ó" k="18" /> + <hkern u1="x" u2="ò" k="18" /> + <hkern u1="x" u2="ð" k="12" /> + <hkern u1="x" u2="ë" k="18" /> + <hkern u1="x" u2="ê" k="18" /> + <hkern u1="x" u2="é" k="18" /> + <hkern u1="x" u2="è" k="18" /> + <hkern u1="x" u2="ç" k="18" /> + <hkern u1="x" u2="·" k="14" /> + <hkern u1="x" u2="­" k="14" /> + <hkern u1="x" u2="«" k="4" /> + <hkern u1="x" u2="q" k="12" /> + <hkern u1="x" u2="o" k="18" /> + <hkern u1="x" u2="g" k="12" /> + <hkern u1="x" u2="e" k="18" /> + <hkern u1="x" u2="d" k="12" /> + <hkern u1="x" u2="c" k="18" /> + <hkern u1="x" u2="-" k="14" /> + <hkern u1="y" u2="…" k="66" /> + <hkern u1="y" u2="”" k="-6" /> + <hkern u1="y" u2="’" k="-6" /> + <hkern u1="y" u2="—" k="11" /> + <hkern u1="y" u2="–" k="11" /> + <hkern u1="y" u2="š" k="12" /> + <hkern u1="y" u2="œ" k="14" /> + <hkern u1="y" u2="ø" k="14" /> + <hkern u1="y" u2="ö" k="14" /> + <hkern u1="y" u2="õ" k="14" /> + <hkern u1="y" u2="ô" k="14" /> + <hkern u1="y" u2="ó" k="14" /> + <hkern u1="y" u2="ò" k="14" /> + <hkern u1="y" u2="ð" k="9" /> + <hkern u1="y" u2="ë" k="14" /> + <hkern u1="y" u2="ê" k="14" /> + <hkern u1="y" u2="é" k="14" /> + <hkern u1="y" u2="è" k="14" /> + <hkern u1="y" u2="ç" k="14" /> + <hkern u1="y" u2="æ" k="7" /> + <hkern u1="y" u2="å" k="7" /> + <hkern u1="y" u2="ä" k="7" /> + <hkern u1="y" u2="ã" k="7" /> + <hkern u1="y" u2="â" k="7" /> + <hkern u1="y" u2="á" k="7" /> + <hkern u1="y" u2="à" k="7" /> + <hkern u1="y" u2="·" k="11" /> + <hkern u1="y" u2="­" k="11" /> + <hkern u1="y" u2="s" k="12" /> + <hkern u1="y" u2="q" k="9" /> + <hkern u1="y" u2="o" k="14" /> + <hkern u1="y" u2="g" k="9" /> + <hkern u1="y" u2="e" k="14" /> + <hkern u1="y" u2="d" k="9" /> + <hkern u1="y" u2="c" k="14" /> + <hkern u1="y" u2="a" k="7" /> + <hkern u1="y" u2="." k="66" /> + <hkern u1="y" u2="-" k="11" /> + <hkern u1="y" u2="," k="66" /> + <hkern u1="|" u2="ï" k="-6" /> + <hkern u1="¡" u2="ȷ" k="-39" /> + <hkern u1="¡" u2="Ÿ" k="39" /> + <hkern u1="¡" u2="Ý" k="39" /> + <hkern u1="¡" u2="j" k="-39" /> + <hkern u1="¡" u2="Y" k="39" /> + <hkern u1="¡" u2="W" k="16" /> + <hkern u1="¡" u2="V" k="24" /> + <hkern u1="¡" u2="T" k="23" /> + <hkern u1="«" u2="X" k="2" /> + <hkern u1="«" u2="V" k="21" /> + <hkern u1="­" u2="ÿ" k="9" /> + <hkern u1="­" u2="ý" k="9" /> + <hkern u1="­" u2="y" k="9" /> + <hkern u1="­" u2="x" k="14" /> + <hkern u1="­" u2="v" k="9" /> + <hkern u1="­" u2="X" k="46" /> + <hkern u1="­" u2="V" k="69" /> + <hkern u1="¶" u2="ï" k="-6" /> + <hkern u1="·" u2="x" k="14" /> + <hkern u1="·" u2="v" k="9" /> + <hkern u1="·" u2="X" k="39" /> + <hkern u1="·" u2="V" k="48" /> + <hkern u1="»" u2="Ÿ" k="71" /> + <hkern u1="»" u2="Ý" k="71" /> + <hkern u1="»" u2="Å" k="18" /> + <hkern u1="»" u2="Ä" k="18" /> + <hkern u1="»" u2="Ã" k="18" /> + <hkern u1="»" u2="Â" k="18" /> + <hkern u1="»" u2="Á" k="18" /> + <hkern u1="»" u2="À" k="18" /> + <hkern u1="»" u2="x" k="4" /> + <hkern u1="»" u2="v" k="2" /> + <hkern u1="»" u2="X" k="44" /> + <hkern u1="»" u2="V" k="46" /> + <hkern u1="¿" u2="ȷ" k="-76" /> + <hkern u1="¿" u2="Ÿ" k="84" /> + <hkern u1="¿" u2="Ý" k="84" /> + <hkern u1="¿" u2="j" k="-76" /> + <hkern u1="¿" u2="Y" k="84" /> + <hkern u1="¿" u2="W" k="59" /> + <hkern u1="¿" u2="V" k="76" /> + <hkern u1="¿" u2="T" k="75" /> + <hkern u1="À" u2="‹" k="18" /> + <hkern u1="À" u2="•" k="31" /> + <hkern u1="À" u2="’" k="89" /> + <hkern u1="À" u2="ÿ" k="45" /> + <hkern u1="À" u2="ý" k="45" /> + <hkern u1="À" u2="®" k="56" /> + <hkern u1="À" u2="«" k="18" /> + <hkern u1="À" u2="y" k="45" /> + <hkern u1="À" u2="v" k="52" /> + <hkern u1="À" u2="u" k="8" /> + <hkern u1="À" u2="f" k="4" /> + <hkern u1="À" u2="V" k="40" /> + <hkern u1="À" u2="?" k="38" /> + <hkern u1="À" u2="-" k="19" /> + <hkern u1="À" u2="*" k="89" /> + <hkern u1="Á" u2="‹" k="18" /> + <hkern u1="Á" u2="•" k="31" /> + <hkern u1="Á" u2="’" k="89" /> + <hkern u1="Á" u2="ÿ" k="45" /> + <hkern u1="Á" u2="ý" k="45" /> + <hkern u1="Á" u2="®" k="56" /> + <hkern u1="Á" u2="«" k="18" /> + <hkern u1="Á" u2="y" k="45" /> + <hkern u1="Á" u2="v" k="52" /> + <hkern u1="Á" u2="u" k="8" /> + <hkern u1="Á" u2="f" k="4" /> + <hkern u1="Á" u2="V" k="40" /> + <hkern u1="Á" u2="?" k="38" /> + <hkern u1="Á" u2="-" k="19" /> + <hkern u1="Á" u2="*" k="89" /> + <hkern u1="Â" u2="‹" k="18" /> + <hkern u1="Â" u2="•" k="31" /> + <hkern u1="Â" u2="’" k="89" /> + <hkern u1="Â" u2="ÿ" k="45" /> + <hkern u1="Â" u2="ý" k="45" /> + <hkern u1="Â" u2="®" k="56" /> + <hkern u1="Â" u2="«" k="18" /> + <hkern u1="Â" u2="y" k="45" /> + <hkern u1="Â" u2="v" k="52" /> + <hkern u1="Â" u2="u" k="8" /> + <hkern u1="Â" u2="f" k="4" /> + <hkern u1="Â" u2="V" k="40" /> + <hkern u1="Â" u2="?" k="38" /> + <hkern u1="Â" u2="-" k="19" /> + <hkern u1="Â" u2="*" k="89" /> + <hkern u1="Ã" u2="‹" k="18" /> + <hkern u1="Ã" u2="•" k="31" /> + <hkern u1="Ã" u2="’" k="89" /> + <hkern u1="Ã" u2="ÿ" k="45" /> + <hkern u1="Ã" u2="ý" k="45" /> + <hkern u1="Ã" u2="®" k="56" /> + <hkern u1="Ã" u2="«" k="18" /> + <hkern u1="Ã" u2="y" k="45" /> + <hkern u1="Ã" u2="v" k="52" /> + <hkern u1="Ã" u2="u" k="8" /> + <hkern u1="Ã" u2="f" k="4" /> + <hkern u1="Ã" u2="V" k="40" /> + <hkern u1="Ã" u2="?" k="38" /> + <hkern u1="Ã" u2="-" k="19" /> + <hkern u1="Ã" u2="*" k="89" /> + <hkern u1="Ä" u2="‹" k="18" /> + <hkern u1="Ä" u2="•" k="31" /> + <hkern u1="Ä" u2="’" k="89" /> + <hkern u1="Ä" u2="ÿ" k="45" /> + <hkern u1="Ä" u2="ý" k="45" /> + <hkern u1="Ä" u2="®" k="56" /> + <hkern u1="Ä" u2="«" k="18" /> + <hkern u1="Ä" u2="y" k="45" /> + <hkern u1="Ä" u2="v" k="52" /> + <hkern u1="Ä" u2="u" k="8" /> + <hkern u1="Ä" u2="f" k="4" /> + <hkern u1="Ä" u2="V" k="40" /> + <hkern u1="Ä" u2="?" k="38" /> + <hkern u1="Ä" u2="-" k="19" /> + <hkern u1="Ä" u2="*" k="89" /> + <hkern u1="Å" u2="‹" k="18" /> + <hkern u1="Å" u2="•" k="31" /> + <hkern u1="Å" u2="’" k="89" /> + <hkern u1="Å" u2="ÿ" k="45" /> + <hkern u1="Å" u2="ý" k="45" /> + <hkern u1="Å" u2="®" k="56" /> + <hkern u1="Å" u2="«" k="18" /> + <hkern u1="Å" u2="y" k="45" /> + <hkern u1="Å" u2="v" k="52" /> + <hkern u1="Å" u2="u" k="8" /> + <hkern u1="Å" u2="f" k="4" /> + <hkern u1="Å" u2="V" k="40" /> + <hkern u1="Å" u2="?" k="38" /> + <hkern u1="Å" u2="-" k="19" /> + <hkern u1="Å" u2="*" k="89" /> + <hkern u1="Æ" u2="ÿ" k="24" /> + <hkern u1="Æ" u2="ý" k="24" /> + <hkern u1="Æ" u2="y" k="24" /> + <hkern u1="Æ" u2="v" k="24" /> + <hkern u1="Ç" u2="ÿ" k="18" /> + <hkern u1="Ç" u2="ý" k="18" /> + <hkern u1="Ç" u2="y" k="18" /> + <hkern u1="È" u2="ÿ" k="24" /> + <hkern u1="È" u2="ý" k="24" /> + <hkern u1="È" u2="y" k="24" /> + <hkern u1="È" u2="v" k="24" /> + <hkern u1="É" u2="ÿ" k="24" /> + <hkern u1="É" u2="ý" k="24" /> + <hkern u1="É" u2="y" k="24" /> + <hkern u1="É" u2="v" k="24" /> + <hkern u1="Ê" u2="ÿ" k="24" /> + <hkern u1="Ê" u2="ý" k="24" /> + <hkern u1="Ê" u2="y" k="24" /> + <hkern u1="Ê" u2="v" k="24" /> + <hkern u1="Ë" u2="ÿ" k="24" /> + <hkern u1="Ë" u2="ý" k="24" /> + <hkern u1="Ë" u2="y" k="24" /> + <hkern u1="Ë" u2="v" k="24" /> + <hkern u1="Ì" u2="ï" k="-6" /> + <hkern u1="Í" u2="ï" k="-6" /> + <hkern u1="Î" u2="ï" k="-6" /> + <hkern u1="Ï" u2="ï" k="-6" /> + <hkern u1="Ð" u2="X" k="40" /> + <hkern u1="Ð" u2="V" k="20" /> + <hkern u1="Ñ" u2="ï" k="-6" /> + <hkern u1="Ò" u2="X" k="12" /> + <hkern u1="Ò" u2="V" k="12" /> + <hkern u1="Ó" u2="X" k="12" /> + <hkern u1="Ó" u2="V" k="12" /> + <hkern u1="Ô" u2="X" k="12" /> + <hkern u1="Ô" u2="V" k="12" /> + <hkern u1="Õ" u2="X" k="12" /> + <hkern u1="Õ" u2="V" k="12" /> + <hkern u1="Ö" u2="X" k="12" /> + <hkern u1="Ö" u2="V" k="12" /> + <hkern u1="Ý" u2="›" k="34" /> + <hkern u1="Ý" u2="‹" k="71" /> + <hkern u1="Ý" u2="•" k="82" /> + <hkern u1="Ý" u2="’" k="-4" /> + <hkern u1="Ý" u2="ÿ" k="36" /> + <hkern u1="Ý" u2="ý" k="36" /> + <hkern u1="Ý" u2="®" k="20" /> + <hkern u1="Ý" u2="«" k="71" /> + <hkern u1="Ý" u2="y" k="36" /> + <hkern u1="Ý" u2="x" k="48" /> + <hkern u1="Ý" u2="v" k="31" /> + <hkern u1="Ý" u2="u" k="50" /> + <hkern u1="Ý" u2="m" k="53" /> + <hkern u1="Ý" u2="f" k="19" /> + <hkern u1="Ý" u2="-" k="98" /> + <hkern u1="Ý" u2=" " k="26" /> + <hkern u1="Þ" u2="…" k="50" /> + <hkern u1="Þ" u2="Ÿ" k="46" /> + <hkern u1="Þ" u2="Ý" k="46" /> + <hkern u1="Þ" u2="Æ" k="59" /> + <hkern u1="Þ" u2="Å" k="27" /> + <hkern u1="Þ" u2="Ä" k="27" /> + <hkern u1="Þ" u2="Ã" k="27" /> + <hkern u1="Þ" u2="Â" k="27" /> + <hkern u1="Þ" u2="Á" k="27" /> + <hkern u1="Þ" u2="À" k="27" /> + <hkern u1="Þ" u2="Y" k="46" /> + <hkern u1="Þ" u2="X" k="41" /> + <hkern u1="Þ" u2="W" k="13" /> + <hkern u1="Þ" u2="V" k="26" /> + <hkern u1="Þ" u2="A" k="27" /> + <hkern u1="Þ" u2="." k="50" /> + <hkern u1="Þ" u2="," k="50" /> + <hkern u1="à" u2="ÿ" k="8" /> + <hkern u1="à" u2="ý" k="8" /> + <hkern u1="à" u2="y" k="8" /> + <hkern u1="à" u2="v" k="4" /> + <hkern u1="á" u2="ÿ" k="8" /> + <hkern u1="á" u2="ý" k="8" /> + <hkern u1="á" u2="y" k="8" /> + <hkern u1="á" u2="v" k="4" /> + <hkern u1="â" u2="ÿ" k="8" /> + <hkern u1="â" u2="ý" k="8" /> + <hkern u1="â" u2="y" k="8" /> + <hkern u1="â" u2="v" k="4" /> + <hkern u1="ã" u2="ÿ" k="8" /> + <hkern u1="ã" u2="ý" k="8" /> + <hkern u1="ã" u2="y" k="8" /> + <hkern u1="ã" u2="v" k="4" /> + <hkern u1="ä" u2="ÿ" k="8" /> + <hkern u1="ä" u2="ý" k="8" /> + <hkern u1="ä" u2="y" k="8" /> + <hkern u1="ä" u2="v" k="4" /> + <hkern u1="å" u2="ÿ" k="8" /> + <hkern u1="å" u2="ý" k="8" /> + <hkern u1="å" u2="y" k="8" /> + <hkern u1="å" u2="v" k="4" /> + <hkern u1="æ" u2="ÿ" k="10" /> + <hkern u1="æ" u2="ý" k="10" /> + <hkern u1="æ" u2="y" k="10" /> + <hkern u1="æ" u2="x" k="8" /> + <hkern u1="æ" u2="v" k="6" /> + <hkern u1="ç" u2="x" k="5" /> + <hkern u1="è" u2="ÿ" k="10" /> + <hkern u1="è" u2="ý" k="10" /> + <hkern u1="è" u2="y" k="10" /> + <hkern u1="è" u2="x" k="8" /> + <hkern u1="è" u2="v" k="6" /> + <hkern u1="é" u2="ÿ" k="10" /> + <hkern u1="é" u2="ý" k="10" /> + <hkern u1="é" u2="y" k="10" /> + <hkern u1="é" u2="x" k="8" /> + <hkern u1="é" u2="v" k="6" /> + <hkern u1="ê" u2="ÿ" k="10" /> + <hkern u1="ê" u2="ý" k="10" /> + <hkern u1="ê" u2="y" k="10" /> + <hkern u1="ê" u2="x" k="8" /> + <hkern u1="ê" u2="v" k="6" /> + <hkern u1="ë" u2="ÿ" k="10" /> + <hkern u1="ë" u2="ý" k="10" /> + <hkern u1="ë" u2="y" k="10" /> + <hkern u1="ë" u2="x" k="8" /> + <hkern u1="ë" u2="v" k="6" /> + <hkern u1="ì" u2="ï" k="-6" /> + <hkern u1="ì" u2="î" k="-4" /> + <hkern u1="í" u2="ï" k="-6" /> + <hkern u1="í" u2="î" k="-4" /> + <hkern u1="î" u2="ȷ" k="-4" /> + <hkern u1="î" u2="ı" k="-4" /> + <hkern u1="î" u2="þ" k="-4" /> + <hkern u1="î" u2="ñ" k="-4" /> + <hkern u1="î" u2="ï" k="-6" /> + <hkern u1="î" u2="î" k="-4" /> + <hkern u1="î" u2="í" k="-4" /> + <hkern u1="î" u2="ì" k="-4" /> + <hkern u1="î" u2="ß" k="-4" /> + <hkern u1="î" u2="r" k="-4" /> + <hkern u1="î" u2="p" k="-4" /> + <hkern u1="î" u2="n" k="-4" /> + <hkern u1="î" u2="m" k="-4" /> + <hkern u1="î" u2="k" k="-4" /> + <hkern u1="î" u2="j" k="-4" /> + <hkern u1="î" u2="i" k="-4" /> + <hkern u1="î" u2="h" k="-4" /> + <hkern u1="î" u2="f" k="-4" /> + <hkern u1="î" u2="b" k="-4" /> + <hkern u1="ï" u2="ȷ" k="-6" /> + <hkern u1="ï" u2="ı" k="-6" /> + <hkern u1="ï" u2="þ" k="-6" /> + <hkern u1="ï" u2="ñ" k="-6" /> + <hkern u1="ï" u2="ï" k="-6" /> + <hkern u1="ï" u2="î" k="-4" /> + <hkern u1="ï" u2="í" k="-6" /> + <hkern u1="ï" u2="ì" k="-6" /> + <hkern u1="ï" u2="ß" k="-6" /> + <hkern u1="ï" u2="r" k="-6" /> + <hkern u1="ï" u2="p" k="-6" /> + <hkern u1="ï" u2="n" k="-6" /> + <hkern u1="ï" u2="m" k="-6" /> + <hkern u1="ï" u2="k" k="-6" /> + <hkern u1="ï" u2="j" k="-6" /> + <hkern u1="ï" u2="i" k="-6" /> + <hkern u1="ï" u2="h" k="-6" /> + <hkern u1="ï" u2="f" k="-6" /> + <hkern u1="ï" u2="b" k="-6" /> + <hkern u1="ñ" u2="ÿ" k="8" /> + <hkern u1="ñ" u2="ý" k="8" /> + <hkern u1="ñ" u2="y" k="8" /> + <hkern u1="ñ" u2="v" k="8" /> + <hkern u1="ò" u2="ÿ" k="12" /> + <hkern u1="ò" u2="ý" k="12" /> + <hkern u1="ò" u2="y" k="12" /> + <hkern u1="ò" u2="x" k="24" /> + <hkern u1="ò" u2="v" k="8" /> + <hkern u1="ó" u2="ÿ" k="12" /> + <hkern u1="ó" u2="ý" k="12" /> + <hkern u1="ó" u2="y" k="12" /> + <hkern u1="ó" u2="x" k="24" /> + <hkern u1="ó" u2="v" k="8" /> + <hkern u1="ô" u2="ÿ" k="12" /> + <hkern u1="ô" u2="ý" k="12" /> + <hkern u1="ô" u2="y" k="12" /> + <hkern u1="ô" u2="x" k="24" /> + <hkern u1="ô" u2="v" k="8" /> + <hkern u1="õ" u2="ÿ" k="12" /> + <hkern u1="õ" u2="ý" k="12" /> + <hkern u1="õ" u2="y" k="12" /> + <hkern u1="õ" u2="x" k="24" /> + <hkern u1="õ" u2="v" k="8" /> + <hkern u1="ö" u2="ÿ" k="12" /> + <hkern u1="ö" u2="ý" k="12" /> + <hkern u1="ö" u2="y" k="12" /> + <hkern u1="ö" u2="x" k="24" /> + <hkern u1="ö" u2="v" k="8" /> + <hkern u1="ø" u2="x" k="9" /> + <hkern u1="ù" u2="ï" k="-6" /> + <hkern u1="ù" u2="î" k="-4" /> + <hkern u1="ú" u2="ï" k="-6" /> + <hkern u1="ú" u2="î" k="-4" /> + <hkern u1="û" u2="ï" k="-6" /> + <hkern u1="û" u2="î" k="-4" /> + <hkern u1="ü" u2="ï" k="-6" /> + <hkern u1="ü" u2="î" k="-4" /> + <hkern u1="ý" u2="…" k="50" /> + <hkern u1="ý" u2="”" k="-6" /> + <hkern u1="ý" u2="’" k="-6" /> + <hkern u1="ý" u2="–" k="9" /> + <hkern u1="ý" u2="š" k="14" /> + <hkern u1="ý" u2="œ" k="12" /> + <hkern u1="ý" u2="ö" k="12" /> + <hkern u1="ý" u2="õ" k="12" /> + <hkern u1="ý" u2="ô" k="12" /> + <hkern u1="ý" u2="ó" k="12" /> + <hkern u1="ý" u2="ò" k="12" /> + <hkern u1="ý" u2="ð" k="10" /> + <hkern u1="ý" u2="ë" k="12" /> + <hkern u1="ý" u2="ê" k="12" /> + <hkern u1="ý" u2="é" k="12" /> + <hkern u1="ý" u2="è" k="12" /> + <hkern u1="ý" u2="ç" k="12" /> + <hkern u1="ý" u2="­" k="9" /> + <hkern u1="ý" u2="q" k="10" /> + <hkern u1="ý" u2="o" k="12" /> + <hkern u1="ý" u2="e" k="12" /> + <hkern u1="ý" u2="." k="50" /> + <hkern u1="ý" u2="-" k="9" /> + <hkern u1="þ" u2="ÿ" k="8" /> + <hkern u1="þ" u2="ý" k="8" /> + <hkern u1="þ" u2="y" k="8" /> + <hkern u1="þ" u2="x" k="13" /> + <hkern u1="þ" u2="v" k="3" /> + <hkern u1="ÿ" u2="…" k="50" /> + <hkern u1="ÿ" u2="”" k="-6" /> + <hkern u1="ÿ" u2="’" k="-6" /> + <hkern u1="ÿ" u2="–" k="9" /> + <hkern u1="ÿ" u2="š" k="14" /> + <hkern u1="ÿ" u2="œ" k="12" /> + <hkern u1="ÿ" u2="ö" k="12" /> + <hkern u1="ÿ" u2="õ" k="12" /> + <hkern u1="ÿ" u2="ô" k="12" /> + <hkern u1="ÿ" u2="ó" k="12" /> + <hkern u1="ÿ" u2="ò" k="12" /> + <hkern u1="ÿ" u2="ð" k="10" /> + <hkern u1="ÿ" u2="ë" k="12" /> + <hkern u1="ÿ" u2="ê" k="12" /> + <hkern u1="ÿ" u2="é" k="12" /> + <hkern u1="ÿ" u2="è" k="12" /> + <hkern u1="ÿ" u2="ç" k="12" /> + <hkern u1="ÿ" u2="­" k="9" /> + <hkern u1="ÿ" u2="q" k="10" /> + <hkern u1="ÿ" u2="o" k="12" /> + <hkern u1="ÿ" u2="e" k="12" /> + <hkern u1="ÿ" u2="." k="50" /> + <hkern u1="ÿ" u2="-" k="9" /> + <hkern u1="ı" u2="ï" k="-6" /> + <hkern u1="ı" u2="î" k="-4" /> + <hkern u1="Œ" u2="ÿ" k="24" /> + <hkern u1="Œ" u2="ý" k="24" /> + <hkern u1="Œ" u2="y" k="24" /> + <hkern u1="Œ" u2="v" k="24" /> + <hkern u1="œ" u2="ÿ" k="10" /> + <hkern u1="œ" u2="ý" k="10" /> + <hkern u1="œ" u2="y" k="10" /> + <hkern u1="œ" u2="x" k="8" /> + <hkern u1="œ" u2="v" k="6" /> + <hkern u1="Š" u2="ÿ" k="10" /> + <hkern u1="Š" u2="ý" k="10" /> + <hkern u1="Š" u2="y" k="10" /> + <hkern u1="Š" u2="x" k="15" /> + <hkern u1="Š" u2="v" k="15" /> + <hkern u1="Š" u2="V" k="9" /> + <hkern u1="Š" u2="-" k="-18" /> + <hkern u1="Ÿ" u2="›" k="34" /> + <hkern u1="Ÿ" u2="‹" k="71" /> + <hkern u1="Ÿ" u2="•" k="82" /> + <hkern u1="Ÿ" u2="’" k="-4" /> + <hkern u1="Ÿ" u2="ÿ" k="36" /> + <hkern u1="Ÿ" u2="ý" k="36" /> + <hkern u1="Ÿ" u2="®" k="20" /> + <hkern u1="Ÿ" u2="«" k="71" /> + <hkern u1="Ÿ" u2="y" k="36" /> + <hkern u1="Ÿ" u2="x" k="48" /> + <hkern u1="Ÿ" u2="v" k="31" /> + <hkern u1="Ÿ" u2="u" k="50" /> + <hkern u1="Ÿ" u2="m" k="53" /> + <hkern u1="Ÿ" u2="f" k="19" /> + <hkern u1="Ÿ" u2="-" k="98" /> + <hkern u1="Ÿ" u2=" " k="26" /> + <hkern u1="Ž" u2="ÿ" k="8" /> + <hkern u1="Ž" u2="ý" k="8" /> + <hkern u1="Ž" u2="y" k="8" /> + <hkern u1="Ž" u2="v" k="8" /> + <hkern u1="ȷ" u2="ï" k="-6" /> + <hkern u1="ȷ" u2="î" k="-4" /> + <hkern u1="–" u2="ÿ" k="9" /> + <hkern u1="–" u2="ý" k="9" /> + <hkern u1="–" u2="y" k="9" /> + <hkern u1="–" u2="x" k="14" /> + <hkern u1="–" u2="v" k="9" /> + <hkern u1="–" u2="X" k="46" /> + <hkern u1="–" u2="V" k="69" /> + <hkern u1="—" u2="x" k="14" /> + <hkern u1="—" u2="v" k="9" /> + <hkern u1="—" u2="X" k="46" /> + <hkern u1="—" u2="V" k="69" /> + <hkern u1="‘" u2="V" k="-7" /> + <hkern u1="’" u2="f" k="5" /> + <hkern u1="’" u2="V" k="-6" /> + <hkern u1="‚" u2="Ÿ" k="109" /> + <hkern u1="‚" u2="Œ" k="18" /> + <hkern u1="‚" u2="ÿ" k="43" /> + <hkern u1="‚" u2="ý" k="43" /> + <hkern u1="‚" u2="Ý" k="109" /> + <hkern u1="‚" u2="Ö" k="18" /> + <hkern u1="‚" u2="Õ" k="18" /> + <hkern u1="‚" u2="Ô" k="18" /> + <hkern u1="‚" u2="Ó" k="18" /> + <hkern u1="‚" u2="Ò" k="18" /> + <hkern u1="‚" u2="Ç" k="18" /> + <hkern u1="‚" u2="Å" k="-16" /> + <hkern u1="‚" u2="Ä" k="-16" /> + <hkern u1="‚" u2="Ã" k="-16" /> + <hkern u1="‚" u2="Â" k="-16" /> + <hkern u1="‚" u2="Á" k="-16" /> + <hkern u1="‚" u2="À" k="-16" /> + <hkern u1="‚" u2="y" k="43" /> + <hkern u1="‚" u2="w" k="53" /> + <hkern u1="‚" u2="v" k="62" /> + <hkern u1="‚" u2="t" k="21" /> + <hkern u1="‚" u2="j" k="-50" /> + <hkern u1="‚" u2="f" k="22" /> + <hkern u1="‚" u2="Y" k="109" /> + <hkern u1="‚" u2="X" k="-20" /> + <hkern u1="‚" u2="W" k="86" /> + <hkern u1="‚" u2="V" k="103" /> + <hkern u1="‚" u2="T" k="82" /> + <hkern u1="‚" u2="Q" k="18" /> + <hkern u1="‚" u2="O" k="18" /> + <hkern u1="‚" u2="G" k="18" /> + <hkern u1="‚" u2="C" k="18" /> + <hkern u1="‚" u2="A" k="-16" /> + <hkern u1="“" u2="V" k="-7" /> + <hkern u1="”" u2="f" k="5" /> + <hkern u1="”" u2="V" k="-6" /> + <hkern u1="„" u2="v" k="62" /> + <hkern u1="„" u2="X" k="-20" /> + <hkern u1="„" u2="V" k="103" /> + <hkern u1="•" u2="Ÿ" k="82" /> + <hkern u1="•" u2="Ý" k="82" /> + <hkern u1="•" u2="Å" k="31" /> + <hkern u1="•" u2="Ä" k="31" /> + <hkern u1="•" u2="Ã" k="31" /> + <hkern u1="•" u2="Â" k="31" /> + <hkern u1="•" u2="Á" k="31" /> + <hkern u1="•" u2="À" k="31" /> + <hkern u1="•" u2="Y" k="82" /> + <hkern u1="•" u2="X" k="39" /> + <hkern u1="•" u2="W" k="38" /> + <hkern u1="•" u2="V" k="48" /> + <hkern u1="•" u2="T" k="46" /> + <hkern u1="•" u2="J" k="24" /> + <hkern u1="•" u2="A" k="31" /> + <hkern u1="…" u2="’" k="64" /> + <hkern u1="…" u2=" " k="18" /> + <hkern u1="‹" u2="Ÿ" k="34" /> + <hkern u1="‹" u2="Ý" k="34" /> + <hkern u1="‹" u2="Y" k="34" /> + <hkern u1="‹" u2="X" k="2" /> + <hkern u1="‹" u2="W" k="9" /> + <hkern u1="‹" u2="V" k="21" /> + <hkern u1="‹" u2="T" k="11" /> + <hkern u1="›" u2="Ÿ" k="71" /> + <hkern u1="›" u2="Ý" k="71" /> + <hkern u1="›" u2="Å" k="18" /> + <hkern u1="›" u2="Ä" k="18" /> + <hkern u1="›" u2="Ã" k="18" /> + <hkern u1="›" u2="Â" k="18" /> + <hkern u1="›" u2="Á" k="18" /> + <hkern u1="›" u2="À" k="18" /> + <hkern u1="›" u2="x" k="4" /> + <hkern u1="›" u2="v" k="2" /> + <hkern u1="›" u2="X" k="44" /> + <hkern u1="›" u2="V" k="46" /> + <hkern g1="eight,B" + g2="W" + k="6" /> + <hkern g1="eight,B" + g2="Y,Yacute,Ydieresis" + k="29" /> + <hkern g1="eight,B" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="9" /> + <hkern g1="eight,B" + g2="J" + k="10" /> + <hkern g1="eight,B" + g2="AE" + k="23" /> + <hkern g1="C,Ccedilla" + g2="y,yacute,ydieresis" + k="18" /> + <hkern g1="C,Ccedilla" + g2="T" + k="12" /> + <hkern g1="D,Eth" + g2="comma,period,ellipsis" + k="12" /> + <hkern g1="D,Eth" + g2="T" + k="18" /> + <hkern g1="D,Eth" + g2="W" + k="14" /> + <hkern g1="D,Eth" + g2="Y,Yacute,Ydieresis" + k="31" /> + <hkern g1="D,Eth" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="26" /> + <hkern g1="D,Eth" + g2="J" + k="16" /> + <hkern g1="D,Eth" + g2="AE" + k="40" /> + <hkern g1="D,Eth" + g2="Z,Zcaron" + k="6" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" + g2="y,yacute,ydieresis" + k="24" /> + <hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" + g2="w" + k="24" /> + <hkern g1="G" + g2="comma,period,ellipsis" + k="11" /> + <hkern g1="G" + g2="T" + k="18" /> + <hkern g1="G" + g2="W" + k="10" /> + <hkern g1="G" + g2="Y,Yacute,Ydieresis" + k="14" /> + <hkern g1="G" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="29" /> + <hkern g1="G" + g2="J" + k="22" /> + <hkern g1="G" + g2="AE" + k="36" /> + <hkern g1="J" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="24" /> + <hkern g1="J" + g2="J" + k="10" /> + <hkern g1="J" + g2="AE" + k="34" /> + <hkern g1="K" + g2="y,yacute,ydieresis" + k="22" /> + <hkern g1="K" + g2="guillemotleft,guilsinglleft" + k="50" /> + <hkern g1="K" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="7" /> + <hkern g1="K" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="33" /> + <hkern g1="K" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" + k="6" /> + <hkern g1="K" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="22" /> + <hkern g1="K" + g2="d,q" + k="17" /> + <hkern g1="K" + g2="w" + k="25" /> + <hkern g1="K" + g2="S,Scaron" + k="12" /> + <hkern g1="K" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="18" /> + <hkern g1="K" + g2="g" + k="17" /> + <hkern g1="K" + g2="Oslash" + k="27" /> + <hkern g1="L" + g2="y,yacute,ydieresis" + k="12" /> + <hkern g1="L" + g2="guillemotleft,guilsinglleft" + k="7" /> + <hkern g1="L" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="102" /> + <hkern g1="L" + g2="comma,period,ellipsis" + k="-22" /> + <hkern g1="L" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="24" /> + <hkern g1="L" + g2="T" + k="90" /> + <hkern g1="L" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" + k="24" /> + <hkern g1="L" + g2="W" + k="38" /> + <hkern g1="L" + g2="Y,Yacute,Ydieresis" + k="96" /> + <hkern g1="L" + g2="w" + k="30" /> + <hkern g1="Oslash" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="23" /> + <hkern g1="Oslash" + g2="AE" + k="36" /> + <hkern g1="R" + g2="guillemotleft,guilsinglleft" + k="17" /> + <hkern g1="R" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="4" /> + <hkern g1="R" + g2="T" + k="2" /> + <hkern g1="R" + g2="W" + k="10" /> + <hkern g1="R" + g2="Y,Yacute,Ydieresis" + k="26" /> + <hkern g1="R" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="15" /> + <hkern g1="R" + g2="d,q" + k="10" /> + <hkern g1="R" + g2="J" + k="8" /> + <hkern g1="S,Scaron" + g2="y,yacute,ydieresis" + k="10" /> + <hkern g1="S,Scaron" + g2="T" + k="12" /> + <hkern g1="S,Scaron" + g2="W" + k="9" /> + <hkern g1="S,Scaron" + g2="Y,Yacute,Ydieresis" + k="18" /> + <hkern g1="S,Scaron" + g2="w" + k="10" /> + <hkern g1="S,Scaron" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="7" /> + <hkern g1="S,Scaron" + g2="AE" + k="15" /> + <hkern g1="T" + g2="y,yacute,ydieresis" + k="54" /> + <hkern g1="T" + g2="guillemotleft,guilsinglleft" + k="19" /> + <hkern g1="T" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="-36" /> + <hkern g1="T" + g2="comma,period,ellipsis" + k="102" /> + <hkern g1="T" + g2="colon,semicolon" + k="11" /> + <hkern g1="T" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="18" /> + <hkern g1="T" + g2="T" + k="-16" /> + <hkern g1="T" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="72" /> + <hkern g1="T" + g2="d,q" + k="31" /> + <hkern g1="T" + g2="t" + k="4" /> + <hkern g1="T" + g2="w" + k="54" /> + <hkern g1="T" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="64" /> + <hkern g1="T" + g2="J" + k="96" /> + <hkern g1="T" + g2="AE" + k="96" /> + <hkern g1="T" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="72" /> + <hkern g1="T" + g2="s,scaron" + k="66" /> + <hkern g1="T" + g2="z,zcaron" + k="21" /> + <hkern g1="T" + g2="oslash" + k="37" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" + g2="comma,period,ellipsis" + k="19" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="24" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" + g2="J" + k="10" /> + <hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" + g2="AE" + k="36" /> + <hkern g1="W" + g2="y,yacute,ydieresis" + k="9" /> + <hkern g1="W" + g2="guillemotleft,guilsinglleft" + k="36" /> + <hkern g1="W" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="-7" /> + <hkern g1="W" + g2="comma,period,ellipsis" + k="78" /> + <hkern g1="W" + g2="colon,semicolon" + k="26" /> + <hkern g1="W" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="10" /> + <hkern g1="W" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="45" /> + <hkern g1="W" + g2="d,q" + k="36" /> + <hkern g1="W" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="33" /> + <hkern g1="W" + g2="J" + k="75" /> + <hkern g1="W" + g2="AE" + k="89" /> + <hkern g1="W" + g2="S,Scaron" + k="13" /> + <hkern g1="W" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="39" /> + <hkern g1="W" + g2="g" + k="36" /> + <hkern g1="W" + g2="Oslash" + k="14" /> + <hkern g1="W" + g2="s,scaron" + k="41" /> + <hkern g1="W" + g2="z,zcaron" + k="26" /> + <hkern g1="W" + g2="oslash" + k="45" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="y,yacute,ydieresis" + k="36" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="guillemotleft,guilsinglleft" + k="71" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="-4" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="comma,period,ellipsis" + k="102" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="colon,semicolon" + k="56" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="14" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="66" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="d,q" + k="63" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="w" + k="21" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="57" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="J" + k="105" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="AE" + k="116" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="S,Scaron" + k="29" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="66" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="g" + k="63" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="Oslash" + k="26" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="s,scaron" + k="63" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="z,zcaron" + k="57" /> + <hkern g1="Y,Yacute,Ydieresis" + g2="oslash" + k="82" /> + <hkern g1="Z,Zcaron" + g2="y,yacute,ydieresis" + k="8" /> + <hkern g1="Z,Zcaron" + g2="w" + k="8" /> + <hkern g1="a,h,m,n,agrave,aacute,acircumflex,atilde,adieresis,aring,ntilde" + g2="y,yacute,ydieresis" + k="8" /> + <hkern g1="a,h,m,n,agrave,aacute,acircumflex,atilde,adieresis,aring,ntilde" + g2="w" + k="3" /> + <hkern g1="b,p,thorn" + g2="y,yacute,ydieresis" + k="8" /> + <hkern g1="b,p,thorn" + g2="w" + k="6" /> + <hkern g1="c,ccedilla" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="18" /> + <hkern g1="c,ccedilla" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="12" /> + <hkern g1="comma,period,ellipsis" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="71" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,oe" + g2="y,yacute,ydieresis" + k="10" /> + <hkern g1="e,ae,egrave,eacute,ecircumflex,edieresis,oe" + g2="w" + k="6" /> + <hkern g1="hyphen,uni00AD,periodcentered,endash,emdash" + g2="y,yacute,ydieresis" + k="9" /> + <hkern g1="guillemotright,guilsinglright" + g2="y,yacute,ydieresis" + k="2" /> + <hkern g1="guillemotright,guilsinglright" + g2="T" + k="19" /> + <hkern g1="guillemotright,guilsinglright" + g2="W" + k="36" /> + <hkern g1="guillemotright,guilsinglright" + g2="Y,Yacute,Ydieresis" + k="71" /> + <hkern g1="guillemotright,guilsinglright" + g2="w" + k="2" /> + <hkern g1="guillemotright,guilsinglright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="18" /> + <hkern g1="guillemotright,guilsinglright" + g2="J" + k="15" /> + <hkern g1="k" + g2="y,yacute,ydieresis" + k="20" /> + <hkern g1="k" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="18" /> + <hkern g1="k" + g2="d,q" + k="12" /> + <hkern g1="k" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="4" /> + <hkern g1="k" + g2="g" + k="12" /> + <hkern g1="k" + g2="s,scaron" + k="12" /> + <hkern g1="l" + g2="y,yacute,ydieresis" + k="8" /> + <hkern g1="l" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="29" /> + <hkern g1="l" + g2="comma,period,ellipsis" + k="-10" /> + <hkern g1="l" + g2="l,u,ugrave,uacute,ucircumflex,udieresis" + k="4" /> + <hkern g1="l" + g2="t" + k="7" /> + <hkern g1="l" + g2="w" + k="7" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" + g2="y,yacute,ydieresis" + k="12" /> + <hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis" + g2="w" + k="12" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="comma,period,ellipsis" + k="71" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="T" + k="-36" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="W" + k="-7" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="Y,Yacute,Ydieresis" + k="-4" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="t" + k="-13" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="89" /> + <hkern g1="quotedbl,quotesingle,quoteleft,quotedblleft" + g2="J" + k="96" /> + <hkern g1="quotesinglbase,quotedblbase" + g2="y,yacute,ydieresis" + k="43" /> + <hkern g1="quoteright,quotedblright" + g2="comma,period,ellipsis" + k="84" /> + <hkern g1="quoteright,quotedblright" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="4" /> + <hkern g1="quoteright,quotedblright" + g2="T" + k="-36" /> + <hkern g1="quoteright,quotedblright" + g2="W" + k="-6" /> + <hkern g1="quoteright,quotedblright" + g2="Y,Yacute,Ydieresis" + k="-3" /> + <hkern g1="quoteright,quotedblright" + g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + k="96" /> + <hkern g1="quoteright,quotedblright" + g2="J" + k="82" /> + <hkern g1="r" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="-6" /> + <hkern g1="r" + g2="comma,period,ellipsis" + k="66" /> + <hkern g1="r" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="18" /> + <hkern g1="r" + g2="d,q" + k="18" /> + <hkern g1="r" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="24" /> + <hkern g1="r" + g2="g" + k="18" /> + <hkern g1="r" + g2="s,scaron" + k="10" /> + <hkern g1="r" + g2="oslash" + k="15" /> + <hkern g1="t" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="-10" /> + <hkern g1="t" + g2="comma,period,ellipsis" + k="-10" /> + <hkern g1="v,y,yacute,ydieresis" + g2="guillemotleft,guilsinglleft" + k="2" /> + <hkern g1="v,y,yacute,ydieresis" + g2="comma,period,ellipsis" + k="50" /> + <hkern g1="v,y,yacute,ydieresis" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="12" /> + <hkern g1="v,y,yacute,ydieresis" + g2="d,q" + k="10" /> + <hkern g1="v,y,yacute,ydieresis" + g2="g" + k="10" /> + <hkern g1="v,y,yacute,ydieresis" + g2="s,scaron" + k="14" /> + <hkern g1="v,y,yacute,ydieresis" + g2="oslash" + k="20" /> + <hkern g1="v,y,yacute,ydieresis" + g2="hyphen,uni00AD,periodcentered,endash,emdash" + k="9" /> + <hkern g1="w" + g2="guillemotleft,guilsinglleft" + k="2" /> + <hkern g1="w" + g2="comma,period,ellipsis" + k="39" /> + <hkern g1="w" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="7" /> + <hkern g1="w" + g2="d,q" + k="4" /> + <hkern g1="w" + g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" + k="4" /> + <hkern g1="w" + g2="g" + k="4" /> + <hkern g1="w" + g2="s,scaron" + k="9" /> + <hkern g1="w" + g2="oslash" + k="17" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="y,yacute,ydieresis" + k="45" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="guillemotleft,guilsinglleft" + k="18" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="quotedbl,quotesingle,quoteright,quotedblright" + k="89" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="comma,period,ellipsis" + k="-4" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="colon,semicolon" + k="-4" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,OE" + k="29" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="T" + k="64" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" + k="24" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="W" + k="33" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="Y,Yacute,Ydieresis" + k="57" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="c,e,o,ccedilla,egrave,eacute,ecircumflex,edieresis,ograve,oacute,ocircumflex,otilde,odieresis,oe" + k="13" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="d,q" + k="8" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="l,u,ugrave,uacute,ucircumflex,udieresis" + k="4" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="t" + k="18" /> + <hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" + g2="w" + k="46" /> + </font> +</defs></svg> diff --git a/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.ttf b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d685fa47a5ba3dfc0d9930fc8e281788f426ea8f Binary files /dev/null and b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.ttf differ diff --git a/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff new file mode 100644 index 0000000000000000000000000000000000000000..8c9346d0f728dd707aa6941c7fa0a0e244339066 Binary files /dev/null and b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff differ diff --git a/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff2 b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..25518f80eddbfcde44e3ddd88ddb879109e8a6d8 Binary files /dev/null and b/themes/sunvibes/assets/fonts/25c8d3f21fac75e401fe67e5c3878ae4.woff2 differ diff --git a/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.eot b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.eot new file mode 100644 index 0000000000000000000000000000000000000000..85e7d988009b64197877abd15555a023fe601e1f Binary files /dev/null and b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.eot differ diff --git a/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.svg b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.svg new file mode 100644 index 0000000000000000000000000000000000000000..50700bdbf885efd6411f6ad5f57fff0cc73b13b9 --- /dev/null +++ b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.svg @@ -0,0 +1,7024 @@ +<?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> +<metadata> +Created by FontForge 20120731 at Sat Jun 29 15:22:19 2019 + By www +Copyright (c) 2014 by Studio kmzero. All rights reserved. +</metadata> +<defs> +<font id="COCOGOOSE" horiz-adv-x="713" > + <font-face + font-family="COCOGOOSE" + font-weight="400" + font-stretch="normal" + units-per-em="2000" + panose-1="2 0 0 0 0 0 0 0 0 0" + ascent="1600" + descent="-400" + x-height="1270" + cap-height="1485" + bbox="-144 -832 2684 2234" + underline-thickness="100" + underline-position="-100" + unicode-range="U+000D-FB06" + /> +<missing-glyph horiz-adv-x="1368" +d="M969 250q-57 -48 -129 -77t-153 -29t-152 29t-128 77h562zM373 282q-50 57 -77 129t-27 153q0 77 24.5 143.5t69.5 122.5h556zM405 876q57 51 129 79.5t153 28.5t152.5 -29t125.5 -79h-560zM1105 564q0 -77 -24.5 -144.5t-69.5 -123.5h-558l546 550q106 -131 106 -282z +M823 76q-66 -18 -136 -18q-108 0 -200.5 41t-160.5 110t-106.5 161t-38.5 194q0 108 41 201t110 161t161 107t194 39q109 0 202 -42t160.5 -112.5t105.5 -162t38 -191.5q0 -92 -29 -170.5t-79 -141.5t-117.5 -108t-144.5 -68zM809 1012q-54 18 -122 18q-101 0 -186 -38 +t-146.5 -102t-96.5 -148.5t-35 -177.5q0 -94 35.5 -178.5t98 -149t147.5 -102.5t183 -38q96 0 181 36.5t148 100t100 148.5t37 183q0 85 -27.5 158.5t-74 131.5t-109.5 98t-133 60zM132 244l26 -44l-23 -13l-46 77l11 6q6 5 13 3l79 -8l-25 42l23 13l44 -76l-10 -6 +q-4 -2 -6 -2q-2 -1 -6 -1zM202 104l-49 58l88 74l49 -59l-20 -16l-32 37l-13 -11l25 -30l-20 -17l-25 30l-15 -12l32 -37zM279 150l17 20l70 -59l-17 -20l-24 21l-58 -68l-20 18l57 67zM391 96l19 -12l-16 -123l-16 9q-2 2 -4 3q-2 2 -2 4q-2 4 -2 5v5l2 14l-38 22l-11 -8 +q-1 -1 -2 -1t-2 -1h-5q-2 -1 -3 -0.5t-2 0.5q-2 1 -3 1t-2 1l-15 9zM381 58l-2 -2l-2 -2l-2 -2l-17 -12l18 -11l2 21q0 1 0.5 1.5t0.5 1.5t0.5 1t0.5 1t0.5 1.5t0.5 1.5zM499 -6l-10 -25l-38 16l-15 -40l-26 10l42 106l71 -28l-9 -24l-46 18l-7 -18zM508 -23q1 5 5 15l9 12 +q3 4 11 10q4 3 14 7q6 1 15 3q10 0 15 -2q11 -2 15 -5q5 -2 13 -8q4 -3 10 -11q5 -8 6 -14q2 -5 4 -15q0 -10 -1 -15q-2 -9 -6 -15q-2 -5 -8 -13q-2 -2 -5 -4.5t-6 -4.5q-7 -4 -14 -7q-8 -3 -15 -3h-7.5t-8.5 1t-15 5q-6 3 -12 9q-4 3 -10 11q-2 3 -3.5 6.5t-3.5 6.5l-3 15 +v8t1 8zM535 -29q-2 -6 0 -12q2 -8 4 -12l4 -4t5 -4q3 -3 12 -5q6 -2 12 0q8 2 11 4q6 4 9 9q3 4 5 12q2 6 0 13q-2 8 -5 11q-2 3 -4 5l-4 4q-3 2 -5.5 3t-6.5 2q-6 1 -12 0q-4 -1 -6.5 -2t-5.5 -3q-5 -4 -8 -9q-3 -3 -5 -12zM738 -103l-24 -1l-53 76l1 -76l-27 -1l-2 115h12 +h11q5 0 7 -1t4 -3l40 -58q1 -1 1 -1.5t1 -1.5q0 -1 0.5 -1.5t0.5 -1.5q0 -3 1 -4l-2 73h28zM751 -14l-5 26l90 17l5 -25l-32 -7l17 -86l-26 -5l-17 86zM886 21q-2 0 -4 -2q-2 0 -2 -2q-1 -1 -1 -1.5t-1 -1.5q0 -1 1 -2q0 -1 2 -3q1 0 1.5 -0.5t2.5 -0.5h7h9q9 0 14 -1 +q6 -2 11 -4q6 -4 9 -7q4 -4 6 -11q3 -8 2 -15q0 -7 -5 -15q-3 -7 -10 -12l-6 -4t-8 -4q-8 -2 -13 -2q-5 -1 -13 1q-4 1 -12 5q-7 4 -9 8l6 8l3 3q2 2 4 2q2 1 7 1q2 0 3 -0.5t3 -0.5t3 -0.5t3 -0.5q4 0 6 1q1 0 5 2l4 4q2 2 2 5v5l-3 3q-1 1 -4 1q-2 1 -6 1h-8q-8 0 -12 1 +q-4 0 -12 2q-4 2 -10 6q-5 5 -8 12q-2 4 -2 7.5v6.5q2 9 5 13q3 5 9 10q4 4 12 7q6 2 10 2q2 0 4.5 -0.5t5.5 -0.5q6 -2 10 -4q6 -2 8 -4l-5 -9q-1 -2 -1.5 -2.5t-1.5 -2.5q-4 -2 -6 -2q-1 -1 -4 -1h-4h-4q-2 0 -3 -1zM959 -29q0 2 -0.5 3t-0.5 3q0 4 1 6q0 2 3 5q1 2 5 4 +q2 1 3 1t3 1q2 0 3 -0.5t3 -0.5q4 -2 5 -3q2 -1 4 -5t2 -6q0 -4 -1 -6q-2 -4 -3 -5q-1 -2 -5 -4t-6 -2q-4 0 -6 1q-3 0 -6 3t-4 5zM1001 41q3 -6 9 -9q3 -3 11 -5q6 -2 12 0q4 0 12 4l3.5 3.5l3.5 3.5t3 4l2 4q2 5 6 8q2 2 3.5 2t3.5 1h6l10 -2q-2 -10 -4 -14q-1 -4 -5 -12 +q-3 -6 -8 -11q-6 -6 -9 -8q-4 -2 -7.5 -4t-7.5 -3q-8 -3 -15 -3q-5 -1 -15 1q-3 1 -6.5 1.5t-7.5 2.5q-3 2 -6.5 4t-5.5 5q-6 5 -11 11q-2 4 -3.5 7.5t-3.5 7.5q-1 4 -3 14q0 10 1 15t5 15l4 6t5 6q5 7 12 11q5 4 11 5q5 2 13 4h13q6 0 14 -2l-1 -10l-3 -6q-1 -2 -2 -2.5 +t-3 -2.5q-5 -3 -10 -3q-6 0 -9 -1q-6 -2 -9 -4q-6 -3 -9 -9q-2 -3 -3 -5.5t-1 -5.5q-2 -7 0 -13q2 -8 5 -11zM1070 86q-6 5 -10 13q-2 4 -3 7t-2 7q-2 5 -2 15q0 5 2 15q1 6 6 14q2 3 4.5 6.5t5.5 5.5q2 3 5.5 5.5t6.5 4.5q4 2 7 3t7 2q5 2 15 2t15 -2q7 -1 14 -5 +q7 -5 13 -10q2 -3 4.5 -6t4.5 -7t6 -14q1 -5 1 -15q0 -6 -2 -14t-6 -14q-2 -4 -4.5 -7t-4.5 -6q-6 -6 -13 -9q-8 -5 -14 -6q-10 -2 -15 -2t-15 2q-6 1 -14 6q-6 3 -12 9zM1089 105q3 -3 11 -7q6 -2 12 -2q8 0 12 2q4 1 10 7t7 10q3 6 3 12t-3 12q-1 5 -7 11t-10 7 +q-6 3 -12 3q-4 0 -12 -2q-8 -4 -11 -7q-6 -6 -7 -11q-2 -4 -2 -12t2 -12q2 -5 7 -11zM1275 247l-15 -23l-46 30l33 -50l-12 -19l-58 10l45 -29l-15 -23l-96 63l10 15q3 4 8 7q3 1 9 1l68 -11l-38 57q-3 4 -3 9t3 10l10 15zM162 736l-6 -15l-107 40l14 38q3 8 7 12q7 7 12 9 +l6 2t7 1t7 -0.5t7 -1.5q7 -3 12 -8q4 -3 8 -11q2 -3 2.5 -6.5t1.5 -6.5q0 -8 -3 -15l-8 -23zM116 780q0 2 0.5 4t0.5 4q0 3 -2 7q-1 3 -5 7q-2 2 -6 4q-3 1 -8 1q-2 0 -8 -2q-4 -2 -6 -4t-2.5 -3.5t-1.5 -3.5l-9 -24l38 -14zM220 861l-34 -62l-100 55l34 62l14 -8l-27 -48 +l29 -16l22 39l13 -7l-21 -39l30 -17l26 48zM236 882l-10 -13l-91 70l25 33q6 6 10 8q4 3 12 5h6.5t6.5 -1q6 -2 12 -6q3 -2 7 -8t5 -9q1 -4 1 -11q0 -4 -2 -10l61 -1l-6 -9q-4 -4 -7 -5q-4 -2 -7 -2l-51 1l-10 -13zM157 942l28 -22l16 21q1 1 1.5 2.5t1.5 3.5v7q0 2 -2 6 +q-2 3 -5 5q-3 3 -6 3q-2 1 -7 1q-2 -1 -3 -1t-3 -1q-3 -2 -5 -5zM245 1036q-2 -1 -3.5 -1t-3.5 -1q-4 -2 -5 -3q-4 -4 -5 -6q-2 -4 -2 -6v-6q2 -4 3 -5q3 -3 5 -4h5q3 0 7 2q6 2 10 4t5 2l6 3q2 0 6 2q1 0 2 0.5t3 0.5q16 2 26 -10q7 -5 8 -12q1 -4 1.5 -7t0.5 -7 +q-2 -10 -4 -14q-5 -8 -9 -12q-12 -11 -25 -12h-5q-2 1 -5 1q-1 0 -2 0.5t-2 0.5t-1 0.5t-1 0.5l1 4l3 6q4 3 9 3h2q2 0 8 2q2 1 3.5 2t3.5 3t2.5 3.5t2.5 3.5q2 4 2 8q2 3 0 8q0 3 -4 7q-3 4 -7 4q-4 2 -7 0q-4 0 -8 -2q-6 -2 -8 -4l-6 -2l-6 -2q-3 -2 -6 -2t-5 -1 +q-8 0 -12 1q-2 2 -5 3.5t-5 4.5q-5 4 -7 11q-2 8 -1 12q2 8 4 12q3 6 7 10q2 2 4 3l4 2q4 3 9 3q8 2 9 2q6 0 8 -1l-1 -5q0 -4 -3 -7t-6 -3zM294 1032q-6 8 -7 14q-3 7 -3 15q-1 4 -0.5 7.5t0.5 7.5q1 7 5 14q2 5 8 13q3 3 6 5.5t6 4.5q8 6 14 7q7 3 15 3q7 1 15 0 +q4 -1 7 -2t7 -3q5 -2 13 -8l5.5 -5.5t4.5 -6.5q6 -8 7 -14q3 -8 3 -15q1 -8 0 -15q-1 -4 -2 -7t-3 -7q-2 -5 -8 -13l-5.5 -5.5t-6.5 -4.5q-11 -8 -21 -9q-12 -3 -23 0q-9 1 -21 8q-11 7 -16 16zM307 1041q4 -8 12 -12q7 -5 15 -6t17 0q8 2 15 7q7 4 12 12q4 7 6 15q1 8 0 17 +q-2 8 -7 15t-12 12q-8 4 -15 6q-8 2 -16 0q-9 -2 -16 -7q-8 -5 -12 -12q-5 -8 -6 -15q-2 -8 0 -16q2 -9 7 -16zM444 1059l-15 -6l-44 106l11 5q3 1 7 1t5 -1l87 -57l1 -1q1 -1 1 -2q1 0 1 -0.5t1 -0.5l-37 88l15 6l44 -106l-11 -5q-3 -1 -7 -1t-6 1l-86 57q-1 0 -1 0.5 +t-1 0.5q0 1 -1 2t-1 2zM548 1214l15 3l71 -102l-9 -2q-2 -1 -3.5 -0.5t-3.5 0.5q-3 2 -5 5l-12 16l-57 -11l-4 -20q-2 -4 -4 -6q-2 -3 -6 -3l-9 -2zM559 1191l-11 -51l44 8l-30 43q-2 2 -2 3.5t-1 3.5v-4v-3zM635 1112l-4 115l15 1l4 -99l50 2l1 -16zM764 1154q-2 -6 0 -12 +q2 -5 5 -10t8 -8q3 -2 5.5 -3t5.5 -2q9 0 12 1q5 0 11 4q5 3 8 8q4 8 5 12l12 68l16 -2l-13 -69q-2 -8 -4 -12q-1 -3 -2.5 -5.5t-3.5 -4.5q-6 -6 -9 -8q-5 -3 -10 -5q-3 -2 -6 -2t-6 -1q-8 0 -12 1q-4 0 -6.5 1t-5.5 3q-5 1 -10 6q-6 6 -8 9q-3 5 -5 10q-3 6 -3 12q0 8 1 12 +l12 69l16 -3zM913 1168q-1 2 -2 3t-2 3l-6 3q-2 1 -7 1h-6q-4 -2 -5 -3q-3 -3 -3 -5q-2 -4 -1 -6q0 -3 2 -5q2 -4 4 -6t4 -3t4 -3q3 -3 5 -4t2.5 -2t2.5 -2q1 -1 1.5 -2t2.5 -2q1 -2 1.5 -2.5t1.5 -2.5q9 -12 4 -27q-2 -5 -8 -13q-8 -6 -12 -7q-8 -3 -14 -3q-5 0 -15 2 +q-14 6 -22 18q0 2 -2 4q0 2 -0.5 2.5t-0.5 2.5q-1 1 -1 3v3l4 1q4 0 6 -1q5 -1 8 -6v-1q3 -5 5 -6q2 -2 4 -3l4 -2q2 0 4 -0.5t4 -0.5q6 0 8 1q6 2 8 4q4 4 5 7q2 5 0 8q0 2 -1 3.5t-2 3.5l-6 6q-2 1 -3.5 2t-3.5 3l-9 9q-4 2 -7 9q-4 6 -4 10q-1 5 2 13q1 6 6 11q6 5 11 6 +q4 2 12 2q5 0 13 -2l4 -2t4 -3q4 -3 7 -7q4 -4 5 -7t3 -7l-5 -2q-3 -2 -8 0q-4 2 -6 4zM973 1035l-63 33l52 102l63 -33l-7 -14l-49 25l-15 -29l40 -20l-8 -15l-39 21l-16 -30l49 -26zM1045 1058q6 7 12 10q3 2 6.5 3.5t6.5 3.5q4 2 7.5 2t7.5 1q10 0 15 -1q7 -1 14 -5 +q7 -3 13 -9q7 -5 11 -12q5 -6 6 -13q3 -8 3 -15q0 -10 -1 -15q-2 -10 -5 -14q-2 -5 -8 -13l-6 -6t-6 -5q-8 -5 -14 -6q-8 -3 -15 -3q-10 0 -15 1q-3 1 -6.5 2t-7.5 3q-5 2 -13 8q-10 10 -14 19q-5 11 -6 22q0 11 3 22q2 5 4.5 10t7.5 10zM1057 1048q-6 -8 -9 -15 +q-2 -4 -2 -8v-8q0 -5 1 -8.5t3 -7.5t4.5 -7.5t5.5 -6.5q4 -3 7.5 -4.5t7.5 -3.5q10 -3 16 -2q9 0 16 4q7 3 14 10q3 4 5 7t3 8q3 9 2 16q0 9 -4 16q-2 4 -4.5 7t-5.5 6q-6 6 -15 9q-4 2 -8 2h-8q-6 0 -16 -4q-8 -5 -13 -10zM1108 920l-10 12l92 69l8 -10l3 -6v-6l-34 -97 +q0 -1 -0.5 -1t-0.5 -1t-0.5 -1t-0.5 -1l-1 -1l76 57l10 -13l-92 -68l-7 9q-2 2 -4 6q0 4 1 6l33 98q1 1 1 2l1 1l2 2zM1164 839l102 53l7 -14l-88 -45l23 -44l-14 -8zM1206 748l-6 15l46 17l2 1q2 2 3 2q0 1 0.5 1.5t0.5 1.5q2 0 2 2l38 58l3 -10q2 -3 2 -9q-1 -2 -1.5 -3.5 +t-1.5 -3.5l-25 -38l-2 -2l-1 -1h2q0 2 2 0l44 -12q2 -1 3.5 -1.5t3.5 -2.5q2 -3 4 -7l4 -10l-66 19q-2 0 -3 1h-3h-3q-2 0 -3 -1z" /> + <glyph glyph-name=".notdef" horiz-adv-x="1368" +d="M969 250q-57 -48 -129 -77t-153 -29t-152 29t-128 77h562zM373 282q-50 57 -77 129t-27 153q0 77 24.5 143.5t69.5 122.5h556zM405 876q57 51 129 79.5t153 28.5t152.5 -29t125.5 -79h-560zM1105 564q0 -77 -24.5 -144.5t-69.5 -123.5h-558l546 550q106 -131 106 -282z +M823 76q-66 -18 -136 -18q-108 0 -200.5 41t-160.5 110t-106.5 161t-38.5 194q0 108 41 201t110 161t161 107t194 39q109 0 202 -42t160.5 -112.5t105.5 -162t38 -191.5q0 -92 -29 -170.5t-79 -141.5t-117.5 -108t-144.5 -68zM809 1012q-54 18 -122 18q-101 0 -186 -38 +t-146.5 -102t-96.5 -148.5t-35 -177.5q0 -94 35.5 -178.5t98 -149t147.5 -102.5t183 -38q96 0 181 36.5t148 100t100 148.5t37 183q0 85 -27.5 158.5t-74 131.5t-109.5 98t-133 60zM132 244l26 -44l-23 -13l-46 77l11 6q6 5 13 3l79 -8l-25 42l23 13l44 -76l-10 -6 +q-4 -2 -6 -2q-2 -1 -6 -1zM202 104l-49 58l88 74l49 -59l-20 -16l-32 37l-13 -11l25 -30l-20 -17l-25 30l-15 -12l32 -37zM279 150l17 20l70 -59l-17 -20l-24 21l-58 -68l-20 18l57 67zM391 96l19 -12l-16 -123l-16 9q-2 2 -4 3q-2 2 -2 4q-2 4 -2 5v5l2 14l-38 22l-11 -8 +q-1 -1 -2 -1t-2 -1h-5q-2 -1 -3 -0.5t-2 0.5q-2 1 -3 1t-2 1l-15 9zM381 58l-2 -2l-2 -2l-2 -2l-17 -12l18 -11l2 21q0 1 0.5 1.5t0.5 1.5t0.5 1t0.5 1t0.5 1.5t0.5 1.5zM499 -6l-10 -25l-38 16l-15 -40l-26 10l42 106l71 -28l-9 -24l-46 18l-7 -18zM508 -23q1 5 5 15l9 12 +q3 4 11 10q4 3 14 7q6 1 15 3q10 0 15 -2q11 -2 15 -5q5 -2 13 -8q4 -3 10 -11q5 -8 6 -14q2 -5 4 -15q0 -10 -1 -15q-2 -9 -6 -15q-2 -5 -8 -13q-2 -2 -5 -4.5t-6 -4.5q-7 -4 -14 -7q-8 -3 -15 -3h-7.5t-8.5 1t-15 5q-6 3 -12 9q-4 3 -10 11q-2 3 -3.5 6.5t-3.5 6.5l-3 15 +v8t1 8zM535 -29q-2 -6 0 -12q2 -8 4 -12l4 -4t5 -4q3 -3 12 -5q6 -2 12 0q8 2 11 4q6 4 9 9q3 4 5 12q2 6 0 13q-2 8 -5 11q-2 3 -4 5l-4 4q-3 2 -5.5 3t-6.5 2q-6 1 -12 0q-4 -1 -6.5 -2t-5.5 -3q-5 -4 -8 -9q-3 -3 -5 -12zM738 -103l-24 -1l-53 76l1 -76l-27 -1l-2 115h12 +h11q5 0 7 -1t4 -3l40 -58q1 -1 1 -1.5t1 -1.5q0 -1 0.5 -1.5t0.5 -1.5q0 -3 1 -4l-2 73h28zM751 -14l-5 26l90 17l5 -25l-32 -7l17 -86l-26 -5l-17 86zM886 21q-2 0 -4 -2q-2 0 -2 -2q-1 -1 -1 -1.5t-1 -1.5q0 -1 1 -2q0 -1 2 -3q1 0 1.5 -0.5t2.5 -0.5h7h9q9 0 14 -1 +q6 -2 11 -4q6 -4 9 -7q4 -4 6 -11q3 -8 2 -15q0 -7 -5 -15q-3 -7 -10 -12l-6 -4t-8 -4q-8 -2 -13 -2q-5 -1 -13 1q-4 1 -12 5q-7 4 -9 8l6 8l3 3q2 2 4 2q2 1 7 1q2 0 3 -0.5t3 -0.5t3 -0.5t3 -0.5q4 0 6 1q1 0 5 2l4 4q2 2 2 5v5l-3 3q-1 1 -4 1q-2 1 -6 1h-8q-8 0 -12 1 +q-4 0 -12 2q-4 2 -10 6q-5 5 -8 12q-2 4 -2 7.5v6.5q2 9 5 13q3 5 9 10q4 4 12 7q6 2 10 2q2 0 4.5 -0.5t5.5 -0.5q6 -2 10 -4q6 -2 8 -4l-5 -9q-1 -2 -1.5 -2.5t-1.5 -2.5q-4 -2 -6 -2q-1 -1 -4 -1h-4h-4q-2 0 -3 -1zM959 -29q0 2 -0.5 3t-0.5 3q0 4 1 6q0 2 3 5q1 2 5 4 +q2 1 3 1t3 1q2 0 3 -0.5t3 -0.5q4 -2 5 -3q2 -1 4 -5t2 -6q0 -4 -1 -6q-2 -4 -3 -5q-1 -2 -5 -4t-6 -2q-4 0 -6 1q-3 0 -6 3t-4 5zM1001 41q3 -6 9 -9q3 -3 11 -5q6 -2 12 0q4 0 12 4l3.5 3.5l3.5 3.5t3 4l2 4q2 5 6 8q2 2 3.5 2t3.5 1h6l10 -2q-2 -10 -4 -14q-1 -4 -5 -12 +q-3 -6 -8 -11q-6 -6 -9 -8q-4 -2 -7.5 -4t-7.5 -3q-8 -3 -15 -3q-5 -1 -15 1q-3 1 -6.5 1.5t-7.5 2.5q-3 2 -6.5 4t-5.5 5q-6 5 -11 11q-2 4 -3.5 7.5t-3.5 7.5q-1 4 -3 14q0 10 1 15t5 15l4 6t5 6q5 7 12 11q5 4 11 5q5 2 13 4h13q6 0 14 -2l-1 -10l-3 -6q-1 -2 -2 -2.5 +t-3 -2.5q-5 -3 -10 -3q-6 0 -9 -1q-6 -2 -9 -4q-6 -3 -9 -9q-2 -3 -3 -5.5t-1 -5.5q-2 -7 0 -13q2 -8 5 -11zM1070 86q-6 5 -10 13q-2 4 -3 7t-2 7q-2 5 -2 15q0 5 2 15q1 6 6 14q2 3 4.5 6.5t5.5 5.5q2 3 5.5 5.5t6.5 4.5q4 2 7 3t7 2q5 2 15 2t15 -2q7 -1 14 -5 +q7 -5 13 -10q2 -3 4.5 -6t4.5 -7t6 -14q1 -5 1 -15q0 -6 -2 -14t-6 -14q-2 -4 -4.5 -7t-4.5 -6q-6 -6 -13 -9q-8 -5 -14 -6q-10 -2 -15 -2t-15 2q-6 1 -14 6q-6 3 -12 9zM1089 105q3 -3 11 -7q6 -2 12 -2q8 0 12 2q4 1 10 7t7 10q3 6 3 12t-3 12q-1 5 -7 11t-10 7 +q-6 3 -12 3q-4 0 -12 -2q-8 -4 -11 -7q-6 -6 -7 -11q-2 -4 -2 -12t2 -12q2 -5 7 -11zM1275 247l-15 -23l-46 30l33 -50l-12 -19l-58 10l45 -29l-15 -23l-96 63l10 15q3 4 8 7q3 1 9 1l68 -11l-38 57q-3 4 -3 9t3 10l10 15zM162 736l-6 -15l-107 40l14 38q3 8 7 12q7 7 12 9 +l6 2t7 1t7 -0.5t7 -1.5q7 -3 12 -8q4 -3 8 -11q2 -3 2.5 -6.5t1.5 -6.5q0 -8 -3 -15l-8 -23zM116 780q0 2 0.5 4t0.5 4q0 3 -2 7q-1 3 -5 7q-2 2 -6 4q-3 1 -8 1q-2 0 -8 -2q-4 -2 -6 -4t-2.5 -3.5t-1.5 -3.5l-9 -24l38 -14zM220 861l-34 -62l-100 55l34 62l14 -8l-27 -48 +l29 -16l22 39l13 -7l-21 -39l30 -17l26 48zM236 882l-10 -13l-91 70l25 33q6 6 10 8q4 3 12 5h6.5t6.5 -1q6 -2 12 -6q3 -2 7 -8t5 -9q1 -4 1 -11q0 -4 -2 -10l61 -1l-6 -9q-4 -4 -7 -5q-4 -2 -7 -2l-51 1l-10 -13zM157 942l28 -22l16 21q1 1 1.5 2.5t1.5 3.5v7q0 2 -2 6 +q-2 3 -5 5q-3 3 -6 3q-2 1 -7 1q-2 -1 -3 -1t-3 -1q-3 -2 -5 -5zM245 1036q-2 -1 -3.5 -1t-3.5 -1q-4 -2 -5 -3q-4 -4 -5 -6q-2 -4 -2 -6v-6q2 -4 3 -5q3 -3 5 -4h5q3 0 7 2q6 2 10 4t5 2l6 3q2 0 6 2q1 0 2 0.5t3 0.5q16 2 26 -10q7 -5 8 -12q1 -4 1.5 -7t0.5 -7 +q-2 -10 -4 -14q-5 -8 -9 -12q-12 -11 -25 -12h-5q-2 1 -5 1q-1 0 -2 0.5t-2 0.5t-1 0.5t-1 0.5l1 4l3 6q4 3 9 3h2q2 0 8 2q2 1 3.5 2t3.5 3t2.5 3.5t2.5 3.5q2 4 2 8q2 3 0 8q0 3 -4 7q-3 4 -7 4q-4 2 -7 0q-4 0 -8 -2q-6 -2 -8 -4l-6 -2l-6 -2q-3 -2 -6 -2t-5 -1 +q-8 0 -12 1q-2 2 -5 3.5t-5 4.5q-5 4 -7 11q-2 8 -1 12q2 8 4 12q3 6 7 10q2 2 4 3l4 2q4 3 9 3q8 2 9 2q6 0 8 -1l-1 -5q0 -4 -3 -7t-6 -3zM294 1032q-6 8 -7 14q-3 7 -3 15q-1 4 -0.5 7.5t0.5 7.5q1 7 5 14q2 5 8 13q3 3 6 5.5t6 4.5q8 6 14 7q7 3 15 3q7 1 15 0 +q4 -1 7 -2t7 -3q5 -2 13 -8l5.5 -5.5t4.5 -6.5q6 -8 7 -14q3 -8 3 -15q1 -8 0 -15q-1 -4 -2 -7t-3 -7q-2 -5 -8 -13l-5.5 -5.5t-6.5 -4.5q-11 -8 -21 -9q-12 -3 -23 0q-9 1 -21 8q-11 7 -16 16zM307 1041q4 -8 12 -12q7 -5 15 -6t17 0q8 2 15 7q7 4 12 12q4 7 6 15q1 8 0 17 +q-2 8 -7 15t-12 12q-8 4 -15 6q-8 2 -16 0q-9 -2 -16 -7q-8 -5 -12 -12q-5 -8 -6 -15q-2 -8 0 -16q2 -9 7 -16zM444 1059l-15 -6l-44 106l11 5q3 1 7 1t5 -1l87 -57l1 -1q1 -1 1 -2q1 0 1 -0.5t1 -0.5l-37 88l15 6l44 -106l-11 -5q-3 -1 -7 -1t-6 1l-86 57q-1 0 -1 0.5 +t-1 0.5q0 1 -1 2t-1 2zM548 1214l15 3l71 -102l-9 -2q-2 -1 -3.5 -0.5t-3.5 0.5q-3 2 -5 5l-12 16l-57 -11l-4 -20q-2 -4 -4 -6q-2 -3 -6 -3l-9 -2zM559 1191l-11 -51l44 8l-30 43q-2 2 -2 3.5t-1 3.5v-4v-3zM635 1112l-4 115l15 1l4 -99l50 2l1 -16zM764 1154q-2 -6 0 -12 +q2 -5 5 -10t8 -8q3 -2 5.5 -3t5.5 -2q9 0 12 1q5 0 11 4q5 3 8 8q4 8 5 12l12 68l16 -2l-13 -69q-2 -8 -4 -12q-1 -3 -2.5 -5.5t-3.5 -4.5q-6 -6 -9 -8q-5 -3 -10 -5q-3 -2 -6 -2t-6 -1q-8 0 -12 1q-4 0 -6.5 1t-5.5 3q-5 1 -10 6q-6 6 -8 9q-3 5 -5 10q-3 6 -3 12q0 8 1 12 +l12 69l16 -3zM913 1168q-1 2 -2 3t-2 3l-6 3q-2 1 -7 1h-6q-4 -2 -5 -3q-3 -3 -3 -5q-2 -4 -1 -6q0 -3 2 -5q2 -4 4 -6t4 -3t4 -3q3 -3 5 -4t2.5 -2t2.5 -2q1 -1 1.5 -2t2.5 -2q1 -2 1.5 -2.5t1.5 -2.5q9 -12 4 -27q-2 -5 -8 -13q-8 -6 -12 -7q-8 -3 -14 -3q-5 0 -15 2 +q-14 6 -22 18q0 2 -2 4q0 2 -0.5 2.5t-0.5 2.5q-1 1 -1 3v3l4 1q4 0 6 -1q5 -1 8 -6v-1q3 -5 5 -6q2 -2 4 -3l4 -2q2 0 4 -0.5t4 -0.5q6 0 8 1q6 2 8 4q4 4 5 7q2 5 0 8q0 2 -1 3.5t-2 3.5l-6 6q-2 1 -3.5 2t-3.5 3l-9 9q-4 2 -7 9q-4 6 -4 10q-1 5 2 13q1 6 6 11q6 5 11 6 +q4 2 12 2q5 0 13 -2l4 -2t4 -3q4 -3 7 -7q4 -4 5 -7t3 -7l-5 -2q-3 -2 -8 0q-4 2 -6 4zM973 1035l-63 33l52 102l63 -33l-7 -14l-49 25l-15 -29l40 -20l-8 -15l-39 21l-16 -30l49 -26zM1045 1058q6 7 12 10q3 2 6.5 3.5t6.5 3.5q4 2 7.5 2t7.5 1q10 0 15 -1q7 -1 14 -5 +q7 -3 13 -9q7 -5 11 -12q5 -6 6 -13q3 -8 3 -15q0 -10 -1 -15q-2 -10 -5 -14q-2 -5 -8 -13l-6 -6t-6 -5q-8 -5 -14 -6q-8 -3 -15 -3q-10 0 -15 1q-3 1 -6.5 2t-7.5 3q-5 2 -13 8q-10 10 -14 19q-5 11 -6 22q0 11 3 22q2 5 4.5 10t7.5 10zM1057 1048q-6 -8 -9 -15 +q-2 -4 -2 -8v-8q0 -5 1 -8.5t3 -7.5t4.5 -7.5t5.5 -6.5q4 -3 7.5 -4.5t7.5 -3.5q10 -3 16 -2q9 0 16 4q7 3 14 10q3 4 5 7t3 8q3 9 2 16q0 9 -4 16q-2 4 -4.5 7t-5.5 6q-6 6 -15 9q-4 2 -8 2h-8q-6 0 -16 -4q-8 -5 -13 -10zM1108 920l-10 12l92 69l8 -10l3 -6v-6l-34 -97 +q0 -1 -0.5 -1t-0.5 -1t-0.5 -1t-0.5 -1l-1 -1l76 57l10 -13l-92 -68l-7 9q-2 2 -4 6q0 4 1 6l33 98q1 1 1 2l1 1l2 2zM1164 839l102 53l7 -14l-88 -45l23 -44l-14 -8zM1206 748l-6 15l46 17l2 1q2 2 3 2q0 1 0.5 1.5t0.5 1.5q2 0 2 2l38 58l3 -10q2 -3 2 -9q-1 -2 -1.5 -3.5 +t-1.5 -3.5l-25 -38l-2 -2l-1 -1h2q0 2 2 0l44 -12q2 -1 3.5 -1.5t3.5 -2.5q2 -3 4 -7l4 -10l-66 19q-2 0 -3 1h-3h-3q-2 0 -3 -1z" /> + <glyph glyph-name="NULL" horiz-adv-x="0" + /> + <glyph glyph-name="NULL" horiz-adv-x="0" + /> + <glyph glyph-name="nonmarkingreturn" unicode="
" horiz-adv-x="627" + /> + <glyph glyph-name="space" unicode=" " horiz-adv-x="627" + /> + <glyph glyph-name="J" unicode="J" horiz-adv-x="903" +d="M350 1445q0 37 39 40h295q54 0 54 -52v-1370q0 -99 -39.5 -185.5t-106.5 -151t-155.5 -101.5t-186.5 -37q-58 0 -114 13t-106.5 38.5t-94 63t-76.5 86.5q-3 1 -3 16q0 26 16 38l174 163q8 7 17 11.5t17 4.5q15 0 28.5 -11t30 -24.5t38.5 -24.5t53 -11q23 0 45 9t38.5 24 +t26.5 35.5t10 43.5v1382z" /> + <glyph glyph-name="K" unicode="K" horiz-adv-x="1529" +d="M159 1441q0 18 11.5 31t32.5 13h296q15 0 31.5 -12t16.5 -32v-545q109 140 214 276t213 276q11 17 28.5 27.5t34.5 10.5h380q24 0 24 -15q0 -10 -11 -24l-471 -621l521 -784q11 -17 11 -27q0 -15 -22 -15h-378q-17 0 -33.5 10t-27.5 27q-53 72 -96.5 138t-84.5 131.5 +t-83 132.5t-92 141l-127 -146v-390q0 -44 -48 -44h-295q-45 0 -45 44v1397z" /> + <glyph glyph-name="L" unicode="L" horiz-adv-x="1179" +d="M126 1442q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-1088h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44v1398z" /> + <glyph glyph-name="M" unicode="M" horiz-adv-x="1921" +d="M244 1441q2 18 14 31t34 13h346q37 0 48 -38l272 -908l274 908q14 38 51 38h342q18 0 32.5 -12.5t16.5 -31.5q35 -352 71.5 -698.5t71.5 -698.5v-5q0 -39 -44 -39h-283q-46 0 -48 44l-87 773l-225 -778q-2 -10 -14.5 -24t-24.5 -14h-263q-12 0 -25.5 13.5t-14.5 24.5 +l-225 776l-87 -771q-2 -44 -49 -44h-283q-43 0 -43 44z" /> + <glyph glyph-name="P" unicode="P" horiz-adv-x="1343" +d="M142 1439q0 21 11 33.5t33 12.5h639q69 0 130 -19t112 -52.5t92 -80t69.5 -100.5t43.5 -113.5t15 -120.5q0 -90 -32.5 -176t-92.5 -153t-144 -108.5t-186 -42.5h-303v-476q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM895 1001q0 30 -10.5 60t-30.5 53.5 +t-48.5 38.5t-64.5 15h-212v-334h212q36 0 65 14.5t48.5 37.5t30 53t10.5 62z" /> + <glyph glyph-name="R" unicode="R" horiz-adv-x="1407" +d="M163 1439q0 21 11 33.5t33 12.5h646q103 0 193 -38.5t157 -104.5t105.5 -154.5t38.5 -188.5q0 -68 -18.5 -129.5t-51.5 -115t-78.5 -97t-99.5 -74.5l257 -484q7 -14 18 -33t11 -33q0 -16 -10.5 -24.5t-28.5 -8.5h-343q-17 0 -30.5 10t-17.5 27l-243 457h-162v-451 +q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM946 995q0 30 -11 60t-31 55t-48 42t-62 22q-28 2 -52.5 3.5t-53.5 1.5h-138v-367h184q18 0 32 1t31 3q35 4 63 20.5t47 41t29 55t10 62.5z" /> + <glyph glyph-name="S" unicode="S" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18z" /> + <glyph glyph-name="T" unicode="T" horiz-adv-x="1332" +d="M80 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249z" /> + <glyph glyph-name="A" unicode="A" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307z" /> + <glyph glyph-name="U" unicode="U" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848z" /> + <glyph glyph-name="V" unicode="V" horiz-adv-x="1470" +d="M570 21q-11 18 -19.5 37t-16.5 39l-513 1343q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l305 -910q41 114 78.5 227.5t74 227.5t74 227.5t78.5 227.5q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-516 -1343q-5 -14 -12 -31t-16 -31.5t-21 -24.5 +t-27 -10h-247q-31 0 -41 21z" /> + <glyph glyph-name="W" unicode="W" horiz-adv-x="2156" +d="M571 21q-10 17 -19 35t-16 36q-129 340 -257 674t-257 674q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l306 -911l283 911q14 38 55 38h325q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-178 -510l134 -393l324 910q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5 +q0 -8 -1 -11v-3q-68 -176 -139 -351t-142.5 -350t-142 -350.5t-137.5 -350.5q-4 -11 -18 -24.5t-34 -13.5h-3h-242q-22 0 -33.5 8.5t-16.5 22.5l-158 416q-34 -91 -67 -178.5t-66 -178.5q-5 -14 -11.5 -29.5t-15.5 -29t-20.5 -22.5t-26.5 -9h-3h-242q-32 0 -42 21z" /> + <glyph glyph-name="X" unicode="X" horiz-adv-x="1454" +d="M16 26q8 15 16.5 30.5t19.5 31.5l450 672q-115 173 -227.5 342t-227.5 342q-6 8 -9.5 15t-4.5 15q2 8 11.5 7.5t19.5 4.5h348q37 0 58 -38l245 -368l248 368q21 38 58 38h314h19t20.5 -0.5t16.5 -3.5t7 -9q0 -12 -11 -26l-460 -687l469 -700q10 -14 15.5 -25.5t4.5 -19.5 +q0 -15 -18 -15h-358q-17 0 -31 10t-22 27l-272 403l-269 -403q-8 -17 -22 -27t-31 -10h-341h-18q-8 0 -14 4.5t-6 12.5q0 5 2 9z" /> + <glyph glyph-name="Y" unicode="Y" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5z" /> + <glyph glyph-name="Z" unicode="Z" horiz-adv-x="1432" +d="M108 1441q0 20 12.5 32t34.5 12h1161q19 0 32.5 -11t13.5 -33v-202q0 -8 -0.5 -15t-5.5 -18l-724 -863h687q19 0 32 -11t13 -34v-249q0 -17 -12.5 -33t-32.5 -16h-1161q-20 0 -33.5 13t-13.5 36v215q0 16 7 26l722 851h-685q-22 0 -34.5 11.5t-12.5 37.5v251z" /> + <glyph glyph-name="bar" unicode="|" horiz-adv-x="614" +d="M162 1441q0 18 11 31t33 13h188q15 0 31.5 -12t16.5 -32v-1781q0 -44 -48 -44h-188q-44 0 -44 44v1781z" /> + <glyph glyph-name="brokenbar" unicode="¦" horiz-adv-x="598" +d="M165 1443q0 18 11 31t33 13h181q18 0 33 -12t15 -32v-746q0 -44 -48 -44h-181q-44 0 -44 44v746zM165 402q0 18 11 31t33 13h181q18 0 33 -12t15 -32v-746q0 -44 -48 -44h-181q-44 0 -44 44v746z" /> + <glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="838" +d="M160 1597q0 44 44 44h434q44 -3 44 -44v-238q0 -21 -13 -33.5t-31 -12.5h-121v-1327h121q18 0 31 -12.5t13 -33.5v-238q0 -41 -44 -44h-434q-44 0 -44 44v1895z" /> + <glyph glyph-name="bracketright" unicode="]" horiz-adv-x="838" +d="M681 -298q0 -44 -44 -44h-433q-44 3 -44 44v238q0 21 12.5 33.5t31.5 12.5h121v1327h-121q-19 0 -31.5 12.5t-12.5 33.5v238q0 41 44 44h433q44 0 44 -44v-1895z" /> + <glyph glyph-name="braceleft" unicode="{" horiz-adv-x="887" +d="M230 1320q0 91 40.5 171.5t108 140t153.5 94t178 34.5h20q51 -5 51 -50v-302q0 -22 -13 -36.5t-31 -14.5h-18q-23 0 -43.5 -9t-35.5 -24t-24 -35.5t-9 -43.5v-468q0 -36 -16.5 -67.5t-39.5 -57.5q23 -27 39.5 -58.5t16.5 -69.5v-477q0 -23 9 -43.5t24 -35.5t35.5 -24 +t43.5 -9h18q18 0 31 -14.5t13 -36.5v-310q0 -48 -51 -51h-20q-92 0 -178 34.5t-153.5 94t-108 139.5t-40.5 172v471q0 8 -8 16t-16 8h-86q-44 0 -44 48v291q0 44 44 44h81q29 0 29 28v451z" /> + <glyph glyph-name="underscore" unicode="_" horiz-adv-x="1342" +d="M165 229q0 44 44 44h922q18 0 31 -11.5t13 -32.5v-181q0 -7 -3 -15.5t-9 -15.5t-14 -12t-18 -5h-922q-44 0 -44 48v181z" /> + <glyph glyph-name="endash" unicode="–" horiz-adv-x="1342" +d="M167 702q0 44 44 44h922q18 0 31 -11t13 -33v-176q0 -15 -12 -31.5t-32 -16.5h-922q-44 0 -44 48v176z" /> + <glyph glyph-name="bullet" unicode="•" horiz-adv-x="505" +d="M89 658q0 36 13.5 67t37 54t54.5 36.5t67 13.5q35 0 66 -13.5t54.5 -36.5t37 -54t13.5 -67q0 -35 -13.5 -66.5t-37 -55t-54.5 -37t-66 -13.5q-36 0 -67 13.5t-54.5 37t-37 55t-13.5 66.5z" /> + <glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="977" +d="M458 1582q15 15 30 15q14 0 29 -15l372 -370q13 -13 13 -31q0 -16 -13 -28l-128 -130q-18 -18 -35 -18t-31 13l-207 209l-209 -209q-17 -11 -30 -11q-17 0 -31 14l-128 127q-15 12 -15 33q0 18 13 31z" /> + <glyph glyph-name="backslash" unicode="\" horiz-adv-x="1086" +d="M31 1441q-2 2 -2 5t-2 8q0 17 16 24t36 7h277q25 0 40.5 -13t23.5 -31l632 -1397q1 -18 4 -18q0 -26 -42 -26h-299q-21 0 -31.5 9.5t-21.5 34.5z" /> + <glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="1318" +d="M161 691q58 81 138 123t174 42q58 0 113 -19t109 -52l82 -53q28 -19 66 -19q58 0 88 44l39 57q11 17 35 17q14 0 31 -11l150 -101q17 -14 17 -33q0 -12 -8 -28l-40 -55q-58 -81 -138 -123t-174 -42q-58 -2 -114.5 17.5t-108.5 52.5l-81 53q-32 20 -66 20q-56 0 -88 -44 +l-40 -58q-11 -14 -29 -16t-37 10l-149 101q-18 10 -18 33q0 3 1 7.5t6 13.5t14.5 24t27.5 39z" /> + <glyph glyph-name="braceright" unicode="}" horiz-adv-x="879" +d="M631 869q0 -28 29 -28h81q44 0 44 -44v-291q0 -48 -44 -48h-86q-8 0 -16 -8t-8 -16v-471q0 -92 -41 -172t-108 -139.5t-154 -94t-178 -34.5h-20q-50 3 -50 51v310q0 22 13 36.5t31 14.5h18q23 0 43.5 9t35.5 24t24 35.5t9 43.5v477q0 38 16.5 69.5t39.5 58.5 +q-23 26 -39.5 57.5t-16.5 67.5v468q0 23 -9 43.5t-24 35.5t-35.5 24t-43.5 9h-18q-18 0 -31 14.5t-13 36.5v302q0 45 50 50h20q91 0 178 -34.5t154 -94t108 -140t41 -171.5v-451z" /> + <glyph glyph-name="Euro" unicode="€" horiz-adv-x="1542" +d="M1374 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-99 0 -176.5 -43.5t-128.5 -115.5h216q19 0 31.5 -11.5t12.5 -32.5v-110q0 -15 -12 -32t-32 -17h-286q-1 -8 -1 -17v-17q0 -27 3 -51h284q19 0 31.5 -11.5t12.5 -32.5 +v-110q0 -15 -12 -32t-32 -17h-203q51 -66 125 -103t167 -37q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25q-94 -63 -202.5 -97.5t-228.5 -34.5q-126 0 -239.5 38t-208 106t-165 161.5t-109.5 205.5h-97q-44 0 -44 49v110q0 44 44 44h56 +q-1 12 -1 24v25v18t1 18h-56q-44 0 -44 49v110q0 44 44 44h93q37 115 107 211.5t165.5 166.5t211 109.5t242.5 39.5q120 0 226.5 -33.5t200.5 -96.5z" /> + <glyph glyph-name="E" unicode="E" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z" /> + <glyph glyph-name="grave" unicode="`" horiz-adv-x="552" +d="M469 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="ellipsis" unicode="…" horiz-adv-x="1461" +d="M84 288q0 20 11.5 32t32.5 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242zM554 288q0 20 11 32t33 12h264q17 0 32 -12t15 -32v-242q0 -18 -12 -32t-35 -14h-264q-44 0 -44 46v242zM1024 288q0 20 11.5 32t32.5 12h264 +q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="quoteleft" unicode="‘" horiz-adv-x="524" +d="M436 1008q0 -20 -11 -32t-33 -12h-242q-17 0 -31.5 12t-14.5 32v216q0 43 3 85q6 78 49 143.5t121 110.5q1 1 7.5 3t14 4t14.5 3.5t9 1.5q8 0 13 -4t11 -10l38 -29q17 -12 20 -20.5t3 -16.5q0 -11 -13.5 -25t-30 -33t-30 -43t-13.5 -55v-44q0 -18 18 -21h57 +q20 0 30.5 -12t10.5 -32v-222z" /> + <glyph glyph-name="quoteright" unicode="’" horiz-adv-x="558" +d="M124 1442q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43t13.5 55v44q0 18 -18 21h-57 +q-20 0 -30.5 12t-10.5 32v222z" /> + <glyph glyph-name="quotedblleft" unicode="“" horiz-adv-x="968" +d="M434 1005q0 -20 -11 -32t-33 -12h-242q-17 0 -31.5 12t-14.5 32v216q0 43 3 85q6 78 49 143.5t121 110.5q1 1 7.5 3t14 4t14.5 3.5t9 1.5q8 0 13 -4t11 -10l38 -29q17 -12 20 -20.5t3 -16.5q0 -11 -13.5 -25t-30 -33t-30 -43t-13.5 -55v-44q0 -18 18 -21h57 +q20 0 30.5 -12t10.5 -32v-222zM878 1005q0 -20 -11 -32t-33 -12h-242q-17 0 -31.5 12t-14.5 32v216q0 43 3 85q6 78 49 143.5t121 110.5q1 1 7.5 3t14 4t14.5 3.5t9 1.5q8 0 13 -4t11 -10l38 -29q17 -12 20 -20.5t3 -16.5q0 -11 -13.5 -25t-30 -33t-30 -43t-13.5 -55v-44 +q0 -18 18 -21h57q20 0 30.5 -12t10.5 -32v-222z" /> + <glyph glyph-name="quotedblright" unicode="”" horiz-adv-x="990" +d="M102 1443q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43t13.5 55v44q0 18 -18 21h-57 +q-20 0 -30.5 12t-10.5 32v222zM556 1443q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43t13.5 55 +v44q0 18 -18 21h-57q-20 0 -30.5 12t-10.5 32v222z" /> + <glyph glyph-name="sterling" unicode="£" horiz-adv-x="1123" +d="M135 998q0 106 41 198.5t111 160t163 106.5t197 39q84 0 158.5 -21.5t137.5 -59.5q17 -10 28 -24t11 -36q0 -6 -1.5 -12.5t-6.5 -11.5l-91 -179q-17 -30 -40 -30h-2q-10 0 -30 11q-23 18 -61 31t-73 13q-37 0 -68 -14.5t-53.5 -39.5t-35 -57.5t-12.5 -69.5v-147h277 +q17 0 31.5 -12t14.5 -32v-185q0 -18 -11.5 -32.5t-34.5 -14.5h-276v-225h497q19 0 31.5 -11.5t12.5 -32.5v-262q0 -7 -3 -15.5t-9 -15.5t-14 -12t-18 -5h-827q-44 0 -44 43v955z" /> + <glyph glyph-name="cent" unicode="¢" horiz-adv-x="1089" +d="M796 339q17 -5 30.5 -14.5t26.5 -29.5l97 -152q3 -6 3 -11q0 -11 -14 -19q3 -5 3 -11q0 -15 -21 -30t-49.5 -28.5t-59 -24t-49.5 -16.5v-137q0 -15 -10 -27.5t-29 -12.5h-236q-38 0 -38 40v139q-83 25 -152.5 74t-120 116t-78.5 149.5t-28 174.5q0 91 28.5 173 +t78.5 149.5t119.5 116.5t152.5 74v136q0 19 9.5 30.5t28.5 11.5h236q14 0 26.5 -13.5t12.5 -28.5v-133q40 -11 78 -28.5t74 -38.5q-1 0 -1 1q5 -3 11 -9.5t11 -14.5t8.5 -16t3.5 -14q0 -10 -6 -20l-106 -195q-14 -21 -31 -21q-8 0 -15 4q-1 -1 -2 -1q-2 0 -3 1 +q-12 9 -30.5 18.5t-40.5 18t-46 13.5t-47 5q-45 0 -84.5 -17.5t-68.5 -48t-45.5 -71t-16.5 -85.5q0 -47 16.5 -87.5t46 -70t68.5 -46.5t84 -17q40 0 82 14.5t71 36.5q1 0 1 -1q6 2 9 2l6 -2t6 -6z" /> + <glyph glyph-name="dagger" unicode="†" horiz-adv-x="854" +d="M42 648q0 44 44 44h205v749q0 18 11 31t33 13h180q15 0 32 -12t17 -32v-749h204q18 0 31 -11.5t13 -32.5v-181q0 -15 -12 -31.5t-32 -16.5h-204v-758q0 -44 -49 -44h-180q-44 0 -44 44v758h-205q-44 0 -44 48v181z" /> + <glyph glyph-name="daggerdbl" unicode="‡" horiz-adv-x="884" +d="M57 447q0 44 44 44h205v216h-205q-44 0 -44 48v181q0 44 44 44h205v461q0 18 11 31t33 13h180q15 0 32 -12t17 -32v-461h204q18 0 31 -11.5t13 -32.5v-181q0 -15 -12 -31.5t-32 -16.5h-204v-216h204q18 0 31 -11.5t13 -32.5v-181q0 -15 -12 -31.5t-32 -16.5h-204v-557 +q0 -44 -49 -44h-180q-44 0 -44 44v557h-205q-44 0 -44 48v181z" /> + <glyph glyph-name="florin" unicode="ƒ" horiz-adv-x="766" +d="M81 944q0 50 52 50h63v88q0 49 13.5 96.5t37.5 91t56.5 81.5t70.5 68q63 46 136 67t155 21q28 0 42.5 -14t14.5 -37v-224q0 -21 -11 -32.5t-29 -11.5h-5q-27 0 -50 -7.5t-40 -21t-27 -34t-10 -45.5v-86h105q23 0 37.5 -12t14.5 -38v-179q0 -21 -14 -38t-38 -17h-105v-667 +q0 -112 -43.5 -205t-130.5 -162q-63 -45 -142 -65t-158 -20q-53 0 -53 49v225q0 20 11.5 32t29.5 12h4q24 0 47 7t41 20.5t29 33.5t11 46v694h-63q-52 0 -52 55v179z" /> + <glyph glyph-name="trademark" unicode="™" horiz-adv-x="1368" +d="M112 1470q0 7 5.5 12t16.5 5h416q22 0 22 -17v-108q0 -20 -22 -20h-130v-444q0 -7 -5.5 -13.5t-11.5 -6.5h-119q-5 0 -12.5 6.5t-7.5 13.5v444h-130q-22 0 -22 20v108zM629 1470q0 7 5 12t13 5h156q14 0 18 -13l88 -273l90 273q2 7 8.5 10t11.5 3h151q7 0 13.5 -5.5 +t6.5 -11.5l29 -575q0 -17 -22 -17h-106q-17 0 -17 17l-25 315l-90 -290q-6 -16 -15 -16h-68q-9 0 -16 16l-90 290l-24 -315q0 -17 -20 -17h-108q-17 0 -17 17z" /> + <glyph glyph-name="tilde" unicode="˜" horiz-adv-x="881" +d="M93 1618q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35 +q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="circumflex" unicode="ˆ" horiz-adv-x="748" +d="M353 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="yen" unicode="¥" horiz-adv-x="1456" +d="M726 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -5 -4.5 -11t-9.5 -14l-374 -662h117q18 0 31 -11t13 -33v-110q0 -15 -12 -31.5t-32 -16.5h-217v-90h217q18 0 31 -11.5t13 -32.5v-110q0 -15 -12 -32t-32 -17h-217v-241q0 -47 -46 -47 +h-300q-20 0 -31 12.5t-11 34.5v241h-204q-44 0 -44 49v110q0 44 44 44h204v90h-204q-44 0 -44 48v110q0 44 44 44h105l-374 662q-5 8 -9 14t-4 11q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5z" /> + <glyph glyph-name="emdash" unicode="—" horiz-adv-x="1672" +d="M167 702q0 44 44 44h1252q18 0 31 -11t13 -33v-176q0 -15 -12 -31.5t-32 -16.5h-1252q-44 0 -44 48v176z" /> + <glyph glyph-name="guilsinglright" unicode="›" horiz-adv-x="883" +d="M838 662q15 -15 15 -31q0 -14 -15 -29l-523 -525q-14 -14 -31 -14q-14 0 -28 14l-146 143q-16 16 -16 36q0 17 13 30l343 346l-343 345q-7 8 -9 16t-4 15q2 8 5 16t10 15l142 144q13 13 33 13q21 0 30 -11z" /> + <glyph glyph-name="N" unicode="N" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398z" /> + <glyph glyph-name="acute" unicode="´" horiz-adv-x="526" +d="M141 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="dieresis" unicode="¨" horiz-adv-x="941" +d="M108 1688q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM544 1688q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="mu" unicode="µ" horiz-adv-x="1342" +d="M477 952q5 -4 7 -10t2 -12v-485q3 -30 21.5 -54.5t44.5 -42t56 -27.5t56 -10q30 0 58 11t50 30t35.5 45t13.5 57v477q0 25 12 37t39 12h251q21 0 35.5 -13.5t14.5 -37.5v-434q0 -44 -3 -86q-7 -89 -45.5 -166.5t-101.5 -134.5t-146 -89.5t-179 -32.5q-38 0 -69 10.5 +t-56.5 27t-47 36t-39.5 36.5v-439q0 -20 -10 -30t-24.5 -15t-30.5 -5.5t-28 -0.5h-208q-27 0 -40 14.5t-13 37.5v1271q0 24 13.5 37.5t43.5 13.5h206h25t26 -2.5t21 -8t10 -17.5z" /> + <glyph glyph-name="periodcentered" unicode="·" horiz-adv-x="597" +d="M121 751q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="cedilla" unicode="¸" horiz-adv-x="557" +d="M345 0q-22 -15 -22 -35q0 -16 15.5 -29.5t38 -28t49.5 -31t49.5 -38t38 -49t15.5 -64.5q0 -36 -24.5 -77t-69 -81t-106.5 -74.5t-138 -57.5h-5q-15 0 -33 22t-34 50t-27 54.5t-11 35.5q0 16 11 22q171 43 171 106q0 22 -15 39t-37.5 32.5t-48.5 31t-48.5 33.5t-37.5 40 +t-15 51q0 11 3 22.5t17 25.5h264z" /> + <glyph glyph-name="degree" unicode="°" horiz-adv-x="651" +d="M326 1435q45 0 84 -16.5t68 -46t46 -68.5t17 -84t-17 -84.5t-46.5 -68.5t-68.5 -45.5t-83 -16.5q-45 0 -84 16.5t-68 45.5t-46 68.5t-17 84.5t16.5 84t45.5 68.5t68.5 46t84.5 16.5zM326 1310q-39 0 -65 -26t-26 -64q0 -39 26 -65t65 -26q37 0 63.5 26t26.5 65 +q0 19 -7 35.5t-19.5 28.5t-29 19t-34.5 7z" /> + <glyph glyph-name="dotaccent" unicode="˙" horiz-adv-x="543" +d="M138 1420q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="breve" unicode="˘" horiz-adv-x="653" +d="M323 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="ogonek" unicode="˛" horiz-adv-x="516" +d="M475 0q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38 +t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="IJ" unicode="IJ" horiz-adv-x="1428" +d="M874 1445q0 37 39 40h295q54 0 54 -52v-1450q0 -99 -39.5 -185.5t-106.5 -151t-155.5 -101.5t-186.5 -37q-58 0 -114 13t-106.5 38.5t-94 63t-76.5 86.5q-3 1 -3 16q0 26 16 38l174 163q8 7 17 11.5t17 4.5q15 0 28.5 -11t30 -24.5t38.5 -24.5t53 -11q23 0 45 9t38.5 24 +t26.5 35.5t10 43.5v1462zM165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397z" /> + <glyph glyph-name="Lslash" unicode="Ł" horiz-adv-x="1179" +d="M126 590l-78 -28q-30 -10 -44 22l-42 112q-10 31 22 44l142 51v651q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-510l96 35q25 10 39 -20l42 -112q5 -14 0.5 -26.5t-17.5 -17.5l-160 -59v-378h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44 +v546z" /> + <glyph glyph-name="ij" unicode="ij" horiz-adv-x="1198" +d="M187 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM187 1698q0 42 18 59.5t56 17.5h232q35 0 56.5 -17.5t21.5 -59.5v-195q0 -12 -5.5 -26t-15.5 -27t-24.5 -21.5t-32.5 -8.5h-232 +q-74 0 -74 83v195zM771 1192q0 39 25 58.5t55 19.5h227q36 0 56 -23t20 -55v-1148q0 -93 -39 -175t-105 -143t-151.5 -96t-178.5 -35h-24q-36 2 -55 22.5t-19 49.5v143q0 36 22.5 58t54.5 22h21q20 0 37 16.5t29 40.5t18.5 50.5t6.5 46.5v1148zM766 1698q0 42 18 59.5 +t56 17.5h232q35 0 56.5 -17.5t21.5 -59.5v-195q0 -12 -5.5 -26t-15.5 -27t-24.5 -21.5t-32.5 -8.5h-232q-74 0 -74 83v195z" /> + <glyph glyph-name="s_t" unicode="st" horiz-adv-x="1481" + /> + <glyph glyph-name="tbar" unicode="ŧ" horiz-adv-x="810" +d="M641 691q31 0 31 -33v-127q0 -14 -8.5 -24.5t-22.5 -10.5h-492q-35 0 -35 35v127q0 33 35 33h492zM200 1468q0 31 20.5 46.5t58.5 29.5l227 79q5 1 9.5 1h8.5q37 0 49.5 -21.5t12.5 -56.5l-1 -315h167q32 0 52 -19t20 -57v-193q0 -42 -20 -61.5t-52 -19.5h-167l1 -804 +q0 -38 -22 -57.5t-61 -19.5h-226q-77 0 -77 77l-1 804h-73q-77 0 -77 81v193q0 76 77 76h73z" /> + <glyph glyph-name="tcaron" unicode="ť" horiz-adv-x="1107" +d="M197 1468q0 31 20.5 46.5t58.5 29.5l227 79q5 1 9.5 1h8.5q37 0 49.5 -21.5t12.5 -56.5l-1 -315h167q32 0 52 -19t20 -57v-193q0 -42 -20 -61.5t-52 -19.5h-167l1 -804q0 -38 -22 -57.5t-61 -19.5h-226q-77 0 -77 77l-1 804h-73q-77 0 -77 81v193q0 76 77 76h73z +M807 1670q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="nsuperior" unicode="ⁿ" horiz-adv-x="612" + /> + <glyph glyph-name="Tbar" unicode="Ŧ" horiz-adv-x="1332" +d="M80 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249zM982 1053q18 0 31 -11.5t13 -32.5v-194q0 -18 -12 -32 +t-32 -14h-649q-47 0 -47 46v194q0 44 47 44h649z" /> + <glyph glyph-name="plusminus" unicode="±" horiz-adv-x="994" +d="M829 263q18 0 31 -11.5t13 -32.5v-172q0 -17 -12 -32t-32 -15h-665q-44 0 -44 47v172q0 44 44 44h665zM98 836q0 44 44 44h183v193q0 44 48 44h224q44 0 44 -44v-193h183q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-183v-194q0 -18 -11 -31t-33 -13h-224 +q-15 0 -31.5 12t-16.5 32v194h-183q-44 0 -44 48v203z" /> + <glyph glyph-name="fraction" unicode="⁄" horiz-adv-x="1099" +d="M790 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18z" /> + <glyph glyph-name="dotlessi" unicode="ı" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115z" /> + <glyph glyph-name="guillemotright" unicode="»" horiz-adv-x="1474" +d="M1410 662q15 -15 15 -31q0 -14 -15 -29l-523 -525q-12 -14 -30 -14q-15 0 -29 14l-147 143q-15 15 -15 36q0 18 12 30l344 346l-344 345q-7 8 -9 16t-3 15q2 17 14 31l144 144q12 13 33 13q20 0 29 -11zM766 662q15 -15 15 -31q0 -14 -15 -29l-523 -525q-12 -14 -30 -14 +q-15 0 -29 14l-147 143q-15 15 -15 36q0 18 12 30l344 346l-344 345q-7 8 -9 16t-3 15q2 17 14 31l144 144q12 13 33 13q20 0 29 -11z" /> + <glyph glyph-name="guillemotleft" unicode="«" horiz-adv-x="1469" +d="M561 1185q9 11 29 11q21 0 33 -13l144 -144q12 -14 14 -31q-1 -7 -3 -15t-9 -16l-344 -345l344 -346q12 -12 12 -30q0 -21 -15 -36l-147 -143q-6 -6 -13.5 -10t-15.5 -4q-18 0 -30 14l-523 525q-15 15 -15 29q0 16 15 31zM1205 1185q9 11 29 11q21 0 33 -13l144 -144 +q12 -14 14 -31q-1 -7 -3 -15t-9 -16l-344 -345l344 -346q12 -12 12 -30q0 -21 -15 -36l-147 -143q-6 -6 -13.5 -10t-15.5 -4q-18 0 -30 14l-523 525q-15 15 -15 29q0 16 15 31z" /> + <glyph glyph-name="minus" unicode="−" horiz-adv-x="1100" +d="M874 809q18 0 31 -11.5t13 -32.5v-194q0 -18 -12 -32t-32 -14h-649q-47 0 -47 46v194q0 44 47 44h649z" /> + <glyph glyph-name="figuredash" unicode="‒" horiz-adv-x="1100" +d="M874 849q18 0 31 -11.5t13 -32.5v-194q0 -18 -12 -32t-32 -14h-649q-47 0 -47 46v194q0 44 47 44h649z" /> + <glyph glyph-name="uni00AD" unicode="­" horiz-adv-x="1100" +d="M874 769q18 0 31 -11.5t13 -32.5v-164q0 -18 -12 -32t-32 -14h-649q-47 0 -47 46v164q0 44 47 44h649z" /> + <glyph glyph-name="onedotenleader" unicode="․" horiz-adv-x="594" +d="M121 288q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="twodotenleader" unicode="‥" horiz-adv-x="1165" +d="M681 288q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242zM171 288q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="Dcroat" unicode="Đ" horiz-adv-x="1547" +d="M1454 741q0 -106 -27 -201.5t-77 -178t-119.5 -149.5t-154 -114t-182.5 -72.5t-203 -25.5h-493q-18 0 -32 8t-14 34v1397q0 21 11.5 34t34.5 13h493q105 0 202.5 -26t182 -74t154.5 -115t119.5 -150t77 -179t27.5 -201zM539 1127v-769h84q23 0 45 1.5t44 3.5 +q75 6 140 36.5t113.5 80t76 116.5t27.5 146q0 84 -31.5 154.5t-85.5 122t-126.5 80t-154.5 28.5h-132zM41.3096 839.581q0 39.6729 38.2852 39.6729h593.42q15.6621 0 26.9736 -10.3691t11.3115 -29.3037v-183.04q0 -13.5254 -10.4414 -28.4023 +q-10.4414 -14.8779 -27.8438 -14.8779h-593.42q-38.2852 0 -38.2852 43.2803v183.04z" /> + <glyph glyph-name="twosuperior" unicode="²" horiz-adv-x="836" +d="M409 825h250q45 0 45 -45v-90q0 -20 -12.5 -32.5t-32.5 -12.5h-493q-18 0 -33 12.5t-15 32.5v81q0 10 6 19q-1 -1 0 1l2 4l352 361h-1q21 23 27.5 37t6.5 33q0 18 -8 35t-22 30t-32.5 20.5t-39.5 7.5t-39.5 -8t-31.5 -22t-20.5 -32t-7.5 -38v-45q0 -42 -44 -42h-98 +q-23 0 -33 14t-10 28v45q0 60 22.5 110.5t61.5 87t90.5 57t109.5 20.5q57 0 110.5 -19t94.5 -53.5t65.5 -83t24.5 -108.5q0 -64 -25 -113.5t-62 -83.5v1z" /> + <glyph glyph-name="threesuperior" unicode="³" horiz-adv-x="757" +d="M355 998q-44 0 -44 35v104q0 44 44 44q19 0 31 6t19 15t10 20t3 21q0 11 -1.5 23t-7 22t-17 16.5t-30.5 6.5q-17 0 -27 -6t-15.5 -16.5t-7.5 -23.5t-2 -28q0 -24 -10 -35t-36 -11h-92q-43 0 -43 43q0 67 19 114.5t51.5 77.5t75.5 43.5t92 13.5q48 0 91 -18.5t75.5 -50.5 +t51 -75t18.5 -92q0 -77 -42 -131q22 -17 39.5 -37t29.5 -45.5t18 -57t6 -71.5q0 -59 -20.5 -109.5t-58 -88.5t-89.5 -59.5t-115 -21.5q-59 0 -110 12.5t-88.5 46t-59.5 93t-22 152.5q0 33 42 43h99q43 0 43 -43q0 -36 7.5 -59t20 -36.5t30 -19t38.5 -5.5q47 0 72.5 24.5 +t25.5 72.5q0 51 -25 71t-89 20z" /> + <glyph glyph-name="onesuperior" unicode="¹" horiz-adv-x="469" +d="M57 1404q0 21 24 35l88 44q5 4 18 4h149q26 0 26 -24v-768q0 -24 -24 -24h-151q-24 0 -24 22v608l-75 -37q-2 -3 -7 -3q-2 0 -2 -2q-11 0 -16.5 7.5t-5.5 19.5v118z" /> + <glyph glyph-name="ordmasculine" unicode="º" horiz-adv-x="1023" +d="M103 1105q0 82 31 154.5t85 126.5t126 85.5t154 31.5t154.5 -31.5t126.5 -85.5t85 -126.5t31 -154.5t-31 -154t-85 -126t-126.5 -85t-154.5 -31t-154 31t-126 85t-85 126t-31 154zM353 1104q0 -30 11.5 -56.5t31 -46t45.5 -31t56 -11.5t56.5 11.5t46 31t31 46t11.5 56.5 +t-11 56.5t-30.5 46t-46 31t-57.5 11.5q-30 0 -56 -11.5t-45.5 -31t-31 -46t-11.5 -56.5z" /> + <glyph glyph-name="ordfeminine" unicode="ª" horiz-adv-x="1023" +d="M885 772q-12 -6 -22 -6h-159q-31 0 -31 28v55q-31 -45 -78 -71t-120 -26q-78 0 -145.5 29t-118 79.5t-79.5 118t-29 145.5t29 145.5t79.5 118t118 79.5t145.5 29q81 0 131 -31t78 -86l18 77q0 29 31 29h130q12 0 22 -7q7 -6 7 -22v-662q0 -15 -7 -22zM328 1125 +q0 -30 11 -56.5t30.5 -46t45.5 -31t57 -11.5q30 0 56.5 11.5t46 31t31 46t11.5 56.5v7q-2 29 -13.5 54t-31 44t-45 29.5t-55.5 10.5q-31 0 -57 -11t-45.5 -30.5t-30.5 -46t-11 -57.5z" /> + <glyph glyph-name="onequarter" unicode="¼" horiz-adv-x="1503" +d="M951 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM94 1404q0 21 24 35l88 44q5 4 18 4h149q26 0 26 -24v-768q0 -24 -24 -24h-151q-24 0 -24 22v608l-75 -37q-2 -3 -7 -3 +q-2 0 -2 -2q-11 0 -16.5 7.5t-5.5 19.5v118zM813 119q-28 0 -39 16t-11 35q0 10 3.5 18.5t8.5 16.5l361 618q11 17 19 21.5t19 4.5h101q19 0 30 -15.5t11 -29.5v-497h60q19 0 34 -9.5t15 -32.5v-102q0 -17 -15 -30.5t-34 -13.5h-60v-77q0 -22 -10 -32.5t-36 -10.5h-96 +q-43 0 -43 43v77h-318zM1131 307v172l-98 -172h98z" /> + <glyph glyph-name="onehalf" unicode="½" horiz-adv-x="1611" +d="M959 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM80 1404q0 21 24 35l88 44q5 4 18 4h149q26 0 26 -24v-768q0 -24 -24 -24h-151q-24 0 -24 22v608l-75 -37q-2 -3 -7 -3 +q-2 0 -2 -2q-11 0 -16.5 7.5t-5.5 19.5v118zM1231 179h250q45 0 45 -45v-90q0 -20 -12.5 -32.5t-32.5 -12.5h-493q-18 0 -33 12.5t-15 32.5v81q0 10 6 19q-1 -1 0 1l2 4l352 361h-1q21 23 27.5 37t6.5 33q0 18 -8 35t-22 30t-32.5 20.5t-39.5 7.5t-39.5 -8t-31.5 -22 +t-20.5 -32t-7.5 -38v-45q0 -42 -44 -42h-98q-23 0 -33 14t-10 28v45q0 60 22.5 110.5t61.5 87t90.5 57t109.5 20.5q57 0 110.5 -19t94.5 -53.5t65.5 -83t24.5 -108.5q0 -64 -25 -113.5t-62 -83.5v1z" /> + <glyph glyph-name="threequarters" unicode="¾" horiz-adv-x="1533" +d="M1043 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM877 103q-28 0 -39 16t-11 35q0 10 3.5 18.5t8.5 16.5l361 618q11 17 19 21.5t19 4.5h101q19 0 30 -15.5t11 -29.5v-497 +h60q19 0 34 -9.5t15 -32.5v-102q0 -17 -15 -30.5t-34 -13.5h-60v-77q0 -22 -10 -32.5t-36 -10.5h-96q-43 0 -43 43v77h-318zM1195 291v172l-98 -172h98zM313 1020q-44 0 -44 35v104q0 44 44 44q19 0 31 6t19 15t10 20t3 21q0 11 -1.5 23t-7 22t-17 16.5t-30.5 6.5 +q-17 0 -27 -6t-15.5 -16.5t-7.5 -23.5t-2 -28q0 -24 -10 -35t-36 -11h-92q-43 0 -43 43q0 67 19 114.5t51.5 77.5t75.5 43.5t92 13.5q48 0 91 -18.5t75.5 -50.5t51 -75t18.5 -92q0 -77 -42 -131q22 -17 39.5 -37t29.5 -45.5t18 -57t6 -71.5q0 -59 -20.5 -109.5t-58 -88.5 +t-89.5 -59.5t-115 -21.5q-59 0 -110 12.5t-88.5 46t-59.5 93t-22 152.5q0 33 42 43h99q43 0 43 -43q0 -36 7.5 -59t20 -36.5t30 -19t38.5 -5.5q47 0 72.5 24.5t25.5 72.5q0 51 -25 71t-89 20z" /> + <glyph glyph-name="logicalnot" unicode="¬" horiz-adv-x="1162" +d="M97 748q0 44 44 44h878q44 0 44 -44v-482q0 -18 -11.5 -31t-32.5 -13h-154q-15 0 -32 12t-17 32v280h-675q-44 0 -44 48v154z" /> + <glyph glyph-name="divide" unicode="÷" horiz-adv-x="948" +d="M804 798q18 0 31 -11.5t13 -32.5v-234q0 -18 -12 -32t-32 -14h-649q-47 0 -47 46v234q0 44 47 44h649zM304 1223q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242zM304 290q0 20 11 32t33 12h264q17 0 31.5 -12 +t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="zerosuperior" unicode="⁰" horiz-adv-x="988" +d="M112 1098q0 84 32 158t87.5 129.5t129.5 87.5t158 32q85 0 159.5 -32t130 -87.5t87.5 -129.5t32 -158q0 -86 -32 -160t-87.5 -129t-130 -86.5t-159.5 -31.5q-84 0 -158 31.5t-129.5 86.5t-87.5 129t-32 160zM352 1098q0 -36 12.5 -67.5t35 -54.5t53 -36.5t66.5 -13.5 +q34 0 65 13.5t54.5 36.5t37 54.5t13.5 67.5t-13.5 67.5t-37 55.5t-54.5 37.5t-65 13.5q-36 0 -66.5 -13.5t-53 -37.5t-35 -55.5t-12.5 -67.5z" /> + <glyph glyph-name="perthousand" unicode="‰" horiz-adv-x="2735" +d="M42 1142q0 80 30 150t82 122.5t122.5 82.5t150.5 30t150 -30t122.5 -82.5t82.5 -122.5t30 -150t-30 -150.5t-82.5 -122.5t-122.5 -82t-150 -30t-150.5 30t-122.5 82t-82 122.5t-30 150.5zM1082 1441q8 18 23.5 31t40.5 13h217q20 0 35.5 -8t15.5 -23q0 -11 -2 -13 +l-632 -1397q-11 -25 -21 -34.5t-32 -9.5h-239q-42 0 -42 26l2 4l3 14zM310 1142q0 -51 33 -84t84 -33q24 0 45.5 9t37 24.5t24.5 37t9 46.5t-9 46t-24.5 36.5t-37 24.5t-45.5 9q-26 0 -47 -8.5t-37 -24t-24.5 -37t-8.5 -46.5zM1073 365q0 80 30 150t82 122.5t122.5 82.5 +t150.5 30t150 -30t122.5 -82.5t82.5 -122.5t30 -150t-30 -150.5t-82.5 -122.5t-122.5 -82t-150 -30t-150.5 30t-122.5 82t-82 122.5t-30 150.5zM1341 365q0 -51 33 -84t84 -33q24 0 45.5 9t37 24.5t24.5 37t9 46.5t-9 46t-24.5 36.5t-37 24.5t-45.5 9q-26 0 -47 -8.5 +t-37 -24t-24.5 -37t-8.5 -46.5zM1914 365q0 80 30 150t82 122.5t122.5 82.5t150.5 30t150 -30t122.5 -82.5t82.5 -122.5t30 -150t-30 -150.5t-82.5 -122.5t-122.5 -82t-150 -30t-150.5 30t-122.5 82t-82 122.5t-30 150.5zM2182 365q0 -51 33 -84t84 -33q24 0 45.5 9t37 24.5 +t24.5 37t9 46.5t-9 46t-24.5 36.5t-37 24.5t-45.5 9q-26 0 -47 -8.5t-37 -24t-24.5 -37t-8.5 -46.5z" /> + <glyph glyph-name="multiply" unicode="×" horiz-adv-x="900" +d="M101 503q-32 31 0 63l130 129l-137 136q-30 32 3 65l158 159q31 30 63 0l136 -137l129 130q13 13 30.5 14t32.5 -14l143 -144q10 -11 13 -31t-10 -34l-129 -129l137 -137q13 -13 14 -30t-14 -33l-159 -158q-11 -11 -31 -14t-34 11l-137 137l-129 -129q-32 -32 -65 3z" /> + <glyph glyph-name="currency" unicode="¤" horiz-adv-x="1078" +d="M436 500q0 -45 29 -74t74 -29t74 29t29 74t-29 74t-74 29t-74 -29t-29 -74zM257 931q18 18 36 18q19 0 37 -18l84 -85q35 10 66.5 15.5t56.5 5.5q26 0 56.5 -5.5t65.5 -14.5l85 85q8 8 17 11.5t17 4.5q24 0 39 -18l150 -150q8 -9 13 -18t5 -22q0 -17 -17 -34l-84 -86 +q9 -33 15 -62.5t6 -53.5q0 -29 -5 -60.5t-15 -67.5l84 -85q18 -20 18 -35q0 -11 -4 -20.5t-15 -16.5q-35 -35 -69 -69.5t-70 -69.5q-9 -10 -20 -18t-28 -8q-15 0 -26.5 7.5t-21.5 17.5l-74 72q-72 -20 -122 -20q-26 0 -57 5.5t-66 14.5l-85 -84q-16 -16 -35 -16 +q-11 0 -20.5 3.5t-17.5 14.5l-11 10q-35 34 -69 69.5t-70 69.5q-9 8 -13 16.5t-4 20.5q0 21 16 37l11 12q18 17 36 35.5t37 37.5q-9 34 -15 64t-6 58q0 24 6 55t15 66q-13 13 -29.5 28.5t-32 32t-26 32t-11.5 27.5q1 11 4.5 21.5t12.5 19.5z" /> + <glyph glyph-name="copyright" unicode="©" horiz-adv-x="1936" +d="M961 1617q119 0 230.5 -31t208 -88t176.5 -137t137 -177t88.5 -209.5t31.5 -233.5q0 -119 -31 -230.5t-88 -208t-137 -176.5t-177.5 -137t-209.5 -88.5t-233 -31.5q-120 0 -231 31t-208 88t-177 137t-137 177.5t-88.5 209.5t-31.5 234q0 119 31 230t88 208t137 176.5 +t177.5 136.5t209.5 88.5t234 31.5zM653 1269q-76 -45 -134.5 -105t-99 -129.5t-61.5 -147t-21 -157.5q0 -86 23 -164.5t64.5 -146.5t99 -122.5t126 -93.5t145.5 -60t158 -21t159 21.5t153 67.5q76 43 135 102.5t99.5 130.5t62 150t21.5 160q0 90 -24 170t-66.5 146.5 +t-100 119.5t-125 90t-142 56.5t-149.5 19.5q-82 0 -163.5 -21t-159.5 -66zM1242 1144q7 -4 14.5 -9.5t12.5 -12.5t6 -15t-5 -18l-18 -32q-10 -18 -23.5 -45t-28 -52.5t-27.5 -43.5t-23 -18q-6 0 -10 2q-32 19 -73.5 27.5t-86.5 8.5q-44 0 -81 -15t-63.5 -42t-41.5 -64 +t-15 -81q0 -45 14.5 -82t40.5 -63.5t61 -40.5t77 -14q30 0 49.5 1.5t35.5 5t32.5 9.5t41.5 16q21 8 26.5 5t12.5 -13l104 -170q8 -18 -3 -29t-22 -19q-63 -39 -132 -61.5t-147 -22.5q-99 0 -186.5 37.5t-152.5 102.5t-102.5 153t-37.5 189q0 100 38 188t104 153.5t154 103 +t187 37.5q78 0 142.5 -20t127.5 -57q-1 0 -2 1z" /> + <glyph glyph-name="registered" unicode="®" horiz-adv-x="1928" +d="M969 1617q119 0 230.5 -31t208 -88t176.5 -137t137 -177t88.5 -209.5t31.5 -233.5q0 -119 -31 -230.5t-88 -208t-137 -176.5t-177.5 -137t-209.5 -88.5t-233 -31.5q-120 0 -231 31t-208 88t-177 137t-137 177.5t-88.5 209.5t-31.5 234q0 119 31 230t88 208t137 176.5 +t177.5 136.5t209.5 88.5t234 31.5zM639 1135q0 15 7.5 22t19.5 7h407q57 -2 106 -24.5t85.5 -60t57 -86.5t20.5 -104q0 -78 -36 -141t-99 -99l143 -301q0 -2 1.5 -3.5t1.5 -3.5q0 -20 -27 -20h-211q-15 0 -22 18l-125 275h-74v-269q0 -13 -7.5 -18.5t-19.5 -5.5h-201 +q-11 0 -19 5.5t-8 18.5v790zM1089 891q0 13 -5.5 26.5t-15.5 24t-24 17.5t-30 7h-120v-150h120q33 0 54 21.5t21 53.5zM968 1350q-84 0 -162 -22t-146 -61.5t-123.5 -94.5t-95 -122.5t-61 -144.5t-21.5 -160q0 -85 22 -162.5t61.5 -145.5t95 -123.5t122.5 -95t144.5 -61 +t160.5 -21.5q126 0 237 48t193.5 130.5t130.5 192.5t48 235q0 84 -22 162t-61.5 145.5t-95 123t-123 95t-144.5 61t-160 21.5z" /> + <glyph glyph-name="B" unicode="B" horiz-adv-x="1410" +d="M160 1439q0 21 11.5 33.5t32.5 12.5h664q88 0 166 -33.5t136.5 -92t92.5 -137t34 -168.5q0 -75 -23.5 -139.5t-66.5 -115.5q72 -66 114 -157t42 -193q0 -91 -35 -172.5t-94.5 -143t-139 -97.5t-167.5 -36h-723q-20 0 -32 10.5t-12 32.5v1396zM966 464q0 30 -11.5 60 +t-32 53.5t-49 38.5t-61.5 15h-264v-334h264q33 0 61 14t49 37.5t32.5 53.5t11.5 62zM913 1045q0 30 -11 56t-31 46t-48 31.5t-61 11.5h-214v-290h211q34 0 62.5 10.5t48.5 30t31.5 46t11.5 58.5z" /> + <glyph glyph-name="caron" unicode="ˇ" horiz-adv-x="741" +d="M397 1315q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="G" unicode="G" horiz-adv-x="1502" +d="M1098 1066q-51 36 -109 56t-124 20q-83 0 -152 -31.5t-118.5 -85.5t-77.5 -126.5t-28 -154.5t28 -154t77.5 -125.5t118.5 -84.5t152 -31q35 0 69.5 5t73.5 13v262q0 19 11 31.5t33 12.5h272q15 0 32 -12t17 -32v-484q0 -27 -29 -44q-47 -32 -104 -55t-119 -38 +t-125.5 -22.5t-123.5 -7.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5q17 -10 26 -26.5t-4 -37.5l-162 -234q-13 -16 -26 -21.5t-35 8.5z" /> + <glyph glyph-name="quotesinglbase" unicode="‚" horiz-adv-x="574" +d="M121 266q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43t13.5 55v44q0 18 -18 21h-57 +q-20 0 -30.5 12t-10.5 32v222z" /> + <glyph glyph-name="quotedblbase" unicode="„" horiz-adv-x="998" +d="M124 266q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43t13.5 55v44q0 18 -18 21h-57 +q-20 0 -30.5 12t-10.5 32v222zM560 266q0 20 11.5 32t32.5 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43 +t13.5 55v44q0 18 -18 21h-57q-20 0 -30.5 12t-10.5 32v222z" /> + <glyph glyph-name="guilsinglleft" unicode="‹" horiz-adv-x="893" +d="M561 1185q9 11 29 11q21 0 33 -13l144 -144q12 -14 14 -31q-1 -7 -3 -15t-9 -16l-344 -345l344 -346q12 -12 12 -30q0 -21 -15 -36l-147 -143q-6 -6 -13.5 -10t-15.5 -4q-18 0 -30 14l-523 525q-15 15 -15 29q0 16 15 31z" /> + <glyph glyph-name="germandbls" unicode="ß" horiz-adv-x="1199" +d="M582 1187q-38 0 -61 -12.5t-35.5 -32t-16.5 -42t-4 -41.5v-1102q0 -45 -12 -88.5t-34 -82.5t-52 -72.5t-67 -58.5q-51 -33 -113 -47.5t-125 -14.5q-46 0 -46 43v200q0 40 37 40h8q54 0 74.5 31t20.5 88v1066q0 121 35.5 202t94.5 130.5t136 71.5t160 24h6q84 0 160.5 -30 +t135 -83t93 -125t34.5 -157v-27q0 -72 -29 -127t-89 -103q34 -18 70 -43.5t67 -60.5t53 -82t27 -108q2 -40 4.5 -74.5t-1.5 -76.5q-11 -201 -137.5 -302t-379.5 -101q-44 0 -44 45v235q0 14 12 28.5t32 14.5h61q23 1 44 10t36.5 25t24.5 39t9 53v68q0 35 -17.5 61.5 +t-43.5 44.5t-57.5 27t-59.5 9q-17 0 -30.5 10t-13.5 33q0 54 0.5 108.5t0.5 108.5q0 43 43 43q21 0 37 9t26.5 23t16 31.5t5.5 34.5v21q0 7 -4 26t-14.5 39t-29.5 35.5t-48 15.5z" /> + <glyph glyph-name="at.001" horiz-adv-x="1911" +d="M1362 -114q13 6 20 6q13 0 24 -15l94 -139q5 -8 5 -13q0 -11 -6 -18.5t-14 -12.5q-112 -66 -232.5 -102t-255.5 -36q-132 1 -254.5 36t-229.5 98t-194.5 150.5t-150 194t-97 229t-34.5 254.5t34.5 255t97 231t150.5 196.5t195.5 152.5t231 99t257.5 35q109 -2 215 -29 +t202 -75.5t177 -118t140.5 -156.5t93 -190t33.5 -219q0 -149 -26.5 -268.5t-79 -203.5t-131 -129t-183.5 -45h-141q-23 0 -42 10.5t-41 30.5q-20 14 -39.5 31.5t-33.5 40.5q-21 -24 -44 -48t-50.5 -43.5t-62.5 -32.5t-80 -14h-2q-108 0 -197 39.5t-152.5 107t-98.5 157 +t-35 190.5t35.5 189.5t98.5 154.5t149.5 105.5t188.5 42.5q51 0 90.5 -12t70.5 -33.5t55 -50.5t44 -63l31 100q7 29 15.5 38t34.5 9h129q20 0 34.5 -12t14.5 -33v-600q0 -26 4.5 -40t13 -21t21.5 -8.5t30 -1.5q42 0 73 34.5t51.5 91t30.5 127.5t10 145q0 129 -50.5 235.5 +t-137.5 183t-203 118.5t-247 42q-108 0 -207 -27.5t-196 -84.5q-175 -108 -266.5 -266t-91.5 -357q0 -103 27 -199t76 -179.5t117 -152t150.5 -117.5t176 -76t193.5 -27q54 0 100.5 6t90.5 19.5t88 34t92 49.5zM749 519q0 -40 14 -74t38 -59t57 -39.5t71 -14.5 +q39 0 72.5 14.5t58 39.5t38 59t13.5 74q0 39 -13.5 73t-38 59.5t-58 40.5t-72.5 15q-38 0 -71 -15t-57 -40.5t-38 -59.5t-14 -73z" /> + <glyph glyph-name="O" unicode="O" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5z" /> + <glyph glyph-name="Q" unicode="Q" horiz-adv-x="1705" +d="M92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5q0 -135 -43 -257t-119.5 -219.5t-182 -166t-230.5 -97.5v-271q0 -44 -48 -44h-295q-44 0 -44 44v273 +q-124 30 -228 98.5t-179.5 165.5t-117.5 218t-42 256zM478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5z" /> + <glyph glyph-name="a" unicode="a" horiz-adv-x="1547" +d="M1427 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM442 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122z" /> + <glyph glyph-name="b" unicode="b" horiz-adv-x="1520" +d="M475 77q-9 -19 -15 -33.5t-13.5 -24t-18.5 -14.5t-30 -5h-198q-80 0 -80 77v1494q0 17 6.5 31t17 24t24 15.5t26.5 5.5h227q38 0 60 -22t22 -54v-456q28 30 60 61t69.5 56.5t82.5 41.5t100 16q136 0 250.5 -50.5t197 -139t129 -208t46.5 -258.5q0 -138 -46.5 -258 +t-129 -208.5t-197 -139.5t-250.5 -51q-51 0 -96 17.5t-84 44.5t-72 58t-60 58zM1078 634q0 64 -20.5 122t-58.5 102t-91 69.5t-119 25.5t-123.5 -25.5t-99.5 -69.5t-66.5 -102t-24.5 -122v-14q3 -63 28.5 -118t67.5 -95.5t98 -63.5t120 -23q66 0 119 24.5t91 66.5t58.5 99.5 +t20.5 123.5z" /> + <glyph glyph-name="d" unicode="d" horiz-adv-x="1545" +d="M1015 155q-27 -27 -59.5 -58t-71.5 -58t-84 -44.5t-97 -17.5q-136 0 -250.5 51t-197 139.5t-129 208.5t-46.5 258q0 139 46.5 258.5t129 208t197 139t250.5 50.5q55 0 100.5 -16t83 -41t69 -56.5t59.5 -61.5v457q0 32 19.5 54t58.5 22h225q13 0 27.5 -5.5t26.5 -15.5 +t19.5 -24t7.5 -31v-1495q0 -77 -81 -77h-196q-20 0 -31 5t-18.5 14.5t-13.5 24t-15 33.5zM440 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q64 0 120.5 23t98.5 63.5t67.5 95.5t28.5 118v14q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5 +t-91.5 -69.5t-58.5 -102t-20.5 -122z" /> + <glyph glyph-name="e" unicode="e" horiz-adv-x="1416" +d="M1184 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM703 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14z" /> + <glyph glyph-name="f" unicode="f" horiz-adv-x="867" +d="M241 1252q0 93 40 175t107 143.5t154 97t182 35.5h20q34 0 52.5 -20.5t18.5 -56.5v-191q0 -37 -19.5 -61.5t-51.5 -24.5h-20q-21 0 -40 -7.5t-34 -20.5t-24 -30.5t-9 -38.5v-115h157q34 0 52.5 -18.5t18.5 -58.5v-183q0 -43 -18.5 -63t-52.5 -20h-157v-717 +q0 -38 -25.5 -57.5t-55.5 -19.5h-216q-36 0 -57.5 22.5t-21.5 54.5v717h-103q-35 0 -56.5 20t-21.5 63v183q0 40 21.5 58.5t56.5 18.5h103v115z" /> + <glyph glyph-name="g" unicode="g" horiz-adv-x="1537" +d="M1040 44q11 34 10.5 77.5t-0.5 88.5q-29 -31 -59 -65.5t-66.5 -64t-82.5 -48.5t-107 -19q-135 0 -250 46t-199 128.5t-131 197.5t-47 253q0 137 47 256.5t131 208t199 139t250 50.5q62 0 111.5 -19t90 -49t74 -67.5t63.5 -74.5l38 119q6 17 11 31t13 23.5t20.5 14.5 +t32.5 5h149q11 0 25.5 -3t25.5 -14q14 -11 21 -24t7 -33v-1018q0 -156 -51 -278t-139.5 -206t-209.5 -128t-260 -44q-54 0 -116 9.5t-123.5 28.5t-119 48.5t-101.5 68.5q-12 9 -21 21t-12.5 27t0 32.5t16.5 36.5l95 131q26 28 49 30t58 -24q25 -24 57.5 -38.5t67 -23t68 -11 +t60.5 -2.5q45 0 94 12t91.5 35.5t75 57.5t44.5 78zM468 638q0 -67 20.5 -124.5t58.5 -99.5t91.5 -66t118.5 -24q64 0 120.5 22.5t98.5 62.5t67.5 94t28.5 117v33q-3 61 -28.5 115.5t-67.5 96t-98.5 66t-120.5 24.5q-65 0 -118.5 -25.5t-91.5 -68.5t-58.5 -101t-20.5 -122z +" /> + <glyph glyph-name="h" unicode="h" horiz-adv-x="1405" +d="M504 1137q19 28 46 55.5t63.5 49t83 35t105.5 13.5q114 0 203.5 -44t152 -120t95 -177.5t32.5 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v661q0 43 -16.5 80t-44.5 64.5t-65.5 43t-79.5 15.5q-36 0 -70.5 -14.5t-62 -41t-46 -63.5 +t-21.5 -82v-660q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v814v7v298v5v371q0 34 19 55t62 21h226q23 0 51 -16q13 -9 19.5 -26t6.5 -32v-437z" /> + <glyph glyph-name="i" unicode="i" horiz-adv-x="623" +d="M119 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM119 1698q0 42 18 59.5t56 17.5h232q35 0 56.5 -17.5t21.5 -59.5v-195q0 -12 -5.5 -26t-15.5 -27t-24.5 -21.5t-32.5 -8.5h-232 +q-74 0 -74 83v195z" /> + <glyph glyph-name="j" unicode="j" horiz-adv-x="628" +d="M125 1192q0 39 25 58.5t55 19.5h227q36 0 56 -23t20 -55v-1148q0 -93 -39 -175t-105 -143t-151.5 -96t-178.5 -35h-24q-36 2 -55 22.5t-19 49.5v143q0 36 22.5 58t54.5 22h21q20 0 37 16.5t29 40.5t18.5 50.5t6.5 46.5v1148zM120 1698q0 42 18 59.5t56 17.5h232 +q35 0 56.5 -17.5t21.5 -59.5v-195q0 -12 -5.5 -26t-15.5 -27t-24.5 -21.5t-32.5 -8.5h-232q-74 0 -74 83v195z" /> + <glyph glyph-name="k" unicode="k" horiz-adv-x="1413" +d="M120 1571q0 17 1 31t8.5 24t23.5 15.5t45 5.5h239q19 0 31.5 -6.5t20 -16.5t10 -21.5t2.5 -21.5v-740l360 400q26 29 62 29h307q55 0 55 -43q0 -11 -3.5 -18t-14.5 -20l-411 -434l517 -664h-2q13 -13 18.5 -26.5t5.5 -24.5q0 -23 -12.5 -31.5t-37.5 -8.5h-338 +q-17 0 -32 13t-33 39l-327 463l-111 -115v-323q0 -8 -2.5 -21t-10 -25.5t-20.5 -21.5t-34 -9h-251q-18 0 -31 9.5t-20.5 21.5t-11 22.5t-3.5 12.5v1505z" /> + <glyph glyph-name="l" unicode="l" horiz-adv-x="620" +d="M120 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494z" /> + <glyph glyph-name="m" unicode="m" horiz-adv-x="2131" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 36.5 70.5t57 74t89 58t133.5 23.5q128 0 224 -54.5t158 -146.5q19 31 52 66.5t79 65.5t105.5 49.5t131.5 19.5q114 0 203.5 -44t152 -120t95 -177.5t32.5 -216.5v-655 +q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v661q0 43 -13.5 80t-37.5 64.5t-58.5 43t-76.5 15.5q-38 0 -72 -15t-60 -41.5t-41.5 -64t-15.5 -82.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-21h-8h-202q-43 0 -59 14.5t-16 56.5v661q0 43 -12.5 80t-36 64.5 +t-57 43t-75.5 15.5q-36 0 -70.5 -14.5t-62 -41t-46 -63.5t-21.5 -82v-660q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25z" /> + <glyph glyph-name="n" unicode="n" horiz-adv-x="1445" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25z" /> + <glyph glyph-name="o" unicode="o" horiz-adv-x="1473" +d="M81 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM446 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122z" /> + <glyph glyph-name="p" unicode="p" horiz-adv-x="1527" +d="M146 1258q13 11 27 14t27 3h151q19 0 31.5 -6t20.5 -16.5t13.5 -24t10.5 -29.5l42 -121q28 36 56.5 73.5t67.5 68t93 50.5t132 20q137 0 252.5 -50.5t199 -139t130.5 -208t47 -258.5q0 -138 -47 -258t-130.5 -208.5t-199 -139.5t-252.5 -51q-65 0 -112 15.5t-83.5 40.5 +t-64.5 55t-55 60v-466q0 -30 -18 -51t-56 -21h-229q-12 0 -26 5t-26 14t-20 22.5t-8 30.5v1519q0 20 7.5 33t18.5 24zM1080 634q0 64 -21 121.5t-59 100.5t-91 68t-117 25q-63 0 -119.5 -23.5t-99 -64t-69 -95.5t-29.5 -117v-15q0 -66 25 -124t68 -100.5t101 -67.5t123 -25 +q64 0 117 25t91 67.5t59 100.5t21 124z" /> + <glyph glyph-name="q" unicode="q" horiz-adv-x="1527" +d="M1381 1258q11 -11 18.5 -24t7.5 -33v-1516q0 -17 -8 -30.5t-20 -22.5t-26 -14t-26 -5h-229q-39 0 -56.5 21t-17.5 51v463q-27 -30 -59.5 -60t-71.5 -55t-85 -40.5t-99 -15.5q-137 0 -252.5 51t-199 139.5t-130.5 208.5t-47 258q0 139 47 258.5t130.5 208t199 139 +t252.5 50.5q60 0 111.5 -20t95 -50.5t79 -68t63.5 -73.5l43 121q8 32 23 54t51 22h152q13 0 27 -3t27 -14zM445 634q0 -66 21.5 -124t59.5 -100.5t91.5 -67.5t117.5 -25q65 0 123 25t101 67.5t68 100.5t25 124v15q-3 62 -29.5 117t-69.5 95.5t-99 64t-119 23.5 +q-64 0 -117.5 -25t-91.5 -68t-59.5 -100.5t-21.5 -121.5z" /> + <glyph glyph-name="r" unicode="r" horiz-adv-x="1151" +d="M120 1196q0 17 7.5 32.5t18.5 24.5q26 17 54 17h151q19 0 30 -7t18.5 -18t13 -25t13.5 -28q2 -4 8 -19.5t13 -34t13.5 -35t8.5 -21.5q30 33 57.5 69.5t58.5 67.5t69 51t90 20q54 0 96.5 -8t80.5 -23.5t75.5 -39.5t81.5 -56q69 -37 26 -110l-91 -155q-20 -30 -49 -37 +t-63 9q-43 42 -87.5 62.5t-101.5 20.5q-39 0 -68.5 -11t-53.5 -31t-45 -48t-42 -62v-724q0 -38 -18.5 -57.5t-61.5 -19.5h-225q-78 0 -78 77v1119z" /> + <glyph glyph-name="s" unicode="s" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34z" /> + <glyph glyph-name="t" unicode="t" horiz-adv-x="859" +d="M197 1468q0 31 20.5 46.5t58.5 29.5l227 79q5 1 9.5 1h8.5q37 0 49.5 -21.5t12.5 -56.5l-1 -315h167q32 0 52 -19t20 -57v-193q0 -42 -20 -61.5t-52 -19.5h-167l1 -804q0 -38 -22 -57.5t-61 -19.5h-226q-77 0 -77 77l-1 804h-73q-77 0 -77 81v193q0 76 77 76h73z" /> + <glyph glyph-name="u" unicode="u" horiz-adv-x="1445" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25z" /> + <glyph glyph-name="v" unicode="v" horiz-adv-x="1276" +d="M35 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -119t43 -135.5t44.5 -138t40.5 -126t33 -100t21.5 -60.5l212 679q13 32 29.5 43t46.5 11h263q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-476 -1141q-11 -18 -26 -30.5t-45 -12.5h-119 +q-40 0 -56.5 11.5t-24.5 31.5z" /> + <glyph glyph-name="w" unicode="w" horiz-adv-x="1926" +d="M40 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -118.5t43 -133.5t44.5 -135t40.5 -123.5t33 -98.5t21.5 -60l212 669q13 32 29.5 43t46.5 11h237q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-110 -269q7 -17 27 -57.5t45.5 -92t52 -108t44.5 -105.5 +l245 664q13 32 26.5 43t40.5 11h221q48 0 66 -18t2 -68l-469 -1141q-9 -18 -27.5 -30.5t-53.5 -12.5h-105q-39 0 -57 12.5t-29 32.5l-186 454l-183 -456q-11 -18 -26 -30.5t-45 -12.5h-119q-40 0 -56.5 11.5t-24.5 31.5z" /> + <glyph glyph-name="x" unicode="x" horiz-adv-x="1362" +d="M43 38q-3 14 5 27.5t14 22.5l398 561l-377 536q-10 13 -17 28t-5.5 27.5t13 21t38.5 8.5h314q17 0 29.5 -14.5t28.5 -37.5l191 -309q19 27 44 68.5t51.5 86t51 86.5t42.5 71q17 26 31.5 37.5t34.5 11.5h317q12 0 22.5 -5t16.5 -14t5 -21t-13 -26l-391 -552l389 -544 +q12 -17 20.5 -36t7.5 -35t-14.5 -26.5t-45.5 -10.5h-324q-45 0 -67 52l-178 320l-180 -324q-11 -22 -28 -35t-33 -13h-348q-14 0 -24 6t-17 22z" /> + <glyph glyph-name="y" unicode="y" horiz-adv-x="1419" +d="M43 1174q-16 40 -0.5 68.5t68.5 28.5h247q25 0 41 -15.5t24 -38.5l283 -805l277 805q11 32 28 43t47 11h257q28 0 44 -7.5t22.5 -20t4.5 -28t-8 -30.5q-38 -94 -83 -205.5t-93.5 -232t-98.5 -245t-97.5 -244.5t-91.5 -230.5t-80.5 -203t-63.5 -162.5t-41 -108l3 5 +q-7 -27 -25 -43.5t-44 -16.5h-231q-45 0 -61.5 17.5t-16.5 51.5q0 13 3.5 20t5.5 9l157 408z" /> + <glyph glyph-name="z" unicode="z" horiz-adv-x="1201" +d="M108 1197q0 35 21.5 56.5t58.5 21.5h842q32 0 56.5 -19.5t24.5 -58.5v-174q0 -9 -1.5 -21t-10.5 -24l-551 -654h494q36 0 57.5 -19.5t21.5 -61.5v-157q0 -15 -5.5 -30.5t-16 -28t-25 -20t-32.5 -7.5h-882q-16 0 -30.5 7.5t-26 19.5t-18 27.5t-6.5 31.5v138q0 14 2.5 27 +t14.5 27q67 74 140.5 160.5t148.5 175.5t149 176t141 162h-487q-37 0 -58.5 20t-21.5 63v162z" /> + <glyph glyph-name="c" unicode="c" horiz-adv-x="1235" +d="M933 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51z" /> + <glyph glyph-name="wacute" unicode="ẃ" horiz-adv-x="1926" +d="M40 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -118.5t43 -133.5t44.5 -135t40.5 -123.5t33 -98.5t21.5 -60l212 669q13 32 29.5 43t46.5 11h237q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-110 -269q7 -17 27 -57.5t45.5 -92t52 -108t44.5 -105.5 +l245 664q13 32 26.5 43t40.5 11h221q48 0 66 -18t2 -68l-469 -1141q-9 -18 -27.5 -30.5t-53.5 -12.5h-105q-39 0 -57 12.5t-29 32.5l-186 454l-183 -456q-11 -18 -26 -30.5t-45 -12.5h-119q-40 0 -56.5 11.5t-24.5 31.5zM951 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6 +t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="wgrave" unicode="ẁ" horiz-adv-x="1926" +d="M40 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -118.5t43 -133.5t44.5 -135t40.5 -123.5t33 -98.5t21.5 -60l212 669q13 32 29.5 43t46.5 11h237q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-110 -269q7 -17 27 -57.5t45.5 -92t52 -108t44.5 -105.5 +l245 664q13 32 26.5 43t40.5 11h221q48 0 66 -18t2 -68l-469 -1141q-9 -18 -27.5 -30.5t-53.5 -12.5h-105q-39 0 -57 12.5t-29 32.5l-186 454l-183 -456q-11 -18 -26 -30.5t-45 -12.5h-119q-40 0 -56.5 11.5t-24.5 31.5zM1107 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219 +q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="lslash" unicode="ł" horiz-adv-x="620" +d="M597 1034q11 5 22 0t18 -20l43 -106q5 -14 0.5 -26.5t-18.5 -17.5l-625 -229q-30 -10 -44 22l-43 106q-9 31 22 44zM125 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494z +" /> + <glyph glyph-name="kcommaaccent" unicode="ķ" horiz-adv-x="1413" +d="M120 1571q0 17 1 31t8.5 24t23.5 15.5t45 5.5h239q19 0 31.5 -6.5t20 -16.5t10 -21.5t2.5 -21.5v-740l360 400q26 29 62 29h307q55 0 55 -43q0 -11 -3.5 -18t-14.5 -20l-411 -434l517 -664h-2q13 -13 18.5 -26.5t5.5 -24.5q0 -23 -12.5 -31.5t-37.5 -8.5h-338 +q-17 0 -32 13t-33 39l-327 463l-111 -115v-323q0 -8 -2.5 -21t-10 -25.5t-20.5 -21.5t-34 -9h-251q-18 0 -31 9.5t-20.5 21.5t-11 22.5t-3.5 12.5v1505zM493 -230q0 20 11 32t33 12h264q17 0 32 -12t15 -32v-287q0 -94 -49 -177.5t-140 -134.5q-3 -3 -14 -3q-14 0 -22.5 3.5 +t-13.5 10.5l-69 57q-11 8 -14.5 16.5t-3.5 16.5q0 13 13.5 26t30 29.5t30 38t13.5 51.5v44q0 19 -18 21h-57q-41 2 -41 44v244z" /> + <glyph glyph-name="kgreenlandic" unicode="ĸ" horiz-adv-x="1413" +d="M120 1202q0 17 1 31t8.5 24t23.5 15.5t45 5.5h239q19 0 31.5 -6.5t20 -16.5t10 -21.5t2.5 -21.5v-371l360 400q26 29 62 29h307q55 0 55 -43q0 -11 -3.5 -18t-14.5 -20l-411 -434l517 -664h-2q13 -13 18.5 -26.5t5.5 -24.5q0 -23 -12.5 -31.5t-37.5 -8.5h-338 +q-17 0 -32 13t-33 39l-327 463l-111 -115v-323q0 -8 -2.5 -21t-10 -25.5t-20.5 -21.5t-34 -9h-251q-18 0 -31 9.5t-20.5 21.5t-11 22.5t-3.5 12.5v1136z" /> + <glyph glyph-name="Gdotaccent" unicode="Ġ" horiz-adv-x="1502" +d="M1098 1066q-51 36 -109 56t-124 20q-83 0 -152 -31.5t-118.5 -85.5t-77.5 -126.5t-28 -154.5t28 -154t77.5 -125.5t118.5 -84.5t152 -31q35 0 69.5 5t73.5 13v262q0 19 11 31.5t33 12.5h272q15 0 32 -12t17 -32v-484q0 -27 -29 -44q-47 -32 -104 -55t-119 -38 +t-125.5 -22.5t-123.5 -7.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5q17 -10 26 -26.5t-4 -37.5l-162 -234q-13 -16 -26 -21.5t-35 8.5z +M715 1886q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="cyrbreve" horiz-adv-x="0" + /> + <glyph glyph-name="hungarumlaut" unicode="˝" horiz-adv-x="1031" +d="M197 1660q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20zM649 1660q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219 +q-26 0 -26 22q0 8 1 17t8 20z" /> + <glyph glyph-name="ring" unicode="˚" horiz-adv-x="767" +d="M374 1782q43 0 81.5 -16.5t67.5 -45.5t45.5 -67.5t16.5 -81.5q0 -44 -16.5 -82t-45.5 -66.5t-67.5 -44.5t-81.5 -16q-44 0 -82 16t-66.5 44.5t-44.5 66.5t-16 82q0 43 16 81.5t44.5 67.5t66.5 45.5t82 16.5zM375 1632q-26 0 -42 -17t-16 -43t16 -42t42 -16t43 16t17 42 +t-17 43t-43 17z" /> + <glyph glyph-name="OE" unicode="Œ" horiz-adv-x="2428" +d="M82 745q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q105 0 200.5 -26.5t180.5 -75.5v34q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13 +h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v36q-85 -49 -180.5 -75t-200.5 -26q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM468 746q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5 +t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5z" /> + <glyph glyph-name="Hbar" unicode="Ħ" horiz-adv-x="1602" +d="M165 1441q1 17 12.5 30.5t30.5 13.5h297q15 0 31 -12.5t16 -31.5v-207h497v207q0 18 12.5 31t32.5 13h293q20 0 35 -10t15 -32v-1399q0 -22 -13 -33t-34 -11h-296q-20 0 -32.5 11t-12.5 33v498h-497v-498q0 -21 -13.5 -32.5t-36.5 -11.5h-294q-42 0 -43 39v1402z +M1049 837v130h-497v-130h497z" /> + <glyph glyph-name="AE" unicode="Æ" horiz-adv-x="2180" +d="M840 1446q8 13 25.5 26t37.5 13h1097q23 0 34.5 -13t11.5 -35v-248q0 -17 -12 -32.5t-35 -15.5h-707l47 -252h271.5t271.5 1q19 0 31.5 -10t12.5 -30v-216q0 -14 -11 -27t-32 -13h-494l46 -250h604q24 0 34.5 -11.5t10.5 -34.5v-252q0 -20 -14 -33t-34 -13h-885 +q-41 0 -48 37q-9 51 -17.5 101.5t-16.5 101.5h-520l-114 -203q-22 -37 -59 -37h-315q-32 0 -32 21q0 6 5 19q121 216 322.5 567t483.5 839zM727 561h296l-70 398z" /> + <glyph glyph-name="Eth" unicode="Ð" horiz-adv-x="1547" +d="M1454 741q0 -106 -27 -201.5t-77 -178t-119.5 -149.5t-154 -114t-182.5 -72.5t-203 -25.5h-493q-18 0 -32 8t-14 34v1397q0 21 11.5 34t34.5 13h493q105 0 202.5 -26t182 -74t154.5 -115t119.5 -150t77 -179t27.5 -201zM539 1127v-769h84q23 0 45 1.5t44 3.5 +q75 6 140 36.5t113.5 80t76 116.5t27.5 146q0 84 -31.5 154.5t-85.5 122t-126.5 80t-154.5 28.5h-132zM41.3096 839.581q0 39.6729 38.2852 39.6729h593.42q15.6621 0 26.9736 -10.3691t11.3115 -29.3037v-183.04q0 -13.5254 -10.4414 -28.4023 +q-10.4414 -14.8779 -27.8438 -14.8779h-593.42q-38.2852 0 -38.2852 43.2803v183.04z" /> + <glyph glyph-name="exclam" unicode="!" horiz-adv-x="681" +d="M163 1602q0 44 49 44h260q44 0 44 -44v-1078q0 -19 -11 -31.5t-33 -12.5h-260q-15 0 -32 12t-17 32v1078zM163 287q0 20 11.5 32t32.5 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -12 -32t-34 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="quotedbl" unicode=""" horiz-adv-x="760" +d="M95 1442q0 44 44 44h149q44 0 44 -44v-390q0 -44 -44 -44h-149q-44 0 -44 44v390zM425 1442q0 44 44 44h149q44 0 44 -44v-390q0 -44 -44 -44h-149q-44 0 -44 44v390z" /> + <glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1261" +d="M1113 1131q18 0 31 -11.5t13 -32.5v-181q0 -7 -3 -15.5t-9 -15.5t-14 -12t-18 -5h-143v-233h143q18 0 31 -11.5t13 -32.5v-181q0 -7 -3 -15.5t-9 -15.5t-14 -12t-18 -5h-143v-308q0 -44 -48 -44h-181q-44 0 -44 44v308h-145v-308q0 -44 -48 -44h-181q-44 0 -44 44v308 +h-123q-44 0 -44 48v181q0 44 44 44h123v233h-123q-44 0 -44 48v181q0 44 44 44h123v310q0 18 11.5 31t32.5 13h181q15 0 31.5 -12t16.5 -32v-310h145v310q0 18 11.5 31t32.5 13h181q15 0 31.5 -12t16.5 -32v-310h143zM552 625h145v233h-145v-233z" /> + <glyph glyph-name="dollar" unicode="$" horiz-adv-x="1287" +d="M338 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 77 26 142t74 116t117.5 86.5t156.5 52.5v139q0 18 11 31 +t33 13h188q15 0 31.5 -12t16.5 -32v-134q56 -10 109.5 -28.5t106.5 -47.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5 +t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -94 -33 -172.5t-92 -139.5t-139.5 -101.5t-176.5 -57.5v-143q0 -44 -48 -44h-188q-44 0 -44 44v146q-79 17 -153 52t-140 83q-40 29 -67.5 57 +t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165q21 15 34 15q9 0 19 -6t24 -18z" /> + <glyph glyph-name="ampersand" unicode="&" horiz-adv-x="1795" +d="M1303 719q3 -1 12 -1q29 0 54 16t37 45q8 6 11.5 15.5t3.5 17.5q5 18 14.5 28.5t23.5 10.5q7 0 9 -1l223 -44q14 0 25.5 -16t11.5 -31q0 -8 -1 -11q-13 -78 -49 -141.5t-88 -108.5t-117 -70t-135 -25q-32 0 -65 6l-66 12q-7 -94 -33.5 -163t-68 -118t-95 -79.5 +t-114 -47.5t-125.5 -23.5t-129 -6.5q-108 0 -205.5 35t-171 98t-116.5 149.5t-43 189.5q0 75 14.5 132.5t41.5 103t64.5 81.5t83.5 68q-46 48 -75.5 114t-29.5 144q0 86 35.5 160t94.5 128.5t136 85.5t160 31t160 -22t136 -71t94 -127.5t35 -192.5q0 -23 -13.5 -35 +t-31.5 -12q-51 0 -102.5 -0.5t-102.5 -0.5q-43 0 -43 38q0 25 -5.5 45.5t-18.5 35.5t-34.5 23.5t-53.5 8.5q-36 0 -58.5 -12.5t-35 -31t-17 -40t-4.5 -39.5q0 -10 5.5 -31t18 -43.5t33.5 -41.5t52 -25q35 -6 35 -40q0 -8 -1 -11l-39 -188q-2 -19 -13.5 -26.5t-24.5 -7.5 +q-8 0 -15 1t-14 1q-32 0 -52.5 -17t-32.5 -40t-16.5 -47.5t-4.5 -40.5q0 -30 8.5 -65.5t30.5 -66t60.5 -51t97.5 -20.5q39 0 75 11.5t64 34t45.5 55.5t19.5 77l-59 12q-14 3 -22.5 14.5t-8.5 25.5q0 8 1 10q10 55 21 109t22 111q3 16 13.5 25t24.5 9q7 0 9 -1z" /> + <glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="611" +d="M147 1441q0 44 44 44h196q44 0 44 -44v-387q0 -44 -44 -44h-196q-44 0 -44 44v387z" /> + <glyph glyph-name="parenleft" unicode="(" horiz-adv-x="805" +d="M407 -253q-138 218 -211 467.5t-73 524.5t73 524.5t211 467.5q10 17 26 20t31 -9l238 -148q16 -11 18 -27t-8 -29q-115 -183 -171 -382.5t-56 -416.5q0 -219 55 -417q59 -201 172 -381q10 -14 8 -30t-18 -27l-238 -148q-15 -11 -31 -8.5t-26 19.5z" /> + <glyph glyph-name="parenright" unicode=")" horiz-adv-x="807" +d="M391 -253q-10 -17 -26 -19.5t-31 8.5l-238 148q-16 11 -18 27t8 30q113 180 172 381q55 198 55 417q0 217 -56 416.5t-171 382.5q-10 13 -8 29t18 27l238 148q15 12 31 9t26 -20q138 -218 211 -467.5t73 -524.5t-73 -524.5t-211 -467.5z" /> + <glyph glyph-name="asterisk" unicode="*" horiz-adv-x="983" +d="M199 831q-3 4 -5 11t-2 12q3 25 27 42l160 92q9 6 24 6q8 0 18 -6t18 -19l54 -141l54 141q8 23 37 23q11 0 23 -4l159 -95q24 -12 24 -45q-3 -5 -3 -17l-109 -123l162 32q17 0 31 -12t14 -33v-184q0 -16 -12.5 -32.5t-32.5 -16.5l-162 31l109 -123q2 -5 4.5 -11.5 +t2.5 -14.5q0 -24 -23 -37l-160 -92q-7 -7 -24 -7q-30 0 -40 22l-54 140l-54 -140q-5 -11 -15.5 -16.5t-21.5 -5.5q-15 0 -28 7l-159 94q-24 13 -24 35q0 8 1.5 14.5t6.5 11.5l107 123l-160 -31q-45 0 -45 49v184q0 21 11 33t34 12l160 -32z" /> + <glyph glyph-name="plus" unicode="+" horiz-adv-x="900" +d="M62 706q0 44 44 44h183v193q0 44 48 44h224q44 0 44 -44v-193h183q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-183v-194q0 -18 -11 -31t-33 -13h-224q-15 0 -31.5 12t-16.5 32v194h-183q-44 0 -44 48v203z" /> + <glyph glyph-name="comma" unicode="," horiz-adv-x="611" +d="M136 288q0 20 11 32t33 12h264q17 0 32 -12t15 -32v-287q0 -94 -49 -177.5t-140 -134.5q-3 -3 -14 -3q-14 0 -22.5 3.5t-13.5 10.5l-69 57q-11 8 -14.5 16.5t-3.5 16.5q0 13 13.5 26t30 29.5t30 38t13.5 51.5v44q0 19 -18 21h-57q-41 2 -41 44v244z" /> + <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="1100" +d="M167 706q0 44 44 44h682q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-682q-44 0 -44 48v203z" /> + <glyph glyph-name="period" unicode="." horiz-adv-x="611" +d="M136 288q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="slash" unicode="/" horiz-adv-x="1104" +d="M664 1441q8 18 23.5 31t40.5 13h277q20 0 35.5 -8t15.5 -23q0 -11 -2 -13l-632 -1397q-11 -25 -21 -34.5t-31 -9.5h-300q-41 0 -41 26q0 2 1 4l3 14z" /> + <glyph glyph-name="zero" unicode="0" horiz-adv-x="1728" +d="M480 742q0 -84 29.5 -156.5t81.5 -126.5t122.5 -85t153.5 -31q82 0 153.5 31t123.5 85t82 126.5t30 156.5q0 83 -30 156.5t-82 128t-123.5 86t-153.5 31.5q-83 0 -153.5 -31.5t-122.5 -86t-81.5 -128t-29.5 -156.5zM102 741q0 105 27 203t77 183t119.5 155t154.5 119.5 +t182.5 77t203.5 27.5q105 0 203 -27.5t183 -77t154.5 -119.5t119 -155t77 -183t27.5 -203q0 -106 -27.5 -203.5t-77 -182t-119 -154t-154.5 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5z" /> + <glyph glyph-name="one" unicode="1" horiz-adv-x="751" +d="M55 1333q0 38 44 62l136 67q26 17 51 20t64 3h226q20 0 34 -12t14 -32v-1397q0 -44 -47 -44h-284q-25 0 -34.5 13.5t-9.5 28.5v1102l-137 -68q-5 -2 -10 -1.5t-7 -3.5q-19 0 -29.5 14t-10.5 33v215z" /> + <glyph glyph-name="two" unicode="2" horiz-adv-x="1291" +d="M655 329h450q20 0 33 -11t13 -34v-233q0 -19 -13.5 -35t-33.5 -16h-921q-19 0 -35 15.5t-16 35.5v149q0 14 7 27l607 725q27 31 34 53t7 49q0 34 -13 60t-34 43.5t-47 26.5t-53 9q-30 0 -56.5 -12t-46.5 -32.5t-32 -47t-12 -54.5v-55q0 -16 -13 -32t-37 -16h-256 +q-25 0 -34.5 13.5t-9.5 28.5v52q0 105 39 192.5t106 150.5t156 98t190 35q103 0 197 -32.5t165.5 -92t114 -144t42.5 -189.5q0 -54 -13 -101.5t-34.5 -89.5t-49 -78.5t-57.5 -69.5z" /> + <glyph glyph-name="seven" unicode="7" horiz-adv-x="1312" +d="M1241 1486q28 0 41.5 -17t13.5 -39q0 -26 -18 -51l-712 -1345q-8 -16 -23 -25t-32 -9h-356q-36 0 -36 26q0 10 4 18l567 1088h-541q-20 0 -33.5 11t-13.5 35v262q0 20 14 33t33 13h1092z" /> + <glyph glyph-name="eight" unicode="8" horiz-adv-x="1240" +d="M516 1077q0 -45 30.5 -75.5t75.5 -30.5q22 0 41.5 8t34 22.5t23 33.5t8.5 42q0 22 -8.5 41t-23 33.5t-34 23t-41.5 8.5q-23 0 -42 -8.5t-33.5 -23t-22.5 -33.5t-8 -41zM450 492q0 -36 12.5 -68t35.5 -56t54 -37.5t69 -13.5q36 0 66 13.5t52 37.5t34 56t12 69 +q0 36 -11.5 68.5t-32.5 57t-51.5 39t-68.5 14.5q-39 0 -70.5 -14.5t-54 -39.5t-34.5 -57.5t-12 -68.5zM86 488q0 58 14 110.5t38.5 98.5t59 85t76.5 71q-34 49 -55 112t-21 126q0 84 33.5 158.5t91 131t134 89.5t163.5 33q85 0 162.5 -33t135.5 -89.5t92.5 -131t34.5 -158.5 +q0 -63 -22 -126.5t-59 -111.5q88 -69 137 -161.5t49 -207.5q0 -107 -38.5 -198.5t-108.5 -159t-167.5 -106t-215.5 -38.5q-119 0 -217 38t-168.5 105.5t-109.5 160t-39 202.5z" /> + <glyph glyph-name="nine" unicode="9" horiz-adv-x="1247" +d="M1142 1057q2 -17 3.5 -33t1.5 -32q-1 -66 -16.5 -128.5t-47.5 -119.5l-394 -700q-11 -21 -26 -32.5t-40 -11.5h-284q-39 0 -39 22q0 4 2 14t4 12q35 61 62 108t48 84.5t38 68.5t33.5 60t33.5 59.5t38 66.5q-97 10 -181 53t-146 110t-97.5 154t-35.5 185q0 106 41 198.5 +t112 161t166.5 108t204.5 39.5q101 0 190.5 -32.5t159 -92t114 -141.5t55.5 -181zM792 1000q0 40 -12 74t-34 59t-53.5 39t-70.5 14t-70 -14t-53 -39t-34 -59t-12 -74q0 -39 12 -73t34 -59.5t53 -40.5t70 -15t70.5 15t53.5 40.5t34 59.5t12 73z" /> + <glyph glyph-name="colon" unicode=":" horiz-adv-x="611" +d="M136 1083q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242zM136 288q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="semicolon" unicode=";" horiz-adv-x="611" +d="M130 288q0 20 11 32t33 12h264q17 0 32 -12t15 -32v-287q0 -94 -49 -177.5t-140 -134.5q-3 -3 -14 -3q-14 0 -22.5 3.5t-13.5 10.5l-69 57q-11 8 -14.5 16.5t-3.5 16.5q0 13 13.5 26t30 29.5t30 38t13.5 51.5v44q0 19 -18 21h-57q-41 2 -41 44v244zM136 1083q0 20 11 32 +t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="less" unicode="<" horiz-adv-x="891" +d="M594 1188q11 11 30 11q20 0 33 -13l160 -160q7 -7 10 -15t5 -16q-2 -7 -4.5 -15t-8.5 -16l-327 -329l327 -329q13 -17 13 -31q0 -19 -16 -35l-164 -160q-12 -14 -28 -14q-17 0 -31 14l-523 525q-15 15 -15 29q0 16 15 31z" /> + <glyph glyph-name="equal" unicode="=" horiz-adv-x="1100" +d="M167 493q0 44 44 44h682q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-682q-44 0 -44 48v203zM167 911q0 44 44 44h682q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-682q-44 0 -44 48v203z" /> + <glyph glyph-name="greater" unicode=">" horiz-adv-x="891" +d="M229 1166q11 11 23 21t32 10q14 0 26 -11t23 -21l502 -501q15 -15 15 -31q0 -14 -15 -29l-523 -525q-14 -14 -31 -14t-28 14l-164 160q-17 17 -17 35q0 15 13 31l328 329l-328 329q-11 17 -12 31q1 17 15 31z" /> + <glyph glyph-name="question" unicode="?" horiz-adv-x="1137" +d="M739 655q0 -39 -2.5 -62t-10 -34.5t-22 -14.5t-38.5 -3h-234q-22 0 -34 15t-12 34q0 53 1.5 87t4.5 56t8 36t13 27q28 45 63 78t71 60t70 51t61 51.5t43 62t16 81.5q0 32 -14 62t-37.5 53t-55 36.5t-65.5 13.5t-65 -14t-55 -38t-38 -55t-14 -64v-23q0 -17 -12 -24.5 +t-30 -9.5t-38.5 -1t-36.5 1h-173q-25 0 -34.5 13.5t-9.5 27.5v33q0 105 41.5 192.5t111 150.5t161 98t191.5 35q103 0 194 -37t159.5 -102.5t108 -155t39.5 -194.5q0 -95 -24 -158.5t-60.5 -106.5t-78.5 -71.5t-78.5 -55t-60.5 -56.5t-24 -75zM388 288q0 20 11 32t33 12h264 +q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="percent" unicode="%" horiz-adv-x="1863" +d="M46 1142q0 80 30 150t82 122.5t122.5 82.5t150.5 30t150 -30t122.5 -82.5t82.5 -122.5t30 -150t-30 -150.5t-82.5 -122.5t-122.5 -82t-150 -30t-150.5 30t-122.5 82t-82 122.5t-30 150.5zM1086 1441q8 18 23.5 31t40.5 13h217q20 0 35.5 -8t15.5 -23q0 -11 -2 -13 +l-632 -1397q-11 -25 -21 -34.5t-32 -9.5h-239q-42 0 -42 26l2 4l3 14zM314 1142q0 -51 33 -84t84 -33q24 0 45.5 9t37 24.5t24.5 37t9 46.5t-9 46t-24.5 36.5t-37 24.5t-45.5 9q-26 0 -47 -8.5t-37 -24t-24.5 -37t-8.5 -46.5zM1046 365q0 80 30 150t82 122.5t122.5 82.5 +t150.5 30t150 -30t122.5 -82.5t82.5 -122.5t30 -150t-30 -150.5t-82.5 -122.5t-122.5 -82t-150 -30t-150.5 30t-122.5 82t-82 122.5t-30 150.5zM1314 365q0 -51 33 -84t84 -33q24 0 45.5 9t37 24.5t24.5 37t9 46.5t-9 46t-24.5 36.5t-37 24.5t-45.5 9q-26 0 -47 -8.5 +t-37 -24t-24.5 -37t-8.5 -46.5z" /> + <glyph glyph-name="section" unicode="§" horiz-adv-x="1088" +d="M763 1209q-24 23 -52 40.5t-55 29t-51.5 17t-41.5 5.5q-30 0 -61.5 -8.5t-58 -25t-43 -42t-16.5 -58.5q0 -26 19 -42t51 -28t75 -23.5t91 -28.5h-1q89 -26 153 -57t105 -69t60.5 -84t19.5 -102q0 -139 -106 -221q48 -36 77 -85t29 -121q0 -79 -33 -144.5t-90.5 -113 +t-135.5 -73.5t-167 -26q-176 0 -307 101q-27 21 -48 42.5t-35.5 40.5t-22 34t-7.5 23q0 19 18 40t42.5 38t50 28.5t40.5 11.5q12 0 19 -2.5t14 -8.5t16.5 -16t25.5 -25q24 -23 51.5 -40t54 -28t50.5 -16.5t42 -5.5q30 0 62.5 8.5t58.5 25t43 41.5t17 58q0 21 -14.5 37 +t-40 28.5t-60.5 23.5t-75 23h1l-46 12q-89 28 -153 58.5t-105.5 67.5t-61.5 82t-20 102q0 72 24.5 124.5t78.5 94.5q-48 38 -75.5 88t-27.5 119q0 79 33 145t90.5 113t135.5 73t167 26q88 0 163.5 -23.5t144.5 -75.5q26 -20 46.5 -42t34.5 -41.5t21.5 -34.5t7.5 -22 +q0 -33 -33 -58l-72 -49q-11 -4 -19.5 -8t-20.5 -4q-13 0 -20.5 2t-14 7t-16 15t-26.5 27zM531 834q-38 0 -65.5 -8.5t-45.5 -22.5t-27 -31t-9 -35q0 -7 4.5 -22t22 -31t52.5 -30.5t97 -20.5h7q37 0 64.5 8.5t44.5 22.5t25.5 31t8.5 35q0 11 -0.5 22t-5.5 19q-9 14 -27 25.5 +t-41 20t-50.5 13t-54.5 4.5z" /> + <glyph glyph-name="macron" unicode="¯" horiz-adv-x="1015" +d="M78 1665q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="eth" unicode="ð" horiz-adv-x="1267" +d="M658 1199q-29 12 -58 12.5t-56.5 -6t-53.5 -17.5t-48 -21l-1 2q-20 -5 -26 -5q-13 0 -20 7t-12 21l-81 144q-9 16 -9.5 25.5t3 15t7.5 8t4 4.5q0 14 7.5 22t25.5 12q21 16 54.5 28.5t71 21t75 13t66.5 4.5q25 0 58.5 -2.5t66 -8t60 -15t42.5 -22.5q17 -17 35.5 -29.5 +t36.5 -20.5l103 81q11 11 23.5 11t20.5 -13l81 -114q10 -10 9.5 -24t-11.5 -25l-98 -77q54 -112 78 -262.5t24 -343.5q0 -17 -0.5 -34t-0.5 -34q-3 -138 -42 -245.5t-107.5 -180.5t-163 -111t-209.5 -38q-107 0 -200.5 38.5t-163 105.5t-109.5 157.5t-40 194.5t40.5 194.5 +t110 157t163 105t200.5 38.5q29 0 59 -7.5t58.5 -20t54 -29t45.5 -33.5q-1 16 -4.5 36t-9 41t-11.5 41.5t-13 38.5l-50 -40q-14 -10 -26.5 -7t-22.5 16l-83 112q-19 24 6 46zM821 475q0 45 -16 85t-44.5 69.5t-66.5 46.5t-83 17t-83.5 -17t-67 -46.5t-45 -69.5t-16.5 -85 +t16.5 -84.5t45 -69t67 -46t83.5 -16.5t83 16.5t66.5 46t44.5 69t16 84.5z" /> + <glyph glyph-name="foursuperior" unicode="⁴" horiz-adv-x="746" +d="M85 759q-28 0 -39 16t-11 35q0 10 3.5 18.5t8.5 16.5l361 618q11 17 19 21.5t19 4.5h101q19 0 30 -15.5t11 -29.5v-497h60q19 0 34 -9.5t15 -32.5v-102q0 -17 -15 -30.5t-34 -13.5h-60v-77q0 -22 -10 -32.5t-36 -10.5h-96q-43 0 -43 43v77h-318zM403 947v172l-98 -172h98 +z" /> + <glyph glyph-name="paragraph" unicode="¶" horiz-adv-x="1527" +d="M1343 1483q18 0 28.5 -7.5t15.5 -18t6.5 -22.5t1.5 -20v-97q0 -24 -4 -37.5t-11 -20.5t-17.5 -9t-22.5 -2h-140v-1177q0 -36 -6 -67q-15 -2 -31.5 -3.5t-34.5 -1.5h-101q-17 0 -33.5 1.5t-31.5 3.5q-3 16 -4 32.5t-1 34.5v1177h-216v-1177q0 -18 -1 -34.5t-4 -32.5 +q-15 -2 -32 -3.5t-34 -1.5h-101q-17 0 -33.5 1.5t-31.5 3.5q-3 15 -4 31t-1 34v601q-86 0 -163 31.5t-134.5 86t-91 128.5t-33.5 158t32 158.5t87 130t128.5 87.5t157.5 32h861z" /> + <glyph glyph-name="scedilla" unicode="ş" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34zM690 10q-22 -15 -22 -35q0 -16 15.5 -29.5t38 -28t49.5 -31t49.5 -38t38 -49t15.5 -64.5 +q0 -36 -24.5 -77t-69 -81t-106.5 -74.5t-138 -57.5h-5q-15 0 -33 22t-34 50t-27 54.5t-11 35.5q0 16 11 22q171 43 171 106q0 22 -15 39t-37.5 32.5t-48.5 31t-48.5 33.5t-37.5 40t-15 51q0 11 3 22.5t17 25.5h264z" /> + <glyph glyph-name="thorn" unicode="þ" horiz-adv-x="1546" +d="M120 1441q0 18 11 31t33 13h245q17 0 32 -12t15 -32v-464h291q67 0 127.5 -19t112 -52.5t92.5 -79t70 -99.5t44.5 -114t15.5 -122q0 -91 -34 -177t-94.5 -153t-144 -108.5t-183.5 -42.5h-297v-354q0 -44 -46 -44h-246q-44 0 -44 44v1785zM888 493q0 39 -14 76.5t-39.5 67 +t-61.5 47t-80 17.5h-237v-416q49 1 97 1h96h46q42 0 77.5 17t61 45.5t40 66t14.5 78.5z" /> + <glyph glyph-name="Thorn" unicode="Þ" horiz-adv-x="1319" +d="M146 1441q0 18 11 31t33 13h245q17 0 32 -12t15 -32v-206h291q67 0 127.5 -19t112 -52.5t92.5 -79t70 -99.5t44.5 -114t15.5 -122q0 -91 -34 -177t-94.5 -153t-144 -108.5t-183.5 -42.5h-297v-224q0 -44 -46 -44h-246q-44 0 -44 44v1397zM914 751q0 39 -14 76.5t-39.5 67 +t-61.5 47t-80 17.5h-237v-416q49 1 97 1h96h46q42 0 77.5 17t61 45.5t40 66t14.5 78.5z" /> + <glyph glyph-name="hyphen.cap" horiz-adv-x="1100" +d="M167 686q0 44 44 44h682q18 0 31 -11.5t13 -32.5v-203q0 -15 -12 -31.5t-32 -16.5h-682q-44 0 -44 48v203z" /> + <glyph glyph-name="lessequal" unicode="≤" horiz-adv-x="822" +d="M572 393q-128 128 -251.5 252.5t-250.5 252.5q-14 14 -14 29q0 16 15 31l489 488q8 8 20 16t24 8q19 0 32 -13l94 -93q15 -16 32 -35t17 -36q0 -15 -9 -27t-20 -25q-78 -78 -156.5 -156t-156.5 -157l313 -314l26 -29l5 -17v-5q0 -8 -5 -17.5t-13 -19.5t-17.5 -20 +t-17.5 -18l-96 -95q-12 -12 -27 -12q-8 0 -17.5 3t-15.5 9zM705 235q18 0 31 -11.5t13 -32.5v-142q0 -17 -12 -32t-32 -15h-612q-45 0 -45 47v142q0 44 45 44h612z" /> + <glyph glyph-name="greaterequal" unicode="≥" horiz-adv-x="787" +d="M257 393q-6 -6 -15.5 -9t-17.5 -3q-15 0 -27 12l-96 95q-8 8 -17.5 18t-17.5 20t-13 19.5t-5 17.5v5l5 17l26 29l313 314q-78 79 -156.5 157t-156.5 156q-11 13 -20 25t-9 27q0 17 17 36t32 35l94 93q13 13 32 13q12 0 24 -8t20 -16l489 -488q15 -15 15 -31 +q0 -15 -14 -29q-127 -128 -250.5 -252.5t-251.5 -252.5zM736 235q45 0 45 -44v-142q0 -47 -45 -47h-612q-20 0 -32 15t-12 32v142q0 21 13 32.5t31 11.5h612z" /> + <glyph glyph-name="Iota" unicode="Ι" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397z" /> + <glyph glyph-name="summation" unicode="∑" horiz-adv-x="1223" +d="M516 278h602q20 0 33 -11t13 -36v-183q0 -18 -13 -33t-33 -15h-1005q-20 0 -34.5 14t-14.5 34v128q0 12 7 27l462 538l-462 541q-7 15 -7 27v128q0 20 14.5 34t34.5 14h983q20 0 33 -15t13 -33v-180q0 -25 -13 -34.5t-33 -12.5h-584l404 -469z" /> + <glyph glyph-name="uni2215" unicode="∕" horiz-adv-x="1137" +d="M790 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18z" /> + <glyph glyph-name="radical" unicode="√" horiz-adv-x="1375" +d="M433 883q39 0 53 -37q5 -16 15.5 -53t24.5 -86t30.5 -106.5t32 -115t29.5 -111t24 -94.5q12 31 32 89t44.5 134t53 165t58 181.5t58.5 183.5t54.5 170.5t47 143t35.5 101.5q14 37 53 37h195q47 0 47 -35q0 -4 -1 -8t-2 -9l-2 -10l-572 -1672q-2 -5 -4.5 -11.5t-8 -12 +t-15 -9.5t-25.5 -4h-111q-15 0 -24.5 4t-15 9.5t-8 12t-4.5 11.5l-269 869h-144q-46 0 -46 46v173q0 44 46 44h319z" /> + <glyph glyph-name="infinity" unicode="∞" horiz-adv-x="1291" +d="M103 524q0 61 27.5 116t72 96t101.5 65t116 24q54 0 88 -11t58 -27.5t42 -36.5t39 -37q22 17 41.5 37t43.5 36.5t57.5 27.5t83.5 11q60 0 117.5 -24t101.5 -65t71 -96t27 -116q0 -62 -27 -117t-71 -96t-101.5 -65t-117.5 -24q-53 0 -86.5 11t-57 28t-42 37.5t-40.5 38.5 +q-21 -18 -38 -38.5t-40 -37.5t-57.5 -28t-91.5 -11q-59 0 -116 24t-101.5 65t-72 96t-27.5 117zM284 524q0 -29 10.5 -53.5t29.5 -42.5t44 -28.5t54 -10.5t54.5 10.5t44 28.5t29.5 42.5t11 53.5q0 28 -11 52.5t-29.5 43t-44 29.5t-54.5 11t-54 -11t-44 -29.5t-29.5 -43 +t-10.5 -52.5zM733 524q0 -29 10.5 -53.5t29.5 -42.5t44 -28.5t54 -10.5t54.5 10.5t44 28.5t29.5 42.5t11 53.5q0 28 -11 52.5t-29.5 43t-44 29.5t-54.5 11t-54 -11t-44 -29.5t-29.5 -43t-10.5 -52.5z" /> + <glyph glyph-name="Pi" unicode="Π" horiz-adv-x="1440" +d="M913 1131h-369v-1089q0 -42 -47 -42h-303q-44 0 -44 42v1397q0 46 44 46h1066q17 0 32 -12t15 -32v-1397q0 -44 -47 -44h-303q-44 0 -44 44v1087z" /> + <glyph glyph-name="Omicrontonos" unicode="Ό" horiz-adv-x="1791" +d="M542 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM156 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM32 1115q-20 2 -33 12.5t-13 31.5l-33 295 +q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Omicron" unicode="Ο" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5z" /> + <glyph glyph-name="Xi" unicode="Ξ" horiz-adv-x="1335" +d="M1177 1485q44 0 44 -44v-263q0 -47 -46 -47h-1026q-46 0 -46 47v263q0 44 44 44h1030zM147 0q-44 0 -44 44v263q0 47 46 47h1026q46 0 46 -47v-263q0 -44 -44 -44h-1030zM294 859q0 25 13 35.5t31 10.5h648q18 0 31 -10.5t13 -35.5v-233q0 -25 -13 -35.5t-31 -10.5h-648 +q-18 0 -31 10.5t-13 35.5v233z" /> + <glyph glyph-name="Nu" unicode="Ν" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398z" /> + <glyph glyph-name="Mu" unicode="Μ" horiz-adv-x="1844" +d="M218 1441q2 18 14 31t34 13h346q37 0 48 -38l272 -908l274 908q14 38 51 38h342q18 0 32.5 -12.5t16.5 -31.5q35 -352 71.5 -698.5t71.5 -698.5v-5q0 -39 -44 -39h-283q-46 0 -48 44l-87 773l-225 -778q-2 -10 -14.5 -24t-24.5 -14h-263q-12 0 -25.5 13.5t-14.5 24.5 +l-225 776l-87 -771q-2 -44 -49 -44h-283q-43 0 -43 44z" /> + <glyph glyph-name="Lambda" unicode="Λ" horiz-adv-x="1531" +d="M921.035 1464q10.999 -17.999 19.498 -36.9971q8.5 -18.999 16.499 -38.998l512.969 -1342.92q0 -5 1.5 -9q1.5 -3.99902 1.5 -7.99902q0 -27.998 -36.9971 -27.998h-321.98q-37.998 0 -51.9971 37.9971l-304.981 909.945q-40.998 -113.993 -78.4951 -227.486 +q-37.498 -113.493 -73.9961 -227.486q-36.4971 -113.993 -73.9951 -227.486t-78.4951 -227.486q-13.999 -37.9971 -54.9971 -37.9971h-314.98q-22.998 0 -32.498 8.49902q-9.49902 8.5 -9.49902 22.499q0 7.99902 1 10.999v3l515.968 1342.92q5 13.999 12 30.998 +q6.99902 16.999 15.999 31.498q8.99902 14.499 20.998 24.499q12 9.99902 26.999 9.99902h246.984q30.998 0 40.998 -20.999z" /> + <glyph glyph-name="Kappa" unicode="Κ" horiz-adv-x="1529" +d="M159 1441q0 18 11.5 31t32.5 13h296q15 0 31.5 -12t16.5 -32v-545q109 140 214 276t213 276q11 17 28.5 27.5t34.5 10.5h380q24 0 24 -15q0 -10 -11 -24l-471 -621l521 -784q11 -17 11 -27q0 -15 -22 -15h-378q-17 0 -33.5 10t-27.5 27q-53 72 -96.5 138t-84.5 131.5 +t-83 132.5t-92 141l-127 -146v-390q0 -44 -48 -44h-295q-45 0 -45 44v1397z" /> + <glyph glyph-name="Iotadieresis" unicode="Ϊ" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM-19 2192q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM417 2192q0 42 44 42h193q42 0 42 -42v-189 +q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Theta" unicode="Θ" horiz-adv-x="1718" +d="M458 878q-46 0 -46 -44v-184q0 -48 46 -48h819q20 0 32 15t12 33v184q0 21 -13 32.5t-31 11.5h-819zM478 742q0 82 28 154.5t78.5 126.5t119.5 85t152 31t152.5 -31t120 -85t78.5 -126.5t28 -154.5q0 -83 -28 -155t-78.5 -125.5t-120 -84t-152.5 -30.5t-152 30.5 +t-119.5 84t-78.5 125.5t-28 155zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27 +t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5z" /> + <glyph glyph-name="Etatonos" unicode="Ή" horiz-adv-x="1785" +d="M348 1441q1 17 12.5 30.5t30.5 13.5h297q15 0 31 -12.5t16 -31.5v-474h497v474q0 18 12.5 31t32.5 13h293q20 0 35 -10t15 -32v-1399q0 -22 -13 -33t-34 -11h-296q-20 0 -32.5 11t-12.5 33v568h-497v-568q0 -21 -13.5 -32.5t-36.5 -11.5h-294q-42 0 -43 39v1402zM49 1115 +q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Eta" unicode="Η" horiz-adv-x="1602" +d="M165 1441q1 17 12.5 30.5t30.5 13.5h297q15 0 31 -12.5t16 -31.5v-474h497v474q0 18 12.5 31t32.5 13h293q20 0 35 -10t15 -32v-1399q0 -22 -13 -33t-34 -11h-296q-20 0 -32.5 11t-12.5 33v568h-497v-568q0 -21 -13.5 -32.5t-36.5 -11.5h-294q-42 0 -43 39v1402z" /> + <glyph glyph-name="Zeta" unicode="Ζ" horiz-adv-x="1452" +d="M108 1441q0 20 12.5 32t34.5 12h1161q19 0 32.5 -11t13.5 -33v-202q0 -8 -0.5 -15t-5.5 -18l-724 -863h687q19 0 32 -11t13 -34v-249q0 -17 -12.5 -33t-32.5 -16h-1161q-20 0 -33.5 13t-13.5 36v215q0 16 7 26l722 851h-685q-22 0 -34.5 11.5t-12.5 37.5v251z" /> + <glyph glyph-name="Epsilontonos" unicode="Έ" horiz-adv-x="1603" +d="M411 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M86 1113q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Epsilon" unicode="Ε" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z" /> + <glyph glyph-name="Delta" unicode="Δ" horiz-adv-x="1531" +d="M592 1464q10 21 41 21h247q15 0 27 -10t21 -24.5t16 -31.5t12 -31l516 -1343v-3q1 -3 1 -11q0 -14 -9.5 -22.5t-32.5 -8.5h-1354q-37 0 -37 28q0 4 1.5 8t1.5 9l513 1343q8 20 16.5 39t19.5 37zM530 313h450q-57 171 -110 337.5t-114 337.5z" /> + <glyph glyph-name="Gamma" unicode="Γ" horiz-adv-x="1179" +d="M126 44.0879q0 -17.999 12 -30.998t33 -12.999h296q17 0 31 11.999t15 31.998v1087.93h550q18 0 31 11.999q13 12 13 32.998v262.984q0 16.999 -11.5 30.998t-32.5 14.999h-893q-44 0 -44 -43.9971v-1397.92z" /> + <glyph glyph-name="Beta" unicode="Β" horiz-adv-x="1410" +d="M160 1439q0 21 11.5 33.5t32.5 12.5h664q88 0 166 -33.5t136.5 -92t92.5 -137t34 -168.5q0 -75 -23.5 -139.5t-66.5 -115.5q72 -66 114 -157t42 -193q0 -91 -35 -172.5t-94.5 -143t-139 -97.5t-167.5 -36h-723q-20 0 -32 10.5t-12 32.5v1396zM966 464q0 30 -11.5 60 +t-32 53.5t-49 38.5t-61.5 15h-264v-334h264q33 0 61 14t49 37.5t32.5 53.5t11.5 62zM913 1045q0 30 -11 56t-31 46t-48 31.5t-61 11.5h-214v-290h211q34 0 62.5 10.5t48.5 30t31.5 46t11.5 58.5z" /> + <glyph glyph-name="Alphatonos" unicode="Ά" horiz-adv-x="1533" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM171 1115q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Alpha" unicode="Α" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307z" /> + <glyph glyph-name="anoteleia" unicode="·" horiz-adv-x="455" + /> + <glyph glyph-name="dieresistonos" unicode="΅" horiz-adv-x="860" + /> + <glyph glyph-name="tonos" unicode="΄" horiz-adv-x="517" +d="M193 1113q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="litre" unicode="ℓ" horiz-adv-x="843" +d="M759 984q0 -48 -12.5 -89t-39.5 -84t-69 -93.5t-101 -117.5l-89 -105q-29 -34 -38 -58t-9 -44q0 -60 11 -95t45 -41h5q43 0 69.5 -23t26.5 -65v-102q0 -79 -97 -88q-68 7 -131 35t-111.5 73.5t-77.5 108.5t-29 140v585q0 89 20 160.5t61 122t104 77.5t150 27 +q72 0 130 -26.5t98.5 -71.5t62 -103.5t21.5 -122.5zM474 988q0 20 -9.5 33t-25.5 18q-42 -9 -42 -64v-123l3 2q21 24 35 41.5t23 32.5t12.5 29t3.5 31z" /> + <glyph glyph-name="uni037E" unicode=";" horiz-adv-x="528" + /> + <glyph glyph-name="uni021B" unicode="ț" horiz-adv-x="859" +d="M197 1468q0 31 20.5 46.5t58.5 29.5l227 79q5 1 9.5 1h8.5q37 0 49.5 -21.5t12.5 -56.5l-1 -315h167q32 0 52 -19t20 -57v-193q0 -42 -20 -61.5t-52 -19.5h-167l1 -804q0 -38 -22 -57.5t-61 -19.5h-226q-77 0 -77 77l-1 804h-73q-77 0 -77 81v193q0 76 77 76h73z" /> + <glyph glyph-name="uni02C9" unicode="ˉ" horiz-adv-x="981" + /> + <glyph glyph-name="uni021A" unicode="Ț" horiz-adv-x="1267" +d="M67 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249z" /> + <glyph glyph-name="Rho" unicode="Ρ" horiz-adv-x="1330" +d="M142 1439q0 21 11 33.5t33 12.5h639q69 0 130 -19t112 -52.5t92 -80t69.5 -100.5t43.5 -113.5t15 -120.5q0 -90 -32.5 -176t-92.5 -153t-144 -108.5t-186 -42.5h-303v-476q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM895 1001q0 30 -10.5 60t-30.5 53.5 +t-48.5 38.5t-64.5 15h-212v-334h212q36 0 65 14.5t48.5 37.5t30 53t10.5 62z" /> + <glyph glyph-name="Sigma" unicode="Σ" horiz-adv-x="1280" +d="M81 1211v228q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-578l317 -398l-317 -399h602q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v237l378 461z" /> + <glyph glyph-name="Tau" unicode="Τ" horiz-adv-x="1332" +d="M80 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249z" /> + <glyph glyph-name="Upsilon" unicode="Υ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5z" /> + <glyph glyph-name="Upsilondieresis" unicode="Ϋ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM333 2191q0 42 42 42 +h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM769 2191q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Upsilontonos" unicode="Ύ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM591 1621 +q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Phi" unicode="Φ" horiz-adv-x="1692" +d="M658 106q-113 25 -213 82.5t-174.5 138.5t-117.5 181t-43 210q0 115 40 218t112 184.5t173 136.5t223 75v20q0 35 23.5 60.5t74.5 25.5h92q19 0 37.5 -6.5t32 -18t22 -27t8.5 -34.5v-20q116 -25 217 -82.5t175.5 -138.5t117 -182t42.5 -213q0 -116 -40 -219.5 +t-112.5 -184.5t-174 -135.5t-225.5 -72.5v-18q0 -86 -100 -86h-92q-51 0 -74.5 20.5t-23.5 65.5v20zM1206 718q0 62 -18.5 116t-52 97.5t-81.5 75.5t-106 49v-674q59 17 107 48t81.5 73.5t51.5 96.5t18 118zM402 718q0 -127 67.5 -214t188.5 -122v670q-55 -18 -101.5 -50 +t-81 -75.5t-54 -96.5t-19.5 -112z" /> + <glyph glyph-name="Chi" unicode="Χ" horiz-adv-x="1342" +d="M16 26q8 15 16.5 30.5t19.5 31.5l450 672q-115 173 -227.5 342t-227.5 342q-6 8 -9.5 15t-4.5 15q2 8 11.5 7.5t19.5 4.5h348q37 0 58 -38l245 -368l248 368q21 38 58 38h314h19t20.5 -0.5t16.5 -3.5t7 -9q0 -12 -11 -26l-460 -687l469 -700q10 -14 15.5 -25.5t4.5 -19.5 +q0 -15 -18 -15h-358q-17 0 -31 10t-22 27l-272 403l-269 -403q-8 -17 -22 -27t-31 -10h-341h-18q-8 0 -14 4.5t-6 12.5q0 5 2 9z" /> + <glyph glyph-name="alpha" unicode="α" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122z" /> + <glyph glyph-name="alphatonos" unicode="ά" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM532 1113q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5 +t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="Iotatonos" unicode="Ί" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM287 1680q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140v0z" /> + <glyph glyph-name="partialdiff" unicode="∂" horiz-adv-x="1120" + /> + <glyph glyph-name="Nacute" unicode="Ń" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398zM725 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Sacute" unicode="Ś" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18zM619 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="wcircumflex" unicode="ŵ" horiz-adv-x="1926" +d="M40 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -118.5t43 -133.5t44.5 -135t40.5 -123.5t33 -98.5t21.5 -60l212 669q13 32 29.5 43t46.5 11h237q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-110 -269q7 -17 27 -57.5t45.5 -92t52 -108t44.5 -105.5 +l245 664q13 32 26.5 43t40.5 11h221q48 0 66 -18t2 -68l-469 -1141q-9 -18 -27.5 -30.5t-53.5 -12.5h-105q-39 0 -57 12.5t-29 32.5l-186 454l-183 -456q-11 -18 -26 -30.5t-45 -12.5h-119q-40 0 -56.5 11.5t-24.5 31.5zM947 1764q7 5 11 7t11 2q8 0 20 -9l257 -256 +q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="wdieresis" unicode="ẅ" horiz-adv-x="1926" +d="M40 1171q-20 41 -7.5 70t59.5 29h256q26 0 45.5 -14t27.5 -40q17 -53 37.5 -118.5t43 -133.5t44.5 -135t40.5 -123.5t33 -98.5t21.5 -60l212 669q13 32 29.5 43t46.5 11h237q29 0 44 -7t20 -19t2 -27.5t-10 -32.5l-110 -269q7 -17 27 -57.5t45.5 -92t52 -108t44.5 -105.5 +l245 664q13 32 26.5 43t40.5 11h221q48 0 66 -18t2 -68l-469 -1141q-9 -18 -27.5 -30.5t-53.5 -12.5h-105q-39 0 -57 12.5t-29 32.5l-186 454l-183 -456q-11 -18 -26 -30.5t-45 -12.5h-119q-40 0 -56.5 11.5t-24.5 31.5zM604 1672q0 42 42 42h196q14 0 27.5 -11t13.5 -31 +v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM1040 1672q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="lcaron" unicode="ľ" horiz-adv-x="881" +d="M141 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494zM601.088 1672.31q0 17.9385 9.875 28.7012t29.624 10.7627h236.994q15.2607 0 28.7266 -10.7627t13.4658 -28.7012 +v-257.414q0 -84.3096 -43.9883 -159.201q-43.9873 -74.8926 -125.678 -120.635q-2.69336 -2.69043 -12.5684 -2.69043q-12.5684 0 -20.1982 3.13867q-7.63086 3.13965 -12.1191 9.41797l-61.9414 51.124q-9.875 7.1748 -13.0166 14.7988q-3.14258 7.62402 -3.14258 14.7988 +q0 11.6602 12.1191 23.3203q12.1191 11.6592 26.9316 26.458q14.8115 14.7998 26.9307 34.083t12.1191 46.1914v39.4639q0 17.041 -16.1592 18.835h-51.1689q-36.8057 1.79395 -36.8057 39.4639v218.847z" /> + <glyph glyph-name="lcommaaccent" unicode="ļ" horiz-adv-x="620" +d="M125 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494zM152 -225q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1 +q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="commaaccent" horiz-adv-x="578" +d="M127 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="undercommaaccent" horiz-adv-x="265" +d="M109 57q0 20 11.5 32t32.5 12h264q17 0 32 -12t15 -32v-287q0 -47 -12.5 -92t-36.5 -85.5t-59.5 -75t-80.5 -59.5q-2 -3 -14 -3q-14 0 -22 3.5t-14 10.5l-68 57q-11 8 -15 16.5t-4 16.5q0 13 13.5 26t30 29.5t30 38t13.5 51.5v44q0 18 -18 21h-57q-41 2 -41 44v244z" /> + <glyph glyph-name="rcommaaccent" unicode="ŗ" horiz-adv-x="1151" +d="M117 1196q0 17 7.5 32.5t18.5 24.5q26 17 54 17h151q19 0 30 -7t18.5 -18t13 -25t13.5 -28q2 -4 8 -19.5t13 -34t13.5 -35t8.5 -21.5q30 33 57.5 69.5t58.5 67.5t69 51t90 20q54 0 96.5 -8t80.5 -23.5t75.5 -39.5t81.5 -56q69 -37 26 -110l-91 -155q-20 -30 -49 -37 +t-63 9q-43 42 -87.5 62.5t-101.5 20.5q-39 0 -68.5 -11t-53.5 -31t-45 -48t-42 -62v-724q0 -38 -18.5 -57.5t-61.5 -19.5h-225q-78 0 -78 77v1119zM129 -225q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1 +q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="tcommaaccent" unicode="ţ" horiz-adv-x="846" +d="M197 1468q0 31 20.5 46.5t58.5 29.5l227 79q5 1 9.5 1h8.5q37 0 49.5 -21.5t12.5 -56.5l-1 -315h167q32 0 52 -19t20 -57v-193q0 -42 -20 -61.5t-52 -19.5h-167l1 -804q0 -38 -22 -57.5t-61 -19.5h-226q-77 0 -77 77l-1 804h-73q-77 0 -77 81v193q0 76 77 76h73z +M227 -225q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="Tcommaaccent" unicode="Ţ" horiz-adv-x="1332" +d="M80 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249zM511 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5 +t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="Kcommaaccent" unicode="Ķ" horiz-adv-x="1505" +d="M159 1441q0 18 11.5 31t32.5 13h296q15 0 31.5 -12t16.5 -32v-545q109 140 214 276t213 276q11 17 28.5 27.5t34.5 10.5h380q24 0 24 -15q0 -10 -11 -24l-471 -621l521 -784q11 -17 11 -27q0 -15 -22 -15h-378q-17 0 -33.5 10t-27.5 27q-53 72 -96.5 138t-84.5 131.5 +t-83 132.5t-92 141l-127 -146v-390q0 -44 -48 -44h-295q-45 0 -45 44v1397zM567 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34 +t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="scommaaccent" unicode="ș" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34zM398 -225q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159 +t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="estimated" unicode="℮" horiz-adv-x="1431" +d="M1194 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM713 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14z" /> + <glyph glyph-name="k.alt" horiz-adv-x="1413" +d="M120 1202q0 17 1 31t8.5 24t23.5 15.5t45 5.5h239q19 0 31.5 -6.5t20 -16.5t10 -21.5t2.5 -21.5v-371l360 400q26 29 62 29h307q55 0 55 -43q0 -11 -3.5 -18t-14.5 -20l-411 -434l517 -664h-2q13 -13 18.5 -26.5t5.5 -24.5q0 -23 -12.5 -31.5t-37.5 -8.5h-338 +q-17 0 -32 13t-33 39l-327 463l-111 -115v-323q0 -8 -2.5 -21t-10 -25.5t-20.5 -21.5t-34 -9h-251q-18 0 -31 9.5t-20.5 21.5t-11 22.5t-3.5 12.5v1136z" /> + <glyph glyph-name="six" unicode="6" horiz-adv-x="1238" +d="M96 428q-2 17 -3 34.5t-1 34.5q0 132 64 244q1 1 3.5 5t14 24t35.5 62.5t67.5 120t110 196.5t163.5 292q11 21 26 32.5t40 11.5h284q39 0 39 -23q0 -4 -2 -13.5t-4 -11.5q-35 -62 -61.5 -108.5t-48 -84t-39 -68.5t-34 -60t-33.5 -59.5t-37 -66.5q96 -11 180 -53.5 +t146 -109.5t97.5 -153.5t35.5 -185.5q0 -106 -41 -198.5t-112 -161t-166.5 -108t-204.5 -39.5q-101 0 -190.5 32.5t-159.5 91.5t-114.5 141.5t-54.5 181.5zM442 485q0 -40 12 -74t34 -59t53 -39t70 -14t70.5 14t53 39t33.5 59t12 74q0 39 -12 73t-33.5 59.5t-53 40.5 +t-70.5 15t-70 -15t-53 -40.5t-34 -59.5t-12 -73z" /> + <glyph glyph-name="three" unicode="3" horiz-adv-x="1199" +d="M548 640q-18 0 -30.5 8.5t-12.5 30.5q0 55 0.5 109.5t0.5 111.5q0 43 43 43q31 0 52 12t33 29.5t17 38t5 38.5q0 13 -2.5 34.5t-12.5 42t-31 35.5t-57 15q-31 0 -51 -10t-31 -27.5t-15.5 -40t-4.5 -46.5h-3l1 -1q0 -41 -43 -41h-30h-87.5t-87.5 1q-18 0 -31 11t-13 33 +l1 1h-2q0 114 34 195.5t91 133.5t132.5 76.5t159.5 24.5q83 0 158.5 -31.5t132.5 -87t91 -130t34 -160.5q0 -78 -29 -141.5t-77 -111.5q46 -32 87 -66.5t71.5 -77.5t48.5 -99t18 -131q0 -103 -41.5 -191.5t-112.5 -153.5t-166.5 -102t-203.5 -37q-68 0 -133.5 8t-123.5 29 +t-106.5 58t-84 94.5t-55 138.5t-19.5 191q1 18 11.5 29.5t34.5 16.5h241q13 0 28 -11.5t15 -32.5q-1 -1 -2 -1h2q0 -107 49 -154.5t135 -47.5q37 0 68 11t53.5 32.5t35 55t12.5 78.5q0 85 -45.5 126t-147.5 41h-4z" /> + <glyph glyph-name="four" unicode="4" horiz-adv-x="1317" +d="M89 224q-29 0 -42 17t-13 38q0 28 17 51l650 1129q10 17 22.5 21.5t43.5 4.5h271q15 -1 31 -13t16 -31v-874h120q20 0 33.5 -11t13.5 -35v-250q0 -17 -13.5 -31.5t-33.5 -14.5h-120v-181q0 -44 -48 -44h-271q-44 0 -44 44v180h-633zM737 564v344l-202 -344h202z" /> + <glyph glyph-name="five" unicode="5" horiz-adv-x="1209" +d="M73 415q1 25 32 28l241 58q3 1 11 1q11 0 15 -5t11 -12q1 -26 18.5 -56.5t44 -57.5t59.5 -45t66 -18q34 0 67.5 10t59.5 31.5t42 56t16 83.5q0 40 -16.5 75.5t-45 62t-65.5 41.5t-79 15q-14 0 -25.5 -2t-20.5 -5q-40 -6 -75.5 -12t-80.5 -3h-174q-26 0 -41 11t-17 43 +q18 183 36 361t35 360q0 51 48 51h666q2 0 4 -0.5t5 -0.5h80q48 0 48 -50q0 -60 -0.5 -118.5t-0.5 -118.5q0 -20 -13 -35t-37 -15h-492l-15 -162q28 5 59 7.5t59 2.5q115 0 208.5 -42.5t160 -112t102.5 -159.5t36 -186q0 -110 -44 -204.5t-117 -164.5t-169 -109.5 +t-199 -39.5v1q-94 0 -175 31.5t-144.5 85.5t-108.5 126t-68 153q-3 10 -5 20t-2 19z" /> + <glyph glyph-name="Oacute" unicode="Ó" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM789 1887q5 23 20.5 32.5t32.5 9.5h258 +q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Amacron" unicode="Ā" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM342 1840q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="Aogonek" unicode="Ą" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM1412 22q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5 +q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="Aring" unicode="Å" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM764 1984q43 0 81.5 -16.5t67.5 -45.5t45.5 -67.5t16.5 -81.5q0 -44 -16.5 -82t-45.5 -66.5t-67.5 -44.5t-81.5 -16q-44 0 -82 16t-66.5 44.5t-44.5 66.5t-16 82q0 43 16 81.5t44.5 67.5 +t66.5 45.5t82 16.5zM765 1834q-26 0 -42 -17t-16 -43t16 -42t42 -16t43 16t17 42t-17 43t-43 17z" /> + <glyph glyph-name="Atilde" unicode="Ã" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM419 1801q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90 +q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="AEacute" unicode="Ǽ" horiz-adv-x="2202" +d="M840 1446q8 13 25.5 26t37.5 13h1097q23 0 34.5 -13t11.5 -35v-248q0 -17 -12 -32.5t-35 -15.5h-707l47 -252h271.5t271.5 1q19 0 31.5 -10t12.5 -30v-216q0 -14 -11 -27t-32 -13h-494l46 -250h604q24 0 34.5 -11.5t10.5 -34.5v-252q0 -20 -14 -33t-34 -13h-885 +q-41 0 -48 37q-9 51 -17.5 101.5t-16.5 101.5h-520l-114 -203q-22 -37 -59 -37h-315q-32 0 -32 21q0 6 5 19q121 216 322.5 567t483.5 839zM727 561h296l-70 398zM976 1885q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32 +t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Dcaron" unicode="Ď" horiz-adv-x="1547" +d="M1447 741q0 -106 -27 -201.5t-77 -178t-119.5 -149.5t-154 -114t-182.5 -72.5t-203 -25.5h-493q-18 0 -32 8t-14 34v1397q0 21 11.5 34t34.5 13h493q105 0 202.5 -26t182 -74t154.5 -115t119.5 -150t77 -179t27.5 -201zM532 1127v-769h84q23 0 45 1.5t44 3.5 +q75 6 140 36.5t113.5 80t76 116.5t27.5 146q0 84 -31.5 154.5t-85.5 122t-126.5 80t-154.5 28.5h-132zM707 1585q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87 +q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Edotaccent" unicode="Ė" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M554 1885q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="Emacron" unicode="Ē" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M267 1841q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="Eogonek" unicode="Ę" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M894 12q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31 +t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="Hcircumflex" unicode="Ĥ" horiz-adv-x="1602" +d="M165 1441q1 17 12.5 30.5t30.5 13.5h297q15 0 31 -12.5t16 -31.5v-474h497v474q0 18 12.5 31t32.5 13h293q20 0 35 -10t15 -32v-1399q0 -22 -13 -33t-34 -11h-296q-20 0 -32.5 11t-12.5 33v568h-497v-568q0 -21 -13.5 -32.5t-36.5 -11.5h-294q-42 0 -43 39v1402z +M781 1986q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Iacute" unicode="Í" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM279 1888q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Ibreve" unicode="Ĭ" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM350 1608q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5 +t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Icircumflex" unicode="Î" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM334 1986q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87 +q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Idotaccent" unicode="İ" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM180 1894q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="Igrave" unicode="Ì" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM481 1680q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Imacron" unicode="Ī" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM-70 1840q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="Iogonek" unicode="Į" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM491 7q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50 +t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="Itilde" unicode="Ĩ" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM6 1802q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90 +q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="Jcircumflex" unicode="Ĵ" horiz-adv-x="903" +d="M350 1445q0 37 39 40h295q54 0 54 -52v-1370q0 -99 -39.5 -185.5t-106.5 -151t-155.5 -101.5t-186.5 -37q-58 0 -114 13t-106.5 38.5t-94 63t-76.5 86.5q-3 1 -3 16q0 26 16 38l174 163q8 7 17 11.5t17 4.5q15 0 28.5 -11t30 -24.5t38.5 -24.5t53 -11q23 0 45 9t38.5 24 +t26.5 35.5t10 43.5v1382zM501 1980q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Gcommaaccent" unicode="Ģ" horiz-adv-x="1502" +d="M1098 1066q-51 36 -109 56t-124 20q-83 0 -152 -31.5t-118.5 -85.5t-77.5 -126.5t-28 -154.5t28 -154t77.5 -125.5t118.5 -84.5t152 -31q35 0 69.5 5t73.5 13v262q0 19 11 31.5t33 12.5h272q15 0 32 -12t17 -32v-484q0 -27 -29 -44q-47 -32 -104 -55t-119 -38 +t-125.5 -22.5t-123.5 -7.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5q17 -10 26 -26.5t-4 -37.5l-162 -234q-13 -16 -26 -21.5t-35 8.5z +M708 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="Lcaron" unicode="Ľ" horiz-adv-x="1179" +d="M126 1442q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-1088h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44v1398zM762 1443q0 20 11 32t33 12h264q17 0 32 -12t15 -32v-287q0 -94 -49 -177.5t-140 -134.5q-3 -3 -14 -3q-14 0 -22.5 3.5 +t-13.5 10.5l-69 57q-11 8 -14.5 16.5t-3.5 16.5q0 13 13.5 26t30 29.5t30 38t13.5 51.5v44q0 19 -18 21h-57q-41 2 -41 44v244z" /> + <glyph glyph-name="Lcommaaccent" unicode="Ļ" horiz-adv-x="1179" +d="M126 1442q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-1088h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44v1398zM483 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1 +q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="Ldot" unicode="Ŀ" horiz-adv-x="1179" +d="M126 1442q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-1088h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44v1398zM806 946q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="Obreve" unicode="Ŏ" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM856 1620q-59 1 -109 22.5t-87 56.5 +t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Ocircumflex" unicode="Ô" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM846 1986q7 5 11 7t11 2q8 0 20 -9 +l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Ograve" unicode="Ò" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM971 1681q2 -9 5 -22t3 -24t-5.5 -19 +t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Ohungarumlaut" unicode="Ő" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM587 1885q19 42 53 42h212q17 0 24.5 -6 +t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20zM1039 1885q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20z" /> + <glyph glyph-name="Omacron" unicode="Ō" horiz-adv-x="1758" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM445 1841q0 35 35 35h779q15 0 25 -8.5 +t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="Oslashacute" unicode="Ǿ" horiz-adv-x="1721" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q38 0 74 -3.5t72 -10.5l32 71q8 18 23.5 31t40.5 13h277q20 0 35.5 -8t15.5 -23q0 -11 -2 -13l-99 -218q67 -53 122 -119.5t93.5 -143.5t59.5 -163.5t21 -178.5q0 -106 -27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-76 0 -148 15l-35 -79 +q-11 -25 -21 -34.5t-31 -9.5h-300q-41 0 -41 26q0 2 1 4l3 14l102 225q-67 52 -121.5 118.5t-92.5 143t-59 162.5t-21 178zM774 1928q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8 +t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Otilde" unicode="Õ" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM519 1807q19 27 45 49t56 37.5t62 23.5 +t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8 +t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="Racute" unicode="Ŕ" horiz-adv-x="1407" +d="M163 1439q0 21 11 33.5t33 12.5h646q103 0 193 -38.5t157 -104.5t105.5 -154.5t38.5 -188.5q0 -68 -18.5 -129.5t-51.5 -115t-78.5 -97t-99.5 -74.5l257 -484q7 -14 18 -33t11 -33q0 -16 -10.5 -24.5t-28.5 -8.5h-343q-17 0 -30.5 10t-17.5 27l-243 457h-162v-451 +q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM946 995q0 30 -11 60t-31 55t-48 42t-62 22q-28 2 -52.5 3.5t-53.5 1.5h-138v-367h184q18 0 32 1t31 3q35 4 63 20.5t47 41t29 55t10 62.5zM615 1888q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5 +t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Rcaron" unicode="Ř" horiz-adv-x="1407" +d="M163 1439q0 21 11 33.5t33 12.5h646q103 0 193 -38.5t157 -104.5t105.5 -154.5t38.5 -188.5q0 -68 -18.5 -129.5t-51.5 -115t-78.5 -97t-99.5 -74.5l257 -484q7 -14 18 -33t11 -33q0 -16 -10.5 -24.5t-28.5 -8.5h-343q-17 0 -30.5 10t-17.5 27l-243 457h-162v-451 +q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM946 995q0 30 -11 60t-31 55t-48 42t-62 22q-28 2 -52.5 3.5t-53.5 1.5h-138v-367h184q18 0 32 1t31 3q35 4 63 20.5t47 41t29 55t10 62.5zM719 1581q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90 +q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Rcommaaccent" unicode="Ŗ" horiz-adv-x="1421" +d="M163 1439q0 21 11 33.5t33 12.5h646q103 0 193 -38.5t157 -104.5t105.5 -154.5t38.5 -188.5q0 -68 -18.5 -129.5t-51.5 -115t-78.5 -97t-99.5 -74.5l257 -484q7 -14 18 -33t11 -33q0 -16 -10.5 -24.5t-28.5 -8.5h-343q-17 0 -30.5 10t-17.5 27l-243 457h-162v-451 +q0 -43 -46 -43h-297q-20 0 -32 10.5t-12 32.5v1396zM946 995q0 30 -11 60t-31 55t-48 42t-62 22q-28 2 -52.5 3.5t-53.5 1.5h-138v-367h184q18 0 32 1t31 3q35 4 63 20.5t47 41t29 55t10 62.5zM555 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257 +q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="Scaron" unicode="Š" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18zM691 1604q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Scedilla" unicode="Ş" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18zM800 0q-22 -15 -22 -35q0 -16 15.5 -29.5t38 -28t49.5 -31t49.5 -38t38 -49t15.5 -64.5q0 -36 -24.5 -77t-69 -81t-106.5 -74.5t-138 -57.5h-5q-15 0 -33 22t-34 50t-27 54.5t-11 35.5q0 16 11 22q171 43 171 106q0 22 -15 39t-37.5 32.5 +t-48.5 31t-48.5 33.5t-37.5 40t-15 51q0 11 3 22.5t17 25.5h264z" /> + <glyph glyph-name="Scircumflex" unicode="Ŝ" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18zM644 1980q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Scommaaccent" unicode="Ș" horiz-adv-x="1312" +d="M348 479q17 -14 43.5 -37.5t60.5 -46.5q51 -34 101 -53t105 -19q51 0 85.5 11.5t54.5 30.5t28.5 44t8.5 53q0 31 -23.5 55.5t-57.5 43.5t-71 32.5t-64 22.5q-120 42 -210 90.5t-150 108t-90 131t-30 159.5q0 93 37.5 169t107 130t167.5 83.5t219 29.5q91 0 174.5 -20.5 +t164.5 -65.5q34 -20 64.5 -41.5t53.5 -41.5t36.5 -38t13.5 -31t-6.5 -24t-19.5 -25l-153 -163q-17 -17 -34 -17q-14 0 -25.5 8t-25.5 20l-9 8q-20 17 -44.5 35t-52.5 32.5t-59 24t-63 9.5q-33 0 -62 -5.5t-51 -17.5t-35 -31.5t-13 -47.5t14 -48.5t42 -38t69.5 -33 +t96.5 -33.5q106 -35 195.5 -73.5t154.5 -91t101.5 -125.5t36.5 -177q0 -110 -45 -199.5t-123.5 -152.5t-184.5 -97.5t-228 -34.5q-115 0 -226 41t-207 110q-40 29 -67.5 57t-43.5 45l-3 3q-1 2 -2 2.5t-2 1.5q-1 2 -2 2.5t-2 1.5q-23 25 -23 40q0 17 23 38l173 165 +q21 15 34 15q9 0 19 -6t24 -18zM478 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39 +v219z" /> + <glyph glyph-name="Tcaron" unicode="Ť" horiz-adv-x="1332" +d="M80 1441q0 20 13.5 32t33.5 12h1077q18 0 32 -11t16 -33v-249q0 -18 -12.5 -34.5t-35.5 -16.5h-345v-1094q0 -18 -13 -32.5t-34 -14.5h-294q-17 0 -32 13.5t-15 33.5v1094h-344q-20 0 -33.5 13t-13.5 38v249zM688 1598q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256 +q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Uacute" unicode="Ú" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM723 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Ubreve" unicode="Ŭ" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM777 1605q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27 +q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Ucircumflex" unicode="Û" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM764 1984q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13 +t6.5 9z" /> + <glyph glyph-name="Ugrave" unicode="Ù" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM962 1680q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Uhungarumlaut" unicode="Ű" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM496 1877q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20zM948 1877q19 42 53 42h212q17 0 24.5 -6t8.5 -15 +t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20z" /> + <glyph glyph-name="Umacron" unicode="Ū" horiz-adv-x="1504" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM350 1840q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="Uogonek" unicode="Ų" horiz-adv-x="1504" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM898 0q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5 +t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="Uring" unicode="Ů" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM779 1983q43 0 81.5 -16.5t67.5 -45.5t45.5 -67.5t16.5 -81.5q0 -44 -16.5 -82t-45.5 -66.5t-67.5 -44.5t-81.5 -16q-44 0 -82 16t-66.5 44.5t-44.5 66.5t-16 82q0 43 16 81.5t44.5 67.5t66.5 45.5t82 16.5z +M780 1833q-26 0 -42 -17t-16 -43t16 -42t42 -16t43 16t17 42t-17 43t-43 17z" /> + <glyph glyph-name="Utilde" unicode="Ũ" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM442 1801q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21 +l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="Wacute" unicode="Ẃ" horiz-adv-x="2156" +d="M571 21q-10 17 -19 35t-16 36q-129 340 -257 674t-257 674q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l306 -911l283 911q14 38 55 38h325q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-178 -510l134 -393l324 910q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5 +q0 -8 -1 -11v-3q-68 -176 -139 -351t-142.5 -350t-142 -350.5t-137.5 -350.5q-4 -11 -18 -24.5t-34 -13.5h-3h-242q-22 0 -33.5 8.5t-16.5 22.5l-158 416q-34 -91 -67 -178.5t-66 -178.5q-5 -14 -11.5 -29.5t-15.5 -29t-20.5 -22.5t-26.5 -9h-3h-242q-32 0 -42 21z +M1118 1887q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Wdieresis" unicode="Ẅ" horiz-adv-x="2156" +d="M571 21q-10 17 -19 35t-16 36q-129 340 -257 674t-257 674q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l306 -911l283 911q14 38 55 38h325q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-178 -510l134 -393l324 910q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5 +q0 -8 -1 -11v-3q-68 -176 -139 -351t-142.5 -350t-142 -350.5t-137.5 -350.5q-4 -11 -18 -24.5t-34 -13.5h-3h-242q-22 0 -33.5 8.5t-16.5 22.5l-158 416q-34 -91 -67 -178.5t-66 -178.5q-5 -14 -11.5 -29.5t-15.5 -29t-20.5 -22.5t-26.5 -9h-3h-242q-32 0 -42 21zM725 1885 +q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM1161 1885q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Wgrave" unicode="Ẁ" horiz-adv-x="2156" +d="M571 21q-10 17 -19 35t-16 36q-129 340 -257 674t-257 674q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l306 -911l283 911q14 38 55 38h325q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-178 -510l134 -393l324 910q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5 +q0 -8 -1 -11v-3q-68 -176 -139 -351t-142.5 -350t-142 -350.5t-137.5 -350.5q-4 -11 -18 -24.5t-34 -13.5h-3h-242q-22 0 -33.5 8.5t-16.5 22.5l-158 416q-34 -91 -67 -178.5t-66 -178.5q-5 -14 -11.5 -29.5t-15.5 -29t-20.5 -22.5t-26.5 -9h-3h-242q-32 0 -42 21z +M1274 1681q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Yacute" unicode="Ý" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM617 1888 +q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Ycircumflex" unicode="Ŷ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM685 1983q7 5 11 7 +t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Ydieresis" unicode="Ÿ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM352 1883q0 42 42 42 +h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM788 1883q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Ygrave" unicode="Ỳ" horiz-adv-x="1410" +d="M706 937l242 517q6 12 10 17.5t8 8t8.5 3t10.5 2.5h385q7 0 11.5 -4.5t4.5 -10.5q0 -11 -14 -25l-474 -839v-559q0 -47 -46 -47h-300q-20 0 -31 12.5t-11 34.5v561l-473 837q-13 13 -13 25q0 6 4 10.5t11 4.5h385q7 -2 11 -2.5t8 -3t8 -8t11 -17.5zM846 1681q2 -9 5 -22 +t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Zacute" unicode="Ź" horiz-adv-x="1432" +d="M108 1441q0 20 12.5 32t34.5 12h1161q19 0 32.5 -11t13.5 -33v-202q0 -8 -0.5 -15t-5.5 -18l-724 -863h687q19 0 32 -11t13 -34v-249q0 -17 -12.5 -33t-32.5 -16h-1161q-20 0 -33.5 13t-13.5 36v215q0 16 7 26l722 851h-685q-22 0 -34.5 11.5t-12.5 37.5v251zM631 1888 +q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Zcaron" unicode="Ž" horiz-adv-x="1432" +d="M108 1441q0 20 12.5 32t34.5 12h1161q19 0 32.5 -11t13.5 -33v-202q0 -8 -0.5 -15t-5.5 -18l-724 -863h687q19 0 32 -11t13 -34v-249q0 -17 -12.5 -33t-32.5 -16h-1161q-20 0 -33.5 13t-13.5 36v215q0 16 7 26l722 851h-685q-22 0 -34.5 11.5t-12.5 37.5v251zM785 1594 +q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Zdotaccent" unicode="Ż" horiz-adv-x="1432" +d="M108 1441q0 20 12.5 32t34.5 12h1161q19 0 32.5 -11t13.5 -33v-202q0 -8 -0.5 -15t-5.5 -18l-724 -863h687q19 0 32 -11t13 -34v-249q0 -17 -12.5 -33t-32.5 -16h-1161q-20 0 -33.5 13t-13.5 36v215q0 16 7 26l722 851h-685q-22 0 -34.5 11.5t-12.5 37.5v251zM599 1895 +q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="Ncaron" unicode="Ň" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398zM841 1577q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Ncommaaccent" unicode="Ņ" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398zM653 -253q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51 +q-37 1 -37 39v219z" /> + <glyph glyph-name="Ntilde" unicode="Ñ" horiz-adv-x="1639" +d="M165 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398zM473 1808q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31 +q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="questiondown" unicode="¿" horiz-adv-x="1122" +d="M388.181 616.16q0 38.9902 2.49902 61.9844q2.5 22.9941 9.99805 34.4922q7.49805 11.4971 21.9941 14.4961t38.4902 2.99902h233.943q21.9941 0 33.9922 -14.9961q11.9961 -14.9961 11.9961 -33.9912q0 -52.9873 -1.49902 -86.9795q-1.5 -33.9912 -4.49902 -55.9863 +q-2.99902 -21.9941 -7.99805 -35.9912q-4.99902 -13.9961 -12.9971 -26.9932q-27.9932 -44.9893 -62.9844 -77.9814q-34.9912 -32.9912 -70.9824 -59.9844q-35.9912 -26.9941 -69.9834 -50.9883q-33.9912 -23.9941 -60.9844 -51.4873q-26.9941 -27.4932 -42.9902 -61.9844 +q-15.9961 -34.4922 -15.9961 -81.4805q0 -31.9922 13.9971 -61.9854q13.9961 -29.9922 37.4902 -52.9863q23.4951 -22.9941 54.9873 -36.4912t65.4834 -13.4971q33.9922 0 64.9844 13.9971q30.9922 13.9961 54.9863 37.9902t37.9912 54.9873 +q13.9961 30.9922 13.9961 63.9844v22.9941q0 16.9961 11.9971 24.4941t29.9932 9.49707q17.9951 2 38.4902 1t36.4912 -1h172.958q24.9941 0 34.4912 -13.4961q9.49805 -13.4971 9.49805 -27.4932v-32.9922q0 -104.975 -41.4902 -192.453 +q-41.4893 -87.4785 -110.973 -150.463q-69.4834 -62.9854 -160.961 -97.9766t-191.453 -34.9912q-102.975 0 -193.952 36.9912q-90.9785 36.9902 -159.462 102.475t-107.974 154.962q-39.4902 89.4785 -39.4902 194.452q0 94.9775 23.9941 158.462t60.4854 106.474 +q36.4912 42.9902 78.4814 71.4824q41.9893 28.4932 78.4805 54.9873q36.4912 26.4932 60.4854 56.4854q23.9941 29.9932 23.9941 74.9824zM739.095 983.07q0 -19.9951 -10.9971 -31.9922q-10.998 -11.9971 -32.9922 -11.9971h-263.936q-16.9961 0 -31.4922 11.9971 +t-14.4961 31.9922v241.941q0 17.9951 11.4971 31.9922q11.4971 13.9961 34.4912 13.9961h263.936q43.9893 0 43.9893 -45.9883v-241.941z" /> + <glyph glyph-name="exclamdown" unicode="¡" horiz-adv-x="611" +d="M488.04 -333.609q0 -43.9883 -48.9883 -43.9883h-259.937q-43.9893 0 -43.9893 43.9883v1077.74q0 18.9951 10.9971 31.4922q10.998 12.4971 32.9922 12.4971h259.937q14.9961 0 31.9922 -11.9971t16.9961 -31.9922v-1077.74zM488.04 981.07 +q0 -19.9951 -11.4971 -31.9922q-11.498 -11.9971 -32.4922 -11.9971h-263.936q-16.9961 0 -31.4922 11.9971q-14.4971 11.9971 -14.4971 31.9922v241.94q0 17.9961 11.9971 31.9922q11.9971 13.9971 33.9922 13.9971h263.936q43.9893 0 43.9893 -45.9893v-241.94z" /> + <glyph glyph-name="fivesuperior" unicode="⁵" horiz-adv-x="667" +d="M83 1439q0 46 43 46h397q26 0 36 -13.5t10 -33.5v-93q0 -20 -11 -32.5t-36 -12.5h-255v-96h47h8t9 -2q85 -3 139.5 -29t85 -66t42 -87.5t11.5 -93.5q0 -60 -24.5 -112.5t-66 -91t-95.5 -61t-112 -22.5q-47 0 -83 8.5t-65.5 24.5t-52.5 39.5t-43 52.5q-11 15 -12 30.5 +t21 31.5h-1l82 61q17 11 30 9t27 -16h2q17 -26 42 -40t54 -14q19 0 38 7.5t35 20.5t26 31t10 39q0 42 -25 67t-85 25h-137q-41 0 -62 14.5t-29 58.5v350z" /> + <glyph glyph-name="sixsuperior" unicode="⁶" horiz-adv-x="675" +d="M39 930q0 41 10 77t28 69l-1 -1l8 14l200 362v-1q8 14 19 24t32 10h108q41 0 41 -36q0 -9 -4 -17l-117 -211q55 -6 102.5 -30.5t82.5 -63t55 -89t20 -107.5q0 -61 -23 -114t-62.5 -92.5t-93 -62t-113.5 -22.5q-61 0 -114 22.5t-92.5 62t-62.5 92.5t-23 114zM229 930 +q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5t-20 -36t-7 -42.5z" /> + <glyph glyph-name="sevensuperior" unicode="⁷" horiz-adv-x="705" +d="M607 1484q26 0 38 -15t12 -34q0 -18 -12 -37q-95 -177 -194.5 -363.5t-194.5 -364.5q-14 -20 -40 -20h-132q-56 0 -38 49l313 600h-278q-20 0 -33 10t-13 36v96q0 20 13 31.5t33 11.5h526z" /> + <glyph glyph-name="eightsuperior" unicode="⁸" horiz-adv-x="692" +d="M278 1269q0 -23 15 -38.5t38 -15.5t38.5 15.5t15.5 38.5t-15.5 38.5t-38.5 15.5t-38 -15.5t-15 -38.5zM230 930q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5t-20 -36t-7 -42.5zM40 930 +q0 69 25.5 123.5t72.5 94.5q-15 26 -24.5 58t-9.5 64q0 46 18 87.5t49 73t72 49.5t88 18q46 0 87.5 -18t72.5 -49.5t49 -73t18 -87.5q0 -33 -9 -64.5t-26 -57.5q48 -40 73 -94.5t25 -123.5q0 -61 -23 -114t-62 -92t-92 -61.5t-113 -22.5q-61 0 -114 22.5t-92.5 61.5t-62 92 +t-22.5 114z" /> + <glyph glyph-name="ninesuperior" unicode="⁹" horiz-adv-x="674" +d="M623 1203q0 -41 -10 -78.5t-29 -69.5l-9 -13l2 2l-199 -361v1q-7 -14 -18.5 -24t-32.5 -10h-108q-42 0 -42 36q0 11 7 18q16 29 30 54.5t27 50t27 49.5t30 54q-55 6 -102.5 31t-82 64t-54.5 89t-20 107q0 61 23 114t62.5 92.5t92.5 62.5t114 23q60 0 113.5 -23t93 -62.5 +t62.5 -92.5t23 -114zM433 1203q0 48 -26.5 79t-73.5 31q-46 0 -71.5 -31t-25.5 -79q0 -45 25.5 -78t71.5 -33q23 0 41.5 9t31.5 24t20 35t7 43z" /> + <glyph glyph-name="onethird" unicode="⅓" horiz-adv-x="1504" +d="M933 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM87 1404q0 21 24 35l88 44q5 4 18 4h149q26 0 26 -24v-768q0 -24 -24 -24h-151q-24 0 -24 22v608l-75 -37q-2 -3 -7 -3 +q-2 0 -2 -2q-11 0 -16.5 7.5t-5.5 19.5v118zM1157 356q-44 0 -44 35v104q0 44 44 44q19 0 31 6t19 15t10 20t3 21q0 11 -1.5 23t-7 22t-17 16.5t-30.5 6.5q-17 0 -27 -6t-15.5 -16.5t-7.5 -23.5t-2 -28q0 -24 -10 -35t-36 -11h-92q-43 0 -43 43q0 67 19 114.5t51.5 77.5 +t75.5 43.5t92 13.5q48 0 91 -18.5t75.5 -50.5t51 -75t18.5 -92q0 -77 -42 -131q22 -17 39.5 -37t29.5 -45.5t18 -57t6 -71.5q0 -59 -20.5 -109.5t-58 -88.5t-89.5 -59.5t-115 -21.5q-59 0 -110 12.5t-88.5 46t-59.5 93t-22 152.5q0 33 42 43h99q43 0 43 -43q0 -36 7.5 -59 +t20 -36.5t30 -19t38.5 -5.5q47 0 72.5 24.5t25.5 72.5q0 51 -25 71t-89 20z" /> + <glyph glyph-name="oneeighth" unicode="⅛" horiz-adv-x="1571" +d="M976 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM85 1404q0 21 24 35l88 44q5 4 18 4h149q26 0 26 -24v-768q0 -24 -24 -24h-151q-24 0 -24 22v608l-75 -37q-2 -3 -7 -3 +q-2 0 -2 -2q-11 0 -16.5 7.5t-5.5 19.5v118zM1146 600q0 -23 15 -38.5t38 -15.5t38.5 15.5t15.5 38.5t-15.5 38.5t-38.5 15.5t-38 -15.5t-15 -38.5zM1098 261q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5 +t-20 -36t-7 -42.5zM908 261q0 69 25.5 123.5t72.5 94.5q-15 26 -24.5 58t-9.5 64q0 46 18 87.5t49 73t72 49.5t88 18q46 0 87.5 -18t72.5 -49.5t49 -73t18 -87.5q0 -33 -9 -64.5t-26 -57.5q48 -40 73 -94.5t25 -123.5q0 -61 -23 -114t-62 -92t-92 -61.5t-113 -22.5 +q-61 0 -114 22.5t-92.5 61.5t-62 92t-22.5 114z" /> + <glyph glyph-name="twothirds" unicode="⅔" horiz-adv-x="1698" +d="M1145 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM357 825h250q45 0 45 -45v-90q0 -20 -12.5 -32.5t-32.5 -12.5h-493q-18 0 -33 12.5t-15 32.5v81q0 10 6 19q-1 -1 0 1l2 4 +l352 361h-1q21 23 27.5 37t6.5 33q0 18 -8 35t-22 30t-32.5 20.5t-39.5 7.5t-39.5 -8t-31.5 -22t-20.5 -32t-7.5 -38v-45q0 -42 -44 -42h-98q-23 0 -33 14t-10 28v45q0 60 22.5 110.5t61.5 87t90.5 57t109.5 20.5q57 0 110.5 -19t94.5 -53.5t65.5 -83t24.5 -108.5 +q0 -64 -25 -113.5t-62 -83.5v1zM1362 336q-44 0 -44 35v104q0 44 44 44q19 0 31 6t19 15t10 20t3 21q0 11 -1.5 23t-7 22t-17 16.5t-30.5 6.5q-17 0 -27 -6t-15.5 -16.5t-7.5 -23.5t-2 -28q0 -24 -10 -35t-36 -11h-92q-43 0 -43 43q0 67 19 114.5t51.5 77.5t75.5 43.5 +t92 13.5q48 0 91 -18.5t75.5 -50.5t51 -75t18.5 -92q0 -77 -42 -131q22 -17 39.5 -37t29.5 -45.5t18 -57t6 -71.5q0 -59 -20.5 -109.5t-58 -88.5t-89.5 -59.5t-115 -21.5q-59 0 -110 12.5t-88.5 46t-59.5 93t-22 152.5q0 33 42 43h99q43 0 43 -43q0 -36 7.5 -59t20 -36.5 +t30 -19t38.5 -5.5q47 0 72.5 24.5t25.5 72.5q0 51 -25 71t-89 20z" /> + <glyph glyph-name="threeeighths" unicode="⅜" horiz-adv-x="1574" +d="M1039 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM1200 600q0 -23 15 -38.5t38 -15.5t38.5 15.5t15.5 38.5t-15.5 38.5t-38.5 15.5t-38 -15.5t-15 -38.5zM1152 261 +q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5t-20 -36t-7 -42.5zM962 261q0 69 25.5 123.5t72.5 94.5q-15 26 -24.5 58t-9.5 64q0 46 18 87.5t49 73t72 49.5t88 18q46 0 87.5 -18t72.5 -49.5t49 -73 +t18 -87.5q0 -33 -9 -64.5t-26 -57.5q48 -40 73 -94.5t25 -123.5q0 -61 -23 -114t-62 -92t-92 -61.5t-113 -22.5q-61 0 -114 22.5t-92.5 61.5t-62 92t-22.5 114zM307 1009q-44 0 -44 35v104q0 44 44 44q19 0 31 6t19 15t10 20t3 21q0 11 -1.5 23t-7 22t-17 16.5t-30.5 6.5 +q-17 0 -27 -6t-15.5 -16.5t-7.5 -23.5t-2 -28q0 -24 -10 -35t-36 -11h-92q-43 0 -43 43q0 67 19 114.5t51.5 77.5t75.5 43.5t92 13.5q48 0 91 -18.5t75.5 -50.5t51 -75t18.5 -92q0 -77 -42 -131q22 -17 39.5 -37t29.5 -45.5t18 -57t6 -71.5q0 -59 -20.5 -109.5t-58 -88.5 +t-89.5 -59.5t-115 -21.5q-59 0 -110 12.5t-88.5 46t-59.5 93t-22 152.5q0 33 42 43h99q43 0 43 -43q0 -36 7.5 -59t20 -36.5t30 -19t38.5 -5.5q47 0 72.5 24.5t25.5 72.5q0 51 -25 71t-89 20z" /> + <glyph glyph-name="fiveeighths" unicode="⅝" horiz-adv-x="1613" +d="M1081 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM83 1439q0 46 43 46h397q26 0 36 -13.5t10 -33.5v-93q0 -20 -11 -32.5t-36 -12.5h-255v-96h47h8t9 -2q85 -3 139.5 -29 +t85 -66t42 -87.5t11.5 -93.5q0 -60 -24.5 -112.5t-66 -91t-95.5 -61t-112 -22.5q-47 0 -83 8.5t-65.5 24.5t-52.5 39.5t-43 52.5q-11 15 -12 30.5t21 31.5h-1l82 61q17 11 30 9t27 -16h2q17 -26 42 -40t54 -14q19 0 38 7.5t35 20.5t26 31t10 39q0 42 -25 67t-85 25h-137 +q-41 0 -62 14.5t-29 58.5v350zM1187 600q0 -23 15 -38.5t38 -15.5t38.5 15.5t15.5 38.5t-15.5 38.5t-38.5 15.5t-38 -15.5t-15 -38.5zM1139 261q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5t-20 -36 +t-7 -42.5zM949 261q0 69 25.5 123.5t72.5 94.5q-15 26 -24.5 58t-9.5 64q0 46 18 87.5t49 73t72 49.5t88 18q46 0 87.5 -18t72.5 -49.5t49 -73t18 -87.5q0 -33 -9 -64.5t-26 -57.5q48 -40 73 -94.5t25 -123.5q0 -61 -23 -114t-62 -92t-92 -61.5t-113 -22.5q-61 0 -114 22.5 +t-92.5 61.5t-62 92t-22.5 114z" /> + <glyph glyph-name="seveneighths" unicode="⅞" horiz-adv-x="1571" +d="M1016 1441q8 18 23.5 31t40.5 13h189q20 0 35 -8t15 -23q0 -11 -2 -13l-763 -1397q-12 -25 -21.5 -34.5t-31.5 -9.5h-211q-42 0 -42 26q0 -2 4 18zM1126 600q0 -23 15 -38.5t38 -15.5t38.5 15.5t15.5 38.5t-15.5 38.5t-38.5 15.5t-38 -15.5t-15 -38.5zM1078 261 +q0 -46 26.5 -78t73.5 -32q45 0 71 32t26 78q0 22 -6.5 42.5t-19.5 36t-31 24.5t-40 9q-23 0 -41.5 -9t-31.5 -24.5t-20 -36t-7 -42.5zM888 261q0 69 25.5 123.5t72.5 94.5q-15 26 -24.5 58t-9.5 64q0 46 18 87.5t49 73t72 49.5t88 18q46 0 87.5 -18t72.5 -49.5t49 -73 +t18 -87.5q0 -33 -9 -64.5t-26 -57.5q48 -40 73 -94.5t25 -123.5q0 -61 -23 -114t-62 -92t-92 -61.5t-113 -22.5q-61 0 -114 22.5t-92.5 61.5t-62 92t-22.5 114zM681 1484q26 0 38 -15t12 -34q0 -18 -12 -37q-95 -177 -194.5 -363.5t-194.5 -364.5q-14 -20 -40 -20h-132 +q-56 0 -38 49l313 600h-278q-20 0 -33 10t-13 36v96q0 20 13 31.5t33 11.5h526z" /> + <glyph glyph-name="Udieresis" unicode="Ü" horiz-adv-x="1550" +d="M544 593q0 -74 20.5 -125.5t54 -84t78 -47.5t92.5 -15q50 0 94.5 17.5t78 52t53 85.5t19.5 117v848q0 18 12.5 31t33.5 13h292q23 0 36 -13.5t13 -30.5v-843q0 -175 -51.5 -294t-138.5 -191.5t-201.5 -104t-240.5 -31.5t-241 32.5t-202 106t-138.5 192t-51.5 290.5v843 +q0 17 11.5 30.5t28.5 13.5h300q15 0 31.5 -12.5t16.5 -31.5v-848zM423 1884q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM859 1884q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49 +v189z" /> + <glyph glyph-name="C" unicode="C" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5z" /> + <glyph glyph-name="D" unicode="D" horiz-adv-x="1547" +d="M1447 741q0 -106 -27 -201.5t-77 -178t-119.5 -149.5t-154 -114t-182.5 -72.5t-203 -25.5h-493q-18 0 -32 8t-14 34v1397q0 21 11.5 34t34.5 13h493q105 0 202.5 -26t182 -74t154.5 -115t119.5 -150t77 -179t27.5 -201zM532 1127v-769h84q23 0 45 1.5t44 3.5 +q75 6 140 36.5t113.5 80t76 116.5t27.5 146q0 84 -31.5 154.5t-85.5 122t-126.5 80t-154.5 28.5h-132z" /> + <glyph glyph-name="approxequal" unicode="≈" horiz-adv-x="554" + /> + <glyph glyph-name="nacute" unicode="ń" horiz-adv-x="1405" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25zM670 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6 +t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="napostrophe" unicode="ʼn" horiz-adv-x="1657" +d="M397 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25zM-33 1229q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5 +t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="ncaron" unicode="ň" horiz-adv-x="1405" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25zM822 1373q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256 +q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="ncommaaccent" unicode="ņ" horiz-adv-x="1448" +d="M149 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25zM673 -226q0 17 10.5 28t29.5 11h236q15 0 28.5 -10.5 +t13.5 -28.5v-257q0 -85 -43.5 -159t-125.5 -122q-1 -1 -12 -1q-13 0 -20 3t-13 8l-61 52q-10 8 -13.5 15t-3.5 15q0 12 12 23t27 25.5t27 34t12 47.5v39q0 15 -16 19h-51q-37 1 -37 39v219z" /> + <glyph glyph-name="ntilde" unicode="ñ" horiz-adv-x="1405" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25zM367 1618q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4 +t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40 +q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="Phi.alt" horiz-adv-x="1692" +d="M658 106q-113 25 -213 82.5t-174.5 138.5t-117.5 181t-43 210q0 115 40 218t112 184.5t173 136.5t223 75v20q0 35 23.5 60.5t74.5 25.5h92q19 0 37.5 -6.5t32 -18t22 -27t8.5 -34.5v-20q116 -25 217 -82.5t175.5 -138.5t117 -182t42.5 -213q0 -116 -40 -219.5 +t-112.5 -184.5t-174 -135.5t-225.5 -72.5v-18q0 -86 -100 -86h-92q-51 0 -74.5 20.5t-23.5 65.5v20zM1206 718q0 62 -18.5 116t-52 97.5t-81.5 75.5t-106 49v-674q59 17 107 48t81.5 73.5t51.5 96.5t18 118zM402 718q0 -127 67.5 -214t188.5 -122v670q-55 -18 -101.5 -50 +t-81 -75.5t-54 -96.5t-19.5 -112zM35 1115q-20 2 -33 12.5t-13 31.5l-33 295q-2 15 8 25t27 10h221q18 0 29.5 -11.5t7.5 -30.5l-30 -288q-2 -17 -14.5 -30.5t-29.5 -13.5h-140z" /> + <glyph glyph-name="Idieresis" unicode="Ï" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397zM-1 1845q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM435 1845q0 42 44 42h193q42 0 42 -42v-189 +q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Oslash" unicode="Ø" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q38 0 74 -3.5t72 -10.5l32 71q8 18 23.5 31t40.5 13h277q20 0 35.5 -8t15.5 -23q0 -11 -2 -13l-99 -218q67 -53 122 -119.5t93.5 -143.5t59.5 -163.5t21 -178.5q0 -106 -27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-76 0 -148 15l-35 -79 +q-11 -25 -21 -34.5t-31 -9.5h-300q-41 0 -41 26q0 2 1 4l3 14l102 225q-67 52 -121.5 118.5t-92.5 143t-59 162.5t-21 178z" /> + <glyph glyph-name="Odieresis" unicode="Ö" horiz-adv-x="1705" +d="M478 742q0 -83 28 -155t78.5 -125.5t119.5 -84t152 -30.5t152.5 30.5t120 84t78.5 125.5t28 155q0 82 -28 154.5t-78.5 126.5t-120 85t-152.5 31t-152 -31t-119.5 -85t-78.5 -126.5t-28 -154.5zM92 741q0 106 27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77 +t203.5 27.5q105 0 203 -27.5t183 -77t155 -119.5t119.5 -155.5t77 -183t27.5 -203.5t-27.5 -203.5t-77 -182t-119.5 -154t-155 -119.5t-183 -77t-203 -27q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5zM503 1862q0 42 42 42h196q14 0 27.5 -11 +t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM939 1862q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="uogonek" unicode="ų" horiz-adv-x="1448" +d="M1301 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM1288.56 33q12.9854 -12.9844 15.7676 -23.6494t2.78223 -20.8672 +q0 -26.8955 -13.9121 -47.2988t-34.7812 -37.0977q-20.8682 -16.6934 -44.9824 -31.0684q-24.1152 -14.375 -44.9834 -28.75q-20.8691 -14.376 -34.7812 -30.1416q-13.9121 -15.7666 -13.9121 -36.1699q0 -58.4277 158.601 -98.3076q10.2021 -5.56445 10.2021 -20.4033 +q0 -8.34668 -10.2021 -32.9238t-25.042 -50.5449t-31.5352 -46.3711q-16.6943 -20.4033 -30.6064 -20.4033h-4.6377q-70.4893 21.3301 -128.458 53.3271q-57.9678 31.9961 -99.2412 69.0928q-41.2734 37.0977 -63.9971 75.1221q-22.7227 38.0244 -22.7227 71.4121 +q0 34.3145 14.376 59.8193q14.376 25.5039 35.708 45.4434q21.332 19.9404 45.9111 35.2432q24.5781 15.3018 45.9102 28.75q21.333 13.4473 35.709 25.9678t14.376 27.3594q0 18.5488 -20.4053 32.46h244.857z" /> + <glyph glyph-name="uring" unicode="ů" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM733 1782q43 0 81.5 -16.5t67.5 -45.5t45.5 -67.5t16.5 -81.5 +q0 -44 -16.5 -82t-45.5 -66.5t-67.5 -44.5t-81.5 -16q-44 0 -82 16t-66.5 44.5t-44.5 66.5t-16 82q0 43 16 81.5t44.5 67.5t66.5 45.5t82 16.5zM734 1632q-26 0 -42 -17t-16 -43t16 -42t42 -16t43 16t17 42t-17 43t-43 17z" /> + <glyph glyph-name="utilde" unicode="ũ" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM385 1591q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5 +t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5 +t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="Eng" unicode="Ŋ" horiz-adv-x="1643" +d="M169 1441q0 18 11 31t33 13h327q14 0 29 -7t26 -24q127 -205 252 -404t253 -404v801q4 18 16 28t28 10h285q21 0 35 -11.5t14 -32.5v-1402q0 -20 -12 -29.5t-33 -9.5h-319q-13 0 -23 9t-21 24q-133 220 -263 435t-264 435v-859q0 -22 -10 -33t-36 -11h-284 +q-23 0 -33.5 12.5t-10.5 30.5v1398zM1090 1445q0 37 39 40h295q54 0 54 -52v-1370q0 -99 -39.5 -185.5t-106.5 -151t-155.5 -101.5t-186.5 -37q-58 0 -114 13t-106.5 38.5t-94 63t-76.5 86.5q-3 1 -3 16q0 26 16 38l174 163q8 7 17 11.5t17 4.5q15 0 28.5 -11t30 -24.5 +t38.5 -24.5t53 -11q23 0 45 9t38.5 24t26.5 35.5t10 43.5v1382z" /> + <glyph glyph-name="uni2206" unicode="∆" horiz-adv-x="1531" +d="M570 1464q10 21 41 21h247q15 0 27 -10t21 -24.5t16 -31.5t12 -31l516 -1343v-3q1 -3 1 -11q0 -14 -9.5 -22.5t-32.5 -8.5h-1354q-37 0 -37 28q0 4 1.5 8t1.5 9l513 1343q8 20 16.5 39t19.5 37zM508 313h450q-57 171 -110 337.5t-114 337.5z" /> + <glyph glyph-name="product" unicode="∏" horiz-adv-x="1440" +d="M913 1131h-369v-1089q0 -42 -47 -42h-303q-44 0 -44 42v1397q0 46 44 46h1066q17 0 32 -12t15 -32v-1397q0 -44 -47 -44h-303q-44 0 -44 44v1087z" /> + <glyph glyph-name="Ccedilla" unicode="Ç" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5zM1001 0q-22 -15 -22 -35q0 -16 15.5 -29.5t38 -28t49.5 -31 +t49.5 -38t38 -49t15.5 -64.5q0 -36 -24.5 -77t-69 -81t-106.5 -74.5t-138 -57.5h-5q-15 0 -33 22t-34 50t-27 54.5t-11 35.5q0 16 11 22q171 43 171 106q0 22 -15 39t-37.5 32.5t-48.5 31t-48.5 33.5t-37.5 40t-15 51q0 11 3 22.5t17 25.5h264z" /> + <glyph glyph-name="Ccircumflex" unicode="Ĉ" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5zM835 1976q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23 +q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Cdotaccent" unicode="Ċ" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5zM731 1880q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189 +q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="Eacute" unicode="É" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M544 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Ebreve" unicode="Ĕ" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M712 1624q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Ecaron" unicode="Ě" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M698 1585q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="Ecircumflex" unicode="Ê" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M702 1974q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Edieresis" unicode="Ë" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M383 1878q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM819 1878q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Egrave" unicode="È" horiz-adv-x="1350" +d="M161 1439q0 21 11.5 33.5t32.5 12.5h993q22 0 34 -13t12 -35v-248q0 -17 -12 -32.5t-35 -15.5h-648v-247h500q19 0 31.5 -9t12.5 -30v-216q0 -14 -11 -27t-32 -13h-501v-255h672q45 0 45 -46v-252q0 -10 -8 -18q-4 -28 -41 -28h-1012q-20 0 -32 10.5t-12 32.5v1396z +M872 1680q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="Gbreve" unicode="Ğ" horiz-adv-x="1502" +d="M1098 1066q-51 36 -109 56t-124 20q-83 0 -152 -31.5t-118.5 -85.5t-77.5 -126.5t-28 -154.5t28 -154t77.5 -125.5t118.5 -84.5t152 -31q35 0 69.5 5t73.5 13v262q0 19 11 31.5t33 12.5h272q15 0 32 -12t17 -32v-484q0 -27 -29 -44q-47 -32 -104 -55t-119 -38 +t-125.5 -22.5t-123.5 -7.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5q17 -10 26 -26.5t-4 -37.5l-162 -234q-13 -16 -26 -21.5t-35 8.5z +M875 1632q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Gcircumflex" unicode="Ĝ" horiz-adv-x="1502" +d="M1098 1066q-51 36 -109 56t-124 20q-83 0 -152 -31.5t-118.5 -85.5t-77.5 -126.5t-28 -154.5t28 -154t77.5 -125.5t118.5 -84.5t152 -31q35 0 69.5 5t73.5 13v262q0 19 11 31.5t33 12.5h272q15 0 32 -12t17 -32v-484q0 -27 -29 -44q-47 -32 -104 -55t-119 -38 +t-125.5 -22.5t-123.5 -7.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5q17 -10 26 -26.5t-4 -37.5l-162 -234q-13 -16 -26 -21.5t-35 8.5z +M832 1983q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Adieresis" unicode="Ä" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM416 1884q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM852 1884q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5 +h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="Agrave" unicode="À" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM877 1680q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="aacute" unicode="á" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM653 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219 +q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="abreve" unicode="ă" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM782 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5 +q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="acircumflex" unicode="â" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM762 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143 +q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="adieresis" unicode="ä" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM427 1688q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM863 1688q0 42 44 42 +h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="agrave" unicode="à" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM981 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258 +q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="amacron" unicode="ā" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM357 1664q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="aogonek" unicode="ą" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM1399 18q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22 +q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="aring" unicode="å" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM753 1809q43 0 81.5 -16.5t67.5 -45.5t45.5 -67.5t16.5 -81.5q0 -44 -16.5 -82t-45.5 -66.5t-67.5 -44.5t-81.5 -16q-44 0 -82 16 +t-66.5 44.5t-44.5 66.5t-16 82q0 43 16 81.5t44.5 67.5t66.5 45.5t82 16.5zM754 1659q-26 0 -42 -17t-16 -43t16 -42t42 -16t43 16t17 42t-17 43t-43 17z" /> + <glyph glyph-name="atilde" unicode="ã" horiz-adv-x="1569" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM441 1618q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40 +q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9 +t10.5 16.5t20 27.5z" /> + <glyph glyph-name="cacute" unicode="ć" horiz-adv-x="1256" +d="M954 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51zM712 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ccaron" unicode="č" horiz-adv-x="1256" +d="M954 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51zM790 1406q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="ccedilla" unicode="ç" horiz-adv-x="1256" +d="M954 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51zM907 0q-22 -15 -22 -35q0 -16 15.5 -29.5t38 -28t49.5 -31t49.5 -38t38 -49t15.5 -64.5q0 -36 -24.5 -77t-69 -81t-106.5 -74.5t-138 -57.5h-5q-15 0 -33 22t-34 50t-27 54.5t-11 35.5q0 16 11 22q171 43 171 106q0 22 -15 39 +t-37.5 32.5t-48.5 31t-48.5 33.5t-37.5 40t-15 51q0 11 3 22.5t17 25.5h264z" /> + <glyph glyph-name="ccircumflex" unicode="ĉ" horiz-adv-x="1256" +d="M954 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51zM745 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="cdotaccent" unicode="ċ" horiz-adv-x="1256" +d="M954 391q14 10 26.5 12.5t19.5 2.5q17 0 31 -7t29 -30l112 -169q5 -8 9.5 -18t4.5 -16q0 -23 -14.5 -37.5t-31.5 -25.5q-82 -57 -179.5 -91.5t-206.5 -34.5q-90 0 -173.5 23t-155.5 65.5t-132 102t-102 132.5t-65.5 157.5t-23.5 176.5t23.5 177t65.5 157.5t102 132 +t132 101.5t155.5 65t173.5 23q109 0 201.5 -29t173.5 -86l-3 3q22 -13 35 -30.5t13 -43.5q0 -18 -12 -37l-89 -151q-28 -49 -68 -49q-9 0 -22 4.5t-29 15.5q-44 29 -94.5 47.5t-107.5 18.5q-63 0 -116 -25.5t-90.5 -69.5t-58.5 -102t-21 -122q0 -66 21 -123.5t58.5 -99.5 +t90.5 -66.5t116 -24.5q57 0 107 20t95 51zM615 1670q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="dcaron" unicode="ď" horiz-adv-x="1828" +d="M1039 155q-27 -27 -59.5 -58t-71.5 -58t-84 -44.5t-97 -17.5q-136 0 -250.5 51t-197 139.5t-129 208.5t-46.5 258q0 139 46.5 258.5t129 208t197 139t250.5 50.5q55 0 100.5 -16t83 -41t69 -56.5t59.5 -61.5v457q0 32 19.5 54t58.5 22h225q13 0 27.5 -5.5t26.5 -15.5 +t19.5 -24t7.5 -31v-1495q0 -77 -81 -77h-196q-20 0 -31 5t-18.5 14.5t-13.5 24t-15 33.5zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q64 0 120.5 23t98.5 63.5t67.5 95.5t28.5 118v14q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5 +t-91.5 -69.5t-58.5 -102t-20.5 -122zM1513 1669q0 20 11 32t33 12h242q17 0 31.5 -12t14.5 -32v-216q0 -43 -3 -85q-6 -78 -49 -143.5t-121 -110.5q-1 -1 -7.5 -3t-14 -4t-14.5 -3.5t-9 -1.5q-8 0 -13 4t-11 10l-38 29q-17 12 -20 20.5t-3 16.5q0 11 13.5 25t30 33t30 43 +t13.5 55v44q0 18 -18 21h-57q-20 0 -30.5 12t-10.5 32v222z" /> + <glyph glyph-name="dcroat" unicode="đ" horiz-adv-x="1569" +d="M1039 155q-27 -27 -59.5 -58t-71.5 -58t-84 -44.5t-97 -17.5q-136 0 -250.5 51t-197 139.5t-129 208.5t-46.5 258q0 139 46.5 258.5t129 208t197 139t250.5 50.5q55 0 100.5 -16t83 -41t69 -56.5t59.5 -61.5v457q0 32 19.5 54t58.5 22h225q13 0 27.5 -5.5t26.5 -15.5 +t19.5 -24t7.5 -31v-1495q0 -77 -81 -77h-196q-20 0 -31 5t-18.5 14.5t-13.5 24t-15 33.5zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q64 0 120.5 23t98.5 63.5t67.5 95.5t28.5 118v14q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5 +t-91.5 -69.5t-58.5 -102t-20.5 -122zM905.593 1530.64q0 38.9297 36.5146 38.9297h565.988q14.9385 0 25.7275 -10.1748q10.7881 -10.1748 10.7881 -28.7549v-179.607q0 -13.2715 -9.95898 -27.8701q-9.95801 -14.5986 -26.5566 -14.5986h-565.988 +q-36.5146 0 -36.5146 42.4688v179.607z" /> + <glyph glyph-name="eacute" unicode="é" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM695 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ebreve" unicode="ĕ" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM720 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27 +q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="ecaron" unicode="ě" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM758 1376q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="ecircumflex" unicode="ê" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM745 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="edieresis" unicode="ë" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM365 1670q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM801 1670q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="edotaccent" unicode="ė" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM614 1669q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="egrave" unicode="è" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM920 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="emacron" unicode="ē" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM298 1665q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="eogonek" unicode="ę" horiz-adv-x="1446" +d="M1209 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27 +t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM728 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59 +t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM898 0q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5 +t-69 81t-24.5 77q0 37 15.5 64.5t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="hbar" unicode="ħ" horiz-adv-x="1405" +d="M504 1137q19 28 46 55.5t63.5 49t83 35t105.5 13.5q114 0 203.5 -44t152 -120t95 -177.5t32.5 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v661q0 43 -16.5 80t-44.5 64.5t-65.5 43t-79.5 15.5q-36 0 -70.5 -14.5t-62 -41t-46 -63.5 +t-21.5 -82v-660q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v814v7v298v5v371q0 34 19 55t62 21h226q23 0 51 -16q13 -9 19.5 -26t6.5 -32v-437zM278 1998q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779 +q-35 0 -35 40v154z" /> + <glyph glyph-name="hcircumflex" unicode="ĥ" horiz-adv-x="1405" +d="M504 1137q19 28 46 55.5t63.5 49t83 35t105.5 13.5q114 0 203.5 -44t152 -120t95 -177.5t32.5 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v661q0 43 -16.5 80t-44.5 64.5t-65.5 43t-79.5 15.5q-36 0 -70.5 -14.5t-62 -41t-46 -63.5 +t-21.5 -82v-660q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v814v7v298v5v371q0 34 19 55t62 21h226q23 0 51 -16q13 -9 19.5 -26t6.5 -32v-437zM876 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90 +q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="lacute" unicode="ĺ" horiz-adv-x="620" +d="M120 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494zM211 2078q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32 +t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ldot" unicode="ŀ" horiz-adv-x="1055" +d="M120 1571q0 32 16 54t55 22h245q10 0 21 -5.5t20.5 -15.5t16 -24t6.5 -31v-1494q0 -38 -21.5 -57.5t-55.5 -19.5h-232q-39 0 -55 19.5t-16 57.5v1494zM664 929q0 20 11 32t33 12h264q17 0 31.5 -12t14.5 -32v-242q0 -18 -11.5 -32t-34.5 -14h-264q-44 0 -44 46v242z" /> + <glyph glyph-name="otilde" unicode="õ" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM407 1592q19 27 45 49t56 37.5t62 23.5 +t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8 +t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9t10.5 16.5t20 27.5z" /> + <glyph glyph-name="zdotaccent" unicode="ż" horiz-adv-x="1244" +d="M113 1197q0 35 21.5 56.5t58.5 21.5h842q32 0 56.5 -19.5t24.5 -58.5v-174q0 -9 -1.5 -21t-10.5 -24l-551 -654h494q36 0 57.5 -19.5t21.5 -61.5v-157q0 -15 -5.5 -30.5t-16 -28t-25 -20t-32.5 -7.5h-882q-16 0 -30.5 7.5t-26 19.5t-18 27.5t-6.5 31.5v138q0 14 2.5 27 +t14.5 27q67 74 140.5 160.5t148.5 175.5t149 176t141 162h-487q-37 0 -58.5 20t-21.5 63v162zM472 1669q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="zacute" unicode="ź" horiz-adv-x="1262" +d="M116 1197q0 35 21.5 56.5t58.5 21.5h842q32 0 56.5 -19.5t24.5 -58.5v-174q0 -9 -1.5 -21t-10.5 -24l-551 -654h494q36 0 57.5 -19.5t21.5 -61.5v-157q0 -15 -5.5 -30.5t-16 -28t-25 -20t-32.5 -7.5h-882q-16 0 -30.5 7.5t-26 19.5t-18 27.5t-6.5 31.5v138q0 14 2.5 27 +t14.5 27q67 74 140.5 160.5t148.5 175.5t149 176t141 162h-487q-37 0 -58.5 20t-21.5 63v162zM573 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Cacute" unicode="Ć" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5zM750 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15 +t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Ccaron" unicode="Č" horiz-adv-x="1409" +d="M1294 1377q17 -10 25 -26t-3 -38l-169 -240q-11 -17 -23.5 -19.5t-30.5 8.5q-49 37 -108 57t-125 20q-82 0 -151 -31t-119 -85t-78 -126t-28 -154t28 -153.5t78 -125t119 -84.5t151 -31q66 0 126 20.5t109 57.5q18 11 30 9t24 -18l171 -246q11 -22 3 -37t-25 -25 +q-94 -63 -202.5 -97.5t-228.5 -34.5q-106 0 -203.5 27t-182.5 77t-154.5 119.5t-119.5 154t-77 182t-27 203.5t27 203.5t77 183t119.5 155.5t154.5 119.5t182.5 77t203.5 27.5q120 0 226.5 -33.5t200.5 -96.5zM881 1577q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23 +q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="ae" unicode="æ" horiz-adv-x="2571" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM2334 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5 +t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5 +t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM1853 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14z" /> + <glyph glyph-name="aeacute" unicode="ǽ" horiz-adv-x="2562" +d="M1449 74q0 -17 -6 -32.5t-20 -24.5q-11 -11 -26 -14t-26 -3h-197q-21 0 -34 5.5t-21 15.5t-13.5 24.5t-11.5 31.5l-29 75q-27 -27 -59 -57.5t-70.5 -56.5t-83.5 -43.5t-96 -17.5q-91 0 -174.5 23t-156 65.5t-131.5 102t-101.5 132.5t-65.5 157.5t-23 176.5 +q0 139 51 258.5t139 208t207 139t255 50.5q62 0 114 -18.5t94.5 -48.5t77 -68t61.5 -77l39 121q10 25 16.5 40.5t14 23t18.5 10t31 2.5h149q11 0 26 -3t26 -14q14 -11 20 -25t6 -32v-1127zM464 634q0 -66 20.5 -123.5t58.5 -99.5t91.5 -66.5t118.5 -24.5q67 0 124.5 24.5 +t100 66.5t66.5 99.5t24 123.5q0 64 -24 122t-66.5 102t-100 69.5t-124.5 25.5q-65 0 -118.5 -25.5t-91.5 -69.5t-58.5 -102t-20.5 -122zM2334 152q-88 -81 -198 -126.5t-233 -45.5q-137 0 -259 50t-214 138.5t-146 208.5t-54 261q0 88 21.5 170.5t61 154.5t96 132.5 +t126.5 103.5t152 67t173 24q83 0 161 -22t146.5 -62t125.5 -96t98 -122.5t63.5 -142t22.5 -155.5q0 -52 -1.5 -85t-15.5 -52.5t-46.5 -27t-95.5 -7.5h-720q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5 +t26.5 -9t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM1853 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14zM1244 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5 +t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="gbreve" unicode="ğ" horiz-adv-x="1537" +d="M1040 44q11 34 10.5 77.5t-0.5 88.5q-29 -31 -59 -65.5t-66.5 -64t-82.5 -48.5t-107 -19q-135 0 -250 46t-199 128.5t-131 197.5t-47 253q0 137 47 256.5t131 208t199 139t250 50.5q62 0 111.5 -19t90 -49t74 -67.5t63.5 -74.5l38 119q6 17 11 31t13 23.5t20.5 14.5 +t32.5 5h149q11 0 25.5 -3t25.5 -14q14 -11 21 -24t7 -33v-1018q0 -156 -51 -278t-139.5 -206t-209.5 -128t-260 -44q-54 0 -116 9.5t-123.5 28.5t-119 48.5t-101.5 68.5q-12 9 -21 21t-12.5 27t0 32.5t16.5 36.5l95 131q26 28 49 30t58 -24q25 -24 57.5 -38.5t67 -23t68 -11 +t60.5 -2.5q45 0 94 12t91.5 35.5t75 57.5t44.5 78zM468 638q0 -67 20.5 -124.5t58.5 -99.5t91.5 -66t118.5 -24q64 0 120.5 22.5t98.5 62.5t67.5 94t28.5 117v33q-3 61 -28.5 115.5t-67.5 96t-98.5 66t-120.5 24.5q-65 0 -118.5 -25.5t-91.5 -68.5t-58.5 -101t-20.5 -122z +M766 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="gcircumflex" unicode="ĝ" horiz-adv-x="1537" +d="M1040 44q11 34 10.5 77.5t-0.5 88.5q-29 -31 -59 -65.5t-66.5 -64t-82.5 -48.5t-107 -19q-135 0 -250 46t-199 128.5t-131 197.5t-47 253q0 137 47 256.5t131 208t199 139t250 50.5q62 0 111.5 -19t90 -49t74 -67.5t63.5 -74.5l38 119q6 17 11 31t13 23.5t20.5 14.5 +t32.5 5h149q11 0 25.5 -3t25.5 -14q14 -11 21 -24t7 -33v-1018q0 -156 -51 -278t-139.5 -206t-209.5 -128t-260 -44q-54 0 -116 9.5t-123.5 28.5t-119 48.5t-101.5 68.5q-12 9 -21 21t-12.5 27t0 32.5t16.5 36.5l95 131q26 28 49 30t58 -24q25 -24 57.5 -38.5t67 -23t68 -11 +t60.5 -2.5q45 0 94 12t91.5 35.5t75 57.5t44.5 78zM468 638q0 -67 20.5 -124.5t58.5 -99.5t91.5 -66t118.5 -24q64 0 120.5 22.5t98.5 62.5t67.5 94t28.5 117v33q-3 61 -28.5 115.5t-67.5 96t-98.5 66t-120.5 24.5q-65 0 -118.5 -25.5t-91.5 -68.5t-58.5 -101t-20.5 -122z +M746 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="gcommaaccent" unicode="ģ" horiz-adv-x="1537" +d="M1040 44q11 34 10.5 77.5t-0.5 88.5q-29 -31 -59 -65.5t-66.5 -64t-82.5 -48.5t-107 -19q-135 0 -250 46t-199 128.5t-131 197.5t-47 253q0 137 47 256.5t131 208t199 139t250 50.5q62 0 111.5 -19t90 -49t74 -67.5t63.5 -74.5l38 119q6 17 11 31t13 23.5t20.5 14.5 +t32.5 5h149q11 0 25.5 -3t25.5 -14q14 -11 21 -24t7 -33v-1018q0 -156 -51 -278t-139.5 -206t-209.5 -128t-260 -44q-54 0 -116 9.5t-123.5 28.5t-119 48.5t-101.5 68.5q-12 9 -21 21t-12.5 27t0 32.5t16.5 36.5l95 131q26 28 49 30t58 -24q25 -24 57.5 -38.5t67 -23t68 -11 +t60.5 -2.5q45 0 94 12t91.5 35.5t75 57.5t44.5 78zM468 638q0 -67 20.5 -124.5t58.5 -99.5t91.5 -66t118.5 -24q64 0 120.5 22.5t98.5 62.5t67.5 94t28.5 117v33q-3 61 -28.5 115.5t-67.5 96t-98.5 66t-120.5 24.5q-65 0 -118.5 -25.5t-91.5 -68.5t-58.5 -101t-20.5 -122z +M904 1541q0 -20 -11 -32t-33 -12h-242q-17 0 -31.5 12t-14.5 32v216q0 43 3 85q6 78 49 143.5t121 110.5q1 1 7.5 3t14 4t14.5 3.5t9 1.5q8 0 13 -4t11 -10l38 -29q17 -12 20 -20.5t3 -16.5q0 -11 -13.5 -25t-30 -33t-30 -43t-13.5 -55v-44q0 -18 18 -21h57q20 0 30.5 -12 +t10.5 -32v-222z" /> + <glyph glyph-name="gdotaccent" unicode="ġ" horiz-adv-x="1537" +d="M1040 44q11 34 10.5 77.5t-0.5 88.5q-29 -31 -59 -65.5t-66.5 -64t-82.5 -48.5t-107 -19q-135 0 -250 46t-199 128.5t-131 197.5t-47 253q0 137 47 256.5t131 208t199 139t250 50.5q62 0 111.5 -19t90 -49t74 -67.5t63.5 -74.5l38 119q6 17 11 31t13 23.5t20.5 14.5 +t32.5 5h149q11 0 25.5 -3t25.5 -14q14 -11 21 -24t7 -33v-1018q0 -156 -51 -278t-139.5 -206t-209.5 -128t-260 -44q-54 0 -116 9.5t-123.5 28.5t-119 48.5t-101.5 68.5q-12 9 -21 21t-12.5 27t0 32.5t16.5 36.5l95 131q26 28 49 30t58 -24q25 -24 57.5 -38.5t67 -23t68 -11 +t60.5 -2.5q45 0 94 12t91.5 35.5t75 57.5t44.5 78zM468 638q0 -67 20.5 -124.5t58.5 -99.5t91.5 -66t118.5 -24q64 0 120.5 22.5t98.5 62.5t67.5 94t28.5 117v33q-3 61 -28.5 115.5t-67.5 96t-98.5 66t-120.5 24.5q-65 0 -118.5 -25.5t-91.5 -68.5t-58.5 -101t-20.5 -122z +M602 1669q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189z" /> + <glyph glyph-name="iacute" unicode="í" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM283 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219 +q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ibreve" unicode="ĭ" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM354 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5 +q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="icircumflex" unicode="î" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM335 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143 +q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="idieresis" unicode="ï" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM-1 1670q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM435 1670q0 42 44 42 +h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="igrave" unicode="ì" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM487 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258 +q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="imacron" unicode="ī" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM-68 1665q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="iogonek" unicode="į" +d="M164 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM164 1698q0 42 18 59.5t56 17.5h232q35 0 56.5 -17.5t21.5 -59.5v-195q0 -12 -5.5 -26t-15.5 -27t-24.5 -21.5t-32.5 -8.5h-232 +q-74 0 -74 83v195zM468 12q14 -14 17 -25.5t3 -22.5q0 -29 -15 -51t-37.5 -40t-48.5 -33.5t-48.5 -31t-37.5 -32.5t-15 -39q0 -63 171 -106q11 -6 11 -22q0 -9 -11 -35.5t-27 -54.5t-34 -50t-33 -22h-5q-76 23 -138.5 57.5t-107 74.5t-69 81t-24.5 77q0 37 15.5 64.5 +t38.5 49t49.5 38t49.5 31t38.5 28t15.5 29.5q0 20 -22 35h264z" /> + <glyph glyph-name="itilde" unicode="ĩ" +d="M173 1192q0 32 18 55t56 23h229q12 0 26 -5.5t26 -16t20.5 -24.5t8.5 -32v-1115q0 -38 -21 -57.5t-60 -19.5h-229q-74 0 -74 77v1115zM5 1618q19 27 45 49t56 37.5t62 23.5t64 8q18 0 39 -4t46 -14t56 -26.5t69 -41.5q11 -7 21.5 -11t23.5 -4q21 0 35 8.5t26 21.5l33 40 +q9 13 19.5 13.5t19.5 -8.5l103 -90q11 -11 14.5 -19t-6.5 -21l-30 -39q-40 -55 -99 -86t-125 -31q-39 0 -79 13.5t-77 36.5l-55 35q-11 7 -21 11t-24 4q-20 0 -34.5 -8t-25.5 -21l-31 -40q-6 -10 -21 -11.5t-24 7.5l-103 87q-5 5 -8.5 9.5t-3.5 13.5q0 1 0.5 4t4 9 +t10.5 16.5t20 27.5z" /> + <glyph glyph-name="jcircumflex" unicode="ĵ" horiz-adv-x="628" +d="M125 1192q0 39 25 58.5t55 19.5h227q36 0 56 -23t20 -55v-1148q0 -93 -39 -175t-105 -143t-151.5 -96t-178.5 -35h-24q-36 2 -55 22.5t-19 49.5v143q0 36 22.5 58t54.5 22h21q20 0 37 16.5t29 40.5t18.5 50.5t6.5 46.5v1148zM292 1801q7 5 11 7t11 2q8 0 20 -9l257 -256 +q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="oacute" unicode="ó" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM688 1670q5 23 20.5 32.5t32.5 9.5h258 +q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ocircumflex" unicode="ô" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM737 1757q7 5 11 7t11 2q8 0 20 -9 +l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="obreve" unicode="ŏ" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM757 1413q-59 1 -109 22.5t-87 56.5 +t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="odieresis" unicode="ö" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM402 1671q0 42 42 42h196q14 0 27.5 -11 +t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM838 1671q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="ograve" unicode="ò" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM887 1464q2 -9 5 -22t3 -24t-5.5 -19 +t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="ohungarumlaut" unicode="ő" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM484 1669q19 42 53 42h212q17 0 24.5 -6 +t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20zM936 1669q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20z" /> + <glyph glyph-name="omacron" unicode="ō" horiz-adv-x="1519" +d="M105 634q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q136 0 255.5 -50.5t208 -139t140 -208t51.5 -258.5q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5t-174.5 -23q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5 +t-66 157.5t-23.5 176.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM335 1665q0 35 35 35h779q15 0 25 -8.5 +t10 -26.5v-154q0 -12 -9 -26t-26 -14h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="racute" unicode="ŕ" horiz-adv-x="1151" +d="M120 1196q0 17 7.5 32.5t18.5 24.5q26 17 54 17h151q19 0 30 -7t18.5 -18t13 -25t13.5 -28q2 -4 8 -19.5t13 -34t13.5 -35t8.5 -21.5q30 33 57.5 69.5t58.5 67.5t69 51t90 20q54 0 96.5 -8t80.5 -23.5t75.5 -39.5t81.5 -56q69 -37 26 -110l-91 -155q-20 -30 -49 -37 +t-63 9q-43 42 -87.5 62.5t-101.5 20.5q-39 0 -68.5 -11t-53.5 -31t-45 -48t-42 -62v-724q0 -38 -18.5 -57.5t-61.5 -19.5h-225q-78 0 -78 77v1119zM444 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10 +h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="rcaron" unicode="ř" horiz-adv-x="1151" +d="M120 1196q0 17 7.5 32.5t18.5 24.5q26 17 54 17h151q19 0 30 -7t18.5 -18t13 -25t13.5 -28q2 -4 8 -19.5t13 -34t13.5 -35t8.5 -21.5q30 33 57.5 69.5t58.5 67.5t69 51t90 20q54 0 96.5 -8t80.5 -23.5t75.5 -39.5t81.5 -56q69 -37 26 -110l-91 -155q-20 -30 -49 -37 +t-63 9q-43 42 -87.5 62.5t-101.5 20.5q-39 0 -68.5 -11t-53.5 -31t-45 -48t-42 -62v-724q0 -38 -18.5 -57.5t-61.5 -19.5h-225q-78 0 -78 77v1119zM616 1362q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143 +q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="scaron" unicode="š" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34zM614 1369q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11 +q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="scircumflex" unicode="ŝ" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34zM575 1777q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11 +q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="umacron" unicode="ū" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM277 1665q0 35 35 35h779q15 0 25 -8.5t10 -26.5v-154q0 -12 -9 -26t-26 -14 +h-779q-35 0 -35 40v154z" /> + <glyph glyph-name="ugrave" unicode="ù" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM892 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10 +t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="uhungarumlaut" unicode="ű" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM434 1670q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5 +l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20zM886 1670q19 42 53 42h212q17 0 24.5 -6t8.5 -15t-2.5 -20.5t-8.5 -22.5l-88 -205q-12 -22 -23.5 -32t-30.5 -10h-219q-26 0 -26 22q0 8 1 17t8 20z" /> + <glyph glyph-name="udieresis" unicode="ü" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM344 1671q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5 +t-29.5 -15.5h-196q-42 0 -42 49v189zM780 1671q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="ubreve" unicode="ŭ" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM726 1413q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27 +t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="uacute" unicode="ú" horiz-adv-x="1404" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM636 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5 +t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="sacute" unicode="ś" horiz-adv-x="1158" +d="M310 395q27 -27 58.5 -45.5t60.5 -30t51 -16.5t30 -5q19 0 48.5 1.5t56.5 9t46.5 24.5t19.5 48q0 28 -11 44.5t-32 28t-51.5 20.5t-68.5 21q-120 32 -198 77t-123.5 100.5t-63.5 119.5t-18 135q0 83 33 151t94 116.5t146 75t189 26.5q63 0 118 -10.5t105 -33t97.5 -58 +t94.5 -84.5q17 -20 17.5 -37.5t-22.5 -37.5q-39 -32 -74.5 -63t-73.5 -69q-12 -10 -24 -12.5t-23 0.5t-21 10t-18 17q-35 39 -80 52.5t-84 13.5q-49 0 -78 -17t-27 -52q2 -26 19.5 -40.5t43 -23.5t54 -14.5t52.5 -12.5q90 -29 165 -63t130 -83.5t85.5 -118.5t30.5 -168 +t-39.5 -177t-108.5 -131t-163.5 -81t-203.5 -28q-62 0 -126 11t-124 35.5t-114 63t-96 93.5q-11 14 -16.5 29.5t-5 30.5t6 27.5t17.5 21.5l129 129q24 20 42.5 14t47.5 -34zM517 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215 +q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="ucircumflex" unicode="û" horiz-adv-x="1445" +d="M1299 17q-13 -11 -27.5 -14t-27.5 -3h-151q-18 0 -31 6.5t-22 17.5t-15 25t-10 29l-31 128q-15 -31 -43.5 -70.5t-72.5 -74t-105 -58t-140 -23.5q-114 0 -207 44t-158.5 120t-101.5 177.5t-36 216.5v655q0 38 16.5 57.5t52.5 19.5h231q43 0 59 -14.5t16 -56.5v-651 +q0 -43 19.5 -81.5t51.5 -68t72.5 -46.5t82.5 -17q36 0 74.5 17t71 45.5t53.5 67t21 81.5v650q0 17 6.5 34t19.5 26q13 8 24.5 11t26.5 3h226q43 0 62 -21t19 -56v-1119q0 -19 -8.5 -35t-23.5 -25zM709 1763q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19 +l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="eng" unicode="ŋ" horiz-adv-x="1445" +d="M146 1253q13 11 27.5 14t27.5 3h151q18 0 31 -6.5t22 -17.5t14.5 -25t10.5 -29l31 -128q15 31 43.5 70.5t72.5 74t104.5 58t140.5 23.5q114 0 207 -44t158.5 -120t101.5 -177.5t36 -216.5v-655q0 -38 -16.5 -57.5t-52.5 -19.5h-231q-43 0 -59 14.5t-16 56.5v651 +q0 43 -19.5 81.5t-51.5 68t-72.5 46.5t-82.5 17q-36 0 -73.5 -16t-69 -44.5t-53 -67t-24.5 -83.5v-650q0 -17 -6.5 -34t-19.5 -26q-13 -8 -24.5 -11t-26.5 -3h-226q-43 0 -62 21t-19 56v1119q0 19 8.5 35t23.5 25z" /> + <glyph glyph-name="oslash" unicode="ø" horiz-adv-x="1519" +d="M470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM341 127q-54 45 -98 100.5t-74.5 120t-47 137t-16.5 149.5 +q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q26 0 50.5 -2t49.5 -6l22 48q8 18 23.5 31t40.5 13h277q20 0 35.5 -8t15.5 -23q0 -11 -2 -13l-88 -194q107 -90 169 -219t62 -283q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5 +t-174.5 -23q-25 0 -49.5 2t-47.5 5l-23 -51q-11 -25 -21 -34.5t-31 -9.5h-300q-41 0 -41 26q0 2 1 4l3 14z" /> + <glyph glyph-name="oslashacute" unicode="ǿ" horiz-adv-x="1519" +d="M470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102t-20.5 -122zM341 127q-54 45 -98 100.5t-74.5 120t-47 137t-16.5 149.5 +q0 92 23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q26 0 50.5 -2t49.5 -6l22 48q8 18 23.5 31t40.5 13h277q20 0 35.5 -8t15.5 -23q0 -11 -2 -13l-88 -194q107 -90 169 -219t62 -283q0 -92 -23.5 -176.5t-66 -157.5t-102 -132.5t-132.5 -102t-156.5 -65.5 +t-174.5 -23q-25 0 -49.5 2t-47.5 5l-23 -51q-11 -25 -21 -34.5t-31 -9.5h-300q-41 0 -41 26q0 2 1 4l3 14zM628 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z +" /> + <glyph glyph-name="oe" unicode="œ" horiz-adv-x="2382" +d="M2151 152q-88 -81 -198 -126.5t-233 -45.5q-141 0 -265.5 52.5t-217.5 145.5q-90 -94 -211.5 -147.5t-262.5 -53.5q-92 0 -176.5 23t-157.5 65.5t-132.5 102t-102 132.5t-66 157.5t-23.5 176.5t23.5 177t66 157.5t102 132t132.5 101.5t157.5 65t176.5 23q137 0 256.5 -51 +t208.5 -141q85 89 198.5 140.5t250.5 51.5q124 0 232.5 -47t191.5 -128.5t136 -191t67 -233.5q-1 -52 -2.5 -85t-15.5 -52.5t-46 -27t-95 -7.5h-730q10 -64 40.5 -107t70.5 -68.5t85 -36.5t85 -11q36 0 74 7.5t73.5 20t65 29t47.5 34.5q16 13 27.5 19.5t24.5 6.5t26.5 -9 +t30.5 -26l106 -120q11 -13 14 -23.5t3 -21.5q0 -20 -11 -34.5t-26 -25.5zM470 634q0 -66 20.5 -123.5t58 -99.5t91 -66.5t120.5 -24.5q65 0 117.5 24.5t89 66.5t56 99.5t19.5 123.5q0 64 -19.5 122t-56 102t-89 69.5t-117.5 25.5q-67 0 -120.5 -25.5t-91 -69.5t-58 -102 +t-20.5 -122zM1670 985q-39 0 -75.5 -15.5t-68.5 -41.5t-57.5 -59t-41.5 -67h511q-21 39 -45.5 72t-56 58t-72 39t-94.5 14z" /> + <glyph glyph-name="Aacute" unicode="Á" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM686 1888q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Lacute" unicode="Ĺ" horiz-adv-x="1179" +d="M126 1442q0 18 12 31t33 13h296q17 0 31 -12t15 -32v-1088h550q18 0 31 -12t13 -33v-263q0 -17 -11.5 -31t-32.5 -15h-893q-44 0 -44 44v1398zM224 1886q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219 +q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="Wcircumflex" unicode="Ŵ" horiz-adv-x="2156" +d="M571 21q-10 17 -19 35t-16 36q-129 340 -257 674t-257 674q0 5 -1.5 9t-1.5 8q0 28 37 28h322q38 0 52 -38l306 -911l283 911q14 38 55 38h325q23 0 32.5 -8.5t9.5 -22.5q0 -8 -1 -11v-3l-178 -510l134 -393l324 910q14 38 55 38h315q23 0 32.5 -8.5t9.5 -22.5 +q0 -8 -1 -11v-3q-68 -176 -139 -351t-142.5 -350t-142 -350.5t-137.5 -350.5q-4 -11 -18 -24.5t-34 -13.5h-3h-242q-22 0 -33.5 8.5t-16.5 22.5l-158 416q-34 -91 -67 -178.5t-66 -178.5q-5 -14 -11.5 -29.5t-15.5 -29t-20.5 -22.5t-26.5 -9h-3h-242q-32 0 -42 21z +M1056 1984q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="Abreve" unicode="Ă" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM763 1610q-59 1 -109 22.5t-87 56.5t-58 79.5t-21 92.5q0 17 11.5 27t26.5 10h144q11 0 17 -6.5t6 -15.5q0 -23 18 -41.5t56 -18.5q34 0 52.5 19t18.5 41q0 9 5 15.5t16 6.5h146 +q15 0 26.5 -10t11.5 -27q0 -49 -21.5 -94t-59.5 -79.5t-89 -55.5t-110 -22z" /> + <glyph glyph-name="Acircumflex" unicode="Â" horiz-adv-x="1531" +d="M586 1446q1 6 6.5 13t13.5 13t17 9.5t17 3.5h256q17 0 29 -10.5t18 -18.5l25 -57l525 -1354q8 -20 -3 -32.5t-38 -12.5h-287q-23 0 -35.5 8.5t-19.5 28.5q-20 51 -39 101.5t-38 101.5h-531q-19 -51 -38.5 -101.5t-38.5 -101.5q-13 -37 -51 -37h-295q-19 0 -31.5 10 +t-4.5 30zM768 1018q-19 -51 -38.5 -110t-38.5 -119t-38.5 -118.5t-38.5 -109.5h307zM743 1985q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87q-5 5 -6.5 10.5 +t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="ygrave" unicode="ỳ" horiz-adv-x="1419" +d="M43 1174q-16 40 -0.5 68.5t68.5 28.5h247q25 0 41 -15.5t24 -38.5l283 -805l277 805q11 32 28 43t47 11h257q28 0 44 -7.5t22.5 -20t4.5 -28t-8 -30.5q-38 -94 -83 -205.5t-93.5 -232t-98.5 -245t-97.5 -244.5t-91.5 -230.5t-80.5 -203t-63.5 -162.5t-41 -108l3 5 +q-7 -27 -25 -43.5t-44 -16.5h-231q-45 0 -61.5 17.5t-16.5 51.5q0 13 3.5 20t5.5 9l157 408zM830 1464q2 -9 5 -22t3 -24t-5.5 -19t-20.5 -8h-219q-19 0 -30.5 10t-23.5 32l-98 215q-5 11 -7 22.5t0.5 20.5t10 15t22.5 6h258q17 0 32.5 -9.5t20.5 -32.5z" /> + <glyph glyph-name="ydieresis" unicode="ÿ" horiz-adv-x="1419" +d="M43 1174q-16 40 -0.5 68.5t68.5 28.5h247q25 0 41 -15.5t24 -38.5l283 -805l277 805q11 32 28 43t47 11h257q28 0 44 -7.5t22.5 -20t4.5 -28t-8 -30.5q-38 -94 -83 -205.5t-93.5 -232t-98.5 -245t-97.5 -244.5t-91.5 -230.5t-80.5 -203t-63.5 -162.5t-41 -108l3 5 +q-7 -27 -25 -43.5t-44 -16.5h-231q-45 0 -61.5 17.5t-16.5 51.5q0 13 3.5 20t5.5 9l157 408zM352 1671q0 42 42 42h196q14 0 27.5 -11t13.5 -31v-189q0 -18 -11.5 -33.5t-29.5 -15.5h-196q-42 0 -42 49v189zM788 1671q0 42 44 42h193q42 0 42 -42v-189q0 -18 -11 -33.5 +t-31 -15.5h-193q-44 0 -44 49v189z" /> + <glyph glyph-name="ycircumflex" unicode="ŷ" horiz-adv-x="1419" +d="M43 1174q-16 40 -0.5 68.5t68.5 28.5h247q25 0 41 -15.5t24 -38.5l283 -805l277 805q11 32 28 43t47 11h257q28 0 44 -7.5t22.5 -20t4.5 -28t-8 -30.5q-38 -94 -83 -205.5t-93.5 -232t-98.5 -245t-97.5 -244.5t-91.5 -230.5t-80.5 -203t-63.5 -162.5t-41 -108l3 5 +q-7 -27 -25 -43.5t-44 -16.5h-231q-45 0 -61.5 17.5t-16.5 51.5q0 13 3.5 20t5.5 9l157 408zM687 1801q7 5 11 7t11 2q8 0 20 -9l257 -256q8 -6 8 -23q0 -9 -9 -19l-88 -90q-11 -11 -27 -11q-13 0 -22 9l-139 142l-142 -143q-11 -11 -23.5 -8t-20.5 11l-90 87 +q-5 5 -6.5 10.5t-2.5 11.5q0 8 2.5 13t6.5 9z" /> + <glyph glyph-name="yacute" unicode="ý" horiz-adv-x="1419" +d="M43 1174q-16 40 -0.5 68.5t68.5 28.5h247q25 0 41 -15.5t24 -38.5l283 -805l277 805q11 32 28 43t47 11h257q28 0 44 -7.5t22.5 -20t4.5 -28t-8 -30.5q-38 -94 -83 -205.5t-93.5 -232t-98.5 -245t-97.5 -244.5t-91.5 -230.5t-80.5 -203t-63.5 -162.5t-41 -108l3 5 +q-7 -27 -25 -43.5t-44 -16.5h-231q-45 0 -61.5 17.5t-16.5 51.5q0 13 3.5 20t5.5 9l157 408zM627 1670q5 23 20.5 32.5t32.5 9.5h258q15 0 22.5 -6t10 -15t0.5 -20.5t-7 -22.5l-98 -215q-12 -22 -23.5 -32t-30.5 -10h-219q-15 0 -20.5 8t-5.5 19t3 24t5 22z" /> + <glyph glyph-name="zcaron" unicode="ž" horiz-adv-x="1286" +d="M140 1197q0 35 21.5 56.5t58.5 21.5h842q32 0 56.5 -19.5t24.5 -58.5v-174q0 -9 -1.5 -21t-10.5 -24l-551 -654h494q36 0 57.5 -19.5t21.5 -61.5v-157q0 -15 -5.5 -30.5t-16 -28t-25 -20t-32.5 -7.5h-882q-16 0 -30.5 7.5t-26 19.5t-18 27.5t-6.5 31.5v138q0 14 2.5 27 +t14.5 27q67 74 140.5 160.5t148.5 175.5t149 176t141 162h-487q-37 0 -58.5 20t-21.5 63v162zM665 1315q-7 -5 -11 -7t-11 -2q-8 0 -20 9l-257 256q-8 6 -8 23q0 8 9 19l88 90q11 11 27 11q13 0 22 -9l139 -142l142 143q11 11 23.5 8t20.5 -11l90 -87q5 -5 6.5 -10.5 +t2.5 -11.5q0 -8 -2.5 -13t-6.5 -9z" /> + <glyph glyph-name="I" unicode="I" +d="M165 1441q0 18 11 31t33 13h294q15 0 32 -12t17 -32v-1397q0 -44 -49 -44h-294q-44 0 -44 44v1397z" /> + <glyph glyph-name="uni2219" unicode="∙" horiz-adv-x="505" +d="M89 658q0 36 13.5 67t37 54t54.5 36.5t67 13.5q35 0 66 -13.5t54.5 -36.5t37 -54t13.5 -67q0 -35 -13.5 -66.5t-37 -55t-54.5 -37t-66 -13.5q-36 0 -67 13.5t-54.5 37t-37 55t-13.5 66.5z" /> + <glyph glyph-name="at" unicode="@" horiz-adv-x="1697" +d="M1205 336q-72 -60 -161 -96t-190 -36t-188.5 36t-159.5 96h699zM465 376q-62 70 -96 159t-34 190q0 96 30 178.5t87 151.5h690zM504 1113q71 63 160 98.5t190 35.5t189.5 -36t155.5 -98h-695zM1373 725q0 -96 -30.5 -179.5t-85.5 -153.5h-693l677 684q66 -82 99 -168.5 +t33 -182.5zM1022 120q-41 -11 -82 -17t-86 -6q-89 0 -170.5 23t-151.5 65t-126.5 100t-96.5 127.5t-62 149t-22 163.5q0 89 23 171t65 152t100 127t128 97t149.5 62t163.5 22q136 0 251 -52t199 -139.5t131 -201.5t47 -238q0 -113 -36 -211t-98 -176t-146 -133.5t-180 -84.5 +zM1006 1282q-34 11 -72 16.5t-80 5.5q-83 0 -158 -21.5t-139 -60t-115.5 -92.5t-88 -118t-56 -137t-19.5 -150q0 -78 20 -151t57 -137.5t89 -118t116 -92t138.5 -60t155.5 -21.5q119 0 224.5 45.5t184 124t124 184t45.5 226.5q0 106 -34 197.5t-92 163.5t-135.5 122 +t-164.5 74zM165 328l32 -54l-28 -17l-57 96l13 7q9 6 16 4l99 -10l-31 53l28 16l55 -95l-13 -7q-6 -2 -7 -2q-3 -2 -8 -2zM252 154l-61 73l109 92l62 -74l-25 -20l-41 46l-15 -14l31 -36l-25 -22l-31 37l-19 -14l39 -46zM347 211l22 25l86 -73l-20 -24l-31 26l-71 -85 +l-25 22l70 83zM487 145l23 -16l-19 -152l-21 11q-1 3 -4 4q-3 3 -3 5q-2 4 -2 6v6l2 17l-47 28l-14 -10q-1 -1 -2.5 -1t-2.5 -1h-6q-2 -1 -3.5 -0.5t-2.5 0.5q-2 1 -4 1t-3 1l-18 11zM474 97l-2 -2q-4 -2 -3 -2l-1 -2q0 -1 -1 -1l-21 -15l22 -14l2 27q0 1 1 1.5t1 1.5 +q0 2 0.5 2t0.5 1t0.5 1.5t0.5 1.5zM621 18l-13 -31l-47 19l-18 -49l-33 13l53 131l87 -34l-10 -30l-58 21l-8 -21zM632 -3q1 8 6 19q6 6 11 14q3 4 6.5 7t6.5 6q5 3 9 4.5t9 3.5q4 2 9 2.5t10 1.5h9.5t9.5 -2t9.5 -3t8.5 -3q10 -5 16 -10l7 -7t5 -7q7 -8 8 -18q2 -5 3 -9 +t2 -9v-9.5t-1 -9.5q-1 -10 -7 -19q-3 -4 -5.5 -7.5t-5.5 -7.5q-4 -7 -13 -12q-5 -2 -9 -4t-9 -4t-9 -3t-9 -1h-9.5t-11.5 2q-5 1 -8.5 2t-8.5 3q-4 2 -8 4.5t-8 6.5q-4 3 -6.5 7t-5.5 7q-2 4 -4.5 8t-4.5 8q-2 12 -4 19v10t2 10zM666 -10q-1 -9 0 -16q1 -3 2 -6.5t3 -7.5 +q4 -6 10 -11q3 -2 7 -3t9 -2q6 -3 14 0q9 1 14 4q7 6 11 12q2 4 4 7.5t3 6.5q2 8 0 17q-1 5 -7 13q-2 4 -4.5 6.5l-5.5 5.5q-4 2 -7 3t-8 3q-8 2 -14 0q-5 -2 -8.5 -3t-7.5 -3q-2 -2 -4.5 -5t-4.5 -7q-4 -4 -6 -14zM917 -103l-30 -1l-65 95l1 -95l-34 -1l-2 143h15h13 +q7 0 9 -1q4 -3 5 -5l50 -71q1 -1 1 -2t1 -2q0 -2 1 -2.5t1 -1.5q0 -4 1 -5l-3 91h35zM933 8l-6 33l112 20l6 -31l-39 -8l21 -107l-33 -6l-20 107zM1102 51q-4 0 -6 -2q-3 0 -3 -2l-2 -4q0 -1 1 -2q0 -3 3 -4q1 0 1.5 -1t2.5 -1h10h10h9t9 -1q4 -2 6.5 -2.5t6.5 -2.5 +q7 -5 12 -9t7 -14q4 -9 3 -18q0 -6 -2 -9.5t-4 -8.5q-2 -4 -4.5 -7.5t-7.5 -8.5q-5 -2 -9 -4.5t-9 -4.5l-8 -2t-9 -1q-6 -2 -15 2q-8 1 -15 5q-3 2 -6 4.5t-5 6.5l7 10q2 2 4 3q3 3 4 3q3 1 10 1q2 0 3.5 -0.5t3.5 -0.5t3.5 -1t3.5 -1q5 0 7 2q3 0 4 0.5l3 1.5l5 5q2 2 2 7 +v6l-3 3q-1 1 -5 1q-2 2 -4 2h-4h-10h-7t-8 1q-6 0 -14 2q-4 2 -7.5 4t-5.5 4q-5 5 -10 15q-2 5 -2 9.5v7.5q1 5 2 8.5t4 7.5q2 5 4.5 7.5t6.5 5.5q7 5 15 8q2 1 5 2t8 1q2 0 5 -1t7 -1q2 -1 5 -1.5t8 -2.5q2 -2 4.5 -2.5t4.5 -2.5l-6 -11q-1 -3 -3 -7q-3 -1 -5 -1.5t-4 -0.5 +q-1 -1 -4 -1h-5h-5q-2 0 -3 -2zM1192 -10q0 2 -1 3.5t-1 3.5q0 5 2 7q0 2 3 7q1 3 6 5q3 1 4.5 1t3.5 1q2 0 3.5 -0.5t3.5 -0.5q5 -2 6 -4q3 -1 5 -7q4 -4 4 -7q0 -5 -2 -7t-2.5 -3.5t-1.5 -2.5q-1 -2 -2.5 -3t-3.5 -3q-6 -2 -7 -2q-5 0 -7 1q-5 0 -9 4q-3 2 -4 7zM1244 76 +q2 -6 11 -11q3 -3 6.5 -4t7.5 -3q6 -2 15 0q4 0 7 2t7 4q3 2 5 4.5t5 4.5l6 9q2 7 7 11q2 2 4 2t4 1h8l12 -2q-1 -5 -2 -9.5t-3 -8.5q-1 -5 -6 -15q-3 -8 -10 -13q-7 -7 -11 -10q-5 -3 -9.5 -5.5t-9.5 -3.5q-8 -4 -18 -4q-5 -1 -9.5 -0.5t-9.5 1.5q-3 2 -7.5 2.5t-9.5 2.5 +q-4 3 -8 5.5t-7 6.5q-4 3 -7.5 6t-6.5 7q-2 5 -4 9.5t-4 9.5q-1 4 -1.5 8.5t-2.5 9.5v9t2 9q1 9 5 18q3 4 5 8t6 8q3 4 7 7t9 6q7 4 13 7q4 2 7.5 2.5t8.5 2.5h17q5 0 9 -1t7 -2l-1 -13q-2 -4 -3 -7l-3 -3l-3 -3q-8 -4 -13 -4q-7 0 -11 -2q-5 -1 -12 -4q-7 -4 -10 -11 +q-5 -8 -5 -14q-2 -8 0 -16q2 -10 6 -14zM1329 132q-4 4 -6.5 7.5t-5.5 8.5q-2 5 -3.5 9t-2.5 9q-2 5 -2 9v9t0.5 9.5t1.5 9.5t3 9t4 9q3 3 5.5 7t6.5 7q4 4 8 7l8 6q4 2 8 3.5t9 2.5q5 2 9 2h9h9.5t9.5 -2q5 -1 9.5 -2.5t8.5 -3.5q5 -3 8 -6t8 -7q3 -4 5.5 -7.5t5.5 -8.5 +q2 -4 3.5 -8t3.5 -9q1 -5 1 -9.5v-9.5q0 -7 -2 -17q-1 -5 -3 -9.5t-4 -8.5q-4 -8 -12 -16q-4 -4 -7.5 -6.5t-7.5 -4.5q-5 -2 -9 -4t-9 -3q-9 -3 -19 -3q-9 0 -18 3q-5 1 -9 3t-9 4q-3 2 -7 5zM1353 156q3 -3 6.5 -5t7.5 -4q6 -2 14 -2q11 0 15 2q4 1 7 3.5t6 5.5q8 6 9 12 +q3 7 3 15q0 7 -3 15q-1 7 -9 13q-6 7 -13 10q-6 3 -15 3q-4 0 -7 -0.5t-7 -1.5q-4 -2 -7.5 -4t-6.5 -6q-5 -4 -9 -13q-2 -3 -2 -7v-8q0 -10 2 -14t4 -7.5t5 -6.5zM1584 332l-18 -29l-58 37l41 -61l-15 -24l-71 13l55 -37l-19 -28l-119 78l13 19q3 5 9 8q3 1 6.5 1h5.5 +l84 -13l-47 70q-2 4 -3 6.5t-1 5.5q0 4 1 6.5t3 5.5l13 19zM202 939l-7 -19l-133 50l18 47q3 10 8 15q7 9 15 11q4 2 7.5 3t8.5 1t9 -0.5t9 -1.5q9 -4 14 -11q5 -2 6.5 -5.5t3.5 -7.5t3 -8.5t2 -7.5q0 -9 -3 -18l-10 -30zM145 994q0 2 0.5 4.5t0.5 4.5q0 3 -0.5 5t-1.5 5 +q-1 2 -2.5 4t-3.5 4q-3 3 -7 5q-3 1 -6 1h-5q-3 0 -5 -0.5t-4 -1.5q-2 -2 -4 -2.5t-4 -2.5q-4 -6 -5 -9l-11 -30l47 -17zM274 1094l-42 -77l-124 68l42 77l17 -10l-33 -59l36 -20l27 49l17 -9l-27 -48l37 -22l33 60zM294 1120l-12 -16l-113 87l30 41q4 2 7 5t6 5q4 3 7.5 4 +t7.5 2h8t8 -1q9 -2 15 -8q3 -2 5 -4.5t4 -5.5q2 -2 3.5 -5l2.5 -5q1 -5 1 -8v-6q0 -6 -2 -12l75 -2l-7 -11q-3 -4 -8 -6q-3 -1 -5 -2t-4 -1l-63 2l-13 -17zM196 1195l35 -27l19 26q2 1 2.5 3t2.5 4v8q0 2 -1 4t-2 5q-4 4 -6 5q-4 4 -8 4q-2 1 -8 1q-2 -1 -4 -1t-4 -1 +q-4 -2 -6 -6zM306 1311q-4 -1 -6 -1t-4 -1t-5 -4q-4 -3 -6 -7q-3 -3 -3 -8v-7q1 -3 4 -6q3 -4 6 -5h6q3 0 9 2q3 2 5.5 2.5t6.5 2.5q2 1 3.5 2t2.5 1q2 1 8 3q4 0 7 3q1 0 2.5 0.5t3.5 0.5q20 2 32 -12q10 -6 11 -16q1 -5 1.5 -8t0.5 -8q-1 -5 -2 -9.5t-3 -8.5 +q-2 -5 -5.5 -8.5t-5.5 -6.5q-13 -12 -31 -15h-6q-3 2 -6 2q-2 0 -3.5 0.5t-2.5 0.5t-1 0.5t-1 0.5l1 5q1 2 1.5 3.5t1.5 3.5q8 5 12 5h3q3 0 9 2q4 1 10 6q2 2 2.5 4t2.5 4q3 4 3 11q2 4 0 9q0 3 -1.5 5t-3.5 4q-3 5 -9 5q-5 3 -9 0q-6 0 -9 -3q-8 -2 -11 -5q-4 -1 -14 -5 +q-4 -2 -8 -2t-6 -1q-10 0 -14 1q-3 2 -7 4t-6 6q-7 6 -9 14q-2 9 -1 14q2 11 5 15q2 5 8 13q6 5 11 6q4 4 10 4q10 2 12 2q7 0 10 -1l-1 -6q0 -3 -4 -9q-3 -4 -7 -4zM366 1306q-2 4 -4.5 8.5t-3.5 9.5q-5 10 -5 18q-1 5 -0.5 9.5t0.5 9.5q2 5 3.5 9.5t3.5 8.5q2 5 4.5 8 +t5.5 8q6 6 15 12q8 7 17 8q9 4 19 4q9 3 19 0q5 -1 8 -2.5t8 -3.5t9 -4.5t8 -5.5t6.5 -6.5t6.5 -8.5q2 -4 4.5 -8t3.5 -9q4 -9 4 -18q2 -10 0 -19q-1 -5 -2.5 -9t-3.5 -9q-5 -10 -11 -16q-4 -3 -6.5 -6.5t-7.5 -5.5q-14 -10 -26 -11q-15 -4 -29 0q-7 1 -13 3.5t-13 5.5 +q-12 8 -20 20zM383 1318q4 -10 14 -15q8 -5 19 -7q10 -3 21 0q10 2 18 8q11 6 15 15q3 5 4.5 9t3.5 9q1 11 0 22q-2 4 -3.5 8.5t-5.5 9.5q-5 9 -15 15q-10 7 -18 8q-11 2 -20 0q-11 -2 -20 -9q-9 -6 -15 -15q-3 -5 -4.5 -9.5t-3.5 -9.5q-2 -9 0 -20q2 -5 3.5 -9.5t6.5 -9.5z +M552 1340l-19 -8l-54 132l14 6q4 2 8 2q5 0 6 -2l109 -70l1 -1q1 -2 1 -3q2 0 2 -0.5t1 -0.5l-46 109l19 7l54 -131l-14 -6q-4 -1 -8 -1q-5 0 -8 1l-106 70q-2 0 -2 0.5t-2 0.5q0 2 -1 3q-1 0 -1 1v2zM681 1533l19 3l88 -127l-11 -2q-2 -1 -4 -0.5t-4 0.5q-5 1 -7 6l-14 20 +l-71 -14l-5 -24q-2 -5 -5 -8q-1 -2 -3.5 -3t-4.5 -1l-11 -2zM695 1504l-14 -64l55 11l-37 53q-2 2 -2 4t-2 4v-4v-4zM789 1406l-5 143l19 1l5 -123l63 3l1 -21zM950 1458q-2 -8 0 -15q1 -3 2.5 -6.5t3.5 -5.5q2 -3 4.5 -5.5l4.5 -4.5q4 -2 7.5 -4t7.5 -3q10 0 14 1q5 0 8 2 +l6 4q6 4 10 10q2 3 3.5 6.5t3.5 7.5l14 85l20 -2l-17 -87q-1 -3 -1.5 -6.5t-2.5 -7.5l-3.5 -7t-3.5 -6q-3 -2 -6.5 -4.5t-5.5 -4.5q-5 -4 -12 -6q-4 -2 -8 -2.5t-7 -1.5q-10 0 -15 1q-5 0 -8 1.5l-7 3.5q-4 1 -6.5 3t-5.5 4q-7 5 -11 11q-2 5 -6 13q-3 7 -3 15q0 10 1 15 +l14 85l20 -4zM1135 1476q-1 2 -2.5 3.5t-2.5 3.5q-2 1 -4 1.5t-4 1.5q-3 2 -9 2h-7q-3 -3 -7 -4q-3 -3 -3 -6q-3 -5 -1 -8q0 -4 2 -6q1 -2 2 -3.5t4 -3.5q3 -3 9 -7q2 -2 3 -3.5t3 -2.5t3 -2.5t3 -2.5l2.5 -2.5t3.5 -2.5l1.5 -3t2.5 -3q10 -15 4 -33q-2 -5 -4.5 -9t-4.5 -7 +q-5 -3 -8.5 -5.5t-7.5 -3.5q-8 -4 -17 -4q-5 0 -9 0.5t-9 1.5q-18 8 -27 23q0 1 -1.5 2.5l-2.5 2.5q0 2 -0.5 3t-0.5 3q-1 1 -1 4v3l6 2q4 0 7 -2q6 -1 9 -7v-1l3 -4.5t3 -3.5q4 -2 6 -3.5t5 -2.5q2 0 4.5 -0.5t4.5 -0.5h6t5 1q7 2 9 5q5 5 6 9q3 6 0 10q0 2 -1 4l-2 4 +q-2 2 -3.5 4t-3.5 4q-2 1 -4 2.5t-6 3.5q-2 3 -5 5.5t-5 5.5q-3 2 -5 5t-4 7q-2 2 -3.5 5t-1.5 6q-2 7 3 17q1 8 7 14q7 6 13 7q5 2 8.5 2.5t6.5 0.5q4 0 8 -1t9 -2q4 -1 9 -6q5 -4 9 -9l4 -4t3 -4q1 -3 1.5 -5t1.5 -4l-6 -3q-5 -2 -10 0q-5 4 -7 6zM1209 1310l-78 41 +l64 127l78 -41l-8 -18l-60 32l-19 -37l49 -25l-10 -18l-49 26l-19 -37l61 -32zM1298 1338q7 10 16 13q3 3 7 5l8 4q5 2 9.5 2t9.5 1h9.5t9.5 -1q9 -2 18 -6q7 -3 15 -11q4 -3 8 -6.5t6 -8.5q6 -7 7 -16q4 -8 4 -18v-9.5t-1 -9.5q-2 -5 -3 -9.5t-3 -8.5q-5 -10 -11 -15 +q-4 -5 -7 -8.5t-7 -6.5q-5 -2 -9 -4t-9 -3q-9 -3 -18 -3h-9.5t-9.5 1q-3 1 -7.5 2t-9.5 4q-5 2 -8.5 4.5t-8.5 4.5q-5 7 -9.5 12.5t-7.5 11.5q-2 7 -4 13.5t-3 13.5q0 16 4 28q5 15 14 24zM1314 1326q-9 -9 -12 -18q-2 -5 -2.5 -10t-0.5 -10q0 -6 1.5 -10.5t3.5 -9.5 +q4 -5 6.5 -9.5t6.5 -7.5q5 -4 9.5 -6t9.5 -5q11 -3 19 -2q13 0 20 6q5 2 9.5 5t8.5 6q8 9 9 19q5 9 3 20q0 5 -1 10t-4 10q-2 5 -5 8.5t-7 7.5t-9 6.5t-10 4.5t-10 2.5t-10 0.5t-10 -2l-10 -4q-9 -5 -15 -12zM1376 1168l-12 14l114 86l11 -13q2 -4 3 -7v-8l-42 -120 +q0 -1 -0.5 -1t-0.5 -1t-1 -1t-1 -1l-1 -2l95 70l12 -15l-114 -85l-9 12q-3 2 -5 7q0 5 1 7l41 122q0 1 1 1t1 1l1 1q1 2 2 3zM1446 1067l127 65l8 -16l-109 -57l29 -54l-18 -10zM1498 954l-7 18l57 22l2 1l4 2q0 2 0.5 2.5t0.5 1.5q3 0 3 2l47 73l3 -12q2 -4 2.5 -7t0.5 -5 +q-1 -2 -2 -4.5t-2 -4.5l-31 -47l-2 -2l-1 -1h2q0 1 3 0l54 -16q2 -1 4.5 -2t4.5 -3q4 -2 5 -8l5 -13l-82 24q-2 0 -3 1h-4h-4q-3 0 -4 -1z" /> + <glyph glyph-name="F" unicode="F" horiz-adv-x="1297" +d="M169 1439q0 21 11.5 33t27.5 13h957q23 0 34.5 -13t11.5 -35v-248q0 -17 -12 -32.5t-35 -15.5h-608v-309h449q19 0 32 -10.5t13 -33.5v-239q0 -17 -11.5 -32.5t-31.5 -15.5h-451v-458q0 -43 -46 -43h-305q-36 5 -36 42v1397z" /> + <glyph glyph-name="H" unicode="H" horiz-adv-x="1602" +d="M165 1441q1 17 12.5 30.5t30.5 13.5h297q15 0 31 -12.5t16 -31.5v-474h497v474q0 18 12.5 31t32.5 13h293q20 0 35 -10t15 -32v-1399q0 -22 -13 -33t-34 -11h-296q-20 0 -32.5 11t-12.5 33v568h-497v-568q0 -21 -13.5 -32.5t-36.5 -11.5h-294q-42 0 -43 39v1402z" /> + <hkern u1="K" u2="Â" k="-40" /> + <hkern u1="K" u2="Ă" k="-40" /> + <hkern u1="K" u2="Á" k="-40" /> + <hkern u1="K" u2="À" k="-40" /> + <hkern u1="K" u2="Ä" k="-40" /> + <hkern u1="K" u2="Ã" k="-40" /> + <hkern u1="K" u2="Å" k="-40" /> + <hkern u1="K" u2="Ą" k="-40" /> + <hkern u1="K" u2="Ā" k="-40" /> + <hkern u1="K" u2="A" k="-40" /> + <hkern u1="L" u2="Â" k="-60" /> + <hkern u1="L" u2="Ă" k="-60" /> + <hkern u1="L" u2="Ŵ" k="160" /> + <hkern u1="L" u2="Á" k="-60" /> + <hkern u1="L" u2="Č" k="40" /> + <hkern u1="L" u2="Ć" k="40" /> + <hkern u1="L" u2="À" k="-60" /> + <hkern u1="L" u2="Ä" k="-60" /> + <hkern u1="L" u2="Ĝ" k="40" /> + <hkern u1="L" u2="Ğ" k="40" /> + <hkern u1="L" u2="Ċ" k="40" /> + <hkern u1="L" u2="Ĉ" k="40" /> + <hkern u1="L" u2="Ç" k="40" /> + <hkern u1="L" u2="Ö" k="40" /> + <hkern u1="L" u2="Ø" k="40" /> + <hkern u1="L" u2="C" k="40" /> + <hkern u1="L" u2="Ỳ" k="208" /> + <hkern u1="L" u2="Ÿ" k="208" /> + <hkern u1="L" u2="Ŷ" k="208" /> + <hkern u1="L" u2="Ý" k="208" /> + <hkern u1="L" u2="Ẁ" k="160" /> + <hkern u1="L" u2="Ẅ" k="160" /> + <hkern u1="L" u2="Ẃ" k="160" /> + <hkern u1="L" u2="Õ" k="40" /> + <hkern u1="L" u2="Ǿ" k="40" /> + <hkern u1="L" u2="Ō" k="40" /> + <hkern u1="L" u2="Ő" k="40" /> + <hkern u1="L" u2="Ò" k="40" /> + <hkern u1="L" u2="Ô" k="40" /> + <hkern u1="L" u2="Ŏ" k="40" /> + <hkern u1="L" u2="Ģ" k="40" /> + <hkern u1="L" u2="Ã" k="-60" /> + <hkern u1="L" u2="Å" k="-60" /> + <hkern u1="L" u2="Ą" k="-60" /> + <hkern u1="L" u2="Ā" k="-60" /> + <hkern u1="L" u2="Ó" k="40" /> + <hkern u1="L" u2="Ţ" k="208" /> + <hkern u1="L" u2="0" k="40" /> + <hkern u1="L" u2="'" k="200" /> + <hkern u1="L" u2=""" k="200" /> + <hkern u1="L" u2="Œ" k="40" /> + <hkern u1="L" u2="Ġ" k="40" /> + <hkern u1="L" u2="Q" k="40" /> + <hkern u1="L" u2="O" k="40" /> + <hkern u1="L" u2="G" k="40" /> + <hkern u1="L" u2="®" k="40" /> + <hkern u1="L" u2="©" k="40" /> + <hkern u1="L" u2="”" k="200" /> + <hkern u1="L" u2="’" k="200" /> + <hkern u1="L" u2="Y" k="208" /> + <hkern u1="L" u2="W" k="160" /> + <hkern u1="L" u2="V" k="160" /> + <hkern u1="L" u2="A" k="-60" /> + <hkern u1="L" u2="T" k="208" /> + <hkern u1="M" u2="œ" k="63" /> + <hkern u1="M" u2="ō" k="63" /> + <hkern u1="M" u2="ő" k="63" /> + <hkern u1="M" u2="ò" k="63" /> + <hkern u1="M" u2="ö" k="63" /> + <hkern u1="M" u2="ŏ" k="63" /> + <hkern u1="M" u2="ô" k="63" /> + <hkern u1="M" u2="ó" k="63" /> + <hkern u1="M" u2="ġ" k="63" /> + <hkern u1="M" u2="ģ" k="63" /> + <hkern u1="M" u2="ĝ" k="63" /> + <hkern u1="M" u2="ğ" k="63" /> + <hkern u1="M" u2="ǽ" k="63" /> + <hkern u1="M" u2="æ" k="63" /> + <hkern u1="M" u2="õ" k="63" /> + <hkern u1="M" u2="ę" k="63" /> + <hkern u1="M" u2="ē" k="63" /> + <hkern u1="M" u2="è" k="63" /> + <hkern u1="M" u2="ė" k="63" /> + <hkern u1="M" u2="ë" k="63" /> + <hkern u1="M" u2="ê" k="63" /> + <hkern u1="M" u2="ě" k="63" /> + <hkern u1="M" u2="ĕ" k="63" /> + <hkern u1="M" u2="é" k="63" /> + <hkern u1="M" u2="đ" k="63" /> + <hkern u1="M" u2="ď" k="63" /> + <hkern u1="M" u2="ċ" k="63" /> + <hkern u1="M" u2="ĉ" k="63" /> + <hkern u1="M" u2="ç" k="63" /> + <hkern u1="M" u2="č" k="63" /> + <hkern u1="M" u2="ć" k="63" /> + <hkern u1="M" u2="ã" k="63" /> + <hkern u1="M" u2="å" k="63" /> + <hkern u1="M" u2="ą" k="63" /> + <hkern u1="M" u2="ā" k="63" /> + <hkern u1="M" u2="à" k="63" /> + <hkern u1="M" u2="ä" k="63" /> + <hkern u1="M" u2="â" k="63" /> + <hkern u1="M" u2="ă" k="63" /> + <hkern u1="M" u2="á" k="63" /> + <hkern u1="M" u2="c" k="63" /> + <hkern u1="M" u2="q" k="63" /> + <hkern u1="M" u2="o" k="63" /> + <hkern u1="M" u2="g" k="63" /> + <hkern u1="M" u2="e" k="63" /> + <hkern u1="M" u2="d" k="63" /> + <hkern u1="M" u2="a" k="63" /> + <hkern u1="P" u2="œ" k="32" /> + <hkern u1="P" u2="ō" k="32" /> + <hkern u1="P" u2="ő" k="32" /> + <hkern u1="P" u2="ò" k="32" /> + <hkern u1="P" u2="ö" k="32" /> + <hkern u1="P" u2="ŏ" k="32" /> + <hkern u1="P" u2="ô" k="32" /> + <hkern u1="P" u2="ó" k="32" /> + <hkern u1="P" u2="ġ" k="32" /> + <hkern u1="P" u2="ģ" k="32" /> + <hkern u1="P" u2="ĝ" k="32" /> + <hkern u1="P" u2="ğ" k="32" /> + <hkern u1="P" u2="ǽ" k="32" /> + <hkern u1="P" u2="æ" k="32" /> + <hkern u1="P" u2="õ" k="32" /> + <hkern u1="P" u2="ę" k="32" /> + <hkern u1="P" u2="ē" k="32" /> + <hkern u1="P" u2="è" k="32" /> + <hkern u1="P" u2="ė" k="32" /> + <hkern u1="P" u2="ë" k="32" /> + <hkern u1="P" u2="ê" k="32" /> + <hkern u1="P" u2="ě" k="32" /> + <hkern u1="P" u2="ĕ" k="32" /> + <hkern u1="P" u2="é" k="32" /> + <hkern u1="P" u2="đ" k="32" /> + <hkern u1="P" u2="ď" k="32" /> + <hkern u1="P" u2="ċ" k="32" /> + <hkern u1="P" u2="ĉ" k="32" /> + <hkern u1="P" u2="ç" k="32" /> + <hkern u1="P" u2="č" k="32" /> + <hkern u1="P" u2="ć" k="32" /> + <hkern u1="P" u2="ã" k="32" /> + <hkern u1="P" u2="å" k="32" /> + <hkern u1="P" u2="ą" k="32" /> + <hkern u1="P" u2="ā" k="32" /> + <hkern u1="P" u2="à" k="32" /> + <hkern u1="P" u2="ä" k="32" /> + <hkern u1="P" u2="â" k="32" /> + <hkern u1="P" u2="ă" k="32" /> + <hkern u1="P" u2="á" k="32" /> + <hkern u1="P" u2="c" k="32" /> + <hkern u1="P" u2="q" k="32" /> + <hkern u1="P" u2="o" k="32" /> + <hkern u1="P" u2="g" k="32" /> + <hkern u1="P" u2="e" k="32" /> + <hkern u1="P" u2="d" k="32" /> + <hkern u1="P" u2="a" k="32" /> + <hkern u1="R" u2="œ" k="62" /> + <hkern u1="R" u2="ō" k="62" /> + <hkern u1="R" u2="ő" k="62" /> + <hkern u1="R" u2="ò" k="62" /> + <hkern u1="R" u2="ö" k="62" /> + <hkern u1="R" u2="ŏ" k="62" /> + <hkern u1="R" u2="ô" k="62" /> + <hkern u1="R" u2="ó" k="62" /> + <hkern u1="R" u2="ġ" k="62" /> + <hkern u1="R" u2="ģ" k="62" /> + <hkern u1="R" u2="ĝ" k="62" /> + <hkern u1="R" u2="ğ" k="62" /> + <hkern u1="R" u2="ǽ" k="62" /> + <hkern u1="R" u2="æ" k="62" /> + <hkern u1="R" u2="õ" k="62" /> + <hkern u1="R" u2="ę" k="62" /> + <hkern u1="R" u2="ē" k="62" /> + <hkern u1="R" u2="è" k="62" /> + <hkern u1="R" u2="ė" k="62" /> + <hkern u1="R" u2="ë" k="62" /> + <hkern u1="R" u2="ê" k="62" /> + <hkern u1="R" u2="ě" k="62" /> + <hkern u1="R" u2="ĕ" k="62" /> + <hkern u1="R" u2="é" k="62" /> + <hkern u1="R" u2="đ" k="62" /> + <hkern u1="R" u2="ď" k="62" /> + <hkern u1="R" u2="ċ" k="62" /> + <hkern u1="R" u2="ĉ" k="62" /> + <hkern u1="R" u2="ç" k="62" /> + <hkern u1="R" u2="č" k="62" /> + <hkern u1="R" u2="ć" k="62" /> + <hkern u1="R" u2="ã" k="62" /> + <hkern u1="R" u2="å" k="62" /> + <hkern u1="R" u2="ą" k="62" /> + <hkern u1="R" u2="ā" k="62" /> + <hkern u1="R" u2="à" k="62" /> + <hkern u1="R" u2="ä" k="62" /> + <hkern u1="R" u2="â" k="62" /> + <hkern u1="R" u2="ă" k="62" /> + <hkern u1="R" u2="á" k="62" /> + <hkern u1="R" u2="ţ" k="-82" /> + <hkern u1="R" u2="c" k="62" /> + <hkern u1="R" u2="t" k="-82" /> + <hkern u1="R" u2="q" k="62" /> + <hkern u1="R" u2="o" k="62" /> + <hkern u1="R" u2="g" k="62" /> + <hkern u1="R" u2="e" k="62" /> + <hkern u1="R" u2="d" k="62" /> + <hkern u1="R" u2="a" k="62" /> + <hkern u1="S" u2="Ŵ" k="42" /> + <hkern u1="S" u2="Ẁ" k="42" /> + <hkern u1="S" u2="Ẅ" k="42" /> + <hkern u1="S" u2="Ẃ" k="42" /> + <hkern u1="S" u2="W" k="42" /> + <hkern u1="S" u2="V" k="42" /> + <hkern u1="T" u2="Â" k="271" /> + <hkern u1="T" u2="Ă" k="271" /> + <hkern u1="T" u2="Á" k="271" /> + <hkern u1="T" u2="œ" k="140" /> + <hkern u1="T" u2="ś" k="104" /> + <hkern u1="T" u2="š" k="104" /> + <hkern u1="T" u2="ō" k="140" /> + <hkern u1="T" u2="ő" k="140" /> + <hkern u1="T" u2="ò" k="140" /> + <hkern u1="T" u2="ö" k="140" /> + <hkern u1="T" u2="ŏ" k="140" /> + <hkern u1="T" u2="ô" k="140" /> + <hkern u1="T" u2="ó" k="140" /> + <hkern u1="T" u2="ġ" k="140" /> + <hkern u1="T" u2="ģ" k="140" /> + <hkern u1="T" u2="ĝ" k="140" /> + <hkern u1="T" u2="ğ" k="140" /> + <hkern u1="T" u2="ǽ" k="140" /> + <hkern u1="T" u2="æ" k="140" /> + <hkern u1="T" u2="Č" k="104" /> + <hkern u1="T" u2="Ć" k="104" /> + <hkern u1="T" u2="õ" k="140" /> + <hkern u1="T" u2="ę" k="140" /> + <hkern u1="T" u2="ē" k="140" /> + <hkern u1="T" u2="è" k="140" /> + <hkern u1="T" u2="ė" k="140" /> + <hkern u1="T" u2="ë" k="140" /> + <hkern u1="T" u2="ê" k="140" /> + <hkern u1="T" u2="ě" k="140" /> + <hkern u1="T" u2="ĕ" k="140" /> + <hkern u1="T" u2="é" k="140" /> + <hkern u1="T" u2="đ" k="140" /> + <hkern u1="T" u2="ď" k="140" /> + <hkern u1="T" u2="ċ" k="140" /> + <hkern u1="T" u2="ĉ" k="140" /> + <hkern u1="T" u2="ç" k="140" /> + <hkern u1="T" u2="č" k="140" /> + <hkern u1="T" u2="ć" k="140" /> + <hkern u1="T" u2="ã" k="140" /> + <hkern u1="T" u2="å" k="140" /> + <hkern u1="T" u2="ą" k="140" /> + <hkern u1="T" u2="ā" k="140" /> + <hkern u1="T" u2="à" k="140" /> + <hkern u1="T" u2="ä" k="140" /> + <hkern u1="T" u2="â" k="140" /> + <hkern u1="T" u2="ă" k="140" /> + <hkern u1="T" u2="á" k="140" /> + <hkern u1="T" u2="À" k="271" /> + <hkern u1="T" u2="Ä" k="271" /> + <hkern u1="T" u2="Ĝ" k="104" /> + <hkern u1="T" u2="Ğ" k="104" /> + <hkern u1="T" u2="Ċ" k="104" /> + <hkern u1="T" u2="Ĉ" k="104" /> + <hkern u1="T" u2="Ç" k="104" /> + <hkern u1="T" u2="Ö" k="104" /> + <hkern u1="T" u2="Ø" k="104" /> + <hkern u1="T" u2="C" k="104" /> + <hkern u1="T" u2="Ș" k="41" /> + <hkern u1="T" u2="Ŝ" k="41" /> + <hkern u1="T" u2="Ş" k="41" /> + <hkern u1="T" u2="Š" k="41" /> + <hkern u1="T" u2="Õ" k="104" /> + <hkern u1="T" u2="Ǿ" k="104" /> + <hkern u1="T" u2="Ō" k="104" /> + <hkern u1="T" u2="Ő" k="104" /> + <hkern u1="T" u2="Ò" k="104" /> + <hkern u1="T" u2="Ô" k="104" /> + <hkern u1="T" u2="Ŏ" k="104" /> + <hkern u1="T" u2="Ģ" k="104" /> + <hkern u1="T" u2="Ã" k="271" /> + <hkern u1="T" u2="Å" k="271" /> + <hkern u1="T" u2="Ą" k="271" /> + <hkern u1="T" u2="Ā" k="271" /> + <hkern u1="T" u2="Ó" k="104" /> + <hkern u1="T" u2="Ś" k="41" /> + <hkern u1="T" u2="0" k="104" /> + <hkern u1="T" u2="Œ" k="104" /> + <hkern u1="T" u2="Ġ" k="104" /> + <hkern u1="T" u2="c" k="140" /> + <hkern u1="T" u2="s" k="104" /> + <hkern u1="T" u2="q" k="140" /> + <hkern u1="T" u2="o" k="140" /> + <hkern u1="T" u2="g" k="140" /> + <hkern u1="T" u2="e" k="140" /> + <hkern u1="T" u2="d" k="140" /> + <hkern u1="T" u2="a" k="140" /> + <hkern u1="T" u2="Q" k="104" /> + <hkern u1="T" u2="O" k="104" /> + <hkern u1="T" u2="G" k="104" /> + <hkern u1="T" u2="®" k="104" /> + <hkern u1="T" u2="©" k="104" /> + <hkern u1="T" u2="A" k="271" /> + <hkern u1="T" u2="S" k="41" /> + <hkern u1="A" u2="ý" k="125" /> + <hkern u1="A" u2="ÿ" k="125" /> + <hkern u1="A" u2="ỳ" k="125" /> + <hkern u1="A" u2="Ŵ" k="208" /> + <hkern u1="A" u2="Č" k="120" /> + <hkern u1="A" u2="Ć" k="120" /> + <hkern u1="A" u2="Ĝ" k="120" /> + <hkern u1="A" u2="Ğ" k="120" /> + <hkern u1="A" u2="Ċ" k="120" /> + <hkern u1="A" u2="Ĉ" k="120" /> + <hkern u1="A" u2="Ç" k="120" /> + <hkern u1="A" u2="Ö" k="120" /> + <hkern u1="A" u2="Ø" k="120" /> + <hkern u1="A" u2="C" k="120" /> + <hkern u1="A" u2="Ỳ" k="250" /> + <hkern u1="A" u2="Ÿ" k="250" /> + <hkern u1="A" u2="Ŷ" k="250" /> + <hkern u1="A" u2="Ý" k="250" /> + <hkern u1="A" u2="Ẁ" k="208" /> + <hkern u1="A" u2="Ẅ" k="208" /> + <hkern u1="A" u2="Ẃ" k="208" /> + <hkern u1="A" u2="Ș" k="60" /> + <hkern u1="A" u2="Ŝ" k="60" /> + <hkern u1="A" u2="Ş" k="60" /> + <hkern u1="A" u2="Š" k="60" /> + <hkern u1="A" u2="Õ" k="120" /> + <hkern u1="A" u2="Ǿ" k="120" /> + <hkern u1="A" u2="Ō" k="120" /> + <hkern u1="A" u2="Ő" k="120" /> + <hkern u1="A" u2="Ò" k="120" /> + <hkern u1="A" u2="Ô" k="120" /> + <hkern u1="A" u2="Ŏ" k="120" /> + <hkern u1="A" u2="Ģ" k="120" /> + <hkern u1="A" u2="Ó" k="120" /> + <hkern u1="A" u2="Ţ" k="250" /> + <hkern u1="A" u2="ẅ" k="125" /> + <hkern u1="A" u2="ŵ" k="125" /> + <hkern u1="A" u2="Ś" k="60" /> + <hkern u1="A" u2="0" k="120" /> + <hkern u1="A" u2="Œ" k="120" /> + <hkern u1="A" u2="Ġ" k="120" /> + <hkern u1="A" u2="ẁ" k="125" /> + <hkern u1="A" u2="ẃ" k="125" /> + <hkern u1="A" u2="y" k="125" /> + <hkern u1="A" u2="w" k="125" /> + <hkern u1="A" u2="v" k="125" /> + <hkern u1="A" u2="Q" k="120" /> + <hkern u1="A" u2="O" k="120" /> + <hkern u1="A" u2="G" k="120" /> + <hkern u1="A" u2="®" k="120" /> + <hkern u1="A" u2="©" k="120" /> + <hkern u1="A" u2="Y" k="250" /> + <hkern u1="A" u2="W" k="208" /> + <hkern u1="A" u2="V" k="208" /> + <hkern u1="A" u2="T" k="250" /> + <hkern u1="A" u2="S" k="60" /> + <hkern u1="U" u2="Â" k="48" /> + <hkern u1="U" u2="Ă" k="48" /> + <hkern u1="U" u2="Á" k="48" /> + <hkern u1="U" u2="À" k="48" /> + <hkern u1="U" u2="Ä" k="48" /> + <hkern u1="U" u2="Ã" k="48" /> + <hkern u1="U" u2="Å" k="48" /> + <hkern u1="U" u2="Ą" k="48" /> + <hkern u1="U" u2="Ā" k="48" /> + <hkern u1="U" u2="A" k="48" /> + <hkern u1="V" u2="Â" k="250" /> + <hkern u1="V" u2="Ă" k="250" /> + <hkern u1="V" u2="Á" k="250" /> + <hkern u1="V" u2="œ" k="140" /> + <hkern u1="V" u2="ś" k="104" /> + <hkern u1="V" u2="š" k="104" /> + <hkern u1="V" u2="ō" k="140" /> + <hkern u1="V" u2="ő" k="140" /> + <hkern u1="V" u2="ò" k="140" /> + <hkern u1="V" u2="ö" k="140" /> + <hkern u1="V" u2="ŏ" k="140" /> + <hkern u1="V" u2="ô" k="140" /> + <hkern u1="V" u2="ó" k="140" /> + <hkern u1="V" u2="ġ" k="140" /> + <hkern u1="V" u2="ģ" k="140" /> + <hkern u1="V" u2="ĝ" k="140" /> + <hkern u1="V" u2="ğ" k="140" /> + <hkern u1="V" u2="ǽ" k="140" /> + <hkern u1="V" u2="æ" k="140" /> + <hkern u1="V" u2="Č" k="100" /> + <hkern u1="V" u2="Ć" k="100" /> + <hkern u1="V" u2="õ" k="140" /> + <hkern u1="V" u2="ę" k="140" /> + <hkern u1="V" u2="ē" k="140" /> + <hkern u1="V" u2="è" k="140" /> + <hkern u1="V" u2="ė" k="140" /> + <hkern u1="V" u2="ë" k="140" /> + <hkern u1="V" u2="ê" k="140" /> + <hkern u1="V" u2="ě" k="140" /> + <hkern u1="V" u2="ĕ" k="140" /> + <hkern u1="V" u2="é" k="140" /> + <hkern u1="V" u2="đ" k="140" /> + <hkern u1="V" u2="ď" k="140" /> + <hkern u1="V" u2="ċ" k="140" /> + <hkern u1="V" u2="ĉ" k="140" /> + <hkern u1="V" u2="ç" k="140" /> + <hkern u1="V" u2="č" k="140" /> + <hkern u1="V" u2="ć" k="140" /> + <hkern u1="V" u2="ã" k="140" /> + <hkern u1="V" u2="å" k="140" /> + <hkern u1="V" u2="ą" k="140" /> + <hkern u1="V" u2="ā" k="140" /> + <hkern u1="V" u2="à" k="140" /> + <hkern u1="V" u2="ä" k="140" /> + <hkern u1="V" u2="â" k="140" /> + <hkern u1="V" u2="ă" k="140" /> + <hkern u1="V" u2="á" k="140" /> + <hkern u1="V" u2="À" k="250" /> + <hkern u1="V" u2="Ä" k="250" /> + <hkern u1="V" u2="Ĝ" k="100" /> + <hkern u1="V" u2="Ğ" k="100" /> + <hkern u1="V" u2="Ċ" k="100" /> + <hkern u1="V" u2="Ĉ" k="100" /> + <hkern u1="V" u2="Ç" k="100" /> + <hkern u1="V" u2="Ö" k="100" /> + <hkern u1="V" u2="Ø" k="100" /> + <hkern u1="V" u2="C" k="100" /> + <hkern u1="V" u2="Õ" k="100" /> + <hkern u1="V" u2="Ǿ" k="100" /> + <hkern u1="V" u2="Ō" k="100" /> + <hkern u1="V" u2="Ő" k="100" /> + <hkern u1="V" u2="Ò" k="100" /> + <hkern u1="V" u2="Ô" k="100" /> + <hkern u1="V" u2="Ŏ" k="100" /> + <hkern u1="V" u2="Ģ" k="100" /> + <hkern u1="V" u2="Ã" k="250" /> + <hkern u1="V" u2="Å" k="250" /> + <hkern u1="V" u2="Ą" k="250" /> + <hkern u1="V" u2="Ā" k="250" /> + <hkern u1="V" u2="Ó" k="100" /> + <hkern u1="V" u2="0" k="100" /> + <hkern u1="V" u2="Œ" k="100" /> + <hkern u1="V" u2="Ġ" k="100" /> + <hkern u1="V" u2="c" k="140" /> + <hkern u1="V" u2="s" k="104" /> + <hkern u1="V" u2="q" k="140" /> + <hkern u1="V" u2="o" k="140" /> + <hkern u1="V" u2="g" k="140" /> + <hkern u1="V" u2="e" k="140" /> + <hkern u1="V" u2="d" k="140" /> + <hkern u1="V" u2="a" k="140" /> + <hkern u1="V" u2="Q" k="100" /> + <hkern u1="V" u2="O" k="100" /> + <hkern u1="V" u2="G" k="100" /> + <hkern u1="V" u2="®" k="100" /> + <hkern u1="V" u2="©" k="100" /> + <hkern u1="V" u2="A" k="250" /> + <hkern u1="W" u2="Â" k="250" /> + <hkern u1="W" u2="Ă" k="250" /> + <hkern u1="W" u2="Á" k="250" /> + <hkern u1="W" u2="œ" k="140" /> + <hkern u1="W" u2="ś" k="104" /> + <hkern u1="W" u2="š" k="104" /> + <hkern u1="W" u2="ō" k="140" /> + <hkern u1="W" u2="ő" k="140" /> + <hkern u1="W" u2="ò" k="140" /> + <hkern u1="W" u2="ö" k="140" /> + <hkern u1="W" u2="ŏ" k="140" /> + <hkern u1="W" u2="ô" k="140" /> + <hkern u1="W" u2="ó" k="140" /> + <hkern u1="W" u2="ġ" k="140" /> + <hkern u1="W" u2="ģ" k="140" /> + <hkern u1="W" u2="ĝ" k="140" /> + <hkern u1="W" u2="ğ" k="140" /> + <hkern u1="W" u2="ǽ" k="140" /> + <hkern u1="W" u2="æ" k="140" /> + <hkern u1="W" u2="Č" k="100" /> + <hkern u1="W" u2="Ć" k="100" /> + <hkern u1="W" u2="õ" k="140" /> + <hkern u1="W" u2="ę" k="140" /> + <hkern u1="W" u2="ē" k="140" /> + <hkern u1="W" u2="è" k="140" /> + <hkern u1="W" u2="ė" k="140" /> + <hkern u1="W" u2="ë" k="140" /> + <hkern u1="W" u2="ê" k="140" /> + <hkern u1="W" u2="ě" k="140" /> + <hkern u1="W" u2="ĕ" k="140" /> + <hkern u1="W" u2="é" k="140" /> + <hkern u1="W" u2="đ" k="140" /> + <hkern u1="W" u2="ď" k="140" /> + <hkern u1="W" u2="ċ" k="140" /> + <hkern u1="W" u2="ĉ" k="140" /> + <hkern u1="W" u2="ç" k="140" /> + <hkern u1="W" u2="č" k="140" /> + <hkern u1="W" u2="ć" k="140" /> + <hkern u1="W" u2="ã" k="140" /> + <hkern u1="W" u2="å" k="140" /> + <hkern u1="W" u2="ą" k="140" /> + <hkern u1="W" u2="ā" k="140" /> + <hkern u1="W" u2="à" k="140" /> + <hkern u1="W" u2="ä" k="140" /> + <hkern u1="W" u2="â" k="140" /> + <hkern u1="W" u2="ă" k="140" /> + <hkern u1="W" u2="á" k="140" /> + <hkern u1="W" u2="À" k="250" /> + <hkern u1="W" u2="Ä" k="250" /> + <hkern u1="W" u2="Ĝ" k="100" /> + <hkern u1="W" u2="Ğ" k="100" /> + <hkern u1="W" u2="Ċ" k="100" /> + <hkern u1="W" u2="Ĉ" k="100" /> + <hkern u1="W" u2="Ç" k="100" /> + <hkern u1="W" u2="Ö" k="100" /> + <hkern u1="W" u2="Ø" k="100" /> + <hkern u1="W" u2="C" k="100" /> + <hkern u1="W" u2="Õ" k="100" /> + <hkern u1="W" u2="Ǿ" k="100" /> + <hkern u1="W" u2="Ō" k="100" /> + <hkern u1="W" u2="Ő" k="100" /> + <hkern u1="W" u2="Ò" k="100" /> + <hkern u1="W" u2="Ô" k="100" /> + <hkern u1="W" u2="Ŏ" k="100" /> + <hkern u1="W" u2="Ģ" k="100" /> + <hkern u1="W" u2="Ã" k="250" /> + <hkern u1="W" u2="Å" k="250" /> + <hkern u1="W" u2="Ą" k="250" /> + <hkern u1="W" u2="Ā" k="250" /> + <hkern u1="W" u2="Ó" k="100" /> + <hkern u1="W" u2="0" k="100" /> + <hkern u1="W" u2="Œ" k="100" /> + <hkern u1="W" u2="Ġ" k="100" /> + <hkern u1="W" u2="c" k="140" /> + <hkern u1="W" u2="s" k="104" /> + <hkern u1="W" u2="q" k="140" /> + <hkern u1="W" u2="o" k="140" /> + <hkern u1="W" u2="g" k="140" /> + <hkern u1="W" u2="e" k="140" /> + <hkern u1="W" u2="d" k="140" /> + <hkern u1="W" u2="a" k="140" /> + <hkern u1="W" u2="Q" k="100" /> + <hkern u1="W" u2="O" k="100" /> + <hkern u1="W" u2="G" k="100" /> + <hkern u1="W" u2="®" k="100" /> + <hkern u1="W" u2="©" k="100" /> + <hkern u1="W" u2="A" k="250" /> + <hkern u1="X" u2="Č" k="84" /> + <hkern u1="X" u2="Ć" k="84" /> + <hkern u1="X" u2="Ĝ" k="84" /> + <hkern u1="X" u2="Ğ" k="84" /> + <hkern u1="X" u2="Ċ" k="84" /> + <hkern u1="X" u2="Ĉ" k="84" /> + <hkern u1="X" u2="Ç" k="84" /> + <hkern u1="X" u2="Ö" k="84" /> + <hkern u1="X" u2="Ø" k="84" /> + <hkern u1="X" u2="C" k="84" /> + <hkern u1="X" u2="Õ" k="84" /> + <hkern u1="X" u2="Ǿ" k="84" /> + <hkern u1="X" u2="Ō" k="84" /> + <hkern u1="X" u2="Ő" k="84" /> + <hkern u1="X" u2="Ò" k="84" /> + <hkern u1="X" u2="Ô" k="84" /> + <hkern u1="X" u2="Ŏ" k="84" /> + <hkern u1="X" u2="Ģ" k="84" /> + <hkern u1="X" u2="Ó" k="84" /> + <hkern u1="X" u2="0" k="84" /> + <hkern u1="X" u2="Œ" k="84" /> + <hkern u1="X" u2="Ġ" k="84" /> + <hkern u1="X" u2="Q" k="84" /> + <hkern u1="X" u2="O" k="84" /> + <hkern u1="X" u2="G" k="84" /> + <hkern u1="X" u2="®" k="84" /> + <hkern u1="X" u2="©" k="84" /> + <hkern u1="Y" u2="Â" k="271" /> + <hkern u1="Y" u2="Ă" k="271" /> + <hkern u1="Y" u2="Á" k="271" /> + <hkern u1="Y" u2="œ" k="140" /> + <hkern u1="Y" u2="ś" k="104" /> + <hkern u1="Y" u2="š" k="104" /> + <hkern u1="Y" u2="ō" k="140" /> + <hkern u1="Y" u2="ő" k="140" /> + <hkern u1="Y" u2="ò" k="140" /> + <hkern u1="Y" u2="ö" k="140" /> + <hkern u1="Y" u2="ŏ" k="140" /> + <hkern u1="Y" u2="ô" k="140" /> + <hkern u1="Y" u2="ó" k="140" /> + <hkern u1="Y" u2="ġ" k="140" /> + <hkern u1="Y" u2="ģ" k="140" /> + <hkern u1="Y" u2="ĝ" k="140" /> + <hkern u1="Y" u2="ğ" k="140" /> + <hkern u1="Y" u2="ǽ" k="140" /> + <hkern u1="Y" u2="æ" k="140" /> + <hkern u1="Y" u2="Č" k="104" /> + <hkern u1="Y" u2="Ć" k="104" /> + <hkern u1="Y" u2="õ" k="140" /> + <hkern u1="Y" u2="ę" k="140" /> + <hkern u1="Y" u2="ē" k="140" /> + <hkern u1="Y" u2="è" k="140" /> + <hkern u1="Y" u2="ė" k="140" /> + <hkern u1="Y" u2="ë" k="140" /> + <hkern u1="Y" u2="ê" k="140" /> + <hkern u1="Y" u2="ě" k="140" /> + <hkern u1="Y" u2="ĕ" k="140" /> + <hkern u1="Y" u2="é" k="140" /> + <hkern u1="Y" u2="đ" k="140" /> + <hkern u1="Y" u2="ď" k="140" /> + <hkern u1="Y" u2="ċ" k="140" /> + <hkern u1="Y" u2="ĉ" k="140" /> + <hkern u1="Y" u2="ç" k="140" /> + <hkern u1="Y" u2="č" k="140" /> + <hkern u1="Y" u2="ć" k="140" /> + <hkern u1="Y" u2="ã" k="140" /> + <hkern u1="Y" u2="å" k="140" /> + <hkern u1="Y" u2="ą" k="140" /> + <hkern u1="Y" u2="ā" k="140" /> + <hkern u1="Y" u2="à" k="140" /> + <hkern u1="Y" u2="ä" k="140" /> + <hkern u1="Y" u2="â" k="140" /> + <hkern u1="Y" u2="ă" k="140" /> + <hkern u1="Y" u2="á" k="140" /> + <hkern u1="Y" u2="À" k="271" /> + <hkern u1="Y" u2="Ä" k="271" /> + <hkern u1="Y" u2="Ĝ" k="104" /> + <hkern u1="Y" u2="Ğ" k="104" /> + <hkern u1="Y" u2="Ċ" k="104" /> + <hkern u1="Y" u2="Ĉ" k="104" /> + <hkern u1="Y" u2="Ç" k="104" /> + <hkern u1="Y" u2="Ö" k="104" /> + <hkern u1="Y" u2="Ø" k="104" /> + <hkern u1="Y" u2="C" k="104" /> + <hkern u1="Y" u2="Ș" k="41" /> + <hkern u1="Y" u2="Ŝ" k="41" /> + <hkern u1="Y" u2="Ş" k="41" /> + <hkern u1="Y" u2="Š" k="41" /> + <hkern u1="Y" u2="Õ" k="104" /> + <hkern u1="Y" u2="Ǿ" k="104" /> + <hkern u1="Y" u2="Ō" k="104" /> + <hkern u1="Y" u2="Ő" k="104" /> + <hkern u1="Y" u2="Ò" k="104" /> + <hkern u1="Y" u2="Ô" k="104" /> + <hkern u1="Y" u2="Ŏ" k="104" /> + <hkern u1="Y" u2="Ģ" k="104" /> + <hkern u1="Y" u2="Ã" k="271" /> + <hkern u1="Y" u2="Å" k="271" /> + <hkern u1="Y" u2="Ą" k="271" /> + <hkern u1="Y" u2="Ā" k="271" /> + <hkern u1="Y" u2="Ó" k="104" /> + <hkern u1="Y" u2="Ś" k="41" /> + <hkern u1="Y" u2="0" k="104" /> + <hkern u1="Y" u2="Œ" k="104" /> + <hkern u1="Y" u2="Ġ" k="104" /> + <hkern u1="Y" u2="c" k="140" /> + <hkern u1="Y" u2="s" k="104" /> + <hkern u1="Y" u2="q" k="140" /> + <hkern u1="Y" u2="o" k="140" /> + <hkern u1="Y" u2="g" k="140" /> + <hkern u1="Y" u2="e" k="140" /> + <hkern u1="Y" u2="d" k="140" /> + <hkern u1="Y" u2="a" k="140" /> + <hkern u1="Y" u2="Q" k="104" /> + <hkern u1="Y" u2="O" k="104" /> + <hkern u1="Y" u2="G" k="104" /> + <hkern u1="Y" u2="®" k="104" /> + <hkern u1="Y" u2="©" k="104" /> + <hkern u1="Y" u2="A" k="271" /> + <hkern u1="Y" u2="S" k="41" /> + <hkern u1="’" u2="œ" k="124" /> + <hkern u1="’" u2="ō" k="124" /> + <hkern u1="’" u2="ő" k="124" /> + <hkern u1="’" u2="ò" k="124" /> + <hkern u1="’" u2="ö" k="124" /> + <hkern u1="’" u2="ŏ" k="124" /> + <hkern u1="’" u2="ô" k="124" /> + <hkern u1="’" u2="ó" k="124" /> + <hkern u1="’" u2="ġ" k="124" /> + <hkern u1="’" u2="ģ" k="124" /> + <hkern u1="’" u2="ĝ" k="124" /> + <hkern u1="’" u2="ğ" k="124" /> + <hkern u1="’" u2="ǽ" k="124" /> + <hkern u1="’" u2="æ" k="124" /> + <hkern u1="’" u2="Č" k="62" /> + <hkern u1="’" u2="Ć" k="62" /> + <hkern u1="’" u2="õ" k="124" /> + <hkern u1="’" u2="ę" k="124" /> + <hkern u1="’" u2="ē" k="124" /> + <hkern u1="’" u2="è" k="124" /> + <hkern u1="’" u2="ė" k="124" /> + <hkern u1="’" u2="ë" k="124" /> + <hkern u1="’" u2="ê" k="124" /> + <hkern u1="’" u2="ě" k="124" /> + <hkern u1="’" u2="ĕ" k="124" /> + <hkern u1="’" u2="é" k="124" /> + <hkern u1="’" u2="đ" k="124" /> + <hkern u1="’" u2="ď" k="124" /> + <hkern u1="’" u2="ċ" k="124" /> + <hkern u1="’" u2="ĉ" k="124" /> + <hkern u1="’" u2="ç" k="124" /> + <hkern u1="’" u2="č" k="124" /> + <hkern u1="’" u2="ć" k="124" /> + <hkern u1="’" u2="ã" k="124" /> + <hkern u1="’" u2="å" k="124" /> + <hkern u1="’" u2="ą" k="124" /> + <hkern u1="’" u2="ā" k="124" /> + <hkern u1="’" u2="à" k="124" /> + <hkern u1="’" u2="ä" k="124" /> + <hkern u1="’" u2="â" k="124" /> + <hkern u1="’" u2="ă" k="124" /> + <hkern u1="’" u2="á" k="124" /> + <hkern u1="’" u2="Ĝ" k="62" /> + <hkern u1="’" u2="Ğ" k="62" /> + <hkern u1="’" u2="Ċ" k="62" /> + <hkern u1="’" u2="Ĉ" k="62" /> + <hkern u1="’" u2="Ç" k="62" /> + <hkern u1="’" u2="Ö" k="62" /> + <hkern u1="’" u2="Ø" k="62" /> + <hkern u1="’" u2="C" k="62" /> + <hkern u1="’" u2="Õ" k="62" /> + <hkern u1="’" u2="Ǿ" k="62" /> + <hkern u1="’" u2="Ō" k="62" /> + <hkern u1="’" u2="Ő" k="62" /> + <hkern u1="’" u2="Ò" k="62" /> + <hkern u1="’" u2="Ô" k="62" /> + <hkern u1="’" u2="Ŏ" k="62" /> + <hkern u1="’" u2="Ģ" k="62" /> + <hkern u1="’" u2="Ó" k="62" /> + <hkern u1="’" u2="0" k="62" /> + <hkern u1="’" u2="Œ" k="62" /> + <hkern u1="’" u2="Ġ" k="62" /> + <hkern u1="’" u2="c" k="124" /> + <hkern u1="’" u2="q" k="124" /> + <hkern u1="’" u2="o" k="124" /> + <hkern u1="’" u2="g" k="124" /> + <hkern u1="’" u2="e" k="124" /> + <hkern u1="’" u2="d" k="124" /> + <hkern u1="’" u2="a" k="124" /> + <hkern u1="’" u2="Q" k="62" /> + <hkern u1="’" u2="O" k="62" /> + <hkern u1="’" u2="G" k="62" /> + <hkern u1="’" u2="®" k="62" /> + <hkern u1="’" u2="©" k="62" /> + <hkern u1="”" u2="œ" k="124" /> + <hkern u1="”" u2="ō" k="124" /> + <hkern u1="”" u2="ő" k="124" /> + <hkern u1="”" u2="ò" k="124" /> + <hkern u1="”" u2="ö" k="124" /> + <hkern u1="”" u2="ŏ" k="124" /> + <hkern u1="”" u2="ô" k="124" /> + <hkern u1="”" u2="ó" k="124" /> + <hkern u1="”" u2="ġ" k="124" /> + <hkern u1="”" u2="ģ" k="124" /> + <hkern u1="”" u2="ĝ" k="124" /> + <hkern u1="”" u2="ğ" k="124" /> + <hkern u1="”" u2="ǽ" k="124" /> + <hkern u1="”" u2="æ" k="124" /> + <hkern u1="”" u2="Č" k="62" /> + <hkern u1="”" u2="Ć" k="62" /> + <hkern u1="”" u2="õ" k="124" /> + <hkern u1="”" u2="ę" k="124" /> + <hkern u1="”" u2="ē" k="124" /> + <hkern u1="”" u2="è" k="124" /> + <hkern u1="”" u2="ė" k="124" /> + <hkern u1="”" u2="ë" k="124" /> + <hkern u1="”" u2="ê" k="124" /> + <hkern u1="”" u2="ě" k="124" /> + <hkern u1="”" u2="ĕ" k="124" /> + <hkern u1="”" u2="é" k="124" /> + <hkern u1="”" u2="đ" k="124" /> + <hkern u1="”" u2="ď" k="124" /> + <hkern u1="”" u2="ċ" k="124" /> + <hkern u1="”" u2="ĉ" k="124" /> + <hkern u1="”" u2="ç" k="124" /> + <hkern u1="”" u2="č" k="124" /> + <hkern u1="”" u2="ć" k="124" /> + <hkern u1="”" u2="ã" k="124" /> + <hkern u1="”" u2="å" k="124" /> + <hkern u1="”" u2="ą" k="124" /> + <hkern u1="”" u2="ā" k="124" /> + <hkern u1="”" u2="à" k="124" /> + <hkern u1="”" u2="ä" k="124" /> + <hkern u1="”" u2="â" k="124" /> + <hkern u1="”" u2="ă" k="124" /> + <hkern u1="”" u2="á" k="124" /> + <hkern u1="”" u2="Ĝ" k="62" /> + <hkern u1="”" u2="Ğ" k="62" /> + <hkern u1="”" u2="Ċ" k="62" /> + <hkern u1="”" u2="Ĉ" k="62" /> + <hkern u1="”" u2="Ç" k="62" /> + <hkern u1="”" u2="Ö" k="62" /> + <hkern u1="”" u2="Ø" k="62" /> + <hkern u1="”" u2="C" k="62" /> + <hkern u1="”" u2="Õ" k="62" /> + <hkern u1="”" u2="Ǿ" k="62" /> + <hkern u1="”" u2="Ō" k="62" /> + <hkern u1="”" u2="Ő" k="62" /> + <hkern u1="”" u2="Ò" k="62" /> + <hkern u1="”" u2="Ô" k="62" /> + <hkern u1="”" u2="Ŏ" k="62" /> + <hkern u1="”" u2="Ģ" k="62" /> + <hkern u1="”" u2="Ó" k="62" /> + <hkern u1="”" u2="0" k="62" /> + <hkern u1="”" u2="Œ" k="62" /> + <hkern u1="”" u2="Ġ" k="62" /> + <hkern u1="”" u2="c" k="124" /> + <hkern u1="”" u2="q" k="124" /> + <hkern u1="”" u2="o" k="124" /> + <hkern u1="”" u2="g" k="124" /> + <hkern u1="”" u2="e" k="124" /> + <hkern u1="”" u2="d" k="124" /> + <hkern u1="”" u2="a" k="124" /> + <hkern u1="”" u2="Q" k="62" /> + <hkern u1="”" u2="O" k="62" /> + <hkern u1="”" u2="G" k="62" /> + <hkern u1="”" u2="®" k="62" /> + <hkern u1="”" u2="©" k="62" /> + <hkern u1="Đ" u2="Â" k="120" /> + <hkern u1="Đ" u2="Ă" k="120" /> + <hkern u1="Đ" u2="Ŵ" k="100" /> + <hkern u1="Đ" u2="Á" k="120" /> + <hkern u1="Đ" u2="À" k="120" /> + <hkern u1="Đ" u2="Ä" k="120" /> + <hkern u1="Đ" u2="Ỳ" k="80" /> + <hkern u1="Đ" u2="Ÿ" k="80" /> + <hkern u1="Đ" u2="Ŷ" k="80" /> + <hkern u1="Đ" u2="Ý" k="80" /> + <hkern u1="Đ" u2="Ẁ" k="100" /> + <hkern u1="Đ" u2="Ẅ" k="100" /> + <hkern u1="Đ" u2="Ẃ" k="100" /> + <hkern u1="Đ" u2="Ș" k="62" /> + <hkern u1="Đ" u2="Ŝ" k="62" /> + <hkern u1="Đ" u2="Ş" k="62" /> + <hkern u1="Đ" u2="Š" k="62" /> + <hkern u1="Đ" u2="Ã" k="120" /> + <hkern u1="Đ" u2="Å" k="120" /> + <hkern u1="Đ" u2="Ą" k="120" /> + <hkern u1="Đ" u2="Ā" k="120" /> + <hkern u1="Đ" u2="Ţ" k="80" /> + <hkern u1="Đ" u2="Ś" k="62" /> + <hkern u1="Đ" u2="Y" k="80" /> + <hkern u1="Đ" u2="X" k="84" /> + <hkern u1="Đ" u2="W" k="100" /> + <hkern u1="Đ" u2="V" k="100" /> + <hkern u1="Đ" u2="A" k="120" /> + <hkern u1="Đ" u2="T" k="80" /> + <hkern u1="Đ" u2="S" k="62" /> + <hkern u1="O" u2="Â" k="120" /> + <hkern u1="O" u2="Ă" k="120" /> + <hkern u1="O" u2="Ŵ" k="100" /> + <hkern u1="O" u2="Á" k="120" /> + <hkern u1="O" u2="À" k="120" /> + <hkern u1="O" u2="Ä" k="120" /> + <hkern u1="O" u2="Ỳ" k="80" /> + <hkern u1="O" u2="Ÿ" k="80" /> + <hkern u1="O" u2="Ŷ" k="80" /> + <hkern u1="O" u2="Ý" k="80" /> + <hkern u1="O" u2="Ẁ" k="100" /> + <hkern u1="O" u2="Ẅ" k="100" /> + <hkern u1="O" u2="Ẃ" k="100" /> + <hkern u1="O" u2="Ș" k="62" /> + <hkern u1="O" u2="Ŝ" k="62" /> + <hkern u1="O" u2="Ş" k="62" /> + <hkern u1="O" u2="Š" k="62" /> + <hkern u1="O" u2="Ã" k="120" /> + <hkern u1="O" u2="Å" k="120" /> + <hkern u1="O" u2="Ą" k="120" /> + <hkern u1="O" u2="Ā" k="120" /> + <hkern u1="O" u2="Ţ" k="80" /> + <hkern u1="O" u2="Ś" k="62" /> + <hkern u1="O" u2="Y" k="80" /> + <hkern u1="O" u2="X" k="84" /> + <hkern u1="O" u2="W" k="100" /> + <hkern u1="O" u2="V" k="100" /> + <hkern u1="O" u2="A" k="120" /> + <hkern u1="O" u2="T" k="80" /> + <hkern u1="O" u2="S" k="62" /> + <hkern u1="Q" u2="Â" k="120" /> + <hkern u1="Q" u2="Ă" k="120" /> + <hkern u1="Q" u2="Ŵ" k="100" /> + <hkern u1="Q" u2="Á" k="120" /> + <hkern u1="Q" u2="À" k="120" /> + <hkern u1="Q" u2="Ä" k="120" /> + <hkern u1="Q" u2="Ỳ" k="80" /> + <hkern u1="Q" u2="Ÿ" k="80" /> + <hkern u1="Q" u2="Ŷ" k="80" /> + <hkern u1="Q" u2="Ý" k="80" /> + <hkern u1="Q" u2="Ẁ" k="100" /> + <hkern u1="Q" u2="Ẅ" k="100" /> + <hkern u1="Q" u2="Ẃ" k="100" /> + <hkern u1="Q" u2="Ș" k="62" /> + <hkern u1="Q" u2="Ŝ" k="62" /> + <hkern u1="Q" u2="Ş" k="62" /> + <hkern u1="Q" u2="Š" k="62" /> + <hkern u1="Q" u2="Ã" k="120" /> + <hkern u1="Q" u2="Å" k="120" /> + <hkern u1="Q" u2="Ą" k="120" /> + <hkern u1="Q" u2="Ā" k="120" /> + <hkern u1="Q" u2="Ţ" k="80" /> + <hkern u1="Q" u2="Ś" k="62" /> + <hkern u1="Q" u2="Y" k="80" /> + <hkern u1="Q" u2="X" k="84" /> + <hkern u1="Q" u2="W" k="100" /> + <hkern u1="Q" u2="V" k="100" /> + <hkern u1="Q" u2="A" k="120" /> + <hkern u1="Q" u2="T" k="80" /> + <hkern u1="Q" u2="S" k="62" /> + <hkern u1="b" u2="ý" k="70" /> + <hkern u1="b" u2="ÿ" k="70" /> + <hkern u1="b" u2="ỳ" k="70" /> + <hkern u1="b" u2="Ŵ" k="146" /> + <hkern u1="b" u2="Ỳ" k="167" /> + <hkern u1="b" u2="Ÿ" k="167" /> + <hkern u1="b" u2="Ŷ" k="167" /> + <hkern u1="b" u2="Ý" k="167" /> + <hkern u1="b" u2="Ẁ" k="146" /> + <hkern u1="b" u2="Ẅ" k="146" /> + <hkern u1="b" u2="Ẃ" k="146" /> + <hkern u1="b" u2="Ţ" k="167" /> + <hkern u1="b" u2="ẅ" k="70" /> + <hkern u1="b" u2="ŵ" k="70" /> + <hkern u1="b" u2="ẁ" k="70" /> + <hkern u1="b" u2="ẃ" k="70" /> + <hkern u1="b" u2="y" k="70" /> + <hkern u1="b" u2="x" k="110" /> + <hkern u1="b" u2="w" k="70" /> + <hkern u1="b" u2="v" k="70" /> + <hkern u1="b" u2="Y" k="167" /> + <hkern u1="b" u2="W" k="146" /> + <hkern u1="b" u2="V" k="146" /> + <hkern u1="b" u2="T" k="167" /> + <hkern u1="e" u2="ý" k="70" /> + <hkern u1="e" u2="ÿ" k="70" /> + <hkern u1="e" u2="ỳ" k="70" /> + <hkern u1="e" u2="Ŵ" k="146" /> + <hkern u1="e" u2="Ỳ" k="167" /> + <hkern u1="e" u2="Ÿ" k="167" /> + <hkern u1="e" u2="Ŷ" k="167" /> + <hkern u1="e" u2="Ý" k="167" /> + <hkern u1="e" u2="Ẁ" k="146" /> + <hkern u1="e" u2="Ẅ" k="146" /> + <hkern u1="e" u2="Ẃ" k="146" /> + <hkern u1="e" u2="Ţ" k="167" /> + <hkern u1="e" u2="ẅ" k="70" /> + <hkern u1="e" u2="ŵ" k="70" /> + <hkern u1="e" u2="ẁ" k="70" /> + <hkern u1="e" u2="ẃ" k="70" /> + <hkern u1="e" u2="y" k="70" /> + <hkern u1="e" u2="x" k="110" /> + <hkern u1="e" u2="w" k="70" /> + <hkern u1="e" u2="v" k="70" /> + <hkern u1="e" u2="Y" k="167" /> + <hkern u1="e" u2="W" k="146" /> + <hkern u1="e" u2="V" k="146" /> + <hkern u1="e" u2="T" k="167" /> + <hkern u1="m" u2="œ" k="20" /> + <hkern u1="m" u2="ō" k="20" /> + <hkern u1="m" u2="ő" k="20" /> + <hkern u1="m" u2="ò" k="20" /> + <hkern u1="m" u2="ö" k="20" /> + <hkern u1="m" u2="ŏ" k="20" /> + <hkern u1="m" u2="ô" k="20" /> + <hkern u1="m" u2="ó" k="20" /> + <hkern u1="m" u2="ġ" k="20" /> + <hkern u1="m" u2="ģ" k="20" /> + <hkern u1="m" u2="ĝ" k="20" /> + <hkern u1="m" u2="ğ" k="20" /> + <hkern u1="m" u2="ǽ" k="20" /> + <hkern u1="m" u2="æ" k="20" /> + <hkern u1="m" u2="õ" k="20" /> + <hkern u1="m" u2="ę" k="20" /> + <hkern u1="m" u2="ē" k="20" /> + <hkern u1="m" u2="è" k="20" /> + <hkern u1="m" u2="ė" k="20" /> + <hkern u1="m" u2="ë" k="20" /> + <hkern u1="m" u2="ê" k="20" /> + <hkern u1="m" u2="ě" k="20" /> + <hkern u1="m" u2="ĕ" k="20" /> + <hkern u1="m" u2="é" k="20" /> + <hkern u1="m" u2="đ" k="20" /> + <hkern u1="m" u2="ď" k="20" /> + <hkern u1="m" u2="ċ" k="20" /> + <hkern u1="m" u2="ĉ" k="20" /> + <hkern u1="m" u2="ç" k="20" /> + <hkern u1="m" u2="č" k="20" /> + <hkern u1="m" u2="ć" k="20" /> + <hkern u1="m" u2="ã" k="20" /> + <hkern u1="m" u2="å" k="20" /> + <hkern u1="m" u2="ą" k="20" /> + <hkern u1="m" u2="ā" k="20" /> + <hkern u1="m" u2="à" k="20" /> + <hkern u1="m" u2="ä" k="20" /> + <hkern u1="m" u2="â" k="20" /> + <hkern u1="m" u2="ă" k="20" /> + <hkern u1="m" u2="á" k="20" /> + <hkern u1="m" u2="c" k="20" /> + <hkern u1="m" u2="q" k="20" /> + <hkern u1="m" u2="o" k="20" /> + <hkern u1="m" u2="g" k="20" /> + <hkern u1="m" u2="e" k="20" /> + <hkern u1="m" u2="d" k="20" /> + <hkern u1="m" u2="a" k="20" /> + <hkern u1="n" u2="œ" k="20" /> + <hkern u1="n" u2="ō" k="20" /> + <hkern u1="n" u2="ő" k="20" /> + <hkern u1="n" u2="ò" k="20" /> + <hkern u1="n" u2="ö" k="20" /> + <hkern u1="n" u2="ŏ" k="20" /> + <hkern u1="n" u2="ô" k="20" /> + <hkern u1="n" u2="ó" k="20" /> + <hkern u1="n" u2="ġ" k="20" /> + <hkern u1="n" u2="ģ" k="20" /> + <hkern u1="n" u2="ĝ" k="20" /> + <hkern u1="n" u2="ğ" k="20" /> + <hkern u1="n" u2="ǽ" k="20" /> + <hkern u1="n" u2="æ" k="20" /> + <hkern u1="n" u2="õ" k="20" /> + <hkern u1="n" u2="ę" k="20" /> + <hkern u1="n" u2="ē" k="20" /> + <hkern u1="n" u2="è" k="20" /> + <hkern u1="n" u2="ė" k="20" /> + <hkern u1="n" u2="ë" k="20" /> + <hkern u1="n" u2="ê" k="20" /> + <hkern u1="n" u2="ě" k="20" /> + <hkern u1="n" u2="ĕ" k="20" /> + <hkern u1="n" u2="é" k="20" /> + <hkern u1="n" u2="đ" k="20" /> + <hkern u1="n" u2="ď" k="20" /> + <hkern u1="n" u2="ċ" k="20" /> + <hkern u1="n" u2="ĉ" k="20" /> + <hkern u1="n" u2="ç" k="20" /> + <hkern u1="n" u2="č" k="20" /> + <hkern u1="n" u2="ć" k="20" /> + <hkern u1="n" u2="ã" k="20" /> + <hkern u1="n" u2="å" k="20" /> + <hkern u1="n" u2="ą" k="20" /> + <hkern u1="n" u2="ā" k="20" /> + <hkern u1="n" u2="à" k="20" /> + <hkern u1="n" u2="ä" k="20" /> + <hkern u1="n" u2="â" k="20" /> + <hkern u1="n" u2="ă" k="20" /> + <hkern u1="n" u2="á" k="20" /> + <hkern u1="n" u2="c" k="20" /> + <hkern u1="n" u2="q" k="20" /> + <hkern u1="n" u2="o" k="20" /> + <hkern u1="n" u2="g" k="20" /> + <hkern u1="n" u2="e" k="20" /> + <hkern u1="n" u2="d" k="20" /> + <hkern u1="n" u2="a" k="20" /> + <hkern u1="o" u2="ý" k="70" /> + <hkern u1="o" u2="ÿ" k="70" /> + <hkern u1="o" u2="ỳ" k="70" /> + <hkern u1="o" u2="Ŵ" k="146" /> + <hkern u1="o" u2="Ỳ" k="167" /> + <hkern u1="o" u2="Ÿ" k="167" /> + <hkern u1="o" u2="Ŷ" k="167" /> + <hkern u1="o" u2="Ý" k="167" /> + <hkern u1="o" u2="Ẁ" k="146" /> + <hkern u1="o" u2="Ẅ" k="146" /> + <hkern u1="o" u2="Ẃ" k="146" /> + <hkern u1="o" u2="Ţ" k="167" /> + <hkern u1="o" u2="ẅ" k="70" /> + <hkern u1="o" u2="ŵ" k="70" /> + <hkern u1="o" u2="ẁ" k="70" /> + <hkern u1="o" u2="ẃ" k="70" /> + <hkern u1="o" u2="y" k="70" /> + <hkern u1="o" u2="x" k="110" /> + <hkern u1="o" u2="w" k="70" /> + <hkern u1="o" u2="v" k="70" /> + <hkern u1="o" u2="Y" k="167" /> + <hkern u1="o" u2="W" k="146" /> + <hkern u1="o" u2="V" k="146" /> + <hkern u1="o" u2="T" k="167" /> + <hkern u1="p" u2="ý" k="70" /> + <hkern u1="p" u2="ÿ" k="70" /> + <hkern u1="p" u2="ỳ" k="70" /> + <hkern u1="p" u2="Ŵ" k="146" /> + <hkern u1="p" u2="Ỳ" k="167" /> + <hkern u1="p" u2="Ÿ" k="167" /> + <hkern u1="p" u2="Ŷ" k="167" /> + <hkern u1="p" u2="Ý" k="167" /> + <hkern u1="p" u2="Ẁ" k="146" /> + <hkern u1="p" u2="Ẅ" k="146" /> + <hkern u1="p" u2="Ẃ" k="146" /> + <hkern u1="p" u2="Ţ" k="167" /> + <hkern u1="p" u2="ẅ" k="70" /> + <hkern u1="p" u2="ŵ" k="70" /> + <hkern u1="p" u2="ẁ" k="70" /> + <hkern u1="p" u2="ẃ" k="70" /> + <hkern u1="p" u2="y" k="70" /> + <hkern u1="p" u2="x" k="110" /> + <hkern u1="p" u2="w" k="70" /> + <hkern u1="p" u2="v" k="70" /> + <hkern u1="p" u2="Y" k="167" /> + <hkern u1="p" u2="W" k="146" /> + <hkern u1="p" u2="V" k="146" /> + <hkern u1="p" u2="T" k="167" /> + <hkern u1="r" u2="œ" k="97" /> + <hkern u1="r" u2="ś" k="53" /> + <hkern u1="r" u2="š" k="53" /> + <hkern u1="r" u2="ō" k="97" /> + <hkern u1="r" u2="ő" k="97" /> + <hkern u1="r" u2="ò" k="97" /> + <hkern u1="r" u2="ö" k="97" /> + <hkern u1="r" u2="ŏ" k="97" /> + <hkern u1="r" u2="ô" k="97" /> + <hkern u1="r" u2="ó" k="97" /> + <hkern u1="r" u2="ġ" k="97" /> + <hkern u1="r" u2="ģ" k="97" /> + <hkern u1="r" u2="ĝ" k="97" /> + <hkern u1="r" u2="ğ" k="97" /> + <hkern u1="r" u2="ǽ" k="97" /> + <hkern u1="r" u2="æ" k="97" /> + <hkern u1="r" u2="Č" k="75" /> + <hkern u1="r" u2="Ć" k="75" /> + <hkern u1="r" u2="õ" k="97" /> + <hkern u1="r" u2="ę" k="97" /> + <hkern u1="r" u2="ē" k="97" /> + <hkern u1="r" u2="è" k="97" /> + <hkern u1="r" u2="ė" k="97" /> + <hkern u1="r" u2="ë" k="97" /> + <hkern u1="r" u2="ê" k="97" /> + <hkern u1="r" u2="ě" k="97" /> + <hkern u1="r" u2="ĕ" k="97" /> + <hkern u1="r" u2="é" k="97" /> + <hkern u1="r" u2="đ" k="97" /> + <hkern u1="r" u2="ď" k="97" /> + <hkern u1="r" u2="ċ" k="97" /> + <hkern u1="r" u2="ĉ" k="97" /> + <hkern u1="r" u2="ç" k="97" /> + <hkern u1="r" u2="č" k="97" /> + <hkern u1="r" u2="ć" k="97" /> + <hkern u1="r" u2="ã" k="97" /> + <hkern u1="r" u2="å" k="97" /> + <hkern u1="r" u2="ą" k="97" /> + <hkern u1="r" u2="ā" k="97" /> + <hkern u1="r" u2="à" k="97" /> + <hkern u1="r" u2="ä" k="97" /> + <hkern u1="r" u2="â" k="97" /> + <hkern u1="r" u2="ă" k="97" /> + <hkern u1="r" u2="á" k="97" /> + <hkern u1="r" u2="Ĝ" k="75" /> + <hkern u1="r" u2="Ğ" k="75" /> + <hkern u1="r" u2="Ċ" k="75" /> + <hkern u1="r" u2="Ĉ" k="75" /> + <hkern u1="r" u2="Ç" k="75" /> + <hkern u1="r" u2="Ö" k="75" /> + <hkern u1="r" u2="Ø" k="75" /> + <hkern u1="r" u2="C" k="75" /> + <hkern u1="r" u2="Õ" k="75" /> + <hkern u1="r" u2="Ǿ" k="75" /> + <hkern u1="r" u2="Ō" k="75" /> + <hkern u1="r" u2="Ő" k="75" /> + <hkern u1="r" u2="Ò" k="75" /> + <hkern u1="r" u2="Ô" k="75" /> + <hkern u1="r" u2="Ŏ" k="75" /> + <hkern u1="r" u2="Ģ" k="75" /> + <hkern u1="r" u2="Ó" k="75" /> + <hkern u1="r" u2="0" k="75" /> + <hkern u1="r" u2="Œ" k="75" /> + <hkern u1="r" u2="Ġ" k="75" /> + <hkern u1="r" u2="c" k="97" /> + <hkern u1="r" u2="s" k="53" /> + <hkern u1="r" u2="q" k="97" /> + <hkern u1="r" u2="o" k="97" /> + <hkern u1="r" u2="g" k="97" /> + <hkern u1="r" u2="e" k="97" /> + <hkern u1="r" u2="d" k="97" /> + <hkern u1="r" u2="a" k="97" /> + <hkern u1="r" u2="Q" k="75" /> + <hkern u1="r" u2="O" k="75" /> + <hkern u1="r" u2="G" k="75" /> + <hkern u1="r" u2="®" k="75" /> + <hkern u1="r" u2="©" k="75" /> + <hkern u1="s" u2="ý" k="21" /> + <hkern u1="s" u2="ÿ" k="21" /> + <hkern u1="s" u2="ỳ" k="21" /> + <hkern u1="s" u2="Ŵ" k="125" /> + <hkern u1="s" u2="Ỳ" k="125" /> + <hkern u1="s" u2="Ÿ" k="125" /> + <hkern u1="s" u2="Ŷ" k="125" /> + <hkern u1="s" u2="Ý" k="125" /> + <hkern u1="s" u2="Ẁ" k="125" /> + <hkern u1="s" u2="Ẅ" k="125" /> + <hkern u1="s" u2="Ẃ" k="125" /> + <hkern u1="s" u2="Ţ" k="125" /> + <hkern u1="s" u2="ẅ" k="21" /> + <hkern u1="s" u2="ŵ" k="21" /> + <hkern u1="s" u2="ẁ" k="21" /> + <hkern u1="s" u2="ẃ" k="21" /> + <hkern u1="s" u2="y" k="21" /> + <hkern u1="s" u2="w" k="21" /> + <hkern u1="s" u2="v" k="21" /> + <hkern u1="s" u2="Y" k="125" /> + <hkern u1="s" u2="W" k="125" /> + <hkern u1="s" u2="V" k="125" /> + <hkern u1="s" u2="T" k="125" /> + <hkern u1="t" u2="œ" k="31" /> + <hkern u1="t" u2="ō" k="31" /> + <hkern u1="t" u2="ő" k="31" /> + <hkern u1="t" u2="ò" k="31" /> + <hkern u1="t" u2="ö" k="31" /> + <hkern u1="t" u2="ŏ" k="31" /> + <hkern u1="t" u2="ô" k="31" /> + <hkern u1="t" u2="ó" k="31" /> + <hkern u1="t" u2="ġ" k="31" /> + <hkern u1="t" u2="ģ" k="31" /> + <hkern u1="t" u2="ĝ" k="31" /> + <hkern u1="t" u2="ğ" k="31" /> + <hkern u1="t" u2="ǽ" k="31" /> + <hkern u1="t" u2="æ" k="31" /> + <hkern u1="t" u2="õ" k="31" /> + <hkern u1="t" u2="ę" k="31" /> + <hkern u1="t" u2="ē" k="31" /> + <hkern u1="t" u2="è" k="31" /> + <hkern u1="t" u2="ė" k="31" /> + <hkern u1="t" u2="ë" k="31" /> + <hkern u1="t" u2="ê" k="31" /> + <hkern u1="t" u2="ě" k="31" /> + <hkern u1="t" u2="ĕ" k="31" /> + <hkern u1="t" u2="é" k="31" /> + <hkern u1="t" u2="đ" k="31" /> + <hkern u1="t" u2="ď" k="31" /> + <hkern u1="t" u2="ċ" k="31" /> + <hkern u1="t" u2="ĉ" k="31" /> + <hkern u1="t" u2="ç" k="31" /> + <hkern u1="t" u2="č" k="31" /> + <hkern u1="t" u2="ć" k="31" /> + <hkern u1="t" u2="ã" k="31" /> + <hkern u1="t" u2="å" k="31" /> + <hkern u1="t" u2="ą" k="31" /> + <hkern u1="t" u2="ā" k="31" /> + <hkern u1="t" u2="à" k="31" /> + <hkern u1="t" u2="ä" k="31" /> + <hkern u1="t" u2="â" k="31" /> + <hkern u1="t" u2="ă" k="31" /> + <hkern u1="t" u2="á" k="31" /> + <hkern u1="t" u2="c" k="31" /> + <hkern u1="t" u2="q" k="31" /> + <hkern u1="t" u2="o" k="31" /> + <hkern u1="t" u2="g" k="31" /> + <hkern u1="t" u2="e" k="31" /> + <hkern u1="t" u2="d" k="31" /> + <hkern u1="t" u2="a" k="31" /> + <hkern u1="v" u2="œ" k="71" /> + <hkern u1="v" u2="ō" k="71" /> + <hkern u1="v" u2="ő" k="71" /> + <hkern u1="v" u2="ò" k="71" /> + <hkern u1="v" u2="ö" k="71" /> + <hkern u1="v" u2="ŏ" k="71" /> + <hkern u1="v" u2="ô" k="71" /> + <hkern u1="v" u2="ó" k="71" /> + <hkern u1="v" u2="ġ" k="71" /> + <hkern u1="v" u2="ģ" k="71" /> + <hkern u1="v" u2="ĝ" k="71" /> + <hkern u1="v" u2="ğ" k="71" /> + <hkern u1="v" u2="ǽ" k="71" /> + <hkern u1="v" u2="æ" k="71" /> + <hkern u1="v" u2="õ" k="71" /> + <hkern u1="v" u2="ę" k="71" /> + <hkern u1="v" u2="ē" k="71" /> + <hkern u1="v" u2="è" k="71" /> + <hkern u1="v" u2="ė" k="71" /> + <hkern u1="v" u2="ë" k="71" /> + <hkern u1="v" u2="ê" k="71" /> + <hkern u1="v" u2="ě" k="71" /> + <hkern u1="v" u2="ĕ" k="71" /> + <hkern u1="v" u2="é" k="71" /> + <hkern u1="v" u2="đ" k="71" /> + <hkern u1="v" u2="ď" k="71" /> + <hkern u1="v" u2="ċ" k="71" /> + <hkern u1="v" u2="ĉ" k="71" /> + <hkern u1="v" u2="ç" k="71" /> + <hkern u1="v" u2="č" k="71" /> + <hkern u1="v" u2="ć" k="71" /> + <hkern u1="v" u2="ã" k="71" /> + <hkern u1="v" u2="å" k="71" /> + <hkern u1="v" u2="ą" k="71" /> + <hkern u1="v" u2="ā" k="71" /> + <hkern u1="v" u2="à" k="71" /> + <hkern u1="v" u2="ä" k="71" /> + <hkern u1="v" u2="â" k="71" /> + <hkern u1="v" u2="ă" k="71" /> + <hkern u1="v" u2="á" k="71" /> + <hkern u1="v" u2="c" k="71" /> + <hkern u1="v" u2="q" k="71" /> + <hkern u1="v" u2="o" k="71" /> + <hkern u1="v" u2="g" k="71" /> + <hkern u1="v" u2="e" k="71" /> + <hkern u1="v" u2="d" k="71" /> + <hkern u1="v" u2="a" k="71" /> + <hkern u1="w" u2="œ" k="71" /> + <hkern u1="w" u2="ō" k="71" /> + <hkern u1="w" u2="ő" k="71" /> + <hkern u1="w" u2="ò" k="71" /> + <hkern u1="w" u2="ö" k="71" /> + <hkern u1="w" u2="ŏ" k="71" /> + <hkern u1="w" u2="ô" k="71" /> + <hkern u1="w" u2="ó" k="71" /> + <hkern u1="w" u2="ġ" k="71" /> + <hkern u1="w" u2="ģ" k="71" /> + <hkern u1="w" u2="ĝ" k="71" /> + <hkern u1="w" u2="ğ" k="71" /> + <hkern u1="w" u2="ǽ" k="71" /> + <hkern u1="w" u2="æ" k="71" /> + <hkern u1="w" u2="õ" k="71" /> + <hkern u1="w" u2="ę" k="71" /> + <hkern u1="w" u2="ē" k="71" /> + <hkern u1="w" u2="è" k="71" /> + <hkern u1="w" u2="ė" k="71" /> + <hkern u1="w" u2="ë" k="71" /> + <hkern u1="w" u2="ê" k="71" /> + <hkern u1="w" u2="ě" k="71" /> + <hkern u1="w" u2="ĕ" k="71" /> + <hkern u1="w" u2="é" k="71" /> + <hkern u1="w" u2="đ" k="71" /> + <hkern u1="w" u2="ď" k="71" /> + <hkern u1="w" u2="ċ" k="71" /> + <hkern u1="w" u2="ĉ" k="71" /> + <hkern u1="w" u2="ç" k="71" /> + <hkern u1="w" u2="č" k="71" /> + <hkern u1="w" u2="ć" k="71" /> + <hkern u1="w" u2="ã" k="71" /> + <hkern u1="w" u2="å" k="71" /> + <hkern u1="w" u2="ą" k="71" /> + <hkern u1="w" u2="ā" k="71" /> + <hkern u1="w" u2="à" k="71" /> + <hkern u1="w" u2="ä" k="71" /> + <hkern u1="w" u2="â" k="71" /> + <hkern u1="w" u2="ă" k="71" /> + <hkern u1="w" u2="á" k="71" /> + <hkern u1="w" u2="c" k="71" /> + <hkern u1="w" u2="q" k="71" /> + <hkern u1="w" u2="o" k="71" /> + <hkern u1="w" u2="g" k="71" /> + <hkern u1="w" u2="e" k="71" /> + <hkern u1="w" u2="d" k="71" /> + <hkern u1="w" u2="a" k="71" /> + <hkern u1="x" u2="œ" k="104" /> + <hkern u1="x" u2="ō" k="104" /> + <hkern u1="x" u2="ő" k="104" /> + <hkern u1="x" u2="ò" k="104" /> + <hkern u1="x" u2="ö" k="104" /> + <hkern u1="x" u2="ŏ" k="104" /> + <hkern u1="x" u2="ô" k="104" /> + <hkern u1="x" u2="ó" k="104" /> + <hkern u1="x" u2="ġ" k="104" /> + <hkern u1="x" u2="ģ" k="104" /> + <hkern u1="x" u2="ĝ" k="104" /> + <hkern u1="x" u2="ğ" k="104" /> + <hkern u1="x" u2="ǽ" k="104" /> + <hkern u1="x" u2="æ" k="104" /> + <hkern u1="x" u2="õ" k="104" /> + <hkern u1="x" u2="ę" k="104" /> + <hkern u1="x" u2="ē" k="104" /> + <hkern u1="x" u2="è" k="104" /> + <hkern u1="x" u2="ė" k="104" /> + <hkern u1="x" u2="ë" k="104" /> + <hkern u1="x" u2="ê" k="104" /> + <hkern u1="x" u2="ě" k="104" /> + <hkern u1="x" u2="ĕ" k="104" /> + <hkern u1="x" u2="é" k="104" /> + <hkern u1="x" u2="đ" k="104" /> + <hkern u1="x" u2="ď" k="104" /> + <hkern u1="x" u2="ċ" k="104" /> + <hkern u1="x" u2="ĉ" k="104" /> + <hkern u1="x" u2="ç" k="104" /> + <hkern u1="x" u2="č" k="104" /> + <hkern u1="x" u2="ć" k="104" /> + <hkern u1="x" u2="ã" k="104" /> + <hkern u1="x" u2="å" k="104" /> + <hkern u1="x" u2="ą" k="104" /> + <hkern u1="x" u2="ā" k="104" /> + <hkern u1="x" u2="à" k="104" /> + <hkern u1="x" u2="ä" k="104" /> + <hkern u1="x" u2="â" k="104" /> + <hkern u1="x" u2="ă" k="104" /> + <hkern u1="x" u2="á" k="104" /> + <hkern u1="x" u2="c" k="104" /> + <hkern u1="x" u2="q" k="104" /> + <hkern u1="x" u2="o" k="104" /> + <hkern u1="x" u2="g" k="104" /> + <hkern u1="x" u2="e" k="104" /> + <hkern u1="x" u2="d" k="104" /> + <hkern u1="x" u2="a" k="104" /> + <hkern u1="y" u2="œ" k="71" /> + <hkern u1="y" u2="ō" k="71" /> + <hkern u1="y" u2="ő" k="71" /> + <hkern u1="y" u2="ò" k="71" /> + <hkern u1="y" u2="ö" k="71" /> + <hkern u1="y" u2="ŏ" k="71" /> + <hkern u1="y" u2="ô" k="71" /> + <hkern u1="y" u2="ó" k="71" /> + <hkern u1="y" u2="ġ" k="71" /> + <hkern u1="y" u2="ģ" k="71" /> + <hkern u1="y" u2="ĝ" k="71" /> + <hkern u1="y" u2="ğ" k="71" /> + <hkern u1="y" u2="ǽ" k="71" /> + <hkern u1="y" u2="æ" k="71" /> + <hkern u1="y" u2="õ" k="71" /> + <hkern u1="y" u2="ę" k="71" /> + <hkern u1="y" u2="ē" k="71" /> + <hkern u1="y" u2="è" k="71" /> + <hkern u1="y" u2="ė" k="71" /> + <hkern u1="y" u2="ë" k="71" /> + <hkern u1="y" u2="ê" k="71" /> + <hkern u1="y" u2="ě" k="71" /> + <hkern u1="y" u2="ĕ" k="71" /> + <hkern u1="y" u2="é" k="71" /> + <hkern u1="y" u2="đ" k="71" /> + <hkern u1="y" u2="ď" k="71" /> + <hkern u1="y" u2="ċ" k="71" /> + <hkern u1="y" u2="ĉ" k="71" /> + <hkern u1="y" u2="ç" k="71" /> + <hkern u1="y" u2="č" k="71" /> + <hkern u1="y" u2="ć" k="71" /> + <hkern u1="y" u2="ã" k="71" /> + <hkern u1="y" u2="å" k="71" /> + <hkern u1="y" u2="ą" k="71" /> + <hkern u1="y" u2="ā" k="71" /> + <hkern u1="y" u2="à" k="71" /> + <hkern u1="y" u2="ä" k="71" /> + <hkern u1="y" u2="â" k="71" /> + <hkern u1="y" u2="ă" k="71" /> + <hkern u1="y" u2="á" k="71" /> + <hkern u1="y" u2="c" k="71" /> + <hkern u1="y" u2="q" k="71" /> + <hkern u1="y" u2="o" k="71" /> + <hkern u1="y" u2="g" k="71" /> + <hkern u1="y" u2="e" k="71" /> + <hkern u1="y" u2="d" k="71" /> + <hkern u1="y" u2="a" k="71" /> + <hkern u1="z" u2="œ" k="41" /> + <hkern u1="z" u2="ō" k="41" /> + <hkern u1="z" u2="ő" k="41" /> + <hkern u1="z" u2="ò" k="41" /> + <hkern u1="z" u2="ö" k="41" /> + <hkern u1="z" u2="ŏ" k="41" /> + <hkern u1="z" u2="ô" k="41" /> + <hkern u1="z" u2="ó" k="41" /> + <hkern u1="z" u2="ġ" k="41" /> + <hkern u1="z" u2="ģ" k="41" /> + <hkern u1="z" u2="ĝ" k="41" /> + <hkern u1="z" u2="ğ" k="41" /> + <hkern u1="z" u2="ǽ" k="41" /> + <hkern u1="z" u2="æ" k="41" /> + <hkern u1="z" u2="õ" k="41" /> + <hkern u1="z" u2="ę" k="41" /> + <hkern u1="z" u2="ē" k="41" /> + <hkern u1="z" u2="è" k="41" /> + <hkern u1="z" u2="ė" k="41" /> + <hkern u1="z" u2="ë" k="41" /> + <hkern u1="z" u2="ê" k="41" /> + <hkern u1="z" u2="ě" k="41" /> + <hkern u1="z" u2="ĕ" k="41" /> + <hkern u1="z" u2="é" k="41" /> + <hkern u1="z" u2="đ" k="41" /> + <hkern u1="z" u2="ď" k="41" /> + <hkern u1="z" u2="ċ" k="41" /> + <hkern u1="z" u2="ĉ" k="41" /> + <hkern u1="z" u2="ç" k="41" /> + <hkern u1="z" u2="č" k="41" /> + <hkern u1="z" u2="ć" k="41" /> + <hkern u1="z" u2="ã" k="41" /> + <hkern u1="z" u2="å" k="41" /> + <hkern u1="z" u2="ą" k="41" /> + <hkern u1="z" u2="ā" k="41" /> + <hkern u1="z" u2="à" k="41" /> + <hkern u1="z" u2="ä" k="41" /> + <hkern u1="z" u2="â" k="41" /> + <hkern u1="z" u2="ă" k="41" /> + <hkern u1="z" u2="á" k="41" /> + <hkern u1="z" u2="c" k="41" /> + <hkern u1="z" u2="q" k="41" /> + <hkern u1="z" u2="o" k="41" /> + <hkern u1="z" u2="g" k="41" /> + <hkern u1="z" u2="e" k="41" /> + <hkern u1="z" u2="d" k="41" /> + <hkern u1="z" u2="a" k="41" /> + <hkern u1="c" u2="œ" k="42" /> + <hkern u1="c" u2="ō" k="42" /> + <hkern u1="c" u2="ő" k="42" /> + <hkern u1="c" u2="ò" k="42" /> + <hkern u1="c" u2="ö" k="42" /> + <hkern u1="c" u2="ŏ" k="42" /> + <hkern u1="c" u2="ô" k="42" /> + <hkern u1="c" u2="ó" k="42" /> + <hkern u1="c" u2="ġ" k="42" /> + <hkern u1="c" u2="ģ" k="42" /> + <hkern u1="c" u2="ĝ" k="42" /> + <hkern u1="c" u2="ğ" k="42" /> + <hkern u1="c" u2="ǽ" k="42" /> + <hkern u1="c" u2="æ" k="42" /> + <hkern u1="c" u2="õ" k="42" /> + <hkern u1="c" u2="ę" k="42" /> + <hkern u1="c" u2="ē" k="42" /> + <hkern u1="c" u2="è" k="42" /> + <hkern u1="c" u2="ė" k="42" /> + <hkern u1="c" u2="ë" k="42" /> + <hkern u1="c" u2="ê" k="42" /> + <hkern u1="c" u2="ě" k="42" /> + <hkern u1="c" u2="ĕ" k="42" /> + <hkern u1="c" u2="é" k="42" /> + <hkern u1="c" u2="đ" k="42" /> + <hkern u1="c" u2="ď" k="42" /> + <hkern u1="c" u2="ċ" k="42" /> + <hkern u1="c" u2="ĉ" k="42" /> + <hkern u1="c" u2="ç" k="42" /> + <hkern u1="c" u2="č" k="42" /> + <hkern u1="c" u2="ć" k="42" /> + <hkern u1="c" u2="ã" k="42" /> + <hkern u1="c" u2="å" k="42" /> + <hkern u1="c" u2="ą" k="42" /> + <hkern u1="c" u2="ā" k="42" /> + <hkern u1="c" u2="à" k="42" /> + <hkern u1="c" u2="ä" k="42" /> + <hkern u1="c" u2="â" k="42" /> + <hkern u1="c" u2="ă" k="42" /> + <hkern u1="c" u2="á" k="42" /> + <hkern u1="c" u2="c" k="42" /> + <hkern u1="c" u2="q" k="42" /> + <hkern u1="c" u2="o" k="42" /> + <hkern u1="c" u2="g" k="42" /> + <hkern u1="c" u2="e" k="42" /> + <hkern u1="c" u2="d" k="42" /> + <hkern u1="c" u2="a" k="42" /> + <hkern u1="ẃ" u2="œ" k="71" /> + <hkern u1="ẃ" u2="ō" k="71" /> + <hkern u1="ẃ" u2="ő" k="71" /> + <hkern u1="ẃ" u2="ò" k="71" /> + <hkern u1="ẃ" u2="ö" k="71" /> + <hkern u1="ẃ" u2="ŏ" k="71" /> + <hkern u1="ẃ" u2="ô" k="71" /> + <hkern u1="ẃ" u2="ó" k="71" /> + <hkern u1="ẃ" u2="ġ" k="71" /> + <hkern u1="ẃ" u2="ģ" k="71" /> + <hkern u1="ẃ" u2="ĝ" k="71" /> + <hkern u1="ẃ" u2="ğ" k="71" /> + <hkern u1="ẃ" u2="ǽ" k="71" /> + <hkern u1="ẃ" u2="æ" k="71" /> + <hkern u1="ẃ" u2="õ" k="71" /> + <hkern u1="ẃ" u2="ę" k="71" /> + <hkern u1="ẃ" u2="ē" k="71" /> + <hkern u1="ẃ" u2="è" k="71" /> + <hkern u1="ẃ" u2="ė" k="71" /> + <hkern u1="ẃ" u2="ë" k="71" /> + <hkern u1="ẃ" u2="ê" k="71" /> + <hkern u1="ẃ" u2="ě" k="71" /> + <hkern u1="ẃ" u2="ĕ" k="71" /> + <hkern u1="ẃ" u2="é" k="71" /> + <hkern u1="ẃ" u2="đ" k="71" /> + <hkern u1="ẃ" u2="ď" k="71" /> + <hkern u1="ẃ" u2="ċ" k="71" /> + <hkern u1="ẃ" u2="ĉ" k="71" /> + <hkern u1="ẃ" u2="ç" k="71" /> + <hkern u1="ẃ" u2="č" k="71" /> + <hkern u1="ẃ" u2="ć" k="71" /> + <hkern u1="ẃ" u2="ã" k="71" /> + <hkern u1="ẃ" u2="å" k="71" /> + <hkern u1="ẃ" u2="ą" k="71" /> + <hkern u1="ẃ" u2="ā" k="71" /> + <hkern u1="ẃ" u2="à" k="71" /> + <hkern u1="ẃ" u2="ä" k="71" /> + <hkern u1="ẃ" u2="â" k="71" /> + <hkern u1="ẃ" u2="ă" k="71" /> + <hkern u1="ẃ" u2="á" k="71" /> + <hkern u1="ẃ" u2="c" k="71" /> + <hkern u1="ẃ" u2="q" k="71" /> + <hkern u1="ẃ" u2="o" k="71" /> + <hkern u1="ẃ" u2="g" k="71" /> + <hkern u1="ẃ" u2="e" k="71" /> + <hkern u1="ẃ" u2="d" k="71" /> + <hkern u1="ẃ" u2="a" k="71" /> + <hkern u1="ẁ" u2="œ" k="71" /> + <hkern u1="ẁ" u2="ō" k="71" /> + <hkern u1="ẁ" u2="ő" k="71" /> + <hkern u1="ẁ" u2="ò" k="71" /> + <hkern u1="ẁ" u2="ö" k="71" /> + <hkern u1="ẁ" u2="ŏ" k="71" /> + <hkern u1="ẁ" u2="ô" k="71" /> + <hkern u1="ẁ" u2="ó" k="71" /> + <hkern u1="ẁ" u2="ġ" k="71" /> + <hkern u1="ẁ" u2="ģ" k="71" /> + <hkern u1="ẁ" u2="ĝ" k="71" /> + <hkern u1="ẁ" u2="ğ" k="71" /> + <hkern u1="ẁ" u2="ǽ" k="71" /> + <hkern u1="ẁ" u2="æ" k="71" /> + <hkern u1="ẁ" u2="õ" k="71" /> + <hkern u1="ẁ" u2="ę" k="71" /> + <hkern u1="ẁ" u2="ē" k="71" /> + <hkern u1="ẁ" u2="è" k="71" /> + <hkern u1="ẁ" u2="ė" k="71" /> + <hkern u1="ẁ" u2="ë" k="71" /> + <hkern u1="ẁ" u2="ê" k="71" /> + <hkern u1="ẁ" u2="ě" k="71" /> + <hkern u1="ẁ" u2="ĕ" k="71" /> + <hkern u1="ẁ" u2="é" k="71" /> + <hkern u1="ẁ" u2="đ" k="71" /> + <hkern u1="ẁ" u2="ď" k="71" /> + <hkern u1="ẁ" u2="ċ" k="71" /> + <hkern u1="ẁ" u2="ĉ" k="71" /> + <hkern u1="ẁ" u2="ç" k="71" /> + <hkern u1="ẁ" u2="č" k="71" /> + <hkern u1="ẁ" u2="ć" k="71" /> + <hkern u1="ẁ" u2="ã" k="71" /> + <hkern u1="ẁ" u2="å" k="71" /> + <hkern u1="ẁ" u2="ą" k="71" /> + <hkern u1="ẁ" u2="ā" k="71" /> + <hkern u1="ẁ" u2="à" k="71" /> + <hkern u1="ẁ" u2="ä" k="71" /> + <hkern u1="ẁ" u2="â" k="71" /> + <hkern u1="ẁ" u2="ă" k="71" /> + <hkern u1="ẁ" u2="á" k="71" /> + <hkern u1="ẁ" u2="c" k="71" /> + <hkern u1="ẁ" u2="q" k="71" /> + <hkern u1="ẁ" u2="o" k="71" /> + <hkern u1="ẁ" u2="g" k="71" /> + <hkern u1="ẁ" u2="e" k="71" /> + <hkern u1="ẁ" u2="d" k="71" /> + <hkern u1="ẁ" u2="a" k="71" /> + <hkern u1="Ð" u2="Â" k="120" /> + <hkern u1="Ð" u2="Ă" k="120" /> + <hkern u1="Ð" u2="Ŵ" k="100" /> + <hkern u1="Ð" u2="Á" k="120" /> + <hkern u1="Ð" u2="À" k="120" /> + <hkern u1="Ð" u2="Ä" k="120" /> + <hkern u1="Ð" u2="Ỳ" k="80" /> + <hkern u1="Ð" u2="Ÿ" k="80" /> + <hkern u1="Ð" u2="Ŷ" k="80" /> + <hkern u1="Ð" u2="Ý" k="80" /> + <hkern u1="Ð" u2="Ẁ" k="100" /> + <hkern u1="Ð" u2="Ẅ" k="100" /> + <hkern u1="Ð" u2="Ẃ" k="100" /> + <hkern u1="Ð" u2="Ș" k="62" /> + <hkern u1="Ð" u2="Ŝ" k="62" /> + <hkern u1="Ð" u2="Ş" k="62" /> + <hkern u1="Ð" u2="Š" k="62" /> + <hkern u1="Ð" u2="Ã" k="120" /> + <hkern u1="Ð" u2="Å" k="120" /> + <hkern u1="Ð" u2="Ą" k="120" /> + <hkern u1="Ð" u2="Ā" k="120" /> + <hkern u1="Ð" u2="Ţ" k="80" /> + <hkern u1="Ð" u2="Ś" k="62" /> + <hkern u1="Ð" u2="Y" k="80" /> + <hkern u1="Ð" u2="X" k="84" /> + <hkern u1="Ð" u2="W" k="100" /> + <hkern u1="Ð" u2="V" k="100" /> + <hkern u1="Ð" u2="A" k="120" /> + <hkern u1="Ð" u2="T" k="80" /> + <hkern u1="Ð" u2="S" k="62" /> + <hkern u1=""" u2="œ" k="124" /> + <hkern u1=""" u2="ō" k="124" /> + <hkern u1=""" u2="ő" k="124" /> + <hkern u1=""" u2="ò" k="124" /> + <hkern u1=""" u2="ö" k="124" /> + <hkern u1=""" u2="ŏ" k="124" /> + <hkern u1=""" u2="ô" k="124" /> + <hkern u1=""" u2="ó" k="124" /> + <hkern u1=""" u2="ġ" k="124" /> + <hkern u1=""" u2="ģ" k="124" /> + <hkern u1=""" u2="ĝ" k="124" /> + <hkern u1=""" u2="ğ" k="124" /> + <hkern u1=""" u2="ǽ" k="124" /> + <hkern u1=""" u2="æ" k="124" /> + <hkern u1=""" u2="Č" k="62" /> + <hkern u1=""" u2="Ć" k="62" /> + <hkern u1=""" u2="õ" k="124" /> + <hkern u1=""" u2="ę" k="124" /> + <hkern u1=""" u2="ē" k="124" /> + <hkern u1=""" u2="è" k="124" /> + <hkern u1=""" u2="ė" k="124" /> + <hkern u1=""" u2="ë" k="124" /> + <hkern u1=""" u2="ê" k="124" /> + <hkern u1=""" u2="ě" k="124" /> + <hkern u1=""" u2="ĕ" k="124" /> + <hkern u1=""" u2="é" k="124" /> + <hkern u1=""" u2="đ" k="124" /> + <hkern u1=""" u2="ď" k="124" /> + <hkern u1=""" u2="ċ" k="124" /> + <hkern u1=""" u2="ĉ" k="124" /> + <hkern u1=""" u2="ç" k="124" /> + <hkern u1=""" u2="č" k="124" /> + <hkern u1=""" u2="ć" k="124" /> + <hkern u1=""" u2="ã" k="124" /> + <hkern u1=""" u2="å" k="124" /> + <hkern u1=""" u2="ą" k="124" /> + <hkern u1=""" u2="ā" k="124" /> + <hkern u1=""" u2="à" k="124" /> + <hkern u1=""" u2="ä" k="124" /> + <hkern u1=""" u2="â" k="124" /> + <hkern u1=""" u2="ă" k="124" /> + <hkern u1=""" u2="á" k="124" /> + <hkern u1=""" u2="Ĝ" k="62" /> + <hkern u1=""" u2="Ğ" k="62" /> + <hkern u1=""" u2="Ċ" k="62" /> + <hkern u1=""" u2="Ĉ" k="62" /> + <hkern u1=""" u2="Ç" k="62" /> + <hkern u1=""" u2="Ö" k="62" /> + <hkern u1=""" u2="Ø" k="62" /> + <hkern u1=""" u2="C" k="62" /> + <hkern u1=""" u2="Õ" k="62" /> + <hkern u1=""" u2="Ǿ" k="62" /> + <hkern u1=""" u2="Ō" k="62" /> + <hkern u1=""" u2="Ő" k="62" /> + <hkern u1=""" u2="Ò" k="62" /> + <hkern u1=""" u2="Ô" k="62" /> + <hkern u1=""" u2="Ŏ" k="62" /> + <hkern u1=""" u2="Ģ" k="62" /> + <hkern u1=""" u2="Ó" k="62" /> + <hkern u1=""" u2="0" k="62" /> + <hkern u1=""" u2="Œ" k="62" /> + <hkern u1=""" u2="Ġ" k="62" /> + <hkern u1=""" u2="c" k="124" /> + <hkern u1=""" u2="q" k="124" /> + <hkern u1=""" u2="o" k="124" /> + <hkern u1=""" u2="g" k="124" /> + <hkern u1=""" u2="e" k="124" /> + <hkern u1=""" u2="d" k="124" /> + <hkern u1=""" u2="a" k="124" /> + <hkern u1=""" u2="Q" k="62" /> + <hkern u1=""" u2="O" k="62" /> + <hkern u1=""" u2="G" k="62" /> + <hkern u1=""" u2="®" k="62" /> + <hkern u1=""" u2="©" k="62" /> + <hkern u1="'" u2="œ" k="124" /> + <hkern u1="'" u2="ō" k="124" /> + <hkern u1="'" u2="ő" k="124" /> + <hkern u1="'" u2="ò" k="124" /> + <hkern u1="'" u2="ö" k="124" /> + <hkern u1="'" u2="ŏ" k="124" /> + <hkern u1="'" u2="ô" k="124" /> + <hkern u1="'" u2="ó" k="124" /> + <hkern u1="'" u2="ġ" k="124" /> + <hkern u1="'" u2="ģ" k="124" /> + <hkern u1="'" u2="ĝ" k="124" /> + <hkern u1="'" u2="ğ" k="124" /> + <hkern u1="'" u2="ǽ" k="124" /> + <hkern u1="'" u2="æ" k="124" /> + <hkern u1="'" u2="Č" k="62" /> + <hkern u1="'" u2="Ć" k="62" /> + <hkern u1="'" u2="õ" k="124" /> + <hkern u1="'" u2="ę" k="124" /> + <hkern u1="'" u2="ē" k="124" /> + <hkern u1="'" u2="è" k="124" /> + <hkern u1="'" u2="ė" k="124" /> + <hkern u1="'" u2="ë" k="124" /> + <hkern u1="'" u2="ê" k="124" /> + <hkern u1="'" u2="ě" k="124" /> + <hkern u1="'" u2="ĕ" k="124" /> + <hkern u1="'" u2="é" k="124" /> + <hkern u1="'" u2="đ" k="124" /> + <hkern u1="'" u2="ď" k="124" /> + <hkern u1="'" u2="ċ" k="124" /> + <hkern u1="'" u2="ĉ" k="124" /> + <hkern u1="'" u2="ç" k="124" /> + <hkern u1="'" u2="č" k="124" /> + <hkern u1="'" u2="ć" k="124" /> + <hkern u1="'" u2="ã" k="124" /> + <hkern u1="'" u2="å" k="124" /> + <hkern u1="'" u2="ą" k="124" /> + <hkern u1="'" u2="ā" k="124" /> + <hkern u1="'" u2="à" k="124" /> + <hkern u1="'" u2="ä" k="124" /> + <hkern u1="'" u2="â" k="124" /> + <hkern u1="'" u2="ă" k="124" /> + <hkern u1="'" u2="á" k="124" /> + <hkern u1="'" u2="Ĝ" k="62" /> + <hkern u1="'" u2="Ğ" k="62" /> + <hkern u1="'" u2="Ċ" k="62" /> + <hkern u1="'" u2="Ĉ" k="62" /> + <hkern u1="'" u2="Ç" k="62" /> + <hkern u1="'" u2="Ö" k="62" /> + <hkern u1="'" u2="Ø" k="62" /> + <hkern u1="'" u2="C" k="62" /> + <hkern u1="'" u2="Õ" k="62" /> + <hkern u1="'" u2="Ǿ" k="62" /> + <hkern u1="'" u2="Ō" k="62" /> + <hkern u1="'" u2="Ő" k="62" /> + <hkern u1="'" u2="Ò" k="62" /> + <hkern u1="'" u2="Ô" k="62" /> + <hkern u1="'" u2="Ŏ" k="62" /> + <hkern u1="'" u2="Ģ" k="62" /> + <hkern u1="'" u2="Ó" k="62" /> + <hkern u1="'" u2="0" k="62" /> + <hkern u1="'" u2="Œ" k="62" /> + <hkern u1="'" u2="Ġ" k="62" /> + <hkern u1="'" u2="c" k="124" /> + <hkern u1="'" u2="q" k="124" /> + <hkern u1="'" u2="o" k="124" /> + <hkern u1="'" u2="g" k="124" /> + <hkern u1="'" u2="e" k="124" /> + <hkern u1="'" u2="d" k="124" /> + <hkern u1="'" u2="a" k="124" /> + <hkern u1="'" u2="Q" k="62" /> + <hkern u1="'" u2="O" k="62" /> + <hkern u1="'" u2="G" k="62" /> + <hkern u1="'" u2="®" k="62" /> + <hkern u1="'" u2="©" k="62" /> + <hkern u1="7" u2="." k="240" /> + <hkern u1="7" u2="," k="240" /> + <hkern u1="7" u2="„" k="240" /> + <hkern u1="7" u2="‚" k="240" /> + <hkern u1="7" u2="‥" k="240" /> + <hkern u1="7" u2="․" k="240" /> + <hkern u1="7" u2="…" k="240" /> + <hkern u1="7" u2="_" k="240" /> + <hkern u1="Ś" u2="Ŵ" k="42" /> + <hkern u1="Ś" u2="Ẁ" k="42" /> + <hkern u1="Ś" u2="Ẅ" k="42" /> + <hkern u1="Ś" u2="Ẃ" k="42" /> + <hkern u1="Ś" u2="W" k="42" /> + <hkern u1="Ś" u2="V" k="42" /> + <hkern u1="ŵ" u2="œ" k="71" /> + <hkern u1="ŵ" u2="ō" k="71" /> + <hkern u1="ŵ" u2="ő" k="71" /> + <hkern u1="ŵ" u2="ò" k="71" /> + <hkern u1="ŵ" u2="ö" k="71" /> + <hkern u1="ŵ" u2="ŏ" k="71" /> + <hkern u1="ŵ" u2="ô" k="71" /> + <hkern u1="ŵ" u2="ó" k="71" /> + <hkern u1="ŵ" u2="ġ" k="71" /> + <hkern u1="ŵ" u2="ģ" k="71" /> + <hkern u1="ŵ" u2="ĝ" k="71" /> + <hkern u1="ŵ" u2="ğ" k="71" /> + <hkern u1="ŵ" u2="ǽ" k="71" /> + <hkern u1="ŵ" u2="æ" k="71" /> + <hkern u1="ŵ" u2="õ" k="71" /> + <hkern u1="ŵ" u2="ę" k="71" /> + <hkern u1="ŵ" u2="ē" k="71" /> + <hkern u1="ŵ" u2="è" k="71" /> + <hkern u1="ŵ" u2="ė" k="71" /> + <hkern u1="ŵ" u2="ë" k="71" /> + <hkern u1="ŵ" u2="ê" k="71" /> + <hkern u1="ŵ" u2="ě" k="71" /> + <hkern u1="ŵ" u2="ĕ" k="71" /> + <hkern u1="ŵ" u2="é" k="71" /> + <hkern u1="ŵ" u2="đ" k="71" /> + <hkern u1="ŵ" u2="ď" k="71" /> + <hkern u1="ŵ" u2="ċ" k="71" /> + <hkern u1="ŵ" u2="ĉ" k="71" /> + <hkern u1="ŵ" u2="ç" k="71" /> + <hkern u1="ŵ" u2="č" k="71" /> + <hkern u1="ŵ" u2="ć" k="71" /> + <hkern u1="ŵ" u2="ã" k="71" /> + <hkern u1="ŵ" u2="å" k="71" /> + <hkern u1="ŵ" u2="ą" k="71" /> + <hkern u1="ŵ" u2="ā" k="71" /> + <hkern u1="ŵ" u2="à" k="71" /> + <hkern u1="ŵ" u2="ä" k="71" /> + <hkern u1="ŵ" u2="â" k="71" /> + <hkern u1="ŵ" u2="ă" k="71" /> + <hkern u1="ŵ" u2="á" k="71" /> + <hkern u1="ŵ" u2="c" k="71" /> + <hkern u1="ŵ" u2="q" k="71" /> + <hkern u1="ŵ" u2="o" k="71" /> + <hkern u1="ŵ" u2="g" k="71" /> + <hkern u1="ŵ" u2="e" k="71" /> + <hkern u1="ŵ" u2="d" k="71" /> + <hkern u1="ŵ" u2="a" k="71" /> + <hkern u1="ẅ" u2="œ" k="71" /> + <hkern u1="ẅ" u2="ō" k="71" /> + <hkern u1="ẅ" u2="ő" k="71" /> + <hkern u1="ẅ" u2="ò" k="71" /> + <hkern u1="ẅ" u2="ö" k="71" /> + <hkern u1="ẅ" u2="ŏ" k="71" /> + <hkern u1="ẅ" u2="ô" k="71" /> + <hkern u1="ẅ" u2="ó" k="71" /> + <hkern u1="ẅ" u2="ġ" k="71" /> + <hkern u1="ẅ" u2="ģ" k="71" /> + <hkern u1="ẅ" u2="ĝ" k="71" /> + <hkern u1="ẅ" u2="ğ" k="71" /> + <hkern u1="ẅ" u2="ǽ" k="71" /> + <hkern u1="ẅ" u2="æ" k="71" /> + <hkern u1="ẅ" u2="õ" k="71" /> + <hkern u1="ẅ" u2="ę" k="71" /> + <hkern u1="ẅ" u2="ē" k="71" /> + <hkern u1="ẅ" u2="è" k="71" /> + <hkern u1="ẅ" u2="ė" k="71" /> + <hkern u1="ẅ" u2="ë" k="71" /> + <hkern u1="ẅ" u2="ê" k="71" /> + <hkern u1="ẅ" u2="ě" k="71" /> + <hkern u1="ẅ" u2="ĕ" k="71" /> + <hkern u1="ẅ" u2="é" k="71" /> + <hkern u1="ẅ" u2="đ" k="71" /> + <hkern u1="ẅ" u2="ď" k="71" /> + <hkern u1="ẅ" u2="ċ" k="71" /> + <hkern u1="ẅ" u2="ĉ" k="71" /> + <hkern u1="ẅ" u2="ç" k="71" /> + <hkern u1="ẅ" u2="č" k="71" /> + <hkern u1="ẅ" u2="ć" k="71" /> + <hkern u1="ẅ" u2="ã" k="71" /> + <hkern u1="ẅ" u2="å" k="71" /> + <hkern u1="ẅ" u2="ą" k="71" /> + <hkern u1="ẅ" u2="ā" k="71" /> + <hkern u1="ẅ" u2="à" k="71" /> + <hkern u1="ẅ" u2="ä" k="71" /> + <hkern u1="ẅ" u2="â" k="71" /> + <hkern u1="ẅ" u2="ă" k="71" /> + <hkern u1="ẅ" u2="á" k="71" /> + <hkern u1="ẅ" u2="c" k="71" /> + <hkern u1="ẅ" u2="q" k="71" /> + <hkern u1="ẅ" u2="o" k="71" /> + <hkern u1="ẅ" u2="g" k="71" /> + <hkern u1="ẅ" u2="e" k="71" /> + <hkern u1="ẅ" u2="d" k="71" /> + <hkern u1="ẅ" u2="a" k="71" /> + <hkern u1="ŗ" u2="œ" k="97" /> + <hkern u1="ŗ" u2="ś" k="53" /> + <hkern u1="ŗ" u2="š" k="53" /> + <hkern u1="ŗ" u2="ō" k="97" /> + <hkern u1="ŗ" u2="ő" k="97" /> + <hkern u1="ŗ" u2="ò" k="97" /> + <hkern u1="ŗ" u2="ö" k="97" /> + <hkern u1="ŗ" u2="ŏ" k="97" /> + <hkern u1="ŗ" u2="ô" k="97" /> + <hkern u1="ŗ" u2="ó" k="97" /> + <hkern u1="ŗ" u2="ġ" k="97" /> + <hkern u1="ŗ" u2="ģ" k="97" /> + <hkern u1="ŗ" u2="ĝ" k="97" /> + <hkern u1="ŗ" u2="ğ" k="97" /> + <hkern u1="ŗ" u2="ǽ" k="97" /> + <hkern u1="ŗ" u2="æ" k="97" /> + <hkern u1="ŗ" u2="Č" k="75" /> + <hkern u1="ŗ" u2="Ć" k="75" /> + <hkern u1="ŗ" u2="õ" k="97" /> + <hkern u1="ŗ" u2="ę" k="97" /> + <hkern u1="ŗ" u2="ē" k="97" /> + <hkern u1="ŗ" u2="è" k="97" /> + <hkern u1="ŗ" u2="ė" k="97" /> + <hkern u1="ŗ" u2="ë" k="97" /> + <hkern u1="ŗ" u2="ê" k="97" /> + <hkern u1="ŗ" u2="ě" k="97" /> + <hkern u1="ŗ" u2="ĕ" k="97" /> + <hkern u1="ŗ" u2="é" k="97" /> + <hkern u1="ŗ" u2="đ" k="97" /> + <hkern u1="ŗ" u2="ď" k="97" /> + <hkern u1="ŗ" u2="ċ" k="97" /> + <hkern u1="ŗ" u2="ĉ" k="97" /> + <hkern u1="ŗ" u2="ç" k="97" /> + <hkern u1="ŗ" u2="č" k="97" /> + <hkern u1="ŗ" u2="ć" k="97" /> + <hkern u1="ŗ" u2="ã" k="97" /> + <hkern u1="ŗ" u2="å" k="97" /> + <hkern u1="ŗ" u2="ą" k="97" /> + <hkern u1="ŗ" u2="ā" k="97" /> + <hkern u1="ŗ" u2="à" k="97" /> + <hkern u1="ŗ" u2="ä" k="97" /> + <hkern u1="ŗ" u2="â" k="97" /> + <hkern u1="ŗ" u2="ă" k="97" /> + <hkern u1="ŗ" u2="á" k="97" /> + <hkern u1="ŗ" u2="Ĝ" k="75" /> + <hkern u1="ŗ" u2="Ğ" k="75" /> + <hkern u1="ŗ" u2="Ċ" k="75" /> + <hkern u1="ŗ" u2="Ĉ" k="75" /> + <hkern u1="ŗ" u2="Ç" k="75" /> + <hkern u1="ŗ" u2="Ö" k="75" /> + <hkern u1="ŗ" u2="Ø" k="75" /> + <hkern u1="ŗ" u2="C" k="75" /> + <hkern u1="ŗ" u2="Õ" k="75" /> + <hkern u1="ŗ" u2="Ǿ" k="75" /> + <hkern u1="ŗ" u2="Ō" k="75" /> + <hkern u1="ŗ" u2="Ő" k="75" /> + <hkern u1="ŗ" u2="Ò" k="75" /> + <hkern u1="ŗ" u2="Ô" k="75" /> + <hkern u1="ŗ" u2="Ŏ" k="75" /> + <hkern u1="ŗ" u2="Ģ" k="75" /> + <hkern u1="ŗ" u2="Ó" k="75" /> + <hkern u1="ŗ" u2="0" k="75" /> + <hkern u1="ŗ" u2="Œ" k="75" /> + <hkern u1="ŗ" u2="Ġ" k="75" /> + <hkern u1="ŗ" u2="c" k="97" /> + <hkern u1="ŗ" u2="s" k="53" /> + <hkern u1="ŗ" u2="q" k="97" /> + <hkern u1="ŗ" u2="o" k="97" /> + <hkern u1="ŗ" u2="g" k="97" /> + <hkern u1="ŗ" u2="e" k="97" /> + <hkern u1="ŗ" u2="d" k="97" /> + <hkern u1="ŗ" u2="a" k="97" /> + <hkern u1="ŗ" u2="Q" k="75" /> + <hkern u1="ŗ" u2="O" k="75" /> + <hkern u1="ŗ" u2="G" k="75" /> + <hkern u1="ŗ" u2="®" k="75" /> + <hkern u1="ŗ" u2="©" k="75" /> + <hkern u1="ţ" u2="œ" k="31" /> + <hkern u1="ţ" u2="ō" k="31" /> + <hkern u1="ţ" u2="ő" k="31" /> + <hkern u1="ţ" u2="ò" k="31" /> + <hkern u1="ţ" u2="ö" k="31" /> + <hkern u1="ţ" u2="ŏ" k="31" /> + <hkern u1="ţ" u2="ô" k="31" /> + <hkern u1="ţ" u2="ó" k="31" /> + <hkern u1="ţ" u2="ġ" k="31" /> + <hkern u1="ţ" u2="ģ" k="31" /> + <hkern u1="ţ" u2="ĝ" k="31" /> + <hkern u1="ţ" u2="ğ" k="31" /> + <hkern u1="ţ" u2="ǽ" k="31" /> + <hkern u1="ţ" u2="æ" k="31" /> + <hkern u1="ţ" u2="õ" k="31" /> + <hkern u1="ţ" u2="ę" k="31" /> + <hkern u1="ţ" u2="ē" k="31" /> + <hkern u1="ţ" u2="è" k="31" /> + <hkern u1="ţ" u2="ė" k="31" /> + <hkern u1="ţ" u2="ë" k="31" /> + <hkern u1="ţ" u2="ê" k="31" /> + <hkern u1="ţ" u2="ě" k="31" /> + <hkern u1="ţ" u2="ĕ" k="31" /> + <hkern u1="ţ" u2="é" k="31" /> + <hkern u1="ţ" u2="đ" k="31" /> + <hkern u1="ţ" u2="ď" k="31" /> + <hkern u1="ţ" u2="ċ" k="31" /> + <hkern u1="ţ" u2="ĉ" k="31" /> + <hkern u1="ţ" u2="ç" k="31" /> + <hkern u1="ţ" u2="č" k="31" /> + <hkern u1="ţ" u2="ć" k="31" /> + <hkern u1="ţ" u2="ã" k="31" /> + <hkern u1="ţ" u2="å" k="31" /> + <hkern u1="ţ" u2="ą" k="31" /> + <hkern u1="ţ" u2="ā" k="31" /> + <hkern u1="ţ" u2="à" k="31" /> + <hkern u1="ţ" u2="ä" k="31" /> + <hkern u1="ţ" u2="â" k="31" /> + <hkern u1="ţ" u2="ă" k="31" /> + <hkern u1="ţ" u2="á" k="31" /> + <hkern u1="ţ" u2="c" k="31" /> + <hkern u1="ţ" u2="q" k="31" /> + <hkern u1="ţ" u2="o" k="31" /> + <hkern u1="ţ" u2="g" k="31" /> + <hkern u1="ţ" u2="e" k="31" /> + <hkern u1="ţ" u2="d" k="31" /> + <hkern u1="ţ" u2="a" k="31" /> + <hkern u1="Ţ" u2="Â" k="271" /> + <hkern u1="Ţ" u2="Ă" k="271" /> + <hkern u1="Ţ" u2="Á" k="271" /> + <hkern u1="Ţ" u2="œ" k="140" /> + <hkern u1="Ţ" u2="ś" k="104" /> + <hkern u1="Ţ" u2="š" k="104" /> + <hkern u1="Ţ" u2="ō" k="140" /> + <hkern u1="Ţ" u2="ő" k="140" /> + <hkern u1="Ţ" u2="ò" k="140" /> + <hkern u1="Ţ" u2="ö" k="140" /> + <hkern u1="Ţ" u2="ŏ" k="140" /> + <hkern u1="Ţ" u2="ô" k="140" /> + <hkern u1="Ţ" u2="ó" k="140" /> + <hkern u1="Ţ" u2="ġ" k="140" /> + <hkern u1="Ţ" u2="ģ" k="140" /> + <hkern u1="Ţ" u2="ĝ" k="140" /> + <hkern u1="Ţ" u2="ğ" k="140" /> + <hkern u1="Ţ" u2="ǽ" k="140" /> + <hkern u1="Ţ" u2="æ" k="140" /> + <hkern u1="Ţ" u2="Č" k="104" /> + <hkern u1="Ţ" u2="Ć" k="104" /> + <hkern u1="Ţ" u2="õ" k="140" /> + <hkern u1="Ţ" u2="ę" k="140" /> + <hkern u1="Ţ" u2="ē" k="140" /> + <hkern u1="Ţ" u2="è" k="140" /> + <hkern u1="Ţ" u2="ė" k="140" /> + <hkern u1="Ţ" u2="ë" k="140" /> + <hkern u1="Ţ" u2="ê" k="140" /> + <hkern u1="Ţ" u2="ě" k="140" /> + <hkern u1="Ţ" u2="ĕ" k="140" /> + <hkern u1="Ţ" u2="é" k="140" /> + <hkern u1="Ţ" u2="đ" k="140" /> + <hkern u1="Ţ" u2="ď" k="140" /> + <hkern u1="Ţ" u2="ċ" k="140" /> + <hkern u1="Ţ" u2="ĉ" k="140" /> + <hkern u1="Ţ" u2="ç" k="140" /> + <hkern u1="Ţ" u2="č" k="140" /> + <hkern u1="Ţ" u2="ć" k="140" /> + <hkern u1="Ţ" u2="ã" k="140" /> + <hkern u1="Ţ" u2="å" k="140" /> + <hkern u1="Ţ" u2="ą" k="140" /> + <hkern u1="Ţ" u2="ā" k="140" /> + <hkern u1="Ţ" u2="à" k="140" /> + <hkern u1="Ţ" u2="ä" k="140" /> + <hkern u1="Ţ" u2="â" k="140" /> + <hkern u1="Ţ" u2="ă" k="140" /> + <hkern u1="Ţ" u2="á" k="140" /> + <hkern u1="Ţ" u2="À" k="271" /> + <hkern u1="Ţ" u2="Ä" k="271" /> + <hkern u1="Ţ" u2="Ĝ" k="104" /> + <hkern u1="Ţ" u2="Ğ" k="104" /> + <hkern u1="Ţ" u2="Ċ" k="104" /> + <hkern u1="Ţ" u2="Ĉ" k="104" /> + <hkern u1="Ţ" u2="Ç" k="104" /> + <hkern u1="Ţ" u2="Ö" k="104" /> + <hkern u1="Ţ" u2="Ø" k="104" /> + <hkern u1="Ţ" u2="C" k="104" /> + <hkern u1="Ţ" u2="Ș" k="41" /> + <hkern u1="Ţ" u2="Ŝ" k="41" /> + <hkern u1="Ţ" u2="Ş" k="41" /> + <hkern u1="Ţ" u2="Š" k="41" /> + <hkern u1="Ţ" u2="Õ" k="104" /> + <hkern u1="Ţ" u2="Ǿ" k="104" /> + <hkern u1="Ţ" u2="Ō" k="104" /> + <hkern u1="Ţ" u2="Ő" k="104" /> + <hkern u1="Ţ" u2="Ò" k="104" /> + <hkern u1="Ţ" u2="Ô" k="104" /> + <hkern u1="Ţ" u2="Ŏ" k="104" /> + <hkern u1="Ţ" u2="Ģ" k="104" /> + <hkern u1="Ţ" u2="Ã" k="271" /> + <hkern u1="Ţ" u2="Å" k="271" /> + <hkern u1="Ţ" u2="Ą" k="271" /> + <hkern u1="Ţ" u2="Ā" k="271" /> + <hkern u1="Ţ" u2="Ó" k="104" /> + <hkern u1="Ţ" u2="Ś" k="41" /> + <hkern u1="Ţ" u2="0" k="104" /> + <hkern u1="Ţ" u2="Œ" k="104" /> + <hkern u1="Ţ" u2="Ġ" k="104" /> + <hkern u1="Ţ" u2="c" k="140" /> + <hkern u1="Ţ" u2="s" k="104" /> + <hkern u1="Ţ" u2="q" k="140" /> + <hkern u1="Ţ" u2="o" k="140" /> + <hkern u1="Ţ" u2="g" k="140" /> + <hkern u1="Ţ" u2="e" k="140" /> + <hkern u1="Ţ" u2="d" k="140" /> + <hkern u1="Ţ" u2="a" k="140" /> + <hkern u1="Ţ" u2="Q" k="104" /> + <hkern u1="Ţ" u2="O" k="104" /> + <hkern u1="Ţ" u2="G" k="104" /> + <hkern u1="Ţ" u2="®" k="104" /> + <hkern u1="Ţ" u2="©" k="104" /> + <hkern u1="Ţ" u2="A" k="271" /> + <hkern u1="Ţ" u2="S" k="41" /> + <hkern u1="Ó" u2="Â" k="120" /> + <hkern u1="Ó" u2="Ă" k="120" /> + <hkern u1="Ó" u2="Ŵ" k="100" /> + <hkern u1="Ó" u2="Á" k="120" /> + <hkern u1="Ó" u2="À" k="120" /> + <hkern u1="Ó" u2="Ä" k="120" /> + <hkern u1="Ó" u2="Ỳ" k="80" /> + <hkern u1="Ó" u2="Ÿ" k="80" /> + <hkern u1="Ó" u2="Ŷ" k="80" /> + <hkern u1="Ó" u2="Ý" k="80" /> + <hkern u1="Ó" u2="Ẁ" k="100" /> + <hkern u1="Ó" u2="Ẅ" k="100" /> + <hkern u1="Ó" u2="Ẃ" k="100" /> + <hkern u1="Ó" u2="Ș" k="62" /> + <hkern u1="Ó" u2="Ŝ" k="62" /> + <hkern u1="Ó" u2="Ş" k="62" /> + <hkern u1="Ó" u2="Š" k="62" /> + <hkern u1="Ó" u2="Ã" k="120" /> + <hkern u1="Ó" u2="Å" k="120" /> + <hkern u1="Ó" u2="Ą" k="120" /> + <hkern u1="Ó" u2="Ā" k="120" /> + <hkern u1="Ó" u2="Ţ" k="80" /> + <hkern u1="Ó" u2="Ś" k="62" /> + <hkern u1="Ó" u2="Y" k="80" /> + <hkern u1="Ó" u2="X" k="84" /> + <hkern u1="Ó" u2="W" k="100" /> + <hkern u1="Ó" u2="V" k="100" /> + <hkern u1="Ó" u2="A" k="120" /> + <hkern u1="Ó" u2="T" k="80" /> + <hkern u1="Ó" u2="S" k="62" /> + <hkern u1="Ā" u2="ý" k="125" /> + <hkern u1="Ā" u2="ÿ" k="125" /> + <hkern u1="Ā" u2="ỳ" k="125" /> + <hkern u1="Ā" u2="Ŵ" k="208" /> + <hkern u1="Ā" u2="Č" k="120" /> + <hkern u1="Ā" u2="Ć" k="120" /> + <hkern u1="Ā" u2="Ĝ" k="120" /> + <hkern u1="Ā" u2="Ğ" k="120" /> + <hkern u1="Ā" u2="Ċ" k="120" /> + <hkern u1="Ā" u2="Ĉ" k="120" /> + <hkern u1="Ā" u2="Ç" k="120" /> + <hkern u1="Ā" u2="Ö" k="120" /> + <hkern u1="Ā" u2="Ø" k="120" /> + <hkern u1="Ā" u2="C" k="120" /> + <hkern u1="Ā" u2="Ỳ" k="250" /> + <hkern u1="Ā" u2="Ÿ" k="250" /> + <hkern u1="Ā" u2="Ŷ" k="250" /> + <hkern u1="Ā" u2="Ý" k="250" /> + <hkern u1="Ā" u2="Ẁ" k="208" /> + <hkern u1="Ā" u2="Ẅ" k="208" /> + <hkern u1="Ā" u2="Ẃ" k="208" /> + <hkern u1="Ā" u2="Ș" k="60" /> + <hkern u1="Ā" u2="Ŝ" k="60" /> + <hkern u1="Ā" u2="Ş" k="60" /> + <hkern u1="Ā" u2="Š" k="60" /> + <hkern u1="Ā" u2="Õ" k="120" /> + <hkern u1="Ā" u2="Ǿ" k="120" /> + <hkern u1="Ā" u2="Ō" k="120" /> + <hkern u1="Ā" u2="Ő" k="120" /> + <hkern u1="Ā" u2="Ò" k="120" /> + <hkern u1="Ā" u2="Ô" k="120" /> + <hkern u1="Ā" u2="Ŏ" k="120" /> + <hkern u1="Ā" u2="Ģ" k="120" /> + <hkern u1="Ā" u2="Ó" k="120" /> + <hkern u1="Ā" u2="Ţ" k="250" /> + <hkern u1="Ā" u2="ẅ" k="125" /> + <hkern u1="Ā" u2="ŵ" k="125" /> + <hkern u1="Ā" u2="Ś" k="60" /> + <hkern u1="Ā" u2="0" k="120" /> + <hkern u1="Ā" u2="Œ" k="120" /> + <hkern u1="Ā" u2="Ġ" k="120" /> + <hkern u1="Ā" u2="ẁ" k="125" /> + <hkern u1="Ā" u2="ẃ" k="125" /> + <hkern u1="Ā" u2="y" k="125" /> + <hkern u1="Ā" u2="w" k="125" /> + <hkern u1="Ā" u2="v" k="125" /> + <hkern u1="Ā" u2="Q" k="120" /> + <hkern u1="Ā" u2="O" k="120" /> + <hkern u1="Ā" u2="G" k="120" /> + <hkern u1="Ā" u2="®" k="120" /> + <hkern u1="Ā" u2="©" k="120" /> + <hkern u1="Ā" u2="Y" k="250" /> + <hkern u1="Ā" u2="W" k="208" /> + <hkern u1="Ā" u2="V" k="208" /> + <hkern u1="Ā" u2="T" k="250" /> + <hkern u1="Ā" u2="S" k="60" /> + <hkern u1="Ą" u2="ý" k="125" /> + <hkern u1="Ą" u2="ÿ" k="125" /> + <hkern u1="Ą" u2="ỳ" k="125" /> + <hkern u1="Ą" u2="Ŵ" k="208" /> + <hkern u1="Ą" u2="Č" k="120" /> + <hkern u1="Ą" u2="Ć" k="120" /> + <hkern u1="Ą" u2="Ĝ" k="120" /> + <hkern u1="Ą" u2="Ğ" k="120" /> + <hkern u1="Ą" u2="Ċ" k="120" /> + <hkern u1="Ą" u2="Ĉ" k="120" /> + <hkern u1="Ą" u2="Ç" k="120" /> + <hkern u1="Ą" u2="Ö" k="120" /> + <hkern u1="Ą" u2="Ø" k="120" /> + <hkern u1="Ą" u2="C" k="120" /> + <hkern u1="Ą" u2="Ỳ" k="250" /> + <hkern u1="Ą" u2="Ÿ" k="250" /> + <hkern u1="Ą" u2="Ŷ" k="250" /> + <hkern u1="Ą" u2="Ý" k="250" /> + <hkern u1="Ą" u2="Ẁ" k="208" /> + <hkern u1="Ą" u2="Ẅ" k="208" /> + <hkern u1="Ą" u2="Ẃ" k="208" /> + <hkern u1="Ą" u2="Ș" k="60" /> + <hkern u1="Ą" u2="Ŝ" k="60" /> + <hkern u1="Ą" u2="Ş" k="60" /> + <hkern u1="Ą" u2="Š" k="60" /> + <hkern u1="Ą" u2="Õ" k="120" /> + <hkern u1="Ą" u2="Ǿ" k="120" /> + <hkern u1="Ą" u2="Ō" k="120" /> + <hkern u1="Ą" u2="Ő" k="120" /> + <hkern u1="Ą" u2="Ò" k="120" /> + <hkern u1="Ą" u2="Ô" k="120" /> + <hkern u1="Ą" u2="Ŏ" k="120" /> + <hkern u1="Ą" u2="Ģ" k="120" /> + <hkern u1="Ą" u2="Ó" k="120" /> + <hkern u1="Ą" u2="Ţ" k="250" /> + <hkern u1="Ą" u2="ẅ" k="125" /> + <hkern u1="Ą" u2="ŵ" k="125" /> + <hkern u1="Ą" u2="Ś" k="60" /> + <hkern u1="Ą" u2="0" k="120" /> + <hkern u1="Ą" u2="Œ" k="120" /> + <hkern u1="Ą" u2="Ġ" k="120" /> + <hkern u1="Ą" u2="ẁ" k="125" /> + <hkern u1="Ą" u2="ẃ" k="125" /> + <hkern u1="Ą" u2="y" k="125" /> + <hkern u1="Ą" u2="w" k="125" /> + <hkern u1="Ą" u2="v" k="125" /> + <hkern u1="Ą" u2="Q" k="120" /> + <hkern u1="Ą" u2="O" k="120" /> + <hkern u1="Ą" u2="G" k="120" /> + <hkern u1="Ą" u2="®" k="120" /> + <hkern u1="Ą" u2="©" k="120" /> + <hkern u1="Ą" u2="Y" k="250" /> + <hkern u1="Ą" u2="W" k="208" /> + <hkern u1="Ą" u2="V" k="208" /> + <hkern u1="Ą" u2="T" k="250" /> + <hkern u1="Ą" u2="S" k="60" /> + <hkern u1="Å" u2="ý" k="125" /> + <hkern u1="Å" u2="ÿ" k="125" /> + <hkern u1="Å" u2="ỳ" k="125" /> + <hkern u1="Å" u2="Ŵ" k="208" /> + <hkern u1="Å" u2="Č" k="120" /> + <hkern u1="Å" u2="Ć" k="120" /> + <hkern u1="Å" u2="Ĝ" k="120" /> + <hkern u1="Å" u2="Ğ" k="120" /> + <hkern u1="Å" u2="Ċ" k="120" /> + <hkern u1="Å" u2="Ĉ" k="120" /> + <hkern u1="Å" u2="Ç" k="120" /> + <hkern u1="Å" u2="Ö" k="120" /> + <hkern u1="Å" u2="Ø" k="120" /> + <hkern u1="Å" u2="C" k="120" /> + <hkern u1="Å" u2="Ỳ" k="250" /> + <hkern u1="Å" u2="Ÿ" k="250" /> + <hkern u1="Å" u2="Ŷ" k="250" /> + <hkern u1="Å" u2="Ý" k="250" /> + <hkern u1="Å" u2="Ẁ" k="208" /> + <hkern u1="Å" u2="Ẅ" k="208" /> + <hkern u1="Å" u2="Ẃ" k="208" /> + <hkern u1="Å" u2="Ș" k="60" /> + <hkern u1="Å" u2="Ŝ" k="60" /> + <hkern u1="Å" u2="Ş" k="60" /> + <hkern u1="Å" u2="Š" k="60" /> + <hkern u1="Å" u2="Õ" k="120" /> + <hkern u1="Å" u2="Ǿ" k="120" /> + <hkern u1="Å" u2="Ō" k="120" /> + <hkern u1="Å" u2="Ő" k="120" /> + <hkern u1="Å" u2="Ò" k="120" /> + <hkern u1="Å" u2="Ô" k="120" /> + <hkern u1="Å" u2="Ŏ" k="120" /> + <hkern u1="Å" u2="Ģ" k="120" /> + <hkern u1="Å" u2="Ó" k="120" /> + <hkern u1="Å" u2="Ţ" k="250" /> + <hkern u1="Å" u2="ẅ" k="125" /> + <hkern u1="Å" u2="ŵ" k="125" /> + <hkern u1="Å" u2="Ś" k="60" /> + <hkern u1="Å" u2="0" k="120" /> + <hkern u1="Å" u2="Œ" k="120" /> + <hkern u1="Å" u2="Ġ" k="120" /> + <hkern u1="Å" u2="ẁ" k="125" /> + <hkern u1="Å" u2="ẃ" k="125" /> + <hkern u1="Å" u2="y" k="125" /> + <hkern u1="Å" u2="w" k="125" /> + <hkern u1="Å" u2="v" k="125" /> + <hkern u1="Å" u2="Q" k="120" /> + <hkern u1="Å" u2="O" k="120" /> + <hkern u1="Å" u2="G" k="120" /> + <hkern u1="Å" u2="®" k="120" /> + <hkern u1="Å" u2="©" k="120" /> + <hkern u1="Å" u2="Y" k="250" /> + <hkern u1="Å" u2="W" k="208" /> + <hkern u1="Å" u2="V" k="208" /> + <hkern u1="Å" u2="T" k="250" /> + <hkern u1="Å" u2="S" k="60" /> + <hkern u1="Ã" u2="ý" k="125" /> + <hkern u1="Ã" u2="ÿ" k="125" /> + <hkern u1="Ã" u2="ỳ" k="125" /> + <hkern u1="Ã" u2="Ŵ" k="208" /> + <hkern u1="Ã" u2="Č" k="120" /> + <hkern u1="Ã" u2="Ć" k="120" /> + <hkern u1="Ã" u2="Ĝ" k="120" /> + <hkern u1="Ã" u2="Ğ" k="120" /> + <hkern u1="Ã" u2="Ċ" k="120" /> + <hkern u1="Ã" u2="Ĉ" k="120" /> + <hkern u1="Ã" u2="Ç" k="120" /> + <hkern u1="Ã" u2="Ö" k="120" /> + <hkern u1="Ã" u2="Ø" k="120" /> + <hkern u1="Ã" u2="C" k="120" /> + <hkern u1="Ã" u2="Ỳ" k="250" /> + <hkern u1="Ã" u2="Ÿ" k="250" /> + <hkern u1="Ã" u2="Ŷ" k="250" /> + <hkern u1="Ã" u2="Ý" k="250" /> + <hkern u1="Ã" u2="Ẁ" k="208" /> + <hkern u1="Ã" u2="Ẅ" k="208" /> + <hkern u1="Ã" u2="Ẃ" k="208" /> + <hkern u1="Ã" u2="Ș" k="60" /> + <hkern u1="Ã" u2="Ŝ" k="60" /> + <hkern u1="Ã" u2="Ş" k="60" /> + <hkern u1="Ã" u2="Š" k="60" /> + <hkern u1="Ã" u2="Õ" k="120" /> + <hkern u1="Ã" u2="Ǿ" k="120" /> + <hkern u1="Ã" u2="Ō" k="120" /> + <hkern u1="Ã" u2="Ő" k="120" /> + <hkern u1="Ã" u2="Ò" k="120" /> + <hkern u1="Ã" u2="Ô" k="120" /> + <hkern u1="Ã" u2="Ŏ" k="120" /> + <hkern u1="Ã" u2="Ģ" k="120" /> + <hkern u1="Ã" u2="Ó" k="120" /> + <hkern u1="Ã" u2="Ţ" k="250" /> + <hkern u1="Ã" u2="ẅ" k="125" /> + <hkern u1="Ã" u2="ŵ" k="125" /> + <hkern u1="Ã" u2="Ś" k="60" /> + <hkern u1="Ã" u2="0" k="120" /> + <hkern u1="Ã" u2="Œ" k="120" /> + <hkern u1="Ã" u2="Ġ" k="120" /> + <hkern u1="Ã" u2="ẁ" k="125" /> + <hkern u1="Ã" u2="ẃ" k="125" /> + <hkern u1="Ã" u2="y" k="125" /> + <hkern u1="Ã" u2="w" k="125" /> + <hkern u1="Ã" u2="v" k="125" /> + <hkern u1="Ã" u2="Q" k="120" /> + <hkern u1="Ã" u2="O" k="120" /> + <hkern u1="Ã" u2="G" k="120" /> + <hkern u1="Ã" u2="®" k="120" /> + <hkern u1="Ã" u2="©" k="120" /> + <hkern u1="Ã" u2="Y" k="250" /> + <hkern u1="Ã" u2="W" k="208" /> + <hkern u1="Ã" u2="V" k="208" /> + <hkern u1="Ã" u2="T" k="250" /> + <hkern u1="Ã" u2="S" k="60" /> + <hkern u1="Ď" u2="Â" k="120" /> + <hkern u1="Ď" u2="Ă" k="120" /> + <hkern u1="Ď" u2="Ŵ" k="100" /> + <hkern u1="Ď" u2="Á" k="120" /> + <hkern u1="Ď" u2="À" k="120" /> + <hkern u1="Ď" u2="Ä" k="120" /> + <hkern u1="Ď" u2="Ỳ" k="80" /> + <hkern u1="Ď" u2="Ÿ" k="80" /> + <hkern u1="Ď" u2="Ŷ" k="80" /> + <hkern u1="Ď" u2="Ý" k="80" /> + <hkern u1="Ď" u2="Ẁ" k="100" /> + <hkern u1="Ď" u2="Ẅ" k="100" /> + <hkern u1="Ď" u2="Ẃ" k="100" /> + <hkern u1="Ď" u2="Ș" k="62" /> + <hkern u1="Ď" u2="Ŝ" k="62" /> + <hkern u1="Ď" u2="Ş" k="62" /> + <hkern u1="Ď" u2="Š" k="62" /> + <hkern u1="Ď" u2="Ã" k="120" /> + <hkern u1="Ď" u2="Å" k="120" /> + <hkern u1="Ď" u2="Ą" k="120" /> + <hkern u1="Ď" u2="Ā" k="120" /> + <hkern u1="Ď" u2="Ţ" k="80" /> + <hkern u1="Ď" u2="Ś" k="62" /> + <hkern u1="Ď" u2="Y" k="80" /> + <hkern u1="Ď" u2="X" k="84" /> + <hkern u1="Ď" u2="W" k="100" /> + <hkern u1="Ď" u2="V" k="100" /> + <hkern u1="Ď" u2="A" k="120" /> + <hkern u1="Ď" u2="T" k="80" /> + <hkern u1="Ď" u2="S" k="62" /> + <hkern u1="Ŏ" u2="Â" k="120" /> + <hkern u1="Ŏ" u2="Ă" k="120" /> + <hkern u1="Ŏ" u2="Ŵ" k="100" /> + <hkern u1="Ŏ" u2="Á" k="120" /> + <hkern u1="Ŏ" u2="À" k="120" /> + <hkern u1="Ŏ" u2="Ä" k="120" /> + <hkern u1="Ŏ" u2="Ỳ" k="80" /> + <hkern u1="Ŏ" u2="Ÿ" k="80" /> + <hkern u1="Ŏ" u2="Ŷ" k="80" /> + <hkern u1="Ŏ" u2="Ý" k="80" /> + <hkern u1="Ŏ" u2="Ẁ" k="100" /> + <hkern u1="Ŏ" u2="Ẅ" k="100" /> + <hkern u1="Ŏ" u2="Ẃ" k="100" /> + <hkern u1="Ŏ" u2="Ș" k="62" /> + <hkern u1="Ŏ" u2="Ŝ" k="62" /> + <hkern u1="Ŏ" u2="Ş" k="62" /> + <hkern u1="Ŏ" u2="Š" k="62" /> + <hkern u1="Ŏ" u2="Ã" k="120" /> + <hkern u1="Ŏ" u2="Å" k="120" /> + <hkern u1="Ŏ" u2="Ą" k="120" /> + <hkern u1="Ŏ" u2="Ā" k="120" /> + <hkern u1="Ŏ" u2="Ţ" k="80" /> + <hkern u1="Ŏ" u2="Ś" k="62" /> + <hkern u1="Ŏ" u2="Y" k="80" /> + <hkern u1="Ŏ" u2="X" k="84" /> + <hkern u1="Ŏ" u2="W" k="100" /> + <hkern u1="Ŏ" u2="V" k="100" /> + <hkern u1="Ŏ" u2="A" k="120" /> + <hkern u1="Ŏ" u2="T" k="80" /> + <hkern u1="Ŏ" u2="S" k="62" /> + <hkern u1="Ô" u2="Â" k="120" /> + <hkern u1="Ô" u2="Ă" k="120" /> + <hkern u1="Ô" u2="Ŵ" k="100" /> + <hkern u1="Ô" u2="Á" k="120" /> + <hkern u1="Ô" u2="À" k="120" /> + <hkern u1="Ô" u2="Ä" k="120" /> + <hkern u1="Ô" u2="Ỳ" k="80" /> + <hkern u1="Ô" u2="Ÿ" k="80" /> + <hkern u1="Ô" u2="Ŷ" k="80" /> + <hkern u1="Ô" u2="Ý" k="80" /> + <hkern u1="Ô" u2="Ẁ" k="100" /> + <hkern u1="Ô" u2="Ẅ" k="100" /> + <hkern u1="Ô" u2="Ẃ" k="100" /> + <hkern u1="Ô" u2="Ș" k="62" /> + <hkern u1="Ô" u2="Ŝ" k="62" /> + <hkern u1="Ô" u2="Ş" k="62" /> + <hkern u1="Ô" u2="Š" k="62" /> + <hkern u1="Ô" u2="Ã" k="120" /> + <hkern u1="Ô" u2="Å" k="120" /> + <hkern u1="Ô" u2="Ą" k="120" /> + <hkern u1="Ô" u2="Ā" k="120" /> + <hkern u1="Ô" u2="Ţ" k="80" /> + <hkern u1="Ô" u2="Ś" k="62" /> + <hkern u1="Ô" u2="Y" k="80" /> + <hkern u1="Ô" u2="X" k="84" /> + <hkern u1="Ô" u2="W" k="100" /> + <hkern u1="Ô" u2="V" k="100" /> + <hkern u1="Ô" u2="A" k="120" /> + <hkern u1="Ô" u2="T" k="80" /> + <hkern u1="Ô" u2="S" k="62" /> + <hkern u1="Ò" u2="Â" k="120" /> + <hkern u1="Ò" u2="Ă" k="120" /> + <hkern u1="Ò" u2="Ŵ" k="100" /> + <hkern u1="Ò" u2="Á" k="120" /> + <hkern u1="Ò" u2="À" k="120" /> + <hkern u1="Ò" u2="Ä" k="120" /> + <hkern u1="Ò" u2="Ỳ" k="80" /> + <hkern u1="Ò" u2="Ÿ" k="80" /> + <hkern u1="Ò" u2="Ŷ" k="80" /> + <hkern u1="Ò" u2="Ý" k="80" /> + <hkern u1="Ò" u2="Ẁ" k="100" /> + <hkern u1="Ò" u2="Ẅ" k="100" /> + <hkern u1="Ò" u2="Ẃ" k="100" /> + <hkern u1="Ò" u2="Ș" k="62" /> + <hkern u1="Ò" u2="Ŝ" k="62" /> + <hkern u1="Ò" u2="Ş" k="62" /> + <hkern u1="Ò" u2="Š" k="62" /> + <hkern u1="Ò" u2="Ã" k="120" /> + <hkern u1="Ò" u2="Å" k="120" /> + <hkern u1="Ò" u2="Ą" k="120" /> + <hkern u1="Ò" u2="Ā" k="120" /> + <hkern u1="Ò" u2="Ţ" k="80" /> + <hkern u1="Ò" u2="Ś" k="62" /> + <hkern u1="Ò" u2="Y" k="80" /> + <hkern u1="Ò" u2="X" k="84" /> + <hkern u1="Ò" u2="W" k="100" /> + <hkern u1="Ò" u2="V" k="100" /> + <hkern u1="Ò" u2="A" k="120" /> + <hkern u1="Ò" u2="T" k="80" /> + <hkern u1="Ò" u2="S" k="62" /> + <hkern u1="Ő" u2="Â" k="120" /> + <hkern u1="Ő" u2="Ă" k="120" /> + <hkern u1="Ő" u2="Ŵ" k="100" /> + <hkern u1="Ő" u2="Á" k="120" /> + <hkern u1="Ő" u2="À" k="120" /> + <hkern u1="Ő" u2="Ä" k="120" /> + <hkern u1="Ő" u2="Ỳ" k="80" /> + <hkern u1="Ő" u2="Ÿ" k="80" /> + <hkern u1="Ő" u2="Ŷ" k="80" /> + <hkern u1="Ő" u2="Ý" k="80" /> + <hkern u1="Ő" u2="Ẁ" k="100" /> + <hkern u1="Ő" u2="Ẅ" k="100" /> + <hkern u1="Ő" u2="Ẃ" k="100" /> + <hkern u1="Ő" u2="Ș" k="62" /> + <hkern u1="Ő" u2="Ŝ" k="62" /> + <hkern u1="Ő" u2="Ş" k="62" /> + <hkern u1="Ő" u2="Š" k="62" /> + <hkern u1="Ő" u2="Ã" k="120" /> + <hkern u1="Ő" u2="Å" k="120" /> + <hkern u1="Ő" u2="Ą" k="120" /> + <hkern u1="Ő" u2="Ā" k="120" /> + <hkern u1="Ő" u2="Ţ" k="80" /> + <hkern u1="Ő" u2="Ś" k="62" /> + <hkern u1="Ő" u2="Y" k="80" /> + <hkern u1="Ő" u2="X" k="84" /> + <hkern u1="Ő" u2="W" k="100" /> + <hkern u1="Ő" u2="V" k="100" /> + <hkern u1="Ő" u2="A" k="120" /> + <hkern u1="Ő" u2="T" k="80" /> + <hkern u1="Ő" u2="S" k="62" /> + <hkern u1="Ō" u2="Â" k="120" /> + <hkern u1="Ō" u2="Ă" k="120" /> + <hkern u1="Ō" u2="Ŵ" k="100" /> + <hkern u1="Ō" u2="Á" k="120" /> + <hkern u1="Ō" u2="À" k="120" /> + <hkern u1="Ō" u2="Ä" k="120" /> + <hkern u1="Ō" u2="Ỳ" k="80" /> + <hkern u1="Ō" u2="Ÿ" k="80" /> + <hkern u1="Ō" u2="Ŷ" k="80" /> + <hkern u1="Ō" u2="Ý" k="80" /> + <hkern u1="Ō" u2="Ẁ" k="100" /> + <hkern u1="Ō" u2="Ẅ" k="100" /> + <hkern u1="Ō" u2="Ẃ" k="100" /> + <hkern u1="Ō" u2="Ș" k="62" /> + <hkern u1="Ō" u2="Ŝ" k="62" /> + <hkern u1="Ō" u2="Ş" k="62" /> + <hkern u1="Ō" u2="Š" k="62" /> + <hkern u1="Ō" u2="Ã" k="120" /> + <hkern u1="Ō" u2="Å" k="120" /> + <hkern u1="Ō" u2="Ą" k="120" /> + <hkern u1="Ō" u2="Ā" k="120" /> + <hkern u1="Ō" u2="Ţ" k="80" /> + <hkern u1="Ō" u2="Ś" k="62" /> + <hkern u1="Ō" u2="Y" k="80" /> + <hkern u1="Ō" u2="X" k="84" /> + <hkern u1="Ō" u2="W" k="100" /> + <hkern u1="Ō" u2="V" k="100" /> + <hkern u1="Ō" u2="A" k="120" /> + <hkern u1="Ō" u2="T" k="80" /> + <hkern u1="Ō" u2="S" k="62" /> + <hkern u1="Ǿ" u2="Â" k="120" /> + <hkern u1="Ǿ" u2="Ă" k="120" /> + <hkern u1="Ǿ" u2="Ŵ" k="100" /> + <hkern u1="Ǿ" u2="Á" k="120" /> + <hkern u1="Ǿ" u2="À" k="120" /> + <hkern u1="Ǿ" u2="Ä" k="120" /> + <hkern u1="Ǿ" u2="Ỳ" k="80" /> + <hkern u1="Ǿ" u2="Ÿ" k="80" /> + <hkern u1="Ǿ" u2="Ŷ" k="80" /> + <hkern u1="Ǿ" u2="Ý" k="80" /> + <hkern u1="Ǿ" u2="Ẁ" k="100" /> + <hkern u1="Ǿ" u2="Ẅ" k="100" /> + <hkern u1="Ǿ" u2="Ẃ" k="100" /> + <hkern u1="Ǿ" u2="Ș" k="62" /> + <hkern u1="Ǿ" u2="Ŝ" k="62" /> + <hkern u1="Ǿ" u2="Ş" k="62" /> + <hkern u1="Ǿ" u2="Š" k="62" /> + <hkern u1="Ǿ" u2="Ã" k="120" /> + <hkern u1="Ǿ" u2="Å" k="120" /> + <hkern u1="Ǿ" u2="Ą" k="120" /> + <hkern u1="Ǿ" u2="Ā" k="120" /> + <hkern u1="Ǿ" u2="Ţ" k="80" /> + <hkern u1="Ǿ" u2="Ś" k="62" /> + <hkern u1="Ǿ" u2="Y" k="80" /> + <hkern u1="Ǿ" u2="X" k="84" /> + <hkern u1="Ǿ" u2="W" k="100" /> + <hkern u1="Ǿ" u2="V" k="100" /> + <hkern u1="Ǿ" u2="A" k="120" /> + <hkern u1="Ǿ" u2="T" k="80" /> + <hkern u1="Ǿ" u2="S" k="62" /> + <hkern u1="Õ" u2="Â" k="120" /> + <hkern u1="Õ" u2="Ă" k="120" /> + <hkern u1="Õ" u2="Ŵ" k="100" /> + <hkern u1="Õ" u2="Á" k="120" /> + <hkern u1="Õ" u2="À" k="120" /> + <hkern u1="Õ" u2="Ä" k="120" /> + <hkern u1="Õ" u2="Ỳ" k="80" /> + <hkern u1="Õ" u2="Ÿ" k="80" /> + <hkern u1="Õ" u2="Ŷ" k="80" /> + <hkern u1="Õ" u2="Ý" k="80" /> + <hkern u1="Õ" u2="Ẁ" k="100" /> + <hkern u1="Õ" u2="Ẅ" k="100" /> + <hkern u1="Õ" u2="Ẃ" k="100" /> + <hkern u1="Õ" u2="Ș" k="62" /> + <hkern u1="Õ" u2="Ŝ" k="62" /> + <hkern u1="Õ" u2="Ş" k="62" /> + <hkern u1="Õ" u2="Š" k="62" /> + <hkern u1="Õ" u2="Ã" k="120" /> + <hkern u1="Õ" u2="Å" k="120" /> + <hkern u1="Õ" u2="Ą" k="120" /> + <hkern u1="Õ" u2="Ā" k="120" /> + <hkern u1="Õ" u2="Ţ" k="80" /> + <hkern u1="Õ" u2="Ś" k="62" /> + <hkern u1="Õ" u2="Y" k="80" /> + <hkern u1="Õ" u2="X" k="84" /> + <hkern u1="Õ" u2="W" k="100" /> + <hkern u1="Õ" u2="V" k="100" /> + <hkern u1="Õ" u2="A" k="120" /> + <hkern u1="Õ" u2="T" k="80" /> + <hkern u1="Õ" u2="S" k="62" /> + <hkern u1="Ŕ" u2="œ" k="62" /> + <hkern u1="Ŕ" u2="ō" k="62" /> + <hkern u1="Ŕ" u2="ő" k="62" /> + <hkern u1="Ŕ" u2="ò" k="62" /> + <hkern u1="Ŕ" u2="ö" k="62" /> + <hkern u1="Ŕ" u2="ŏ" k="62" /> + <hkern u1="Ŕ" u2="ô" k="62" /> + <hkern u1="Ŕ" u2="ó" k="62" /> + <hkern u1="Ŕ" u2="ġ" k="62" /> + <hkern u1="Ŕ" u2="ģ" k="62" /> + <hkern u1="Ŕ" u2="ĝ" k="62" /> + <hkern u1="Ŕ" u2="ğ" k="62" /> + <hkern u1="Ŕ" u2="ǽ" k="62" /> + <hkern u1="Ŕ" u2="æ" k="62" /> + <hkern u1="Ŕ" u2="õ" k="62" /> + <hkern u1="Ŕ" u2="ę" k="62" /> + <hkern u1="Ŕ" u2="ē" k="62" /> + <hkern u1="Ŕ" u2="è" k="62" /> + <hkern u1="Ŕ" u2="ė" k="62" /> + <hkern u1="Ŕ" u2="ë" k="62" /> + <hkern u1="Ŕ" u2="ê" k="62" /> + <hkern u1="Ŕ" u2="ě" k="62" /> + <hkern u1="Ŕ" u2="ĕ" k="62" /> + <hkern u1="Ŕ" u2="é" k="62" /> + <hkern u1="Ŕ" u2="đ" k="62" /> + <hkern u1="Ŕ" u2="ď" k="62" /> + <hkern u1="Ŕ" u2="ċ" k="62" /> + <hkern u1="Ŕ" u2="ĉ" k="62" /> + <hkern u1="Ŕ" u2="ç" k="62" /> + <hkern u1="Ŕ" u2="č" k="62" /> + <hkern u1="Ŕ" u2="ć" k="62" /> + <hkern u1="Ŕ" u2="ã" k="62" /> + <hkern u1="Ŕ" u2="å" k="62" /> + <hkern u1="Ŕ" u2="ą" k="62" /> + <hkern u1="Ŕ" u2="ā" k="62" /> + <hkern u1="Ŕ" u2="à" k="62" /> + <hkern u1="Ŕ" u2="ä" k="62" /> + <hkern u1="Ŕ" u2="â" k="62" /> + <hkern u1="Ŕ" u2="ă" k="62" /> + <hkern u1="Ŕ" u2="á" k="62" /> + <hkern u1="Ŕ" u2="ţ" k="-82" /> + <hkern u1="Ŕ" u2="c" k="62" /> + <hkern u1="Ŕ" u2="t" k="-82" /> + <hkern u1="Ŕ" u2="q" k="62" /> + <hkern u1="Ŕ" u2="o" k="62" /> + <hkern u1="Ŕ" u2="g" k="62" /> + <hkern u1="Ŕ" u2="e" k="62" /> + <hkern u1="Ŕ" u2="d" k="62" /> + <hkern u1="Ŕ" u2="a" k="62" /> + <hkern u1="Ř" u2="œ" k="62" /> + <hkern u1="Ř" u2="ō" k="62" /> + <hkern u1="Ř" u2="ő" k="62" /> + <hkern u1="Ř" u2="ò" k="62" /> + <hkern u1="Ř" u2="ö" k="62" /> + <hkern u1="Ř" u2="ŏ" k="62" /> + <hkern u1="Ř" u2="ô" k="62" /> + <hkern u1="Ř" u2="ó" k="62" /> + <hkern u1="Ř" u2="ġ" k="62" /> + <hkern u1="Ř" u2="ģ" k="62" /> + <hkern u1="Ř" u2="ĝ" k="62" /> + <hkern u1="Ř" u2="ğ" k="62" /> + <hkern u1="Ř" u2="ǽ" k="62" /> + <hkern u1="Ř" u2="æ" k="62" /> + <hkern u1="Ř" u2="õ" k="62" /> + <hkern u1="Ř" u2="ę" k="62" /> + <hkern u1="Ř" u2="ē" k="62" /> + <hkern u1="Ř" u2="è" k="62" /> + <hkern u1="Ř" u2="ė" k="62" /> + <hkern u1="Ř" u2="ë" k="62" /> + <hkern u1="Ř" u2="ê" k="62" /> + <hkern u1="Ř" u2="ě" k="62" /> + <hkern u1="Ř" u2="ĕ" k="62" /> + <hkern u1="Ř" u2="é" k="62" /> + <hkern u1="Ř" u2="đ" k="62" /> + <hkern u1="Ř" u2="ď" k="62" /> + <hkern u1="Ř" u2="ċ" k="62" /> + <hkern u1="Ř" u2="ĉ" k="62" /> + <hkern u1="Ř" u2="ç" k="62" /> + <hkern u1="Ř" u2="č" k="62" /> + <hkern u1="Ř" u2="ć" k="62" /> + <hkern u1="Ř" u2="ã" k="62" /> + <hkern u1="Ř" u2="å" k="62" /> + <hkern u1="Ř" u2="ą" k="62" /> + <hkern u1="Ř" u2="ā" k="62" /> + <hkern u1="Ř" u2="à" k="62" /> + <hkern u1="Ř" u2="ä" k="62" /> + <hkern u1="Ř" u2="â" k="62" /> + <hkern u1="Ř" u2="ă" k="62" /> + <hkern u1="Ř" u2="á" k="62" /> + <hkern u1="Ř" u2="ţ" k="-82" /> + <hkern u1="Ř" u2="c" k="62" /> + <hkern u1="Ř" u2="t" k="-82" /> + <hkern u1="Ř" u2="q" k="62" /> + <hkern u1="Ř" u2="o" k="62" /> + <hkern u1="Ř" u2="g" k="62" /> + <hkern u1="Ř" u2="e" k="62" /> + <hkern u1="Ř" u2="d" k="62" /> + <hkern u1="Ř" u2="a" k="62" /> + <hkern u1="Ŗ" u2="œ" k="62" /> + <hkern u1="Ŗ" u2="ō" k="62" /> + <hkern u1="Ŗ" u2="ő" k="62" /> + <hkern u1="Ŗ" u2="ò" k="62" /> + <hkern u1="Ŗ" u2="ö" k="62" /> + <hkern u1="Ŗ" u2="ŏ" k="62" /> + <hkern u1="Ŗ" u2="ô" k="62" /> + <hkern u1="Ŗ" u2="ó" k="62" /> + <hkern u1="Ŗ" u2="ġ" k="62" /> + <hkern u1="Ŗ" u2="ģ" k="62" /> + <hkern u1="Ŗ" u2="ĝ" k="62" /> + <hkern u1="Ŗ" u2="ğ" k="62" /> + <hkern u1="Ŗ" u2="ǽ" k="62" /> + <hkern u1="Ŗ" u2="æ" k="62" /> + <hkern u1="Ŗ" u2="õ" k="62" /> + <hkern u1="Ŗ" u2="ę" k="62" /> + <hkern u1="Ŗ" u2="ē" k="62" /> + <hkern u1="Ŗ" u2="è" k="62" /> + <hkern u1="Ŗ" u2="ė" k="62" /> + <hkern u1="Ŗ" u2="ë" k="62" /> + <hkern u1="Ŗ" u2="ê" k="62" /> + <hkern u1="Ŗ" u2="ě" k="62" /> + <hkern u1="Ŗ" u2="ĕ" k="62" /> + <hkern u1="Ŗ" u2="é" k="62" /> + <hkern u1="Ŗ" u2="đ" k="62" /> + <hkern u1="Ŗ" u2="ď" k="62" /> + <hkern u1="Ŗ" u2="ċ" k="62" /> + <hkern u1="Ŗ" u2="ĉ" k="62" /> + <hkern u1="Ŗ" u2="ç" k="62" /> + <hkern u1="Ŗ" u2="č" k="62" /> + <hkern u1="Ŗ" u2="ć" k="62" /> + <hkern u1="Ŗ" u2="ã" k="62" /> + <hkern u1="Ŗ" u2="å" k="62" /> + <hkern u1="Ŗ" u2="ą" k="62" /> + <hkern u1="Ŗ" u2="ā" k="62" /> + <hkern u1="Ŗ" u2="à" k="62" /> + <hkern u1="Ŗ" u2="ä" k="62" /> + <hkern u1="Ŗ" u2="â" k="62" /> + <hkern u1="Ŗ" u2="ă" k="62" /> + <hkern u1="Ŗ" u2="á" k="62" /> + <hkern u1="Ŗ" u2="ţ" k="-82" /> + <hkern u1="Ŗ" u2="c" k="62" /> + <hkern u1="Ŗ" u2="t" k="-82" /> + <hkern u1="Ŗ" u2="q" k="62" /> + <hkern u1="Ŗ" u2="o" k="62" /> + <hkern u1="Ŗ" u2="g" k="62" /> + <hkern u1="Ŗ" u2="e" k="62" /> + <hkern u1="Ŗ" u2="d" k="62" /> + <hkern u1="Ŗ" u2="a" k="62" /> + <hkern u1="Š" u2="Ŵ" k="42" /> + <hkern u1="Š" u2="Ẁ" k="42" /> + <hkern u1="Š" u2="Ẅ" k="42" /> + <hkern u1="Š" u2="Ẃ" k="42" /> + <hkern u1="Š" u2="W" k="42" /> + <hkern u1="Š" u2="V" k="42" /> + <hkern u1="Ş" u2="Ŵ" k="42" /> + <hkern u1="Ş" u2="Ẁ" k="42" /> + <hkern u1="Ş" u2="Ẅ" k="42" /> + <hkern u1="Ş" u2="Ẃ" k="42" /> + <hkern u1="Ş" u2="W" k="42" /> + <hkern u1="Ş" u2="V" k="42" /> + <hkern u1="Ŝ" u2="Ŵ" k="42" /> + <hkern u1="Ŝ" u2="Ẁ" k="42" /> + <hkern u1="Ŝ" u2="Ẅ" k="42" /> + <hkern u1="Ŝ" u2="Ẃ" k="42" /> + <hkern u1="Ŝ" u2="W" k="42" /> + <hkern u1="Ŝ" u2="V" k="42" /> + <hkern u1="Ș" u2="Ŵ" k="42" /> + <hkern u1="Ș" u2="Ẁ" k="42" /> + <hkern u1="Ș" u2="Ẅ" k="42" /> + <hkern u1="Ș" u2="Ẃ" k="42" /> + <hkern u1="Ș" u2="W" k="42" /> + <hkern u1="Ș" u2="V" k="42" /> + <hkern u1="Ú" u2="Â" k="48" /> + <hkern u1="Ú" u2="Ă" k="48" /> + <hkern u1="Ú" u2="Á" k="48" /> + <hkern u1="Ú" u2="À" k="48" /> + <hkern u1="Ú" u2="Ä" k="48" /> + <hkern u1="Ú" u2="Ã" k="48" /> + <hkern u1="Ú" u2="Å" k="48" /> + <hkern u1="Ú" u2="Ą" k="48" /> + <hkern u1="Ú" u2="Ā" k="48" /> + <hkern u1="Ú" u2="A" k="48" /> + <hkern u1="Ŭ" u2="Â" k="48" /> + <hkern u1="Ŭ" u2="Ă" k="48" /> + <hkern u1="Ŭ" u2="Á" k="48" /> + <hkern u1="Ŭ" u2="À" k="48" /> + <hkern u1="Ŭ" u2="Ä" k="48" /> + <hkern u1="Ŭ" u2="Ã" k="48" /> + <hkern u1="Ŭ" u2="Å" k="48" /> + <hkern u1="Ŭ" u2="Ą" k="48" /> + <hkern u1="Ŭ" u2="Ā" k="48" /> + <hkern u1="Ŭ" u2="A" k="48" /> + <hkern u1="Û" u2="Â" k="48" /> + <hkern u1="Û" u2="Ă" k="48" /> + <hkern u1="Û" u2="Á" k="48" /> + <hkern u1="Û" u2="À" k="48" /> + <hkern u1="Û" u2="Ä" k="48" /> + <hkern u1="Û" u2="Ã" k="48" /> + <hkern u1="Û" u2="Å" k="48" /> + <hkern u1="Û" u2="Ą" k="48" /> + <hkern u1="Û" u2="Ā" k="48" /> + <hkern u1="Û" u2="A" k="48" /> + <hkern u1="Ù" u2="Â" k="48" /> + <hkern u1="Ù" u2="Ă" k="48" /> + <hkern u1="Ù" u2="Á" k="48" /> + <hkern u1="Ù" u2="À" k="48" /> + <hkern u1="Ù" u2="Ä" k="48" /> + <hkern u1="Ù" u2="Ã" k="48" /> + <hkern u1="Ù" u2="Å" k="48" /> + <hkern u1="Ù" u2="Ą" k="48" /> + <hkern u1="Ù" u2="Ā" k="48" /> + <hkern u1="Ù" u2="A" k="48" /> + <hkern u1="Ų" u2="Â" k="48" /> + <hkern u1="Ų" u2="Ă" k="48" /> + <hkern u1="Ų" u2="Á" k="48" /> + <hkern u1="Ų" u2="À" k="48" /> + <hkern u1="Ų" u2="Ä" k="48" /> + <hkern u1="Ų" u2="Ã" k="48" /> + <hkern u1="Ų" u2="Å" k="48" /> + <hkern u1="Ų" u2="Ą" k="48" /> + <hkern u1="Ų" u2="Ā" k="48" /> + <hkern u1="Ų" u2="A" k="48" /> + <hkern u1="Ů" u2="Â" k="48" /> + <hkern u1="Ů" u2="Ă" k="48" /> + <hkern u1="Ů" u2="Á" k="48" /> + <hkern u1="Ů" u2="À" k="48" /> + <hkern u1="Ů" u2="Ä" k="48" /> + <hkern u1="Ů" u2="Ã" k="48" /> + <hkern u1="Ů" u2="Å" k="48" /> + <hkern u1="Ů" u2="Ą" k="48" /> + <hkern u1="Ů" u2="Ā" k="48" /> + <hkern u1="Ů" u2="A" k="48" /> + <hkern u1="Ũ" u2="Â" k="48" /> + <hkern u1="Ũ" u2="Ă" k="48" /> + <hkern u1="Ũ" u2="Á" k="48" /> + <hkern u1="Ũ" u2="À" k="48" /> + <hkern u1="Ũ" u2="Ä" k="48" /> + <hkern u1="Ũ" u2="Ã" k="48" /> + <hkern u1="Ũ" u2="Å" k="48" /> + <hkern u1="Ũ" u2="Ą" k="48" /> + <hkern u1="Ũ" u2="Ā" k="48" /> + <hkern u1="Ũ" u2="A" k="48" /> + <hkern u1="Ẃ" u2="Â" k="250" /> + <hkern u1="Ẃ" u2="Ă" k="250" /> + <hkern u1="Ẃ" u2="Á" k="250" /> + <hkern u1="Ẃ" u2="œ" k="140" /> + <hkern u1="Ẃ" u2="ś" k="104" /> + <hkern u1="Ẃ" u2="š" k="104" /> + <hkern u1="Ẃ" u2="ō" k="140" /> + <hkern u1="Ẃ" u2="ő" k="140" /> + <hkern u1="Ẃ" u2="ò" k="140" /> + <hkern u1="Ẃ" u2="ö" k="140" /> + <hkern u1="Ẃ" u2="ŏ" k="140" /> + <hkern u1="Ẃ" u2="ô" k="140" /> + <hkern u1="Ẃ" u2="ó" k="140" /> + <hkern u1="Ẃ" u2="ġ" k="140" /> + <hkern u1="Ẃ" u2="ģ" k="140" /> + <hkern u1="Ẃ" u2="ĝ" k="140" /> + <hkern u1="Ẃ" u2="ğ" k="140" /> + <hkern u1="Ẃ" u2="ǽ" k="140" /> + <hkern u1="Ẃ" u2="æ" k="140" /> + <hkern u1="Ẃ" u2="Č" k="100" /> + <hkern u1="Ẃ" u2="Ć" k="100" /> + <hkern u1="Ẃ" u2="õ" k="140" /> + <hkern u1="Ẃ" u2="ę" k="140" /> + <hkern u1="Ẃ" u2="ē" k="140" /> + <hkern u1="Ẃ" u2="è" k="140" /> + <hkern u1="Ẃ" u2="ė" k="140" /> + <hkern u1="Ẃ" u2="ë" k="140" /> + <hkern u1="Ẃ" u2="ê" k="140" /> + <hkern u1="Ẃ" u2="ě" k="140" /> + <hkern u1="Ẃ" u2="ĕ" k="140" /> + <hkern u1="Ẃ" u2="é" k="140" /> + <hkern u1="Ẃ" u2="đ" k="140" /> + <hkern u1="Ẃ" u2="ď" k="140" /> + <hkern u1="Ẃ" u2="ċ" k="140" /> + <hkern u1="Ẃ" u2="ĉ" k="140" /> + <hkern u1="Ẃ" u2="ç" k="140" /> + <hkern u1="Ẃ" u2="č" k="140" /> + <hkern u1="Ẃ" u2="ć" k="140" /> + <hkern u1="Ẃ" u2="ã" k="140" /> + <hkern u1="Ẃ" u2="å" k="140" /> + <hkern u1="Ẃ" u2="ą" k="140" /> + <hkern u1="Ẃ" u2="ā" k="140" /> + <hkern u1="Ẃ" u2="à" k="140" /> + <hkern u1="Ẃ" u2="ä" k="140" /> + <hkern u1="Ẃ" u2="â" k="140" /> + <hkern u1="Ẃ" u2="ă" k="140" /> + <hkern u1="Ẃ" u2="á" k="140" /> + <hkern u1="Ẃ" u2="À" k="250" /> + <hkern u1="Ẃ" u2="Ä" k="250" /> + <hkern u1="Ẃ" u2="Ĝ" k="100" /> + <hkern u1="Ẃ" u2="Ğ" k="100" /> + <hkern u1="Ẃ" u2="Ċ" k="100" /> + <hkern u1="Ẃ" u2="Ĉ" k="100" /> + <hkern u1="Ẃ" u2="Ç" k="100" /> + <hkern u1="Ẃ" u2="Ö" k="100" /> + <hkern u1="Ẃ" u2="Ø" k="100" /> + <hkern u1="Ẃ" u2="C" k="100" /> + <hkern u1="Ẃ" u2="Õ" k="100" /> + <hkern u1="Ẃ" u2="Ǿ" k="100" /> + <hkern u1="Ẃ" u2="Ō" k="100" /> + <hkern u1="Ẃ" u2="Ő" k="100" /> + <hkern u1="Ẃ" u2="Ò" k="100" /> + <hkern u1="Ẃ" u2="Ô" k="100" /> + <hkern u1="Ẃ" u2="Ŏ" k="100" /> + <hkern u1="Ẃ" u2="Ģ" k="100" /> + <hkern u1="Ẃ" u2="Ã" k="250" /> + <hkern u1="Ẃ" u2="Å" k="250" /> + <hkern u1="Ẃ" u2="Ą" k="250" /> + <hkern u1="Ẃ" u2="Ā" k="250" /> + <hkern u1="Ẃ" u2="Ó" k="100" /> + <hkern u1="Ẃ" u2="0" k="100" /> + <hkern u1="Ẃ" u2="Œ" k="100" /> + <hkern u1="Ẃ" u2="Ġ" k="100" /> + <hkern u1="Ẃ" u2="c" k="140" /> + <hkern u1="Ẃ" u2="s" k="104" /> + <hkern u1="Ẃ" u2="q" k="140" /> + <hkern u1="Ẃ" u2="o" k="140" /> + <hkern u1="Ẃ" u2="g" k="140" /> + <hkern u1="Ẃ" u2="e" k="140" /> + <hkern u1="Ẃ" u2="d" k="140" /> + <hkern u1="Ẃ" u2="a" k="140" /> + <hkern u1="Ẃ" u2="Q" k="100" /> + <hkern u1="Ẃ" u2="O" k="100" /> + <hkern u1="Ẃ" u2="G" k="100" /> + <hkern u1="Ẃ" u2="®" k="100" /> + <hkern u1="Ẃ" u2="©" k="100" /> + <hkern u1="Ẃ" u2="A" k="250" /> + <hkern u1="Ẅ" u2="Â" k="250" /> + <hkern u1="Ẅ" u2="Ă" k="250" /> + <hkern u1="Ẅ" u2="Á" k="250" /> + <hkern u1="Ẅ" u2="œ" k="140" /> + <hkern u1="Ẅ" u2="ś" k="104" /> + <hkern u1="Ẅ" u2="š" k="104" /> + <hkern u1="Ẅ" u2="ō" k="140" /> + <hkern u1="Ẅ" u2="ő" k="140" /> + <hkern u1="Ẅ" u2="ò" k="140" /> + <hkern u1="Ẅ" u2="ö" k="140" /> + <hkern u1="Ẅ" u2="ŏ" k="140" /> + <hkern u1="Ẅ" u2="ô" k="140" /> + <hkern u1="Ẅ" u2="ó" k="140" /> + <hkern u1="Ẅ" u2="ġ" k="140" /> + <hkern u1="Ẅ" u2="ģ" k="140" /> + <hkern u1="Ẅ" u2="ĝ" k="140" /> + <hkern u1="Ẅ" u2="ğ" k="140" /> + <hkern u1="Ẅ" u2="ǽ" k="140" /> + <hkern u1="Ẅ" u2="æ" k="140" /> + <hkern u1="Ẅ" u2="Č" k="100" /> + <hkern u1="Ẅ" u2="Ć" k="100" /> + <hkern u1="Ẅ" u2="õ" k="140" /> + <hkern u1="Ẅ" u2="ę" k="140" /> + <hkern u1="Ẅ" u2="ē" k="140" /> + <hkern u1="Ẅ" u2="è" k="140" /> + <hkern u1="Ẅ" u2="ė" k="140" /> + <hkern u1="Ẅ" u2="ë" k="140" /> + <hkern u1="Ẅ" u2="ê" k="140" /> + <hkern u1="Ẅ" u2="ě" k="140" /> + <hkern u1="Ẅ" u2="ĕ" k="140" /> + <hkern u1="Ẅ" u2="é" k="140" /> + <hkern u1="Ẅ" u2="đ" k="140" /> + <hkern u1="Ẅ" u2="ď" k="140" /> + <hkern u1="Ẅ" u2="ċ" k="140" /> + <hkern u1="Ẅ" u2="ĉ" k="140" /> + <hkern u1="Ẅ" u2="ç" k="140" /> + <hkern u1="Ẅ" u2="č" k="140" /> + <hkern u1="Ẅ" u2="ć" k="140" /> + <hkern u1="Ẅ" u2="ã" k="140" /> + <hkern u1="Ẅ" u2="å" k="140" /> + <hkern u1="Ẅ" u2="ą" k="140" /> + <hkern u1="Ẅ" u2="ā" k="140" /> + <hkern u1="Ẅ" u2="à" k="140" /> + <hkern u1="Ẅ" u2="ä" k="140" /> + <hkern u1="Ẅ" u2="â" k="140" /> + <hkern u1="Ẅ" u2="ă" k="140" /> + <hkern u1="Ẅ" u2="á" k="140" /> + <hkern u1="Ẅ" u2="À" k="250" /> + <hkern u1="Ẅ" u2="Ä" k="250" /> + <hkern u1="Ẅ" u2="Ĝ" k="100" /> + <hkern u1="Ẅ" u2="Ğ" k="100" /> + <hkern u1="Ẅ" u2="Ċ" k="100" /> + <hkern u1="Ẅ" u2="Ĉ" k="100" /> + <hkern u1="Ẅ" u2="Ç" k="100" /> + <hkern u1="Ẅ" u2="Ö" k="100" /> + <hkern u1="Ẅ" u2="Ø" k="100" /> + <hkern u1="Ẅ" u2="C" k="100" /> + <hkern u1="Ẅ" u2="Õ" k="100" /> + <hkern u1="Ẅ" u2="Ǿ" k="100" /> + <hkern u1="Ẅ" u2="Ō" k="100" /> + <hkern u1="Ẅ" u2="Ő" k="100" /> + <hkern u1="Ẅ" u2="Ò" k="100" /> + <hkern u1="Ẅ" u2="Ô" k="100" /> + <hkern u1="Ẅ" u2="Ŏ" k="100" /> + <hkern u1="Ẅ" u2="Ģ" k="100" /> + <hkern u1="Ẅ" u2="Ã" k="250" /> + <hkern u1="Ẅ" u2="Å" k="250" /> + <hkern u1="Ẅ" u2="Ą" k="250" /> + <hkern u1="Ẅ" u2="Ā" k="250" /> + <hkern u1="Ẅ" u2="Ó" k="100" /> + <hkern u1="Ẅ" u2="0" k="100" /> + <hkern u1="Ẅ" u2="Œ" k="100" /> + <hkern u1="Ẅ" u2="Ġ" k="100" /> + <hkern u1="Ẅ" u2="c" k="140" /> + <hkern u1="Ẅ" u2="s" k="104" /> + <hkern u1="Ẅ" u2="q" k="140" /> + <hkern u1="Ẅ" u2="o" k="140" /> + <hkern u1="Ẅ" u2="g" k="140" /> + <hkern u1="Ẅ" u2="e" k="140" /> + <hkern u1="Ẅ" u2="d" k="140" /> + <hkern u1="Ẅ" u2="a" k="140" /> + <hkern u1="Ẅ" u2="Q" k="100" /> + <hkern u1="Ẅ" u2="O" k="100" /> + <hkern u1="Ẅ" u2="G" k="100" /> + <hkern u1="Ẅ" u2="®" k="100" /> + <hkern u1="Ẅ" u2="©" k="100" /> + <hkern u1="Ẅ" u2="A" k="250" /> + <hkern u1="Ẁ" u2="Â" k="250" /> + <hkern u1="Ẁ" u2="Ă" k="250" /> + <hkern u1="Ẁ" u2="Á" k="250" /> + <hkern u1="Ẁ" u2="œ" k="140" /> + <hkern u1="Ẁ" u2="ś" k="104" /> + <hkern u1="Ẁ" u2="š" k="104" /> + <hkern u1="Ẁ" u2="ō" k="140" /> + <hkern u1="Ẁ" u2="ő" k="140" /> + <hkern u1="Ẁ" u2="ò" k="140" /> + <hkern u1="Ẁ" u2="ö" k="140" /> + <hkern u1="Ẁ" u2="ŏ" k="140" /> + <hkern u1="Ẁ" u2="ô" k="140" /> + <hkern u1="Ẁ" u2="ó" k="140" /> + <hkern u1="Ẁ" u2="ġ" k="140" /> + <hkern u1="Ẁ" u2="ģ" k="140" /> + <hkern u1="Ẁ" u2="ĝ" k="140" /> + <hkern u1="Ẁ" u2="ğ" k="140" /> + <hkern u1="Ẁ" u2="ǽ" k="140" /> + <hkern u1="Ẁ" u2="æ" k="140" /> + <hkern u1="Ẁ" u2="Č" k="100" /> + <hkern u1="Ẁ" u2="Ć" k="100" /> + <hkern u1="Ẁ" u2="õ" k="140" /> + <hkern u1="Ẁ" u2="ę" k="140" /> + <hkern u1="Ẁ" u2="ē" k="140" /> + <hkern u1="Ẁ" u2="è" k="140" /> + <hkern u1="Ẁ" u2="ė" k="140" /> + <hkern u1="Ẁ" u2="ë" k="140" /> + <hkern u1="Ẁ" u2="ê" k="140" /> + <hkern u1="Ẁ" u2="ě" k="140" /> + <hkern u1="Ẁ" u2="ĕ" k="140" /> + <hkern u1="Ẁ" u2="é" k="140" /> + <hkern u1="Ẁ" u2="đ" k="140" /> + <hkern u1="Ẁ" u2="ď" k="140" /> + <hkern u1="Ẁ" u2="ċ" k="140" /> + <hkern u1="Ẁ" u2="ĉ" k="140" /> + <hkern u1="Ẁ" u2="ç" k="140" /> + <hkern u1="Ẁ" u2="č" k="140" /> + <hkern u1="Ẁ" u2="ć" k="140" /> + <hkern u1="Ẁ" u2="ã" k="140" /> + <hkern u1="Ẁ" u2="å" k="140" /> + <hkern u1="Ẁ" u2="ą" k="140" /> + <hkern u1="Ẁ" u2="ā" k="140" /> + <hkern u1="Ẁ" u2="à" k="140" /> + <hkern u1="Ẁ" u2="ä" k="140" /> + <hkern u1="Ẁ" u2="â" k="140" /> + <hkern u1="Ẁ" u2="ă" k="140" /> + <hkern u1="Ẁ" u2="á" k="140" /> + <hkern u1="Ẁ" u2="À" k="250" /> + <hkern u1="Ẁ" u2="Ä" k="250" /> + <hkern u1="Ẁ" u2="Ĝ" k="100" /> + <hkern u1="Ẁ" u2="Ğ" k="100" /> + <hkern u1="Ẁ" u2="Ċ" k="100" /> + <hkern u1="Ẁ" u2="Ĉ" k="100" /> + <hkern u1="Ẁ" u2="Ç" k="100" /> + <hkern u1="Ẁ" u2="Ö" k="100" /> + <hkern u1="Ẁ" u2="Ø" k="100" /> + <hkern u1="Ẁ" u2="C" k="100" /> + <hkern u1="Ẁ" u2="Õ" k="100" /> + <hkern u1="Ẁ" u2="Ǿ" k="100" /> + <hkern u1="Ẁ" u2="Ō" k="100" /> + <hkern u1="Ẁ" u2="Ő" k="100" /> + <hkern u1="Ẁ" u2="Ò" k="100" /> + <hkern u1="Ẁ" u2="Ô" k="100" /> + <hkern u1="Ẁ" u2="Ŏ" k="100" /> + <hkern u1="Ẁ" u2="Ģ" k="100" /> + <hkern u1="Ẁ" u2="Ã" k="250" /> + <hkern u1="Ẁ" u2="Å" k="250" /> + <hkern u1="Ẁ" u2="Ą" k="250" /> + <hkern u1="Ẁ" u2="Ā" k="250" /> + <hkern u1="Ẁ" u2="Ó" k="100" /> + <hkern u1="Ẁ" u2="0" k="100" /> + <hkern u1="Ẁ" u2="Œ" k="100" /> + <hkern u1="Ẁ" u2="Ġ" k="100" /> + <hkern u1="Ẁ" u2="c" k="140" /> + <hkern u1="Ẁ" u2="s" k="104" /> + <hkern u1="Ẁ" u2="q" k="140" /> + <hkern u1="Ẁ" u2="o" k="140" /> + <hkern u1="Ẁ" u2="g" k="140" /> + <hkern u1="Ẁ" u2="e" k="140" /> + <hkern u1="Ẁ" u2="d" k="140" /> + <hkern u1="Ẁ" u2="a" k="140" /> + <hkern u1="Ẁ" u2="Q" k="100" /> + <hkern u1="Ẁ" u2="O" k="100" /> + <hkern u1="Ẁ" u2="G" k="100" /> + <hkern u1="Ẁ" u2="®" k="100" /> + <hkern u1="Ẁ" u2="©" k="100" /> + <hkern u1="Ẁ" u2="A" k="250" /> + <hkern u1="Ý" u2="Â" k="271" /> + <hkern u1="Ý" u2="Ă" k="271" /> + <hkern u1="Ý" u2="Á" k="271" /> + <hkern u1="Ý" u2="œ" k="140" /> + <hkern u1="Ý" u2="ś" k="104" /> + <hkern u1="Ý" u2="š" k="104" /> + <hkern u1="Ý" u2="ō" k="140" /> + <hkern u1="Ý" u2="ő" k="140" /> + <hkern u1="Ý" u2="ò" k="140" /> + <hkern u1="Ý" u2="ö" k="140" /> + <hkern u1="Ý" u2="ŏ" k="140" /> + <hkern u1="Ý" u2="ô" k="140" /> + <hkern u1="Ý" u2="ó" k="140" /> + <hkern u1="Ý" u2="ġ" k="140" /> + <hkern u1="Ý" u2="ģ" k="140" /> + <hkern u1="Ý" u2="ĝ" k="140" /> + <hkern u1="Ý" u2="ğ" k="140" /> + <hkern u1="Ý" u2="ǽ" k="140" /> + <hkern u1="Ý" u2="æ" k="140" /> + <hkern u1="Ý" u2="Č" k="104" /> + <hkern u1="Ý" u2="Ć" k="104" /> + <hkern u1="Ý" u2="õ" k="140" /> + <hkern u1="Ý" u2="ę" k="140" /> + <hkern u1="Ý" u2="ē" k="140" /> + <hkern u1="Ý" u2="è" k="140" /> + <hkern u1="Ý" u2="ė" k="140" /> + <hkern u1="Ý" u2="ë" k="140" /> + <hkern u1="Ý" u2="ê" k="140" /> + <hkern u1="Ý" u2="ě" k="140" /> + <hkern u1="Ý" u2="ĕ" k="140" /> + <hkern u1="Ý" u2="é" k="140" /> + <hkern u1="Ý" u2="đ" k="140" /> + <hkern u1="Ý" u2="ď" k="140" /> + <hkern u1="Ý" u2="ċ" k="140" /> + <hkern u1="Ý" u2="ĉ" k="140" /> + <hkern u1="Ý" u2="ç" k="140" /> + <hkern u1="Ý" u2="č" k="140" /> + <hkern u1="Ý" u2="ć" k="140" /> + <hkern u1="Ý" u2="ã" k="140" /> + <hkern u1="Ý" u2="å" k="140" /> + <hkern u1="Ý" u2="ą" k="140" /> + <hkern u1="Ý" u2="ā" k="140" /> + <hkern u1="Ý" u2="à" k="140" /> + <hkern u1="Ý" u2="ä" k="140" /> + <hkern u1="Ý" u2="â" k="140" /> + <hkern u1="Ý" u2="ă" k="140" /> + <hkern u1="Ý" u2="á" k="140" /> + <hkern u1="Ý" u2="À" k="271" /> + <hkern u1="Ý" u2="Ä" k="271" /> + <hkern u1="Ý" u2="Ĝ" k="104" /> + <hkern u1="Ý" u2="Ğ" k="104" /> + <hkern u1="Ý" u2="Ċ" k="104" /> + <hkern u1="Ý" u2="Ĉ" k="104" /> + <hkern u1="Ý" u2="Ç" k="104" /> + <hkern u1="Ý" u2="Ö" k="104" /> + <hkern u1="Ý" u2="Ø" k="104" /> + <hkern u1="Ý" u2="C" k="104" /> + <hkern u1="Ý" u2="Ș" k="41" /> + <hkern u1="Ý" u2="Ŝ" k="41" /> + <hkern u1="Ý" u2="Ş" k="41" /> + <hkern u1="Ý" u2="Š" k="41" /> + <hkern u1="Ý" u2="Õ" k="104" /> + <hkern u1="Ý" u2="Ǿ" k="104" /> + <hkern u1="Ý" u2="Ō" k="104" /> + <hkern u1="Ý" u2="Ő" k="104" /> + <hkern u1="Ý" u2="Ò" k="104" /> + <hkern u1="Ý" u2="Ô" k="104" /> + <hkern u1="Ý" u2="Ŏ" k="104" /> + <hkern u1="Ý" u2="Ģ" k="104" /> + <hkern u1="Ý" u2="Ã" k="271" /> + <hkern u1="Ý" u2="Å" k="271" /> + <hkern u1="Ý" u2="Ą" k="271" /> + <hkern u1="Ý" u2="Ā" k="271" /> + <hkern u1="Ý" u2="Ó" k="104" /> + <hkern u1="Ý" u2="Ś" k="41" /> + <hkern u1="Ý" u2="0" k="104" /> + <hkern u1="Ý" u2="Œ" k="104" /> + <hkern u1="Ý" u2="Ġ" k="104" /> + <hkern u1="Ý" u2="c" k="140" /> + <hkern u1="Ý" u2="s" k="104" /> + <hkern u1="Ý" u2="q" k="140" /> + <hkern u1="Ý" u2="o" k="140" /> + <hkern u1="Ý" u2="g" k="140" /> + <hkern u1="Ý" u2="e" k="140" /> + <hkern u1="Ý" u2="d" k="140" /> + <hkern u1="Ý" u2="a" k="140" /> + <hkern u1="Ý" u2="Q" k="104" /> + <hkern u1="Ý" u2="O" k="104" /> + <hkern u1="Ý" u2="G" k="104" /> + <hkern u1="Ý" u2="®" k="104" /> + <hkern u1="Ý" u2="©" k="104" /> + <hkern u1="Ý" u2="A" k="271" /> + <hkern u1="Ý" u2="S" k="41" /> + <hkern u1="Ŷ" u2="Â" k="271" /> + <hkern u1="Ŷ" u2="Ă" k="271" /> + <hkern u1="Ŷ" u2="Á" k="271" /> + <hkern u1="Ŷ" u2="œ" k="140" /> + <hkern u1="Ŷ" u2="ś" k="104" /> + <hkern u1="Ŷ" u2="š" k="104" /> + <hkern u1="Ŷ" u2="ō" k="140" /> + <hkern u1="Ŷ" u2="ő" k="140" /> + <hkern u1="Ŷ" u2="ò" k="140" /> + <hkern u1="Ŷ" u2="ö" k="140" /> + <hkern u1="Ŷ" u2="ŏ" k="140" /> + <hkern u1="Ŷ" u2="ô" k="140" /> + <hkern u1="Ŷ" u2="ó" k="140" /> + <hkern u1="Ŷ" u2="ġ" k="140" /> + <hkern u1="Ŷ" u2="ģ" k="140" /> + <hkern u1="Ŷ" u2="ĝ" k="140" /> + <hkern u1="Ŷ" u2="ğ" k="140" /> + <hkern u1="Ŷ" u2="ǽ" k="140" /> + <hkern u1="Ŷ" u2="æ" k="140" /> + <hkern u1="Ŷ" u2="Č" k="104" /> + <hkern u1="Ŷ" u2="Ć" k="104" /> + <hkern u1="Ŷ" u2="õ" k="140" /> + <hkern u1="Ŷ" u2="ę" k="140" /> + <hkern u1="Ŷ" u2="ē" k="140" /> + <hkern u1="Ŷ" u2="è" k="140" /> + <hkern u1="Ŷ" u2="ė" k="140" /> + <hkern u1="Ŷ" u2="ë" k="140" /> + <hkern u1="Ŷ" u2="ê" k="140" /> + <hkern u1="Ŷ" u2="ě" k="140" /> + <hkern u1="Ŷ" u2="ĕ" k="140" /> + <hkern u1="Ŷ" u2="é" k="140" /> + <hkern u1="Ŷ" u2="đ" k="140" /> + <hkern u1="Ŷ" u2="ď" k="140" /> + <hkern u1="Ŷ" u2="ċ" k="140" /> + <hkern u1="Ŷ" u2="ĉ" k="140" /> + <hkern u1="Ŷ" u2="ç" k="140" /> + <hkern u1="Ŷ" u2="č" k="140" /> + <hkern u1="Ŷ" u2="ć" k="140" /> + <hkern u1="Ŷ" u2="ã" k="140" /> + <hkern u1="Ŷ" u2="å" k="140" /> + <hkern u1="Ŷ" u2="ą" k="140" /> + <hkern u1="Ŷ" u2="ā" k="140" /> + <hkern u1="Ŷ" u2="à" k="140" /> + <hkern u1="Ŷ" u2="ä" k="140" /> + <hkern u1="Ŷ" u2="â" k="140" /> + <hkern u1="Ŷ" u2="ă" k="140" /> + <hkern u1="Ŷ" u2="á" k="140" /> + <hkern u1="Ŷ" u2="À" k="271" /> + <hkern u1="Ŷ" u2="Ä" k="271" /> + <hkern u1="Ŷ" u2="Ĝ" k="104" /> + <hkern u1="Ŷ" u2="Ğ" k="104" /> + <hkern u1="Ŷ" u2="Ċ" k="104" /> + <hkern u1="Ŷ" u2="Ĉ" k="104" /> + <hkern u1="Ŷ" u2="Ç" k="104" /> + <hkern u1="Ŷ" u2="Ö" k="104" /> + <hkern u1="Ŷ" u2="Ø" k="104" /> + <hkern u1="Ŷ" u2="C" k="104" /> + <hkern u1="Ŷ" u2="Ș" k="41" /> + <hkern u1="Ŷ" u2="Ŝ" k="41" /> + <hkern u1="Ŷ" u2="Ş" k="41" /> + <hkern u1="Ŷ" u2="Š" k="41" /> + <hkern u1="Ŷ" u2="Õ" k="104" /> + <hkern u1="Ŷ" u2="Ǿ" k="104" /> + <hkern u1="Ŷ" u2="Ō" k="104" /> + <hkern u1="Ŷ" u2="Ő" k="104" /> + <hkern u1="Ŷ" u2="Ò" k="104" /> + <hkern u1="Ŷ" u2="Ô" k="104" /> + <hkern u1="Ŷ" u2="Ŏ" k="104" /> + <hkern u1="Ŷ" u2="Ģ" k="104" /> + <hkern u1="Ŷ" u2="Ã" k="271" /> + <hkern u1="Ŷ" u2="Å" k="271" /> + <hkern u1="Ŷ" u2="Ą" k="271" /> + <hkern u1="Ŷ" u2="Ā" k="271" /> + <hkern u1="Ŷ" u2="Ó" k="104" /> + <hkern u1="Ŷ" u2="Ś" k="41" /> + <hkern u1="Ŷ" u2="0" k="104" /> + <hkern u1="Ŷ" u2="Œ" k="104" /> + <hkern u1="Ŷ" u2="Ġ" k="104" /> + <hkern u1="Ŷ" u2="c" k="140" /> + <hkern u1="Ŷ" u2="s" k="104" /> + <hkern u1="Ŷ" u2="q" k="140" /> + <hkern u1="Ŷ" u2="o" k="140" /> + <hkern u1="Ŷ" u2="g" k="140" /> + <hkern u1="Ŷ" u2="e" k="140" /> + <hkern u1="Ŷ" u2="d" k="140" /> + <hkern u1="Ŷ" u2="a" k="140" /> + <hkern u1="Ŷ" u2="Q" k="104" /> + <hkern u1="Ŷ" u2="O" k="104" /> + <hkern u1="Ŷ" u2="G" k="104" /> + <hkern u1="Ŷ" u2="®" k="104" /> + <hkern u1="Ŷ" u2="©" k="104" /> + <hkern u1="Ŷ" u2="A" k="271" /> + <hkern u1="Ŷ" u2="S" k="41" /> + <hkern u1="Ÿ" u2="Â" k="271" /> + <hkern u1="Ÿ" u2="Ă" k="271" /> + <hkern u1="Ÿ" u2="Á" k="271" /> + <hkern u1="Ÿ" u2="œ" k="140" /> + <hkern u1="Ÿ" u2="ś" k="104" /> + <hkern u1="Ÿ" u2="š" k="104" /> + <hkern u1="Ÿ" u2="ō" k="140" /> + <hkern u1="Ÿ" u2="ő" k="140" /> + <hkern u1="Ÿ" u2="ò" k="140" /> + <hkern u1="Ÿ" u2="ö" k="140" /> + <hkern u1="Ÿ" u2="ŏ" k="140" /> + <hkern u1="Ÿ" u2="ô" k="140" /> + <hkern u1="Ÿ" u2="ó" k="140" /> + <hkern u1="Ÿ" u2="ġ" k="140" /> + <hkern u1="Ÿ" u2="ģ" k="140" /> + <hkern u1="Ÿ" u2="ĝ" k="140" /> + <hkern u1="Ÿ" u2="ğ" k="140" /> + <hkern u1="Ÿ" u2="ǽ" k="140" /> + <hkern u1="Ÿ" u2="æ" k="140" /> + <hkern u1="Ÿ" u2="Č" k="104" /> + <hkern u1="Ÿ" u2="Ć" k="104" /> + <hkern u1="Ÿ" u2="õ" k="140" /> + <hkern u1="Ÿ" u2="ę" k="140" /> + <hkern u1="Ÿ" u2="ē" k="140" /> + <hkern u1="Ÿ" u2="è" k="140" /> + <hkern u1="Ÿ" u2="ė" k="140" /> + <hkern u1="Ÿ" u2="ë" k="140" /> + <hkern u1="Ÿ" u2="ê" k="140" /> + <hkern u1="Ÿ" u2="ě" k="140" /> + <hkern u1="Ÿ" u2="ĕ" k="140" /> + <hkern u1="Ÿ" u2="é" k="140" /> + <hkern u1="Ÿ" u2="đ" k="140" /> + <hkern u1="Ÿ" u2="ď" k="140" /> + <hkern u1="Ÿ" u2="ċ" k="140" /> + <hkern u1="Ÿ" u2="ĉ" k="140" /> + <hkern u1="Ÿ" u2="ç" k="140" /> + <hkern u1="Ÿ" u2="č" k="140" /> + <hkern u1="Ÿ" u2="ć" k="140" /> + <hkern u1="Ÿ" u2="ã" k="140" /> + <hkern u1="Ÿ" u2="å" k="140" /> + <hkern u1="Ÿ" u2="ą" k="140" /> + <hkern u1="Ÿ" u2="ā" k="140" /> + <hkern u1="Ÿ" u2="à" k="140" /> + <hkern u1="Ÿ" u2="ä" k="140" /> + <hkern u1="Ÿ" u2="â" k="140" /> + <hkern u1="Ÿ" u2="ă" k="140" /> + <hkern u1="Ÿ" u2="á" k="140" /> + <hkern u1="Ÿ" u2="À" k="271" /> + <hkern u1="Ÿ" u2="Ä" k="271" /> + <hkern u1="Ÿ" u2="Ĝ" k="104" /> + <hkern u1="Ÿ" u2="Ğ" k="104" /> + <hkern u1="Ÿ" u2="Ċ" k="104" /> + <hkern u1="Ÿ" u2="Ĉ" k="104" /> + <hkern u1="Ÿ" u2="Ç" k="104" /> + <hkern u1="Ÿ" u2="Ö" k="104" /> + <hkern u1="Ÿ" u2="Ø" k="104" /> + <hkern u1="Ÿ" u2="C" k="104" /> + <hkern u1="Ÿ" u2="Ș" k="41" /> + <hkern u1="Ÿ" u2="Ŝ" k="41" /> + <hkern u1="Ÿ" u2="Ş" k="41" /> + <hkern u1="Ÿ" u2="Š" k="41" /> + <hkern u1="Ÿ" u2="Õ" k="104" /> + <hkern u1="Ÿ" u2="Ǿ" k="104" /> + <hkern u1="Ÿ" u2="Ō" k="104" /> + <hkern u1="Ÿ" u2="Ő" k="104" /> + <hkern u1="Ÿ" u2="Ò" k="104" /> + <hkern u1="Ÿ" u2="Ô" k="104" /> + <hkern u1="Ÿ" u2="Ŏ" k="104" /> + <hkern u1="Ÿ" u2="Ģ" k="104" /> + <hkern u1="Ÿ" u2="Ã" k="271" /> + <hkern u1="Ÿ" u2="Å" k="271" /> + <hkern u1="Ÿ" u2="Ą" k="271" /> + <hkern u1="Ÿ" u2="Ā" k="271" /> + <hkern u1="Ÿ" u2="Ó" k="104" /> + <hkern u1="Ÿ" u2="Ś" k="41" /> + <hkern u1="Ÿ" u2="0" k="104" /> + <hkern u1="Ÿ" u2="Œ" k="104" /> + <hkern u1="Ÿ" u2="Ġ" k="104" /> + <hkern u1="Ÿ" u2="c" k="140" /> + <hkern u1="Ÿ" u2="s" k="104" /> + <hkern u1="Ÿ" u2="q" k="140" /> + <hkern u1="Ÿ" u2="o" k="140" /> + <hkern u1="Ÿ" u2="g" k="140" /> + <hkern u1="Ÿ" u2="e" k="140" /> + <hkern u1="Ÿ" u2="d" k="140" /> + <hkern u1="Ÿ" u2="a" k="140" /> + <hkern u1="Ÿ" u2="Q" k="104" /> + <hkern u1="Ÿ" u2="O" k="104" /> + <hkern u1="Ÿ" u2="G" k="104" /> + <hkern u1="Ÿ" u2="®" k="104" /> + <hkern u1="Ÿ" u2="©" k="104" /> + <hkern u1="Ÿ" u2="A" k="271" /> + <hkern u1="Ÿ" u2="S" k="41" /> + <hkern u1="Ỳ" u2="Â" k="271" /> + <hkern u1="Ỳ" u2="Ă" k="271" /> + <hkern u1="Ỳ" u2="Á" k="271" /> + <hkern u1="Ỳ" u2="œ" k="140" /> + <hkern u1="Ỳ" u2="ś" k="104" /> + <hkern u1="Ỳ" u2="š" k="104" /> + <hkern u1="Ỳ" u2="ō" k="140" /> + <hkern u1="Ỳ" u2="ő" k="140" /> + <hkern u1="Ỳ" u2="ò" k="140" /> + <hkern u1="Ỳ" u2="ö" k="140" /> + <hkern u1="Ỳ" u2="ŏ" k="140" /> + <hkern u1="Ỳ" u2="ô" k="140" /> + <hkern u1="Ỳ" u2="ó" k="140" /> + <hkern u1="Ỳ" u2="ġ" k="140" /> + <hkern u1="Ỳ" u2="ģ" k="140" /> + <hkern u1="Ỳ" u2="ĝ" k="140" /> + <hkern u1="Ỳ" u2="ğ" k="140" /> + <hkern u1="Ỳ" u2="ǽ" k="140" /> + <hkern u1="Ỳ" u2="æ" k="140" /> + <hkern u1="Ỳ" u2="Č" k="104" /> + <hkern u1="Ỳ" u2="Ć" k="104" /> + <hkern u1="Ỳ" u2="õ" k="140" /> + <hkern u1="Ỳ" u2="ę" k="140" /> + <hkern u1="Ỳ" u2="ē" k="140" /> + <hkern u1="Ỳ" u2="è" k="140" /> + <hkern u1="Ỳ" u2="ė" k="140" /> + <hkern u1="Ỳ" u2="ë" k="140" /> + <hkern u1="Ỳ" u2="ê" k="140" /> + <hkern u1="Ỳ" u2="ě" k="140" /> + <hkern u1="Ỳ" u2="ĕ" k="140" /> + <hkern u1="Ỳ" u2="é" k="140" /> + <hkern u1="Ỳ" u2="đ" k="140" /> + <hkern u1="Ỳ" u2="ď" k="140" /> + <hkern u1="Ỳ" u2="ċ" k="140" /> + <hkern u1="Ỳ" u2="ĉ" k="140" /> + <hkern u1="Ỳ" u2="ç" k="140" /> + <hkern u1="Ỳ" u2="č" k="140" /> + <hkern u1="Ỳ" u2="ć" k="140" /> + <hkern u1="Ỳ" u2="ã" k="140" /> + <hkern u1="Ỳ" u2="å" k="140" /> + <hkern u1="Ỳ" u2="ą" k="140" /> + <hkern u1="Ỳ" u2="ā" k="140" /> + <hkern u1="Ỳ" u2="à" k="140" /> + <hkern u1="Ỳ" u2="ä" k="140" /> + <hkern u1="Ỳ" u2="â" k="140" /> + <hkern u1="Ỳ" u2="ă" k="140" /> + <hkern u1="Ỳ" u2="á" k="140" /> + <hkern u1="Ỳ" u2="À" k="271" /> + <hkern u1="Ỳ" u2="Ä" k="271" /> + <hkern u1="Ỳ" u2="Ĝ" k="104" /> + <hkern u1="Ỳ" u2="Ğ" k="104" /> + <hkern u1="Ỳ" u2="Ċ" k="104" /> + <hkern u1="Ỳ" u2="Ĉ" k="104" /> + <hkern u1="Ỳ" u2="Ç" k="104" /> + <hkern u1="Ỳ" u2="Ö" k="104" /> + <hkern u1="Ỳ" u2="Ø" k="104" /> + <hkern u1="Ỳ" u2="C" k="104" /> + <hkern u1="Ỳ" u2="Ș" k="41" /> + <hkern u1="Ỳ" u2="Ŝ" k="41" /> + <hkern u1="Ỳ" u2="Ş" k="41" /> + <hkern u1="Ỳ" u2="Š" k="41" /> + <hkern u1="Ỳ" u2="Õ" k="104" /> + <hkern u1="Ỳ" u2="Ǿ" k="104" /> + <hkern u1="Ỳ" u2="Ō" k="104" /> + <hkern u1="Ỳ" u2="Ő" k="104" /> + <hkern u1="Ỳ" u2="Ò" k="104" /> + <hkern u1="Ỳ" u2="Ô" k="104" /> + <hkern u1="Ỳ" u2="Ŏ" k="104" /> + <hkern u1="Ỳ" u2="Ģ" k="104" /> + <hkern u1="Ỳ" u2="Ã" k="271" /> + <hkern u1="Ỳ" u2="Å" k="271" /> + <hkern u1="Ỳ" u2="Ą" k="271" /> + <hkern u1="Ỳ" u2="Ā" k="271" /> + <hkern u1="Ỳ" u2="Ó" k="104" /> + <hkern u1="Ỳ" u2="Ś" k="41" /> + <hkern u1="Ỳ" u2="0" k="104" /> + <hkern u1="Ỳ" u2="Œ" k="104" /> + <hkern u1="Ỳ" u2="Ġ" k="104" /> + <hkern u1="Ỳ" u2="c" k="140" /> + <hkern u1="Ỳ" u2="s" k="104" /> + <hkern u1="Ỳ" u2="q" k="140" /> + <hkern u1="Ỳ" u2="o" k="140" /> + <hkern u1="Ỳ" u2="g" k="140" /> + <hkern u1="Ỳ" u2="e" k="140" /> + <hkern u1="Ỳ" u2="d" k="140" /> + <hkern u1="Ỳ" u2="a" k="140" /> + <hkern u1="Ỳ" u2="Q" k="104" /> + <hkern u1="Ỳ" u2="O" k="104" /> + <hkern u1="Ỳ" u2="G" k="104" /> + <hkern u1="Ỳ" u2="®" k="104" /> + <hkern u1="Ỳ" u2="©" k="104" /> + <hkern u1="Ỳ" u2="A" k="271" /> + <hkern u1="Ỳ" u2="S" k="41" /> + <hkern u1="Ü" u2="Â" k="48" /> + <hkern u1="Ü" u2="Ă" k="48" /> + <hkern u1="Ü" u2="Á" k="48" /> + <hkern u1="Ü" u2="À" k="48" /> + <hkern u1="Ü" u2="Ä" k="48" /> + <hkern u1="Ü" u2="Ã" k="48" /> + <hkern u1="Ü" u2="Å" k="48" /> + <hkern u1="Ü" u2="Ą" k="48" /> + <hkern u1="Ü" u2="Ā" k="48" /> + <hkern u1="Ü" u2="A" k="48" /> + <hkern u1="C" u2="Č" k="80" /> + <hkern u1="C" u2="Ć" k="80" /> + <hkern u1="C" u2="Ĝ" k="80" /> + <hkern u1="C" u2="Ğ" k="80" /> + <hkern u1="C" u2="Ċ" k="80" /> + <hkern u1="C" u2="Ĉ" k="80" /> + <hkern u1="C" u2="Ç" k="80" /> + <hkern u1="C" u2="Ö" k="80" /> + <hkern u1="C" u2="Ø" k="80" /> + <hkern u1="C" u2="C" k="80" /> + <hkern u1="C" u2="Õ" k="80" /> + <hkern u1="C" u2="Ǿ" k="80" /> + <hkern u1="C" u2="Ō" k="80" /> + <hkern u1="C" u2="Ő" k="80" /> + <hkern u1="C" u2="Ò" k="80" /> + <hkern u1="C" u2="Ô" k="80" /> + <hkern u1="C" u2="Ŏ" k="80" /> + <hkern u1="C" u2="Ģ" k="80" /> + <hkern u1="C" u2="Ó" k="80" /> + <hkern u1="C" u2="0" k="80" /> + <hkern u1="C" u2="Œ" k="80" /> + <hkern u1="C" u2="Ġ" k="80" /> + <hkern u1="C" u2="Q" k="80" /> + <hkern u1="C" u2="O" k="80" /> + <hkern u1="C" u2="G" k="80" /> + <hkern u1="C" u2="®" k="80" /> + <hkern u1="C" u2="©" k="80" /> + <hkern u1="D" u2="Â" k="120" /> + <hkern u1="D" u2="Ă" k="120" /> + <hkern u1="D" u2="Ŵ" k="100" /> + <hkern u1="D" u2="Á" k="120" /> + <hkern u1="D" u2="À" k="120" /> + <hkern u1="D" u2="Ä" k="120" /> + <hkern u1="D" u2="Ỳ" k="80" /> + <hkern u1="D" u2="Ÿ" k="80" /> + <hkern u1="D" u2="Ŷ" k="80" /> + <hkern u1="D" u2="Ý" k="80" /> + <hkern u1="D" u2="Ẁ" k="100" /> + <hkern u1="D" u2="Ẅ" k="100" /> + <hkern u1="D" u2="Ẃ" k="100" /> + <hkern u1="D" u2="Ș" k="62" /> + <hkern u1="D" u2="Ŝ" k="62" /> + <hkern u1="D" u2="Ş" k="62" /> + <hkern u1="D" u2="Š" k="62" /> + <hkern u1="D" u2="Ã" k="120" /> + <hkern u1="D" u2="Å" k="120" /> + <hkern u1="D" u2="Ą" k="120" /> + <hkern u1="D" u2="Ā" k="120" /> + <hkern u1="D" u2="Ţ" k="80" /> + <hkern u1="D" u2="Ś" k="62" /> + <hkern u1="D" u2="Y" k="80" /> + <hkern u1="D" u2="X" k="84" /> + <hkern u1="D" u2="W" k="100" /> + <hkern u1="D" u2="V" k="100" /> + <hkern u1="D" u2="A" k="120" /> + <hkern u1="D" u2="T" k="80" /> + <hkern u1="D" u2="S" k="62" /> + <hkern u1="ń" u2="œ" k="20" /> + <hkern u1="ń" u2="ō" k="20" /> + <hkern u1="ń" u2="ő" k="20" /> + <hkern u1="ń" u2="ò" k="20" /> + <hkern u1="ń" u2="ö" k="20" /> + <hkern u1="ń" u2="ŏ" k="20" /> + <hkern u1="ń" u2="ô" k="20" /> + <hkern u1="ń" u2="ó" k="20" /> + <hkern u1="ń" u2="ġ" k="20" /> + <hkern u1="ń" u2="ģ" k="20" /> + <hkern u1="ń" u2="ĝ" k="20" /> + <hkern u1="ń" u2="ğ" k="20" /> + <hkern u1="ń" u2="ǽ" k="20" /> + <hkern u1="ń" u2="æ" k="20" /> + <hkern u1="ń" u2="õ" k="20" /> + <hkern u1="ń" u2="ę" k="20" /> + <hkern u1="ń" u2="ē" k="20" /> + <hkern u1="ń" u2="è" k="20" /> + <hkern u1="ń" u2="ė" k="20" /> + <hkern u1="ń" u2="ë" k="20" /> + <hkern u1="ń" u2="ê" k="20" /> + <hkern u1="ń" u2="ě" k="20" /> + <hkern u1="ń" u2="ĕ" k="20" /> + <hkern u1="ń" u2="é" k="20" /> + <hkern u1="ń" u2="đ" k="20" /> + <hkern u1="ń" u2="ď" k="20" /> + <hkern u1="ń" u2="ċ" k="20" /> + <hkern u1="ń" u2="ĉ" k="20" /> + <hkern u1="ń" u2="ç" k="20" /> + <hkern u1="ń" u2="č" k="20" /> + <hkern u1="ń" u2="ć" k="20" /> + <hkern u1="ń" u2="ã" k="20" /> + <hkern u1="ń" u2="å" k="20" /> + <hkern u1="ń" u2="ą" k="20" /> + <hkern u1="ń" u2="ā" k="20" /> + <hkern u1="ń" u2="à" k="20" /> + <hkern u1="ń" u2="ä" k="20" /> + <hkern u1="ń" u2="â" k="20" /> + <hkern u1="ń" u2="ă" k="20" /> + <hkern u1="ń" u2="á" k="20" /> + <hkern u1="ń" u2="c" k="20" /> + <hkern u1="ń" u2="q" k="20" /> + <hkern u1="ń" u2="o" k="20" /> + <hkern u1="ń" u2="g" k="20" /> + <hkern u1="ń" u2="e" k="20" /> + <hkern u1="ń" u2="d" k="20" /> + <hkern u1="ń" u2="a" k="20" /> + <hkern u1="ʼn" u2="œ" k="20" /> + <hkern u1="ʼn" u2="ō" k="20" /> + <hkern u1="ʼn" u2="ő" k="20" /> + <hkern u1="ʼn" u2="ò" k="20" /> + <hkern u1="ʼn" u2="ö" k="20" /> + <hkern u1="ʼn" u2="ŏ" k="20" /> + <hkern u1="ʼn" u2="ô" k="20" /> + <hkern u1="ʼn" u2="ó" k="20" /> + <hkern u1="ʼn" u2="ġ" k="20" /> + <hkern u1="ʼn" u2="ģ" k="20" /> + <hkern u1="ʼn" u2="ĝ" k="20" /> + <hkern u1="ʼn" u2="ğ" k="20" /> + <hkern u1="ʼn" u2="ǽ" k="20" /> + <hkern u1="ʼn" u2="æ" k="20" /> + <hkern u1="ʼn" u2="õ" k="20" /> + <hkern u1="ʼn" u2="ę" k="20" /> + <hkern u1="ʼn" u2="ē" k="20" /> + <hkern u1="ʼn" u2="è" k="20" /> + <hkern u1="ʼn" u2="ė" k="20" /> + <hkern u1="ʼn" u2="ë" k="20" /> + <hkern u1="ʼn" u2="ê" k="20" /> + <hkern u1="ʼn" u2="ě" k="20" /> + <hkern u1="ʼn" u2="ĕ" k="20" /> + <hkern u1="ʼn" u2="é" k="20" /> + <hkern u1="ʼn" u2="đ" k="20" /> + <hkern u1="ʼn" u2="ď" k="20" /> + <hkern u1="ʼn" u2="ċ" k="20" /> + <hkern u1="ʼn" u2="ĉ" k="20" /> + <hkern u1="ʼn" u2="ç" k="20" /> + <hkern u1="ʼn" u2="č" k="20" /> + <hkern u1="ʼn" u2="ć" k="20" /> + <hkern u1="ʼn" u2="ã" k="20" /> + <hkern u1="ʼn" u2="å" k="20" /> + <hkern u1="ʼn" u2="ą" k="20" /> + <hkern u1="ʼn" u2="ā" k="20" /> + <hkern u1="ʼn" u2="à" k="20" /> + <hkern u1="ʼn" u2="ä" k="20" /> + <hkern u1="ʼn" u2="â" k="20" /> + <hkern u1="ʼn" u2="ă" k="20" /> + <hkern u1="ʼn" u2="á" k="20" /> + <hkern u1="ʼn" u2="c" k="20" /> + <hkern u1="ʼn" u2="q" k="20" /> + <hkern u1="ʼn" u2="o" k="20" /> + <hkern u1="ʼn" u2="g" k="20" /> + <hkern u1="ʼn" u2="e" k="20" /> + <hkern u1="ʼn" u2="d" k="20" /> + <hkern u1="ʼn" u2="a" k="20" /> + <hkern u1="ň" u2="œ" k="20" /> + <hkern u1="ň" u2="ō" k="20" /> + <hkern u1="ň" u2="ő" k="20" /> + <hkern u1="ň" u2="ò" k="20" /> + <hkern u1="ň" u2="ö" k="20" /> + <hkern u1="ň" u2="ŏ" k="20" /> + <hkern u1="ň" u2="ô" k="20" /> + <hkern u1="ň" u2="ó" k="20" /> + <hkern u1="ň" u2="ġ" k="20" /> + <hkern u1="ň" u2="ģ" k="20" /> + <hkern u1="ň" u2="ĝ" k="20" /> + <hkern u1="ň" u2="ğ" k="20" /> + <hkern u1="ň" u2="ǽ" k="20" /> + <hkern u1="ň" u2="æ" k="20" /> + <hkern u1="ň" u2="õ" k="20" /> + <hkern u1="ň" u2="ę" k="20" /> + <hkern u1="ň" u2="ē" k="20" /> + <hkern u1="ň" u2="è" k="20" /> + <hkern u1="ň" u2="ė" k="20" /> + <hkern u1="ň" u2="ë" k="20" /> + <hkern u1="ň" u2="ê" k="20" /> + <hkern u1="ň" u2="ě" k="20" /> + <hkern u1="ň" u2="ĕ" k="20" /> + <hkern u1="ň" u2="é" k="20" /> + <hkern u1="ň" u2="đ" k="20" /> + <hkern u1="ň" u2="ď" k="20" /> + <hkern u1="ň" u2="ċ" k="20" /> + <hkern u1="ň" u2="ĉ" k="20" /> + <hkern u1="ň" u2="ç" k="20" /> + <hkern u1="ň" u2="č" k="20" /> + <hkern u1="ň" u2="ć" k="20" /> + <hkern u1="ň" u2="ã" k="20" /> + <hkern u1="ň" u2="å" k="20" /> + <hkern u1="ň" u2="ą" k="20" /> + <hkern u1="ň" u2="ā" k="20" /> + <hkern u1="ň" u2="à" k="20" /> + <hkern u1="ň" u2="ä" k="20" /> + <hkern u1="ň" u2="â" k="20" /> + <hkern u1="ň" u2="ă" k="20" /> + <hkern u1="ň" u2="á" k="20" /> + <hkern u1="ň" u2="c" k="20" /> + <hkern u1="ň" u2="q" k="20" /> + <hkern u1="ň" u2="o" k="20" /> + <hkern u1="ň" u2="g" k="20" /> + <hkern u1="ň" u2="e" k="20" /> + <hkern u1="ň" u2="d" k="20" /> + <hkern u1="ň" u2="a" k="20" /> + <hkern u1="ņ" u2="œ" k="20" /> + <hkern u1="ņ" u2="ō" k="20" /> + <hkern u1="ņ" u2="ő" k="20" /> + <hkern u1="ņ" u2="ò" k="20" /> + <hkern u1="ņ" u2="ö" k="20" /> + <hkern u1="ņ" u2="ŏ" k="20" /> + <hkern u1="ņ" u2="ô" k="20" /> + <hkern u1="ņ" u2="ó" k="20" /> + <hkern u1="ņ" u2="ġ" k="20" /> + <hkern u1="ņ" u2="ģ" k="20" /> + <hkern u1="ņ" u2="ĝ" k="20" /> + <hkern u1="ņ" u2="ğ" k="20" /> + <hkern u1="ņ" u2="ǽ" k="20" /> + <hkern u1="ņ" u2="æ" k="20" /> + <hkern u1="ņ" u2="õ" k="20" /> + <hkern u1="ņ" u2="ę" k="20" /> + <hkern u1="ņ" u2="ē" k="20" /> + <hkern u1="ņ" u2="è" k="20" /> + <hkern u1="ņ" u2="ė" k="20" /> + <hkern u1="ņ" u2="ë" k="20" /> + <hkern u1="ņ" u2="ê" k="20" /> + <hkern u1="ņ" u2="ě" k="20" /> + <hkern u1="ņ" u2="ĕ" k="20" /> + <hkern u1="ņ" u2="é" k="20" /> + <hkern u1="ņ" u2="đ" k="20" /> + <hkern u1="ņ" u2="ď" k="20" /> + <hkern u1="ņ" u2="ċ" k="20" /> + <hkern u1="ņ" u2="ĉ" k="20" /> + <hkern u1="ņ" u2="ç" k="20" /> + <hkern u1="ņ" u2="č" k="20" /> + <hkern u1="ņ" u2="ć" k="20" /> + <hkern u1="ņ" u2="ã" k="20" /> + <hkern u1="ņ" u2="å" k="20" /> + <hkern u1="ņ" u2="ą" k="20" /> + <hkern u1="ņ" u2="ā" k="20" /> + <hkern u1="ņ" u2="à" k="20" /> + <hkern u1="ņ" u2="ä" k="20" /> + <hkern u1="ņ" u2="â" k="20" /> + <hkern u1="ņ" u2="ă" k="20" /> + <hkern u1="ņ" u2="á" k="20" /> + <hkern u1="ņ" u2="c" k="20" /> + <hkern u1="ņ" u2="q" k="20" /> + <hkern u1="ņ" u2="o" k="20" /> + <hkern u1="ņ" u2="g" k="20" /> + <hkern u1="ņ" u2="e" k="20" /> + <hkern u1="ņ" u2="d" k="20" /> + <hkern u1="ņ" u2="a" k="20" /> + <hkern u1="ñ" u2="œ" k="20" /> + <hkern u1="ñ" u2="ō" k="20" /> + <hkern u1="ñ" u2="ő" k="20" /> + <hkern u1="ñ" u2="ò" k="20" /> + <hkern u1="ñ" u2="ö" k="20" /> + <hkern u1="ñ" u2="ŏ" k="20" /> + <hkern u1="ñ" u2="ô" k="20" /> + <hkern u1="ñ" u2="ó" k="20" /> + <hkern u1="ñ" u2="ġ" k="20" /> + <hkern u1="ñ" u2="ģ" k="20" /> + <hkern u1="ñ" u2="ĝ" k="20" /> + <hkern u1="ñ" u2="ğ" k="20" /> + <hkern u1="ñ" u2="ǽ" k="20" /> + <hkern u1="ñ" u2="æ" k="20" /> + <hkern u1="ñ" u2="õ" k="20" /> + <hkern u1="ñ" u2="ę" k="20" /> + <hkern u1="ñ" u2="ē" k="20" /> + <hkern u1="ñ" u2="è" k="20" /> + <hkern u1="ñ" u2="ė" k="20" /> + <hkern u1="ñ" u2="ë" k="20" /> + <hkern u1="ñ" u2="ê" k="20" /> + <hkern u1="ñ" u2="ě" k="20" /> + <hkern u1="ñ" u2="ĕ" k="20" /> + <hkern u1="ñ" u2="é" k="20" /> + <hkern u1="ñ" u2="đ" k="20" /> + <hkern u1="ñ" u2="ď" k="20" /> + <hkern u1="ñ" u2="ċ" k="20" /> + <hkern u1="ñ" u2="ĉ" k="20" /> + <hkern u1="ñ" u2="ç" k="20" /> + <hkern u1="ñ" u2="č" k="20" /> + <hkern u1="ñ" u2="ć" k="20" /> + <hkern u1="ñ" u2="ã" k="20" /> + <hkern u1="ñ" u2="å" k="20" /> + <hkern u1="ñ" u2="ą" k="20" /> + <hkern u1="ñ" u2="ā" k="20" /> + <hkern u1="ñ" u2="à" k="20" /> + <hkern u1="ñ" u2="ä" k="20" /> + <hkern u1="ñ" u2="â" k="20" /> + <hkern u1="ñ" u2="ă" k="20" /> + <hkern u1="ñ" u2="á" k="20" /> + <hkern u1="ñ" u2="c" k="20" /> + <hkern u1="ñ" u2="q" k="20" /> + <hkern u1="ñ" u2="o" k="20" /> + <hkern u1="ñ" u2="g" k="20" /> + <hkern u1="ñ" u2="e" k="20" /> + <hkern u1="ñ" u2="d" k="20" /> + <hkern u1="ñ" u2="a" k="20" /> + <hkern u1="Ø" u2="Â" k="120" /> + <hkern u1="Ø" u2="Ă" k="120" /> + <hkern u1="Ø" u2="Ŵ" k="100" /> + <hkern u1="Ø" u2="Á" k="120" /> + <hkern u1="Ø" u2="À" k="120" /> + <hkern u1="Ø" u2="Ä" k="120" /> + <hkern u1="Ø" u2="Ỳ" k="80" /> + <hkern u1="Ø" u2="Ÿ" k="80" /> + <hkern u1="Ø" u2="Ŷ" k="80" /> + <hkern u1="Ø" u2="Ý" k="80" /> + <hkern u1="Ø" u2="Ẁ" k="100" /> + <hkern u1="Ø" u2="Ẅ" k="100" /> + <hkern u1="Ø" u2="Ẃ" k="100" /> + <hkern u1="Ø" u2="Ș" k="62" /> + <hkern u1="Ø" u2="Ŝ" k="62" /> + <hkern u1="Ø" u2="Ş" k="62" /> + <hkern u1="Ø" u2="Š" k="62" /> + <hkern u1="Ø" u2="Ã" k="120" /> + <hkern u1="Ø" u2="Å" k="120" /> + <hkern u1="Ø" u2="Ą" k="120" /> + <hkern u1="Ø" u2="Ā" k="120" /> + <hkern u1="Ø" u2="Ţ" k="80" /> + <hkern u1="Ø" u2="Ś" k="62" /> + <hkern u1="Ø" u2="Y" k="80" /> + <hkern u1="Ø" u2="X" k="84" /> + <hkern u1="Ø" u2="W" k="100" /> + <hkern u1="Ø" u2="V" k="100" /> + <hkern u1="Ø" u2="A" k="120" /> + <hkern u1="Ø" u2="T" k="80" /> + <hkern u1="Ø" u2="S" k="62" /> + <hkern u1="Ö" u2="Â" k="120" /> + <hkern u1="Ö" u2="Ă" k="120" /> + <hkern u1="Ö" u2="Ŵ" k="100" /> + <hkern u1="Ö" u2="Á" k="120" /> + <hkern u1="Ö" u2="À" k="120" /> + <hkern u1="Ö" u2="Ä" k="120" /> + <hkern u1="Ö" u2="Ỳ" k="80" /> + <hkern u1="Ö" u2="Ÿ" k="80" /> + <hkern u1="Ö" u2="Ŷ" k="80" /> + <hkern u1="Ö" u2="Ý" k="80" /> + <hkern u1="Ö" u2="Ẁ" k="100" /> + <hkern u1="Ö" u2="Ẅ" k="100" /> + <hkern u1="Ö" u2="Ẃ" k="100" /> + <hkern u1="Ö" u2="Ș" k="62" /> + <hkern u1="Ö" u2="Ŝ" k="62" /> + <hkern u1="Ö" u2="Ş" k="62" /> + <hkern u1="Ö" u2="Š" k="62" /> + <hkern u1="Ö" u2="Ã" k="120" /> + <hkern u1="Ö" u2="Å" k="120" /> + <hkern u1="Ö" u2="Ą" k="120" /> + <hkern u1="Ö" u2="Ā" k="120" /> + <hkern u1="Ö" u2="Ţ" k="80" /> + <hkern u1="Ö" u2="Ś" k="62" /> + <hkern u1="Ö" u2="Y" k="80" /> + <hkern u1="Ö" u2="X" k="84" /> + <hkern u1="Ö" u2="W" k="100" /> + <hkern u1="Ö" u2="V" k="100" /> + <hkern u1="Ö" u2="A" k="120" /> + <hkern u1="Ö" u2="T" k="80" /> + <hkern u1="Ö" u2="S" k="62" /> + <hkern u1="Ä" u2="ý" k="125" /> + <hkern u1="Ä" u2="ÿ" k="125" /> + <hkern u1="Ä" u2="ỳ" k="125" /> + <hkern u1="Ä" u2="Ŵ" k="208" /> + <hkern u1="Ä" u2="Č" k="120" /> + <hkern u1="Ä" u2="Ć" k="120" /> + <hkern u1="Ä" u2="Ĝ" k="120" /> + <hkern u1="Ä" u2="Ğ" k="120" /> + <hkern u1="Ä" u2="Ċ" k="120" /> + <hkern u1="Ä" u2="Ĉ" k="120" /> + <hkern u1="Ä" u2="Ç" k="120" /> + <hkern u1="Ä" u2="Ö" k="120" /> + <hkern u1="Ä" u2="Ø" k="120" /> + <hkern u1="Ä" u2="C" k="120" /> + <hkern u1="Ä" u2="Ỳ" k="250" /> + <hkern u1="Ä" u2="Ÿ" k="250" /> + <hkern u1="Ä" u2="Ŷ" k="250" /> + <hkern u1="Ä" u2="Ý" k="250" /> + <hkern u1="Ä" u2="Ẁ" k="208" /> + <hkern u1="Ä" u2="Ẅ" k="208" /> + <hkern u1="Ä" u2="Ẃ" k="208" /> + <hkern u1="Ä" u2="Ș" k="60" /> + <hkern u1="Ä" u2="Ŝ" k="60" /> + <hkern u1="Ä" u2="Ş" k="60" /> + <hkern u1="Ä" u2="Š" k="60" /> + <hkern u1="Ä" u2="Õ" k="120" /> + <hkern u1="Ä" u2="Ǿ" k="120" /> + <hkern u1="Ä" u2="Ō" k="120" /> + <hkern u1="Ä" u2="Ő" k="120" /> + <hkern u1="Ä" u2="Ò" k="120" /> + <hkern u1="Ä" u2="Ô" k="120" /> + <hkern u1="Ä" u2="Ŏ" k="120" /> + <hkern u1="Ä" u2="Ģ" k="120" /> + <hkern u1="Ä" u2="Ó" k="120" /> + <hkern u1="Ä" u2="Ţ" k="250" /> + <hkern u1="Ä" u2="ẅ" k="125" /> + <hkern u1="Ä" u2="ŵ" k="125" /> + <hkern u1="Ä" u2="Ś" k="60" /> + <hkern u1="Ä" u2="0" k="120" /> + <hkern u1="Ä" u2="Œ" k="120" /> + <hkern u1="Ä" u2="Ġ" k="120" /> + <hkern u1="Ä" u2="ẁ" k="125" /> + <hkern u1="Ä" u2="ẃ" k="125" /> + <hkern u1="Ä" u2="y" k="125" /> + <hkern u1="Ä" u2="w" k="125" /> + <hkern u1="Ä" u2="v" k="125" /> + <hkern u1="Ä" u2="Q" k="120" /> + <hkern u1="Ä" u2="O" k="120" /> + <hkern u1="Ä" u2="G" k="120" /> + <hkern u1="Ä" u2="®" k="120" /> + <hkern u1="Ä" u2="©" k="120" /> + <hkern u1="Ä" u2="Y" k="250" /> + <hkern u1="Ä" u2="W" k="208" /> + <hkern u1="Ä" u2="V" k="208" /> + <hkern u1="Ä" u2="T" k="250" /> + <hkern u1="Ä" u2="S" k="60" /> + <hkern u1="À" u2="ý" k="125" /> + <hkern u1="À" u2="ÿ" k="125" /> + <hkern u1="À" u2="ỳ" k="125" /> + <hkern u1="À" u2="Ŵ" k="208" /> + <hkern u1="À" u2="Č" k="120" /> + <hkern u1="À" u2="Ć" k="120" /> + <hkern u1="À" u2="Ĝ" k="120" /> + <hkern u1="À" u2="Ğ" k="120" /> + <hkern u1="À" u2="Ċ" k="120" /> + <hkern u1="À" u2="Ĉ" k="120" /> + <hkern u1="À" u2="Ç" k="120" /> + <hkern u1="À" u2="Ö" k="120" /> + <hkern u1="À" u2="Ø" k="120" /> + <hkern u1="À" u2="C" k="120" /> + <hkern u1="À" u2="Ỳ" k="250" /> + <hkern u1="À" u2="Ÿ" k="250" /> + <hkern u1="À" u2="Ŷ" k="250" /> + <hkern u1="À" u2="Ý" k="250" /> + <hkern u1="À" u2="Ẁ" k="208" /> + <hkern u1="À" u2="Ẅ" k="208" /> + <hkern u1="À" u2="Ẃ" k="208" /> + <hkern u1="À" u2="Ș" k="60" /> + <hkern u1="À" u2="Ŝ" k="60" /> + <hkern u1="À" u2="Ş" k="60" /> + <hkern u1="À" u2="Š" k="60" /> + <hkern u1="À" u2="Õ" k="120" /> + <hkern u1="À" u2="Ǿ" k="120" /> + <hkern u1="À" u2="Ō" k="120" /> + <hkern u1="À" u2="Ő" k="120" /> + <hkern u1="À" u2="Ò" k="120" /> + <hkern u1="À" u2="Ô" k="120" /> + <hkern u1="À" u2="Ŏ" k="120" /> + <hkern u1="À" u2="Ģ" k="120" /> + <hkern u1="À" u2="Ó" k="120" /> + <hkern u1="À" u2="Ţ" k="250" /> + <hkern u1="À" u2="ẅ" k="125" /> + <hkern u1="À" u2="ŵ" k="125" /> + <hkern u1="À" u2="Ś" k="60" /> + <hkern u1="À" u2="0" k="120" /> + <hkern u1="À" u2="Œ" k="120" /> + <hkern u1="À" u2="Ġ" k="120" /> + <hkern u1="À" u2="ẁ" k="125" /> + <hkern u1="À" u2="ẃ" k="125" /> + <hkern u1="À" u2="y" k="125" /> + <hkern u1="À" u2="w" k="125" /> + <hkern u1="À" u2="v" k="125" /> + <hkern u1="À" u2="Q" k="120" /> + <hkern u1="À" u2="O" k="120" /> + <hkern u1="À" u2="G" k="120" /> + <hkern u1="À" u2="®" k="120" /> + <hkern u1="À" u2="©" k="120" /> + <hkern u1="À" u2="Y" k="250" /> + <hkern u1="À" u2="W" k="208" /> + <hkern u1="À" u2="V" k="208" /> + <hkern u1="À" u2="T" k="250" /> + <hkern u1="À" u2="S" k="60" /> + <hkern u1="ć" u2="œ" k="42" /> + <hkern u1="ć" u2="ō" k="42" /> + <hkern u1="ć" u2="ő" k="42" /> + <hkern u1="ć" u2="ò" k="42" /> + <hkern u1="ć" u2="ö" k="42" /> + <hkern u1="ć" u2="ŏ" k="42" /> + <hkern u1="ć" u2="ô" k="42" /> + <hkern u1="ć" u2="ó" k="42" /> + <hkern u1="ć" u2="ġ" k="42" /> + <hkern u1="ć" u2="ģ" k="42" /> + <hkern u1="ć" u2="ĝ" k="42" /> + <hkern u1="ć" u2="ğ" k="42" /> + <hkern u1="ć" u2="ǽ" k="42" /> + <hkern u1="ć" u2="æ" k="42" /> + <hkern u1="ć" u2="õ" k="42" /> + <hkern u1="ć" u2="ę" k="42" /> + <hkern u1="ć" u2="ē" k="42" /> + <hkern u1="ć" u2="è" k="42" /> + <hkern u1="ć" u2="ė" k="42" /> + <hkern u1="ć" u2="ë" k="42" /> + <hkern u1="ć" u2="ê" k="42" /> + <hkern u1="ć" u2="ě" k="42" /> + <hkern u1="ć" u2="ĕ" k="42" /> + <hkern u1="ć" u2="é" k="42" /> + <hkern u1="ć" u2="đ" k="42" /> + <hkern u1="ć" u2="ď" k="42" /> + <hkern u1="ć" u2="ċ" k="42" /> + <hkern u1="ć" u2="ĉ" k="42" /> + <hkern u1="ć" u2="ç" k="42" /> + <hkern u1="ć" u2="č" k="42" /> + <hkern u1="ć" u2="ć" k="42" /> + <hkern u1="ć" u2="ã" k="42" /> + <hkern u1="ć" u2="å" k="42" /> + <hkern u1="ć" u2="ą" k="42" /> + <hkern u1="ć" u2="ā" k="42" /> + <hkern u1="ć" u2="à" k="42" /> + <hkern u1="ć" u2="ä" k="42" /> + <hkern u1="ć" u2="â" k="42" /> + <hkern u1="ć" u2="ă" k="42" /> + <hkern u1="ć" u2="á" k="42" /> + <hkern u1="ć" u2="c" k="42" /> + <hkern u1="ć" u2="q" k="42" /> + <hkern u1="ć" u2="o" k="42" /> + <hkern u1="ć" u2="g" k="42" /> + <hkern u1="ć" u2="e" k="42" /> + <hkern u1="ć" u2="d" k="42" /> + <hkern u1="ć" u2="a" k="42" /> + <hkern u1="č" u2="œ" k="42" /> + <hkern u1="č" u2="ō" k="42" /> + <hkern u1="č" u2="ő" k="42" /> + <hkern u1="č" u2="ò" k="42" /> + <hkern u1="č" u2="ö" k="42" /> + <hkern u1="č" u2="ŏ" k="42" /> + <hkern u1="č" u2="ô" k="42" /> + <hkern u1="č" u2="ó" k="42" /> + <hkern u1="č" u2="ġ" k="42" /> + <hkern u1="č" u2="ģ" k="42" /> + <hkern u1="č" u2="ĝ" k="42" /> + <hkern u1="č" u2="ğ" k="42" /> + <hkern u1="č" u2="ǽ" k="42" /> + <hkern u1="č" u2="æ" k="42" /> + <hkern u1="č" u2="õ" k="42" /> + <hkern u1="č" u2="ę" k="42" /> + <hkern u1="č" u2="ē" k="42" /> + <hkern u1="č" u2="è" k="42" /> + <hkern u1="č" u2="ė" k="42" /> + <hkern u1="č" u2="ë" k="42" /> + <hkern u1="č" u2="ê" k="42" /> + <hkern u1="č" u2="ě" k="42" /> + <hkern u1="č" u2="ĕ" k="42" /> + <hkern u1="č" u2="é" k="42" /> + <hkern u1="č" u2="đ" k="42" /> + <hkern u1="č" u2="ď" k="42" /> + <hkern u1="č" u2="ċ" k="42" /> + <hkern u1="č" u2="ĉ" k="42" /> + <hkern u1="č" u2="ç" k="42" /> + <hkern u1="č" u2="č" k="42" /> + <hkern u1="č" u2="ć" k="42" /> + <hkern u1="č" u2="ã" k="42" /> + <hkern u1="č" u2="å" k="42" /> + <hkern u1="č" u2="ą" k="42" /> + <hkern u1="č" u2="ā" k="42" /> + <hkern u1="č" u2="à" k="42" /> + <hkern u1="č" u2="ä" k="42" /> + <hkern u1="č" u2="â" k="42" /> + <hkern u1="č" u2="ă" k="42" /> + <hkern u1="č" u2="á" k="42" /> + <hkern u1="č" u2="c" k="42" /> + <hkern u1="č" u2="q" k="42" /> + <hkern u1="č" u2="o" k="42" /> + <hkern u1="č" u2="g" k="42" /> + <hkern u1="č" u2="e" k="42" /> + <hkern u1="č" u2="d" k="42" /> + <hkern u1="č" u2="a" k="42" /> + <hkern u1="ç" u2="œ" k="42" /> + <hkern u1="ç" u2="ō" k="42" /> + <hkern u1="ç" u2="ő" k="42" /> + <hkern u1="ç" u2="ò" k="42" /> + <hkern u1="ç" u2="ö" k="42" /> + <hkern u1="ç" u2="ŏ" k="42" /> + <hkern u1="ç" u2="ô" k="42" /> + <hkern u1="ç" u2="ó" k="42" /> + <hkern u1="ç" u2="ġ" k="42" /> + <hkern u1="ç" u2="ģ" k="42" /> + <hkern u1="ç" u2="ĝ" k="42" /> + <hkern u1="ç" u2="ğ" k="42" /> + <hkern u1="ç" u2="ǽ" k="42" /> + <hkern u1="ç" u2="æ" k="42" /> + <hkern u1="ç" u2="õ" k="42" /> + <hkern u1="ç" u2="ę" k="42" /> + <hkern u1="ç" u2="ē" k="42" /> + <hkern u1="ç" u2="è" k="42" /> + <hkern u1="ç" u2="ė" k="42" /> + <hkern u1="ç" u2="ë" k="42" /> + <hkern u1="ç" u2="ê" k="42" /> + <hkern u1="ç" u2="ě" k="42" /> + <hkern u1="ç" u2="ĕ" k="42" /> + <hkern u1="ç" u2="é" k="42" /> + <hkern u1="ç" u2="đ" k="42" /> + <hkern u1="ç" u2="ď" k="42" /> + <hkern u1="ç" u2="ċ" k="42" /> + <hkern u1="ç" u2="ĉ" k="42" /> + <hkern u1="ç" u2="ç" k="42" /> + <hkern u1="ç" u2="č" k="42" /> + <hkern u1="ç" u2="ć" k="42" /> + <hkern u1="ç" u2="ã" k="42" /> + <hkern u1="ç" u2="å" k="42" /> + <hkern u1="ç" u2="ą" k="42" /> + <hkern u1="ç" u2="ā" k="42" /> + <hkern u1="ç" u2="à" k="42" /> + <hkern u1="ç" u2="ä" k="42" /> + <hkern u1="ç" u2="â" k="42" /> + <hkern u1="ç" u2="ă" k="42" /> + <hkern u1="ç" u2="á" k="42" /> + <hkern u1="ç" u2="c" k="42" /> + <hkern u1="ç" u2="q" k="42" /> + <hkern u1="ç" u2="o" k="42" /> + <hkern u1="ç" u2="g" k="42" /> + <hkern u1="ç" u2="e" k="42" /> + <hkern u1="ç" u2="d" k="42" /> + <hkern u1="ç" u2="a" k="42" /> + <hkern u1="ĉ" u2="œ" k="42" /> + <hkern u1="ĉ" u2="ō" k="42" /> + <hkern u1="ĉ" u2="ő" k="42" /> + <hkern u1="ĉ" u2="ò" k="42" /> + <hkern u1="ĉ" u2="ö" k="42" /> + <hkern u1="ĉ" u2="ŏ" k="42" /> + <hkern u1="ĉ" u2="ô" k="42" /> + <hkern u1="ĉ" u2="ó" k="42" /> + <hkern u1="ĉ" u2="ġ" k="42" /> + <hkern u1="ĉ" u2="ģ" k="42" /> + <hkern u1="ĉ" u2="ĝ" k="42" /> + <hkern u1="ĉ" u2="ğ" k="42" /> + <hkern u1="ĉ" u2="ǽ" k="42" /> + <hkern u1="ĉ" u2="æ" k="42" /> + <hkern u1="ĉ" u2="õ" k="42" /> + <hkern u1="ĉ" u2="ę" k="42" /> + <hkern u1="ĉ" u2="ē" k="42" /> + <hkern u1="ĉ" u2="è" k="42" /> + <hkern u1="ĉ" u2="ė" k="42" /> + <hkern u1="ĉ" u2="ë" k="42" /> + <hkern u1="ĉ" u2="ê" k="42" /> + <hkern u1="ĉ" u2="ě" k="42" /> + <hkern u1="ĉ" u2="ĕ" k="42" /> + <hkern u1="ĉ" u2="é" k="42" /> + <hkern u1="ĉ" u2="đ" k="42" /> + <hkern u1="ĉ" u2="ď" k="42" /> + <hkern u1="ĉ" u2="ċ" k="42" /> + <hkern u1="ĉ" u2="ĉ" k="42" /> + <hkern u1="ĉ" u2="ç" k="42" /> + <hkern u1="ĉ" u2="č" k="42" /> + <hkern u1="ĉ" u2="ć" k="42" /> + <hkern u1="ĉ" u2="ã" k="42" /> + <hkern u1="ĉ" u2="å" k="42" /> + <hkern u1="ĉ" u2="ą" k="42" /> + <hkern u1="ĉ" u2="ā" k="42" /> + <hkern u1="ĉ" u2="à" k="42" /> + <hkern u1="ĉ" u2="ä" k="42" /> + <hkern u1="ĉ" u2="â" k="42" /> + <hkern u1="ĉ" u2="ă" k="42" /> + <hkern u1="ĉ" u2="á" k="42" /> + <hkern u1="ĉ" u2="c" k="42" /> + <hkern u1="ĉ" u2="q" k="42" /> + <hkern u1="ĉ" u2="o" k="42" /> + <hkern u1="ĉ" u2="g" k="42" /> + <hkern u1="ĉ" u2="e" k="42" /> + <hkern u1="ĉ" u2="d" k="42" /> + <hkern u1="ĉ" u2="a" k="42" /> + <hkern u1="ċ" u2="œ" k="42" /> + <hkern u1="ċ" u2="ō" k="42" /> + <hkern u1="ċ" u2="ő" k="42" /> + <hkern u1="ċ" u2="ò" k="42" /> + <hkern u1="ċ" u2="ö" k="42" /> + <hkern u1="ċ" u2="ŏ" k="42" /> + <hkern u1="ċ" u2="ô" k="42" /> + <hkern u1="ċ" u2="ó" k="42" /> + <hkern u1="ċ" u2="ġ" k="42" /> + <hkern u1="ċ" u2="ģ" k="42" /> + <hkern u1="ċ" u2="ĝ" k="42" /> + <hkern u1="ċ" u2="ğ" k="42" /> + <hkern u1="ċ" u2="ǽ" k="42" /> + <hkern u1="ċ" u2="æ" k="42" /> + <hkern u1="ċ" u2="õ" k="42" /> + <hkern u1="ċ" u2="ę" k="42" /> + <hkern u1="ċ" u2="ē" k="42" /> + <hkern u1="ċ" u2="è" k="42" /> + <hkern u1="ċ" u2="ė" k="42" /> + <hkern u1="ċ" u2="ë" k="42" /> + <hkern u1="ċ" u2="ê" k="42" /> + <hkern u1="ċ" u2="ě" k="42" /> + <hkern u1="ċ" u2="ĕ" k="42" /> + <hkern u1="ċ" u2="é" k="42" /> + <hkern u1="ċ" u2="đ" k="42" /> + <hkern u1="ċ" u2="ď" k="42" /> + <hkern u1="ċ" u2="ċ" k="42" /> + <hkern u1="ċ" u2="ĉ" k="42" /> + <hkern u1="ċ" u2="ç" k="42" /> + <hkern u1="ċ" u2="č" k="42" /> + <hkern u1="ċ" u2="ć" k="42" /> + <hkern u1="ċ" u2="ã" k="42" /> + <hkern u1="ċ" u2="å" k="42" /> + <hkern u1="ċ" u2="ą" k="42" /> + <hkern u1="ċ" u2="ā" k="42" /> + <hkern u1="ċ" u2="à" k="42" /> + <hkern u1="ċ" u2="ä" k="42" /> + <hkern u1="ċ" u2="â" k="42" /> + <hkern u1="ċ" u2="ă" k="42" /> + <hkern u1="ċ" u2="á" k="42" /> + <hkern u1="ċ" u2="c" k="42" /> + <hkern u1="ċ" u2="q" k="42" /> + <hkern u1="ċ" u2="o" k="42" /> + <hkern u1="ċ" u2="g" k="42" /> + <hkern u1="ċ" u2="e" k="42" /> + <hkern u1="ċ" u2="d" k="42" /> + <hkern u1="ċ" u2="a" k="42" /> + <hkern u1="é" u2="ý" k="70" /> + <hkern u1="é" u2="ÿ" k="70" /> + <hkern u1="é" u2="ỳ" k="70" /> + <hkern u1="é" u2="Ŵ" k="146" /> + <hkern u1="é" u2="Ỳ" k="167" /> + <hkern u1="é" u2="Ÿ" k="167" /> + <hkern u1="é" u2="Ŷ" k="167" /> + <hkern u1="é" u2="Ý" k="167" /> + <hkern u1="é" u2="Ẁ" k="146" /> + <hkern u1="é" u2="Ẅ" k="146" /> + <hkern u1="é" u2="Ẃ" k="146" /> + <hkern u1="é" u2="Ţ" k="167" /> + <hkern u1="é" u2="ẅ" k="70" /> + <hkern u1="é" u2="ŵ" k="70" /> + <hkern u1="é" u2="ẁ" k="70" /> + <hkern u1="é" u2="ẃ" k="70" /> + <hkern u1="é" u2="y" k="70" /> + <hkern u1="é" u2="x" k="110" /> + <hkern u1="é" u2="w" k="70" /> + <hkern u1="é" u2="v" k="70" /> + <hkern u1="é" u2="Y" k="167" /> + <hkern u1="é" u2="W" k="146" /> + <hkern u1="é" u2="V" k="146" /> + <hkern u1="é" u2="T" k="167" /> + <hkern u1="ĕ" u2="ý" k="70" /> + <hkern u1="ĕ" u2="ÿ" k="70" /> + <hkern u1="ĕ" u2="ỳ" k="70" /> + <hkern u1="ĕ" u2="Ŵ" k="146" /> + <hkern u1="ĕ" u2="Ỳ" k="167" /> + <hkern u1="ĕ" u2="Ÿ" k="167" /> + <hkern u1="ĕ" u2="Ŷ" k="167" /> + <hkern u1="ĕ" u2="Ý" k="167" /> + <hkern u1="ĕ" u2="Ẁ" k="146" /> + <hkern u1="ĕ" u2="Ẅ" k="146" /> + <hkern u1="ĕ" u2="Ẃ" k="146" /> + <hkern u1="ĕ" u2="Ţ" k="167" /> + <hkern u1="ĕ" u2="ẅ" k="70" /> + <hkern u1="ĕ" u2="ŵ" k="70" /> + <hkern u1="ĕ" u2="ẁ" k="70" /> + <hkern u1="ĕ" u2="ẃ" k="70" /> + <hkern u1="ĕ" u2="y" k="70" /> + <hkern u1="ĕ" u2="x" k="110" /> + <hkern u1="ĕ" u2="w" k="70" /> + <hkern u1="ĕ" u2="v" k="70" /> + <hkern u1="ĕ" u2="Y" k="167" /> + <hkern u1="ĕ" u2="W" k="146" /> + <hkern u1="ĕ" u2="V" k="146" /> + <hkern u1="ĕ" u2="T" k="167" /> + <hkern u1="ě" u2="ý" k="70" /> + <hkern u1="ě" u2="ÿ" k="70" /> + <hkern u1="ě" u2="ỳ" k="70" /> + <hkern u1="ě" u2="Ŵ" k="146" /> + <hkern u1="ě" u2="Ỳ" k="167" /> + <hkern u1="ě" u2="Ÿ" k="167" /> + <hkern u1="ě" u2="Ŷ" k="167" /> + <hkern u1="ě" u2="Ý" k="167" /> + <hkern u1="ě" u2="Ẁ" k="146" /> + <hkern u1="ě" u2="Ẅ" k="146" /> + <hkern u1="ě" u2="Ẃ" k="146" /> + <hkern u1="ě" u2="Ţ" k="167" /> + <hkern u1="ě" u2="ẅ" k="70" /> + <hkern u1="ě" u2="ŵ" k="70" /> + <hkern u1="ě" u2="ẁ" k="70" /> + <hkern u1="ě" u2="ẃ" k="70" /> + <hkern u1="ě" u2="y" k="70" /> + <hkern u1="ě" u2="x" k="110" /> + <hkern u1="ě" u2="w" k="70" /> + <hkern u1="ě" u2="v" k="70" /> + <hkern u1="ě" u2="Y" k="167" /> + <hkern u1="ě" u2="W" k="146" /> + <hkern u1="ě" u2="V" k="146" /> + <hkern u1="ě" u2="T" k="167" /> + <hkern u1="ê" u2="ý" k="70" /> + <hkern u1="ê" u2="ÿ" k="70" /> + <hkern u1="ê" u2="ỳ" k="70" /> + <hkern u1="ê" u2="Ŵ" k="146" /> + <hkern u1="ê" u2="Ỳ" k="167" /> + <hkern u1="ê" u2="Ÿ" k="167" /> + <hkern u1="ê" u2="Ŷ" k="167" /> + <hkern u1="ê" u2="Ý" k="167" /> + <hkern u1="ê" u2="Ẁ" k="146" /> + <hkern u1="ê" u2="Ẅ" k="146" /> + <hkern u1="ê" u2="Ẃ" k="146" /> + <hkern u1="ê" u2="Ţ" k="167" /> + <hkern u1="ê" u2="ẅ" k="70" /> + <hkern u1="ê" u2="ŵ" k="70" /> + <hkern u1="ê" u2="ẁ" k="70" /> + <hkern u1="ê" u2="ẃ" k="70" /> + <hkern u1="ê" u2="y" k="70" /> + <hkern u1="ê" u2="x" k="110" /> + <hkern u1="ê" u2="w" k="70" /> + <hkern u1="ê" u2="v" k="70" /> + <hkern u1="ê" u2="Y" k="167" /> + <hkern u1="ê" u2="W" k="146" /> + <hkern u1="ê" u2="V" k="146" /> + <hkern u1="ê" u2="T" k="167" /> + <hkern u1="ë" u2="ý" k="70" /> + <hkern u1="ë" u2="ÿ" k="70" /> + <hkern u1="ë" u2="ỳ" k="70" /> + <hkern u1="ë" u2="Ŵ" k="146" /> + <hkern u1="ë" u2="Ỳ" k="167" /> + <hkern u1="ë" u2="Ÿ" k="167" /> + <hkern u1="ë" u2="Ŷ" k="167" /> + <hkern u1="ë" u2="Ý" k="167" /> + <hkern u1="ë" u2="Ẁ" k="146" /> + <hkern u1="ë" u2="Ẅ" k="146" /> + <hkern u1="ë" u2="Ẃ" k="146" /> + <hkern u1="ë" u2="Ţ" k="167" /> + <hkern u1="ë" u2="ẅ" k="70" /> + <hkern u1="ë" u2="ŵ" k="70" /> + <hkern u1="ë" u2="ẁ" k="70" /> + <hkern u1="ë" u2="ẃ" k="70" /> + <hkern u1="ë" u2="y" k="70" /> + <hkern u1="ë" u2="x" k="110" /> + <hkern u1="ë" u2="w" k="70" /> + <hkern u1="ë" u2="v" k="70" /> + <hkern u1="ë" u2="Y" k="167" /> + <hkern u1="ë" u2="W" k="146" /> + <hkern u1="ë" u2="V" k="146" /> + <hkern u1="ë" u2="T" k="167" /> + <hkern u1="ė" u2="ý" k="70" /> + <hkern u1="ė" u2="ÿ" k="70" /> + <hkern u1="ė" u2="ỳ" k="70" /> + <hkern u1="ė" u2="Ŵ" k="146" /> + <hkern u1="ė" u2="Ỳ" k="167" /> + <hkern u1="ė" u2="Ÿ" k="167" /> + <hkern u1="ė" u2="Ŷ" k="167" /> + <hkern u1="ė" u2="Ý" k="167" /> + <hkern u1="ė" u2="Ẁ" k="146" /> + <hkern u1="ė" u2="Ẅ" k="146" /> + <hkern u1="ė" u2="Ẃ" k="146" /> + <hkern u1="ė" u2="Ţ" k="167" /> + <hkern u1="ė" u2="ẅ" k="70" /> + <hkern u1="ė" u2="ŵ" k="70" /> + <hkern u1="ė" u2="ẁ" k="70" /> + <hkern u1="ė" u2="ẃ" k="70" /> + <hkern u1="ė" u2="y" k="70" /> + <hkern u1="ė" u2="x" k="110" /> + <hkern u1="ė" u2="w" k="70" /> + <hkern u1="ė" u2="v" k="70" /> + <hkern u1="ė" u2="Y" k="167" /> + <hkern u1="ė" u2="W" k="146" /> + <hkern u1="ė" u2="V" k="146" /> + <hkern u1="ė" u2="T" k="167" /> + <hkern u1="è" u2="ý" k="70" /> + <hkern u1="è" u2="ÿ" k="70" /> + <hkern u1="è" u2="ỳ" k="70" /> + <hkern u1="è" u2="Ŵ" k="146" /> + <hkern u1="è" u2="Ỳ" k="167" /> + <hkern u1="è" u2="Ÿ" k="167" /> + <hkern u1="è" u2="Ŷ" k="167" /> + <hkern u1="è" u2="Ý" k="167" /> + <hkern u1="è" u2="Ẁ" k="146" /> + <hkern u1="è" u2="Ẅ" k="146" /> + <hkern u1="è" u2="Ẃ" k="146" /> + <hkern u1="è" u2="Ţ" k="167" /> + <hkern u1="è" u2="ẅ" k="70" /> + <hkern u1="è" u2="ŵ" k="70" /> + <hkern u1="è" u2="ẁ" k="70" /> + <hkern u1="è" u2="ẃ" k="70" /> + <hkern u1="è" u2="y" k="70" /> + <hkern u1="è" u2="x" k="110" /> + <hkern u1="è" u2="w" k="70" /> + <hkern u1="è" u2="v" k="70" /> + <hkern u1="è" u2="Y" k="167" /> + <hkern u1="è" u2="W" k="146" /> + <hkern u1="è" u2="V" k="146" /> + <hkern u1="è" u2="T" k="167" /> + <hkern u1="ē" u2="ý" k="70" /> + <hkern u1="ē" u2="ÿ" k="70" /> + <hkern u1="ē" u2="ỳ" k="70" /> + <hkern u1="ē" u2="Ŵ" k="146" /> + <hkern u1="ē" u2="Ỳ" k="167" /> + <hkern u1="ē" u2="Ÿ" k="167" /> + <hkern u1="ē" u2="Ŷ" k="167" /> + <hkern u1="ē" u2="Ý" k="167" /> + <hkern u1="ē" u2="Ẁ" k="146" /> + <hkern u1="ē" u2="Ẅ" k="146" /> + <hkern u1="ē" u2="Ẃ" k="146" /> + <hkern u1="ē" u2="Ţ" k="167" /> + <hkern u1="ē" u2="ẅ" k="70" /> + <hkern u1="ē" u2="ŵ" k="70" /> + <hkern u1="ē" u2="ẁ" k="70" /> + <hkern u1="ē" u2="ẃ" k="70" /> + <hkern u1="ē" u2="y" k="70" /> + <hkern u1="ē" u2="x" k="110" /> + <hkern u1="ē" u2="w" k="70" /> + <hkern u1="ē" u2="v" k="70" /> + <hkern u1="ē" u2="Y" k="167" /> + <hkern u1="ē" u2="W" k="146" /> + <hkern u1="ē" u2="V" k="146" /> + <hkern u1="ē" u2="T" k="167" /> + <hkern u1="ę" u2="ý" k="70" /> + <hkern u1="ę" u2="ÿ" k="70" /> + <hkern u1="ę" u2="ỳ" k="70" /> + <hkern u1="ę" u2="Ŵ" k="146" /> + <hkern u1="ę" u2="Ỳ" k="167" /> + <hkern u1="ę" u2="Ÿ" k="167" /> + <hkern u1="ę" u2="Ŷ" k="167" /> + <hkern u1="ę" u2="Ý" k="167" /> + <hkern u1="ę" u2="Ẁ" k="146" /> + <hkern u1="ę" u2="Ẅ" k="146" /> + <hkern u1="ę" u2="Ẃ" k="146" /> + <hkern u1="ę" u2="Ţ" k="167" /> + <hkern u1="ę" u2="ẅ" k="70" /> + <hkern u1="ę" u2="ŵ" k="70" /> + <hkern u1="ę" u2="ẁ" k="70" /> + <hkern u1="ę" u2="ẃ" k="70" /> + <hkern u1="ę" u2="y" k="70" /> + <hkern u1="ę" u2="x" k="110" /> + <hkern u1="ę" u2="w" k="70" /> + <hkern u1="ę" u2="v" k="70" /> + <hkern u1="ę" u2="Y" k="167" /> + <hkern u1="ę" u2="W" k="146" /> + <hkern u1="ę" u2="V" k="146" /> + <hkern u1="ę" u2="T" k="167" /> + <hkern u1="õ" u2="ý" k="70" /> + <hkern u1="õ" u2="ÿ" k="70" /> + <hkern u1="õ" u2="ỳ" k="70" /> + <hkern u1="õ" u2="Ŵ" k="146" /> + <hkern u1="õ" u2="Ỳ" k="167" /> + <hkern u1="õ" u2="Ÿ" k="167" /> + <hkern u1="õ" u2="Ŷ" k="167" /> + <hkern u1="õ" u2="Ý" k="167" /> + <hkern u1="õ" u2="Ẁ" k="146" /> + <hkern u1="õ" u2="Ẅ" k="146" /> + <hkern u1="õ" u2="Ẃ" k="146" /> + <hkern u1="õ" u2="Ţ" k="167" /> + <hkern u1="õ" u2="ẅ" k="70" /> + <hkern u1="õ" u2="ŵ" k="70" /> + <hkern u1="õ" u2="ẁ" k="70" /> + <hkern u1="õ" u2="ẃ" k="70" /> + <hkern u1="õ" u2="y" k="70" /> + <hkern u1="õ" u2="x" k="110" /> + <hkern u1="õ" u2="w" k="70" /> + <hkern u1="õ" u2="v" k="70" /> + <hkern u1="õ" u2="Y" k="167" /> + <hkern u1="õ" u2="W" k="146" /> + <hkern u1="õ" u2="V" k="146" /> + <hkern u1="õ" u2="T" k="167" /> + <hkern u1="ż" u2="œ" k="41" /> + <hkern u1="ż" u2="ō" k="41" /> + <hkern u1="ż" u2="ő" k="41" /> + <hkern u1="ż" u2="ò" k="41" /> + <hkern u1="ż" u2="ö" k="41" /> + <hkern u1="ż" u2="ŏ" k="41" /> + <hkern u1="ż" u2="ô" k="41" /> + <hkern u1="ż" u2="ó" k="41" /> + <hkern u1="ż" u2="ġ" k="41" /> + <hkern u1="ż" u2="ģ" k="41" /> + <hkern u1="ż" u2="ĝ" k="41" /> + <hkern u1="ż" u2="ğ" k="41" /> + <hkern u1="ż" u2="ǽ" k="41" /> + <hkern u1="ż" u2="æ" k="41" /> + <hkern u1="ż" u2="õ" k="41" /> + <hkern u1="ż" u2="ę" k="41" /> + <hkern u1="ż" u2="ē" k="41" /> + <hkern u1="ż" u2="è" k="41" /> + <hkern u1="ż" u2="ė" k="41" /> + <hkern u1="ż" u2="ë" k="41" /> + <hkern u1="ż" u2="ê" k="41" /> + <hkern u1="ż" u2="ě" k="41" /> + <hkern u1="ż" u2="ĕ" k="41" /> + <hkern u1="ż" u2="é" k="41" /> + <hkern u1="ż" u2="đ" k="41" /> + <hkern u1="ż" u2="ď" k="41" /> + <hkern u1="ż" u2="ċ" k="41" /> + <hkern u1="ż" u2="ĉ" k="41" /> + <hkern u1="ż" u2="ç" k="41" /> + <hkern u1="ż" u2="č" k="41" /> + <hkern u1="ż" u2="ć" k="41" /> + <hkern u1="ż" u2="ã" k="41" /> + <hkern u1="ż" u2="å" k="41" /> + <hkern u1="ż" u2="ą" k="41" /> + <hkern u1="ż" u2="ā" k="41" /> + <hkern u1="ż" u2="à" k="41" /> + <hkern u1="ż" u2="ä" k="41" /> + <hkern u1="ż" u2="â" k="41" /> + <hkern u1="ż" u2="ă" k="41" /> + <hkern u1="ż" u2="á" k="41" /> + <hkern u1="ż" u2="c" k="41" /> + <hkern u1="ż" u2="q" k="41" /> + <hkern u1="ż" u2="o" k="41" /> + <hkern u1="ż" u2="g" k="41" /> + <hkern u1="ż" u2="e" k="41" /> + <hkern u1="ż" u2="d" k="41" /> + <hkern u1="ż" u2="a" k="41" /> + <hkern u1="ź" u2="œ" k="41" /> + <hkern u1="ź" u2="ō" k="41" /> + <hkern u1="ź" u2="ő" k="41" /> + <hkern u1="ź" u2="ò" k="41" /> + <hkern u1="ź" u2="ö" k="41" /> + <hkern u1="ź" u2="ŏ" k="41" /> + <hkern u1="ź" u2="ô" k="41" /> + <hkern u1="ź" u2="ó" k="41" /> + <hkern u1="ź" u2="ġ" k="41" /> + <hkern u1="ź" u2="ģ" k="41" /> + <hkern u1="ź" u2="ĝ" k="41" /> + <hkern u1="ź" u2="ğ" k="41" /> + <hkern u1="ź" u2="ǽ" k="41" /> + <hkern u1="ź" u2="æ" k="41" /> + <hkern u1="ź" u2="õ" k="41" /> + <hkern u1="ź" u2="ę" k="41" /> + <hkern u1="ź" u2="ē" k="41" /> + <hkern u1="ź" u2="è" k="41" /> + <hkern u1="ź" u2="ė" k="41" /> + <hkern u1="ź" u2="ë" k="41" /> + <hkern u1="ź" u2="ê" k="41" /> + <hkern u1="ź" u2="ě" k="41" /> + <hkern u1="ź" u2="ĕ" k="41" /> + <hkern u1="ź" u2="é" k="41" /> + <hkern u1="ź" u2="đ" k="41" /> + <hkern u1="ź" u2="ď" k="41" /> + <hkern u1="ź" u2="ċ" k="41" /> + <hkern u1="ź" u2="ĉ" k="41" /> + <hkern u1="ź" u2="ç" k="41" /> + <hkern u1="ź" u2="č" k="41" /> + <hkern u1="ź" u2="ć" k="41" /> + <hkern u1="ź" u2="ã" k="41" /> + <hkern u1="ź" u2="å" k="41" /> + <hkern u1="ź" u2="ą" k="41" /> + <hkern u1="ź" u2="ā" k="41" /> + <hkern u1="ź" u2="à" k="41" /> + <hkern u1="ź" u2="ä" k="41" /> + <hkern u1="ź" u2="â" k="41" /> + <hkern u1="ź" u2="ă" k="41" /> + <hkern u1="ź" u2="á" k="41" /> + <hkern u1="ź" u2="c" k="41" /> + <hkern u1="ź" u2="q" k="41" /> + <hkern u1="ź" u2="o" k="41" /> + <hkern u1="ź" u2="g" k="41" /> + <hkern u1="ź" u2="e" k="41" /> + <hkern u1="ź" u2="d" k="41" /> + <hkern u1="ź" u2="a" k="41" /> + <hkern u1="æ" u2="ý" k="70" /> + <hkern u1="æ" u2="ÿ" k="70" /> + <hkern u1="æ" u2="ỳ" k="70" /> + <hkern u1="æ" u2="Ŵ" k="146" /> + <hkern u1="æ" u2="Ỳ" k="167" /> + <hkern u1="æ" u2="Ÿ" k="167" /> + <hkern u1="æ" u2="Ŷ" k="167" /> + <hkern u1="æ" u2="Ý" k="167" /> + <hkern u1="æ" u2="Ẁ" k="146" /> + <hkern u1="æ" u2="Ẅ" k="146" /> + <hkern u1="æ" u2="Ẃ" k="146" /> + <hkern u1="æ" u2="Ţ" k="167" /> + <hkern u1="æ" u2="ẅ" k="70" /> + <hkern u1="æ" u2="ŵ" k="70" /> + <hkern u1="æ" u2="ẁ" k="70" /> + <hkern u1="æ" u2="ẃ" k="70" /> + <hkern u1="æ" u2="y" k="70" /> + <hkern u1="æ" u2="x" k="110" /> + <hkern u1="æ" u2="w" k="70" /> + <hkern u1="æ" u2="v" k="70" /> + <hkern u1="æ" u2="Y" k="167" /> + <hkern u1="æ" u2="W" k="146" /> + <hkern u1="æ" u2="V" k="146" /> + <hkern u1="æ" u2="T" k="167" /> + <hkern u1="ó" u2="ý" k="70" /> + <hkern u1="ó" u2="ÿ" k="70" /> + <hkern u1="ó" u2="ỳ" k="70" /> + <hkern u1="ó" u2="Ŵ" k="146" /> + <hkern u1="ó" u2="Ỳ" k="167" /> + <hkern u1="ó" u2="Ÿ" k="167" /> + <hkern u1="ó" u2="Ŷ" k="167" /> + <hkern u1="ó" u2="Ý" k="167" /> + <hkern u1="ó" u2="Ẁ" k="146" /> + <hkern u1="ó" u2="Ẅ" k="146" /> + <hkern u1="ó" u2="Ẃ" k="146" /> + <hkern u1="ó" u2="Ţ" k="167" /> + <hkern u1="ó" u2="ẅ" k="70" /> + <hkern u1="ó" u2="ŵ" k="70" /> + <hkern u1="ó" u2="ẁ" k="70" /> + <hkern u1="ó" u2="ẃ" k="70" /> + <hkern u1="ó" u2="y" k="70" /> + <hkern u1="ó" u2="x" k="110" /> + <hkern u1="ó" u2="w" k="70" /> + <hkern u1="ó" u2="v" k="70" /> + <hkern u1="ó" u2="Y" k="167" /> + <hkern u1="ó" u2="W" k="146" /> + <hkern u1="ó" u2="V" k="146" /> + <hkern u1="ó" u2="T" k="167" /> + <hkern u1="ô" u2="ý" k="70" /> + <hkern u1="ô" u2="ÿ" k="70" /> + <hkern u1="ô" u2="ỳ" k="70" /> + <hkern u1="ô" u2="Ŵ" k="146" /> + <hkern u1="ô" u2="Ỳ" k="167" /> + <hkern u1="ô" u2="Ÿ" k="167" /> + <hkern u1="ô" u2="Ŷ" k="167" /> + <hkern u1="ô" u2="Ý" k="167" /> + <hkern u1="ô" u2="Ẁ" k="146" /> + <hkern u1="ô" u2="Ẅ" k="146" /> + <hkern u1="ô" u2="Ẃ" k="146" /> + <hkern u1="ô" u2="Ţ" k="167" /> + <hkern u1="ô" u2="ẅ" k="70" /> + <hkern u1="ô" u2="ŵ" k="70" /> + <hkern u1="ô" u2="ẁ" k="70" /> + <hkern u1="ô" u2="ẃ" k="70" /> + <hkern u1="ô" u2="y" k="70" /> + <hkern u1="ô" u2="x" k="110" /> + <hkern u1="ô" u2="w" k="70" /> + <hkern u1="ô" u2="v" k="70" /> + <hkern u1="ô" u2="Y" k="167" /> + <hkern u1="ô" u2="W" k="146" /> + <hkern u1="ô" u2="V" k="146" /> + <hkern u1="ô" u2="T" k="167" /> + <hkern u1="ŏ" u2="ý" k="70" /> + <hkern u1="ŏ" u2="ÿ" k="70" /> + <hkern u1="ŏ" u2="ỳ" k="70" /> + <hkern u1="ŏ" u2="Ŵ" k="146" /> + <hkern u1="ŏ" u2="Ỳ" k="167" /> + <hkern u1="ŏ" u2="Ÿ" k="167" /> + <hkern u1="ŏ" u2="Ŷ" k="167" /> + <hkern u1="ŏ" u2="Ý" k="167" /> + <hkern u1="ŏ" u2="Ẁ" k="146" /> + <hkern u1="ŏ" u2="Ẅ" k="146" /> + <hkern u1="ŏ" u2="Ẃ" k="146" /> + <hkern u1="ŏ" u2="Ţ" k="167" /> + <hkern u1="ŏ" u2="ẅ" k="70" /> + <hkern u1="ŏ" u2="ŵ" k="70" /> + <hkern u1="ŏ" u2="ẁ" k="70" /> + <hkern u1="ŏ" u2="ẃ" k="70" /> + <hkern u1="ŏ" u2="y" k="70" /> + <hkern u1="ŏ" u2="x" k="110" /> + <hkern u1="ŏ" u2="w" k="70" /> + <hkern u1="ŏ" u2="v" k="70" /> + <hkern u1="ŏ" u2="Y" k="167" /> + <hkern u1="ŏ" u2="W" k="146" /> + <hkern u1="ŏ" u2="V" k="146" /> + <hkern u1="ŏ" u2="T" k="167" /> + <hkern u1="ö" u2="ý" k="70" /> + <hkern u1="ö" u2="ÿ" k="70" /> + <hkern u1="ö" u2="ỳ" k="70" /> + <hkern u1="ö" u2="Ŵ" k="146" /> + <hkern u1="ö" u2="Ỳ" k="167" /> + <hkern u1="ö" u2="Ÿ" k="167" /> + <hkern u1="ö" u2="Ŷ" k="167" /> + <hkern u1="ö" u2="Ý" k="167" /> + <hkern u1="ö" u2="Ẁ" k="146" /> + <hkern u1="ö" u2="Ẅ" k="146" /> + <hkern u1="ö" u2="Ẃ" k="146" /> + <hkern u1="ö" u2="Ţ" k="167" /> + <hkern u1="ö" u2="ẅ" k="70" /> + <hkern u1="ö" u2="ŵ" k="70" /> + <hkern u1="ö" u2="ẁ" k="70" /> + <hkern u1="ö" u2="ẃ" k="70" /> + <hkern u1="ö" u2="y" k="70" /> + <hkern u1="ö" u2="x" k="110" /> + <hkern u1="ö" u2="w" k="70" /> + <hkern u1="ö" u2="v" k="70" /> + <hkern u1="ö" u2="Y" k="167" /> + <hkern u1="ö" u2="W" k="146" /> + <hkern u1="ö" u2="V" k="146" /> + <hkern u1="ö" u2="T" k="167" /> + <hkern u1="ò" u2="ý" k="70" /> + <hkern u1="ò" u2="ÿ" k="70" /> + <hkern u1="ò" u2="ỳ" k="70" /> + <hkern u1="ò" u2="Ŵ" k="146" /> + <hkern u1="ò" u2="Ỳ" k="167" /> + <hkern u1="ò" u2="Ÿ" k="167" /> + <hkern u1="ò" u2="Ŷ" k="167" /> + <hkern u1="ò" u2="Ý" k="167" /> + <hkern u1="ò" u2="Ẁ" k="146" /> + <hkern u1="ò" u2="Ẅ" k="146" /> + <hkern u1="ò" u2="Ẃ" k="146" /> + <hkern u1="ò" u2="Ţ" k="167" /> + <hkern u1="ò" u2="ẅ" k="70" /> + <hkern u1="ò" u2="ŵ" k="70" /> + <hkern u1="ò" u2="ẁ" k="70" /> + <hkern u1="ò" u2="ẃ" k="70" /> + <hkern u1="ò" u2="y" k="70" /> + <hkern u1="ò" u2="x" k="110" /> + <hkern u1="ò" u2="w" k="70" /> + <hkern u1="ò" u2="v" k="70" /> + <hkern u1="ò" u2="Y" k="167" /> + <hkern u1="ò" u2="W" k="146" /> + <hkern u1="ò" u2="V" k="146" /> + <hkern u1="ò" u2="T" k="167" /> + <hkern u1="ő" u2="ý" k="70" /> + <hkern u1="ő" u2="ÿ" k="70" /> + <hkern u1="ő" u2="ỳ" k="70" /> + <hkern u1="ő" u2="Ŵ" k="146" /> + <hkern u1="ő" u2="Ỳ" k="167" /> + <hkern u1="ő" u2="Ÿ" k="167" /> + <hkern u1="ő" u2="Ŷ" k="167" /> + <hkern u1="ő" u2="Ý" k="167" /> + <hkern u1="ő" u2="Ẁ" k="146" /> + <hkern u1="ő" u2="Ẅ" k="146" /> + <hkern u1="ő" u2="Ẃ" k="146" /> + <hkern u1="ő" u2="Ţ" k="167" /> + <hkern u1="ő" u2="ẅ" k="70" /> + <hkern u1="ő" u2="ŵ" k="70" /> + <hkern u1="ő" u2="ẁ" k="70" /> + <hkern u1="ő" u2="ẃ" k="70" /> + <hkern u1="ő" u2="y" k="70" /> + <hkern u1="ő" u2="x" k="110" /> + <hkern u1="ő" u2="w" k="70" /> + <hkern u1="ő" u2="v" k="70" /> + <hkern u1="ő" u2="Y" k="167" /> + <hkern u1="ő" u2="W" k="146" /> + <hkern u1="ő" u2="V" k="146" /> + <hkern u1="ő" u2="T" k="167" /> + <hkern u1="ō" u2="ý" k="70" /> + <hkern u1="ō" u2="ÿ" k="70" /> + <hkern u1="ō" u2="ỳ" k="70" /> + <hkern u1="ō" u2="Ŵ" k="146" /> + <hkern u1="ō" u2="Ỳ" k="167" /> + <hkern u1="ō" u2="Ÿ" k="167" /> + <hkern u1="ō" u2="Ŷ" k="167" /> + <hkern u1="ō" u2="Ý" k="167" /> + <hkern u1="ō" u2="Ẁ" k="146" /> + <hkern u1="ō" u2="Ẅ" k="146" /> + <hkern u1="ō" u2="Ẃ" k="146" /> + <hkern u1="ō" u2="Ţ" k="167" /> + <hkern u1="ō" u2="ẅ" k="70" /> + <hkern u1="ō" u2="ŵ" k="70" /> + <hkern u1="ō" u2="ẁ" k="70" /> + <hkern u1="ō" u2="ẃ" k="70" /> + <hkern u1="ō" u2="y" k="70" /> + <hkern u1="ō" u2="x" k="110" /> + <hkern u1="ō" u2="w" k="70" /> + <hkern u1="ō" u2="v" k="70" /> + <hkern u1="ō" u2="Y" k="167" /> + <hkern u1="ō" u2="W" k="146" /> + <hkern u1="ō" u2="V" k="146" /> + <hkern u1="ō" u2="T" k="167" /> + <hkern u1="ŕ" u2="œ" k="97" /> + <hkern u1="ŕ" u2="ś" k="53" /> + <hkern u1="ŕ" u2="š" k="53" /> + <hkern u1="ŕ" u2="ō" k="97" /> + <hkern u1="ŕ" u2="ő" k="97" /> + <hkern u1="ŕ" u2="ò" k="97" /> + <hkern u1="ŕ" u2="ö" k="97" /> + <hkern u1="ŕ" u2="ŏ" k="97" /> + <hkern u1="ŕ" u2="ô" k="97" /> + <hkern u1="ŕ" u2="ó" k="97" /> + <hkern u1="ŕ" u2="ġ" k="97" /> + <hkern u1="ŕ" u2="ģ" k="97" /> + <hkern u1="ŕ" u2="ĝ" k="97" /> + <hkern u1="ŕ" u2="ğ" k="97" /> + <hkern u1="ŕ" u2="ǽ" k="97" /> + <hkern u1="ŕ" u2="æ" k="97" /> + <hkern u1="ŕ" u2="Č" k="75" /> + <hkern u1="ŕ" u2="Ć" k="75" /> + <hkern u1="ŕ" u2="õ" k="97" /> + <hkern u1="ŕ" u2="ę" k="97" /> + <hkern u1="ŕ" u2="ē" k="97" /> + <hkern u1="ŕ" u2="è" k="97" /> + <hkern u1="ŕ" u2="ė" k="97" /> + <hkern u1="ŕ" u2="ë" k="97" /> + <hkern u1="ŕ" u2="ê" k="97" /> + <hkern u1="ŕ" u2="ě" k="97" /> + <hkern u1="ŕ" u2="ĕ" k="97" /> + <hkern u1="ŕ" u2="é" k="97" /> + <hkern u1="ŕ" u2="đ" k="97" /> + <hkern u1="ŕ" u2="ď" k="97" /> + <hkern u1="ŕ" u2="ċ" k="97" /> + <hkern u1="ŕ" u2="ĉ" k="97" /> + <hkern u1="ŕ" u2="ç" k="97" /> + <hkern u1="ŕ" u2="č" k="97" /> + <hkern u1="ŕ" u2="ć" k="97" /> + <hkern u1="ŕ" u2="ã" k="97" /> + <hkern u1="ŕ" u2="å" k="97" /> + <hkern u1="ŕ" u2="ą" k="97" /> + <hkern u1="ŕ" u2="ā" k="97" /> + <hkern u1="ŕ" u2="à" k="97" /> + <hkern u1="ŕ" u2="ä" k="97" /> + <hkern u1="ŕ" u2="â" k="97" /> + <hkern u1="ŕ" u2="ă" k="97" /> + <hkern u1="ŕ" u2="á" k="97" /> + <hkern u1="ŕ" u2="Ĝ" k="75" /> + <hkern u1="ŕ" u2="Ğ" k="75" /> + <hkern u1="ŕ" u2="Ċ" k="75" /> + <hkern u1="ŕ" u2="Ĉ" k="75" /> + <hkern u1="ŕ" u2="Ç" k="75" /> + <hkern u1="ŕ" u2="Ö" k="75" /> + <hkern u1="ŕ" u2="Ø" k="75" /> + <hkern u1="ŕ" u2="C" k="75" /> + <hkern u1="ŕ" u2="Õ" k="75" /> + <hkern u1="ŕ" u2="Ǿ" k="75" /> + <hkern u1="ŕ" u2="Ō" k="75" /> + <hkern u1="ŕ" u2="Ő" k="75" /> + <hkern u1="ŕ" u2="Ò" k="75" /> + <hkern u1="ŕ" u2="Ô" k="75" /> + <hkern u1="ŕ" u2="Ŏ" k="75" /> + <hkern u1="ŕ" u2="Ģ" k="75" /> + <hkern u1="ŕ" u2="Ó" k="75" /> + <hkern u1="ŕ" u2="0" k="75" /> + <hkern u1="ŕ" u2="Œ" k="75" /> + <hkern u1="ŕ" u2="Ġ" k="75" /> + <hkern u1="ŕ" u2="c" k="97" /> + <hkern u1="ŕ" u2="s" k="53" /> + <hkern u1="ŕ" u2="q" k="97" /> + <hkern u1="ŕ" u2="o" k="97" /> + <hkern u1="ŕ" u2="g" k="97" /> + <hkern u1="ŕ" u2="e" k="97" /> + <hkern u1="ŕ" u2="d" k="97" /> + <hkern u1="ŕ" u2="a" k="97" /> + <hkern u1="ŕ" u2="Q" k="75" /> + <hkern u1="ŕ" u2="O" k="75" /> + <hkern u1="ŕ" u2="G" k="75" /> + <hkern u1="ŕ" u2="®" k="75" /> + <hkern u1="ŕ" u2="©" k="75" /> + <hkern u1="ř" u2="œ" k="97" /> + <hkern u1="ř" u2="ś" k="53" /> + <hkern u1="ř" u2="š" k="53" /> + <hkern u1="ř" u2="ō" k="97" /> + <hkern u1="ř" u2="ő" k="97" /> + <hkern u1="ř" u2="ò" k="97" /> + <hkern u1="ř" u2="ö" k="97" /> + <hkern u1="ř" u2="ŏ" k="97" /> + <hkern u1="ř" u2="ô" k="97" /> + <hkern u1="ř" u2="ó" k="97" /> + <hkern u1="ř" u2="ġ" k="97" /> + <hkern u1="ř" u2="ģ" k="97" /> + <hkern u1="ř" u2="ĝ" k="97" /> + <hkern u1="ř" u2="ğ" k="97" /> + <hkern u1="ř" u2="ǽ" k="97" /> + <hkern u1="ř" u2="æ" k="97" /> + <hkern u1="ř" u2="Č" k="75" /> + <hkern u1="ř" u2="Ć" k="75" /> + <hkern u1="ř" u2="õ" k="97" /> + <hkern u1="ř" u2="ę" k="97" /> + <hkern u1="ř" u2="ē" k="97" /> + <hkern u1="ř" u2="è" k="97" /> + <hkern u1="ř" u2="ė" k="97" /> + <hkern u1="ř" u2="ë" k="97" /> + <hkern u1="ř" u2="ê" k="97" /> + <hkern u1="ř" u2="ě" k="97" /> + <hkern u1="ř" u2="ĕ" k="97" /> + <hkern u1="ř" u2="é" k="97" /> + <hkern u1="ř" u2="đ" k="97" /> + <hkern u1="ř" u2="ď" k="97" /> + <hkern u1="ř" u2="ċ" k="97" /> + <hkern u1="ř" u2="ĉ" k="97" /> + <hkern u1="ř" u2="ç" k="97" /> + <hkern u1="ř" u2="č" k="97" /> + <hkern u1="ř" u2="ć" k="97" /> + <hkern u1="ř" u2="ã" k="97" /> + <hkern u1="ř" u2="å" k="97" /> + <hkern u1="ř" u2="ą" k="97" /> + <hkern u1="ř" u2="ā" k="97" /> + <hkern u1="ř" u2="à" k="97" /> + <hkern u1="ř" u2="ä" k="97" /> + <hkern u1="ř" u2="â" k="97" /> + <hkern u1="ř" u2="ă" k="97" /> + <hkern u1="ř" u2="á" k="97" /> + <hkern u1="ř" u2="Ĝ" k="75" /> + <hkern u1="ř" u2="Ğ" k="75" /> + <hkern u1="ř" u2="Ċ" k="75" /> + <hkern u1="ř" u2="Ĉ" k="75" /> + <hkern u1="ř" u2="Ç" k="75" /> + <hkern u1="ř" u2="Ö" k="75" /> + <hkern u1="ř" u2="Ø" k="75" /> + <hkern u1="ř" u2="C" k="75" /> + <hkern u1="ř" u2="Õ" k="75" /> + <hkern u1="ř" u2="Ǿ" k="75" /> + <hkern u1="ř" u2="Ō" k="75" /> + <hkern u1="ř" u2="Ő" k="75" /> + <hkern u1="ř" u2="Ò" k="75" /> + <hkern u1="ř" u2="Ô" k="75" /> + <hkern u1="ř" u2="Ŏ" k="75" /> + <hkern u1="ř" u2="Ģ" k="75" /> + <hkern u1="ř" u2="Ó" k="75" /> + <hkern u1="ř" u2="0" k="75" /> + <hkern u1="ř" u2="Œ" k="75" /> + <hkern u1="ř" u2="Ġ" k="75" /> + <hkern u1="ř" u2="c" k="97" /> + <hkern u1="ř" u2="s" k="53" /> + <hkern u1="ř" u2="q" k="97" /> + <hkern u1="ř" u2="o" k="97" /> + <hkern u1="ř" u2="g" k="97" /> + <hkern u1="ř" u2="e" k="97" /> + <hkern u1="ř" u2="d" k="97" /> + <hkern u1="ř" u2="a" k="97" /> + <hkern u1="ř" u2="Q" k="75" /> + <hkern u1="ř" u2="O" k="75" /> + <hkern u1="ř" u2="G" k="75" /> + <hkern u1="ř" u2="®" k="75" /> + <hkern u1="ř" u2="©" k="75" /> + <hkern u1="š" u2="ý" k="21" /> + <hkern u1="š" u2="ÿ" k="21" /> + <hkern u1="š" u2="ỳ" k="21" /> + <hkern u1="š" u2="Ŵ" k="125" /> + <hkern u1="š" u2="Ỳ" k="125" /> + <hkern u1="š" u2="Ÿ" k="125" /> + <hkern u1="š" u2="Ŷ" k="125" /> + <hkern u1="š" u2="Ý" k="125" /> + <hkern u1="š" u2="Ẁ" k="125" /> + <hkern u1="š" u2="Ẅ" k="125" /> + <hkern u1="š" u2="Ẃ" k="125" /> + <hkern u1="š" u2="Ţ" k="125" /> + <hkern u1="š" u2="ẅ" k="21" /> + <hkern u1="š" u2="ŵ" k="21" /> + <hkern u1="š" u2="ẁ" k="21" /> + <hkern u1="š" u2="ẃ" k="21" /> + <hkern u1="š" u2="y" k="21" /> + <hkern u1="š" u2="w" k="21" /> + <hkern u1="š" u2="v" k="21" /> + <hkern u1="š" u2="Y" k="125" /> + <hkern u1="š" u2="W" k="125" /> + <hkern u1="š" u2="V" k="125" /> + <hkern u1="š" u2="T" k="125" /> + <hkern u1="ś" u2="ý" k="21" /> + <hkern u1="ś" u2="ÿ" k="21" /> + <hkern u1="ś" u2="ỳ" k="21" /> + <hkern u1="ś" u2="Ŵ" k="125" /> + <hkern u1="ś" u2="Ỳ" k="125" /> + <hkern u1="ś" u2="Ÿ" k="125" /> + <hkern u1="ś" u2="Ŷ" k="125" /> + <hkern u1="ś" u2="Ý" k="125" /> + <hkern u1="ś" u2="Ẁ" k="125" /> + <hkern u1="ś" u2="Ẅ" k="125" /> + <hkern u1="ś" u2="Ẃ" k="125" /> + <hkern u1="ś" u2="Ţ" k="125" /> + <hkern u1="ś" u2="ẅ" k="21" /> + <hkern u1="ś" u2="ŵ" k="21" /> + <hkern u1="ś" u2="ẁ" k="21" /> + <hkern u1="ś" u2="ẃ" k="21" /> + <hkern u1="ś" u2="y" k="21" /> + <hkern u1="ś" u2="w" k="21" /> + <hkern u1="ś" u2="v" k="21" /> + <hkern u1="ś" u2="Y" k="125" /> + <hkern u1="ś" u2="W" k="125" /> + <hkern u1="ś" u2="V" k="125" /> + <hkern u1="ś" u2="T" k="125" /> + <hkern u1="Á" u2="ý" k="125" /> + <hkern u1="Á" u2="ÿ" k="125" /> + <hkern u1="Á" u2="ỳ" k="125" /> + <hkern u1="Á" u2="Ŵ" k="208" /> + <hkern u1="Á" u2="Č" k="120" /> + <hkern u1="Á" u2="Ć" k="120" /> + <hkern u1="Á" u2="Ĝ" k="120" /> + <hkern u1="Á" u2="Ğ" k="120" /> + <hkern u1="Á" u2="Ċ" k="120" /> + <hkern u1="Á" u2="Ĉ" k="120" /> + <hkern u1="Á" u2="Ç" k="120" /> + <hkern u1="Á" u2="Ö" k="120" /> + <hkern u1="Á" u2="Ø" k="120" /> + <hkern u1="Á" u2="C" k="120" /> + <hkern u1="Á" u2="Ỳ" k="250" /> + <hkern u1="Á" u2="Ÿ" k="250" /> + <hkern u1="Á" u2="Ŷ" k="250" /> + <hkern u1="Á" u2="Ý" k="250" /> + <hkern u1="Á" u2="Ẁ" k="208" /> + <hkern u1="Á" u2="Ẅ" k="208" /> + <hkern u1="Á" u2="Ẃ" k="208" /> + <hkern u1="Á" u2="Ș" k="60" /> + <hkern u1="Á" u2="Ŝ" k="60" /> + <hkern u1="Á" u2="Ş" k="60" /> + <hkern u1="Á" u2="Š" k="60" /> + <hkern u1="Á" u2="Õ" k="120" /> + <hkern u1="Á" u2="Ǿ" k="120" /> + <hkern u1="Á" u2="Ō" k="120" /> + <hkern u1="Á" u2="Ő" k="120" /> + <hkern u1="Á" u2="Ò" k="120" /> + <hkern u1="Á" u2="Ô" k="120" /> + <hkern u1="Á" u2="Ŏ" k="120" /> + <hkern u1="Á" u2="Ģ" k="120" /> + <hkern u1="Á" u2="Ó" k="120" /> + <hkern u1="Á" u2="Ţ" k="250" /> + <hkern u1="Á" u2="ẅ" k="125" /> + <hkern u1="Á" u2="ŵ" k="125" /> + <hkern u1="Á" u2="Ś" k="60" /> + <hkern u1="Á" u2="0" k="120" /> + <hkern u1="Á" u2="Œ" k="120" /> + <hkern u1="Á" u2="Ġ" k="120" /> + <hkern u1="Á" u2="ẁ" k="125" /> + <hkern u1="Á" u2="ẃ" k="125" /> + <hkern u1="Á" u2="y" k="125" /> + <hkern u1="Á" u2="w" k="125" /> + <hkern u1="Á" u2="v" k="125" /> + <hkern u1="Á" u2="Q" k="120" /> + <hkern u1="Á" u2="O" k="120" /> + <hkern u1="Á" u2="G" k="120" /> + <hkern u1="Á" u2="®" k="120" /> + <hkern u1="Á" u2="©" k="120" /> + <hkern u1="Á" u2="Y" k="250" /> + <hkern u1="Á" u2="W" k="208" /> + <hkern u1="Á" u2="V" k="208" /> + <hkern u1="Á" u2="T" k="250" /> + <hkern u1="Á" u2="S" k="60" /> + <hkern u1="Ŵ" u2="Â" k="250" /> + <hkern u1="Ŵ" u2="Ă" k="250" /> + <hkern u1="Ŵ" u2="Á" k="250" /> + <hkern u1="Ŵ" u2="œ" k="140" /> + <hkern u1="Ŵ" u2="ś" k="104" /> + <hkern u1="Ŵ" u2="š" k="104" /> + <hkern u1="Ŵ" u2="ō" k="140" /> + <hkern u1="Ŵ" u2="ő" k="140" /> + <hkern u1="Ŵ" u2="ò" k="140" /> + <hkern u1="Ŵ" u2="ö" k="140" /> + <hkern u1="Ŵ" u2="ŏ" k="140" /> + <hkern u1="Ŵ" u2="ô" k="140" /> + <hkern u1="Ŵ" u2="ó" k="140" /> + <hkern u1="Ŵ" u2="ġ" k="140" /> + <hkern u1="Ŵ" u2="ģ" k="140" /> + <hkern u1="Ŵ" u2="ĝ" k="140" /> + <hkern u1="Ŵ" u2="ğ" k="140" /> + <hkern u1="Ŵ" u2="ǽ" k="140" /> + <hkern u1="Ŵ" u2="æ" k="140" /> + <hkern u1="Ŵ" u2="Č" k="100" /> + <hkern u1="Ŵ" u2="Ć" k="100" /> + <hkern u1="Ŵ" u2="õ" k="140" /> + <hkern u1="Ŵ" u2="ę" k="140" /> + <hkern u1="Ŵ" u2="ē" k="140" /> + <hkern u1="Ŵ" u2="è" k="140" /> + <hkern u1="Ŵ" u2="ė" k="140" /> + <hkern u1="Ŵ" u2="ë" k="140" /> + <hkern u1="Ŵ" u2="ê" k="140" /> + <hkern u1="Ŵ" u2="ě" k="140" /> + <hkern u1="Ŵ" u2="ĕ" k="140" /> + <hkern u1="Ŵ" u2="é" k="140" /> + <hkern u1="Ŵ" u2="đ" k="140" /> + <hkern u1="Ŵ" u2="ď" k="140" /> + <hkern u1="Ŵ" u2="ċ" k="140" /> + <hkern u1="Ŵ" u2="ĉ" k="140" /> + <hkern u1="Ŵ" u2="ç" k="140" /> + <hkern u1="Ŵ" u2="č" k="140" /> + <hkern u1="Ŵ" u2="ć" k="140" /> + <hkern u1="Ŵ" u2="ã" k="140" /> + <hkern u1="Ŵ" u2="å" k="140" /> + <hkern u1="Ŵ" u2="ą" k="140" /> + <hkern u1="Ŵ" u2="ā" k="140" /> + <hkern u1="Ŵ" u2="à" k="140" /> + <hkern u1="Ŵ" u2="ä" k="140" /> + <hkern u1="Ŵ" u2="â" k="140" /> + <hkern u1="Ŵ" u2="ă" k="140" /> + <hkern u1="Ŵ" u2="á" k="140" /> + <hkern u1="Ŵ" u2="À" k="250" /> + <hkern u1="Ŵ" u2="Ä" k="250" /> + <hkern u1="Ŵ" u2="Ĝ" k="100" /> + <hkern u1="Ŵ" u2="Ğ" k="100" /> + <hkern u1="Ŵ" u2="Ċ" k="100" /> + <hkern u1="Ŵ" u2="Ĉ" k="100" /> + <hkern u1="Ŵ" u2="Ç" k="100" /> + <hkern u1="Ŵ" u2="Ö" k="100" /> + <hkern u1="Ŵ" u2="Ø" k="100" /> + <hkern u1="Ŵ" u2="C" k="100" /> + <hkern u1="Ŵ" u2="Õ" k="100" /> + <hkern u1="Ŵ" u2="Ǿ" k="100" /> + <hkern u1="Ŵ" u2="Ō" k="100" /> + <hkern u1="Ŵ" u2="Ő" k="100" /> + <hkern u1="Ŵ" u2="Ò" k="100" /> + <hkern u1="Ŵ" u2="Ô" k="100" /> + <hkern u1="Ŵ" u2="Ŏ" k="100" /> + <hkern u1="Ŵ" u2="Ģ" k="100" /> + <hkern u1="Ŵ" u2="Ã" k="250" /> + <hkern u1="Ŵ" u2="Å" k="250" /> + <hkern u1="Ŵ" u2="Ą" k="250" /> + <hkern u1="Ŵ" u2="Ā" k="250" /> + <hkern u1="Ŵ" u2="Ó" k="100" /> + <hkern u1="Ŵ" u2="0" k="100" /> + <hkern u1="Ŵ" u2="Œ" k="100" /> + <hkern u1="Ŵ" u2="Ġ" k="100" /> + <hkern u1="Ŵ" u2="c" k="140" /> + <hkern u1="Ŵ" u2="s" k="104" /> + <hkern u1="Ŵ" u2="q" k="140" /> + <hkern u1="Ŵ" u2="o" k="140" /> + <hkern u1="Ŵ" u2="g" k="140" /> + <hkern u1="Ŵ" u2="e" k="140" /> + <hkern u1="Ŵ" u2="d" k="140" /> + <hkern u1="Ŵ" u2="a" k="140" /> + <hkern u1="Ŵ" u2="Q" k="100" /> + <hkern u1="Ŵ" u2="O" k="100" /> + <hkern u1="Ŵ" u2="G" k="100" /> + <hkern u1="Ŵ" u2="®" k="100" /> + <hkern u1="Ŵ" u2="©" k="100" /> + <hkern u1="Ŵ" u2="A" k="250" /> + <hkern u1="Ă" u2="ý" k="125" /> + <hkern u1="Ă" u2="ÿ" k="125" /> + <hkern u1="Ă" u2="ỳ" k="125" /> + <hkern u1="Ă" u2="Ŵ" k="208" /> + <hkern u1="Ă" u2="Č" k="120" /> + <hkern u1="Ă" u2="Ć" k="120" /> + <hkern u1="Ă" u2="Ĝ" k="120" /> + <hkern u1="Ă" u2="Ğ" k="120" /> + <hkern u1="Ă" u2="Ċ" k="120" /> + <hkern u1="Ă" u2="Ĉ" k="120" /> + <hkern u1="Ă" u2="Ç" k="120" /> + <hkern u1="Ă" u2="Ö" k="120" /> + <hkern u1="Ă" u2="Ø" k="120" /> + <hkern u1="Ă" u2="C" k="120" /> + <hkern u1="Ă" u2="Ỳ" k="250" /> + <hkern u1="Ă" u2="Ÿ" k="250" /> + <hkern u1="Ă" u2="Ŷ" k="250" /> + <hkern u1="Ă" u2="Ý" k="250" /> + <hkern u1="Ă" u2="Ẁ" k="208" /> + <hkern u1="Ă" u2="Ẅ" k="208" /> + <hkern u1="Ă" u2="Ẃ" k="208" /> + <hkern u1="Ă" u2="Ș" k="60" /> + <hkern u1="Ă" u2="Ŝ" k="60" /> + <hkern u1="Ă" u2="Ş" k="60" /> + <hkern u1="Ă" u2="Š" k="60" /> + <hkern u1="Ă" u2="Õ" k="120" /> + <hkern u1="Ă" u2="Ǿ" k="120" /> + <hkern u1="Ă" u2="Ō" k="120" /> + <hkern u1="Ă" u2="Ő" k="120" /> + <hkern u1="Ă" u2="Ò" k="120" /> + <hkern u1="Ă" u2="Ô" k="120" /> + <hkern u1="Ă" u2="Ŏ" k="120" /> + <hkern u1="Ă" u2="Ģ" k="120" /> + <hkern u1="Ă" u2="Ó" k="120" /> + <hkern u1="Ă" u2="Ţ" k="250" /> + <hkern u1="Ă" u2="ẅ" k="125" /> + <hkern u1="Ă" u2="ŵ" k="125" /> + <hkern u1="Ă" u2="Ś" k="60" /> + <hkern u1="Ă" u2="0" k="120" /> + <hkern u1="Ă" u2="Œ" k="120" /> + <hkern u1="Ă" u2="Ġ" k="120" /> + <hkern u1="Ă" u2="ẁ" k="125" /> + <hkern u1="Ă" u2="ẃ" k="125" /> + <hkern u1="Ă" u2="y" k="125" /> + <hkern u1="Ă" u2="w" k="125" /> + <hkern u1="Ă" u2="v" k="125" /> + <hkern u1="Ă" u2="Q" k="120" /> + <hkern u1="Ă" u2="O" k="120" /> + <hkern u1="Ă" u2="G" k="120" /> + <hkern u1="Ă" u2="®" k="120" /> + <hkern u1="Ă" u2="©" k="120" /> + <hkern u1="Ă" u2="Y" k="250" /> + <hkern u1="Ă" u2="W" k="208" /> + <hkern u1="Ă" u2="V" k="208" /> + <hkern u1="Ă" u2="T" k="250" /> + <hkern u1="Ă" u2="S" k="60" /> + <hkern u1="Â" u2="ý" k="125" /> + <hkern u1="Â" u2="ÿ" k="125" /> + <hkern u1="Â" u2="ỳ" k="125" /> + <hkern u1="Â" u2="Ŵ" k="208" /> + <hkern u1="Â" u2="Č" k="120" /> + <hkern u1="Â" u2="Ć" k="120" /> + <hkern u1="Â" u2="Ĝ" k="120" /> + <hkern u1="Â" u2="Ğ" k="120" /> + <hkern u1="Â" u2="Ċ" k="120" /> + <hkern u1="Â" u2="Ĉ" k="120" /> + <hkern u1="Â" u2="Ç" k="120" /> + <hkern u1="Â" u2="Ö" k="120" /> + <hkern u1="Â" u2="Ø" k="120" /> + <hkern u1="Â" u2="C" k="120" /> + <hkern u1="Â" u2="Ỳ" k="250" /> + <hkern u1="Â" u2="Ÿ" k="250" /> + <hkern u1="Â" u2="Ŷ" k="250" /> + <hkern u1="Â" u2="Ý" k="250" /> + <hkern u1="Â" u2="Ẁ" k="208" /> + <hkern u1="Â" u2="Ẅ" k="208" /> + <hkern u1="Â" u2="Ẃ" k="208" /> + <hkern u1="Â" u2="Ș" k="60" /> + <hkern u1="Â" u2="Ŝ" k="60" /> + <hkern u1="Â" u2="Ş" k="60" /> + <hkern u1="Â" u2="Š" k="60" /> + <hkern u1="Â" u2="Õ" k="120" /> + <hkern u1="Â" u2="Ǿ" k="120" /> + <hkern u1="Â" u2="Ō" k="120" /> + <hkern u1="Â" u2="Ő" k="120" /> + <hkern u1="Â" u2="Ò" k="120" /> + <hkern u1="Â" u2="Ô" k="120" /> + <hkern u1="Â" u2="Ŏ" k="120" /> + <hkern u1="Â" u2="Ģ" k="120" /> + <hkern u1="Â" u2="Ó" k="120" /> + <hkern u1="Â" u2="Ţ" k="250" /> + <hkern u1="Â" u2="ẅ" k="125" /> + <hkern u1="Â" u2="ŵ" k="125" /> + <hkern u1="Â" u2="Ś" k="60" /> + <hkern u1="Â" u2="0" k="120" /> + <hkern u1="Â" u2="Œ" k="120" /> + <hkern u1="Â" u2="Ġ" k="120" /> + <hkern u1="Â" u2="ẁ" k="125" /> + <hkern u1="Â" u2="ẃ" k="125" /> + <hkern u1="Â" u2="y" k="125" /> + <hkern u1="Â" u2="w" k="125" /> + <hkern u1="Â" u2="v" k="125" /> + <hkern u1="Â" u2="Q" k="120" /> + <hkern u1="Â" u2="O" k="120" /> + <hkern u1="Â" u2="G" k="120" /> + <hkern u1="Â" u2="®" k="120" /> + <hkern u1="Â" u2="©" k="120" /> + <hkern u1="Â" u2="Y" k="250" /> + <hkern u1="Â" u2="W" k="208" /> + <hkern u1="Â" u2="V" k="208" /> + <hkern u1="Â" u2="T" k="250" /> + <hkern u1="Â" u2="S" k="60" /> + <hkern u1="ỳ" u2="œ" k="71" /> + <hkern u1="ỳ" u2="ō" k="71" /> + <hkern u1="ỳ" u2="ő" k="71" /> + <hkern u1="ỳ" u2="ò" k="71" /> + <hkern u1="ỳ" u2="ö" k="71" /> + <hkern u1="ỳ" u2="ŏ" k="71" /> + <hkern u1="ỳ" u2="ô" k="71" /> + <hkern u1="ỳ" u2="ó" k="71" /> + <hkern u1="ỳ" u2="ġ" k="71" /> + <hkern u1="ỳ" u2="ģ" k="71" /> + <hkern u1="ỳ" u2="ĝ" k="71" /> + <hkern u1="ỳ" u2="ğ" k="71" /> + <hkern u1="ỳ" u2="ǽ" k="71" /> + <hkern u1="ỳ" u2="æ" k="71" /> + <hkern u1="ỳ" u2="õ" k="71" /> + <hkern u1="ỳ" u2="ę" k="71" /> + <hkern u1="ỳ" u2="ē" k="71" /> + <hkern u1="ỳ" u2="è" k="71" /> + <hkern u1="ỳ" u2="ė" k="71" /> + <hkern u1="ỳ" u2="ë" k="71" /> + <hkern u1="ỳ" u2="ê" k="71" /> + <hkern u1="ỳ" u2="ě" k="71" /> + <hkern u1="ỳ" u2="ĕ" k="71" /> + <hkern u1="ỳ" u2="é" k="71" /> + <hkern u1="ỳ" u2="đ" k="71" /> + <hkern u1="ỳ" u2="ď" k="71" /> + <hkern u1="ỳ" u2="ċ" k="71" /> + <hkern u1="ỳ" u2="ĉ" k="71" /> + <hkern u1="ỳ" u2="ç" k="71" /> + <hkern u1="ỳ" u2="č" k="71" /> + <hkern u1="ỳ" u2="ć" k="71" /> + <hkern u1="ỳ" u2="ã" k="71" /> + <hkern u1="ỳ" u2="å" k="71" /> + <hkern u1="ỳ" u2="ą" k="71" /> + <hkern u1="ỳ" u2="ā" k="71" /> + <hkern u1="ỳ" u2="à" k="71" /> + <hkern u1="ỳ" u2="ä" k="71" /> + <hkern u1="ỳ" u2="â" k="71" /> + <hkern u1="ỳ" u2="ă" k="71" /> + <hkern u1="ỳ" u2="á" k="71" /> + <hkern u1="ỳ" u2="c" k="71" /> + <hkern u1="ỳ" u2="q" k="71" /> + <hkern u1="ỳ" u2="o" k="71" /> + <hkern u1="ỳ" u2="g" k="71" /> + <hkern u1="ỳ" u2="e" k="71" /> + <hkern u1="ỳ" u2="d" k="71" /> + <hkern u1="ỳ" u2="a" k="71" /> + <hkern u1="ÿ" u2="œ" k="71" /> + <hkern u1="ÿ" u2="ō" k="71" /> + <hkern u1="ÿ" u2="ő" k="71" /> + <hkern u1="ÿ" u2="ò" k="71" /> + <hkern u1="ÿ" u2="ö" k="71" /> + <hkern u1="ÿ" u2="ŏ" k="71" /> + <hkern u1="ÿ" u2="ô" k="71" /> + <hkern u1="ÿ" u2="ó" k="71" /> + <hkern u1="ÿ" u2="ġ" k="71" /> + <hkern u1="ÿ" u2="ģ" k="71" /> + <hkern u1="ÿ" u2="ĝ" k="71" /> + <hkern u1="ÿ" u2="ğ" k="71" /> + <hkern u1="ÿ" u2="ǽ" k="71" /> + <hkern u1="ÿ" u2="æ" k="71" /> + <hkern u1="ÿ" u2="õ" k="71" /> + <hkern u1="ÿ" u2="ę" k="71" /> + <hkern u1="ÿ" u2="ē" k="71" /> + <hkern u1="ÿ" u2="è" k="71" /> + <hkern u1="ÿ" u2="ė" k="71" /> + <hkern u1="ÿ" u2="ë" k="71" /> + <hkern u1="ÿ" u2="ê" k="71" /> + <hkern u1="ÿ" u2="ě" k="71" /> + <hkern u1="ÿ" u2="ĕ" k="71" /> + <hkern u1="ÿ" u2="é" k="71" /> + <hkern u1="ÿ" u2="đ" k="71" /> + <hkern u1="ÿ" u2="ď" k="71" /> + <hkern u1="ÿ" u2="ċ" k="71" /> + <hkern u1="ÿ" u2="ĉ" k="71" /> + <hkern u1="ÿ" u2="ç" k="71" /> + <hkern u1="ÿ" u2="č" k="71" /> + <hkern u1="ÿ" u2="ć" k="71" /> + <hkern u1="ÿ" u2="ã" k="71" /> + <hkern u1="ÿ" u2="å" k="71" /> + <hkern u1="ÿ" u2="ą" k="71" /> + <hkern u1="ÿ" u2="ā" k="71" /> + <hkern u1="ÿ" u2="à" k="71" /> + <hkern u1="ÿ" u2="ä" k="71" /> + <hkern u1="ÿ" u2="â" k="71" /> + <hkern u1="ÿ" u2="ă" k="71" /> + <hkern u1="ÿ" u2="á" k="71" /> + <hkern u1="ÿ" u2="c" k="71" /> + <hkern u1="ÿ" u2="q" k="71" /> + <hkern u1="ÿ" u2="o" k="71" /> + <hkern u1="ÿ" u2="g" k="71" /> + <hkern u1="ÿ" u2="e" k="71" /> + <hkern u1="ÿ" u2="d" k="71" /> + <hkern u1="ÿ" u2="a" k="71" /> + <hkern u1="ý" u2="œ" k="71" /> + <hkern u1="ý" u2="ō" k="71" /> + <hkern u1="ý" u2="ő" k="71" /> + <hkern u1="ý" u2="ò" k="71" /> + <hkern u1="ý" u2="ö" k="71" /> + <hkern u1="ý" u2="ŏ" k="71" /> + <hkern u1="ý" u2="ô" k="71" /> + <hkern u1="ý" u2="ó" k="71" /> + <hkern u1="ý" u2="ġ" k="71" /> + <hkern u1="ý" u2="ģ" k="71" /> + <hkern u1="ý" u2="ĝ" k="71" /> + <hkern u1="ý" u2="ğ" k="71" /> + <hkern u1="ý" u2="ǽ" k="71" /> + <hkern u1="ý" u2="æ" k="71" /> + <hkern u1="ý" u2="õ" k="71" /> + <hkern u1="ý" u2="ę" k="71" /> + <hkern u1="ý" u2="ē" k="71" /> + <hkern u1="ý" u2="è" k="71" /> + <hkern u1="ý" u2="ė" k="71" /> + <hkern u1="ý" u2="ë" k="71" /> + <hkern u1="ý" u2="ê" k="71" /> + <hkern u1="ý" u2="ě" k="71" /> + <hkern u1="ý" u2="ĕ" k="71" /> + <hkern u1="ý" u2="é" k="71" /> + <hkern u1="ý" u2="đ" k="71" /> + <hkern u1="ý" u2="ď" k="71" /> + <hkern u1="ý" u2="ċ" k="71" /> + <hkern u1="ý" u2="ĉ" k="71" /> + <hkern u1="ý" u2="ç" k="71" /> + <hkern u1="ý" u2="č" k="71" /> + <hkern u1="ý" u2="ć" k="71" /> + <hkern u1="ý" u2="ã" k="71" /> + <hkern u1="ý" u2="å" k="71" /> + <hkern u1="ý" u2="ą" k="71" /> + <hkern u1="ý" u2="ā" k="71" /> + <hkern u1="ý" u2="à" k="71" /> + <hkern u1="ý" u2="ä" k="71" /> + <hkern u1="ý" u2="â" k="71" /> + <hkern u1="ý" u2="ă" k="71" /> + <hkern u1="ý" u2="á" k="71" /> + <hkern u1="ý" u2="c" k="71" /> + <hkern u1="ý" u2="q" k="71" /> + <hkern u1="ý" u2="o" k="71" /> + <hkern u1="ý" u2="g" k="71" /> + <hkern u1="ý" u2="e" k="71" /> + <hkern u1="ý" u2="d" k="71" /> + <hkern u1="ý" u2="a" k="71" /> + <hkern u1="ž" u2="œ" k="41" /> + <hkern u1="ž" u2="ō" k="41" /> + <hkern u1="ž" u2="ő" k="41" /> + <hkern u1="ž" u2="ò" k="41" /> + <hkern u1="ž" u2="ö" k="41" /> + <hkern u1="ž" u2="ŏ" k="41" /> + <hkern u1="ž" u2="ô" k="41" /> + <hkern u1="ž" u2="ó" k="41" /> + <hkern u1="ž" u2="ġ" k="41" /> + <hkern u1="ž" u2="ģ" k="41" /> + <hkern u1="ž" u2="ĝ" k="41" /> + <hkern u1="ž" u2="ğ" k="41" /> + <hkern u1="ž" u2="ǽ" k="41" /> + <hkern u1="ž" u2="æ" k="41" /> + <hkern u1="ž" u2="õ" k="41" /> + <hkern u1="ž" u2="ę" k="41" /> + <hkern u1="ž" u2="ē" k="41" /> + <hkern u1="ž" u2="è" k="41" /> + <hkern u1="ž" u2="ė" k="41" /> + <hkern u1="ž" u2="ë" k="41" /> + <hkern u1="ž" u2="ê" k="41" /> + <hkern u1="ž" u2="ě" k="41" /> + <hkern u1="ž" u2="ĕ" k="41" /> + <hkern u1="ž" u2="é" k="41" /> + <hkern u1="ž" u2="đ" k="41" /> + <hkern u1="ž" u2="ď" k="41" /> + <hkern u1="ž" u2="ċ" k="41" /> + <hkern u1="ž" u2="ĉ" k="41" /> + <hkern u1="ž" u2="ç" k="41" /> + <hkern u1="ž" u2="č" k="41" /> + <hkern u1="ž" u2="ć" k="41" /> + <hkern u1="ž" u2="ã" k="41" /> + <hkern u1="ž" u2="å" k="41" /> + <hkern u1="ž" u2="ą" k="41" /> + <hkern u1="ž" u2="ā" k="41" /> + <hkern u1="ž" u2="à" k="41" /> + <hkern u1="ž" u2="ä" k="41" /> + <hkern u1="ž" u2="â" k="41" /> + <hkern u1="ž" u2="ă" k="41" /> + <hkern u1="ž" u2="á" k="41" /> + <hkern u1="ž" u2="c" k="41" /> + <hkern u1="ž" u2="q" k="41" /> + <hkern u1="ž" u2="o" k="41" /> + <hkern u1="ž" u2="g" k="41" /> + <hkern u1="ž" u2="e" k="41" /> + <hkern u1="ž" u2="d" k="41" /> + <hkern u1="ž" u2="a" k="41" /> + <hkern u1="F" u2="Â" k="120" /> + <hkern u1="F" u2="Ă" k="120" /> + <hkern u1="F" u2="Á" k="120" /> + <hkern u1="F" u2="œ" k="60" /> + <hkern u1="F" u2="ō" k="60" /> + <hkern u1="F" u2="ő" k="60" /> + <hkern u1="F" u2="ò" k="60" /> + <hkern u1="F" u2="ö" k="60" /> + <hkern u1="F" u2="ŏ" k="60" /> + <hkern u1="F" u2="ô" k="60" /> + <hkern u1="F" u2="ó" k="60" /> + <hkern u1="F" u2="ġ" k="60" /> + <hkern u1="F" u2="ģ" k="60" /> + <hkern u1="F" u2="ĝ" k="60" /> + <hkern u1="F" u2="ğ" k="60" /> + <hkern u1="F" u2="ǽ" k="60" /> + <hkern u1="F" u2="æ" k="60" /> + <hkern u1="F" u2="õ" k="60" /> + <hkern u1="F" u2="ę" k="60" /> + <hkern u1="F" u2="ē" k="60" /> + <hkern u1="F" u2="è" k="60" /> + <hkern u1="F" u2="ė" k="60" /> + <hkern u1="F" u2="ë" k="60" /> + <hkern u1="F" u2="ê" k="60" /> + <hkern u1="F" u2="ě" k="60" /> + <hkern u1="F" u2="ĕ" k="60" /> + <hkern u1="F" u2="é" k="60" /> + <hkern u1="F" u2="đ" k="60" /> + <hkern u1="F" u2="ď" k="60" /> + <hkern u1="F" u2="ċ" k="60" /> + <hkern u1="F" u2="ĉ" k="60" /> + <hkern u1="F" u2="ç" k="60" /> + <hkern u1="F" u2="č" k="60" /> + <hkern u1="F" u2="ć" k="60" /> + <hkern u1="F" u2="ã" k="60" /> + <hkern u1="F" u2="å" k="60" /> + <hkern u1="F" u2="ą" k="60" /> + <hkern u1="F" u2="ā" k="60" /> + <hkern u1="F" u2="à" k="60" /> + <hkern u1="F" u2="ä" k="60" /> + <hkern u1="F" u2="â" k="60" /> + <hkern u1="F" u2="ă" k="60" /> + <hkern u1="F" u2="á" k="60" /> + <hkern u1="F" u2="À" k="120" /> + <hkern u1="F" u2="Ä" k="120" /> + <hkern u1="F" u2="Ã" k="120" /> + <hkern u1="F" u2="Å" k="120" /> + <hkern u1="F" u2="Ą" k="120" /> + <hkern u1="F" u2="Ā" k="120" /> + <hkern u1="F" u2="c" k="60" /> + <hkern u1="F" u2="q" k="60" /> + <hkern u1="F" u2="o" k="60" /> + <hkern u1="F" u2="g" k="60" /> + <hkern u1="F" u2="e" k="60" /> + <hkern u1="F" u2="d" k="60" /> + <hkern u1="F" u2="a" k="60" /> + <hkern u1="F" u2="A" k="120" /> + </font> +</defs></svg> diff --git a/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.ttf b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.ttf new file mode 100644 index 0000000000000000000000000000000000000000..48b7fe7888f5cc6cefeae7344ecbaed0f982be1a Binary files /dev/null and b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.ttf differ diff --git a/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff new file mode 100644 index 0000000000000000000000000000000000000000..e21b353319ad1de495a601d34f95955a3b27aa3b Binary files /dev/null and b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff differ diff --git a/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff2 b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c18d5385d850af5ab3c47374cf9f7995ce0cea34 Binary files /dev/null and b/themes/sunvibes/assets/fonts/d14035f6b1afeabafbee4abb2ebf0fc6.woff2 differ diff --git a/themes/sunvibes/assets/images/blue-background-effect-trans.png b/themes/sunvibes/assets/images/blue-background-effect-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..456cef9f118e50ace663ba9b559710c9ef0a64ad Binary files /dev/null and b/themes/sunvibes/assets/images/blue-background-effect-trans.png differ diff --git a/themes/sunvibes/assets/images/blue-background.jpg b/themes/sunvibes/assets/images/blue-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7488659b25c656078bf7029a8576c86f9c5264b0 Binary files /dev/null and b/themes/sunvibes/assets/images/blue-background.jpg differ diff --git a/themes/sunvibes/assets/images/overlay.png b/themes/sunvibes/assets/images/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..93a75cba5a243c3db69d32262ac0af20f76c256d Binary files /dev/null and b/themes/sunvibes/assets/images/overlay.png differ diff --git a/themes/sunvibes/assets/images/postAwesomium.png b/themes/sunvibes/assets/images/postAwesomium.png new file mode 100644 index 0000000000000000000000000000000000000000..670d11eaa41849e0e04fc845bb07d40d84fff362 Binary files /dev/null and b/themes/sunvibes/assets/images/postAwesomium.png differ diff --git a/themes/sunvibes/assets/images/text.png b/themes/sunvibes/assets/images/text.png new file mode 100644 index 0000000000000000000000000000000000000000..1de04eca3db07fa6d6b9e8fa8009b846ed363c66 Binary files /dev/null and b/themes/sunvibes/assets/images/text.png differ diff --git a/themes/sunvibes/assets/images/themeTopImage.jpg b/themes/sunvibes/assets/images/themeTopImage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5dc4c752317e9d26907085658d42335066a45477 Binary files /dev/null and b/themes/sunvibes/assets/images/themeTopImage.jpg differ diff --git a/themes/sunvibes/assets/images/top.png b/themes/sunvibes/assets/images/top.png new file mode 100644 index 0000000000000000000000000000000000000000..d4fd0ab9d4fe8bb6a37787ecba3a87c3647fcf1c Binary files /dev/null and b/themes/sunvibes/assets/images/top.png differ diff --git a/themes/sunvibes/assets/includes/customFeatures.php b/themes/sunvibes/assets/includes/customFeatures.php new file mode 100644 index 0000000000000000000000000000000000000000..9cd0f50f862e36ff408b14a0f43adc539f280d34 --- /dev/null +++ b/themes/sunvibes/assets/includes/customFeatures.php @@ -0,0 +1,9 @@ +<?php +function customSidebar (){ + /*echo ('<a href="themeFeature.php?p=themeSettings" class="list-group-item list-group-item-action bg-light">Paramètres du thème</a>');*/ + echo ('<a href="themeFeature.php?p=importAssets" class="list-group-item list-group-item-action bg-light">Import theme asssets</a>'); +} +function customPage($page){ + return "../themes/".getParameters("theme")."/assets/includes/".$page; +} +?> \ No newline at end of file diff --git a/themes/sunvibes/assets/includes/importAssets b/themes/sunvibes/assets/includes/importAssets new file mode 100644 index 0000000000000000000000000000000000000000..6250331729c6f76b394daef506d9e3193b32ffbf --- /dev/null +++ b/themes/sunvibes/assets/includes/importAssets @@ -0,0 +1,26 @@ +<?php +if (isset($_POST["submit"])) { + $files = ["https://i.imgur.com/UxpwCmzg.jpg", "https://i.imgur.com/T3hyzyF.jpg", "https://i.imgur.com/6wGbZWt.jpg", "https://i.imgur.com/WmozRr7.jpg", "https://i.imgur.com/qJ02IDc.jpg", "https://i.imgur.com/cSpuR7y.jpg", "https://i.imgur.com/YQP6F5a.jpg"]; + $filesnames = array(); + foreach ($files as $fileurl) { + uploadfiles($fileurl); + array_push($filesnames, str_replace("https://i.imgur.com/", "", $fileurl)); + $sql = "UPDATE settings SET value = ? WHERE parameter = 'backgroundImages'"; + $bdd->prepare($sql)->execute([json_encode($filesnames)]); + } + //Actualisation de la page + header('Location: ?p=importAssets&success'); +} +?> +<div class="page-content container-fluid"> + <h1>Importer les assets du thème</h1> + <p>Ici tu peux importer les images de fond du thème. ^^</p> + <?php + if (isset($_GET["success"])) { + echo ('<div class="alert alert-success" role="alert">Images de fond importées avec succès!</div>'); + } + ?> + <form method="post" action=""> + <button type="submit" name="submit" class="btn btn-success my-2">Importer</button> + </form> +</div> \ No newline at end of file diff --git a/themes/sunvibes/assets/includes/themeSettings b/themes/sunvibes/assets/includes/themeSettings new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/themes/sunvibes/index.php b/themes/sunvibes/index.php new file mode 100644 index 0000000000000000000000000000000000000000..02c51b216bc31e816e07cb0a3c0f923a6d9ad663 --- /dev/null +++ b/themes/sunvibes/index.php @@ -0,0 +1,206 @@ +<?php +//Détection du naviguateur et récupération de l'ip +function getUserIpAddr(){ + if(!empty($_SERVER['HTTP_CLIENT_IP'])){ + //ip from share internet + $ip = $_SERVER['HTTP_CLIENT_IP']; + }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ + //ip pass from proxy + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + }else{ + $ip = $_SERVER['REMOTE_ADDR']; + } + return $ip; +} +$browser = new Browser(); +if( $browser->getBrowser() == (Browser::BROWSER_CHROME OR Browser::BROWSER_EDGE) && $browser->getVersion() >=19 ) { + $oldWebBrowser = false; //Version non Chromium de Garry's Mod +} else { + $oldWebBrowser = true; //Naviguateur & Version Chromium de Garry's Mod +} + +//Récupération du contenu depuis la base de donnée +$backgroundImage = json_decode(getParameters("backgroundImages")); + + //////////////////////////////// + // Récupère les posts/Astuces // +//////////////////////////////// +$res=$bdd->query("SELECT * FROM posts"); +$result = $res->fetchAll(); +$loadingPostsText = array(); //Création d'une liste +$loadingPostsImages = array(); //Idem +foreach ( $result as $row ) {; //Boucle qui s'éxecute à chaque post/Astuce + array_push($loadingPostsText, "<h1>".$row[1]."</h1>".$row[2]); //Assemble le titre et le texte du post/astuce (j'allais pas créer une variable juste pour le titre mdr) + array_push($loadingPostsImages, $row[3]); //Créé un item contenu l'image du post/Astuce, c'est dans le même ordre +} +$loadingPostsText = json_encode($loadingPostsText); //Encode en JSON pour pouvoir récupérer la variable plus bas +$loadingPostsImages = json_encode($loadingPostsImages); //Idem +?> + +<!DOCTYPE html> +<html> +<head> + <title><?=getParameters("siteName")?></title> + <meta charset="utf-8"> + + <link rel="stylesheet" href="themes/<?=getParameters("theme")?>/assets/css/styles.css"> + <?php + if ($oldWebBrowser == true) { + echo ('<link rel="stylesheet" href="themes/'.getParameters("theme").'/assets/css/styles-legacy.css">'); + echo (''); + } + ?> + <!-- march po :( + <script src="themes/<?=getParameters("theme")?>/assets/js/vunit-0.2.0.min.js"></script> + <script> + new vUnit({ + CSSMap: { + '.vh': { + property: 'max-height', + reference: 'vh' + }, + '.vw': { + property: 'max-width', + reference: 'vw' + } + '.vwfs': { + property: 'font-size', + reference: 'vw' + }, + '.vhmt': { + property: 'margin-top', + reference: 'vh' + }, + '.vhmb': { + property: 'margin-bottom', + reference: 'vh' + }, + '.vminw': { + property: 'width', + reference: 'vmin' + }, + '.vmaxw': { + property: 'width', + reference: 'vmax' + } + } + }).init(); // call the public init() method + </script> --> + <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> +</head> +<body> + <audio id="backMusic" preload="auto"></audio> + <!-- Fond --> + <div class="background"></div> + <div class="overlay"></div> + <img class="topImage" src="themes/<?=getParameters("theme")?>/assets/images/top.png"> + <img class="serverLogo" src="<?=getParameters("serverLogo")?>"> + + + <div class="loadingPosts"> + <img id="postImage" src=""> + <div id="postText" class="postText"></div> + </div> + + <div class="rightBottom"> + <div class="gmodLoadingBar"></div> + </div> + + <script type="text/javascript"> + var backgroundImages = <?=getParameters("backgroundImages")?>; + + //1s = 1000 ms + var timeBackChange = <?=getParameters("timeBackChange")?>; + var timePostChange = <?=getParameters("timePostChange")?>; + + //Il est important de mettre le même nombre d'images que de tips, et dans le bon ordre. + var loadingPostsText = <?=$loadingPostsText?>; + + var loadingPostsImages = <?=$loadingPostsImages?>; + + var playlist = <?=getParameters("musics")?>; + + //Permet de générer un nombre aléatoire entre 0 et un nombre défini + function getRandomInt(max) { + return Math.floor(Math.random() * Math.floor(max)); + } + + //////////////////////// + // Partie backgrounds // + //////////////////////// + var i = getRandomInt(backgroundImages.length); //Prend comme valeur le nombre d'éléments que contient la liste + var b = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + $(".background").css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + setInterval(function () { + b = i; + i = getRandomInt(backgroundImages.length); + while (i == b) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + i = getRandomInt(backgroundImages.length); + } + $(".background").fadeOut("slow", function () { + $(this).css("background-image", "url(admin/upload/" + backgroundImages[i] + ")"); + $(this).fadeIn("slow"); + }); + }, timeBackChange); + + ////////////////////////// + // Partie Posts/astuces // + ////////////////////////// + var o = getRandomInt(loadingPostsText.length); //Prend comme valeur le nombre d'éléments que contient la liste + var c = 0; //Sera la variable temporaire pour vérifier que l'objet suivant ne sera pas le même + + <?php + if ($oldWebBrowser == true) { ?> + $("#postText").html("<h1>Hep hep hep!</h1><p>Il semblerait que tu n'utilises pas la Bêta Chromium de Garry's Mod!<br>Le naviguateur intégré est obsolète et ertains éléments risquent de en pas s'afficher correctement. Penses à faire le changement!</p>"); + $("#postImage").attr("src", "themes/<?=getParameters("theme")?>/assets/images/postAwesomium.png"); + <?php } else { ?> + $("#postText").html(loadingPostsText[0]); + $("#postImage").attr("src", loadingPostsImages[0]); + <?php } ?> + + setInterval(function () { + c = o; + o = getRandomInt(loadingPostsText.length); + while (o == c) { //Tant que l'objet suivant sera le même, il génèrera un nouveau nombre + o = getRandomInt(loadingPostsText.length); + } + + $(".loadingPosts").fadeOut("slow", function () { + $("#postText").html(loadingPostsText[c]); + $("#postImage").attr("src", loadingPostsImages[c]); + $(this).fadeIn("slow"); + width = 0; + $("#postBar").css("width", width + "%"); + }); + + }, timePostChange); + + $(document).ready(function() { + var backMusic = document.getElementById("backMusic"); + backMusic.volume = 0.3; + backMusic.controls = false; + + + function player(x) { + var i = 0; + backMusic.src = playlist[x]; // x is the index number of the playlist array + backMusic.load(); // use the load method when changing src + backMusic.play(); + backMusic.onended = function() { // Once the initial file is played it plays the rest of the files + /* This would be better as a 'for' loop */ + i++; + if (i > 2) { // ... Repeat + i = 0; // ^ + } // ^ + backMusic.src = playlist[i]; // Rinse, ^ + backMusic.load(); // Lather, ^ + backMusic.play(); // and.....^ + } + } + player(0); // Call the player() function at 0 index of playlist array + }); + + + </script> +</body> +</html> \ No newline at end of file diff --git a/themes/sunvibes/theme.json b/themes/sunvibes/theme.json new file mode 100644 index 0000000000000000000000000000000000000000..727d3d1bf0a2d9dc5311aba25ee43928f9e2f249 --- /dev/null +++ b/themes/sunvibes/theme.json @@ -0,0 +1,11 @@ +{ + "name": "sunvibes", + "showname": "Sun Vibes", + "version": "1.0", + "compatible": "1.1c", + "author": "SofianeLasri", + "description": "Ressentez l'été, les plages et la chaleur. :D", + "index": "index.php", + "features": ["dynamicBackgrounds", "tips", "musics"], + "include": "assets/includes/customFeatures.php" +} \ No newline at end of file