1z      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  Safe-Inferred+Button 4 is defaultButton 3 is defaultButton 2 is defaultButton 1 is default RTL reading order!Right align text"Set foreground#Make messagebox topmost$Display with installer's icon%Display with stop icon&Display with question mark icon'Display with information icon(Display with exclamation icon)$Display with yes, no, cancel buttons*Display with yes and no buttons+%Display with retry and cancel buttons,)Display with abort, retry, ignore buttons-&Display with an OK and a cancel button.Display with an OK buttonJMode to use with 'Development.K3Opened for both read and write, contents preserved.M Read a file.NValue to use with setDetailsPrint.UA code label, used for goto programming, see  .  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI     JKLMNOPQRS !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeTfghUijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI     JKLMNOPQRS !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeTfghUijklmno4 .-,+*)('&%$#"! /?>=<;:9876543210@EDCBAFIHG      JMLKNSRQPOG`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! adcbeTfghUijklmnopqrstuvwxyz{|}~ Safe-InferredVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678VWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678 None   None  None+24BMN:&The type of a file handle, created by .X$The type of expressions - namely an Z producing a Y. There are instances for  and , and turning on "{-# LANGUAGE OverloadedStrings #-} is strongly recommended.The  function converts any embedded $VARW into a variable lookup, which may refer to one of the builtin NSIS variables (e.g.  $SMPROGRAMS, $TEMP,  $PROGRAMFILES'), or a named variable created with b or ` . The string $$ is used to escape $J values. Bracket the variables to put text characters afterwards (e.g. $(SMPROGRAMS)XXX'). In contrast to standard strings, / is treated as \ and // is treated as /5. Remember to escape any slashes occuring in URLs.If the string is X  then any 1 variables used will be automatically shown (see ). If the string is X ty then it must be of the form "$VAR" where $VAR is a variable of type ty.The  and  instances for X' throw errors for all comparisons (use o, q etc), but  and  are defined. The  (arithmetic) and F (string concatenation) instances are both fully implemented. From  and , only ,  and F are implemented, and all as integer arithmetic. No functions from  or  are implemented.`When using a single expression multiple times, to ensure it is not evaluated repeatedly, use d.YA Y, only used by X, which can be produced using  . The ty argument should be one of ,  or .ZIMonad in which installers are defined. A useful command to start with is .\Create a new label, used with  and i to write line jump based programming. Where possible you should use structured alternatives, such as ,  and 6. Each created label must be used with one call to  , and any number of calls to . As an example:  abort <- \  var $ do  cond1 $  abort  cond2 $  abort var ^  1 var  abort MNote that the above example could have been written in a simpler manner with .]Set all  actions to automatically take R.^]Assign a value to a mutable variable. The variable must have been originally created with ` or a=, or there will be an error when generating the install file._YIntroduce a variable scope. Scopes are automatically introduced by operations such as , ,  etc. Inside a scope you may define new variables whose names may clash with variables outside the scope, but the local versions will be used.|If you have any non-evaluated expressions, before introducing any potentially clashing variables in the scope you should d them or use c on them. For example: operate x = do x <- c x _ $ do b "TEST" 0 It is important to turn x into a c before defining a new constant $TEST, since if x refers to $TEST> after the new definition, it will pick up the wrong variable.`=Create a mutable variable a name, which can be modified with ^=. After defining the expression, you can refer to it with $NAME in a #. To introduce a new scope, see _. h <- ` "HELLO" "Hello World" "$HELLO" ^ "$HELLO!" h ^& "$HELLO!" -- equivalent to the above - "$HELLO" -- with 2 exclamation marks a?Create an unnamed mutable variable, which can be modified with ^. h <- ` "Hello World" h ^ h  "!"  h b}Create a constant with a name, ensuring the expression is shared. After defining the expression, you can refer to it with $NAME in a #. To introduce a new scope, see _. b "HELLO" "Hello World"  "$HELLO!" cTCreate a constant with no name, ensuring the expression is shared. Equivalent to d .dThe Xp language is call-by-name, meaning you must use share to avoid evaluating an exression multiple times. Using d, if the expression has any side effects they will be run immediately, but not on subsequent uses. When defining functions operating on XO, if you use the same input expression twice, you should share it. For example: strPalindrom x = d x $ \x -> x o strReverse x &If the expression was not shared, and x5 read from a file, then the file would be read twice.e Versions of ` and b restricted to X ), used to avoid ambiguous type errors.f Versions of ` and b restricted to X ), used to avoid ambiguous type errors.g Versions of a and c restricted to X ), used to avoid ambiguous type errors.h Versions of a and c restricted to X ), used to avoid ambiguous type errors.i Versions of ` and b restricted to X ), used to avoid ambiguous type errors.j Versions of ` and b restricted to X ), used to avoid ambiguous type errors.k Versions of a and c restricted to X ), used to avoid ambiguous type errors.l Versions of a and c restricted to X ), used to avoid ambiguous type errors.m6Perform string concatenation on a list of expressions.nBoolean negation.o+The standard equality operators, lifted to X.p+The standard equality operators, lifted to X.q-The standard comparison operators, lifted to X.r-The standard comparison operators, lifted to X.s-The standard comparison operators, lifted to X.t-The standard comparison operators, lifted to X.u#Boolean constants corresponding to  and v#Boolean constants corresponding to  and wLift a  into an XxLift a  into an XyLift an  into an Xz+Erase the type of an Exp, only useful with }.{cPop a value off the stack, will set an error if there is nothing on the stack. Only useful with }.|.Push a value onto the stack. Only useful with }.};Call a plugin. If the arguments are of different types use z. As an example:  encrypt x = d x $ \x -> do } "Base64" "Encrypt" [z x, z $  x] 6The only thing to be careful about is that we use the x parameter twice, so should d+ it to ensure it is only evaluated once.~Add a plugin directoryReturn the length of a string, strLength "test" o 4.Take the first n characters from a string, strTake 2 "test" o "te".Drop the first n characters from a string, strDrop 2 "test" o "st".xGets the last write time of the file, you should only use the result to compare for equality with other results from #. On failure the error flag is set.Define the location of a , see \5 for details. This function will fail if the same U is passed to  more than once. Jump to a , see \, for details. This function will fail if  is not used on the U.$An expression orientated version of :, returns the first component if the first argument is v or the second if it is u. x o 12  (x, x  5) >Test a boolean expression, reunning the first action if it is v and the second if it is u8. The appropriate branch action will be run within a _. See & for an expression orientated version.  (x o 12) ( "is 12") ( "is not 12")  A version of  where there is no else action.bA while loop, run the second argument while the first argument is true. The action is run in a _ . See also . x <- a x  (x r 10) $ do x ^ x  1 A loop with a breakc command. Run the action repeatedly until the breaking action is called. The action is run in a _ . See also . x <- a x  $ \break -> do  (x s 10) break x ^ x  1 Run an intitial action, and if that action causes an error, run the second action. Unlike other programming languages, any uncaught errors are silently ignored. All actions are run in _.  ( "\"$WINDIR/notepad.exe\"") ( "Failed to run notepad") Checks for existence of file(s) (which can be a wildcard, or a directory). If you want to check to see if a file is a directory, use fileExists "DIRECTORY/*.*". Wiff_ (fileExists "$WINDIR/notepad.exe") $ messageBox [MB_OK] "notepad is installed"Performs a search for filespec, running the action with each file found. If no files are found the error flag is set. Note that the filename output is without path. 3findEach "$INSTDIR/*.txt" $ \x -> detailPrint xUIf you jump from inside the loop to after the loop then you may leak a search handle.%Concatenate two strings, for example "$FOO" & "$BAR" is equivalent to  "$FOO$BAR". Convert an  to a  by showing it. Convert a  to an ", any errors are silently ignored.Show an alert, equivalent to messageBox [MB_ICONEXCLAMATION].oSets the name of the installer. The name is usually simply the product name such as 'MyApp' or 'Company MyApp'.  name "MyApp"Specifies the output file that MakeNSIS should write the installer to. This is just the file that MakeNSIS writes, it doesn't affect the contents of the installer. Usually should end with .exe. outFile "installer.exe"Sets the output path ($OUTDIRo) and creates it (recursively if necessary), if it does not exist. Must be a full pathname, usually is just $INSTDIR. setOutPath "$INSTDIR"aSets the default installation directory. Note that the part of this string following the last \" will be used if the user selects browsej, and may be appended back on to the string at install time (to disable this, end the directory with a \O). If this doesn't make any sense, play around with the browse button a bit.  installDir "$PROGRAMFILES/MyApp"Writes the uninstaller to the filename (and optionally path) specified. Only valid from within an install section, and requires that you have an s section in your script. You can call this one or more times to write out one or more copies of the uninstaller. +writeUninstaller "$INSTDIR/uninstaller.exe"0Set the icon used for the installer/uninstaller. @installIcon "$NSISDIR/Contrib/Graphics/Icons/modern-install.ico"0Set the icon used for the installer/uninstaller. @installIcon "$NSISDIR/Contrib/Graphics/Icons/modern-install.ico"/Set the image used for the header splash. Pass ! to use the default header image. =headerImage $ Just "$NSISDIR/Contrib/Graphics/Header/win.bmp"ZCreates (recursively if necessary) the specified directory. Errors can be caught using -. You should always specify an absolute path. )createDirectory "$INSTDIR/some/directory"This attribute tells the installer to check a string in the registry, and use it for the install dir if that string is valid. If this attribute is present, it will override the O attribute if the registry key is valid, otherwise it will fall back to the  default. When querying the registry, this command will automatically remove any quotes. If the string ends in ".exe", it will automatically remove the filename component of the string (i.e. if the string is "C: program files(foo/foo.exe", it will know to use "C: program filesfoo"). ginstallDirRegKey HKLM "Software/NSIS" "" installDirRegKey HKLM "Software/ACME/Thingy" "InstallLocation"Execute the specified program and continue immediately. Note that the file specified must exist on the target system, not the compiling system. $OUTDIRB is used for the working directory. Errors can be caught using n. Note, if the command could have spaces, you should put it in quotes to delimit it from parameters. e.g.: *exec "\"$INSTDIR/command.exe\" parameters"]. If you don't put it in quotes it will not work on Windows 9x with or without parameters. Wexec "\"$INSTDIR/someprogram.exe\"" exec "\"$INSTDIR/someprogram.exe\" some parameters"While the action is executing, do not update the progress bar. Useful for functions which do a large amount of computation, or have loops.Sleep time in milliseconds1Create a function, useful for registering actions2Open a file, which must be closed explicitly with . Often it is better to use   or   instead. h <-  L "C:/log.txt"  h "Hello world!"  h &Write a string to a file openned with .Close a file file openned with .vDelete file (which can be a file or wildcard, but should be specified with a full path) from the target system. If U8 is specified and the file cannot be deleted then the file is deleted when the system reboots -- if the file will be deleted on a reboot, the reboot flag will be set. The error flag is set if files are found and cannot be deleted. The error flag is not set from trying to delete a file that does not exist. !delete [] "$INSTDIR/somefile.dat"QRemove the specified directory (fully qualified path with no wildcards). Without QF, the directory will only be removed if it is completely empty. If Q is specified, the directory will be removed recursively, so all directories and files in the specified directory will be removed. If U is specified, any file or directory which could not have been removed during the process will be removed on reboot -- if any file or directory will be removed on a reboot, the reboot flag will be set. The error flag is set if any file or directory cannot be removed. trmdir [] "$INSTDIR" rmdir [] "$INSTDIR/data" rmdir [Recursive, RebootOK] "$INSTDIR" rmdir [RebootOK] "$INSTDIR/DLLs"gNote that the current working directory can not be deleted. The current working directory is set by C. For example, the following example will not delete the directory. +setOutPath "$TEMP/dir" rmdir [] "$TEMP/dir"8The next example will succeed in deleting the directory. >setOutPath "$TEMP/dir" setOutPath "$TEMP" rmdir [] "$TEMP/dir"Warning: using rmdir [Recursive] "$INSTDIR" in  is not safe. Though it is unlikely, the user might select to install to the Program Files folder and so this command will wipe out the entire Program Files folder, including other programs that has nothing to do with the uninstaller. The user can also put other files but the program's files and would expect them to get deleted with the program. Solutions are available for easily uninstalling only files which were installed by the installer.HBoth file paths are on the installing system. Do not use relative paths.(Creates a shortcut file that links to a Traget file, with optional K'. The icon used for the shortcut is J,I. HI should be one of: SW_SHOWNORMAL, SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED. G should be in the form of 'flag|c' where flag can be a combination (using |) of: ALT, CONTROL, EXT, or SHIFT. c is the character to use (a-z, A-Z, 0-9, F1-F24, etc). Note that no spaces are allowed in this string. A good example is "ALT|CONTROL|F8". $OUTDIR? is used for the working directory. You can change it by using " before creating the Shortcut. N should be the description of the shortcut, or comment as it is called under XP. The error flag is set if the shortcut cannot be created (i.e. either of the paths (link or target) does not exist, or some other error). ScreateDirectory "$SMPROGRAMS/My Company" createShortcut "$SMPROGRAMS/My Company/My Program.lnk" [Target "$INSTDIR/My Program.exe" ,Parameter "some command line parameters" ,IconFile "$INSTDIR/My Program.exe", IconIndex 2 ,StartOptions "SW_SHOWNORMAL" ,KeyboardShortcut "ALT|CONTROL|SHIFT|F5" ,Description "a description"]9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9:;BA@?>=<CWVUTSRQPONMLKJIHGFEDXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ^opqrstNone MReplace one string with another string, in a target string. As some examples: XstrReplace "t" "XX" "test" %== "XXesXX" strReplace "ell" "" "hello world" %== "ho world"NSIS (the underlying installer, not this library) uses fixed length string buffers, defaulting to 1024 bytes. Any strings longer than the limit may cause truncation or segfaults. You can get builds supporting longer strings from  *http://nsis.sourceforge.net/Special_Builds.Given strCheck msg val, if val exceeds the limit it will  with msg, otherwise it will return .+Is the first string a prefix of the second.+Is the first string a prefix of the second.%Join together a list of strings with \r\n, after each line. Note that unlike standard 2, we use the Windows convention line separator.*Write a file comprising of a set of lines.2Short circuiting boolean operators, equivalent to  and  but on X.2Short circuiting boolean operators, equivalent to  and  but on X.With a . perform some action, then automatically call >. If the action argument jumps out of the section then the  call will be missed.Write a file, like .   NoneFCreate the contents of an NSIS script from an installer specification.Like , but don't try and optimise the resulting NSIS script. Useful to figure out how the underlying installer works, or if you believe the optimisations are introducing bugs (but please do report any such bugs!).  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZXYd_bc`a^efghijklU\xywopqrstvunm:9}|{z~T[]FIHG/?>=<;:9876543210.-,+*)('&%$#"! CWVUTSRQPONMLKJIHGFEDJMLK;BA@?>=<@EDCBA NSRQPONoneBase64 data encryption.Base64 decryption. Reverse of .NoneWGiven a string, and a ; separated variable, remove the string from it if it is present.7Set an environment variable by writing to the registry.[Read a variable from the registry. If you are not modifying the variable you should use  instead.0Delete the environment variable in the registry.None1Enable Windows 7 taskbar plugin, called anywhere.None !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi jklmnopqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABC"DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgbhhciijklmnopqrstuvwxyz{|}~                      ghnsis-0.3Development.NSIS$Development.NSIS.Plugins.WinMessagesDevelopment.NSIS.Plugins.Base64%Development.NSIS.Plugins.EnvVarUpdate Development.NSIS.Plugins.Taskbar!Development.NSIS.Plugins.SectionsDevelopment.NSIS.TypeDevelopment.NSIS.SugarnewLabelDevelopment.NSIS.OptimiseDevelopment.NSIS.Show writeFile'withFileDevelopment.NSIS.Library Visibility NeverShowShowHideLevelAdminHighestUserNone FinishOptionsfinRun finRunTextfinRunParamters finRunChecked finReadme finReadmeTextfinReadmeCheckedfinLink finLinkTextPageFinishConfirm InstFiles Directory ComponentsLicenseMessageBoxType MB_DEFBUTTON4 MB_DEFBUTTON3 MB_DEFBUTTON2 MB_DEFBUTTON1 MB_RTLREADINGMB_RIGHTMB_SETFOREGROUND MB_TOPMOST MB_USERICON MB_ICONSTOPMB_ICONQUESTIONMB_ICONINFORMATIONMB_ICONEXCLAMATIONMB_YESNOCANCELMB_YESNOMB_RETRYCANCELMB_ABORTRETRYIGNORE MB_OKCANCELMB_OKHKEY SHELL_CONTEXTSHCTXHKEY_PERFORMANCE_DATAHKPD HKEY_DYN_DATAHKDDHKEY_CURRENT_CONFIGHKCC HKEY_USERSHKUHKEY_CURRENT_USERHKCUHKEY_LOCAL_MACHINEHKLMHKEY_CLASSES_ROOTHKCR ShowWindowSW_HIDESW_SHOWMINIMIZEDSW_SHOWMAXIMIZED SW_SHOWNORMALSW_SHOWDEFAULT CompressorBZIP2ZLIBLZMAFileMode ModeAppend ModeWriteModeRead DetailsPrintLastUsedBothTextOnlyListOnlyNoDetailsPrint SectionIdLabelhwnd_BROADCASTsw_HIDE sw_SHOWNORMAL sw_NORMALsw_SHOWMINIMIZEDsw_SHOWMAXIMIZED sw_MAXIMIZEsw_SHOWNOACTIVATEsw_SHOW sw_MINIMIZEsw_SHOWMINNOACTIVE sw_SHOWNA sw_RESTOREsw_SHOWDEFAULTsw_FORCEMINIMIZEsw_MAXbm_CLICK bm_GETCHECK bm_GETIMAGE bm_GETSTATE bm_SETCHECK bm_SETIMAGE bm_SETSTATE bm_SETSTYLE bst_UNCHECKED bst_CHECKEDbst_INDETERMINATE bst_PUSHED bst_FOCUS cb_ADDSTRINGcb_DELETESTRINGcb_DIR cb_FINDSTRINGcb_FINDSTRINGEXACT cb_GETCOUNT cb_GETCURSELcb_GETDROPPEDCONTROLRECTcb_GETDROPPEDSTATEcb_GETDROPPEDWIDTH cb_GETEDITSELcb_GETEXTENDEDUIcb_GETHORIZONTALEXTENTcb_GETITEMDATAcb_GETITEMHEIGHT cb_GETLBTEXTcb_GETLBTEXTLEN cb_GETLOCALEcb_GETTOPINDEXcb_INITSTORAGEcb_INSERTSTRING cb_LIMITTEXT cb_MSGMAXcb_MULTIPLEADDSTRINGcb_RESETCONTENTcb_SELECTSTRING cb_SETCURSELcb_SETDROPPEDWIDTH cb_SETEDITSELcb_SETEXTENDEDUIcb_SETHORIZONTALEXTENTcb_SETITEMDATAcb_SETITEMHEIGHT cb_SETLOCALEcb_SETTOPINDEXcb_SHOWDROPDOWNcb_ERR em_CANUNDOem_CHARFROMPOSem_EMPTYUNDOBUFFERem_EXLIMITTEXT em_FMTLINESem_GETFIRSTVISIBLELINE em_GETHANDLEem_GETIMESTATUSem_GETLIMITTEXT em_GETLINEem_GETLINECOUNT em_GETMARGINS em_GETMODIFYem_GETPASSWORDCHAR em_GETRECT em_GETSEL em_GETTHUMBem_GETWORDBREAKPROC em_LIMITTEXTem_LINEFROMCHAR em_LINEINDEX em_LINELENGTH em_LINESCROLLem_POSFROMCHAR em_REPLACESEL em_SCROLLem_SCROLLCARET em_SETHANDLEem_SETIMESTATUSem_SETLIMITTEXT em_SETMARGINS em_SETMODIFYem_SETPASSWORDCHARem_SETREADONLY em_SETRECT em_SETRECTNP em_SETSELem_SETTABSTOPSem_SETWORDBREAKPROCem_UNDO lb_ADDFILE lb_ADDSTRINGlb_DELETESTRINGlb_DIR lb_FINDSTRINGlb_FINDSTRINGEXACTlb_GETANCHORINDEXlb_GETCARETINDEX lb_GETCOUNT lb_GETCURSELlb_GETHORIZONTALEXTENTlb_GETITEMDATAlb_GETITEMHEIGHTlb_GETITEMRECT lb_GETLOCALE lb_GETSELlb_GETSELCOUNTlb_GETSELITEMS lb_GETTEXT lb_GETTEXTLENlb_GETTOPINDEXlb_INITSTORAGElb_INSERTSTRINGlb_ITEMFROMPOINT lb_MSGMAXlb_MULTIPLEADDSTRINGlb_RESETCONTENTlb_SELECTSTRINGlb_SELITEMRANGElb_SELITEMRANGEEXlb_SETANCHORINDEXlb_SETCARETINDEXlb_SETCOLUMNWIDTH lb_SETCOUNT lb_SETCURSELlb_SETHORIZONTALEXTENTlb_SETITEMDATAlb_SETITEMHEIGHT lb_SETLOCALE lb_SETSELlb_SETTABSTOPSlb_SETTOPINDEXlb_ERR wm_ACTIVATEwm_ACTIVATEAPP wm_AFXFIRST wm_AFXLASTwm_APP wm_APPCOMMANDwm_ASKCBFORMATNAMEwm_CANCELJOURNAL wm_CANCELMODEwm_CAPTURECHANGEDwm_CHANGECBCHAINwm_CHANGEUISTATEwm_CHAR wm_CHARTOITEMwm_CHILDACTIVATEwm_CLEARwm_CLOSE wm_COMMAND wm_COMMNOTIFY wm_COMPACTINGwm_COMPAREITEMwm_CONTEXTMENUwm_CONVERTREQUESTEXwm_COPY wm_COPYDATA wm_CREATE wm_CTLCOLORwm_CTLCOLORBTNwm_CTLCOLORDLGwm_CTLCOLOREDITwm_CTLCOLORLISTBOXwm_CTLCOLORMSGBOXwm_CTLCOLORSCROLLBARwm_CTLCOLORSTATICwm_CUT wm_DDE_FIRST wm_DEADCHAR wm_DELETEITEM wm_DESTROYwm_DESTROYCLIPBOARDwm_DEVICECHANGEwm_DEVMODECHANGEwm_DISPLAYCHANGEwm_DRAWCLIPBOARD wm_DRAWITEM wm_DROPFILES wm_ENABLE wm_ENDSESSION wm_ENTERIDLEwm_ENTERMENULOOPwm_ENTERSIZEMOVE wm_ERASEBKGNDwm_EXITMENULOOPwm_EXITSIZEMOVE wm_FONTCHANGE wm_GETDLGCODE wm_GETFONT wm_GETHOTKEY wm_GETICONwm_GETMINMAXINFO wm_GETOBJECT wm_GETTEXTwm_GETTEXTLENGTHwm_HANDHELDFIRSTwm_HANDHELDLASTwm_HELP wm_HOTKEY wm_HSCROLLwm_HSCROLLCLIPBOARDwm_ICONERASEBKGND wm_IME_CHARwm_IME_COMPOSITIONwm_IME_COMPOSITIONFULLwm_IME_CONTROLwm_IME_ENDCOMPOSITIONwm_IME_KEYDOWNwm_IME_KEYLAST wm_IME_KEYUP wm_IME_NOTIFYwm_IME_REQUEST wm_IME_SELECTwm_IME_SETCONTEXTwm_IME_STARTCOMPOSITION wm_INITDIALOG wm_INITMENUwm_INITMENUPOPUPwm_INPUTwm_INPUTLANGCHANGEwm_INPUTLANGCHANGEREQUEST wm_KEYDOWN wm_KEYFIRST wm_KEYLASTwm_KEYUP wm_KILLFOCUSwm_LBUTTONDBLCLKwm_LBUTTONDOWN wm_LBUTTONUPwm_MBUTTONDBLCLKwm_MBUTTONDOWN wm_MBUTTONUPwm_MDIACTIVATE wm_MDICASCADE wm_MDICREATE wm_MDIDESTROYwm_MDIGETACTIVEwm_MDIICONARRANGEwm_MDIMAXIMIZE wm_MDINEXTwm_MDIREFRESHMENU wm_MDIRESTORE wm_MDISETMENU wm_MDITILEwm_MEASUREITEM wm_MENUCHARwm_MENUCOMMAND wm_MENUDRAGwm_MENUGETOBJECTwm_MENURBUTTONUP wm_MENUSELECTwm_MOUSEACTIVATE wm_MOUSEFIRST wm_MOUSEHOVER wm_MOUSELAST wm_MOUSELEAVE wm_MOUSEMOVE wm_MOUSEWHEELwm_MOVE wm_MOVING wm_NCACTIVATE wm_NCCALCSIZE wm_NCCREATE wm_NCDESTROY wm_NCHITTESTwm_NCLBUTTONDBLCLKwm_NCLBUTTONDOWNwm_NCLBUTTONUPwm_NCMBUTTONDBLCLKwm_NCMBUTTONDOWNwm_NCMBUTTONUPwm_NCMOUSEHOVERwm_NCMOUSELEAVEwm_NCMOUSEMOVE wm_NCPAINTwm_NCRBUTTONDBLCLKwm_NCRBUTTONDOWNwm_NCRBUTTONUPwm_NCXBUTTONDBLCLKwm_NCXBUTTONDOWNwm_NCXBUTTONUP wm_NEXTDLGCTL wm_NEXTMENU wm_NOTIFYwm_NOTIFYFORMATwm_NULLwm_PAINTwm_PAINTCLIPBOARD wm_PAINTICONwm_PALETTECHANGEDwm_PALETTEISCHANGINGwm_PARENTNOTIFYwm_PASTEwm_PENWINFIRST wm_PENWINLASTwm_POWERwm_POWERBROADCASTwm_PRINTwm_PRINTCLIENTwm_QUERYDRAGICONwm_QUERYENDSESSIONwm_QUERYNEWPALETTE wm_QUERYOPENwm_QUERYUISTATE wm_QUEUESYNCwm_QUITwm_RBUTTONDBLCLKwm_RBUTTONDOWN wm_RBUTTONUPwm_RASDIALEVENTwm_RENDERALLFORMATSwm_RENDERFORMAT wm_SETCURSOR wm_SETFOCUS wm_SETFONT wm_SETHOTKEY wm_SETICON wm_SETREDRAW wm_SETTEXTwm_SETTINGCHANGE wm_SHOWWINDOWwm_SIZEwm_SIZECLIPBOARD wm_SIZINGwm_SPOOLERSTATUSwm_STYLECHANGEDwm_STYLECHANGING wm_SYNCPAINT wm_SYSCHARwm_SYSCOLORCHANGE wm_SYSCOMMANDwm_SYSDEADCHAR wm_SYSKEYDOWN wm_SYSKEYUPwm_TABLET_FIRSTwm_TABLET_LASTwm_THEMECHANGEDwm_TCARD wm_TIMECHANGEwm_TIMERwm_UNDO wm_UNICHARwm_UNINITMENUPOPUPwm_UPDATEUISTATEwm_USERwm_USERCHANGED wm_VKEYTOITEM wm_VSCROLLwm_VSCROLLCLIPBOARDwm_WINDOWPOSCHANGEDwm_WINDOWPOSCHANGINGwm_WININICHANGEwm_WTSSESSION_CHANGEwm_XBUTTONDBLCLKwm_XBUTTONDOWN wm_XBUTTONUP abm_ACTIVATEabm_GETAUTOHIDEBAR abm_GETSTATEabm_GETTASKBARPOSabm_NEW abm_QUERYPOS abm_REMOVEabm_SETAUTOHIDEBAR abm_SETPOSabm_WINDOWPOSCHANGED dbt_APPYBEGIN dbt_APPYENDdbt_CONFIGCHANGECANCELEDdbt_CONFIGCHANGEDdbt_CONFIGMGAPI32dbt_CONFIGMGPRIVATEdbt_CUSTOMEVENTdbt_DEVICEARRIVALdbt_DEVICEQUERYREMOVEdbt_DEVICEQUERYREMOVEFAILEDdbt_DEVICEREMOVECOMPLETEdbt_DEVICEREMOVEPENDINGdbt_DEVICETYPESPECIFICdbt_DEVNODES_CHANGEDdbt_DEVTYP_DEVICEINTERFACEdbt_DEVTYP_DEVNODEdbt_DEVTYP_HANDLEdbt_DEVTYP_NETdbt_DEVTYP_OEMdbt_DEVTYP_PORTdbt_DEVTYP_VOLUMEdbt_LOW_DISK_SPACEdbt_MONITORCHANGEdbt_NO_DISK_SPACEdbt_QUERYCHANGECONFIGdbt_SHELLLOGGEDONdbt_USERDEFINEDdbt_VOLLOCKLOCKFAILEDdbt_VOLLOCKLOCKRELEASEDdbt_VOLLOCKLOCKTAKENdbt_VOLLOCKQUERYLOCKdbt_VOLLOCKQUERYUNLOCKdbt_VOLLOCKUNLOCKFAILEDdbt_VPOWERDAPIdbt_VXDINITCOMPLETE dm_BITSPERPEL dm_COLLATEdm_COLOR dm_COPIESdm_DEFAULTSOURCEdm_DISPLAYFLAGSdm_DISPLAYFREQUENCY dm_DITHERTYPE dm_DUPLEX dm_FORMNAME dm_GRAYSCALE dm_ICMINTENT dm_ICMMETHOD dm_INTERLACED dm_LOGPIXELS dm_MEDIATYPEdm_NUPdm_ORIENTATIONdm_PANNINGHEIGHTdm_PANNINGWIDTHdm_PAPERLENGTH dm_PAPERSIZE dm_PAPERWIDTH dm_PELSHEIGHT dm_PELSWIDTH dm_POSITIONdm_PRINTQUALITYdm_SCALEdm_SPECVERSION dm_TTOPTIONdm_YRESOLUTION hdm_FIRST lvm_FIRSTsb_CONST_ALPHA sb_GRAD_RECT sb_GRAD_TRIsb_NONEsb_PIXEL_ALPHAsb_PREMULT_ALPHA sb_SIMPLEIDsbm_ENABLE_ARROWS sbm_GETPOS sbm_GETRANGEsbm_GETSCROLLINFO sbm_SETPOS sbm_SETRANGEsbm_SETRANGEREDRAWsbm_SETSCROLLINFO stm_GETICON stm_GETIMAGE stm_MSGMAXstm_ONLY_THIS_INTERFACEstm_ONLY_THIS_NAMEstm_ONLY_THIS_PROTOCOLstm_ONLY_THIS_TYPE stm_SETICON stm_SETIMAGE tcm_FIRST pbm_SETRANGE pbm_SETPOS pbm_DELTAPOS pbm_SETSTEP pbm_STEPIT pbm_GETPOSpbm_SETMARQUEEHWND FileHandle SectionFlagSF_PartiallySelected SF_Expand SF_ReadOnlySF_BoldSF_SectionGroupEndSF_SectionGroup SF_SelectedAttribONameTimeoutIdKeyboardShortcut StartOptions IconIndexIconFile ParametersTargetRequired DescriptionExpanded Unselected RecursiveNonFatal FilesOnlySilentRebootOKFinalSolidExpValueAction newSectionIdalwaysNonFatal@=scopemutablemutable_constant constant_share mutableInt constantInt mutableInt_ constantInt_ mutableStr constantStr mutableStr_ constantStr_ strConcatnot_%==%/=%<=%<%>=%>falsetrueboolstrintexp_poppushplugin addPluginDir strLengthstrTakestrDrop getFileTime readRegStr deleteRegKeydeleteRegValueenvVarlabelgoto?iffiff_whilelooponError fileExistsfindEach&strShowstrReadalertnameoutFile setOutPath installDirwriteUninstaller installIcon uninstallIcon headerImagecreateDirectoryinstallDirRegKeyexecexecWait execShellsectionSetTextsectionGetText sectionGet sectionSet messageBox writeRegStrwriteRegExpandStr writeRegDWORD hideProgresssleepevent onSelChange onPageShow onPagePre onPageLeaveallowRootDirInstallcaption detailPrintsetDetailsPrintshowInstDetailsshowUninstDetailsfileOpen fileWrite fileClose setCompressorfilesection sectionGroup uninstalldeletermdir copyFilescreateShortcutpage finishOptionsunpagerequestExecutionLevel hwndParent findWindow getDlgItem sendMessageabort strReplacestrCheck strIsPrefixOf strIsSuffixOf strUnlineswriteFileLines%&&%|| withFile'nsisnsisNoOptimiseencryptdecrypt setEnvVar getEnvVar deleteEnvVarsetEnvVarAppendsetEnvVarPrependsetEnvVarRemovetaskbaratMostOneSectionexactlyOneSection ACopyFilescpFromcpTocpSilent cpFilesOnly AExecShell esCommandesShowADeletedelFile delRebootOKARMDirrmDir rmRecursive rmRebootOKAFilefilePath fileNonFatal fileRecursive fileOName ACompressorcompType compSolid compFinal ASectionGroupsecgIdsecgName secgExpandedsecgDescriptionASectionsecIdsecNamesecDescriptionsecBold secRequired secUnselected AShortcutscFilescTarget scParameters scIconFile scIconIndexscStartOptionsscKeyboardShortcut scDescriptionNSISAbort SendMessage GetDlgItem FindWindowSleepPlugin DetailPrintSetDetailsPrintShowUninstDetailsShowInstDetailsCaptionAllowRootDirInstallInstallDirRegKey AddPluginDirRequestExecutionLevel CopyFilesRMDirDelete ClearErrors ExecShellExecWaitExec ReadEnvStrDeleteRegValue DeleteRegKey ReadRegStr WriteRegDWORDWriteRegExpandStr WriteRegStrCreateShortcut MessageBox FileClose FileWriteFileOpenWriteUninstaller SetCompressorCreateDirectory SetOutPathUnpage HeaderImage UninstallIcon InstallIcon InstallDirOutFileFileNameCallFunction SectionGroupSectionPopPush FindCloseFindNext FindFirst IfFileExistsSectionSetFlagsSectionGetFlagsSectionSetTextSectionGetTextIfErrors GetFileTimeStrLenStrCpyIntOpIntCmpStrCmpSLabeledGotoAssignVal_LiteralBuiltinVar_ValFunVarDefaultdefnewFun showPageCtor$fDefaultFinishOptions$fDefaultMessageBoxType$fDefaultShowWindow$fDefaultACopyFiles$fDefaultAExecShell$fDefaultADelete$fDefaultARMDir$fDefaultAFile$fDefaultACompressor$fDefaultCompressor$fDefaultASectionGroup$fDefaultASection$fDefaultAShortcut$fShowFileMode$fShowDetailsPrint $fShowVal_$fShowSectionId $fShowFun $fShowLabel $fShowVar $fDefaultVar $fDefault[]$fDefaultMaybeoptimiserep useLabel0elimLabeledGoto elimDeadVarjumpy elimAfterGoto elimDeadLabeldullGoto knownCompareisEqual assignSwitch deadAssignshowNSISsecDescsisGlobal isSectionoutsoutshowPage showFinishindentbaseGHC.NumNum Data.StringIsString fromStringGHC.BaseStringghc-prim GHC.TypesInt GHC.ClassesEqOrdminmax Data.MonoidMonoidGHC.RealIntegral Fractional/moddivGHC.EnumEnumRealreturnBoolTrueFalse+ Data.MaybeNothing fromValueSuniquesstreamscopestyStringtyIntuniquevarvallitemitrvalcapture runActionbuiltin parseStringintOpemit1emit2emit3addScopecomp $fBitsAction$fMonoidAction$fFractionalAction $fOrdAction $fRealAction $fEnumAction$fIntegralAction $fNumAction $fEqAction $fShowAction$fIsStringAction Data.Listunlines&&|| System.IO writeFileremoveresolve