Click here to Skip to main content
15,886,518 members
Articles / Desktop Programming / Windows Forms

Evaluation Engine

Rate me:
Please Sign up or sign in to vote.
4.96/5 (164 votes)
1 Jun 2008CC (ASA 2.5)29 min read 299.6K   5K   376  
The Evaluation Engine is a parser and interpreter that can be used to build a Business Rules Engine. It allows for mathematical and boolean expressions, operand functions, variables, variable assignment, comments, and short-circuit evaluation. A syntax editor is also included.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>127, 17</value>
  </metadata>
  <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>272, 17</value>
  </metadata>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAArVJREFUOE+NktlO
        U1EYhXeR6I3vYOK9F5S2esET+AzGMBVahAQQkUnRxAsxgkQjkUGKhTAjyCS2iqaKDAIWDKZASweEUqAj
        0FM6Lf99qlwSmqzsnJ69vrXO3r9EkacvAmOXIGFpjLHLSUy4yNhCMmNpEkYv+O9ckoQlkYA4i4WjvvMX
        ks3BaKRmoeF6P1Oo9c1LtiCWbAJCkTgEUvA4Bt9RFLu+MNyBiPgshGPY80fQ0DYY1xitkZs1hn2FejSL
        KW7pTEvWIB70uhAMk5k2Zj+dgecggl0yBIJREeyn1bF/jHVnCDqjB5+M+1AU6kME+OgzEuB+9464iYsD
        XP4wPIcRMZk32KE2lp0Q1rcFVLTb8XXFC7m6Ok6A4fC85YgATnETV07tLFy0HoRiCFEr72EUVhdPF7C6
        JaBMa0OPwQm5ahwEqI7Pmg9xr8sJO1Xk2nQfU3pUTD8QYthyh0/Mpq0g7rZtoGPyD2S5oxygx/QqATq3
        xepKSs+tm0X+8x8oIKnr56Ck//m7/yppWYNGZ4csZ4QAeXpMmQKo7NikbyPRWtnhQGU7lx3lWjslWlGq
        2UBJqwXFLesoeW1G05gFMuW7BMCwEkiYSQkjiSDcXPbGJla+00oAMt5uXiOt4uXQGlKzBxOAyWUfmR3/
        ZD9JF82UXKqxiOZiMhY1mlDY+Bt1fStIzRrgAB30Ri8qtA7xvs+igoZfeNK1DGlmH9g1OsSJRa9YV6Ar
        e/wl81Txmch78ROP2hchzeglQL4e4/MeapAAGMyfTxUHqOoX8LB1ngDdYFdpDkbm3ASwnbmBsnYOVc2z
        SEmnSZSqdBsD3/cwMLV7pu/nZ1TVNIPyV9NIuaF1M7n6wzO5emJMljHhkave03iOiRMmyxlGqnKIruot
        pFn9dGC9VLmHUrvF5Cvpnf6UjM5vfwGOQwNvBp4dsQAAAABJRU5ErkJggg==
</value>
  </data>
  <data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmVJREFUOE+Fks1r
        E0EYxlP/CU+KJw+tUUpIRPEkSEGE9iBIBRWtCGIPUr14Kh7apiCVNtVACWrR1ooFUXtQEIoIJaBNoklN
        smliE2LIR9NN9ns3m32cGZuQCI3DPszsvvv85nmH6bLtPQ6S0n6irt1f6IzddZHMGSKrg9/mLBQKumma
        aJWmafB4PNPEeIhoXyeAixpVVYUoiuB5HsVikcEURYHX621A9mQwAN2RGgRBQKlUaktDnK7/JqjVagwi
        yzKDlMvlZhIG+LniCKXfnTMy/2jB3Z1t9N6A0CSNdmiNAfzPXZpl1QFY5KH6u1778qEtLoXous7akSSJ
        1Rgg8sZZsUwVWnYKcmoa8tZTKOll+Nc+tQGowTAMBqEH2wRwi72CqVcgJT0QEzPYWb+L7MoANuZOIjl/
        BpvPTiPhO0VE3hfPIrnQh62VwRbAa6dRU/LgI7PYCbhR+HwHeoWDLImkFdqV1RT7QMavVwOtCY4brP+6
        RqQApgzLFCFEr0JO3IDMDbXoGoOllvrpOYjkDBw2btalW6YCU/Cjxn+Esb0MPe9DKXwLucAQ8oErRJeI
        LiL37QL47SwmRx30CjuIDtj8cy6tbggwyu+hF15Ayz2CmhmDvDlMdr4OOX4ZUmwQUvQ8xI1+1PUCOJ/T
        aF6g4MNjqmXwxDwP7fc01PR9KKkRFpuZwn0QQidQXT+KytfDpNM0uFmn3gTEJ+05pRKprK6+rEuJJxC5
        xxBjUxCj4xAioxDC91D9MYJqaBjV4E28XXpgxWd6hSYgNt5zO+Y+shiZ6C4G3Xa1oybs6ne3vRob6/E0
        AH8AxV2MVGl1HdYAAAAASUVORK5CYII=
</value>
  </data>
  <data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAjlJREFUOE+Fk+1L
        k1EYxrX+h/qSEJRlEga6puKqiSJZ0jJqQaRUNF+STI3KsdQCLVoskcc12sIoK52RIx4IIWoUCAZF4Zfo
        W0Rs7I211/aWV+fcbc/WsnbDBeeF+3eu+9znFBdlYwMbrmdam7O22tDNFr8yreRvVkWj0e92u/1nKpXC
        aorFYhAEYYIlbmRakw+Q8+RwOIxIJCIpEAjA7/fD5XIR1Ol0wmg0ZiF9Cypk1Pv8AM6KLeh5th/d8/vQ
        MbcXp2eacHK6EW63mwDMJfghJpPpN4QnF4rjFiU8Hs9fZTGAvKjN3ICu20dxxdaNQWs7Rh4OYM9wKVQ3
        q3FQX4tdl0uhFhTgpXi9XnLicDgIRgBuddp+B+L7Wcw79Hj60YJrc5egtWrQJjTj07dlqPQ1dCfBYJDu
        w+fzZQG8Rh7XnwziwSsTJj6cx62FISi15Vj+8o72mq/KwDvA6w+FQgSSHLTfa6BTlMPbcOiGAralRxhd
        HMDF2Q7o7nfhRyKKRu0OJBIJxONxgnBJgCOTdajoXwe1QYlWQx3qdWWYeilg/O0odLY+jMycw+7+7Ugm
        kwTg4m4kQKuhBpYX47AuTuHxGzOWPr/GpDiGHvMxaO6q0Wk6jNozZeSAiyf/AWgZkxfqInZqtkiADEhy
        0DRUSTXWX6ggq4recjqxunMrJcpObUbliU1UQq4kQPo9F/OeiqK48q9/kL/Onz29g5yQsfZE/veZMpD0
        nwmx3KpcQAmbyNJUTi4knlzyCwDUfxEmaWbEAAAAAElFTkSuQmCC
</value>
  </data>
  <data name="toolStripButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAjhJREFUOE+Fk8+L
        UlEUx5v6I2rRUKvZtIqpgclCXQyRFC2HahYVtGgxENMviaFfI1HQECEiuNKduTIVxIUYGhRkICb9gGog
        Hc3fvqfP98v8ds+d8Y2ND3rw5T3uu+dzzvfcc6f27DwH2ed+pn1ja2afNbb4i2m4++dsv9/vpFKpP4PB
        AGZSFAVut/slCzzMtHc3YI6Ce70eJEkyJAgC2u02qtUqh1YqFXg8ngnIFKPN0QZZlqGqKuR37yE/fQbp
        sQudTge1Wo0DWJWgJF6vdwThhRgAClaTSciXr2DgWoV05ixEUUS9Xp+wRUlHNgyA9uMn5MUL0G/fQH/x
        IqRbd7kdstJoNHgl5XKZwyYBug7l0Rr01TvoO+9BZ1l1WmPNIwhVQv1oNpvmAP3rN8hLl9BznIP6Jg29
        1eYb8/k80uk0959k9nK5nDlAWX8B3XkTg/tOiCdtkB66+MZEIoFSqcSbS+9gMDgJeDAzs0SZdecKC7ZD
        mLcagEgkwq3wBjP5/f5/AVWr48CmxZ7XVpYh2hagfvgI7fMXaKVNRKNRZDIZaJrGRf0gG+FweKuJvdOO
        t91TC983Dtl15dpVSGtPjOOirMViEfF43AAQJBAI8GPlgO78fO+VxTZUl69DcJyH/ntr4kYiSCwWQ6vV
        4jZIPp9vx4J4wgrhuAUbR45+ev18fWh2BwqFAofQv1AohGw2Cxr78TmggTrGzlkyu0w0AzREBKDSt+9M
        l8XMjl+oaYJsU2lE/ycKnv4L5xZq1y7eIBMAAAAASUVORK5CYII=
</value>
  </data>
  <data name="toolCloseTab.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgRJREFUOE+Vk11r
        01AYx4cgFL+CSEC9aeOMc+LNNCGI3SxTy3Rd1qyJfbGb3fqytaRkq616oeAn8QPNrV4VFSk6nK7dkjZN
        8t9JpHOlzWCBAwfO8/s9b2Rs7Jwf0ulLnohdLFK2otBeAV0pRXdEMa9FouxQjAOjvAlbUWEXCkOSriTR
        nXgK3ZUMDsLPPrVCYf+JpA+j+hY2OdZ6Cd1M5kTiwnICvWweqFTh3PenH+VRq11wJeTia0Zjlr35Gvjw
        EZZaQe/VGpySXViKw1jLAeRdl+P4wtw2MTl5caANyDXfj9WcaZXKwLv3MIsKOokU9NgLGJksoG659/rN
        CbPBcb6Rc4Is+74l02YvWwCqb4CtKgErQFmFviShPn7LG+4bHUnjQdCCStoRJUAQgZKCOsdZnplPl9MW
        JFoXYwDZBiKLwPMFoLCBv8EZ/J6a8lyx62gLAq1Fl2CkloGNEgGLQI60Qwaozy9g/z6HJsOMlrjwoggj
        mQbIGjUhit3ADfPzPdY6fBwGlldw9CSMvTt30fT7ByUuTHo1Ei9J1nVopPTdAO0OzDnbgYDZejgNJJI4
        nAnh5ziDr1eu/Ze05+b4o4gAI56ENi9ghwCnB9ag/kkOOB5aaBa/mAl8v0zxA6v8Ewzxrdmn2GFHT7tB
        Ub7tq9fNkXDftMey/FmrciRDmc/5Nw+FHwOy70cjmFGmtQAAAABJRU5ErkJggg==
</value>
  </data>
  <data name="toolStripButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAqhJREFUOE+tk91L
        k1Ecx/0Lup5be57S8CLzohhFpZBeRIiEa+BLmmYu86Vtz17UlJ5NGDbTIg2cL0tSRLMstXrmnMnUOZvO
        KWXisikh5m56odowerFvzzNwWZQX0YEvnIvz+Zzf+Z1zwsL+98iaio88NX6YTrMf9CYye/2JTIxfbI32
        ii276eT+XZFb7pftjJOk2Pf7NPZ0tHuM6FnsCKZtvh6F1mQkdJG+I12E5I+SbMchiXhEFKid0cGy3IuW
        59ehnykNhpubl3tQM3EB+4zCwIEbgl8lJ8diIyQ20SoHcwvL3TKUuAqhmsiHhk0xm7LJIjAv7+KyowR7
        jLzVGCMREaok3SbSUsOpwZ05mAMp51nIx3Mhd5yB0pEL20o/tE4FzKwk6/YxRF3brg0JxI9ivG2eepg8
        dSiZLIDisZQFc6AYY2PPwcgrK7jhC6yg6WkNWmZqQFbxvCHBUSZq7f7SLVS4VVA789hK+jD/bhbUaC6G
        VwaC8Lf1r2h6cgXa0QL0eNpA6LathQQJ98i13sVO6FwUKlxqfPj8Pgi9/fQ6BBunq6C0ZoC2nUOvpxVE
        +WZBJ+m9OVuH5rmr0IxJYZgsQ+DLxyC8/n0dxqlLkFlSoWIFDe5KNDsNIDWbjhDbTmilfUlglu6gbFQK
        pS0blePFWHgzh6bpapzvT4HcnAaNJRPMi04cN8WDKOX/bKKohYjgrsZgV+GBtwulQ6ehHswENZAOhZkL
        B2fg4UIHdAMFICjeKkFtukauGdG1AskOnSCgt8lgZiWNbgPooTxcHJSikT0Cw8K0JQ/CfH6AUP72kDa6
        ubNaICF14b4TrQlodhnQ/cyE7lkTjE49khriEF4U7iPkf4E3JEK9MJLQ8mmynOcl1Hw/QfH9pIydU3xa
        KBNu/Zn+5Wf/AGursR+YmF9NAAAAAElFTkSuQmCC
</value>
  </data>
  <metadata name="saveFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>371, 17</value>
  </metadata>
  <metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>499, 17</value>
  </metadata>
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AjFQAFopV
        ACqJVwM6ilgEO4pWACyNVQAWkVUAAf///wD///8A////AP///wD///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wB/RgQ3ekwZgoJb
        N76OaE7kl3Fd9px2ZP6cdmT+l3Jd945pT+SDXDjBek0ag39GBDj///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wB4PQZBcEYks4dg
        TPmjemz/tIp8/7eNfv+0i33/s4p8/7OKfP+0i33/tox+/7WLf/+mfnH/iWNR+nBHJrR3PgZE////AP//
        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wB/OQMRZzgUlnZN
        OvuTZVb/m3Bg/511Z/+jfXD/qoR3/6uFeP+rhXj/q4V4/6uFeP+rhXj/poBz/594a/+cc2T/lGla/3dP
        Pv1nORWZfzoDFP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AdjIFJGA0
        G8d4Sjf/glVE/4FaTP+IYlX/kmxf/5p0Z/+he27/p4F0/6mDdv+qhHf/qIJ1/6R+cf+dd2r/lW9i/4xm
        Wf+DXVD/g1hJ/3dMPP9eNBzKdjIFKP///wD///8A////AP///wD///8A////AP///wD///8A////AHIt
        BiRcMRzVdUUy/25DM/9tSDv/d1JF/4FbTv+JY1b/kGpd/5dxZP+bdWj/nnhr/595bP+cdmn/mXNm/5Nt
        YP+MZln/hF5R/3xWSf9xTD//bUQ2/3BDM/9bMh7bcy8FKf///wD///8A////AP///wD///8A////AP//
        /wB2LAUSWS0XynFALf9nPi7/Yj0x/2hCNf9uRzr/cko9/3xVR/+DW07/iGBT/41lWP+OZ1n/jmdZ/45m
        Wf+JYlT/hV1Q/39YSv91TkD/cUs+/2tFOP9kPjH/ZD0v/2s/Lv9XLRjOdiwFFv///wD///8A////AP//
        /wD///8A////AFkmD5hoOSX/Yzkp/144LP9iPC//YTot/3dVSf/AsKn/xrav/8e4sf/Ku7T/ybmy/8u8
        tf/LvLX/ybqy/8u8tf/JurP/x7ix/8OzrP97Wk7/Yjsu/2M9MP9fOi3/YDgq/2M3J/9YJhCf////AP//
        /wD///8A////AP///wBkIglFWy4b/GM1I/9YMib/XDYp/185LP9aMyX/ln1z/+bh3f+GZ1z/nIN6/8S1
        rv+HZlr/uqeg/7mmnv+IZ1v/xbew/5+GfP+HaF3/497Z/5uDev9bMyb/YDot/103Kv9ZMyf/XTQl/1Ut
        Hf5jIglK////AP///wD///8AcyAHBFMiELthMRz/Uy0f/1UvI/9ZMyb/XDYp/1gwIv+Rd23/7+zp/8i8
        tv/Rx8H/4dvW/8i6s//c1ND/3NTP/8q9t//Yz8n/bkk9/1oxI//Qxb//m4R7/1gxI/9dNyr/WjQn/1cx
        JP9TLSH/WS8e/1AiEcFzIQcF////AP///wBiGwk6VCYU/FcqGf9OKRz/Uy0g/1YwI/9ZMyb/VS0f/5J4
        b//h29f/fF1S/5N5b/+7rKX/dVNI/66bk/+tmZL/dlVJ/7moof9zUUX/WTIk/9TLxv+ZgXj/VS4g/1o0
        J/9XMST/VC4h/1AqHf9RKRv/TiUV/WEcCUH///8A////AFMZC4lWJxL/SyMW/0wmGf9PKRz/Uiwf/1Yw
        I/9RKRv/jXNp//Hv7P/Kv7n/0snD/+Lc2P/HurT/3dbR/9zV0P/HurT/5N7a/9jQy//Pxb//8/Hu/5F4
        b/9SKhv/VzEk/1QuIf9RKx7/TSca/0okF/9NJRT/URoMkv///wBrFQoFTBoLyFEiD/9FHxP/SCMW/0wm
        Gf9PKRz/USse/00kF/+NdGr/497a/3xeU/+SeXD/vK2n/3VUSf+vnZb/rZuT/3VVSf+/sar/lHxy/3td
        Uv/i3dj/k3px/00lF/9SLB//UCod/00nGv9KJBf/RiAU/0kgEP9HGQzNaxYJB2MSChxJGQnqSRwL/0Ab
        D/9FHxL/SCIV/0slGP9NJxr/SCAS/4huZf/y8Oz/xLex/83Dvf/f2dX/wLKs/9nSzf/Z0c3/wbOt/+Da
        1v/OxL7/xLex//Lv7f+OdWz/SSET/08pHP9MJhn/SSMW/0YgE/9CHBD/QxsM/0IYCu5jEwohXA4KMUYY
        BfpCFwb/PRcK/0EbDv9DHRD/RiAT/0okF/9GHhD/i3Jo/+bh3v+EZ13/moN5/8O1rv+AYlf/t6af/7al
        nf+DZFn/xriy/5+If/+Ia2D/5uHd/5V8c/9OJhn/Uiwf/00nGv9JIxb/RB4R/z4YDP88FQf/PRUG/VsQ
        CjpXDAtDQRQC/zoRAf85Ewb/QRsO/0kjFv9RKx7/WDIl/1cvIf+TenD/8vHu/8S2sP/Owr3/4drW/8Cx
        q//b0s7/2tLN/8Gyq//i3Nj/z8S+/8S2sP/z8e7/moJ5/1w0J/9hOy7/Xjgr/1o0J/9ULiH/TSca/0Uf
        Ef8/Fwj/Vw0KSVQJCkU+FgT/RR0O/04oG/9XMST/XDYp/2A6Lf9iPC//XTUn/5h/dv/q5uP/lnxy/6iS
        iv/Kvbf/kHRq/7+wqf++rqf/kXRq/8y/uv+qlIz/lnty/+nl4v+dhXz/XjYo/2M9MP9hOy7/Xzks/1w2
        Kf9aNCf/WTMl/0skFf9UCQlJVAUJM0siEvxdNCX/WTMn/1w2Kf9eOCv/YTsu/2M9MP9eNyn/mH91//Lw
        7f+2pJ3/w7Wu/93U0P+xnZb/1MrF/9TKxf+zoJn/3tbT/8a4sv+4pp//8vDt/56FfP9gOCv/ZkAz/2M9
        MP9hOy7/Xzks/1s2Kf9cNSf/SiQW/lMGCDtXAQofSR4S7GE3J/9bNin/Xjgr/2E7Lv9kPjH/ZkAz/2E5
        LP+cg3r/6uXi/4prYP+fhnz/xriy/4NhVv+5p6D/uaeg/4VlWf/Ju7X/ooqB/4ttYv/p5OH/oYqB/2I6
        Lf9oQjX/Z0E0/2Q+Mf9iPC//Xzks/2A5K/9HHxTxVwEKJFwACgdJGBHNbUQx/2VAM/9oQjX/a0U4/21H
        Ov9vSTz/akM1/6CGff/39vT/1cvG/93V0f/r5+T/0sfC/+fh3v/l39v/0MS//+vn5P/c08//08jD//f2
        9P+ljYT/bEQ3/3JMP/9wSj3/bkg7/2xGOf9pQzb/a0U1/0caFNNcAAoJ////AEgMDpJ2Tjv/dU9C/3VP
        Q/93UUT/eVNG/3xWSf93T0L/p42E//z8+//s5uT/6eLf/+fg3f/r5eL/6OHe/+jh3v/r5uP/5+Dd/+nj
        3//t5+X//f38/6yTiv95UUP/flhL/3xWSf96VEf/eFJF/3dRRP9zTz//Rw4Qmv///wD///8ATQEIQ21G
        N/6KYlT/gl1Q/4ReUf+FX1L/h2FU/4NbTf+xmI//8u/t/5NwZP+NZ1r/j2pd/49qXf+Qa17/kGte/5Br
        Xv+Qal7/jWda/5ZzZ//18/H/tZ2V/4VdT/+JY1b/h2FU/4ZgU/+FX1L/imNW/2xJO/9MAQlJ////AP//
        /wBaAAgHVCQgx5lyYP+Ra1//kmxf/5NtYP+TbWD/j2dZ/7mgl//y7+3/lm9i/49mWf+SaVv/kmpc/5Nq
        XP+Talz/k2pc/5JqXP+QZ1n/mHJl//Xz8f+8pZz/kGha/5VvYv+UbmH/lG5h/5NtYP+Xc2P/VCckylkA
        Bwj///8A////AP///wBKAwlSgl5Q/6eAcf+feWz/oHpt/6B6bf+cdGf/wKif//r5+P/NubL/yLOr/8m0
        rf/Kta3/yrWt/8q1rf/Kta3/yrWt/8izrP/OurP/+/v6/8Sso/+ddWf/onxv/6F7bv+he27/p4Bz/4Jh
        U/9KBApX////AP///wD///8A////AFwACAJRHRypqoZ1/6+JfP+shnn/rYd6/6qCdP/EqZ//////////
        ////////////////////////////////////////////////////////x62k/6uDdf+uiHv/rYd6/7CK
        ff+qiHj/USAgsFsACAT///8A////AP///wD///8A////AFIABR1mPjjZwJqK/7qThv+4koX/uJKF/7qV
        iP/Lr6X/zrOq/86zqf/Os6n/zrOp/86zqv/Os6r/zrOq/86zqv/Os6r/zrSq/8ywpv+8l4r/uZOG/7mT
        hv+6lIf/v5yM/2hCPN1RAAUf////AP///wD///8A////AP///wD///8A////AE0ABTV0UEjky6eW/8eg
        k//DnZH/xJ6R/8GZjP/BmYz/wpqM/8KajP/Cmoz/wpqN/8Kajf/Cmo3/wpqN/8Kajf/Cmoz/wpqN/8We
        kf/En5L/yKGU/8yomf93VEzmTAAFN////wD///8A////AP///wD///8A////AP///wD///8A////AEwA
        BTVxS0Tazaqa/9ixo//PqZz/zqib/8+pnP/PqZz/z6mc/9Cqnf/Qqp3/0Kqd/9Cqnf/Qqp3/0Kqd/9Cq
        nf/PqZz/0Kqd/9ixpP/OrJ3/c09I3EwABTf///8A////AP///wD///8A////AP///wD///8A////AP//
        /wD///8A////AFAAAyBcLSursZKF/+K+rv/huq3/2rSn/9mzpv/Zs6b/2bOm/9mzpv/Zs6b/2bOm/9mz
        pv/Zs6b/27Sn/+G6rf/jvrD/s5WI/14wLrFQAAMi////AP///wD///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A////AP///wBMBgxYdUxHyrmZjf/hwLH/7ci6/+3Huf/qxLb/6cK1/+nC
        tf/qxLb/7ce5/+3Juv/iwbL/upyP/3dPSsxMBw1cWAAFAv///wD///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBUAAMJTQMLS2IuLpuHYFrVqod+876e
        kv/IqJv/yKic/7+fk/+qiX/0iWFc1mMvL55NBAtPVAACCv///wD///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFIA
        AgtOAAQnTgAKQFEGD1NRBg9TTwEKQU0ABCpSAAIM////AP///wD///8A////AP///wD///8A////AP//
        /wD///8A////AP///wD///8A///////gB///gAH//gAAf/wAAD/4AAAf8AAAD+AAAAfgAAAHwAAAA8AA
        AAOAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAA8AAAAPgAAAH4AAAB/AA
        AA/4AAAf/AAAP/4AAH//gAH//+AH//////8=
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Creative Commons Attribution-ShareAlike 2.5 License


Written By
Software Developer (Senior)
United States United States
Developer

Comments and Discussions