| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900 | 
							- from __future__ import unicode_literals
 
- import binascii
 
- import collections
 
- import email
 
- import getpass
 
- import io
 
- import optparse
 
- import os
 
- import re
 
- import shlex
 
- import shutil
 
- import socket
 
- import struct
 
- import subprocess
 
- import sys
 
- import itertools
 
- import xml.etree.ElementTree
 
- try:
 
-     import urllib.request as compat_urllib_request
 
- except ImportError:  # Python 2
 
-     import urllib2 as compat_urllib_request
 
- try:
 
-     import urllib.error as compat_urllib_error
 
- except ImportError:  # Python 2
 
-     import urllib2 as compat_urllib_error
 
- try:
 
-     import urllib.parse as compat_urllib_parse
 
- except ImportError:  # Python 2
 
-     import urllib as compat_urllib_parse
 
- try:
 
-     from urllib.parse import urlparse as compat_urllib_parse_urlparse
 
- except ImportError:  # Python 2
 
-     from urlparse import urlparse as compat_urllib_parse_urlparse
 
- try:
 
-     import urllib.parse as compat_urlparse
 
- except ImportError:  # Python 2
 
-     import urlparse as compat_urlparse
 
- try:
 
-     import urllib.response as compat_urllib_response
 
- except ImportError:  # Python 2
 
-     import urllib as compat_urllib_response
 
- try:
 
-     import http.cookiejar as compat_cookiejar
 
- except ImportError:  # Python 2
 
-     import cookielib as compat_cookiejar
 
- try:
 
-     import http.cookies as compat_cookies
 
- except ImportError:  # Python 2
 
-     import Cookie as compat_cookies
 
- try:
 
-     import html.entities as compat_html_entities
 
- except ImportError:  # Python 2
 
-     import htmlentitydefs as compat_html_entities
 
- try:  # Python >= 3.3
 
-     compat_html_entities_html5 = compat_html_entities.html5
 
- except AttributeError:
 
-     # Copied from CPython 3.5.1 html/entities.py
 
-     compat_html_entities_html5 = {
 
-         'Aacute': '\xc1',
 
-         'aacute': '\xe1',
 
-         'Aacute;': '\xc1',
 
-         'aacute;': '\xe1',
 
-         'Abreve;': '\u0102',
 
-         'abreve;': '\u0103',
 
-         'ac;': '\u223e',
 
-         'acd;': '\u223f',
 
-         'acE;': '\u223e\u0333',
 
-         'Acirc': '\xc2',
 
-         'acirc': '\xe2',
 
-         'Acirc;': '\xc2',
 
-         'acirc;': '\xe2',
 
-         'acute': '\xb4',
 
-         'acute;': '\xb4',
 
-         'Acy;': '\u0410',
 
-         'acy;': '\u0430',
 
-         'AElig': '\xc6',
 
-         'aelig': '\xe6',
 
-         'AElig;': '\xc6',
 
-         'aelig;': '\xe6',
 
-         'af;': '\u2061',
 
-         'Afr;': '\U0001d504',
 
-         'afr;': '\U0001d51e',
 
-         'Agrave': '\xc0',
 
-         'agrave': '\xe0',
 
-         'Agrave;': '\xc0',
 
-         'agrave;': '\xe0',
 
-         'alefsym;': '\u2135',
 
-         'aleph;': '\u2135',
 
-         'Alpha;': '\u0391',
 
-         'alpha;': '\u03b1',
 
-         'Amacr;': '\u0100',
 
-         'amacr;': '\u0101',
 
-         'amalg;': '\u2a3f',
 
-         'AMP': '&',
 
-         'amp': '&',
 
-         'AMP;': '&',
 
-         'amp;': '&',
 
-         'And;': '\u2a53',
 
-         'and;': '\u2227',
 
-         'andand;': '\u2a55',
 
-         'andd;': '\u2a5c',
 
-         'andslope;': '\u2a58',
 
-         'andv;': '\u2a5a',
 
-         'ang;': '\u2220',
 
-         'ange;': '\u29a4',
 
-         'angle;': '\u2220',
 
-         'angmsd;': '\u2221',
 
-         'angmsdaa;': '\u29a8',
 
-         'angmsdab;': '\u29a9',
 
-         'angmsdac;': '\u29aa',
 
-         'angmsdad;': '\u29ab',
 
-         'angmsdae;': '\u29ac',
 
-         'angmsdaf;': '\u29ad',
 
-         'angmsdag;': '\u29ae',
 
-         'angmsdah;': '\u29af',
 
-         'angrt;': '\u221f',
 
-         'angrtvb;': '\u22be',
 
-         'angrtvbd;': '\u299d',
 
-         'angsph;': '\u2222',
 
-         'angst;': '\xc5',
 
-         'angzarr;': '\u237c',
 
-         'Aogon;': '\u0104',
 
-         'aogon;': '\u0105',
 
-         'Aopf;': '\U0001d538',
 
-         'aopf;': '\U0001d552',
 
-         'ap;': '\u2248',
 
-         'apacir;': '\u2a6f',
 
-         'apE;': '\u2a70',
 
-         'ape;': '\u224a',
 
-         'apid;': '\u224b',
 
-         'apos;': "'",
 
-         'ApplyFunction;': '\u2061',
 
-         'approx;': '\u2248',
 
-         'approxeq;': '\u224a',
 
-         'Aring': '\xc5',
 
-         'aring': '\xe5',
 
-         'Aring;': '\xc5',
 
-         'aring;': '\xe5',
 
-         'Ascr;': '\U0001d49c',
 
-         'ascr;': '\U0001d4b6',
 
-         'Assign;': '\u2254',
 
-         'ast;': '*',
 
-         'asymp;': '\u2248',
 
-         'asympeq;': '\u224d',
 
-         'Atilde': '\xc3',
 
-         'atilde': '\xe3',
 
-         'Atilde;': '\xc3',
 
-         'atilde;': '\xe3',
 
-         'Auml': '\xc4',
 
-         'auml': '\xe4',
 
-         'Auml;': '\xc4',
 
-         'auml;': '\xe4',
 
-         'awconint;': '\u2233',
 
-         'awint;': '\u2a11',
 
-         'backcong;': '\u224c',
 
-         'backepsilon;': '\u03f6',
 
-         'backprime;': '\u2035',
 
-         'backsim;': '\u223d',
 
-         'backsimeq;': '\u22cd',
 
-         'Backslash;': '\u2216',
 
-         'Barv;': '\u2ae7',
 
-         'barvee;': '\u22bd',
 
-         'Barwed;': '\u2306',
 
-         'barwed;': '\u2305',
 
-         'barwedge;': '\u2305',
 
-         'bbrk;': '\u23b5',
 
-         'bbrktbrk;': '\u23b6',
 
-         'bcong;': '\u224c',
 
-         'Bcy;': '\u0411',
 
-         'bcy;': '\u0431',
 
-         'bdquo;': '\u201e',
 
-         'becaus;': '\u2235',
 
-         'Because;': '\u2235',
 
-         'because;': '\u2235',
 
-         'bemptyv;': '\u29b0',
 
-         'bepsi;': '\u03f6',
 
-         'bernou;': '\u212c',
 
-         'Bernoullis;': '\u212c',
 
-         'Beta;': '\u0392',
 
-         'beta;': '\u03b2',
 
-         'beth;': '\u2136',
 
-         'between;': '\u226c',
 
-         'Bfr;': '\U0001d505',
 
-         'bfr;': '\U0001d51f',
 
-         'bigcap;': '\u22c2',
 
-         'bigcirc;': '\u25ef',
 
-         'bigcup;': '\u22c3',
 
-         'bigodot;': '\u2a00',
 
-         'bigoplus;': '\u2a01',
 
-         'bigotimes;': '\u2a02',
 
-         'bigsqcup;': '\u2a06',
 
-         'bigstar;': '\u2605',
 
-         'bigtriangledown;': '\u25bd',
 
-         'bigtriangleup;': '\u25b3',
 
-         'biguplus;': '\u2a04',
 
-         'bigvee;': '\u22c1',
 
-         'bigwedge;': '\u22c0',
 
-         'bkarow;': '\u290d',
 
-         'blacklozenge;': '\u29eb',
 
-         'blacksquare;': '\u25aa',
 
-         'blacktriangle;': '\u25b4',
 
-         'blacktriangledown;': '\u25be',
 
-         'blacktriangleleft;': '\u25c2',
 
-         'blacktriangleright;': '\u25b8',
 
-         'blank;': '\u2423',
 
-         'blk12;': '\u2592',
 
-         'blk14;': '\u2591',
 
-         'blk34;': '\u2593',
 
-         'block;': '\u2588',
 
-         'bne;': '=\u20e5',
 
-         'bnequiv;': '\u2261\u20e5',
 
-         'bNot;': '\u2aed',
 
-         'bnot;': '\u2310',
 
-         'Bopf;': '\U0001d539',
 
-         'bopf;': '\U0001d553',
 
-         'bot;': '\u22a5',
 
-         'bottom;': '\u22a5',
 
-         'bowtie;': '\u22c8',
 
-         'boxbox;': '\u29c9',
 
-         'boxDL;': '\u2557',
 
-         'boxDl;': '\u2556',
 
-         'boxdL;': '\u2555',
 
-         'boxdl;': '\u2510',
 
-         'boxDR;': '\u2554',
 
-         'boxDr;': '\u2553',
 
-         'boxdR;': '\u2552',
 
-         'boxdr;': '\u250c',
 
-         'boxH;': '\u2550',
 
-         'boxh;': '\u2500',
 
-         'boxHD;': '\u2566',
 
-         'boxHd;': '\u2564',
 
-         'boxhD;': '\u2565',
 
-         'boxhd;': '\u252c',
 
-         'boxHU;': '\u2569',
 
-         'boxHu;': '\u2567',
 
-         'boxhU;': '\u2568',
 
-         'boxhu;': '\u2534',
 
-         'boxminus;': '\u229f',
 
-         'boxplus;': '\u229e',
 
-         'boxtimes;': '\u22a0',
 
-         'boxUL;': '\u255d',
 
-         'boxUl;': '\u255c',
 
-         'boxuL;': '\u255b',
 
-         'boxul;': '\u2518',
 
-         'boxUR;': '\u255a',
 
-         'boxUr;': '\u2559',
 
-         'boxuR;': '\u2558',
 
-         'boxur;': '\u2514',
 
-         'boxV;': '\u2551',
 
-         'boxv;': '\u2502',
 
-         'boxVH;': '\u256c',
 
-         'boxVh;': '\u256b',
 
-         'boxvH;': '\u256a',
 
-         'boxvh;': '\u253c',
 
-         'boxVL;': '\u2563',
 
-         'boxVl;': '\u2562',
 
-         'boxvL;': '\u2561',
 
-         'boxvl;': '\u2524',
 
-         'boxVR;': '\u2560',
 
-         'boxVr;': '\u255f',
 
-         'boxvR;': '\u255e',
 
-         'boxvr;': '\u251c',
 
-         'bprime;': '\u2035',
 
-         'Breve;': '\u02d8',
 
-         'breve;': '\u02d8',
 
-         'brvbar': '\xa6',
 
-         'brvbar;': '\xa6',
 
-         'Bscr;': '\u212c',
 
-         'bscr;': '\U0001d4b7',
 
-         'bsemi;': '\u204f',
 
-         'bsim;': '\u223d',
 
-         'bsime;': '\u22cd',
 
-         'bsol;': '\\',
 
-         'bsolb;': '\u29c5',
 
-         'bsolhsub;': '\u27c8',
 
-         'bull;': '\u2022',
 
-         'bullet;': '\u2022',
 
-         'bump;': '\u224e',
 
-         'bumpE;': '\u2aae',
 
-         'bumpe;': '\u224f',
 
-         'Bumpeq;': '\u224e',
 
-         'bumpeq;': '\u224f',
 
-         'Cacute;': '\u0106',
 
-         'cacute;': '\u0107',
 
-         'Cap;': '\u22d2',
 
-         'cap;': '\u2229',
 
-         'capand;': '\u2a44',
 
-         'capbrcup;': '\u2a49',
 
-         'capcap;': '\u2a4b',
 
-         'capcup;': '\u2a47',
 
-         'capdot;': '\u2a40',
 
-         'CapitalDifferentialD;': '\u2145',
 
-         'caps;': '\u2229\ufe00',
 
-         'caret;': '\u2041',
 
-         'caron;': '\u02c7',
 
-         'Cayleys;': '\u212d',
 
-         'ccaps;': '\u2a4d',
 
-         'Ccaron;': '\u010c',
 
-         'ccaron;': '\u010d',
 
-         'Ccedil': '\xc7',
 
-         'ccedil': '\xe7',
 
-         'Ccedil;': '\xc7',
 
-         'ccedil;': '\xe7',
 
-         'Ccirc;': '\u0108',
 
-         'ccirc;': '\u0109',
 
-         'Cconint;': '\u2230',
 
-         'ccups;': '\u2a4c',
 
-         'ccupssm;': '\u2a50',
 
-         'Cdot;': '\u010a',
 
-         'cdot;': '\u010b',
 
-         'cedil': '\xb8',
 
-         'cedil;': '\xb8',
 
-         'Cedilla;': '\xb8',
 
-         'cemptyv;': '\u29b2',
 
-         'cent': '\xa2',
 
-         'cent;': '\xa2',
 
-         'CenterDot;': '\xb7',
 
-         'centerdot;': '\xb7',
 
-         'Cfr;': '\u212d',
 
-         'cfr;': '\U0001d520',
 
-         'CHcy;': '\u0427',
 
-         'chcy;': '\u0447',
 
-         'check;': '\u2713',
 
-         'checkmark;': '\u2713',
 
-         'Chi;': '\u03a7',
 
-         'chi;': '\u03c7',
 
-         'cir;': '\u25cb',
 
-         'circ;': '\u02c6',
 
-         'circeq;': '\u2257',
 
-         'circlearrowleft;': '\u21ba',
 
-         'circlearrowright;': '\u21bb',
 
-         'circledast;': '\u229b',
 
-         'circledcirc;': '\u229a',
 
-         'circleddash;': '\u229d',
 
-         'CircleDot;': '\u2299',
 
-         'circledR;': '\xae',
 
-         'circledS;': '\u24c8',
 
-         'CircleMinus;': '\u2296',
 
-         'CirclePlus;': '\u2295',
 
-         'CircleTimes;': '\u2297',
 
-         'cirE;': '\u29c3',
 
-         'cire;': '\u2257',
 
-         'cirfnint;': '\u2a10',
 
-         'cirmid;': '\u2aef',
 
-         'cirscir;': '\u29c2',
 
-         'ClockwiseContourIntegral;': '\u2232',
 
-         'CloseCurlyDoubleQuote;': '\u201d',
 
-         'CloseCurlyQuote;': '\u2019',
 
-         'clubs;': '\u2663',
 
-         'clubsuit;': '\u2663',
 
-         'Colon;': '\u2237',
 
-         'colon;': ':',
 
-         'Colone;': '\u2a74',
 
-         'colone;': '\u2254',
 
-         'coloneq;': '\u2254',
 
-         'comma;': ',',
 
-         'commat;': '@',
 
-         'comp;': '\u2201',
 
-         'compfn;': '\u2218',
 
-         'complement;': '\u2201',
 
-         'complexes;': '\u2102',
 
-         'cong;': '\u2245',
 
-         'congdot;': '\u2a6d',
 
-         'Congruent;': '\u2261',
 
-         'Conint;': '\u222f',
 
-         'conint;': '\u222e',
 
-         'ContourIntegral;': '\u222e',
 
-         'Copf;': '\u2102',
 
-         'copf;': '\U0001d554',
 
-         'coprod;': '\u2210',
 
-         'Coproduct;': '\u2210',
 
-         'COPY': '\xa9',
 
-         'copy': '\xa9',
 
-         'COPY;': '\xa9',
 
-         'copy;': '\xa9',
 
-         'copysr;': '\u2117',
 
-         'CounterClockwiseContourIntegral;': '\u2233',
 
-         'crarr;': '\u21b5',
 
-         'Cross;': '\u2a2f',
 
-         'cross;': '\u2717',
 
-         'Cscr;': '\U0001d49e',
 
-         'cscr;': '\U0001d4b8',
 
-         'csub;': '\u2acf',
 
-         'csube;': '\u2ad1',
 
-         'csup;': '\u2ad0',
 
-         'csupe;': '\u2ad2',
 
-         'ctdot;': '\u22ef',
 
-         'cudarrl;': '\u2938',
 
-         'cudarrr;': '\u2935',
 
-         'cuepr;': '\u22de',
 
-         'cuesc;': '\u22df',
 
-         'cularr;': '\u21b6',
 
-         'cularrp;': '\u293d',
 
-         'Cup;': '\u22d3',
 
-         'cup;': '\u222a',
 
-         'cupbrcap;': '\u2a48',
 
-         'CupCap;': '\u224d',
 
-         'cupcap;': '\u2a46',
 
-         'cupcup;': '\u2a4a',
 
-         'cupdot;': '\u228d',
 
-         'cupor;': '\u2a45',
 
-         'cups;': '\u222a\ufe00',
 
-         'curarr;': '\u21b7',
 
-         'curarrm;': '\u293c',
 
-         'curlyeqprec;': '\u22de',
 
-         'curlyeqsucc;': '\u22df',
 
-         'curlyvee;': '\u22ce',
 
-         'curlywedge;': '\u22cf',
 
-         'curren': '\xa4',
 
-         'curren;': '\xa4',
 
-         'curvearrowleft;': '\u21b6',
 
-         'curvearrowright;': '\u21b7',
 
-         'cuvee;': '\u22ce',
 
-         'cuwed;': '\u22cf',
 
-         'cwconint;': '\u2232',
 
-         'cwint;': '\u2231',
 
-         'cylcty;': '\u232d',
 
-         'Dagger;': '\u2021',
 
-         'dagger;': '\u2020',
 
-         'daleth;': '\u2138',
 
-         'Darr;': '\u21a1',
 
-         'dArr;': '\u21d3',
 
-         'darr;': '\u2193',
 
-         'dash;': '\u2010',
 
-         'Dashv;': '\u2ae4',
 
-         'dashv;': '\u22a3',
 
-         'dbkarow;': '\u290f',
 
-         'dblac;': '\u02dd',
 
-         'Dcaron;': '\u010e',
 
-         'dcaron;': '\u010f',
 
-         'Dcy;': '\u0414',
 
-         'dcy;': '\u0434',
 
-         'DD;': '\u2145',
 
-         'dd;': '\u2146',
 
-         'ddagger;': '\u2021',
 
-         'ddarr;': '\u21ca',
 
-         'DDotrahd;': '\u2911',
 
-         'ddotseq;': '\u2a77',
 
-         'deg': '\xb0',
 
-         'deg;': '\xb0',
 
-         'Del;': '\u2207',
 
-         'Delta;': '\u0394',
 
-         'delta;': '\u03b4',
 
-         'demptyv;': '\u29b1',
 
-         'dfisht;': '\u297f',
 
-         'Dfr;': '\U0001d507',
 
-         'dfr;': '\U0001d521',
 
-         'dHar;': '\u2965',
 
-         'dharl;': '\u21c3',
 
-         'dharr;': '\u21c2',
 
-         'DiacriticalAcute;': '\xb4',
 
-         'DiacriticalDot;': '\u02d9',
 
-         'DiacriticalDoubleAcute;': '\u02dd',
 
-         'DiacriticalGrave;': '`',
 
-         'DiacriticalTilde;': '\u02dc',
 
-         'diam;': '\u22c4',
 
-         'Diamond;': '\u22c4',
 
-         'diamond;': '\u22c4',
 
-         'diamondsuit;': '\u2666',
 
-         'diams;': '\u2666',
 
-         'die;': '\xa8',
 
-         'DifferentialD;': '\u2146',
 
-         'digamma;': '\u03dd',
 
-         'disin;': '\u22f2',
 
-         'div;': '\xf7',
 
-         'divide': '\xf7',
 
-         'divide;': '\xf7',
 
-         'divideontimes;': '\u22c7',
 
-         'divonx;': '\u22c7',
 
-         'DJcy;': '\u0402',
 
-         'djcy;': '\u0452',
 
-         'dlcorn;': '\u231e',
 
-         'dlcrop;': '\u230d',
 
-         'dollar;': '$',
 
-         'Dopf;': '\U0001d53b',
 
-         'dopf;': '\U0001d555',
 
-         'Dot;': '\xa8',
 
-         'dot;': '\u02d9',
 
-         'DotDot;': '\u20dc',
 
-         'doteq;': '\u2250',
 
-         'doteqdot;': '\u2251',
 
-         'DotEqual;': '\u2250',
 
-         'dotminus;': '\u2238',
 
-         'dotplus;': '\u2214',
 
-         'dotsquare;': '\u22a1',
 
-         'doublebarwedge;': '\u2306',
 
-         'DoubleContourIntegral;': '\u222f',
 
-         'DoubleDot;': '\xa8',
 
-         'DoubleDownArrow;': '\u21d3',
 
-         'DoubleLeftArrow;': '\u21d0',
 
-         'DoubleLeftRightArrow;': '\u21d4',
 
-         'DoubleLeftTee;': '\u2ae4',
 
-         'DoubleLongLeftArrow;': '\u27f8',
 
-         'DoubleLongLeftRightArrow;': '\u27fa',
 
-         'DoubleLongRightArrow;': '\u27f9',
 
-         'DoubleRightArrow;': '\u21d2',
 
-         'DoubleRightTee;': '\u22a8',
 
-         'DoubleUpArrow;': '\u21d1',
 
-         'DoubleUpDownArrow;': '\u21d5',
 
-         'DoubleVerticalBar;': '\u2225',
 
-         'DownArrow;': '\u2193',
 
-         'Downarrow;': '\u21d3',
 
-         'downarrow;': '\u2193',
 
-         'DownArrowBar;': '\u2913',
 
-         'DownArrowUpArrow;': '\u21f5',
 
-         'DownBreve;': '\u0311',
 
-         'downdownarrows;': '\u21ca',
 
-         'downharpoonleft;': '\u21c3',
 
-         'downharpoonright;': '\u21c2',
 
-         'DownLeftRightVector;': '\u2950',
 
-         'DownLeftTeeVector;': '\u295e',
 
-         'DownLeftVector;': '\u21bd',
 
-         'DownLeftVectorBar;': '\u2956',
 
-         'DownRightTeeVector;': '\u295f',
 
-         'DownRightVector;': '\u21c1',
 
-         'DownRightVectorBar;': '\u2957',
 
-         'DownTee;': '\u22a4',
 
-         'DownTeeArrow;': '\u21a7',
 
-         'drbkarow;': '\u2910',
 
-         'drcorn;': '\u231f',
 
-         'drcrop;': '\u230c',
 
-         'Dscr;': '\U0001d49f',
 
-         'dscr;': '\U0001d4b9',
 
-         'DScy;': '\u0405',
 
-         'dscy;': '\u0455',
 
-         'dsol;': '\u29f6',
 
-         'Dstrok;': '\u0110',
 
-         'dstrok;': '\u0111',
 
-         'dtdot;': '\u22f1',
 
-         'dtri;': '\u25bf',
 
-         'dtrif;': '\u25be',
 
-         'duarr;': '\u21f5',
 
-         'duhar;': '\u296f',
 
-         'dwangle;': '\u29a6',
 
-         'DZcy;': '\u040f',
 
-         'dzcy;': '\u045f',
 
-         'dzigrarr;': '\u27ff',
 
-         'Eacute': '\xc9',
 
-         'eacute': '\xe9',
 
-         'Eacute;': '\xc9',
 
-         'eacute;': '\xe9',
 
-         'easter;': '\u2a6e',
 
-         'Ecaron;': '\u011a',
 
-         'ecaron;': '\u011b',
 
-         'ecir;': '\u2256',
 
-         'Ecirc': '\xca',
 
-         'ecirc': '\xea',
 
-         'Ecirc;': '\xca',
 
-         'ecirc;': '\xea',
 
-         'ecolon;': '\u2255',
 
-         'Ecy;': '\u042d',
 
-         'ecy;': '\u044d',
 
-         'eDDot;': '\u2a77',
 
-         'Edot;': '\u0116',
 
-         'eDot;': '\u2251',
 
-         'edot;': '\u0117',
 
-         'ee;': '\u2147',
 
-         'efDot;': '\u2252',
 
-         'Efr;': '\U0001d508',
 
-         'efr;': '\U0001d522',
 
-         'eg;': '\u2a9a',
 
-         'Egrave': '\xc8',
 
-         'egrave': '\xe8',
 
-         'Egrave;': '\xc8',
 
-         'egrave;': '\xe8',
 
-         'egs;': '\u2a96',
 
-         'egsdot;': '\u2a98',
 
-         'el;': '\u2a99',
 
-         'Element;': '\u2208',
 
-         'elinters;': '\u23e7',
 
-         'ell;': '\u2113',
 
-         'els;': '\u2a95',
 
-         'elsdot;': '\u2a97',
 
-         'Emacr;': '\u0112',
 
-         'emacr;': '\u0113',
 
-         'empty;': '\u2205',
 
-         'emptyset;': '\u2205',
 
-         'EmptySmallSquare;': '\u25fb',
 
-         'emptyv;': '\u2205',
 
-         'EmptyVerySmallSquare;': '\u25ab',
 
-         'emsp13;': '\u2004',
 
-         'emsp14;': '\u2005',
 
-         'emsp;': '\u2003',
 
-         'ENG;': '\u014a',
 
-         'eng;': '\u014b',
 
-         'ensp;': '\u2002',
 
-         'Eogon;': '\u0118',
 
-         'eogon;': '\u0119',
 
-         'Eopf;': '\U0001d53c',
 
-         'eopf;': '\U0001d556',
 
-         'epar;': '\u22d5',
 
-         'eparsl;': '\u29e3',
 
-         'eplus;': '\u2a71',
 
-         'epsi;': '\u03b5',
 
-         'Epsilon;': '\u0395',
 
-         'epsilon;': '\u03b5',
 
-         'epsiv;': '\u03f5',
 
-         'eqcirc;': '\u2256',
 
-         'eqcolon;': '\u2255',
 
-         'eqsim;': '\u2242',
 
-         'eqslantgtr;': '\u2a96',
 
-         'eqslantless;': '\u2a95',
 
-         'Equal;': '\u2a75',
 
-         'equals;': '=',
 
-         'EqualTilde;': '\u2242',
 
-         'equest;': '\u225f',
 
-         'Equilibrium;': '\u21cc',
 
-         'equiv;': '\u2261',
 
-         'equivDD;': '\u2a78',
 
-         'eqvparsl;': '\u29e5',
 
-         'erarr;': '\u2971',
 
-         'erDot;': '\u2253',
 
-         'Escr;': '\u2130',
 
-         'escr;': '\u212f',
 
-         'esdot;': '\u2250',
 
-         'Esim;': '\u2a73',
 
-         'esim;': '\u2242',
 
-         'Eta;': '\u0397',
 
-         'eta;': '\u03b7',
 
-         'ETH': '\xd0',
 
-         'eth': '\xf0',
 
-         'ETH;': '\xd0',
 
-         'eth;': '\xf0',
 
-         'Euml': '\xcb',
 
-         'euml': '\xeb',
 
-         'Euml;': '\xcb',
 
-         'euml;': '\xeb',
 
-         'euro;': '\u20ac',
 
-         'excl;': '!',
 
-         'exist;': '\u2203',
 
-         'Exists;': '\u2203',
 
-         'expectation;': '\u2130',
 
-         'ExponentialE;': '\u2147',
 
-         'exponentiale;': '\u2147',
 
-         'fallingdotseq;': '\u2252',
 
-         'Fcy;': '\u0424',
 
-         'fcy;': '\u0444',
 
-         'female;': '\u2640',
 
-         'ffilig;': '\ufb03',
 
-         'fflig;': '\ufb00',
 
-         'ffllig;': '\ufb04',
 
-         'Ffr;': '\U0001d509',
 
-         'ffr;': '\U0001d523',
 
-         'filig;': '\ufb01',
 
-         'FilledSmallSquare;': '\u25fc',
 
-         'FilledVerySmallSquare;': '\u25aa',
 
-         'fjlig;': 'fj',
 
-         'flat;': '\u266d',
 
-         'fllig;': '\ufb02',
 
-         'fltns;': '\u25b1',
 
-         'fnof;': '\u0192',
 
-         'Fopf;': '\U0001d53d',
 
-         'fopf;': '\U0001d557',
 
-         'ForAll;': '\u2200',
 
-         'forall;': '\u2200',
 
-         'fork;': '\u22d4',
 
-         'forkv;': '\u2ad9',
 
-         'Fouriertrf;': '\u2131',
 
-         'fpartint;': '\u2a0d',
 
-         'frac12': '\xbd',
 
-         'frac12;': '\xbd',
 
-         'frac13;': '\u2153',
 
-         'frac14': '\xbc',
 
-         'frac14;': '\xbc',
 
-         'frac15;': '\u2155',
 
-         'frac16;': '\u2159',
 
-         'frac18;': '\u215b',
 
-         'frac23;': '\u2154',
 
-         'frac25;': '\u2156',
 
-         'frac34': '\xbe',
 
-         'frac34;': '\xbe',
 
-         'frac35;': '\u2157',
 
-         'frac38;': '\u215c',
 
-         'frac45;': '\u2158',
 
-         'frac56;': '\u215a',
 
-         'frac58;': '\u215d',
 
-         'frac78;': '\u215e',
 
-         'frasl;': '\u2044',
 
-         'frown;': '\u2322',
 
-         'Fscr;': '\u2131',
 
-         'fscr;': '\U0001d4bb',
 
-         'gacute;': '\u01f5',
 
-         'Gamma;': '\u0393',
 
-         'gamma;': '\u03b3',
 
-         'Gammad;': '\u03dc',
 
-         'gammad;': '\u03dd',
 
-         'gap;': '\u2a86',
 
-         'Gbreve;': '\u011e',
 
-         'gbreve;': '\u011f',
 
-         'Gcedil;': '\u0122',
 
-         'Gcirc;': '\u011c',
 
-         'gcirc;': '\u011d',
 
-         'Gcy;': '\u0413',
 
-         'gcy;': '\u0433',
 
-         'Gdot;': '\u0120',
 
-         'gdot;': '\u0121',
 
-         'gE;': '\u2267',
 
-         'ge;': '\u2265',
 
-         'gEl;': '\u2a8c',
 
-         'gel;': '\u22db',
 
-         'geq;': '\u2265',
 
-         'geqq;': '\u2267',
 
-         'geqslant;': '\u2a7e',
 
-         'ges;': '\u2a7e',
 
-         'gescc;': '\u2aa9',
 
-         'gesdot;': '\u2a80',
 
-         'gesdoto;': '\u2a82',
 
-         'gesdotol;': '\u2a84',
 
-         'gesl;': '\u22db\ufe00',
 
-         'gesles;': '\u2a94',
 
-         'Gfr;': '\U0001d50a',
 
-         'gfr;': '\U0001d524',
 
-         'Gg;': '\u22d9',
 
-         'gg;': '\u226b',
 
-         'ggg;': '\u22d9',
 
-         'gimel;': '\u2137',
 
-         'GJcy;': '\u0403',
 
-         'gjcy;': '\u0453',
 
-         'gl;': '\u2277',
 
-         'gla;': '\u2aa5',
 
-         'glE;': '\u2a92',
 
-         'glj;': '\u2aa4',
 
-         'gnap;': '\u2a8a',
 
-         'gnapprox;': '\u2a8a',
 
-         'gnE;': '\u2269',
 
-         'gne;': '\u2a88',
 
-         'gneq;': '\u2a88',
 
-         'gneqq;': '\u2269',
 
-         'gnsim;': '\u22e7',
 
-         'Gopf;': '\U0001d53e',
 
-         'gopf;': '\U0001d558',
 
-         'grave;': '`',
 
-         'GreaterEqual;': '\u2265',
 
-         'GreaterEqualLess;': '\u22db',
 
-         'GreaterFullEqual;': '\u2267',
 
-         'GreaterGreater;': '\u2aa2',
 
-         'GreaterLess;': '\u2277',
 
-         'GreaterSlantEqual;': '\u2a7e',
 
-         'GreaterTilde;': '\u2273',
 
-         'Gscr;': '\U0001d4a2',
 
-         'gscr;': '\u210a',
 
-         'gsim;': '\u2273',
 
-         'gsime;': '\u2a8e',
 
-         'gsiml;': '\u2a90',
 
-         'GT': '>',
 
-         'gt': '>',
 
-         'GT;': '>',
 
-         'Gt;': '\u226b',
 
-         'gt;': '>',
 
-         'gtcc;': '\u2aa7',
 
-         'gtcir;': '\u2a7a',
 
-         'gtdot;': '\u22d7',
 
-         'gtlPar;': '\u2995',
 
-         'gtquest;': '\u2a7c',
 
-         'gtrapprox;': '\u2a86',
 
-         'gtrarr;': '\u2978',
 
-         'gtrdot;': '\u22d7',
 
-         'gtreqless;': '\u22db',
 
-         'gtreqqless;': '\u2a8c',
 
-         'gtrless;': '\u2277',
 
-         'gtrsim;': '\u2273',
 
-         'gvertneqq;': '\u2269\ufe00',
 
-         'gvnE;': '\u2269\ufe00',
 
-         'Hacek;': '\u02c7',
 
-         'hairsp;': '\u200a',
 
-         'half;': '\xbd',
 
-         'hamilt;': '\u210b',
 
-         'HARDcy;': '\u042a',
 
-         'hardcy;': '\u044a',
 
-         'hArr;': '\u21d4',
 
-         'harr;': '\u2194',
 
-         'harrcir;': '\u2948',
 
-         'harrw;': '\u21ad',
 
-         'Hat;': '^',
 
-         'hbar;': '\u210f',
 
-         'Hcirc;': '\u0124',
 
-         'hcirc;': '\u0125',
 
-         'hearts;': '\u2665',
 
-         'heartsuit;': '\u2665',
 
-         'hellip;': '\u2026',
 
-         'hercon;': '\u22b9',
 
-         'Hfr;': '\u210c',
 
-         'hfr;': '\U0001d525',
 
-         'HilbertSpace;': '\u210b',
 
-         'hksearow;': '\u2925',
 
-         'hkswarow;': '\u2926',
 
-         'hoarr;': '\u21ff',
 
-         'homtht;': '\u223b',
 
-         'hookleftarrow;': '\u21a9',
 
-         'hookrightarrow;': '\u21aa',
 
-         'Hopf;': '\u210d',
 
-         'hopf;': '\U0001d559',
 
-         'horbar;': '\u2015',
 
-         'HorizontalLine;': '\u2500',
 
-         'Hscr;': '\u210b',
 
-         'hscr;': '\U0001d4bd',
 
-         'hslash;': '\u210f',
 
-         'Hstrok;': '\u0126',
 
-         'hstrok;': '\u0127',
 
-         'HumpDownHump;': '\u224e',
 
-         'HumpEqual;': '\u224f',
 
-         'hybull;': '\u2043',
 
-         'hyphen;': '\u2010',
 
-         'Iacute': '\xcd',
 
-         'iacute': '\xed',
 
-         'Iacute;': '\xcd',
 
-         'iacute;': '\xed',
 
-         'ic;': '\u2063',
 
-         'Icirc': '\xce',
 
-         'icirc': '\xee',
 
-         'Icirc;': '\xce',
 
-         'icirc;': '\xee',
 
-         'Icy;': '\u0418',
 
-         'icy;': '\u0438',
 
-         'Idot;': '\u0130',
 
-         'IEcy;': '\u0415',
 
-         'iecy;': '\u0435',
 
-         'iexcl': '\xa1',
 
-         'iexcl;': '\xa1',
 
-         'iff;': '\u21d4',
 
-         'Ifr;': '\u2111',
 
-         'ifr;': '\U0001d526',
 
-         'Igrave': '\xcc',
 
-         'igrave': '\xec',
 
-         'Igrave;': '\xcc',
 
-         'igrave;': '\xec',
 
-         'ii;': '\u2148',
 
-         'iiiint;': '\u2a0c',
 
-         'iiint;': '\u222d',
 
-         'iinfin;': '\u29dc',
 
-         'iiota;': '\u2129',
 
-         'IJlig;': '\u0132',
 
-         'ijlig;': '\u0133',
 
-         'Im;': '\u2111',
 
-         'Imacr;': '\u012a',
 
-         'imacr;': '\u012b',
 
-         'image;': '\u2111',
 
-         'ImaginaryI;': '\u2148',
 
-         'imagline;': '\u2110',
 
-         'imagpart;': '\u2111',
 
-         'imath;': '\u0131',
 
-         'imof;': '\u22b7',
 
-         'imped;': '\u01b5',
 
-         'Implies;': '\u21d2',
 
-         'in;': '\u2208',
 
-         'incare;': '\u2105',
 
-         'infin;': '\u221e',
 
-         'infintie;': '\u29dd',
 
-         'inodot;': '\u0131',
 
-         'Int;': '\u222c',
 
-         'int;': '\u222b',
 
-         'intcal;': '\u22ba',
 
-         'integers;': '\u2124',
 
-         'Integral;': '\u222b',
 
-         'intercal;': '\u22ba',
 
-         'Intersection;': '\u22c2',
 
-         'intlarhk;': '\u2a17',
 
-         'intprod;': '\u2a3c',
 
-         'InvisibleComma;': '\u2063',
 
-         'InvisibleTimes;': '\u2062',
 
-         'IOcy;': '\u0401',
 
-         'iocy;': '\u0451',
 
-         'Iogon;': '\u012e',
 
-         'iogon;': '\u012f',
 
-         'Iopf;': '\U0001d540',
 
-         'iopf;': '\U0001d55a',
 
-         'Iota;': '\u0399',
 
-         'iota;': '\u03b9',
 
-         'iprod;': '\u2a3c',
 
-         'iquest': '\xbf',
 
-         'iquest;': '\xbf',
 
-         'Iscr;': '\u2110',
 
-         'iscr;': '\U0001d4be',
 
-         'isin;': '\u2208',
 
-         'isindot;': '\u22f5',
 
-         'isinE;': '\u22f9',
 
-         'isins;': '\u22f4',
 
-         'isinsv;': '\u22f3',
 
-         'isinv;': '\u2208',
 
-         'it;': '\u2062',
 
-         'Itilde;': '\u0128',
 
-         'itilde;': '\u0129',
 
-         'Iukcy;': '\u0406',
 
-         'iukcy;': '\u0456',
 
-         'Iuml': '\xcf',
 
-         'iuml': '\xef',
 
-         'Iuml;': '\xcf',
 
-         'iuml;': '\xef',
 
-         'Jcirc;': '\u0134',
 
-         'jcirc;': '\u0135',
 
-         'Jcy;': '\u0419',
 
-         'jcy;': '\u0439',
 
-         'Jfr;': '\U0001d50d',
 
-         'jfr;': '\U0001d527',
 
-         'jmath;': '\u0237',
 
-         'Jopf;': '\U0001d541',
 
-         'jopf;': '\U0001d55b',
 
-         'Jscr;': '\U0001d4a5',
 
-         'jscr;': '\U0001d4bf',
 
-         'Jsercy;': '\u0408',
 
-         'jsercy;': '\u0458',
 
-         'Jukcy;': '\u0404',
 
-         'jukcy;': '\u0454',
 
-         'Kappa;': '\u039a',
 
-         'kappa;': '\u03ba',
 
-         'kappav;': '\u03f0',
 
-         'Kcedil;': '\u0136',
 
-         'kcedil;': '\u0137',
 
-         'Kcy;': '\u041a',
 
-         'kcy;': '\u043a',
 
-         'Kfr;': '\U0001d50e',
 
-         'kfr;': '\U0001d528',
 
-         'kgreen;': '\u0138',
 
-         'KHcy;': '\u0425',
 
-         'khcy;': '\u0445',
 
-         'KJcy;': '\u040c',
 
-         'kjcy;': '\u045c',
 
-         'Kopf;': '\U0001d542',
 
-         'kopf;': '\U0001d55c',
 
-         'Kscr;': '\U0001d4a6',
 
-         'kscr;': '\U0001d4c0',
 
-         'lAarr;': '\u21da',
 
-         'Lacute;': '\u0139',
 
-         'lacute;': '\u013a',
 
-         'laemptyv;': '\u29b4',
 
-         'lagran;': '\u2112',
 
-         'Lambda;': '\u039b',
 
-         'lambda;': '\u03bb',
 
-         'Lang;': '\u27ea',
 
-         'lang;': '\u27e8',
 
-         'langd;': '\u2991',
 
-         'langle;': '\u27e8',
 
-         'lap;': '\u2a85',
 
-         'Laplacetrf;': '\u2112',
 
-         'laquo': '\xab',
 
-         'laquo;': '\xab',
 
-         'Larr;': '\u219e',
 
-         'lArr;': '\u21d0',
 
-         'larr;': '\u2190',
 
-         'larrb;': '\u21e4',
 
-         'larrbfs;': '\u291f',
 
-         'larrfs;': '\u291d',
 
-         'larrhk;': '\u21a9',
 
-         'larrlp;': '\u21ab',
 
-         'larrpl;': '\u2939',
 
-         'larrsim;': '\u2973',
 
-         'larrtl;': '\u21a2',
 
-         'lat;': '\u2aab',
 
-         'lAtail;': '\u291b',
 
-         'latail;': '\u2919',
 
-         'late;': '\u2aad',
 
-         'lates;': '\u2aad\ufe00',
 
-         'lBarr;': '\u290e',
 
-         'lbarr;': '\u290c',
 
-         'lbbrk;': '\u2772',
 
-         'lbrace;': '{',
 
-         'lbrack;': '[',
 
-         'lbrke;': '\u298b',
 
-         'lbrksld;': '\u298f',
 
-         'lbrkslu;': '\u298d',
 
-         'Lcaron;': '\u013d',
 
-         'lcaron;': '\u013e',
 
-         'Lcedil;': '\u013b',
 
-         'lcedil;': '\u013c',
 
-         'lceil;': '\u2308',
 
-         'lcub;': '{',
 
-         'Lcy;': '\u041b',
 
-         'lcy;': '\u043b',
 
-         'ldca;': '\u2936',
 
-         'ldquo;': '\u201c',
 
-         'ldquor;': '\u201e',
 
-         'ldrdhar;': '\u2967',
 
-         'ldrushar;': '\u294b',
 
-         'ldsh;': '\u21b2',
 
-         'lE;': '\u2266',
 
-         'le;': '\u2264',
 
-         'LeftAngleBracket;': '\u27e8',
 
-         'LeftArrow;': '\u2190',
 
-         'Leftarrow;': '\u21d0',
 
-         'leftarrow;': '\u2190',
 
-         'LeftArrowBar;': '\u21e4',
 
-         'LeftArrowRightArrow;': '\u21c6',
 
-         'leftarrowtail;': '\u21a2',
 
-         'LeftCeiling;': '\u2308',
 
-         'LeftDoubleBracket;': '\u27e6',
 
-         'LeftDownTeeVector;': '\u2961',
 
-         'LeftDownVector;': '\u21c3',
 
-         'LeftDownVectorBar;': '\u2959',
 
-         'LeftFloor;': '\u230a',
 
-         'leftharpoondown;': '\u21bd',
 
-         'leftharpoonup;': '\u21bc',
 
-         'leftleftarrows;': '\u21c7',
 
-         'LeftRightArrow;': '\u2194',
 
-         'Leftrightarrow;': '\u21d4',
 
-         'leftrightarrow;': '\u2194',
 
-         'leftrightarrows;': '\u21c6',
 
-         'leftrightharpoons;': '\u21cb',
 
-         'leftrightsquigarrow;': '\u21ad',
 
-         'LeftRightVector;': '\u294e',
 
-         'LeftTee;': '\u22a3',
 
-         'LeftTeeArrow;': '\u21a4',
 
-         'LeftTeeVector;': '\u295a',
 
-         'leftthreetimes;': '\u22cb',
 
-         'LeftTriangle;': '\u22b2',
 
-         'LeftTriangleBar;': '\u29cf',
 
-         'LeftTriangleEqual;': '\u22b4',
 
-         'LeftUpDownVector;': '\u2951',
 
-         'LeftUpTeeVector;': '\u2960',
 
-         'LeftUpVector;': '\u21bf',
 
-         'LeftUpVectorBar;': '\u2958',
 
-         'LeftVector;': '\u21bc',
 
-         'LeftVectorBar;': '\u2952',
 
-         'lEg;': '\u2a8b',
 
-         'leg;': '\u22da',
 
-         'leq;': '\u2264',
 
-         'leqq;': '\u2266',
 
-         'leqslant;': '\u2a7d',
 
-         'les;': '\u2a7d',
 
-         'lescc;': '\u2aa8',
 
-         'lesdot;': '\u2a7f',
 
-         'lesdoto;': '\u2a81',
 
-         'lesdotor;': '\u2a83',
 
-         'lesg;': '\u22da\ufe00',
 
-         'lesges;': '\u2a93',
 
-         'lessapprox;': '\u2a85',
 
-         'lessdot;': '\u22d6',
 
-         'lesseqgtr;': '\u22da',
 
-         'lesseqqgtr;': '\u2a8b',
 
-         'LessEqualGreater;': '\u22da',
 
-         'LessFullEqual;': '\u2266',
 
-         'LessGreater;': '\u2276',
 
-         'lessgtr;': '\u2276',
 
-         'LessLess;': '\u2aa1',
 
-         'lesssim;': '\u2272',
 
-         'LessSlantEqual;': '\u2a7d',
 
-         'LessTilde;': '\u2272',
 
-         'lfisht;': '\u297c',
 
-         'lfloor;': '\u230a',
 
-         'Lfr;': '\U0001d50f',
 
-         'lfr;': '\U0001d529',
 
-         'lg;': '\u2276',
 
-         'lgE;': '\u2a91',
 
-         'lHar;': '\u2962',
 
-         'lhard;': '\u21bd',
 
-         'lharu;': '\u21bc',
 
-         'lharul;': '\u296a',
 
-         'lhblk;': '\u2584',
 
-         'LJcy;': '\u0409',
 
-         'ljcy;': '\u0459',
 
-         'Ll;': '\u22d8',
 
-         'll;': '\u226a',
 
-         'llarr;': '\u21c7',
 
-         'llcorner;': '\u231e',
 
-         'Lleftarrow;': '\u21da',
 
-         'llhard;': '\u296b',
 
-         'lltri;': '\u25fa',
 
-         'Lmidot;': '\u013f',
 
-         'lmidot;': '\u0140',
 
-         'lmoust;': '\u23b0',
 
-         'lmoustache;': '\u23b0',
 
-         'lnap;': '\u2a89',
 
-         'lnapprox;': '\u2a89',
 
-         'lnE;': '\u2268',
 
-         'lne;': '\u2a87',
 
-         'lneq;': '\u2a87',
 
-         'lneqq;': '\u2268',
 
-         'lnsim;': '\u22e6',
 
-         'loang;': '\u27ec',
 
-         'loarr;': '\u21fd',
 
-         'lobrk;': '\u27e6',
 
-         'LongLeftArrow;': '\u27f5',
 
-         'Longleftarrow;': '\u27f8',
 
-         'longleftarrow;': '\u27f5',
 
-         'LongLeftRightArrow;': '\u27f7',
 
-         'Longleftrightarrow;': '\u27fa',
 
-         'longleftrightarrow;': '\u27f7',
 
-         'longmapsto;': '\u27fc',
 
-         'LongRightArrow;': '\u27f6',
 
-         'Longrightarrow;': '\u27f9',
 
-         'longrightarrow;': '\u27f6',
 
-         'looparrowleft;': '\u21ab',
 
-         'looparrowright;': '\u21ac',
 
-         'lopar;': '\u2985',
 
-         'Lopf;': '\U0001d543',
 
-         'lopf;': '\U0001d55d',
 
-         'loplus;': '\u2a2d',
 
-         'lotimes;': '\u2a34',
 
-         'lowast;': '\u2217',
 
-         'lowbar;': '_',
 
-         'LowerLeftArrow;': '\u2199',
 
-         'LowerRightArrow;': '\u2198',
 
-         'loz;': '\u25ca',
 
-         'lozenge;': '\u25ca',
 
-         'lozf;': '\u29eb',
 
-         'lpar;': '(',
 
-         'lparlt;': '\u2993',
 
-         'lrarr;': '\u21c6',
 
-         'lrcorner;': '\u231f',
 
-         'lrhar;': '\u21cb',
 
-         'lrhard;': '\u296d',
 
-         'lrm;': '\u200e',
 
-         'lrtri;': '\u22bf',
 
-         'lsaquo;': '\u2039',
 
-         'Lscr;': '\u2112',
 
-         'lscr;': '\U0001d4c1',
 
-         'Lsh;': '\u21b0',
 
-         'lsh;': '\u21b0',
 
-         'lsim;': '\u2272',
 
-         'lsime;': '\u2a8d',
 
-         'lsimg;': '\u2a8f',
 
-         'lsqb;': '[',
 
-         'lsquo;': '\u2018',
 
-         'lsquor;': '\u201a',
 
-         'Lstrok;': '\u0141',
 
-         'lstrok;': '\u0142',
 
-         'LT': '<',
 
-         'lt': '<',
 
-         'LT;': '<',
 
-         'Lt;': '\u226a',
 
-         'lt;': '<',
 
-         'ltcc;': '\u2aa6',
 
-         'ltcir;': '\u2a79',
 
-         'ltdot;': '\u22d6',
 
-         'lthree;': '\u22cb',
 
-         'ltimes;': '\u22c9',
 
-         'ltlarr;': '\u2976',
 
-         'ltquest;': '\u2a7b',
 
-         'ltri;': '\u25c3',
 
-         'ltrie;': '\u22b4',
 
-         'ltrif;': '\u25c2',
 
-         'ltrPar;': '\u2996',
 
-         'lurdshar;': '\u294a',
 
-         'luruhar;': '\u2966',
 
-         'lvertneqq;': '\u2268\ufe00',
 
-         'lvnE;': '\u2268\ufe00',
 
-         'macr': '\xaf',
 
-         'macr;': '\xaf',
 
-         'male;': '\u2642',
 
-         'malt;': '\u2720',
 
-         'maltese;': '\u2720',
 
-         'Map;': '\u2905',
 
-         'map;': '\u21a6',
 
-         'mapsto;': '\u21a6',
 
-         'mapstodown;': '\u21a7',
 
-         'mapstoleft;': '\u21a4',
 
-         'mapstoup;': '\u21a5',
 
-         'marker;': '\u25ae',
 
-         'mcomma;': '\u2a29',
 
-         'Mcy;': '\u041c',
 
-         'mcy;': '\u043c',
 
-         'mdash;': '\u2014',
 
-         'mDDot;': '\u223a',
 
-         'measuredangle;': '\u2221',
 
-         'MediumSpace;': '\u205f',
 
-         'Mellintrf;': '\u2133',
 
-         'Mfr;': '\U0001d510',
 
-         'mfr;': '\U0001d52a',
 
-         'mho;': '\u2127',
 
-         'micro': '\xb5',
 
-         'micro;': '\xb5',
 
-         'mid;': '\u2223',
 
-         'midast;': '*',
 
-         'midcir;': '\u2af0',
 
-         'middot': '\xb7',
 
-         'middot;': '\xb7',
 
-         'minus;': '\u2212',
 
-         'minusb;': '\u229f',
 
-         'minusd;': '\u2238',
 
-         'minusdu;': '\u2a2a',
 
-         'MinusPlus;': '\u2213',
 
-         'mlcp;': '\u2adb',
 
-         'mldr;': '\u2026',
 
-         'mnplus;': '\u2213',
 
-         'models;': '\u22a7',
 
-         'Mopf;': '\U0001d544',
 
-         'mopf;': '\U0001d55e',
 
-         'mp;': '\u2213',
 
-         'Mscr;': '\u2133',
 
-         'mscr;': '\U0001d4c2',
 
-         'mstpos;': '\u223e',
 
-         'Mu;': '\u039c',
 
-         'mu;': '\u03bc',
 
-         'multimap;': '\u22b8',
 
-         'mumap;': '\u22b8',
 
-         'nabla;': '\u2207',
 
-         'Nacute;': '\u0143',
 
-         'nacute;': '\u0144',
 
-         'nang;': '\u2220\u20d2',
 
-         'nap;': '\u2249',
 
-         'napE;': '\u2a70\u0338',
 
-         'napid;': '\u224b\u0338',
 
-         'napos;': '\u0149',
 
-         'napprox;': '\u2249',
 
-         'natur;': '\u266e',
 
-         'natural;': '\u266e',
 
-         'naturals;': '\u2115',
 
-         'nbsp': '\xa0',
 
-         'nbsp;': '\xa0',
 
-         'nbump;': '\u224e\u0338',
 
-         'nbumpe;': '\u224f\u0338',
 
-         'ncap;': '\u2a43',
 
-         'Ncaron;': '\u0147',
 
-         'ncaron;': '\u0148',
 
-         'Ncedil;': '\u0145',
 
-         'ncedil;': '\u0146',
 
-         'ncong;': '\u2247',
 
-         'ncongdot;': '\u2a6d\u0338',
 
-         'ncup;': '\u2a42',
 
-         'Ncy;': '\u041d',
 
-         'ncy;': '\u043d',
 
-         'ndash;': '\u2013',
 
-         'ne;': '\u2260',
 
-         'nearhk;': '\u2924',
 
-         'neArr;': '\u21d7',
 
-         'nearr;': '\u2197',
 
-         'nearrow;': '\u2197',
 
-         'nedot;': '\u2250\u0338',
 
-         'NegativeMediumSpace;': '\u200b',
 
-         'NegativeThickSpace;': '\u200b',
 
-         'NegativeThinSpace;': '\u200b',
 
-         'NegativeVeryThinSpace;': '\u200b',
 
-         'nequiv;': '\u2262',
 
-         'nesear;': '\u2928',
 
-         'nesim;': '\u2242\u0338',
 
-         'NestedGreaterGreater;': '\u226b',
 
-         'NestedLessLess;': '\u226a',
 
-         'NewLine;': '\n',
 
-         'nexist;': '\u2204',
 
-         'nexists;': '\u2204',
 
-         'Nfr;': '\U0001d511',
 
-         'nfr;': '\U0001d52b',
 
-         'ngE;': '\u2267\u0338',
 
-         'nge;': '\u2271',
 
-         'ngeq;': '\u2271',
 
-         'ngeqq;': '\u2267\u0338',
 
-         'ngeqslant;': '\u2a7e\u0338',
 
-         'nges;': '\u2a7e\u0338',
 
-         'nGg;': '\u22d9\u0338',
 
-         'ngsim;': '\u2275',
 
-         'nGt;': '\u226b\u20d2',
 
-         'ngt;': '\u226f',
 
-         'ngtr;': '\u226f',
 
-         'nGtv;': '\u226b\u0338',
 
-         'nhArr;': '\u21ce',
 
-         'nharr;': '\u21ae',
 
-         'nhpar;': '\u2af2',
 
-         'ni;': '\u220b',
 
-         'nis;': '\u22fc',
 
-         'nisd;': '\u22fa',
 
-         'niv;': '\u220b',
 
-         'NJcy;': '\u040a',
 
-         'njcy;': '\u045a',
 
-         'nlArr;': '\u21cd',
 
-         'nlarr;': '\u219a',
 
-         'nldr;': '\u2025',
 
-         'nlE;': '\u2266\u0338',
 
-         'nle;': '\u2270',
 
-         'nLeftarrow;': '\u21cd',
 
-         'nleftarrow;': '\u219a',
 
-         'nLeftrightarrow;': '\u21ce',
 
-         'nleftrightarrow;': '\u21ae',
 
-         'nleq;': '\u2270',
 
-         'nleqq;': '\u2266\u0338',
 
-         'nleqslant;': '\u2a7d\u0338',
 
-         'nles;': '\u2a7d\u0338',
 
-         'nless;': '\u226e',
 
-         'nLl;': '\u22d8\u0338',
 
-         'nlsim;': '\u2274',
 
-         'nLt;': '\u226a\u20d2',
 
-         'nlt;': '\u226e',
 
-         'nltri;': '\u22ea',
 
-         'nltrie;': '\u22ec',
 
-         'nLtv;': '\u226a\u0338',
 
-         'nmid;': '\u2224',
 
-         'NoBreak;': '\u2060',
 
-         'NonBreakingSpace;': '\xa0',
 
-         'Nopf;': '\u2115',
 
-         'nopf;': '\U0001d55f',
 
-         'not': '\xac',
 
-         'Not;': '\u2aec',
 
-         'not;': '\xac',
 
-         'NotCongruent;': '\u2262',
 
-         'NotCupCap;': '\u226d',
 
-         'NotDoubleVerticalBar;': '\u2226',
 
-         'NotElement;': '\u2209',
 
-         'NotEqual;': '\u2260',
 
-         'NotEqualTilde;': '\u2242\u0338',
 
-         'NotExists;': '\u2204',
 
-         'NotGreater;': '\u226f',
 
-         'NotGreaterEqual;': '\u2271',
 
-         'NotGreaterFullEqual;': '\u2267\u0338',
 
-         'NotGreaterGreater;': '\u226b\u0338',
 
-         'NotGreaterLess;': '\u2279',
 
-         'NotGreaterSlantEqual;': '\u2a7e\u0338',
 
-         'NotGreaterTilde;': '\u2275',
 
-         'NotHumpDownHump;': '\u224e\u0338',
 
-         'NotHumpEqual;': '\u224f\u0338',
 
-         'notin;': '\u2209',
 
-         'notindot;': '\u22f5\u0338',
 
-         'notinE;': '\u22f9\u0338',
 
-         'notinva;': '\u2209',
 
-         'notinvb;': '\u22f7',
 
-         'notinvc;': '\u22f6',
 
-         'NotLeftTriangle;': '\u22ea',
 
-         'NotLeftTriangleBar;': '\u29cf\u0338',
 
-         'NotLeftTriangleEqual;': '\u22ec',
 
-         'NotLess;': '\u226e',
 
-         'NotLessEqual;': '\u2270',
 
-         'NotLessGreater;': '\u2278',
 
-         'NotLessLess;': '\u226a\u0338',
 
-         'NotLessSlantEqual;': '\u2a7d\u0338',
 
-         'NotLessTilde;': '\u2274',
 
-         'NotNestedGreaterGreater;': '\u2aa2\u0338',
 
-         'NotNestedLessLess;': '\u2aa1\u0338',
 
-         'notni;': '\u220c',
 
-         'notniva;': '\u220c',
 
-         'notnivb;': '\u22fe',
 
-         'notnivc;': '\u22fd',
 
-         'NotPrecedes;': '\u2280',
 
-         'NotPrecedesEqual;': '\u2aaf\u0338',
 
-         'NotPrecedesSlantEqual;': '\u22e0',
 
-         'NotReverseElement;': '\u220c',
 
-         'NotRightTriangle;': '\u22eb',
 
-         'NotRightTriangleBar;': '\u29d0\u0338',
 
-         'NotRightTriangleEqual;': '\u22ed',
 
-         'NotSquareSubset;': '\u228f\u0338',
 
-         'NotSquareSubsetEqual;': '\u22e2',
 
-         'NotSquareSuperset;': '\u2290\u0338',
 
-         'NotSquareSupersetEqual;': '\u22e3',
 
-         'NotSubset;': '\u2282\u20d2',
 
-         'NotSubsetEqual;': '\u2288',
 
-         'NotSucceeds;': '\u2281',
 
-         'NotSucceedsEqual;': '\u2ab0\u0338',
 
-         'NotSucceedsSlantEqual;': '\u22e1',
 
-         'NotSucceedsTilde;': '\u227f\u0338',
 
-         'NotSuperset;': '\u2283\u20d2',
 
-         'NotSupersetEqual;': '\u2289',
 
-         'NotTilde;': '\u2241',
 
-         'NotTildeEqual;': '\u2244',
 
-         'NotTildeFullEqual;': '\u2247',
 
-         'NotTildeTilde;': '\u2249',
 
-         'NotVerticalBar;': '\u2224',
 
-         'npar;': '\u2226',
 
-         'nparallel;': '\u2226',
 
-         'nparsl;': '\u2afd\u20e5',
 
-         'npart;': '\u2202\u0338',
 
-         'npolint;': '\u2a14',
 
-         'npr;': '\u2280',
 
-         'nprcue;': '\u22e0',
 
-         'npre;': '\u2aaf\u0338',
 
-         'nprec;': '\u2280',
 
-         'npreceq;': '\u2aaf\u0338',
 
-         'nrArr;': '\u21cf',
 
-         'nrarr;': '\u219b',
 
-         'nrarrc;': '\u2933\u0338',
 
-         'nrarrw;': '\u219d\u0338',
 
-         'nRightarrow;': '\u21cf',
 
-         'nrightarrow;': '\u219b',
 
-         'nrtri;': '\u22eb',
 
-         'nrtrie;': '\u22ed',
 
-         'nsc;': '\u2281',
 
-         'nsccue;': '\u22e1',
 
-         'nsce;': '\u2ab0\u0338',
 
-         'Nscr;': '\U0001d4a9',
 
-         'nscr;': '\U0001d4c3',
 
-         'nshortmid;': '\u2224',
 
-         'nshortparallel;': '\u2226',
 
-         'nsim;': '\u2241',
 
-         'nsime;': '\u2244',
 
-         'nsimeq;': '\u2244',
 
-         'nsmid;': '\u2224',
 
-         'nspar;': '\u2226',
 
-         'nsqsube;': '\u22e2',
 
-         'nsqsupe;': '\u22e3',
 
-         'nsub;': '\u2284',
 
-         'nsubE;': '\u2ac5\u0338',
 
-         'nsube;': '\u2288',
 
-         'nsubset;': '\u2282\u20d2',
 
-         'nsubseteq;': '\u2288',
 
-         'nsubseteqq;': '\u2ac5\u0338',
 
-         'nsucc;': '\u2281',
 
-         'nsucceq;': '\u2ab0\u0338',
 
-         'nsup;': '\u2285',
 
-         'nsupE;': '\u2ac6\u0338',
 
-         'nsupe;': '\u2289',
 
-         'nsupset;': '\u2283\u20d2',
 
-         'nsupseteq;': '\u2289',
 
-         'nsupseteqq;': '\u2ac6\u0338',
 
-         'ntgl;': '\u2279',
 
-         'Ntilde': '\xd1',
 
-         'ntilde': '\xf1',
 
-         'Ntilde;': '\xd1',
 
-         'ntilde;': '\xf1',
 
-         'ntlg;': '\u2278',
 
-         'ntriangleleft;': '\u22ea',
 
-         'ntrianglelefteq;': '\u22ec',
 
-         'ntriangleright;': '\u22eb',
 
-         'ntrianglerighteq;': '\u22ed',
 
-         'Nu;': '\u039d',
 
-         'nu;': '\u03bd',
 
-         'num;': '#',
 
-         'numero;': '\u2116',
 
-         'numsp;': '\u2007',
 
-         'nvap;': '\u224d\u20d2',
 
-         'nVDash;': '\u22af',
 
-         'nVdash;': '\u22ae',
 
-         'nvDash;': '\u22ad',
 
-         'nvdash;': '\u22ac',
 
-         'nvge;': '\u2265\u20d2',
 
-         'nvgt;': '>\u20d2',
 
-         'nvHarr;': '\u2904',
 
-         'nvinfin;': '\u29de',
 
-         'nvlArr;': '\u2902',
 
-         'nvle;': '\u2264\u20d2',
 
-         'nvlt;': '<\u20d2',
 
-         'nvltrie;': '\u22b4\u20d2',
 
-         'nvrArr;': '\u2903',
 
-         'nvrtrie;': '\u22b5\u20d2',
 
-         'nvsim;': '\u223c\u20d2',
 
-         'nwarhk;': '\u2923',
 
-         'nwArr;': '\u21d6',
 
-         'nwarr;': '\u2196',
 
-         'nwarrow;': '\u2196',
 
-         'nwnear;': '\u2927',
 
-         'Oacute': '\xd3',
 
-         'oacute': '\xf3',
 
-         'Oacute;': '\xd3',
 
-         'oacute;': '\xf3',
 
-         'oast;': '\u229b',
 
-         'ocir;': '\u229a',
 
-         'Ocirc': '\xd4',
 
-         'ocirc': '\xf4',
 
-         'Ocirc;': '\xd4',
 
-         'ocirc;': '\xf4',
 
-         'Ocy;': '\u041e',
 
-         'ocy;': '\u043e',
 
-         'odash;': '\u229d',
 
-         'Odblac;': '\u0150',
 
-         'odblac;': '\u0151',
 
-         'odiv;': '\u2a38',
 
-         'odot;': '\u2299',
 
-         'odsold;': '\u29bc',
 
-         'OElig;': '\u0152',
 
-         'oelig;': '\u0153',
 
-         'ofcir;': '\u29bf',
 
-         'Ofr;': '\U0001d512',
 
-         'ofr;': '\U0001d52c',
 
-         'ogon;': '\u02db',
 
-         'Ograve': '\xd2',
 
-         'ograve': '\xf2',
 
-         'Ograve;': '\xd2',
 
-         'ograve;': '\xf2',
 
-         'ogt;': '\u29c1',
 
-         'ohbar;': '\u29b5',
 
-         'ohm;': '\u03a9',
 
-         'oint;': '\u222e',
 
-         'olarr;': '\u21ba',
 
-         'olcir;': '\u29be',
 
-         'olcross;': '\u29bb',
 
-         'oline;': '\u203e',
 
-         'olt;': '\u29c0',
 
-         'Omacr;': '\u014c',
 
-         'omacr;': '\u014d',
 
-         'Omega;': '\u03a9',
 
-         'omega;': '\u03c9',
 
-         'Omicron;': '\u039f',
 
-         'omicron;': '\u03bf',
 
-         'omid;': '\u29b6',
 
-         'ominus;': '\u2296',
 
-         'Oopf;': '\U0001d546',
 
-         'oopf;': '\U0001d560',
 
-         'opar;': '\u29b7',
 
-         'OpenCurlyDoubleQuote;': '\u201c',
 
-         'OpenCurlyQuote;': '\u2018',
 
-         'operp;': '\u29b9',
 
-         'oplus;': '\u2295',
 
-         'Or;': '\u2a54',
 
-         'or;': '\u2228',
 
-         'orarr;': '\u21bb',
 
-         'ord;': '\u2a5d',
 
-         'order;': '\u2134',
 
-         'orderof;': '\u2134',
 
-         'ordf': '\xaa',
 
-         'ordf;': '\xaa',
 
-         'ordm': '\xba',
 
-         'ordm;': '\xba',
 
-         'origof;': '\u22b6',
 
-         'oror;': '\u2a56',
 
-         'orslope;': '\u2a57',
 
-         'orv;': '\u2a5b',
 
-         'oS;': '\u24c8',
 
-         'Oscr;': '\U0001d4aa',
 
-         'oscr;': '\u2134',
 
-         'Oslash': '\xd8',
 
-         'oslash': '\xf8',
 
-         'Oslash;': '\xd8',
 
-         'oslash;': '\xf8',
 
-         'osol;': '\u2298',
 
-         'Otilde': '\xd5',
 
-         'otilde': '\xf5',
 
-         'Otilde;': '\xd5',
 
-         'otilde;': '\xf5',
 
-         'Otimes;': '\u2a37',
 
-         'otimes;': '\u2297',
 
-         'otimesas;': '\u2a36',
 
-         'Ouml': '\xd6',
 
-         'ouml': '\xf6',
 
-         'Ouml;': '\xd6',
 
-         'ouml;': '\xf6',
 
-         'ovbar;': '\u233d',
 
-         'OverBar;': '\u203e',
 
-         'OverBrace;': '\u23de',
 
-         'OverBracket;': '\u23b4',
 
-         'OverParenthesis;': '\u23dc',
 
-         'par;': '\u2225',
 
-         'para': '\xb6',
 
-         'para;': '\xb6',
 
-         'parallel;': '\u2225',
 
-         'parsim;': '\u2af3',
 
-         'parsl;': '\u2afd',
 
-         'part;': '\u2202',
 
-         'PartialD;': '\u2202',
 
-         'Pcy;': '\u041f',
 
-         'pcy;': '\u043f',
 
-         'percnt;': '%',
 
-         'period;': '.',
 
-         'permil;': '\u2030',
 
-         'perp;': '\u22a5',
 
-         'pertenk;': '\u2031',
 
-         'Pfr;': '\U0001d513',
 
-         'pfr;': '\U0001d52d',
 
-         'Phi;': '\u03a6',
 
-         'phi;': '\u03c6',
 
-         'phiv;': '\u03d5',
 
-         'phmmat;': '\u2133',
 
-         'phone;': '\u260e',
 
-         'Pi;': '\u03a0',
 
-         'pi;': '\u03c0',
 
-         'pitchfork;': '\u22d4',
 
-         'piv;': '\u03d6',
 
-         'planck;': '\u210f',
 
-         'planckh;': '\u210e',
 
-         'plankv;': '\u210f',
 
-         'plus;': '+',
 
-         'plusacir;': '\u2a23',
 
-         'plusb;': '\u229e',
 
-         'pluscir;': '\u2a22',
 
-         'plusdo;': '\u2214',
 
-         'plusdu;': '\u2a25',
 
-         'pluse;': '\u2a72',
 
-         'PlusMinus;': '\xb1',
 
-         'plusmn': '\xb1',
 
-         'plusmn;': '\xb1',
 
-         'plussim;': '\u2a26',
 
-         'plustwo;': '\u2a27',
 
-         'pm;': '\xb1',
 
-         'Poincareplane;': '\u210c',
 
-         'pointint;': '\u2a15',
 
-         'Popf;': '\u2119',
 
-         'popf;': '\U0001d561',
 
-         'pound': '\xa3',
 
-         'pound;': '\xa3',
 
-         'Pr;': '\u2abb',
 
-         'pr;': '\u227a',
 
-         'prap;': '\u2ab7',
 
-         'prcue;': '\u227c',
 
-         'prE;': '\u2ab3',
 
-         'pre;': '\u2aaf',
 
-         'prec;': '\u227a',
 
-         'precapprox;': '\u2ab7',
 
-         'preccurlyeq;': '\u227c',
 
-         'Precedes;': '\u227a',
 
-         'PrecedesEqual;': '\u2aaf',
 
-         'PrecedesSlantEqual;': '\u227c',
 
-         'PrecedesTilde;': '\u227e',
 
-         'preceq;': '\u2aaf',
 
-         'precnapprox;': '\u2ab9',
 
-         'precneqq;': '\u2ab5',
 
-         'precnsim;': '\u22e8',
 
-         'precsim;': '\u227e',
 
-         'Prime;': '\u2033',
 
-         'prime;': '\u2032',
 
-         'primes;': '\u2119',
 
-         'prnap;': '\u2ab9',
 
-         'prnE;': '\u2ab5',
 
-         'prnsim;': '\u22e8',
 
-         'prod;': '\u220f',
 
-         'Product;': '\u220f',
 
-         'profalar;': '\u232e',
 
-         'profline;': '\u2312',
 
-         'profsurf;': '\u2313',
 
-         'prop;': '\u221d',
 
-         'Proportion;': '\u2237',
 
-         'Proportional;': '\u221d',
 
-         'propto;': '\u221d',
 
-         'prsim;': '\u227e',
 
-         'prurel;': '\u22b0',
 
-         'Pscr;': '\U0001d4ab',
 
-         'pscr;': '\U0001d4c5',
 
-         'Psi;': '\u03a8',
 
-         'psi;': '\u03c8',
 
-         'puncsp;': '\u2008',
 
-         'Qfr;': '\U0001d514',
 
-         'qfr;': '\U0001d52e',
 
-         'qint;': '\u2a0c',
 
-         'Qopf;': '\u211a',
 
-         'qopf;': '\U0001d562',
 
-         'qprime;': '\u2057',
 
-         'Qscr;': '\U0001d4ac',
 
-         'qscr;': '\U0001d4c6',
 
-         'quaternions;': '\u210d',
 
-         'quatint;': '\u2a16',
 
-         'quest;': '?',
 
-         'questeq;': '\u225f',
 
-         'QUOT': '"',
 
-         'quot': '"',
 
-         'QUOT;': '"',
 
-         'quot;': '"',
 
-         'rAarr;': '\u21db',
 
-         'race;': '\u223d\u0331',
 
-         'Racute;': '\u0154',
 
-         'racute;': '\u0155',
 
-         'radic;': '\u221a',
 
-         'raemptyv;': '\u29b3',
 
-         'Rang;': '\u27eb',
 
-         'rang;': '\u27e9',
 
-         'rangd;': '\u2992',
 
-         'range;': '\u29a5',
 
-         'rangle;': '\u27e9',
 
-         'raquo': '\xbb',
 
-         'raquo;': '\xbb',
 
-         'Rarr;': '\u21a0',
 
-         'rArr;': '\u21d2',
 
-         'rarr;': '\u2192',
 
-         'rarrap;': '\u2975',
 
-         'rarrb;': '\u21e5',
 
-         'rarrbfs;': '\u2920',
 
-         'rarrc;': '\u2933',
 
-         'rarrfs;': '\u291e',
 
-         'rarrhk;': '\u21aa',
 
-         'rarrlp;': '\u21ac',
 
-         'rarrpl;': '\u2945',
 
-         'rarrsim;': '\u2974',
 
-         'Rarrtl;': '\u2916',
 
-         'rarrtl;': '\u21a3',
 
-         'rarrw;': '\u219d',
 
-         'rAtail;': '\u291c',
 
-         'ratail;': '\u291a',
 
-         'ratio;': '\u2236',
 
-         'rationals;': '\u211a',
 
-         'RBarr;': '\u2910',
 
-         'rBarr;': '\u290f',
 
-         'rbarr;': '\u290d',
 
-         'rbbrk;': '\u2773',
 
-         'rbrace;': '}',
 
-         'rbrack;': ']',
 
-         'rbrke;': '\u298c',
 
-         'rbrksld;': '\u298e',
 
-         'rbrkslu;': '\u2990',
 
-         'Rcaron;': '\u0158',
 
-         'rcaron;': '\u0159',
 
-         'Rcedil;': '\u0156',
 
-         'rcedil;': '\u0157',
 
-         'rceil;': '\u2309',
 
-         'rcub;': '}',
 
-         'Rcy;': '\u0420',
 
-         'rcy;': '\u0440',
 
-         'rdca;': '\u2937',
 
-         'rdldhar;': '\u2969',
 
-         'rdquo;': '\u201d',
 
-         'rdquor;': '\u201d',
 
-         'rdsh;': '\u21b3',
 
-         'Re;': '\u211c',
 
-         'real;': '\u211c',
 
-         'realine;': '\u211b',
 
-         'realpart;': '\u211c',
 
-         'reals;': '\u211d',
 
-         'rect;': '\u25ad',
 
-         'REG': '\xae',
 
-         'reg': '\xae',
 
-         'REG;': '\xae',
 
-         'reg;': '\xae',
 
-         'ReverseElement;': '\u220b',
 
-         'ReverseEquilibrium;': '\u21cb',
 
-         'ReverseUpEquilibrium;': '\u296f',
 
-         'rfisht;': '\u297d',
 
-         'rfloor;': '\u230b',
 
-         'Rfr;': '\u211c',
 
-         'rfr;': '\U0001d52f',
 
-         'rHar;': '\u2964',
 
-         'rhard;': '\u21c1',
 
-         'rharu;': '\u21c0',
 
-         'rharul;': '\u296c',
 
-         'Rho;': '\u03a1',
 
-         'rho;': '\u03c1',
 
-         'rhov;': '\u03f1',
 
-         'RightAngleBracket;': '\u27e9',
 
-         'RightArrow;': '\u2192',
 
-         'Rightarrow;': '\u21d2',
 
-         'rightarrow;': '\u2192',
 
-         'RightArrowBar;': '\u21e5',
 
-         'RightArrowLeftArrow;': '\u21c4',
 
-         'rightarrowtail;': '\u21a3',
 
-         'RightCeiling;': '\u2309',
 
-         'RightDoubleBracket;': '\u27e7',
 
-         'RightDownTeeVector;': '\u295d',
 
-         'RightDownVector;': '\u21c2',
 
-         'RightDownVectorBar;': '\u2955',
 
-         'RightFloor;': '\u230b',
 
-         'rightharpoondown;': '\u21c1',
 
-         'rightharpoonup;': '\u21c0',
 
-         'rightleftarrows;': '\u21c4',
 
-         'rightleftharpoons;': '\u21cc',
 
-         'rightrightarrows;': '\u21c9',
 
-         'rightsquigarrow;': '\u219d',
 
-         'RightTee;': '\u22a2',
 
-         'RightTeeArrow;': '\u21a6',
 
-         'RightTeeVector;': '\u295b',
 
-         'rightthreetimes;': '\u22cc',
 
-         'RightTriangle;': '\u22b3',
 
-         'RightTriangleBar;': '\u29d0',
 
-         'RightTriangleEqual;': '\u22b5',
 
-         'RightUpDownVector;': '\u294f',
 
-         'RightUpTeeVector;': '\u295c',
 
-         'RightUpVector;': '\u21be',
 
-         'RightUpVectorBar;': '\u2954',
 
-         'RightVector;': '\u21c0',
 
-         'RightVectorBar;': '\u2953',
 
-         'ring;': '\u02da',
 
-         'risingdotseq;': '\u2253',
 
-         'rlarr;': '\u21c4',
 
-         'rlhar;': '\u21cc',
 
-         'rlm;': '\u200f',
 
-         'rmoust;': '\u23b1',
 
-         'rmoustache;': '\u23b1',
 
-         'rnmid;': '\u2aee',
 
-         'roang;': '\u27ed',
 
-         'roarr;': '\u21fe',
 
-         'robrk;': '\u27e7',
 
-         'ropar;': '\u2986',
 
-         'Ropf;': '\u211d',
 
-         'ropf;': '\U0001d563',
 
-         'roplus;': '\u2a2e',
 
-         'rotimes;': '\u2a35',
 
-         'RoundImplies;': '\u2970',
 
-         'rpar;': ')',
 
-         'rpargt;': '\u2994',
 
-         'rppolint;': '\u2a12',
 
-         'rrarr;': '\u21c9',
 
-         'Rrightarrow;': '\u21db',
 
-         'rsaquo;': '\u203a',
 
-         'Rscr;': '\u211b',
 
-         'rscr;': '\U0001d4c7',
 
-         'Rsh;': '\u21b1',
 
-         'rsh;': '\u21b1',
 
-         'rsqb;': ']',
 
-         'rsquo;': '\u2019',
 
-         'rsquor;': '\u2019',
 
-         'rthree;': '\u22cc',
 
-         'rtimes;': '\u22ca',
 
-         'rtri;': '\u25b9',
 
-         'rtrie;': '\u22b5',
 
-         'rtrif;': '\u25b8',
 
-         'rtriltri;': '\u29ce',
 
-         'RuleDelayed;': '\u29f4',
 
-         'ruluhar;': '\u2968',
 
-         'rx;': '\u211e',
 
-         'Sacute;': '\u015a',
 
-         'sacute;': '\u015b',
 
-         'sbquo;': '\u201a',
 
-         'Sc;': '\u2abc',
 
-         'sc;': '\u227b',
 
-         'scap;': '\u2ab8',
 
-         'Scaron;': '\u0160',
 
-         'scaron;': '\u0161',
 
-         'sccue;': '\u227d',
 
-         'scE;': '\u2ab4',
 
-         'sce;': '\u2ab0',
 
-         'Scedil;': '\u015e',
 
-         'scedil;': '\u015f',
 
-         'Scirc;': '\u015c',
 
-         'scirc;': '\u015d',
 
-         'scnap;': '\u2aba',
 
-         'scnE;': '\u2ab6',
 
-         'scnsim;': '\u22e9',
 
-         'scpolint;': '\u2a13',
 
-         'scsim;': '\u227f',
 
-         'Scy;': '\u0421',
 
-         'scy;': '\u0441',
 
-         'sdot;': '\u22c5',
 
-         'sdotb;': '\u22a1',
 
-         'sdote;': '\u2a66',
 
-         'searhk;': '\u2925',
 
-         'seArr;': '\u21d8',
 
-         'searr;': '\u2198',
 
-         'searrow;': '\u2198',
 
-         'sect': '\xa7',
 
-         'sect;': '\xa7',
 
-         'semi;': ';',
 
-         'seswar;': '\u2929',
 
-         'setminus;': '\u2216',
 
-         'setmn;': '\u2216',
 
-         'sext;': '\u2736',
 
-         'Sfr;': '\U0001d516',
 
-         'sfr;': '\U0001d530',
 
-         'sfrown;': '\u2322',
 
-         'sharp;': '\u266f',
 
-         'SHCHcy;': '\u0429',
 
-         'shchcy;': '\u0449',
 
-         'SHcy;': '\u0428',
 
-         'shcy;': '\u0448',
 
-         'ShortDownArrow;': '\u2193',
 
-         'ShortLeftArrow;': '\u2190',
 
-         'shortmid;': '\u2223',
 
-         'shortparallel;': '\u2225',
 
-         'ShortRightArrow;': '\u2192',
 
-         'ShortUpArrow;': '\u2191',
 
-         'shy': '\xad',
 
-         'shy;': '\xad',
 
-         'Sigma;': '\u03a3',
 
-         'sigma;': '\u03c3',
 
-         'sigmaf;': '\u03c2',
 
-         'sigmav;': '\u03c2',
 
-         'sim;': '\u223c',
 
-         'simdot;': '\u2a6a',
 
-         'sime;': '\u2243',
 
-         'simeq;': '\u2243',
 
-         'simg;': '\u2a9e',
 
-         'simgE;': '\u2aa0',
 
-         'siml;': '\u2a9d',
 
-         'simlE;': '\u2a9f',
 
-         'simne;': '\u2246',
 
-         'simplus;': '\u2a24',
 
-         'simrarr;': '\u2972',
 
-         'slarr;': '\u2190',
 
-         'SmallCircle;': '\u2218',
 
-         'smallsetminus;': '\u2216',
 
-         'smashp;': '\u2a33',
 
-         'smeparsl;': '\u29e4',
 
-         'smid;': '\u2223',
 
-         'smile;': '\u2323',
 
-         'smt;': '\u2aaa',
 
-         'smte;': '\u2aac',
 
-         'smtes;': '\u2aac\ufe00',
 
-         'SOFTcy;': '\u042c',
 
-         'softcy;': '\u044c',
 
-         'sol;': '/',
 
-         'solb;': '\u29c4',
 
-         'solbar;': '\u233f',
 
-         'Sopf;': '\U0001d54a',
 
-         'sopf;': '\U0001d564',
 
-         'spades;': '\u2660',
 
-         'spadesuit;': '\u2660',
 
-         'spar;': '\u2225',
 
-         'sqcap;': '\u2293',
 
-         'sqcaps;': '\u2293\ufe00',
 
-         'sqcup;': '\u2294',
 
-         'sqcups;': '\u2294\ufe00',
 
-         'Sqrt;': '\u221a',
 
-         'sqsub;': '\u228f',
 
-         'sqsube;': '\u2291',
 
-         'sqsubset;': '\u228f',
 
-         'sqsubseteq;': '\u2291',
 
-         'sqsup;': '\u2290',
 
-         'sqsupe;': '\u2292',
 
-         'sqsupset;': '\u2290',
 
-         'sqsupseteq;': '\u2292',
 
-         'squ;': '\u25a1',
 
-         'Square;': '\u25a1',
 
-         'square;': '\u25a1',
 
-         'SquareIntersection;': '\u2293',
 
-         'SquareSubset;': '\u228f',
 
-         'SquareSubsetEqual;': '\u2291',
 
-         'SquareSuperset;': '\u2290',
 
-         'SquareSupersetEqual;': '\u2292',
 
-         'SquareUnion;': '\u2294',
 
-         'squarf;': '\u25aa',
 
-         'squf;': '\u25aa',
 
-         'srarr;': '\u2192',
 
-         'Sscr;': '\U0001d4ae',
 
-         'sscr;': '\U0001d4c8',
 
-         'ssetmn;': '\u2216',
 
-         'ssmile;': '\u2323',
 
-         'sstarf;': '\u22c6',
 
-         'Star;': '\u22c6',
 
-         'star;': '\u2606',
 
-         'starf;': '\u2605',
 
-         'straightepsilon;': '\u03f5',
 
-         'straightphi;': '\u03d5',
 
-         'strns;': '\xaf',
 
-         'Sub;': '\u22d0',
 
-         'sub;': '\u2282',
 
-         'subdot;': '\u2abd',
 
-         'subE;': '\u2ac5',
 
-         'sube;': '\u2286',
 
-         'subedot;': '\u2ac3',
 
-         'submult;': '\u2ac1',
 
-         'subnE;': '\u2acb',
 
-         'subne;': '\u228a',
 
-         'subplus;': '\u2abf',
 
-         'subrarr;': '\u2979',
 
-         'Subset;': '\u22d0',
 
-         'subset;': '\u2282',
 
-         'subseteq;': '\u2286',
 
-         'subseteqq;': '\u2ac5',
 
-         'SubsetEqual;': '\u2286',
 
-         'subsetneq;': '\u228a',
 
-         'subsetneqq;': '\u2acb',
 
-         'subsim;': '\u2ac7',
 
-         'subsub;': '\u2ad5',
 
-         'subsup;': '\u2ad3',
 
-         'succ;': '\u227b',
 
-         'succapprox;': '\u2ab8',
 
-         'succcurlyeq;': '\u227d',
 
-         'Succeeds;': '\u227b',
 
-         'SucceedsEqual;': '\u2ab0',
 
-         'SucceedsSlantEqual;': '\u227d',
 
-         'SucceedsTilde;': '\u227f',
 
-         'succeq;': '\u2ab0',
 
-         'succnapprox;': '\u2aba',
 
-         'succneqq;': '\u2ab6',
 
-         'succnsim;': '\u22e9',
 
-         'succsim;': '\u227f',
 
-         'SuchThat;': '\u220b',
 
-         'Sum;': '\u2211',
 
-         'sum;': '\u2211',
 
-         'sung;': '\u266a',
 
-         'sup1': '\xb9',
 
-         'sup1;': '\xb9',
 
-         'sup2': '\xb2',
 
-         'sup2;': '\xb2',
 
-         'sup3': '\xb3',
 
-         'sup3;': '\xb3',
 
-         'Sup;': '\u22d1',
 
-         'sup;': '\u2283',
 
-         'supdot;': '\u2abe',
 
-         'supdsub;': '\u2ad8',
 
-         'supE;': '\u2ac6',
 
-         'supe;': '\u2287',
 
-         'supedot;': '\u2ac4',
 
-         'Superset;': '\u2283',
 
-         'SupersetEqual;': '\u2287',
 
-         'suphsol;': '\u27c9',
 
-         'suphsub;': '\u2ad7',
 
-         'suplarr;': '\u297b',
 
-         'supmult;': '\u2ac2',
 
-         'supnE;': '\u2acc',
 
-         'supne;': '\u228b',
 
-         'supplus;': '\u2ac0',
 
-         'Supset;': '\u22d1',
 
-         'supset;': '\u2283',
 
-         'supseteq;': '\u2287',
 
-         'supseteqq;': '\u2ac6',
 
-         'supsetneq;': '\u228b',
 
-         'supsetneqq;': '\u2acc',
 
-         'supsim;': '\u2ac8',
 
-         'supsub;': '\u2ad4',
 
-         'supsup;': '\u2ad6',
 
-         'swarhk;': '\u2926',
 
-         'swArr;': '\u21d9',
 
-         'swarr;': '\u2199',
 
-         'swarrow;': '\u2199',
 
-         'swnwar;': '\u292a',
 
-         'szlig': '\xdf',
 
-         'szlig;': '\xdf',
 
-         'Tab;': '\t',
 
-         'target;': '\u2316',
 
-         'Tau;': '\u03a4',
 
-         'tau;': '\u03c4',
 
-         'tbrk;': '\u23b4',
 
-         'Tcaron;': '\u0164',
 
-         'tcaron;': '\u0165',
 
-         'Tcedil;': '\u0162',
 
-         'tcedil;': '\u0163',
 
-         'Tcy;': '\u0422',
 
-         'tcy;': '\u0442',
 
-         'tdot;': '\u20db',
 
-         'telrec;': '\u2315',
 
-         'Tfr;': '\U0001d517',
 
-         'tfr;': '\U0001d531',
 
-         'there4;': '\u2234',
 
-         'Therefore;': '\u2234',
 
-         'therefore;': '\u2234',
 
-         'Theta;': '\u0398',
 
-         'theta;': '\u03b8',
 
-         'thetasym;': '\u03d1',
 
-         'thetav;': '\u03d1',
 
-         'thickapprox;': '\u2248',
 
-         'thicksim;': '\u223c',
 
-         'ThickSpace;': '\u205f\u200a',
 
-         'thinsp;': '\u2009',
 
-         'ThinSpace;': '\u2009',
 
-         'thkap;': '\u2248',
 
-         'thksim;': '\u223c',
 
-         'THORN': '\xde',
 
-         'thorn': '\xfe',
 
-         'THORN;': '\xde',
 
-         'thorn;': '\xfe',
 
-         'Tilde;': '\u223c',
 
-         'tilde;': '\u02dc',
 
-         'TildeEqual;': '\u2243',
 
-         'TildeFullEqual;': '\u2245',
 
-         'TildeTilde;': '\u2248',
 
-         'times': '\xd7',
 
-         'times;': '\xd7',
 
-         'timesb;': '\u22a0',
 
-         'timesbar;': '\u2a31',
 
-         'timesd;': '\u2a30',
 
-         'tint;': '\u222d',
 
-         'toea;': '\u2928',
 
-         'top;': '\u22a4',
 
-         'topbot;': '\u2336',
 
-         'topcir;': '\u2af1',
 
-         'Topf;': '\U0001d54b',
 
-         'topf;': '\U0001d565',
 
-         'topfork;': '\u2ada',
 
-         'tosa;': '\u2929',
 
-         'tprime;': '\u2034',
 
-         'TRADE;': '\u2122',
 
-         'trade;': '\u2122',
 
-         'triangle;': '\u25b5',
 
-         'triangledown;': '\u25bf',
 
-         'triangleleft;': '\u25c3',
 
-         'trianglelefteq;': '\u22b4',
 
-         'triangleq;': '\u225c',
 
-         'triangleright;': '\u25b9',
 
-         'trianglerighteq;': '\u22b5',
 
-         'tridot;': '\u25ec',
 
-         'trie;': '\u225c',
 
-         'triminus;': '\u2a3a',
 
-         'TripleDot;': '\u20db',
 
-         'triplus;': '\u2a39',
 
-         'trisb;': '\u29cd',
 
-         'tritime;': '\u2a3b',
 
-         'trpezium;': '\u23e2',
 
-         'Tscr;': '\U0001d4af',
 
-         'tscr;': '\U0001d4c9',
 
-         'TScy;': '\u0426',
 
-         'tscy;': '\u0446',
 
-         'TSHcy;': '\u040b',
 
-         'tshcy;': '\u045b',
 
-         'Tstrok;': '\u0166',
 
-         'tstrok;': '\u0167',
 
-         'twixt;': '\u226c',
 
-         'twoheadleftarrow;': '\u219e',
 
-         'twoheadrightarrow;': '\u21a0',
 
-         'Uacute': '\xda',
 
-         'uacute': '\xfa',
 
-         'Uacute;': '\xda',
 
-         'uacute;': '\xfa',
 
-         'Uarr;': '\u219f',
 
-         'uArr;': '\u21d1',
 
-         'uarr;': '\u2191',
 
-         'Uarrocir;': '\u2949',
 
-         'Ubrcy;': '\u040e',
 
-         'ubrcy;': '\u045e',
 
-         'Ubreve;': '\u016c',
 
-         'ubreve;': '\u016d',
 
-         'Ucirc': '\xdb',
 
-         'ucirc': '\xfb',
 
-         'Ucirc;': '\xdb',
 
-         'ucirc;': '\xfb',
 
-         'Ucy;': '\u0423',
 
-         'ucy;': '\u0443',
 
-         'udarr;': '\u21c5',
 
-         'Udblac;': '\u0170',
 
-         'udblac;': '\u0171',
 
-         'udhar;': '\u296e',
 
-         'ufisht;': '\u297e',
 
-         'Ufr;': '\U0001d518',
 
-         'ufr;': '\U0001d532',
 
-         'Ugrave': '\xd9',
 
-         'ugrave': '\xf9',
 
-         'Ugrave;': '\xd9',
 
-         'ugrave;': '\xf9',
 
-         'uHar;': '\u2963',
 
-         'uharl;': '\u21bf',
 
-         'uharr;': '\u21be',
 
-         'uhblk;': '\u2580',
 
-         'ulcorn;': '\u231c',
 
-         'ulcorner;': '\u231c',
 
-         'ulcrop;': '\u230f',
 
-         'ultri;': '\u25f8',
 
-         'Umacr;': '\u016a',
 
-         'umacr;': '\u016b',
 
-         'uml': '\xa8',
 
-         'uml;': '\xa8',
 
-         'UnderBar;': '_',
 
-         'UnderBrace;': '\u23df',
 
-         'UnderBracket;': '\u23b5',
 
-         'UnderParenthesis;': '\u23dd',
 
-         'Union;': '\u22c3',
 
-         'UnionPlus;': '\u228e',
 
-         'Uogon;': '\u0172',
 
-         'uogon;': '\u0173',
 
-         'Uopf;': '\U0001d54c',
 
-         'uopf;': '\U0001d566',
 
-         'UpArrow;': '\u2191',
 
-         'Uparrow;': '\u21d1',
 
-         'uparrow;': '\u2191',
 
-         'UpArrowBar;': '\u2912',
 
-         'UpArrowDownArrow;': '\u21c5',
 
-         'UpDownArrow;': '\u2195',
 
-         'Updownarrow;': '\u21d5',
 
-         'updownarrow;': '\u2195',
 
-         'UpEquilibrium;': '\u296e',
 
-         'upharpoonleft;': '\u21bf',
 
-         'upharpoonright;': '\u21be',
 
-         'uplus;': '\u228e',
 
-         'UpperLeftArrow;': '\u2196',
 
-         'UpperRightArrow;': '\u2197',
 
-         'Upsi;': '\u03d2',
 
-         'upsi;': '\u03c5',
 
-         'upsih;': '\u03d2',
 
-         'Upsilon;': '\u03a5',
 
-         'upsilon;': '\u03c5',
 
-         'UpTee;': '\u22a5',
 
-         'UpTeeArrow;': '\u21a5',
 
-         'upuparrows;': '\u21c8',
 
-         'urcorn;': '\u231d',
 
-         'urcorner;': '\u231d',
 
-         'urcrop;': '\u230e',
 
-         'Uring;': '\u016e',
 
-         'uring;': '\u016f',
 
-         'urtri;': '\u25f9',
 
-         'Uscr;': '\U0001d4b0',
 
-         'uscr;': '\U0001d4ca',
 
-         'utdot;': '\u22f0',
 
-         'Utilde;': '\u0168',
 
-         'utilde;': '\u0169',
 
-         'utri;': '\u25b5',
 
-         'utrif;': '\u25b4',
 
-         'uuarr;': '\u21c8',
 
-         'Uuml': '\xdc',
 
-         'uuml': '\xfc',
 
-         'Uuml;': '\xdc',
 
-         'uuml;': '\xfc',
 
-         'uwangle;': '\u29a7',
 
-         'vangrt;': '\u299c',
 
-         'varepsilon;': '\u03f5',
 
-         'varkappa;': '\u03f0',
 
-         'varnothing;': '\u2205',
 
-         'varphi;': '\u03d5',
 
-         'varpi;': '\u03d6',
 
-         'varpropto;': '\u221d',
 
-         'vArr;': '\u21d5',
 
-         'varr;': '\u2195',
 
-         'varrho;': '\u03f1',
 
-         'varsigma;': '\u03c2',
 
-         'varsubsetneq;': '\u228a\ufe00',
 
-         'varsubsetneqq;': '\u2acb\ufe00',
 
-         'varsupsetneq;': '\u228b\ufe00',
 
-         'varsupsetneqq;': '\u2acc\ufe00',
 
-         'vartheta;': '\u03d1',
 
-         'vartriangleleft;': '\u22b2',
 
-         'vartriangleright;': '\u22b3',
 
-         'Vbar;': '\u2aeb',
 
-         'vBar;': '\u2ae8',
 
-         'vBarv;': '\u2ae9',
 
-         'Vcy;': '\u0412',
 
-         'vcy;': '\u0432',
 
-         'VDash;': '\u22ab',
 
-         'Vdash;': '\u22a9',
 
-         'vDash;': '\u22a8',
 
-         'vdash;': '\u22a2',
 
-         'Vdashl;': '\u2ae6',
 
-         'Vee;': '\u22c1',
 
-         'vee;': '\u2228',
 
-         'veebar;': '\u22bb',
 
-         'veeeq;': '\u225a',
 
-         'vellip;': '\u22ee',
 
-         'Verbar;': '\u2016',
 
-         'verbar;': '|',
 
-         'Vert;': '\u2016',
 
-         'vert;': '|',
 
-         'VerticalBar;': '\u2223',
 
-         'VerticalLine;': '|',
 
-         'VerticalSeparator;': '\u2758',
 
-         'VerticalTilde;': '\u2240',
 
-         'VeryThinSpace;': '\u200a',
 
-         'Vfr;': '\U0001d519',
 
-         'vfr;': '\U0001d533',
 
-         'vltri;': '\u22b2',
 
-         'vnsub;': '\u2282\u20d2',
 
-         'vnsup;': '\u2283\u20d2',
 
-         'Vopf;': '\U0001d54d',
 
-         'vopf;': '\U0001d567',
 
-         'vprop;': '\u221d',
 
-         'vrtri;': '\u22b3',
 
-         'Vscr;': '\U0001d4b1',
 
-         'vscr;': '\U0001d4cb',
 
-         'vsubnE;': '\u2acb\ufe00',
 
-         'vsubne;': '\u228a\ufe00',
 
-         'vsupnE;': '\u2acc\ufe00',
 
-         'vsupne;': '\u228b\ufe00',
 
-         'Vvdash;': '\u22aa',
 
-         'vzigzag;': '\u299a',
 
-         'Wcirc;': '\u0174',
 
-         'wcirc;': '\u0175',
 
-         'wedbar;': '\u2a5f',
 
-         'Wedge;': '\u22c0',
 
-         'wedge;': '\u2227',
 
-         'wedgeq;': '\u2259',
 
-         'weierp;': '\u2118',
 
-         'Wfr;': '\U0001d51a',
 
-         'wfr;': '\U0001d534',
 
-         'Wopf;': '\U0001d54e',
 
-         'wopf;': '\U0001d568',
 
-         'wp;': '\u2118',
 
-         'wr;': '\u2240',
 
-         'wreath;': '\u2240',
 
-         'Wscr;': '\U0001d4b2',
 
-         'wscr;': '\U0001d4cc',
 
-         'xcap;': '\u22c2',
 
-         'xcirc;': '\u25ef',
 
-         'xcup;': '\u22c3',
 
-         'xdtri;': '\u25bd',
 
-         'Xfr;': '\U0001d51b',
 
-         'xfr;': '\U0001d535',
 
-         'xhArr;': '\u27fa',
 
-         'xharr;': '\u27f7',
 
-         'Xi;': '\u039e',
 
-         'xi;': '\u03be',
 
-         'xlArr;': '\u27f8',
 
-         'xlarr;': '\u27f5',
 
-         'xmap;': '\u27fc',
 
-         'xnis;': '\u22fb',
 
-         'xodot;': '\u2a00',
 
-         'Xopf;': '\U0001d54f',
 
-         'xopf;': '\U0001d569',
 
-         'xoplus;': '\u2a01',
 
-         'xotime;': '\u2a02',
 
-         'xrArr;': '\u27f9',
 
-         'xrarr;': '\u27f6',
 
-         'Xscr;': '\U0001d4b3',
 
-         'xscr;': '\U0001d4cd',
 
-         'xsqcup;': '\u2a06',
 
-         'xuplus;': '\u2a04',
 
-         'xutri;': '\u25b3',
 
-         'xvee;': '\u22c1',
 
-         'xwedge;': '\u22c0',
 
-         'Yacute': '\xdd',
 
-         'yacute': '\xfd',
 
-         'Yacute;': '\xdd',
 
-         'yacute;': '\xfd',
 
-         'YAcy;': '\u042f',
 
-         'yacy;': '\u044f',
 
-         'Ycirc;': '\u0176',
 
-         'ycirc;': '\u0177',
 
-         'Ycy;': '\u042b',
 
-         'ycy;': '\u044b',
 
-         'yen': '\xa5',
 
-         'yen;': '\xa5',
 
-         'Yfr;': '\U0001d51c',
 
-         'yfr;': '\U0001d536',
 
-         'YIcy;': '\u0407',
 
-         'yicy;': '\u0457',
 
-         'Yopf;': '\U0001d550',
 
-         'yopf;': '\U0001d56a',
 
-         'Yscr;': '\U0001d4b4',
 
-         'yscr;': '\U0001d4ce',
 
-         'YUcy;': '\u042e',
 
-         'yucy;': '\u044e',
 
-         'yuml': '\xff',
 
-         'Yuml;': '\u0178',
 
-         'yuml;': '\xff',
 
-         'Zacute;': '\u0179',
 
-         'zacute;': '\u017a',
 
-         'Zcaron;': '\u017d',
 
-         'zcaron;': '\u017e',
 
-         'Zcy;': '\u0417',
 
-         'zcy;': '\u0437',
 
-         'Zdot;': '\u017b',
 
-         'zdot;': '\u017c',
 
-         'zeetrf;': '\u2128',
 
-         'ZeroWidthSpace;': '\u200b',
 
-         'Zeta;': '\u0396',
 
-         'zeta;': '\u03b6',
 
-         'Zfr;': '\u2128',
 
-         'zfr;': '\U0001d537',
 
-         'ZHcy;': '\u0416',
 
-         'zhcy;': '\u0436',
 
-         'zigrarr;': '\u21dd',
 
-         'Zopf;': '\u2124',
 
-         'zopf;': '\U0001d56b',
 
-         'Zscr;': '\U0001d4b5',
 
-         'zscr;': '\U0001d4cf',
 
-         'zwj;': '\u200d',
 
-         'zwnj;': '\u200c',
 
-     }
 
- try:
 
-     import http.client as compat_http_client
 
- except ImportError:  # Python 2
 
-     import httplib as compat_http_client
 
- try:
 
-     from urllib.error import HTTPError as compat_HTTPError
 
- except ImportError:  # Python 2
 
-     from urllib2 import HTTPError as compat_HTTPError
 
- try:
 
-     from urllib.request import urlretrieve as compat_urlretrieve
 
- except ImportError:  # Python 2
 
-     from urllib import urlretrieve as compat_urlretrieve
 
- try:
 
-     from html.parser import HTMLParser as compat_HTMLParser
 
- except ImportError:  # Python 2
 
-     from HTMLParser import HTMLParser as compat_HTMLParser
 
- try:
 
-     from subprocess import DEVNULL
 
-     compat_subprocess_get_DEVNULL = lambda: DEVNULL
 
- except ImportError:
 
-     compat_subprocess_get_DEVNULL = lambda: open(os.path.devnull, 'w')
 
- try:
 
-     import http.server as compat_http_server
 
- except ImportError:
 
-     import BaseHTTPServer as compat_http_server
 
- try:
 
-     compat_str = unicode  # Python 2
 
- except NameError:
 
-     compat_str = str
 
- try:
 
-     from urllib.parse import unquote_to_bytes as compat_urllib_parse_unquote_to_bytes
 
-     from urllib.parse import unquote as compat_urllib_parse_unquote
 
-     from urllib.parse import unquote_plus as compat_urllib_parse_unquote_plus
 
- except ImportError:  # Python 2
 
-     _asciire = (compat_urllib_parse._asciire if hasattr(compat_urllib_parse, '_asciire')
 
-                 else re.compile('([\x00-\x7f]+)'))
 
-     # HACK: The following are the correct unquote_to_bytes, unquote and unquote_plus
 
-     # implementations from cpython 3.4.3's stdlib. Python 2's version
 
-     # is apparently broken (see https://github.com/rg3/youtube-dl/pull/6244)
 
-     def compat_urllib_parse_unquote_to_bytes(string):
 
-         """unquote_to_bytes('abc%20def') -> b'abc def'."""
 
-         # Note: strings are encoded as UTF-8. This is only an issue if it contains
 
-         # unescaped non-ASCII characters, which URIs should not.
 
-         if not string:
 
-             # Is it a string-like object?
 
-             string.split
 
-             return b''
 
-         if isinstance(string, compat_str):
 
-             string = string.encode('utf-8')
 
-         bits = string.split(b'%')
 
-         if len(bits) == 1:
 
-             return string
 
-         res = [bits[0]]
 
-         append = res.append
 
-         for item in bits[1:]:
 
-             try:
 
-                 append(compat_urllib_parse._hextochr[item[:2]])
 
-                 append(item[2:])
 
-             except KeyError:
 
-                 append(b'%')
 
-                 append(item)
 
-         return b''.join(res)
 
-     def compat_urllib_parse_unquote(string, encoding='utf-8', errors='replace'):
 
-         """Replace %xx escapes by their single-character equivalent. The optional
 
-         encoding and errors parameters specify how to decode percent-encoded
 
-         sequences into Unicode characters, as accepted by the bytes.decode()
 
-         method.
 
-         By default, percent-encoded sequences are decoded with UTF-8, and invalid
 
-         sequences are replaced by a placeholder character.
 
-         unquote('abc%20def') -> 'abc def'.
 
-         """
 
-         if '%' not in string:
 
-             string.split
 
-             return string
 
-         if encoding is None:
 
-             encoding = 'utf-8'
 
-         if errors is None:
 
-             errors = 'replace'
 
-         bits = _asciire.split(string)
 
-         res = [bits[0]]
 
-         append = res.append
 
-         for i in range(1, len(bits), 2):
 
-             append(compat_urllib_parse_unquote_to_bytes(bits[i]).decode(encoding, errors))
 
-             append(bits[i + 1])
 
-         return ''.join(res)
 
-     def compat_urllib_parse_unquote_plus(string, encoding='utf-8', errors='replace'):
 
-         """Like unquote(), but also replace plus signs by spaces, as required for
 
-         unquoting HTML form values.
 
-         unquote_plus('%7e/abc+def') -> '~/abc def'
 
-         """
 
-         string = string.replace('+', ' ')
 
-         return compat_urllib_parse_unquote(string, encoding, errors)
 
- try:
 
-     from urllib.parse import urlencode as compat_urllib_parse_urlencode
 
- except ImportError:  # Python 2
 
-     # Python 2 will choke in urlencode on mixture of byte and unicode strings.
 
-     # Possible solutions are to either port it from python 3 with all
 
-     # the friends or manually ensure input query contains only byte strings.
 
-     # We will stick with latter thus recursively encoding the whole query.
 
-     def compat_urllib_parse_urlencode(query, doseq=0, encoding='utf-8'):
 
-         def encode_elem(e):
 
-             if isinstance(e, dict):
 
-                 e = encode_dict(e)
 
-             elif isinstance(e, (list, tuple,)):
 
-                 list_e = encode_list(e)
 
-                 e = tuple(list_e) if isinstance(e, tuple) else list_e
 
-             elif isinstance(e, compat_str):
 
-                 e = e.encode(encoding)
 
-             return e
 
-         def encode_dict(d):
 
-             return dict((encode_elem(k), encode_elem(v)) for k, v in d.items())
 
-         def encode_list(l):
 
-             return [encode_elem(e) for e in l]
 
-         return compat_urllib_parse.urlencode(encode_elem(query), doseq=doseq)
 
- try:
 
-     from urllib.request import DataHandler as compat_urllib_request_DataHandler
 
- except ImportError:  # Python < 3.4
 
-     # Ported from CPython 98774:1733b3bd46db, Lib/urllib/request.py
 
-     class compat_urllib_request_DataHandler(compat_urllib_request.BaseHandler):
 
-         def data_open(self, req):
 
-             # data URLs as specified in RFC 2397.
 
-             #
 
-             # ignores POSTed data
 
-             #
 
-             # syntax:
 
-             # dataurl   := "data:" [ mediatype ] [ ";base64" ] "," data
 
-             # mediatype := [ type "/" subtype ] *( ";" parameter )
 
-             # data      := *urlchar
 
-             # parameter := attribute "=" value
 
-             url = req.get_full_url()
 
-             scheme, data = url.split(':', 1)
 
-             mediatype, data = data.split(',', 1)
 
-             # even base64 encoded data URLs might be quoted so unquote in any case:
 
-             data = compat_urllib_parse_unquote_to_bytes(data)
 
-             if mediatype.endswith(';base64'):
 
-                 data = binascii.a2b_base64(data)
 
-                 mediatype = mediatype[:-7]
 
-             if not mediatype:
 
-                 mediatype = 'text/plain;charset=US-ASCII'
 
-             headers = email.message_from_string(
 
-                 'Content-type: %s\nContent-length: %d\n' % (mediatype, len(data)))
 
-             return compat_urllib_response.addinfourl(io.BytesIO(data), headers, url)
 
- try:
 
-     compat_basestring = basestring  # Python 2
 
- except NameError:
 
-     compat_basestring = str
 
- try:
 
-     compat_chr = unichr  # Python 2
 
- except NameError:
 
-     compat_chr = chr
 
- try:
 
-     from xml.etree.ElementTree import ParseError as compat_xml_parse_error
 
- except ImportError:  # Python 2.6
 
-     from xml.parsers.expat import ExpatError as compat_xml_parse_error
 
- etree = xml.etree.ElementTree
 
- class _TreeBuilder(etree.TreeBuilder):
 
-     def doctype(self, name, pubid, system):
 
-         pass
 
- if sys.version_info[0] >= 3:
 
-     def compat_etree_fromstring(text):
 
-         return etree.XML(text, parser=etree.XMLParser(target=_TreeBuilder()))
 
- else:
 
-     # python 2.x tries to encode unicode strings with ascii (see the
 
-     # XMLParser._fixtext method)
 
-     try:
 
-         _etree_iter = etree.Element.iter
 
-     except AttributeError:  # Python <=2.6
 
-         def _etree_iter(root):
 
-             for el in root.findall('*'):
 
-                 yield el
 
-                 for sub in _etree_iter(el):
 
-                     yield sub
 
-     # on 2.6 XML doesn't have a parser argument, function copied from CPython
 
-     # 2.7 source
 
-     def _XML(text, parser=None):
 
-         if not parser:
 
-             parser = etree.XMLParser(target=_TreeBuilder())
 
-         parser.feed(text)
 
-         return parser.close()
 
-     def _element_factory(*args, **kwargs):
 
-         el = etree.Element(*args, **kwargs)
 
-         for k, v in el.items():
 
-             if isinstance(v, bytes):
 
-                 el.set(k, v.decode('utf-8'))
 
-         return el
 
-     def compat_etree_fromstring(text):
 
-         doc = _XML(text, parser=etree.XMLParser(target=_TreeBuilder(element_factory=_element_factory)))
 
-         for el in _etree_iter(doc):
 
-             if el.text is not None and isinstance(el.text, bytes):
 
-                 el.text = el.text.decode('utf-8')
 
-         return doc
 
- if sys.version_info < (2, 7):
 
-     # Here comes the crazy part: In 2.6, if the xpath is a unicode,
 
-     # .//node does not match if a node is a direct child of . !
 
-     def compat_xpath(xpath):
 
-         if isinstance(xpath, compat_str):
 
-             xpath = xpath.encode('ascii')
 
-         return xpath
 
- else:
 
-     compat_xpath = lambda xpath: xpath
 
- try:
 
-     from urllib.parse import parse_qs as compat_parse_qs
 
- except ImportError:  # Python 2
 
-     # HACK: The following is the correct parse_qs implementation from cpython 3's stdlib.
 
-     # Python 2's version is apparently totally broken
 
-     def _parse_qsl(qs, keep_blank_values=False, strict_parsing=False,
 
-                    encoding='utf-8', errors='replace'):
 
-         qs, _coerce_result = qs, compat_str
 
-         pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
 
-         r = []
 
-         for name_value in pairs:
 
-             if not name_value and not strict_parsing:
 
-                 continue
 
-             nv = name_value.split('=', 1)
 
-             if len(nv) != 2:
 
-                 if strict_parsing:
 
-                     raise ValueError('bad query field: %r' % (name_value,))
 
-                 # Handle case of a control-name with no equal sign
 
-                 if keep_blank_values:
 
-                     nv.append('')
 
-                 else:
 
-                     continue
 
-             if len(nv[1]) or keep_blank_values:
 
-                 name = nv[0].replace('+', ' ')
 
-                 name = compat_urllib_parse_unquote(
 
-                     name, encoding=encoding, errors=errors)
 
-                 name = _coerce_result(name)
 
-                 value = nv[1].replace('+', ' ')
 
-                 value = compat_urllib_parse_unquote(
 
-                     value, encoding=encoding, errors=errors)
 
-                 value = _coerce_result(value)
 
-                 r.append((name, value))
 
-         return r
 
-     def compat_parse_qs(qs, keep_blank_values=False, strict_parsing=False,
 
-                         encoding='utf-8', errors='replace'):
 
-         parsed_result = {}
 
-         pairs = _parse_qsl(qs, keep_blank_values, strict_parsing,
 
-                            encoding=encoding, errors=errors)
 
-         for name, value in pairs:
 
-             if name in parsed_result:
 
-                 parsed_result[name].append(value)
 
-             else:
 
-                 parsed_result[name] = [value]
 
-         return parsed_result
 
- try:
 
-     from shlex import quote as compat_shlex_quote
 
- except ImportError:  # Python < 3.3
 
-     def compat_shlex_quote(s):
 
-         if re.match(r'^[-_\w./]+$', s):
 
-             return s
 
-         else:
 
-             return "'" + s.replace("'", "'\"'\"'") + "'"
 
- if sys.version_info >= (2, 7, 3):
 
-     compat_shlex_split = shlex.split
 
- else:
 
-     # Working around shlex issue with unicode strings on some python 2
 
-     # versions (see http://bugs.python.org/issue1548891)
 
-     def compat_shlex_split(s, comments=False, posix=True):
 
-         if isinstance(s, compat_str):
 
-             s = s.encode('utf-8')
 
-         return shlex.split(s, comments, posix)
 
- def compat_ord(c):
 
-     if type(c) is int:
 
-         return c
 
-     else:
 
-         return ord(c)
 
- compat_os_name = os._name if os.name == 'java' else os.name
 
- if sys.version_info >= (3, 0):
 
-     compat_getenv = os.getenv
 
-     compat_expanduser = os.path.expanduser
 
-     def compat_setenv(key, value, env=os.environ):
 
-         env[key] = value
 
- else:
 
-     # Environment variables should be decoded with filesystem encoding.
 
-     # Otherwise it will fail if any non-ASCII characters present (see #3854 #3217 #2918)
 
-     def compat_getenv(key, default=None):
 
-         from .utils import get_filesystem_encoding
 
-         env = os.getenv(key, default)
 
-         if env:
 
-             env = env.decode(get_filesystem_encoding())
 
-         return env
 
-     def compat_setenv(key, value, env=os.environ):
 
-         def encode(v):
 
-             from .utils import get_filesystem_encoding
 
-             return v.encode(get_filesystem_encoding()) if isinstance(v, compat_str) else v
 
-         env[encode(key)] = encode(value)
 
-     # HACK: The default implementations of os.path.expanduser from cpython do not decode
 
-     # environment variables with filesystem encoding. We will work around this by
 
-     # providing adjusted implementations.
 
-     # The following are os.path.expanduser implementations from cpython 2.7.8 stdlib
 
-     # for different platforms with correct environment variables decoding.
 
-     if compat_os_name == 'posix':
 
-         def compat_expanduser(path):
 
-             """Expand ~ and ~user constructions.  If user or $HOME is unknown,
 
-             do nothing."""
 
-             if not path.startswith('~'):
 
-                 return path
 
-             i = path.find('/', 1)
 
-             if i < 0:
 
-                 i = len(path)
 
-             if i == 1:
 
-                 if 'HOME' not in os.environ:
 
-                     import pwd
 
-                     userhome = pwd.getpwuid(os.getuid()).pw_dir
 
-                 else:
 
-                     userhome = compat_getenv('HOME')
 
-             else:
 
-                 import pwd
 
-                 try:
 
-                     pwent = pwd.getpwnam(path[1:i])
 
-                 except KeyError:
 
-                     return path
 
-                 userhome = pwent.pw_dir
 
-             userhome = userhome.rstrip('/')
 
-             return (userhome + path[i:]) or '/'
 
-     elif compat_os_name == 'nt' or compat_os_name == 'ce':
 
-         def compat_expanduser(path):
 
-             """Expand ~ and ~user constructs.
 
-             If user or $HOME is unknown, do nothing."""
 
-             if path[:1] != '~':
 
-                 return path
 
-             i, n = 1, len(path)
 
-             while i < n and path[i] not in '/\\':
 
-                 i = i + 1
 
-             if 'HOME' in os.environ:
 
-                 userhome = compat_getenv('HOME')
 
-             elif 'USERPROFILE' in os.environ:
 
-                 userhome = compat_getenv('USERPROFILE')
 
-             elif 'HOMEPATH' not in os.environ:
 
-                 return path
 
-             else:
 
-                 try:
 
-                     drive = compat_getenv('HOMEDRIVE')
 
-                 except KeyError:
 
-                     drive = ''
 
-                 userhome = os.path.join(drive, compat_getenv('HOMEPATH'))
 
-             if i != 1:  # ~user
 
-                 userhome = os.path.join(os.path.dirname(userhome), path[1:i])
 
-             return userhome + path[i:]
 
-     else:
 
-         compat_expanduser = os.path.expanduser
 
- if sys.version_info < (3, 0):
 
-     def compat_print(s):
 
-         from .utils import preferredencoding
 
-         print(s.encode(preferredencoding(), 'xmlcharrefreplace'))
 
- else:
 
-     def compat_print(s):
 
-         assert isinstance(s, compat_str)
 
-         print(s)
 
- if sys.version_info < (3, 0) and sys.platform == 'win32':
 
-     def compat_getpass(prompt, *args, **kwargs):
 
-         if isinstance(prompt, compat_str):
 
-             from .utils import preferredencoding
 
-             prompt = prompt.encode(preferredencoding())
 
-         return getpass.getpass(prompt, *args, **kwargs)
 
- else:
 
-     compat_getpass = getpass.getpass
 
- try:
 
-     compat_input = raw_input
 
- except NameError:  # Python 3
 
-     compat_input = input
 
- # Python < 2.6.5 require kwargs to be bytes
 
- try:
 
-     def _testfunc(x):
 
-         pass
 
-     _testfunc(**{'x': 0})
 
- except TypeError:
 
-     def compat_kwargs(kwargs):
 
-         return dict((bytes(k), v) for k, v in kwargs.items())
 
- else:
 
-     compat_kwargs = lambda kwargs: kwargs
 
- if sys.version_info < (2, 7):
 
-     def compat_socket_create_connection(address, timeout, source_address=None):
 
-         host, port = address
 
-         err = None
 
-         for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
 
-             af, socktype, proto, canonname, sa = res
 
-             sock = None
 
-             try:
 
-                 sock = socket.socket(af, socktype, proto)
 
-                 sock.settimeout(timeout)
 
-                 if source_address:
 
-                     sock.bind(source_address)
 
-                 sock.connect(sa)
 
-                 return sock
 
-             except socket.error as _:
 
-                 err = _
 
-                 if sock is not None:
 
-                     sock.close()
 
-         if err is not None:
 
-             raise err
 
-         else:
 
-             raise socket.error('getaddrinfo returns an empty list')
 
- else:
 
-     compat_socket_create_connection = socket.create_connection
 
- # Fix https://github.com/rg3/youtube-dl/issues/4223
 
- # See http://bugs.python.org/issue9161 for what is broken
 
- def workaround_optparse_bug9161():
 
-     op = optparse.OptionParser()
 
-     og = optparse.OptionGroup(op, 'foo')
 
-     try:
 
-         og.add_option('-t')
 
-     except TypeError:
 
-         real_add_option = optparse.OptionGroup.add_option
 
-         def _compat_add_option(self, *args, **kwargs):
 
-             enc = lambda v: (
 
-                 v.encode('ascii', 'replace') if isinstance(v, compat_str)
 
-                 else v)
 
-             bargs = [enc(a) for a in args]
 
-             bkwargs = dict(
 
-                 (k, enc(v)) for k, v in kwargs.items())
 
-             return real_add_option(self, *bargs, **bkwargs)
 
-         optparse.OptionGroup.add_option = _compat_add_option
 
- if hasattr(shutil, 'get_terminal_size'):  # Python >= 3.3
 
-     compat_get_terminal_size = shutil.get_terminal_size
 
- else:
 
-     _terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines'])
 
-     def compat_get_terminal_size(fallback=(80, 24)):
 
-         columns = compat_getenv('COLUMNS')
 
-         if columns:
 
-             columns = int(columns)
 
-         else:
 
-             columns = None
 
-         lines = compat_getenv('LINES')
 
-         if lines:
 
-             lines = int(lines)
 
-         else:
 
-             lines = None
 
-         if columns is None or lines is None or columns <= 0 or lines <= 0:
 
-             try:
 
-                 sp = subprocess.Popen(
 
-                     ['stty', 'size'],
 
-                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
-                 out, err = sp.communicate()
 
-                 _lines, _columns = map(int, out.split())
 
-             except Exception:
 
-                 _columns, _lines = _terminal_size(*fallback)
 
-             if columns is None or columns <= 0:
 
-                 columns = _columns
 
-             if lines is None or lines <= 0:
 
-                 lines = _lines
 
-         return _terminal_size(columns, lines)
 
- try:
 
-     itertools.count(start=0, step=1)
 
-     compat_itertools_count = itertools.count
 
- except TypeError:  # Python 2.6
 
-     def compat_itertools_count(start=0, step=1):
 
-         n = start
 
-         while True:
 
-             yield n
 
-             n += step
 
- if sys.version_info >= (3, 0):
 
-     from tokenize import tokenize as compat_tokenize_tokenize
 
- else:
 
-     from tokenize import generate_tokens as compat_tokenize_tokenize
 
- try:
 
-     struct.pack('!I', 0)
 
- except TypeError:
 
-     # In Python 2.6 and 2.7.x < 2.7.7, struct requires a bytes argument
 
-     # See https://bugs.python.org/issue19099
 
-     def compat_struct_pack(spec, *args):
 
-         if isinstance(spec, compat_str):
 
-             spec = spec.encode('ascii')
 
-         return struct.pack(spec, *args)
 
-     def compat_struct_unpack(spec, *args):
 
-         if isinstance(spec, compat_str):
 
-             spec = spec.encode('ascii')
 
-         return struct.unpack(spec, *args)
 
- else:
 
-     compat_struct_pack = struct.pack
 
-     compat_struct_unpack = struct.unpack
 
- __all__ = [
 
-     'compat_HTMLParser',
 
-     'compat_HTTPError',
 
-     'compat_basestring',
 
-     'compat_chr',
 
-     'compat_cookiejar',
 
-     'compat_cookies',
 
-     'compat_etree_fromstring',
 
-     'compat_expanduser',
 
-     'compat_get_terminal_size',
 
-     'compat_getenv',
 
-     'compat_getpass',
 
-     'compat_html_entities',
 
-     'compat_html_entities_html5',
 
-     'compat_http_client',
 
-     'compat_http_server',
 
-     'compat_input',
 
-     'compat_itertools_count',
 
-     'compat_kwargs',
 
-     'compat_ord',
 
-     'compat_os_name',
 
-     'compat_parse_qs',
 
-     'compat_print',
 
-     'compat_setenv',
 
-     'compat_shlex_quote',
 
-     'compat_shlex_split',
 
-     'compat_socket_create_connection',
 
-     'compat_str',
 
-     'compat_struct_pack',
 
-     'compat_struct_unpack',
 
-     'compat_subprocess_get_DEVNULL',
 
-     'compat_tokenize_tokenize',
 
-     'compat_urllib_error',
 
-     'compat_urllib_parse',
 
-     'compat_urllib_parse_unquote',
 
-     'compat_urllib_parse_unquote_plus',
 
-     'compat_urllib_parse_unquote_to_bytes',
 
-     'compat_urllib_parse_urlencode',
 
-     'compat_urllib_parse_urlparse',
 
-     'compat_urllib_request',
 
-     'compat_urllib_request_DataHandler',
 
-     'compat_urllib_response',
 
-     'compat_urlparse',
 
-     'compat_urlretrieve',
 
-     'compat_xml_parse_error',
 
-     'compat_xpath',
 
-     'workaround_optparse_bug9161',
 
- ]
 
 
  |