System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 18d39c7bcc7dd2f7493657d17de242a8a57065e3:


0000: 2f 2a 0d 0a 20 2a 20 49 6e 73 74 61 6c 6c 65 72  /*.. * Installer
0010: 2e 63 73 20 2d 2d 0d 0a 20 2a 0d 0a 20 2a 20 57  .cs --.. *.. * W
0020: 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69  ritten by Joe Mi
0030: 73 74 61 63 68 6b 69 6e 2e 0d 0a 20 2a 20 52 65  stachkin... * Re
0040: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
0050: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
0060: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
0070: 6b 21 0d 0a 20 2a 2f 0d 0a 0d 0a 75 73 69 6e 67  k!.. */....using
0080: 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20   System;..using 
0090: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
00a0: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69  ns.Generic;..usi
00b0: 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f  ng System.Diagno
00c0: 73 74 69 63 73 3b 0d 0a 75 73 69 6e 67 20 53 79  stics;..using Sy
00d0: 73 74 65 6d 2e 45 6e 74 65 72 70 72 69 73 65 53  stem.EnterpriseS
00e0: 65 72 76 69 63 65 73 2e 49 6e 74 65 72 6e 61 6c  ervices.Internal
00f0: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0100: 49 4f 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  IO;..using Syste
0110: 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 75  m.Reflection;..u
0120: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0130: 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76  ime.CompilerServ
0140: 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e  ices;....#if WIN
0150: 44 4f 57 53 0d 0a 75 73 69 6e 67 20 53 79 73 74  DOWS..using Syst
0160: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
0170: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 23 65 6e  opServices;..#en
0180: 64 69 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73  dif....using Sys
0190: 74 65 6d 2e 53 65 63 75 72 69 74 79 3b 0d 0a 0d  tem.Security;...
01a0: 0a 23 69 66 20 4e 45 54 5f 32 30 20 7c 7c 20 4e  .#if NET_20 || N
01b0: 45 54 5f 33 35 0d 0a 75 73 69 6e 67 20 53 79 73  ET_35..using Sys
01c0: 74 65 6d 2e 53 65 63 75 72 69 74 79 2e 50 65 72  tem.Security.Per
01d0: 6d 69 73 73 69 6f 6e 73 3b 0d 0a 23 65 6e 64 69  missions;..#endi
01e0: 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  f....using Syste
01f0: 6d 2e 54 65 78 74 3b 0d 0a 75 73 69 6e 67 20 53  m.Text;..using S
0200: 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e 67 3b  ystem.Threading;
0210: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 57  ..using System.W
0220: 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 3b 0d 0a 75  indows.Forms;..u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b  sing System.Xml;
0240: 0d 0a 75 73 69 6e 67 20 4d 69 63 72 6f 73 6f 66  ..using Microsof
0250: 74 2e 57 69 6e 33 32 3b 0d 0a 0d 0a 6e 61 6d 65  t.Win32;....name
0260: 73 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74  space System.Dat
0270: 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20  a.SQLite..{..   
0280: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0290: 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 69  Delegates..    i
02a0: 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
02b0: 20 76 6f 69 64 20 54 72 61 63 65 43 61 6c 6c 62   void TraceCallb
02c0: 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ack(..        st
02d0: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 20 2f 2a  ring message, /*
02e0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
02f0: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 20  string category 
0300: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 29 3b  /* in */..    );
0310: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
0320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0360: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  ///....    inter
0370: 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 62 6f 6f  nal delegate boo
0380: 6c 20 46 72 61 6d 65 77 6f 72 6b 43 6f 6e 66 69  l FrameworkConfi
0390: 67 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  gCallback(..    
03a0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
03b0: 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ame,           /
03c0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
03d0: 20 73 74 72 69 6e 67 20 69 6e 76 61 72 69 61 6e   string invarian
03e0: 74 4e 61 6d 65 2c 20 20 20 20 20 20 2f 2a 20 69  tName,      /* i
03f0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74  n */..        st
0400: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
0410: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0420: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0430: 67 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 20  g description,  
0440: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0450: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
0460: 79 70 65 4e 61 6d 65 2c 20 20 20 20 20 20 20 20  ypeName,        
0470: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0480: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
0490: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  e assemblyName, 
04a0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
04b0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
04c0: 72 79 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ry,          /* 
04d0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 6f  in */..        o
04e0: 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61  bject clientData
04f0: 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20  ,         /* in 
0500: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  */..        bool
0510: 20 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20   perUser,       
0520: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0530: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f  .        bool wo
0540: 77 36 34 2c 20 20 20 20 20 20 20 20 20 20 20 20  w64,            
0550: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
0560: 20 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77        bool throw
0570: 4f 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20  OnMissing,      
0580: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0590: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 20     bool whatIf, 
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
05b0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
05c0: 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20  bool verbose,   
05d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
05e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66   */..        ref
05f0: 20 62 6f 6f 6c 20 73 61 76 65 64 2c 20 20 20 20   bool saved,    
0600: 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
0610: 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 73  /..        ref s
0620: 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
0630: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
0640: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
0650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
06a0: 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
06b0: 61 74 65 20 62 6f 6f 6c 20 46 72 61 6d 65 77 6f  ate bool Framewo
06c0: 72 6b 52 65 67 69 73 74 72 79 43 61 6c 6c 62 61  rkRegistryCallba
06d0: 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 73  ck(..        Ins
06e0: 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52 65 67 69 73  taller.MockRegis
06f0: 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 20  tryKey rootKey, 
0700: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0710: 20 20 73 74 72 69 6e 67 20 66 72 61 6d 65 77 6f    string framewo
0720: 72 6b 4e 61 6d 65 2c 20 20 20 20 20 20 20 20 20  rkName,         
0730: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
0740: 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66         Version f
0750: 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c  rameworkVersion,
0760: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
0770: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  */..        stri
0780: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c  ng platformName,
0790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
07a0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
07b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
07c0: 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y,              
07d0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
07e0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69        object cli
07f0: 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20  entData,        
0800: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0810: 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  /..        bool 
0820: 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20 20  perUser,        
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0840: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
0850: 62 6f 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20  bool wow64,     
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0870: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0880: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
0890: 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20  nMissing,       
08a0: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
08b0: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77  ..        bool w
08c0: 68 61 74 49 66 2c 20 20 20 20 20 20 20 20 20 20  hatIf,          
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
08e0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62  in */..        b
08f0: 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20  ool verbose,    
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0920: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
0930: 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  rror            
0940: 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
0950: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
09b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
09c0: 67 61 74 65 20 62 6f 6f 6c 20 56 69 73 75 61 6c  gate bool Visual
09d0: 53 74 75 64 69 6f 52 65 67 69 73 74 72 79 43 61  StudioRegistryCa
09e0: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
09f0: 20 49 6e 73 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52   Installer.MockR
0a00: 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
0a10: 65 79 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ey, /* in */..  
0a20: 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 76 73        Version vs
0a30: 56 65 72 73 69 6f 6e 2c 20 20 20 20 20 20 20 20  Version,        
0a40: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0a50: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0a60: 67 20 73 75 66 66 69 78 2c 20 20 20 20 20 20 20  g suffix,       
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0a80: 20 69 6e 2c 20 6f 70 74 69 6f 6e 61 6c 20 2a 2f   in, optional */
0a90: 0d 0a 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c  ..        Instal
0aa0: 6c 65 72 2e 50 61 63 6b 61 67 65 20 70 61 63 6b  ler.Package pack
0ab0: 61 67 65 2c 20 20 20 20 20 20 20 20 20 2f 2a 20  age,         /* 
0ac0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73  in */..        s
0ad0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c  tring directory,
0ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0af0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0b00: 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e      object clien
0b10: 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20  tData,          
0b20: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0b30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65  .        bool pe
0b40: 72 55 73 65 72 2c 20 20 20 20 20 20 20 20 20 20  rUser,          
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
0b60: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f  n */..        bo
0b70: 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20 20 20  ol wow64,       
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b90: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0ba0: 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d     bool throwOnM
0bb0: 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20 20 20  issing,         
0bc0: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0bd0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
0be0: 74 49 66 2c 20 20 20 20 20 20 20 20 20 20 20 20  tIf,            
0bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
0c00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f   */..        boo
0c10: 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20 20 20  l verbose,      
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c30: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0c40: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
0c50: 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20  or              
0c60: 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
0c70: 20 20 20 20 29 3b 0d 0a 20 20 20 20 23 65 6e 64      );..    #end
0c80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0ce0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0cf0: 45 6e 75 6d 65 72 61 74 69 6f 6e 73 0d 0a 20 20  Enumerations..  
0d00: 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20    [Flags()]..   
0d10: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 49 6e 73   public enum Ins
0d20: 74 61 6c 6c 46 6c 61 67 73 0d 0a 20 20 20 20 7b  tallFlags..    {
0d30: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
0d40: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
0d50: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
0d60: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 43 6f  0x0,..        Co
0d70: 72 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  reGlobalAssembly
0d80: 43 61 63 68 65 20 3d 20 30 78 31 2c 0d 0a 20 20  Cache = 0x1,..  
0d90: 20 20 20 20 20 20 4c 69 6e 71 47 6c 6f 62 61 6c        LinqGlobal
0da0: 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20  AssemblyCache = 
0db0: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 45 66  0x2,..        Ef
0dc0: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
0dd0: 61 63 68 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20  ache = 0x4,..   
0de0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 46 6f 6c       AssemblyFol
0df0: 64 65 72 73 20 3d 20 30 78 38 2c 0d 0a 20 20 20  ders = 0x8,..   
0e00: 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72 46       DbProviderF
0e10: 61 63 74 6f 72 79 20 3d 20 30 78 31 30 2c 0d 0a  actory = 0x10,..
0e20: 20 20 20 20 20 20 20 20 56 73 50 61 63 6b 61 67          VsPackag
0e30: 65 20 3d 20 30 78 32 30 2c 0d 0a 20 20 20 20 20  e = 0x20,..     
0e40: 20 20 20 56 73 50 61 63 6b 61 67 65 47 6c 6f 62     VsPackageGlob
0e50: 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
0e60: 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x40,..       
0e70: 20 56 73 44 61 74 61 53 6f 75 72 63 65 20 3d 20   VsDataSource = 
0e80: 30 78 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 56  0x80,..        V
0e90: 73 44 61 74 61 50 72 6f 76 69 64 65 72 20 3d 20  sDataProvider = 
0ea0: 30 78 31 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x100,..        
0eb0: 56 73 44 65 76 45 6e 76 53 65 74 75 70 20 3d 20  VsDevEnvSetup = 
0ec0: 30 78 32 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x200,..        
0ed0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0ee0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
0f40: 20 43 6f 6d 70 6f 73 69 74 65 20 56 61 6c 75 65   Composite Value
0f50: 73 0d 0a 20 20 20 20 20 20 20 20 46 72 61 6d 65  s..        Frame
0f60: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
0f70: 6c 79 43 61 63 68 65 20 3d 20 43 6f 72 65 47 6c  lyCache = CoreGl
0f80: 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
0f90: 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e |..           
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71              Linq
0fc0: 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  GlobalAssemblyCa
0fd0: 63 68 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  che |..         
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66                Ef
1000: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
1010: 61 63 68 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  ache,....       
1020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1070: 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 3d 20      Framework = 
1080: 46 72 61 6d 65 77 6f 72 6b 47 6c 6f 62 61 6c 41  FrameworkGlobalA
1090: 73 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 20 41  ssemblyCache | A
10a0: 73 73 65 6d 62 6c 79 46 6f 6c 64 65 72 73 20 7c  ssemblyFolders |
10b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c0: 20 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72        DbProvider
10d0: 46 61 63 74 6f 72 79 2c 0d 0a 0d 0a 20 20 20 20  Factory,....    
10e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1130: 20 20 20 20 20 20 20 56 73 20 3d 20 56 73 50 61         Vs = VsPa
1140: 63 6b 61 67 65 20 7c 20 56 73 50 61 63 6b 61 67  ckage | VsPackag
1150: 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  eGlobalAssemblyC
1160: 61 63 68 65 20 7c 20 56 73 44 61 74 61 53 6f 75  ache | VsDataSou
1170: 72 63 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  rce |..         
1180: 20 20 20 20 56 73 44 61 74 61 50 72 6f 76 69 64      VsDataProvid
1190: 65 72 20 7c 20 56 73 44 65 76 45 6e 76 53 65 74  er | VsDevEnvSet
11a0: 75 70 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  up,....        /
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1200: 20 20 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d    AllGlobalAssem
1210: 62 6c 79 43 61 63 68 65 20 3d 20 46 72 61 6d 65  blyCache = Frame
1220: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
1230: 6c 79 43 61 63 68 65 20 7c 0d 0a 20 20 20 20 20  lyCache |..     
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 20 20 20 20 20 20 20 20 56 73 50 61              VsPa
1260: 63 6b 61 67 65 47 6c 6f 62 61 6c 41 73 73 65 6d  ckageGlobalAssem
1270: 62 6c 79 43 61 63 68 65 2c 0d 0a 0d 0a 20 20 20  blyCache,....   
1280: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12d0: 20 20 20 20 20 20 20 20 41 6c 6c 20 3d 20 46 72          All = Fr
12e0: 61 6d 65 77 6f 72 6b 20 7c 20 56 73 2c 0d 0a 0d  amework | Vs,...
12f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1340: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 6c 6c 45  ....        AllE
1350: 78 63 65 70 74 47 6c 6f 62 61 6c 41 73 73 65 6d  xceptGlobalAssem
1360: 62 6c 79 43 61 63 68 65 20 3d 20 41 6c 6c 20 26  blyCache = All &
1370: 20 7e 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d   ~AllGlobalAssem
1380: 62 6c 79 43 61 63 68 65 2c 0d 0a 20 20 20 20 20  blyCache,..     
1390: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1400: 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20 44 65  ion Suggested De
1410: 66 61 75 6c 74 20 56 61 6c 75 65 73 0d 0a 20 20  fault Values..  
1420: 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
1430: 41 6c 6c 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  All..        #en
1440: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1450: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 0d 0a 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  /....    [Flags(
14b0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
14c0: 6e 75 6d 20 50 72 6f 76 69 64 65 72 46 6c 61 67  num ProviderFlag
14d0: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
14e0: 20 20 23 72 65 67 69 6f 6e 20 4e 6f 72 6d 61 6c    #region Normal
14f0: 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   Values..       
1500: 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 20 20   None = 0x0,..  
1510: 20 20 20 20 20 20 53 79 73 74 65 6d 45 66 36 4d        SystemEf6M
1520: 75 73 74 42 65 47 6c 6f 62 61 6c 20 3d 20 30 78  ustBeGlobal = 0x
1530: 31 2c 0d 0a 20 20 20 20 20 20 20 20 44 69 64 4c  1,..        DidL
1540: 69 6e 71 46 6f 72 63 65 54 72 61 63 65 20 3d 20  inqForceTrace = 
1550: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 44 69  0x2,..        Di
1560: 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 20 3d  dEf6ForceTrace =
1570: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 44   0x4,..        D
1580: 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
1590: 65 20 3d 20 30 78 38 2c 0d 0a 20 20 20 20 20 20  e = 0x8,..      
15a0: 20 20 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c    ForceLinqEnabl
15b0: 65 64 20 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20  ed = 0x10,..    
15c0: 20 20 20 20 46 6f 72 63 65 4c 69 6e 71 44 69 73      ForceLinqDis
15d0: 61 62 6c 65 64 20 3d 20 30 78 32 30 2c 0d 0a 20  abled = 0x20,.. 
15e0: 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36 45         ForceEf6E
15f0: 6e 61 62 6c 65 64 20 3d 20 30 78 34 30 2c 0d 0a  nabled = 0x40,..
1600: 20 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36          ForceEf6
1610: 44 69 73 61 62 6c 65 64 20 3d 20 30 78 38 30 2c  Disabled = 0x80,
1620: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1630: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1690: 20 20 20 23 72 65 67 69 6f 6e 20 53 75 67 67 65     #region Sugge
16a0: 73 74 65 64 20 44 65 66 61 75 6c 74 20 56 61 6c  sted Default Val
16b0: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ues..        Def
16c0: 61 75 6c 74 20 3d 20 4e 6f 6e 65 0d 0a 20 20 20  ault = None..   
16d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
16e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
16f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1740: 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20   [Flags()]..    
1750: 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 72 61 63  public enum Trac
1760: 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 7b  ePriority..    {
1770: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1780: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
1790: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
17a0: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f  0x0,..        Lo
17b0: 77 65 73 74 20 3d 20 30 78 31 2c 0d 0a 20 20 20  west = 0x1,..   
17c0: 20 20 20 20 20 4c 6f 77 65 72 20 3d 20 30 78 32       Lower = 0x2
17d0: 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f 77 20 3d  ,..        Low =
17e0: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 4d   0x4,..        M
17f0: 65 64 69 75 6d 4c 6f 77 20 3d 20 30 78 38 2c 0d  ediumLow = 0x8,.
1800: 0a 20 20 20 20 20 20 20 20 4d 65 64 69 75 6d 20  .        Medium 
1810: 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x10,..       
1820: 20 4d 65 64 69 75 6d 48 69 67 68 20 3d 20 30 78   MediumHigh = 0x
1830: 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67  20,..        Hig
1840: 68 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20  h = 0x40,..     
1850: 20 20 20 48 69 67 68 65 72 20 3d 20 30 78 38 30     Higher = 0x80
1860: 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67 68 65  ,..        Highe
1870: 73 74 20 3d 20 30 78 31 30 30 2c 0d 0a 20 20 20  st = 0x100,..   
1880: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1890: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18f0: 65 67 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20  egion Suggested 
1900: 44 65 66 61 75 6c 74 20 46 6c 61 67 73 0d 0a 20  Default Flags.. 
1910: 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d         Default =
1920: 20 4d 65 64 69 75 6d 0d 0a 20 20 20 20 20 20 20   Medium..       
1930: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1940: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1950: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19b0: 67 69 6f 6e 20 49 6e 73 74 61 6c 6c 65 72 20 43  gion Installer C
19c0: 6c 61 73 73 0d 0a 23 69 66 20 4e 45 54 5f 34 30  lass..#if NET_40
19d0: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
19e0: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
19f0: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
1a00: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
1a10: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
1a20: 54 5f 34 37 31 0d 0a 20 20 20 20 5b 53 65 63 75  T_471..    [Secu
1a30: 72 69 74 79 43 72 69 74 69 63 61 6c 28 29 5d 0d  rityCritical()].
1a40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 53 65 63  .#else..    [Sec
1a50: 75 72 69 74 79 50 65 72 6d 69 73 73 69 6f 6e 28  urityPermission(
1a60: 53 65 63 75 72 69 74 79 41 63 74 69 6f 6e 2e 4c  SecurityAction.L
1a70: 69 6e 6b 44 65 6d 61 6e 64 2c 20 55 6e 6d 61 6e  inkDemand, Unman
1a80: 61 67 65 64 43 6f 64 65 20 3d 20 74 72 75 65 29  agedCode = true)
1a90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aa0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1ab0: 6c 61 73 73 20 49 6e 73 74 61 6c 6c 65 72 0d 0a  lass Installer..
1ac0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
1ad0: 72 65 67 69 6f 6e 20 55 6e 73 61 66 65 20 4e 61  region Unsafe Na
1ae0: 74 69 76 65 20 4d 65 74 68 6f 64 73 20 43 6c 61  tive Methods Cla
1af0: 73 73 0d 0a 20 20 20 20 20 20 20 20 5b 53 75 70  ss..        [Sup
1b00: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
1b10: 64 65 53 65 63 75 72 69 74 79 28 29 5d 0d 0a 20  deSecurity()].. 
1b20: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1b30: 65 61 6c 65 64 20 63 6c 61 73 73 20 55 6e 73 61  ealed class Unsa
1b40: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
1b50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1b60: 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20  WINDOWS..       
1b70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74       #region Nat
1b80: 69 76 65 20 57 69 6e 33 32 20 43 6f 6e 73 74 61  ive Win32 Consta
1b90: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
1ba0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
1bb0: 6e 74 20 4d 41 58 5f 50 41 54 48 20 3d 20 32 36  nt MAX_PATH = 26
1bc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1bd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c20: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1c30: 73 74 20 69 6e 74 20 43 53 49 44 4c 5f 53 59 53  st int CSIDL_SYS
1c40: 54 45 4d 58 38 36 20 3d 20 30 78 30 30 32 39 3b  TEMX86 = 0x0029;
1c50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1cb0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1cc0: 20 69 6e 74 20 53 48 47 46 50 5f 54 59 50 45 5f   int SHGFP_TYPE_
1cd0: 43 55 52 52 45 4e 54 20 3d 20 30 3b 0d 0a 0d 0a  CURRENT = 0;....
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
1d40: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
1d50: 20 53 5f 4f 4b 20 3d 20 30 3b 20 2f 2a 20 48 52   S_OK = 0; /* HR
1d60: 45 53 55 4c 54 20 2a 2f 0d 0a 20 20 20 20 20 20  ESULT */..      
1d70: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1de0: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
1df0: 65 20 57 69 6e 64 6f 77 73 20 4d 65 74 68 6f 64  e Windows Method
1e00: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  s..            [
1e10: 44 6c 6c 49 6d 70 6f 72 74 28 22 73 68 66 6f 6c  DllImport("shfol
1e20: 64 65 72 2e 64 6c 6c 22 2c 0d 0a 20 20 20 20 20  der.dll",..     
1e30: 20 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69             Calli
1e40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e60: 2e 57 69 6e 61 70 69 2c 0d 0a 20 20 20 20 20 20  .Winapi,..      
1e70: 20 20 20 20 20 20 20 20 20 20 43 68 61 72 53 65            CharSe
1e80: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
1e90: 2c 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67  , BestFitMapping
1ea0: 20 3d 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   = false,..     
1eb0: 20 20 20 20 20 20 20 20 20 20 20 54 68 72 6f 77             Throw
1ec0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
1ed0: 20 3d 20 74 72 75 65 2c 20 53 65 74 4c 61 73 74   = true, SetLast
1ee0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1f00: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
1f10: 6e 20 69 6e 74 20 53 48 47 65 74 46 6f 6c 64 65  n int SHGetFolde
1f20: 72 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  rPath(..        
1f30: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 68          IntPtr h
1f40: 57 6e 64 4f 77 6e 65 72 2c 20 69 6e 74 20 6e 46  WndOwner, int nF
1f50: 6f 6c 64 65 72 2c 20 49 6e 74 50 74 72 20 68 54  older, IntPtr hT
1f60: 6f 6b 65 6e 2c 20 75 69 6e 74 20 66 6c 61 67 73  oken, uint flags
1f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f80: 20 20 20 49 6e 74 50 74 72 20 62 75 66 66 65 72     IntPtr buffer
1f90: 20 2f 2a 20 3e 3d 20 4d 41 58 5f 50 41 54 48 20   /* >= MAX_PATH 
1fa0: 2a 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  */);..          
1fb0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2020: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 57 72  region Public Wr
2030: 61 70 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  apper Methods.. 
2040: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2050: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2060: 47 65 74 53 79 73 74 65 6d 44 69 72 65 63 74 6f  GetSystemDirecto
2070: 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
2080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2090: 20 20 20 20 20 49 6e 74 50 74 72 20 62 75 66 66       IntPtr buff
20a0: 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  er = IntPtr.Zero
20b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
20d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 62 75 66 66 65 72 20 3d 20 4d 61 72 73 68 61   buffer = Marsha
2100: 6c 2e 41 6c 6c 6f 63 43 6f 54 61 73 6b 4d 65 6d  l.AllocCoTaskMem
2110: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2120: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f             sizeo
2130: 66 28 63 68 61 72 29 20 2a 20 28 4d 41 58 5f 50  f(char) * (MAX_P
2140: 41 54 48 20 2b 20 31 29 29 3b 0d 0a 0d 0a 20 20  ATH + 1));....  
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 20 69 66 20 28 62 75 66 66 65 72 20 21 3d 20    if (buffer != 
2170: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21b0: 28 53 48 47 65 74 46 6f 6c 64 65 72 50 61 74 68  (SHGetFolderPath
21c0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20  (IntPtr.Zero,.. 
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
21f0: 53 49 44 4c 5f 53 59 53 54 45 4d 58 38 36 2c 20  SIDL_SYSTEMX86, 
2200: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 48                SH
2230: 47 46 50 5f 54 59 50 45 5f 43 55 52 52 45 4e 54  GFP_TYPE_CURRENT
2240: 2c 20 62 75 66 66 65 72 29 20 3d 3d 20 53 5f 4f  , buffer) == S_O
2250: 4b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  K)..            
2260: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2290: 6e 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53  n Marshal.PtrToS
22a0: 74 72 69 6e 67 41 75 74 6f 28 62 75 66 66 65 72  tringAuto(buffer
22b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2300: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2310: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2340: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2360: 54 4f 44 4f 3a 20 49 73 20 74 68 69 73 20 74 68  TODO: Is this th
2370: 65 20 72 69 67 68 74 20 65 72 72 6f 72 20 68 61  e right error ha
2380: 6e 64 6c 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 0d  ndling solution.
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
23b0: 20 75 73 65 20 61 74 20 74 68 69 73 20 70 6f 69   use at this poi
23c0: 6e 74 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt?..           
23d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f0: 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2400: 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2410: 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
2420: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2430: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2440: 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2450: 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
2460: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2480: 20 22 43 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20   "Could not get 
2490: 73 79 73 74 65 6d 20 64 69 72 65 63 74 6f 72 79  system directory
24a0: 3a 20 7b 30 7d 22 2c 20 65 29 2c 0d 0a 20 20 20  : {0}", e),..   
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c0: 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
24d0: 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24f0: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
2500: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2510: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2530: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2540: 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65         if (buffe
2550: 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
2560: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2590: 20 20 4d 61 72 73 68 61 6c 2e 46 72 65 65 43 6f    Marshal.FreeCo
25a0: 54 61 73 6b 4d 65 6d 28 62 75 66 66 65 72 29 3b  TaskMem(buffer);
25b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c0: 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72            buffer
25d0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
25e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2620: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2630: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2640: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2650: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2660: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2680: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
26e0: 69 76 61 74 65 20 48 65 6c 70 65 72 20 43 6c 61  ivate Helper Cla
26f0: 73 73 65 73 0d 0a 20 20 20 20 20 20 20 20 23 72  sses..        #r
2700: 65 67 69 6f 6e 20 41 6e 79 50 61 69 72 20 43 6c  egion AnyPair Cl
2710: 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ass..        pri
2720: 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73  vate sealed clas
2730: 73 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  s AnyPair<T1, T2
2740: 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  >..        {..  
2750: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2760: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
2770: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
2780: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2790: 20 20 20 2f 2f 20 57 41 52 4e 49 4e 47 3a 20 54     // WARNING: T
27a0: 68 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20  his constructor 
27b0: 70 72 6f 64 75 63 65 73 20 61 6e 20 69 6d 6d 75  produces an immu
27c0: 74 61 62 6c 65 20 22 65 6d 70 74 79 22 20 70 61  table "empty" pa
27d0: 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
27e0: 2f 2f 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65  //          obje
27f0: 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct...           
2800: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2810: 20 70 75 62 6c 69 63 20 41 6e 79 50 61 69 72 28   public AnyPair(
2820: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2830: 20 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20     : base()..   
2840: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2850: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2860: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2870: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2880: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28e0: 69 63 20 41 6e 79 50 61 69 72 28 54 31 20 78 29  ic AnyPair(T1 x)
28f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2900: 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2910: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2920: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2930: 78 20 3d 20 78 3b 0d 0a 20 20 20 20 20 20 20 20  x = x;..        
2940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2950: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
29a0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
29b0: 6e 79 50 61 69 72 28 54 31 20 78 2c 20 54 32 20  nyPair(T1 x, T2 
29c0: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
29d0: 20 20 20 20 3a 20 74 68 69 73 28 78 29 0d 0a 20      : this(x).. 
29e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2a00: 69 73 2e 79 20 3d 20 79 3b 0d 0a 20 20 20 20 20  is.y = y;..     
2a10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a20: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a90: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
2aa0: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
2ab0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2ac0: 65 20 54 31 20 78 3b 0d 0a 20 20 20 20 20 20 20  e T1 x;..       
2ad0: 20 20 20 20 20 70 75 62 6c 69 63 20 54 31 20 58       public T1 X
2ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b00: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 78 3b   get { return x;
2b10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b80: 20 20 20 20 70 72 69 76 61 74 65 20 54 32 20 79      private T2 y
2b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
2ba0: 75 62 6c 69 63 20 54 32 20 59 0d 0a 20 20 20 20  ublic T2 Y..    
2bb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bc0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
2bd0: 20 72 65 74 75 72 6e 20 79 3b 20 7d 0d 0a 20 20   return y; }..  
2be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2bf0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2c00: 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
2c10: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2c20: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c80: 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65 4f 70   #region TraceOp
2c90: 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  s Class..       
2ca0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2cb0: 63 6c 61 73 73 20 54 72 61 63 65 4f 70 73 0d 0a  class TraceOps..
2cc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cd0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2ce0: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2d00: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
2d10: 6e 67 20 44 65 66 61 75 6c 74 44 65 62 75 67 46  ng DefaultDebugF
2d20: 6f 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30  ormat = "#{0:000
2d30: 7d 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a  } @ {1}: {2}";..
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2d50: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2d60: 20 44 65 66 61 75 6c 74 54 72 61 63 65 46 6f 72   DefaultTraceFor
2d70: 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d 20  mat = "#{0:000} 
2d80: 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 0d 0a  @ {1}: {2}";....
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2da0: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2db0: 20 49 73 6f 38 36 30 31 44 61 74 65 54 69 6d 65   Iso8601DateTime
2dc0: 4f 75 74 70 75 74 46 6f 72 6d 61 74 20 3d 0d 0a  OutputFormat =..
2dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de0: 22 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48 3a 6d  "yyyy.MM.ddTHH:m
2df0: 6d 3a 73 73 2e 66 66 66 66 66 66 66 22 3b 0d 0a  m:ss.fffffff";..
2e00: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2e20: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e70: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2e80: 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
2e90: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
2ea0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2eb0: 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2ec0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2ee0: 69 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e  ivate static lon
2ef0: 67 20 6e 65 78 74 44 65 62 75 67 49 64 3b 0d 0a  g nextDebugId;..
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2f10: 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  ate static long 
2f20: 6e 65 78 74 54 72 61 63 65 49 64 3b 0d 0a 20 20  nextTraceId;..  
2f30: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2f40: 65 20 73 74 61 74 69 63 20 49 4c 69 73 74 3c 54  e static IList<T
2f50: 72 61 63 65 4c 69 73 74 65 6e 65 72 3e 20 64 65  raceListener> de
2f60: 62 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d 0a 20  bugListeners;.. 
2f70: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2f80: 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50  te static TraceP
2f90: 72 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69  riority debugPri
2fa0: 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69  ority = TracePri
2fb0: 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a  ority.Default;..
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2fd0: 61 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65  ate static Trace
2fe0: 50 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72  Priority tracePr
2ff0: 69 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72  iority = TracePr
3000: 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d  iority.Default;.
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
3020: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
3030: 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d  ng debugFormat =
3040: 20 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f 72   DefaultDebugFor
3050: 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72   string traceFor
3080: 6d 61 74 20 3d 20 44 65 66 61 75 6c 74 54 72 61  mat = DefaultTra
3090: 63 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20  ceFormat;..     
30a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
30b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
30c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3100: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3110: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3120: 69 63 20 53 74 61 74 69 63 20 50 72 6f 70 65 72  ic Static Proper
3130: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ties..          
3140: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
3150: 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65  TracePriority De
3160: 62 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20  bugPriority..   
3170: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3180: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
3190: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
31a0: 29 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67  ) { return debug
31b0: 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20  Priority; } }.. 
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
31d0: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
31e0: 6f 6f 74 29 20 7b 20 64 65 62 75 67 50 72 69 6f  oot) { debugPrio
31f0: 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20  rity = value; } 
3200: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
3210: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3270: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3280: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54   TracePriority T
3290: 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20  racePriority..  
32a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32c0: 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f   { lock (syncRoo
32d0: 74 29 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63  t) { return trac
32e0: 65 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a  ePriority; } }..
32f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3300: 73 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63  set { lock (sync
3310: 52 6f 6f 74 29 20 7b 20 74 72 61 63 65 50 72 69  Root) { tracePri
3320: 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d  ority = value; }
3330: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3340: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
3350: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33a0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
33b0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 46 6f  c string DebugFo
33c0: 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rmat..          
33d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33e0: 20 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20       get { lock 
33f0: 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74  (syncRoot) { ret
3400: 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  urn debugFormat;
3410: 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20   } }..          
3420: 20 20 20 20 20 20 73 65 74 20 7b 20 6c 6f 63 6b        set { lock
3430: 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 64 65   (syncRoot) { de
3440: 62 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75  bugFormat = valu
3450: 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20  e; } }..        
3460: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3470: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
34d0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 72 61  tatic string Tra
34e0: 63 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20  ceFormat..      
34f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3500: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c           get { l
3510: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b  ock (syncRoot) {
3520: 20 72 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72   return traceFor
3530: 6d 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20  mat; } }..      
3540: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
3550: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20  lock (syncRoot) 
3560: 7b 20 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20  { traceFormat = 
3570: 76 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20  value; } }..    
3580: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3590: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
35a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
35b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3600: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
3610: 72 61 63 74 69 76 65 20 53 75 70 70 6f 72 74 20  ractive Support 
3620: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
3630: 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
3640: 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
3650: 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3670: 6c 69 63 20 73 74 61 74 69 63 20 44 69 61 6c 6f  lic static Dialo
3680: 67 52 65 73 75 6c 74 20 53 68 6f 77 4d 65 73 73  gResult ShowMess
3690: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
36a0: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
36b0: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
36c0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
36d0: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
36e0: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
36f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3700: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
3710: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3730: 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
3740: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
3750: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
3760: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
3770: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
3780: 67 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  gory,..         
3790: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f         MessageBo
37a0: 78 42 75 74 74 6f 6e 73 20 62 75 74 74 6f 6e 73  xButtons buttons
37b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
37c0: 20 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f     MessageBoxIco
37d0: 6e 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20 20 20  n icon..        
37e0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
37f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3800: 20 20 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67            Dialog
3810: 52 65 73 75 6c 74 20 72 65 73 75 6c 74 20 3d 20  Result result = 
3820: 44 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f 4b 3b  DialogResult.OK;
3830: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3840: 20 20 20 20 44 65 62 75 67 41 6e 64 54 72 61 63      DebugAndTrac
3850: 65 28 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c  e(tracePriority,
3860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3870: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3880: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3890: 63 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63 61 74  ck, message, cat
38a0: 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
38b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
38c0: 79 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69 6f 6e  ystemInformation
38d0: 2e 55 73 65 72 49 6e 74 65 72 61 63 74 69 76 65  .UserInteractive
38e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
38f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3900: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
3910: 20 74 69 74 6c 65 20 3d 20 47 65 74 41 73 73 65   title = GetAsse
3920: 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62  mblyTitle(assemb
3930: 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ly);....        
3940: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3950: 74 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  title == null)..
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3970: 20 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20          title = 
3980: 41 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72 6f 64  Application.Prod
3990: 75 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  uctName;....    
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39b0: 72 65 73 75 6c 74 20 3d 20 4d 65 73 73 61 67 65  result = Message
39c0: 42 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61 67 65  Box.Show(message
39d0: 2c 20 74 69 74 6c 65 2c 20 62 75 74 74 6f 6e 73  , title, buttons
39e0: 2c 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  , icon);....    
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72  DebugAndTrace(tr
3a10: 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  acePriority,..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3a40: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3a50: 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
3a60: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65              "Use
3a80: 72 20 63 68 6f 69 63 65 20 6f 66 20 7b 30 7d 2e  r choice of {0}.
3a90: 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65  ", ForDisplay(re
3aa0: 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  sult)),..       
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20   category);.... 
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ae0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
3af0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3b00: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3b10: 20 20 20 20 20 20 20 20 44 65 62 75 67 41 6e 64          DebugAnd
3b20: 54 72 61 63 65 28 74 72 61 63 65 50 72 69 6f 72  Trace(tracePrior
3b30: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
3b40: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
3b50: 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
3b60: 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
3b70: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 22 44 65 66              "Def
3b90: 61 75 6c 74 20 63 68 6f 69 63 65 20 6f 66 20 7b  ault choice of {
3ba0: 30 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  0}.", ForDisplay
3bb0: 28 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20  (result)),..    
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  category);....  
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3bf0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
3c00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c10: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3c20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3c30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3c80: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72        #region Tr
3c90: 61 63 69 6e 67 20 53 75 70 70 6f 72 74 20 4d 65  acing Support Me
3ca0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
3cb0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3cc0: 20 76 6f 69 64 20 53 65 74 75 70 44 65 62 75 67   void SetupDebug
3cd0: 4c 69 73 74 65 6e 65 72 73 28 29 0d 0a 20 20 20  Listeners()..   
3ce0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d00: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d  debugListeners =
3d10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
3d30: 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 20 6e 65  ugListeners = ne
3d40: 77 20 4c 69 73 74 3c 54 72 61 63 65 4c 69 73 74  w List<TraceList
3d50: 65 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ener>();....    
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
3d70: 67 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e  gListeners.Add(n
3d80: 65 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c  ew ConsoleTraceL
3d90: 69 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20  istener());..   
3da0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3db0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3e10: 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
3e20: 4e 65 78 74 44 65 62 75 67 49 64 28 29 0d 0a 20  NextDebugId().. 
3e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3e50: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
3e60: 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e  .Increment(ref n
3e70: 65 78 74 44 65 62 75 67 49 64 29 3b 0d 0a 20 20  extDebugId);..  
3e80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3e90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
3ef0: 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67  blic static long
3f00: 20 4e 65 78 74 54 72 61 63 65 49 64 28 29 0d 0a   NextTraceId()..
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3f30: 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
3f40: 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
3f50: 6e 65 78 74 54 72 61 63 65 49 64 29 3b 0d 0a 20  nextTraceId);.. 
3f60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3fc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
3fd0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
3fe0: 69 6e 67 20 54 69 6d 65 53 74 61 6d 70 28 44 61  ing TimeStamp(Da
3ff0: 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 29  teTime dateTime)
4000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4020: 20 72 65 74 75 72 6e 20 64 61 74 65 54 69 6d 65   return dateTime
4030: 2e 54 6f 53 74 72 69 6e 67 28 49 73 6f 38 36 30  .ToString(Iso860
4040: 31 44 61 74 65 54 69 6d 65 4f 75 74 70 75 74 46  1DateTimeOutputF
4050: 6f 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20 20 20  ormat);..       
4060: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4070: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
40c0: 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
40d0: 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
40e0: 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
40f0: 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
4100: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
4110: 74 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e  tring GetMethodN
4120: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
4130: 20 20 20 20 20 20 53 74 61 63 6b 54 72 61 63 65        StackTrace
4140: 20 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a 20 20   stackTrace,..  
4150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
4160: 74 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20 20 20  t level..       
4170: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4180: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4190: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
41c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
41e0: 2f 20 4e 4f 54 45 3a 20 49 66 20 61 20 76 61 6c  / NOTE: If a val
41f0: 69 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 77  id stack trace w
4200: 61 73 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 20  as not supplied 
4210: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
4220: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4230: 20 20 20 20 20 63 61 6c 6c 65 72 2c 20 63 72 65       caller, cre
4240: 61 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61 73 65  ate one now base
4250: 64 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  d on the current
4260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4270: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
4280: 78 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d  xecution stack..
4290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
42c0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
42d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
42e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4320: 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74   // NOTE: Grab t
4330: 68 65 20 63 75 72 72 65 6e 74 20 65 78 65 63 75  he current execu
4340: 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20 20 20  tion stack...   
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4360: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 73 74 61 63 6b 54 72 61 63 65 20 3d 20 6e 65   stackTrace = ne
4390: 77 20 53 74 61 63 6b 54 72 61 63 65 28 29 3b 0d  w StackTrace();.
43a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
43b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
43c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
43e0: 41 6c 77 61 79 73 20 73 6b 69 70 20 74 68 69 73  Always skip this
43f0: 20 63 61 6c 6c 20 66 72 61 6d 65 20 77 68 65 6e   call frame when
4400: 20 77 65 20 63 61 70 74 75 72 65 0d 0a 20 20 20   we capture..   
4410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4420: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
4430: 65 20 73 74 61 63 6b 20 74 72 61 63 65 2e 0d 0a  e stack trace...
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4450: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a 20 20      level++;..  
4480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4490: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
44a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44c0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20     // NOTE: Get 
44d0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74  the specified st
44e0: 61 63 6b 20 66 72 61 6d 65 20 28 61 6c 77 61 79  ack frame (alway
44f0: 73 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a 20 20  s add one to..  
4500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4510: 20 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70 20    //       skip 
4520: 74 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d 0a 20  this method)... 
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4550: 20 20 20 20 20 20 20 20 20 20 20 53 74 61 63 6b             Stack
4560: 46 72 61 6d 65 20 73 74 61 63 6b 46 72 61 6d 65  Frame stackFrame
4570: 20 3d 20 73 74 61 63 6b 54 72 61 63 65 2e 47 65   = stackTrace.Ge
4580: 74 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b 0d 0a  tFrame(level);..
4590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
45a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
45c0: 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6d   NOTE: Get the m
45d0: 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 73 74  ethod for the st
45e0: 61 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20 20 20  ack frame...    
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4610: 20 20 20 20 20 20 20 20 4d 65 74 68 6f 64 42 61          MethodBa
4620: 73 65 20 6d 65 74 68 6f 64 42 61 73 65 20 3d 20  se methodBase = 
4630: 73 74 61 63 6b 46 72 61 6d 65 2e 47 65 74 4d 65  stackFrame.GetMe
4640: 74 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  thod();....     
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4660: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4670: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4680: 47 65 74 20 74 68 65 20 74 79 70 65 20 66 6f 72  Get the type for
4690: 20 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   the method...  
46a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
46c0: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74            Type t
46d0: 79 70 65 20 3d 20 6d 65 74 68 6f 64 42 61 73 65  ype = methodBase
46e0: 2e 44 65 63 6c 61 72 69 6e 67 54 79 70 65 3b 0d  .DeclaringType;.
46f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4700: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4720: 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20  / NOTE: Get the 
4730: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68  name of the meth
4740: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
4750: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6d   string name = m
4780: 65 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65 3b 0d  ethodBase.Name;.
4790: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
47a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
47c0: 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74  / NOTE: Return t
47d0: 68 65 20 70 72 6f 70 65 72 6c 79 20 66 6f 72 6d  he properly form
47e0: 61 74 74 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20  atted result... 
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4800: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4810: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4820: 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n String.Format(
4830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4840: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31            "{0}{1
4850: 7d 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61 6d 65  }{2}", type.Name
4860: 2c 20 54 79 70 65 2e 44 65 6c 69 6d 69 74 65 72  , Type.Delimiter
4870: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
4880: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
48a0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
48b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
48c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
48d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
48e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
4910: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
4920: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
4980: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
4990: 20 44 65 62 75 67 43 6f 72 65 28 0d 0a 20 20 20   DebugCore(..   
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
49b0: 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20  ing message,..  
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
49d0: 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20  ring category.. 
49e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
49f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a10: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
4a20: 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
4a30: 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
4a40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4a60: 28 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20  (debugListeners 
4a70: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4aa0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
4ab0: 20 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20   (TraceListener 
4ac0: 6c 69 73 74 65 6e 65 72 20 69 6e 20 64 65 62 75  listener in debu
4ad0: 67 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20 20 20  gListeners)..   
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4af0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b10: 20 20 20 20 6c 69 73 74 65 6e 65 72 2e 57 72 69      listener.Wri
4b20: 74 65 4c 69 6e 65 28 6d 65 73 73 61 67 65 2c 20  teLine(message, 
4b30: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  category);..    
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b50: 20 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72          listener
4b60: 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20  .Flush();..     
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4b90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
4bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4c20: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
4c30: 69 64 20 54 72 61 63 65 43 6f 72 65 28 0d 0a 20  id TraceCore(.. 
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4c50: 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a  tring message,..
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c70: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d  string category.
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c90: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
4ca0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4cb0: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
4cc0: 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f  t) /* TRANSACTIO
4cd0: 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
4ce0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4d10: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4d20: 57 72 69 74 65 20 74 68 65 20 6d 65 73 73 61 67  Write the messag
4d30: 65 20 74 6f 20 61 6c 6c 20 74 68 65 20 61 63 74  e to all the act
4d40: 69 76 65 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ive trace..     
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d60: 2f 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72  /       listener
4d70: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
4d80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4da0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4db0: 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67 6f 72  message, categor
4dc0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
4dd0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 46           Trace.F
4de0: 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20  lush();..       
4df0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4e00: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4e10: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
4e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
4e70: 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
4e80: 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
4e90: 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
4ea0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
4eb0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e  c string DebugAn
4ec0: 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
4ed0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
4ee0: 69 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f  iority tracePrio
4ef0: 72 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  rity,..         
4f00: 20 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c         TraceCall
4f10: 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61  back debugCallba
4f20: 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
4f30: 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61       TraceCallba
4f40: 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  ck traceCallback
4f50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4f60: 20 20 20 45 78 63 65 70 74 69 6f 6e 20 65 78 63     Exception exc
4f70: 65 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  eption,..       
4f80: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4f90: 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20  category..      
4fa0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
4fb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4fd0: 65 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e 75 6c  exception != nul
4fe0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4ff0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
5000: 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61  ebugAndTrace(tra
5010: 63 65 50 72 69 6f 72 69 74 79 2c 20 64 65 62 75  cePriority, debu
5020: 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
5050: 6b 2c 20 6e 65 77 20 53 74 61 63 6b 54 72 61 63  k, new StackTrac
5060: 65 28 65 78 63 65 70 74 69 6f 6e 2c 20 74 72 75  e(exception, tru
5070: 65 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  e), 0,..        
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 65 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74 72 69  exception.ToStri
50a0: 6e 67 28 29 2c 20 63 61 74 65 67 6f 72 79 29 3b  ng(), category);
50b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
50c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
50d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
50e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
5140: 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65    [MethodImpl(Me
5150: 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e  thodImplOptions.
5160: 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20  NoInlining)]..  
5170: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5180: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
5190: 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
51b0: 72 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61  racePriority tra
51c0: 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20  cePriority,..   
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
51e0: 63 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67  ceCallback debug
51f0: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
5200: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
5210: 43 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61  Callback traceCa
5220: 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
5230: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
5240: 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20  message,..      
5250: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
5260: 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20   category..     
5270: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
5280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5290: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
52a0: 75 72 6e 20 44 65 62 75 67 41 6e 64 54 72 61 63  urn DebugAndTrac
52b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
52c0: 20 20 20 20 20 20 20 20 74 72 61 63 65 50 72 69          tracePri
52d0: 6f 72 69 74 79 2c 20 64 65 62 75 67 43 61 6c 6c  ority, debugCall
52e0: 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
52f0: 61 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d 0a 20  ack, null, 1,.. 
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65     message, cate
5320: 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
5330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
5340: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5390: 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
53a0: 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
53b0: 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
53c0: 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
53d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
53e0: 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64 54 72  tring DebugAndTr
53f0: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
5400: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
5410: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
5420: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
5430: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
5440: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
5450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5460: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
5470: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
5480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5490: 53 74 61 63 6b 54 72 61 63 65 20 73 74 61 63 6b  StackTrace stack
54a0: 54 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20  Trace,..        
54b0: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 76 65          int leve
54c0: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
54d0: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
54e0: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
54f0: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
5500: 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  gory..          
5510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
5520: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5530: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5540: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
5550: 4f 54 45 3a 20 41 6c 77 61 79 73 20 73 6b 69 70  OTE: Always skip
5560: 20 74 68 69 73 20 63 61 6c 6c 20 66 72 61 6d 65   this call frame
5570: 20 69 66 20 74 68 65 20 73 74 61 63 6b 20 74 72   if the stack tr
5580: 61 63 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ace is..        
5590: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
55a0: 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 61 70   going to be cap
55b0: 74 75 72 65 64 20 62 79 20 47 65 74 4d 65 74 68  tured by GetMeth
55c0: 6f 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  odName...       
55d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
55f0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
5600: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5610: 20 20 20 20 20 20 20 20 20 20 6c 65 76 65 6c 2b            level+
5620: 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  +;....          
5630: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5640: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
5650: 45 3a 20 46 6f 72 6d 61 74 20 74 68 65 20 6d 65  E: Format the me
5660: 73 73 61 67 65 20 66 6f 72 20 64 69 73 70 6c 61  ssage for displa
5670: 79 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20 20 20  y (once)...     
5680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
56a0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 74 65 64 20  tring formatted 
56b0: 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  = String.Format(
56c0: 22 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  "{0}: {1}",..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 73   GetMethodName(s
56f0: 74 61 63 6b 54 72 61 63 65 2c 20 6c 65 76 65 6c  tackTrace, level
5700: 29 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a  ), message);....
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5720: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5730: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
5740: 74 68 65 20 64 65 62 75 67 20 63 61 6c 6c 62 61  the debug callba
5750: 63 6b 20 69 73 20 69 6e 76 61 6c 69 64 20 6f 72  ck is invalid or
5760: 20 74 68 65 20 74 72 61 63 65 20 70 72 69 6f 72   the trace prior
5770: 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
5780: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 66       //       of
5790: 20 74 68 69 73 20 6d 65 73 73 61 67 65 20 69 73   this message is
57a0: 20 6c 65 73 73 20 74 68 61 6e 20 77 68 61 74 20   less than what 
57b0: 77 65 20 63 75 72 72 65 6e 74 6c 79 20 77 61 6e  we currently wan
57c0: 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20  t to..          
57d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
57e0: 65 62 75 67 2c 20 73 6b 69 70 20 69 74 2e 0d 0a  ebug, skip it...
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5800: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5810: 20 20 20 20 69 66 20 28 28 64 65 62 75 67 43 61      if ((debugCa
5820: 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
5830: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
5840: 20 20 20 20 20 20 20 20 28 74 72 61 63 65 50 72          (tracePr
5850: 69 6f 72 69 74 79 20 3e 3d 20 44 65 62 75 67 50  iority >= DebugP
5860: 72 69 6f 72 69 74 79 29 29 0d 0a 20 20 20 20 20  riority))..     
5870: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
58a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
58b0: 45 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20 64 65  E: Invoke the de
58c0: 62 75 67 20 63 61 6c 6c 62 61 63 6b 20 77 69 74  bug callback wit
58d0: 68 20 74 68 65 20 66 6f 72 6d 61 74 74 65 64 0d  h the formatted.
58e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
58f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65       //       me
5900: 73 73 61 67 65 20 61 6e 64 20 74 68 65 20 63 61  ssage and the ca
5910: 74 65 67 6f 72 79 20 73 70 65 63 69 66 69 65 64  tegory specified
5920: 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5940: 20 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d 0a 20        caller... 
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5970: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
5980: 43 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61 74 74  Callback(formatt
5990: 65 64 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a  ed, category);..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
59c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
59d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
59e0: 3a 20 49 66 20 74 68 65 20 74 72 61 63 65 20 63  : If the trace c
59f0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 61 6c  allback is inval
5a00: 69 64 20 6f 72 20 74 68 65 20 74 72 61 63 65 20  id or the trace 
5a10: 70 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20  priority..      
5a20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5a30: 20 20 20 6f 66 20 74 68 69 73 20 6d 65 73 73 61     of this messa
5a40: 67 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20  ge is less than 
5a50: 77 68 61 74 20 77 65 20 63 75 72 72 65 6e 74 6c  what we currentl
5a60: 79 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20  y want to..     
5a70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5a80: 20 20 20 20 74 72 61 63 65 2c 20 73 6b 69 70 20      trace, skip 
5a90: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
5aa0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5ab0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 72           if ((tr
5ac0: 61 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e  aceCallback != n
5ad0: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72               (tr
5af0: 61 63 65 50 72 69 6f 72 69 74 79 20 3e 3d 20 54  acePriority >= T
5b00: 72 61 63 65 50 72 69 6f 72 69 74 79 29 29 0d 0a  racePriority))..
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5b30: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5b50: 2f 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74  / NOTE: Invoke t
5b60: 68 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  he trace callbac
5b70: 6b 20 77 69 74 68 20 74 68 65 20 66 6f 72 6d 61  k with the forma
5b80: 74 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  tted..          
5b90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5ba0: 20 20 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74     message and t
5bb0: 68 65 20 63 61 74 65 67 6f 72 79 20 73 70 65 63  he category spec
5bc0: 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20  ified by the..  
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 65    //       calle
5bf0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
5c00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 66 6f  traceCallback(fo
5c30: 72 6d 61 74 74 65 64 2c 20 63 61 74 65 67 6f 72  rmatted, categor
5c40: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
5c50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5c60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5c70: 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20   message;..     
5c80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5c90: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5ca0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5cb0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5cc0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
5cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
5d20: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
5d30: 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  ry Class..      
5d40: 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
5d50: 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67 69 73   class MockRegis
5d60: 74 72 79 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  try : IDisposabl
5d70: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
5d80: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
5d90: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
5da0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
5db0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
5dc0: 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20  gistry()..      
5dd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5de0: 20 20 20 20 20 20 20 20 20 77 68 61 74 49 66 20           whatIf 
5df0: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e00: 20 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c           readOnl
5e10: 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
5e20: 20 20 20 20 20 20 20 20 20 20 20 73 61 66 65 20             safe 
5e30: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5e50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5ea0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5eb0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 0d 0a 20  MockRegistry(.. 
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
5ed0: 6f 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20 20 20  ool whatIf..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
5f00: 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
5f10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5f20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 68 61          this.wha
5f30: 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a 20  tIf = whatIf;.. 
5f40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
5f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5fa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
5fb0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
5fc0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
5fd0: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
5fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5ff0: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6010: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
6020: 20 20 20 20 20 3a 20 74 68 69 73 28 77 68 61 74       : this(what
6030: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
6040: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6050: 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c      this.readOnl
6060: 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20  y = readOnly;.. 
6070: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
6080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
60d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
60e0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
60f0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
6100: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
6110: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6120: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6130: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6140: 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20     bool safe..  
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
6160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6170: 20 3a 20 74 68 69 73 28 77 68 61 74 49 66 2c 20   : this(whatIf, 
6180: 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20  readOnly)..     
6190: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
61a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
61b0: 61 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20  afe = safe;..   
61c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
61d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
61e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
61f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6240: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6250: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
6260: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
6270: 61 74 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b  ate bool whatIf;
6280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
6290: 62 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66  blic bool WhatIf
62a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
62c0: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
62d0: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77  osed(); return w
62e0: 68 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20  hatIf; }..      
62f0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
6300: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
6310: 20 77 68 61 74 49 66 20 3d 20 76 61 6c 75 65 3b   whatIf = value;
6320: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6330: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6340: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6390: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
63a0: 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20   readOnly;..    
63b0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
63c0: 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20  ool ReadOnly..  
63d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
63f0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
6400: 28 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64 4f  (); return readO
6410: 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nly; }..        
6420: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43 68          set { Ch
6430: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
6440: 65 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75 65 3b  eadOnly = value;
6450: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6460: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6470: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
64c0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
64d0: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
64e0: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
64f0: 53 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Safe..          
6500: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6510: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
6520: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
6530: 72 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20  rn safe; }..    
6540: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
6550: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
6560: 29 3b 20 73 61 66 65 20 3d 20 76 61 6c 75 65 3b  ); safe = value;
6570: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6580: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6590: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
65e0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
65f0: 52 65 67 69 73 74 72 79 4b 65 79 20 63 6c 61 73  RegistryKey clas
6600: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
6610: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
6620: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 43 6c 61  kRegistryKey Cla
6630: 73 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20 20 20  ssesRoot..      
6640: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6650: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
6660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6680: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
6690: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
66b0: 28 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d 3d 20  (classesRoot == 
66c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
66d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f        classesRoo
6700: 74 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  t = new MockRegi
6710: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
6720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6730: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43        Registry.C
6740: 6c 61 73 73 65 73 52 6f 6f 74 2c 20 77 68 61 74  lassesRoot, what
6750: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
6760: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
6770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 72 65 74 75 72 6e 20 63 6c 61 73 73 65     return classe
67a0: 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20  sRoot;..        
67b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
67c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
67d0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6820: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
6830: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
6840: 65 79 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67  ey currentConfig
6850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
6860: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
6870: 72 79 4b 65 79 20 43 75 72 72 65 6e 74 43 6f 6e  ryKey CurrentCon
6880: 66 69 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fig..           
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
68b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68d0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
68e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
68f0: 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72          if (curr
6900: 65 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e 75 6c  entConfig == nul
6910: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6920: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67     currentConfig
6950: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
6960: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 75       Registry.Cu
6990: 72 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77 68 61  rrentConfig, wha
69a0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
69b0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
69c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69e0: 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65      return curre
69f0: 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20  ntConfig;..     
6a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6a10: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6a20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
6a80: 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74  ivate MockRegist
6a90: 72 79 4b 65 79 20 63 75 72 72 65 6e 74 55 73 65  ryKey currentUse
6aa0: 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
6ab0: 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
6ac0: 74 72 79 4b 65 79 20 43 75 72 72 65 6e 74 55 73  tryKey CurrentUs
6ad0: 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
6ae0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6af0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
6b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
6b20: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
6b30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6b40: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65         if (curre
6b50: 6e 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d  ntUser == null).
6b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b90: 63 75 72 72 65 6e 74 55 73 65 72 20 3d 20 6e 65  currentUser = ne
6ba0: 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  w MockRegistryKe
6bb0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bd0: 52 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74  Registry.Current
6be0: 55 73 65 72 2c 20 77 68 61 74 49 66 2c 20 72 65  User, whatIf, re
6bf0: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a  adOnly, safe);..
6c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6c30: 75 72 6e 20 63 75 72 72 65 6e 74 55 73 65 72 3b  urn currentUser;
6c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6c50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
6c60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
6c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6cc0: 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63       private Moc
6cd0: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 64 79 6e  kRegistryKey dyn
6ce0: 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20  Data;..         
6cf0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
6d00: 67 69 73 74 72 79 4b 65 79 20 44 79 6e 44 61 74  gistryKey DynDat
6d10: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  a..            {
6d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d30: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
6d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
6d60: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
6d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d80: 20 20 20 20 20 20 69 66 20 28 64 79 6e 44 61 74        if (dynDat
6d90: 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  a == null)..    
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6dc0: 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61             dynDa
6dd0: 74 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67  ta = new MockReg
6de0: 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20  istryKey(..     
6df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e00: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e         Registry.
6e10: 44 79 6e 44 61 74 61 2c 20 77 68 61 74 49 66 2c  DynData, whatIf,
6e20: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
6e30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6e40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e60: 72 65 74 75 72 6e 20 64 79 6e 44 61 74 61 3b 0d  return dynData;.
6e70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6e80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6e90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6ea0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6ef0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
6f00: 52 65 67 69 73 74 72 79 4b 65 79 20 6c 6f 63 61  RegistryKey loca
6f10: 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20  lMachine;..     
6f20: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
6f30: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4c 6f  ckRegistryKey Lo
6f40: 63 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20 20 20  calMachine..    
6f50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6f60: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6f90: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
6fa0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
6fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6fc0: 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 20  f (localMachine 
6fd0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7000: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61           localMa
7010: 63 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f 63 6b  chine = new Mock
7020: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
7030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7040: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
7050: 72 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 2c  ry.LocalMachine,
7060: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
7070: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7090: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
70a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
70b0: 6f 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20  ocalMachine;..  
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
70d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
70e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7140: 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67   private MockReg
7150: 69 73 74 72 79 4b 65 79 20 70 65 72 66 6f 72 6d  istryKey perform
7160: 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20 20  anceData;..     
7170: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
7180: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 50 65  ckRegistryKey Pe
7190: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d 0a 20  rformanceData.. 
71a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
71c0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
71d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
71e0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
71f0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
7220: 65 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eData == null)..
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
7260: 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d  erformanceData =
7270: 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
7280: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
7290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72a0: 20 20 20 52 65 67 69 73 74 72 79 2e 50 65 72 66     Registry.Perf
72b0: 6f 72 6d 61 6e 63 65 44 61 74 61 2c 20 77 68 61  ormanceData, wha
72c0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
72d0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
72e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
72f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7300: 20 20 20 20 72 65 74 75 72 6e 20 70 65 72 66 6f      return perfo
7310: 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20  rmanceData;..   
7320: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7330: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
7340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
7350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
73a0: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
73b0: 73 74 72 79 4b 65 79 20 75 73 65 72 73 3b 0d 0a  stryKey users;..
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
73d0: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
73e0: 65 79 20 55 73 65 72 73 0d 0a 20 20 20 20 20 20  ey Users..      
73f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7400: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
7420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7430: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7440: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7460: 28 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (users == null).
7470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74a0: 75 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f 63 6b  users = new Mock
74b0: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
74c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74d0: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
74e0: 72 79 2e 55 73 65 72 73 2c 20 77 68 61 74 49 66  ry.Users, whatIf
74f0: 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65  , readOnly, safe
7500: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7510: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7530: 20 72 65 74 75 72 6e 20 75 73 65 72 73 3b 0d 0a   return users;..
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
7570: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
75d0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
75e0: 6f 6e 20 50 75 62 6c 69 63 20 22 52 65 67 69 73  on Public "Regis
75f0: 74 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 23 69  try" Methods..#i
7600: 66 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20  f false..       
7610: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65       public obje
7620: 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  ct GetValue(..  
7630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
7640: 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d 0a 20  ring keyName,.. 
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7660: 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c  tring valueName,
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74    object default
7690: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
76a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
76b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
76c0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
76d0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
76f0: 75 72 6e 20 52 65 67 69 73 74 72 79 2e 47 65 74  urn Registry.Get
7700: 56 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c 20 76  Value(keyName, v
7710: 61 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61 75 6c  alueName, defaul
7720: 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  tValue);..      
7730: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7740: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7790: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
77a0: 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
77b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77c0: 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c   string keyName,
77d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
77e0: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61    string valueNa
77f0: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
7800: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
7810: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
7820: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7830: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7840: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7850: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7860: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7870: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7880: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7890: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
78b0: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
78c0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
78d0: 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  e, value);..    
78e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
78f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7940: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
7950: 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65  ic void SetValue
7960: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7970: 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d     string keyNam
7980: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7990: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
79a0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
79b0: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
79c0: 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
79d0: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 56 61        RegistryVa
79e0: 6c 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b 69 6e  lueKind valueKin
79f0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
7a00: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7a10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7a20: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7a30: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7a40: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7a50: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7a60: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7a70: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
7a90: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
7aa0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
7ab0: 65 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 4b  e, value, valueK
7ac0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
7ad0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
7ae0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7af0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7b00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b40: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7b50: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7b60: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
7b80: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52 65  ate void CheckRe
7b90: 61 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  adOnly()..      
7ba0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7bb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
7bd0: 4e 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f  NOTE: In "read-o
7be0: 6e 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64 69  nly" mode, we di
7bf0: 73 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65  sallow all write
7c00: 20 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20   access...      
7c10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7c30: 20 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20   (!readOnly)..  
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
7c70: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
7c80: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
7c90: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
7ca0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
7cb0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7cc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
7d20: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
7d30: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
7d40: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
7d50: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
7d60: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
7d70: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
7d80: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
7d90: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
7da0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7dc0: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7de0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
7e00: 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
7e10: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e30: 20 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52      typeof(MockR
7e40: 65 67 69 73 74 72 79 29 2e 4e 61 6d 65 29 3b 0d  egistry).Name);.
7e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
7e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7eb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7ec0: 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
7ed0: 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
7ee0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a   void Dispose(..
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f00: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a  bool disposing..
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
7f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f40: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
7f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
7f80: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
7fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ff0: 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
8000: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
8010: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
8020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8030: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 20 20 20 20 69 66 20 28 63 6c 61 73 73 65 73 52      if (classesR
8080: 6f 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  oot != null)..  
8090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80c0: 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74       classesRoot
80d0: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
80e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80f0: 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f         classesRo
8100: 6f 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ot = null;..    
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8120: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 20 69 66 20 28 63 75 72 72 65 6e 74 43 6f 6e 66   if (currentConf
8150: 69 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ig != null)..   
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8190: 20 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69      currentConfi
81a0: 67 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20  g.Close();..    
81b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81c0: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 43          currentC
81d0: 6f 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  onfig = null;.. 
81e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8210: 20 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 55      if (currentU
8220: 73 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ser != null)..  
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8240: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8260: 20 20 20 20 20 63 75 72 72 65 6e 74 55 73 65 72       currentUser
8270: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8290: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73         currentUs
82a0: 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  er = null;..    
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82e0: 20 69 66 20 28 64 79 6e 44 61 74 61 20 21 3d 20   if (dynData != 
82f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79                dy
8330: 6e 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a  nData.Close();..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44              dynD
8360: 61 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ata = null;..   
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8380: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83a0: 20 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69    if (localMachi
83b0: 6e 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ne != null)..   
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65      localMachine
8400: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8420: 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68         localMach
8430: 69 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ine = null;..   
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8470: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
8480: 65 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eData != null)..
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84c0: 20 20 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e         performan
84d0: 63 65 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d  ceData.Close();.
84e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72               per
8500: 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20 6e  formanceData = n
8510: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8530: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8540: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75             if (u
8550: 73 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sers != null).. 
8560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 20 20 20 20 20 20 75 73 65 72 73 2e 43 6c 6f 73        users.Clos
85a0: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c 3b 0d    users = null;.
85d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
85e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8600: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
8610: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8650: 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
8660: 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
8670: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8690: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
86a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
86d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
86e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
86f0: 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e  This object is n
8700: 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ow disposed...  
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8720: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8730: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
8740: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
8750: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8760: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8770: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
8780: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
8790: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
87e0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
87f0: 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65  Disposable Membe
8800: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
8810: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
8820: 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ose()..         
8830: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8840: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
8850: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
8860: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
8870: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
8880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
88a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
88b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8900: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
8910: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
8920: 20 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52            ~MockR
8930: 65 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20  egistry()..     
8940: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8950: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
8960: 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
8970: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8980: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8990: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
89a0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
89b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a00: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
8a10: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
8a20: 72 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20 20 20  ryKey Class..   
8a30: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
8a40: 61 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52  aled class MockR
8a50: 65 67 69 73 74 72 79 4b 65 79 20 3a 20 49 44 69  egistryKey : IDi
8a60: 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20  sposable..      
8a70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8a80: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
8a90: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
8aa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
8ab0: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
8ac0: 65 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey()..          
8ad0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ae0: 20 20 20 20 20 77 68 61 74 49 66 20 3d 20 74 72       whatIf = tr
8af0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b00: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 20 3d 20       readOnly = 
8b10: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
8b20: 20 20 20 20 20 20 20 73 61 66 65 20 3d 20 74 72         safe = tr
8b30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8b50: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8b60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
8bc0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
8bd0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
8be0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
8bf0: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20  kRegistryKey(.. 
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
8c10: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a  egistryKey key..
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8c40: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
8c50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8c70: 2e 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20  .key = key;..   
8c80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8c90: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
8cf0: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
8d00: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
8d10: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
8d20: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
8d30: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
8d40: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
8d50: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
8d70: 74 68 69 73 28 6b 65 79 29 0d 0a 20 20 20 20 20  this(key)..     
8d80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8d90: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
8da0: 75 62 4b 65 79 4e 61 6d 65 20 3d 20 73 75 62 4b  ubKeyName = subK
8db0: 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  eyName;..       
8dc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8dd0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8e20: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8e30: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
8e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e50: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
8e60: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
8e70: 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
8e80: 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
8e90: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
8ea0: 74 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tIf..           
8eb0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
8ec0: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
8ed0: 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 0d  ey, subKeyName).
8ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 74 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77 68  this.whatIf = wh
8f10: 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20 20  atIf;..         
8f20: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8f30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8f80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
8f90: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c  RegistryKey key,
8fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8fd0: 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e    string subKeyN
8fe0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8ff0: 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
9000: 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
9010: 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c      bool readOnl
9020: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
9030: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
9040: 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79        : this(key
9050: 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68  , subKeyName, wh
9060: 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20  atIf)..         
9070: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9080: 20 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f        this.readO
9090: 6e 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d  nly = readOnly;.
90a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
90b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
9110: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
9120: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
9130: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
9140: 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
9150: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9160: 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91a0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20  ol readOnly,..  
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91c0: 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
91d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
91f0: 69 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61  is(key, subKeyNa
9200: 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64  me, whatIf, read
9210: 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20  Only)..         
9220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9230: 20 20 20 20 20 20 74 68 69 73 2e 73 61 66 65 20        this.safe 
9240: 3d 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20  = safe;..       
9250: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9260: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
92b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
92c0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
92d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92e0: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
92f0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
9300: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d      bool whatIf.
9310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9320: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9330: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9340: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 29 0d 0a 20  null, whatIf).. 
9350: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9370: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9380: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9390: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
93e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
93f0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
9400: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
9410: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b         RegistryK
9420: 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20  ey key,..       
9430: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68           bool wh
9440: 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20  atIf,..         
9450: 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64         bool read
9460: 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  Only..          
9470: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
9480: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
9490: 6b 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49  key, null, whatI
94a0: 66 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20  f, readOnly)..  
94b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
94d0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
94e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
94f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
9550: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
9560: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
9570: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
9580: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
9590: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
95a0: 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
95b0: 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f        bool readO
95c0: 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nly,..          
95d0: 20 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d        bool safe.
95e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
95f0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9600: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9610: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 2c 20 72 65  null, whatIf, re
9620: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 0d 0a 20  adOnly, safe).. 
9630: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9650: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9660: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9670: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9680: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9690: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
96e0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
96f0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
9700: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
9710: 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20   void Close().. 
9720: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9750: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 64 69    // NOTE: No di
9760: 73 70 6f 73 65 64 20 63 68 65 63 6b 20 68 65 72  sposed check her
9770: 65 20 62 65 63 61 75 73 65 20 63 61 6c 6c 69 6e  e because callin
9780: 67 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20  g this method.. 
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
97a0: 2f 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62  /       should b
97b0: 65 20 6a 75 73 74 20 6c 69 6b 65 20 63 61 6c 6c  e just like call
97c0: 69 6e 67 20 44 69 73 70 6f 73 65 2e 0d 0a 20 20  ing Dispose...  
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
97e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97f0: 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
9800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9810: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9870: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
9880: 73 61 62 6c 65 43 6c 6f 73 65 28 29 0d 0a 20 20  sableClose()..  
9890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
98b0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
98c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
98d0: 20 6e 6f 43 6c 6f 73 65 20 3d 20 74 72 75 65 3b   noClose = true;
98e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
98f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9950: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
9960: 69 73 74 72 79 4b 65 79 20 43 72 65 61 74 65 53  istryKey CreateS
9970: 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ubKey(..        
9980: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
9990: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
99a0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
99b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
99c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
99d0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
99e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
99f0: 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d  heckReadOnly();.
9a00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9a10: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
9a20: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
9a30: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9a40: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
9a50: 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
9a60: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
9a70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9aa0: 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 74       // HACK: At
9ab0: 74 65 6d 70 74 20 74 6f 20 6f 70 65 6e 20 74 68  tempt to open th
9ac0: 65 20 73 70 65 63 69 66 69 65 64 20 73 75 62 2d  e specified sub-
9ad0: 6b 65 79 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  key.  If this.. 
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9af0: 20 20 20 2f 2f 20 20 20 20 20 20 20 66 61 69 6c     //       fail
9b00: 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
9b10: 79 20 72 65 74 75 72 6e 20 74 68 65 20 77 72 61  y return the wra
9b20: 70 70 65 64 20 72 6f 6f 74 20 6b 65 79 0d 0a 20  pped root key.. 
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b40: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65     //       itse
9b50: 6c 66 20 73 69 6e 63 65 20 6e 6f 20 77 72 69 74  lf since no writ
9b60: 65 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 69  es are allowed i
9b70: 6e 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  n "what-if"..   
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b90: 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 65 20 61   //       mode a
9ba0: 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
9bb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
9be0: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
9bf0: 6e 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  nSubKey(subKeyNa
9c00: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9c20: 73 75 62 4b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d  subKey != null).
9c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9c40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52  return new MockR
9c70: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
9c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c90: 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 2c           subKey,
9ca0: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
9cb0: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
9cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9ce0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
9cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d00: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9d10: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9d20: 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  n new MockRegist
9d30: 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
9d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d50: 20 20 20 20 6b 65 79 2c 20 73 75 62 4b 65 79 4e      key, subKeyN
9d60: 61 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ame, whatIf, rea
9d70: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d90: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9da0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9db0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9dd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9de0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
9df0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
9e00: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9e10: 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43             key.C
9e20: 72 65 61 74 65 53 75 62 4b 65 79 28 73 75 62 4b  reateSubKey(subK
9e30: 65 79 4e 61 6d 65 29 2c 20 77 68 61 74 49 66 2c  eyName), whatIf,
9e40: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
9e50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9e60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9e70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
9e80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9ed0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
9ee0: 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79 28 0d  d DeleteSubKey(.
9ef0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9f00: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
9f10: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
9f20: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
9f30: 6e 4d 69 73 73 69 6e 67 0d 0a 20 20 20 20 20 20  nMissing..      
9f40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
9f50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
9f70: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
9f90: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
9fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9fb0: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
9fc0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
9fd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
9fe0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9ff0: 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
a000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a010: 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 53       key.DeleteS
a020: 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65  ubKey(subKeyName
a030: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a040: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a050: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a060: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0a0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a0b0: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a0c0: 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
a0d0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a0e0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
a0f0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
a100: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
a110: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a120: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
a130: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
a140: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
a150: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a170: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
a180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a190: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
a1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a1b0: 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
a1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a1d0: 20 6b 65 79 2e 44 65 6c 65 74 65 53 75 62 4b 65   key.DeleteSubKe
a1e0: 79 54 72 65 65 28 73 75 62 4b 65 79 4e 61 6d 65  yTree(subKeyName
a1f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a200: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a210: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a260: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a270: 44 65 6c 65 74 65 56 61 6c 75 65 28 0d 0a 20 20  DeleteValue(..  
a280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
a290: 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20  ring name,..    
a2a0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
a2b0: 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 0d   throwOnMissing.
a2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a2d0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
a2e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a2f0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
a300: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
a310: 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e       CheckReadOn
a320: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
a330: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a340: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a360: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
a370: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
a380: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
a390: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
a3a0: 44 65 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65  DeleteValue(name
a3b0: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a3c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a3d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a3e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a430: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
a440: 67 5b 5d 20 47 65 74 53 75 62 4b 65 79 4e 61 6d  g[] GetSubKeyNam
a450: 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  es()..          
a460: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a470: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
a480: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
a490: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a4a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a4c0: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
a4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a4e0: 65 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62  eturn key.GetSub
a4f0: 4b 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20  KeyNames();..   
a500: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a510: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a570: 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61  lic object GetVa
a580: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
a590: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
a5a0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a5b0: 20 20 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75      object defau
a5c0: 6c 74 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  ltValue..       
a5d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a5e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a5f0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
a600: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
a610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a620: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
a630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a640: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
a650: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a660: 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 2e       return key.
a670: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 64  GetValue(name, d
a680: 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20  efaultValue);.. 
a690: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a6f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
a700: 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  ublic string[] G
a710: 65 74 56 61 6c 75 65 4e 61 6d 65 73 28 29 0d 0a  etValueNames()..
a720: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
a740: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a750: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a760: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
a770: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a780: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a790: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
a7a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a7b0: 6b 65 79 2e 47 65 74 56 61 6c 75 65 4e 61 6d 65  key.GetValueName
a7c0: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
a7d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a7e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a820: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a830: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
a840: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4f 70 65  kRegistryKey Ope
a850: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
a860: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
a870: 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20   subKeyName..   
a880: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
a890: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
a8b0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a8c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a8d0: 20 20 20 72 65 74 75 72 6e 20 4f 70 65 6e 53 75     return OpenSu
a8e0: 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 2c  bKey(subKeyName,
a8f0: 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
a900: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a910: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a960: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
a970: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
a980: 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20   OpenSubKey(..  
a990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
a9a0: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
a9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9c0: 20 20 62 6f 6f 6c 20 77 72 69 74 61 62 6c 65 0d    bool writable.
a9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a9e0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
a9f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
aa00: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
aa10: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
aa20: 20 20 20 20 20 20 20 69 66 20 28 77 72 69 74 61         if (writa
aa30: 62 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ble)..          
aa40: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
aa50: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
aa60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
aa70: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa90: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
aaa0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
aab0: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
aac0: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
aad0: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
aae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
aaf0: 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
ab00: 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
ab10: 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
ab20: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
ab30: 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  Key == null)..  
ab40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab50: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ab60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab70: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63    return new Moc
ab80: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 73 75 62  kRegistryKey(sub
ab90: 4b 65 79 2c 20 77 68 61 74 49 66 2c 20 72 65 61  Key, whatIf, rea
aba0: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
abb0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
abc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
abd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ac10: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
ac20: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61  ublic void SetVa
ac30: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
ac40: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
ac50: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
ac60: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
ac70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ac80: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
ac90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
aca0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
acb0: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
acc0: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
acd0: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
ace0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
acf0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
ad00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad10: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
ad20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
ad30: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
ad40: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79               key
ad50: 2e 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  .SetValue(name, 
ad60: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
ad70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
ad80: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
ad90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
add0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ade0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
adf0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
ae00: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
ae10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
ae20: 74 72 69 6e 67 20 4e 61 6d 65 0d 0a 20 20 20 20  tring Name..    
ae30: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ae40: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
ae50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae60: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ae70: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
ae80: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
ae90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
aea0: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
aeb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
aec0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
aed0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
aee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
aef0: 75 72 6e 20 21 53 74 72 69 6e 67 2e 49 73 4e 75  urn !String.IsNu
af00: 6c 6c 4f 72 45 6d 70 74 79 28 73 75 62 4b 65 79  llOrEmpty(subKey
af10: 4e 61 6d 65 29 20 3f 0d 0a 20 20 20 20 20 20 20  Name) ?..       
af20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af30: 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e   RegistryHelper.
af40: 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79  JoinKeyNames(key
af50: 2e 4e 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d  .Name, subKeyNam
af60: 65 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  e) :..          
af70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
af80: 79 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  y.Name;..       
af90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
afa0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
afb0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
afc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b000: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b010: 61 74 65 20 52 65 67 69 73 74 72 79 4b 65 79 20  ate RegistryKey 
b020: 6b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  key;..          
b030: 20 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72    public Registr
b040: 79 4b 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20  yKey Key..      
b050: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b060: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b070: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b080: 43 68 65 63 6b 53 61 66 65 28 29 3b 20 72 65 74  CheckSafe(); ret
b090: 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20  urn key; }..    
b0a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b0b0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b100: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b110: 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65  ate string subKe
b120: 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
b130: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
b140: 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20  g SubKeyName..  
b150: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b160: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
b170: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
b180: 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65  (); return subKe
b190: 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  yName; }..      
b1a0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b1b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
b200: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
b210: 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d 0a  e bool whatIf;..
b220: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b230: 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d 0a  ic bool WhatIf..
b240: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
b260: 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
b270: 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77 68 61  ed(); return wha
b280: 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  tIf; }..        
b290: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b2a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b2f0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
b300: 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a  bool readOnly;..
b310: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b320: 69 63 20 62 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79  ic bool ReadOnly
b330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b350: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
b360: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 72  osed(); return r
b370: 65 61 64 4f 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20  eadOnly; }..    
b380: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b390: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b3e0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b3f0: 69 63 20 62 6f 6f 6c 20 73 61 66 65 3b 0d 0a 20  ic bool safe;.. 
b400: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
b410: 63 20 62 6f 6f 6c 20 53 61 66 65 0d 0a 20 20 20  c bool Safe..   
b420: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b430: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b440: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
b450: 29 3b 20 72 65 74 75 72 6e 20 73 61 66 65 3b 20  ); return safe; 
b460: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b470: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
b4d0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 6e     public bool n
b4e0: 6f 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  oClose;..       
b4f0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
b500: 20 4e 6f 43 6c 6f 73 65 0d 0a 20 20 20 20 20 20   NoClose..      
b510: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b520: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b530: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b540: 72 65 74 75 72 6e 20 6e 6f 43 6c 6f 73 65 3b 20  return noClose; 
b550: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
b570: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b5d0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
b5e0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
b5f0: 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
b600: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
b610: 63 6b 52 65 61 64 4f 6e 6c 79 28 29 0d 0a 20 20  ckReadOnly()..  
b620: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
b640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b650: 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e 20 22 72 65   // NOTE: In "re
b660: 61 64 2d 6f 6e 6c 79 22 20 6d 6f 64 65 2c 20 77  ad-only" mode, w
b670: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 77  e disallow all w
b680: 72 69 74 65 20 61 63 63 65 73 73 2e 0d 0a 20 20  rite access...  
b690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b6b0: 20 20 69 66 20 28 21 72 65 61 64 4f 6e 6c 79 29    if (!readOnly)
b6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b6d0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
b6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b6f0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
b700: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
b710: 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
b720: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b730: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
b780: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
b790: 20 76 6f 69 64 20 43 68 65 63 6b 53 61 66 65 28   void CheckSafe(
b7a0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
b7b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b7c0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b7d0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
b7e0: 6e 20 22 73 61 66 65 22 20 6d 6f 64 65 2c 20 77  n "safe" mode, w
b7f0: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 64  e disallow all d
b800: 69 72 65 63 74 20 61 63 63 65 73 73 20 74 6f 20  irect access to 
b810: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
b820: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
b830: 6e 74 61 69 6e 65 64 20 72 65 67 69 73 74 72 79  ntained registry
b840: 20 6b 65 79 2e 0d 0a 20 20 20 20 20 20 20 20 20   key...         
b850: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
b860: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
b870: 73 61 66 65 29 0d 0a 20 20 20 20 20 20 20 20 20  safe)..         
b880: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
b890: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
b8a0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
b8b0: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
b8c0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20  Exception();..  
b8d0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b8e0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
b8f0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
b900: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b950: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79        #region Sy
b960: 73 74 65 6d 2e 4f 62 6a 65 63 74 20 4f 76 65 72  stem.Object Over
b970: 72 69 64 65 73 0d 0a 20 20 20 20 20 20 20 20 20  rides..         
b980: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
b990: 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
b9a0: 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ng()..          
b9b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b9c0: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
b9d0: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
b9e0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b9f0: 74 68 69 73 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20  this.Name;..    
ba00: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ba10: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
ba20: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
ba30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ba40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
ba80: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
ba90: 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  ic Static Method
baa0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
bab0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
bac0: 6c 20 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  l NameEquals(.. 
bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
bae0: 74 72 69 6e 67 20 6e 61 6d 65 31 2c 0d 0a 20 20  tring name1,..  
baf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
bb00: 72 69 6e 67 20 6e 61 6d 65 32 0d 0a 20 20 20 20  ring name2..    
bb10: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
bb20: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bb40: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
bb50: 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
bb60: 20 20 20 20 20 20 20 20 20 6e 61 6d 65 31 2c 20           name1, 
bb70: 6e 61 6d 65 32 2c 20 53 74 72 69 6e 67 43 6f 6d  name2, StringCom
bb80: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
bb90: 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20  gnoreCase);..   
bba0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
bbb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bc00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
bc10: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  lic static bool 
bc20: 56 61 6c 75 65 45 71 75 61 6c 73 28 0d 0a 20 20  ValueEquals(..  
bc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
bc40: 6a 65 63 74 20 76 61 6c 75 65 31 2c 0d 0a 20 20  ject value1,..  
bc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
bc60: 6a 65 63 74 20 76 61 6c 75 65 32 0d 0a 20 20 20  ject value2..   
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
bc80: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
bca0: 66 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75  f ((value1 == nu
bcb0: 6c 6c 29 20 7c 7c 20 28 76 61 6c 75 65 32 20 3d  ll) || (value2 =
bcc0: 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
bcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bce0: 74 75 72 6e 20 28 28 76 61 6c 75 65 31 20 3d 3d  turn ((value1 ==
bcf0: 20 6e 75 6c 6c 29 20 26 26 20 28 76 61 6c 75 65   null) && (value
bd00: 32 20 3d 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a  2 == null));....
bd10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd20: 69 66 20 28 4f 62 6a 65 63 74 2e 52 65 66 65 72  if (Object.Refer
bd30: 65 6e 63 65 45 71 75 61 6c 73 28 76 61 6c 75 65  enceEquals(value
bd40: 31 2c 20 76 61 6c 75 65 32 29 29 0d 0a 20 20 20  1, value2))..   
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bd60: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
bd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd80: 20 54 79 70 65 20 74 79 70 65 31 20 3d 20 76 61   Type type1 = va
bd90: 6c 75 65 31 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue1.GetType();.
bda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bdb0: 20 54 79 70 65 20 74 79 70 65 32 20 3d 20 76 61   Type type2 = va
bdc0: 6c 75 65 32 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue2.GetType();.
bdd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bde0: 20 20 20 69 66 20 28 21 4f 62 6a 65 63 74 2e 52     if (!Object.R
bdf0: 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 74  eferenceEquals(t
be00: 79 70 65 31 2c 20 74 79 70 65 32 29 29 0d 0a 20  ype1, type2)).. 
be10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be20: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
be30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
be40: 20 20 20 20 69 66 20 28 74 79 70 65 31 20 3d 3d      if (type1 ==
be50: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 2f 2f   typeof(int)) //
be60: 20 44 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20   DWord..        
be70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
be90: 65 74 75 72 6e 20 28 28 69 6e 74 29 76 61 6c 75  eturn ((int)valu
bea0: 65 31 20 3d 3d 20 28 69 6e 74 29 76 61 6c 75 65  e1 == (int)value
beb0: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
bec0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
bed0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
bee0: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
bef0: 28 6c 6f 6e 67 29 29 20 2f 2f 20 51 57 6f 72 64  (long)) // QWord
bf00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bf10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bf20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bf30: 28 28 6c 6f 6e 67 29 76 61 6c 75 65 31 20 3d 3d  ((long)value1 ==
bf40: 20 28 6c 6f 6e 67 29 76 61 6c 75 65 32 29 3b 0d   (long)value2);.
bf50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf60: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
bf70: 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70      else if (typ
bf80: 65 31 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72  e1 == typeof(str
bf90: 69 6e 67 29 29 20 2f 2f 20 53 74 72 69 6e 67 20  ing)) // String 
bfa0: 2f 20 45 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a  / ExpandString..
bfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bfc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
bfd0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
bfe0: 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
bff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c000: 20 20 20 20 20 20 28 73 74 72 69 6e 67 29 76 61        (string)va
c010: 6c 75 65 31 2c 20 28 73 74 72 69 6e 67 29 76 61  lue1, (string)va
c020: 6c 75 65 32 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue2,..         
c030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c040: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
c050: 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 20  Ordinal);..     
c060: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
c080: 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20  se if (type1 == 
c090: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29  typeof(string[])
c0a0: 29 20 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67  ) // MultiString
c0b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0c0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c0d0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
c0e0: 5d 20 61 72 72 61 79 31 20 3d 20 28 73 74 72 69  ] array1 = (stri
c0f0: 6e 67 5b 5d 29 76 61 6c 75 65 31 3b 0d 0a 20 20  ng[])value1;..  
c100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c110: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 72 61 79    string[] array
c120: 32 20 3d 20 28 73 74 72 69 6e 67 5b 5d 29 76 61  2 = (string[])va
c130: 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue2;....       
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c150: 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72 61 79   length1 = array
c160: 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  1.Length;....   
c170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c180: 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21 3d 20   if (length1 != 
c190: 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29 0d 0a  array2.Length)..
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c1c0: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
c1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
c1e0: 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d 20 30   (int index1 = 0
c1f0: 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e 67 74  ; index1 < lengt
c200: 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d 0a 20  h1; index1++).. 
c210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c240: 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73   (!String.Equals
c250: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c270: 20 20 20 61 72 72 61 79 31 5b 69 6e 64 65 78 31     array1[index1
c280: 5d 2c 20 61 72 72 61 79 32 5b 69 6e 64 65 78 31  ], array2[index1
c290: 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ],..            
c2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2b0: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
c2c0: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a  ison.Ordinal))..
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c300: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
c310: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c340: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c360: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
c370: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c390: 6c 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d  lse if (type1 ==
c3a0: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
c3b0: 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20 20   // Binary..    
c3c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3e0: 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61 79 31     byte[] array1
c3f0: 20 3d 20 28 62 79 74 65 5b 5d 29 76 61 6c 75 65   = (byte[])value
c400: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
c410: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 61          byte[] a
c420: 72 72 61 79 32 20 3d 20 28 62 79 74 65 5b 5d 29  rray2 = (byte[])
c430: 76 61 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20  value2;....     
c440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c450: 6e 74 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72  nt length1 = arr
c460: 61 79 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  ay1.Length;.... 
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21     if (length1 !
c490: 3d 20 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29  = array2.Length)
c4a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c4c0: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
c4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
c4e0: 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d  or (int index1 =
c4f0: 20 30 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e   0; index1 < len
c500: 67 74 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d  gth1; index1++).
c510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c520: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72           if (arr
c530: 61 79 31 5b 69 6e 64 65 78 31 5d 20 21 3d 20 61  ay1[index1] != a
c540: 72 72 61 79 32 5b 69 6e 64 65 78 31 5d 29 0d 0a  rray2[index1])..
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c560: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
c570: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c5b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c5c0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
c5d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c5e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c5f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c630: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c640: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
c650: 20 69 6e 74 20 56 61 6c 75 65 48 61 73 68 43 6f   int ValueHashCo
c660: 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de(..           
c670: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
c680: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
c690: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
c6a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c6b0: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
c6c0: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
c6d0: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
c6e0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
c6f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c710: 20 20 20 54 79 70 65 20 74 79 70 65 20 3d 20 76     Type type = v
c720: 61 6c 75 65 2e 47 65 74 54 79 70 65 28 29 3b 0d  alue.GetType();.
c730: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c740: 20 20 20 20 20 20 20 69 66 20 28 28 74 79 70 65         if ((type
c750: 20 3d 3d 20 74 79 70 65 6f 66 28 69 6e 74 29 29   == typeof(int))
c760: 20 7c 7c 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20   || // DWord..  
c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c780: 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20 74        (type == t
c790: 79 70 65 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20  ypeof(long)) || 
c7a0: 2f 2f 20 51 57 6f 72 64 0d 0a 20 20 20 20 20 20  // QWord..      
c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c7c0: 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f    (type == typeo
c7d0: 66 28 73 74 72 69 6e 67 29 29 29 20 2f 2f 20 53  f(string))) // S
c7e0: 74 72 69 6e 67 20 2f 20 45 78 70 61 6e 64 53 74  tring / ExpandSt
c7f0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
c800: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c820: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61       result = va
c830: 6c 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28  lue.GetHashCode(
c840: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
c850: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
c860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c870: 6c 73 65 20 69 66 20 28 28 74 79 70 65 20 3d 3d  lse if ((type ==
c880: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d   typeof(string[]
c890: 29 29 20 7c 7c 20 2f 2f 20 4d 75 6c 74 69 53 74  )) || // MultiSt
c8a0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
c8b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
c8c0: 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 62 79  ype == typeof(by
c8d0: 74 65 5b 5d 29 29 29 20 2f 2f 20 42 69 6e 61 72  te[]))) // Binar
c8e0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
c8f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
c900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c910: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
c920: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
c930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c940: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
c950: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
c960: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
c970: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
c980: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
c990: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
c9a0: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
c9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9e0: 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d 65 6e 74    object element
c9f0: 20 3d 20 61 72 72 61 79 2e 47 65 74 56 61 6c 75   = array.GetValu
ca00: 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  e(index);....   
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca20: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
ca30: 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
ca40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
ca60: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e          result ^
ca90: 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 48 61 73  = element.GetHas
caa0: 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20  hCode();..      
cab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cac0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cad0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
caf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
cb00: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
cb10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
cb20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb70: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
cb80: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
cb90: 74 72 69 6e 67 20 56 61 6c 75 65 54 6f 53 74 72  tring ValueToStr
cba0: 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
cbb0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
cbc0: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
cbd0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 6c 69       string deli
cbe0: 6d 69 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  miter,..        
cbf0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
cc00: 75 6c 6c 56 61 6c 75 65 0d 0a 20 20 20 20 20 20  ullValue..      
cc10: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
cc20: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc30: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
cc40: 6e 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c  ng result = null
cc50: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cc60: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
cc70: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
cc80: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
cc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cca0: 54 79 70 65 20 74 79 70 65 20 3d 20 76 61 6c 75  Type type = valu
ccb0: 65 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a  e.GetType();....
ccc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ccd0: 20 20 20 20 69 66 20 28 28 74 79 70 65 20 3d 3d      if ((type ==
cce0: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 7c 7c   typeof(int)) ||
ccf0: 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20 20 20 20   // DWord..     
cd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cd10: 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65     (type == type
cd20: 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20  of(long)) || // 
cd30: 51 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20  QWord..         
cd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
cd50: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 73  type == typeof(s
cd60: 74 72 69 6e 67 29 29 29 20 2f 2f 20 53 74 72 69  tring))) // Stri
cd70: 6e 67 20 2f 20 45 78 70 61 6e 64 53 74 72 69 6e  ng / ExpandStrin
cd80: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
cd90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cdb0: 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c 75 65    result = value
cdc0: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
cdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cde0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cdf0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
ce00: 20 28 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f   ((type == typeo
ce10: 66 28 73 74 72 69 6e 67 5b 5d 29 29 20 7c 7c 20  f(string[])) || 
ce20: 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a  // MultiString..
ce30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce40: 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d          (type ==
ce50: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
ce60: 29 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20  ) // Binary..   
ce70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
cea0: 6e 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65  ngBuilder builde
ceb0: 72 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  r = new StringBu
cec0: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cee0: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
cef0: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
cf00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf10: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
cf20: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
cf30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cf40: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
cf50: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
cf60: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
cf70: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfb0: 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30    if ((index > 0
cfc0: 29 20 26 26 20 28 64 65 6c 69 6d 69 74 65 72 20  ) && (delimiter 
cfd0: 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
cfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cff0: 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
d000: 65 72 2e 41 70 70 65 6e 64 28 64 65 6c 69 6d 69  er.Append(delimi
d010: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
d020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d030: 20 20 20 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d       object elem
d040: 65 6e 74 20 3d 20 61 72 72 61 79 2e 47 65 74 56  ent = array.GetV
d050: 61 6c 75 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a  alue(index);....
d060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d070: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d080: 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29  element == null)
d090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
d0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0d0: 20 69 66 20 28 6e 75 6c 6c 56 61 6c 75 65 20 21   if (nullValue !
d0e0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d100: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
d110: 6c 64 65 72 2e 41 70 70 65 6e 64 28 6e 75 6c 6c  lder.Append(null
d120: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Value);....     
d130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d140: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
d150: 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
d160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d170: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d190: 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
d1a0: 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69  d(element.ToStri
d1b0: 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
d1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
d1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
d1f0: 75 6c 74 20 3d 20 62 75 69 6c 64 65 72 2e 54 6f  ult = builder.To
d200: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
d210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d230: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d240: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
d250: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  sult;..         
d260: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d270: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d2c0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
d2d0: 61 74 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  atic bool Equals
d2e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d2f0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
d300: 65 79 20 6b 65 79 31 2c 0d 0a 20 20 20 20 20 20  ey key1,..      
d310: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d320: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 32 0d 0a  gistryKey key2..
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d340: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d360: 20 20 69 66 20 28 28 6b 65 79 31 20 3d 3d 20 6e    if ((key1 == n
d370: 75 6c 6c 29 20 7c 7c 20 28 6b 65 79 32 20 3d 3d  ull) || (key2 ==
d380: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d3a0: 75 72 6e 20 28 28 6b 65 79 31 20 3d 3d 20 6e 75  urn ((key1 == nu
d3b0: 6c 6c 29 20 26 26 20 28 6b 65 79 32 20 3d 3d 20  ll) && (key2 == 
d3c0: 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  null));....     
d3d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4f             if (O
d3e0: 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45  bject.ReferenceE
d3f0: 71 75 61 6c 73 28 6b 65 79 31 2c 20 6b 65 79 32  quals(key1, key2
d400: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
d410: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
d420: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
d430: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e          return N
d440: 61 6d 65 45 71 75 61 6c 73 28 6b 65 79 31 2e 4e  ameEquals(key1.N
d450: 61 6d 65 2c 20 6b 65 79 32 2e 4e 61 6d 65 29 3b  ame, key2.Name);
d460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d470: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
d480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d4c0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
d4d0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
d4e0: 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28  int GetHashCode(
d4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d500: 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
d510: 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  y key..         
d520: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
d530: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d540: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
d550: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d560: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d580: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20    string name = 
d590: 6b 65 79 2e 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  key.Name;....   
d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d5b0: 20 69 66 20 28 6e 61 6d 65 20 21 3d 20 6e 75 6c   if (name != nul
d5c0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d5d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d5e0: 72 6e 20 6e 61 6d 65 2e 47 65 74 48 61 73 68 43  rn name.GetHashC
d5f0: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode();..        
d600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d620: 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  urn 0;..        
d630: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d640: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
d650: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
d660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d6a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d6b0: 23 72 65 67 69 6f 6e 20 49 6d 70 6c 69 63 69 74  #region Implicit
d6c0: 20 43 6f 6e 76 65 72 73 69 6f 6e 20 4f 70 65 72   Conversion Oper
d6d0: 61 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ators..         
d6e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d6f0: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 52 65     // BUGBUG: Re
d700: 6d 6f 76 65 20 6d 65 3f 20 20 54 68 69 73 20 73  move me?  This s
d710: 68 6f 75 6c 64 20 62 65 20 73 61 66 65 20 62 65  hould be safe be
d720: 63 61 75 73 65 20 69 6e 20 22 77 68 61 74 2d 69  cause in "what-i
d730: 66 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f"..            
d740: 2f 2f 20 20 20 20 20 20 20 20 20 6d 6f 64 65 20  //         mode 
d750: 61 6c 6c 20 6b 65 79 73 20 61 72 65 20 6f 70 65  all keys are ope
d760: 6e 65 64 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a  ned read-only...
d770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
d780: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
d790: 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
d7a0: 69 74 20 6f 70 65 72 61 74 6f 72 20 52 65 67 69  it operator Regi
d7b0: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
d7c0: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d7d0: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
d7f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d810: 20 72 65 74 75 72 6e 20 28 6b 65 79 20 21 3d 20   return (key != 
d820: 6e 75 6c 6c 29 20 3f 20 6b 65 79 2e 4b 65 79 20  null) ? key.Key 
d830: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
d840: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
d850: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
d860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
d870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d8b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
d8c0: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
d8d0: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
d8e0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
d8f0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
d900: 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
d910: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
d920: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
d930: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
d940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d960: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
d970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d980: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
d990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9a0: 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
d9b0: 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
d9c0: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
d9d0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 4d          typeof(M
d9e0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 29 2e  ockRegistryKey).
d9f0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
da00: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
da10: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
da20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
da60: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
da70: 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
da80: 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
da90: 70 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  pose(..         
daa0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 69 73 70         bool disp
dab0: 6f 73 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  osing..         
dac0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
dad0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dae0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
daf0: 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
db00: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
db10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db20: 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
db30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
db50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
db60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
db80: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dba0: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
dbb0: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
dbc0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dbd0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
dbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
dc00: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dc10: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
dc20: 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey != null)..   
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
dc50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc60: 20 20 20 20 69 66 20 28 21 6e 6f 43 6c 6f 73 65      if (!noClose
dc70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc90: 20 20 20 6b 65 79 2e 43 6c 6f 73 65 28 29 3b 0d     key.Close();.
dca0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
dcc0: 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ey = null;..    
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dce0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
dcf0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
dd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
dd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd50: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
dd60: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
dd70: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
dd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ddc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
ddd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dde0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
ddf0: 6f 62 6a 65 63 74 20 69 73 20 6e 6f 77 20 64 69  object is now di
de00: 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
de10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
de20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
de30: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
de40: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
de50: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
de60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
de70: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
de80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
de90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
deb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ded0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
dee0: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
def0: 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
df00: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
df10: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
df20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
df30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df40: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
df50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
df60: 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
df70: 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
df80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
df90: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
dfa0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
dfb0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
dfc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dff0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e000: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
e010: 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
e020: 20 20 20 20 20 7e 4d 6f 63 6b 52 65 67 69 73 74       ~MockRegist
e030: 72 79 4b 65 79 28 29 0d 0a 20 20 20 20 20 20 20  ryKey()..       
e040: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e050: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
e060: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
e070: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e080: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e090: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e0a0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e0b0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e100: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
e110: 69 6f 6e 20 52 65 67 69 73 74 72 79 52 6f 6f 74  ion RegistryRoot
e120: 4b 65 79 4e 61 6d 65 73 20 43 6c 61 73 73 0d 0a  KeyNames Class..
e130: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e140: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
e150: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
e160: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
e170: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e180: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e190: 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 20  EY_CLASSES_ROOT 
e1a0: 3d 20 22 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f  = "HKEY_CLASSES_
e1b0: 52 4f 4f 54 22 3b 0d 0a 20 20 20 20 20 20 20 20  ROOT";..        
e1c0: 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74      public const
e1d0: 20 73 74 72 69 6e 67 20 48 4b 43 52 20 3d 20 22   string HKCR = "
e1e0: 48 4b 43 52 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  HKCR";....      
e1f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
e240: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
e250: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45  const string HKE
e260: 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46 49 47  Y_CURRENT_CONFIG
e270: 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e 54   = "HKEY_CURRENT
e280: 5f 43 4f 4e 46 49 47 22 3b 0d 0a 20 20 20 20 20  _CONFIG";..     
e290: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
e2a0: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 43 43 20  nst string HKCC 
e2b0: 3d 20 22 48 4b 43 43 22 3b 0d 0a 0d 0a 20 20 20  = "HKCC";....   
e2c0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
e2d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e310: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
e320: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
e330: 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45  HKEY_CURRENT_USE
e340: 52 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e  R = "HKEY_CURREN
e350: 54 5f 55 53 45 52 22 3b 0d 0a 20 20 20 20 20 20  T_USER";..      
e360: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e370: 73 74 20 73 74 72 69 6e 67 20 48 4b 43 55 20 3d  st string HKCU =
e380: 20 22 48 4b 43 55 22 3b 0d 0a 0d 0a 20 20 20 20   "HKCU";....    
e390: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e3e0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
e3f0: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
e400: 4b 45 59 5f 44 59 4e 5f 44 41 54 41 20 3d 20 22  KEY_DYN_DATA = "
e410: 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 22 3b 0d  HKEY_DYN_DATA";.
e420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
e430: 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  lic const string
e440: 20 48 4b 44 44 20 3d 20 22 48 4b 44 44 22 3b 0d   HKDD = "HKDD";.
e450: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
e4b0: 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
e4c0: 74 72 69 6e 67 20 48 4b 45 59 5f 4c 4f 43 41 4c  tring HKEY_LOCAL
e4d0: 5f 4d 41 43 48 49 4e 45 20 3d 20 22 48 4b 45 59  _MACHINE = "HKEY
e4e0: 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 22 3b  _LOCAL_MACHINE";
e4f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
e500: 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
e510: 67 20 48 4b 4c 4d 20 3d 20 22 48 4b 4c 4d 22 3b  g HKLM = "HKLM";
e520: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e570: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
e580: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
e590: 73 74 72 69 6e 67 20 48 4b 45 59 5f 50 45 52 46  string HKEY_PERF
e5a0: 4f 52 4d 41 4e 43 45 5f 44 41 54 41 20 3d 20 22  ORMANCE_DATA = "
e5b0: 48 4b 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45  HKEY_PERFORMANCE
e5c0: 5f 44 41 54 41 22 3b 0d 0a 20 20 20 20 20 20 20  _DATA";..       
e5d0: 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73       public cons
e5e0: 74 20 73 74 72 69 6e 67 20 48 4b 50 44 20 3d 20  t string HKPD = 
e5f0: 22 48 4b 50 44 22 3b 0d 0a 0d 0a 20 20 20 20 20  "HKPD";....     
e600: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e650: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e660: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e670: 45 59 5f 55 53 45 52 53 20 3d 20 22 48 4b 45 59  EY_USERS = "HKEY
e680: 5f 55 53 45 52 53 22 3b 0d 0a 20 20 20 20 20 20  _USERS";..      
e690: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e6a0: 73 74 20 73 74 72 69 6e 67 20 48 4b 55 20 3d 20  st string HKU = 
e6b0: 22 48 4b 55 22 3b 0d 0a 20 20 20 20 20 20 20 20  "HKU";..        
e6c0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
e6d0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
e6e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e720: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e730: 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65 67 69      #region Regi
e740: 73 74 72 79 48 65 6c 70 65 72 20 43 6c 61 73 73  stryHelper Class
e750: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
e760: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
e770: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  nts..        pri
e780: 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
e790: 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
e7a0: 20 3d 20 27 5c 5c 27 3b 0d 0a 0d 0a 20 20 20 20   = '\\';....    
e7b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e800: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
e810: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 63  tatic readonly c
e820: 68 61 72 5b 5d 20 4b 65 79 4e 61 6d 65 53 65 70  har[] KeyNameSep
e830: 61 72 61 74 6f 72 73 20 3d 20 7b 0d 0a 20 20 20  arators = {..   
e840: 20 20 20 20 20 20 20 20 20 4b 65 79 4e 61 6d 65           KeyName
e850: 53 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 20  Separator..     
e860: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 23     };..        #
e870: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
e880: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
e890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e8d0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e8e0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
e8f0: 69 73 74 72 79 48 65 6c 70 65 72 0d 0a 20 20 20  istryHelper..   
e900: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e910: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
e920: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
e930: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
e940: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
e950: 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 73  his is used to s
e960: 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65 73  ynchronize acces
e970: 73 20 74 6f 20 74 68 65 20 6c 69 73 74 20 6f 66  s to the list of
e980: 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 20 20 20   logged..       
e990: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
e9a0: 67 69 73 74 72 79 20 6f 70 65 72 61 74 69 6f 6e  gistry operation
e9b0: 73 20 28 6a 75 73 74 20 62 65 6c 6f 77 29 2e 0d  s (just below)..
e9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
e9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
e9e0: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
e9f0: 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
ea00: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
ea10: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ea20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
ea30: 54 45 3a 20 54 68 69 73 20 69 73 20 74 68 65 20  TE: This is the 
ea40: 6c 69 73 74 20 6f 66 20 72 65 67 69 73 74 72 79  list of registry
ea50: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
ea60: 73 20 77 68 65 6e 20 69 74 20 69 73 0d 0a 20 20  s when it is..  
ea70: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
ea80: 20 20 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 75     set to non-nu
ea90: 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
eaa0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
eab0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
eac0: 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
ead0: 6e 4c 69 73 74 20 6f 70 65 72 61 74 69 6f 6e 4c  nList operationL
eae0: 69 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ist;..          
eaf0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
eb00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
eb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
eb50: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
eb60: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53 74  region Public St
eb70: 61 74 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  atic Properties.
eb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
eb90: 76 61 74 65 20 73 74 61 74 69 63 20 4d 6f 63 6b  vate static Mock
eba0: 52 65 67 69 73 74 72 79 20 72 65 61 64 4f 6e 6c  Registry readOnl
ebb0: 79 52 65 67 69 73 74 72 79 3b 0d 0a 20 20 20 20  yRegistry;..    
ebc0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
ebd0: 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  tatic MockRegist
ebe0: 72 79 20 52 65 61 64 4f 6e 6c 79 52 65 67 69 73  ry ReadOnlyRegis
ebf0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
ec00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ec10: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
ec20: 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72   readOnlyRegistr
ec30: 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
ec40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ec50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ec60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ec90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
eca0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
ecb0: 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  atic MockRegistr
ecc0: 79 20 72 65 61 64 57 72 69 74 65 52 65 67 69 73  y readWriteRegis
ecd0: 74 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  try;..          
ece0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
ecf0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 52 65 61  MockRegistry Rea
ed00: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 0d 0a  dWriteRegistry..
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
ed20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
ed30: 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 61 64  et { return read
ed40: 57 72 69 74 65 52 65 67 69 73 74 72 79 3b 20 7d  WriteRegistry; }
ed50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ed60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
ed70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
edc0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
edd0: 20 69 6e 74 20 73 75 62 4b 65 79 73 43 72 65 61   int subKeysCrea
ede0: 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ted;..          
edf0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
ee00: 69 6e 74 20 53 75 62 4b 65 79 73 43 72 65 61 74  int SubKeysCreat
ee10: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
ee20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
ee30: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
ee40: 73 75 62 4b 65 79 73 43 72 65 61 74 65 64 3b 20  subKeysCreated; 
ee50: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
ee60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ee70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eeb0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
eec0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
eed0: 63 20 69 6e 74 20 73 75 62 4b 65 79 73 44 65 6c  c int subKeysDel
eee0: 65 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  eted;..         
eef0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
ef00: 20 69 6e 74 20 53 75 62 4b 65 79 73 44 65 6c 65   int SubKeysDele
ef10: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
ef20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ef30: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
ef40: 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65 64 3b   subKeysDeleted;
ef50: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
ef60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
ef70: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ef80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
efc0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
efd0: 69 63 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73  ic int keyValues
efe0: 52 65 61 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  Read;..         
eff0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f000: 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 52 65   int KeyValuesRe
f010: 61 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ad..            
f020: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f030: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
f040: 6b 65 79 56 61 6c 75 65 73 52 65 61 64 3b 20 7d  keyValuesRead; }
f050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f060: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
f070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f0b0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
f0c0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f0d0: 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 57 72   int keyValuesWr
f0e0: 69 74 74 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  itten;..        
f0f0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
f100: 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 57  c int KeyValuesW
f110: 72 69 74 74 65 6e 0d 0a 20 20 20 20 20 20 20 20  ritten..        
f120: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f130: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
f140: 75 72 6e 20 6b 65 79 56 61 6c 75 65 73 57 72 69  urn keyValuesWri
f150: 74 74 65 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20  tten; }..       
f160: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f170: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f1c0: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
f1d0: 20 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 56   static int keyV
f1e0: 61 6c 75 65 73 44 65 6c 65 74 65 64 3b 0d 0a 20  aluesDeleted;.. 
f1f0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
f200: 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b 65 79  c static int Key
f210: 56 61 6c 75 65 73 44 65 6c 65 74 65 64 0d 0a 20  ValuesDeleted.. 
f220: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
f240: 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79 56 61  t { return keyVa
f250: 6c 75 65 73 44 65 6c 65 74 65 64 3b 20 7d 0d 0a  luesDeleted; }..
f260: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f270: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
f280: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
f290: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f2d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
f2e0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
f2f0: 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
f300: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
f310: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f320: 20 76 6f 69 64 20 45 6e 61 62 6c 65 4f 72 44 69   void EnableOrDi
f330: 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69  sableOperationLi
f340: 73 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st(..           
f350: 20 20 20 20 20 62 6f 6f 6c 20 65 6e 61 62 6c 65       bool enable
f360: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f370: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
f380: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f390: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
f3a0: 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49  ot) /* TRANSACTI
f3b0: 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ONAL */..       
f3c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3e0: 69 66 20 28 65 6e 61 62 6c 65 29 0d 0a 20 20 20  if (enable)..   
f3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f400: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f410: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f420: 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d  operationList ==
f430: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f450: 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73      operationLis
f460: 74 20 3d 20 6e 65 77 20 52 65 67 69 73 74 72 79  t = new Registry
f470: 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 3b  OperationList();
f480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f490: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
f4b0: 65 20 69 66 20 28 6f 70 65 72 61 74 69 6f 6e 4c  e if (operationL
f4c0: 69 73 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ist != null)..  
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
f500: 72 61 74 69 6f 6e 4c 69 73 74 2e 44 69 73 70 6f  rationList.Dispo
f510: 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
f520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f530: 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 20 6e  perationList = n
f540: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
f550: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f560: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f570: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
f590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f5e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
f5f0: 69 64 20 52 65 69 6e 69 74 69 61 6c 69 7a 65 44  id ReinitializeD
f600: 65 66 61 75 6c 74 52 65 67 69 73 74 72 69 65 73  efaultRegistries
f610: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f620: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d     bool whatIf,.
f630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f640: 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20   bool safe..    
f650: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
f660: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f680: 20 28 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74   (readOnlyRegist
f690: 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6c0: 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67 69      readOnlyRegi
f6d0: 73 74 72 79 2e 44 69 73 70 6f 73 65 28 29 3b 0d  stry.Dispose();.
f6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f6f0: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67       readOnlyReg
f700: 69 73 74 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  istry = null;.. 
f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f720: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f730: 20 20 20 20 69 66 20 28 72 65 61 64 57 72 69 74      if (readWrit
f740: 65 52 65 67 69 73 74 72 79 20 21 3d 20 6e 75 6c  eRegistry != nul
f750: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
f760: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f770: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 57             readW
f780: 72 69 74 65 52 65 67 69 73 74 72 79 2e 44 69 73  riteRegistry.Dis
f790: 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  pose();..       
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f7b0: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 20 3d  dWriteRegistry =
f7c0: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
f7d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f7f0: 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20 3d 20  dOnlyRegistry = 
f800: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
f810: 28 77 68 61 74 49 66 2c 20 74 72 75 65 2c 20 73  (whatIf, true, s
f820: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
f830: 20 20 20 20 20 20 20 72 65 61 64 57 72 69 74 65         readWrite
f840: 52 65 67 69 73 74 72 79 20 3d 20 6e 65 77 20 4d  Registry = new M
f850: 6f 63 6b 52 65 67 69 73 74 72 79 28 77 68 61 74  ockRegistry(what
f860: 49 66 2c 20 66 61 6c 73 65 2c 20 73 61 66 65 29  If, false, safe)
f870: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
f880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
f8e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f8f0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
f900: 20 47 65 74 52 65 61 64 4f 6e 6c 79 52 6f 6f 74   GetReadOnlyRoot
f910: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
f920: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
f930: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
f940: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
f950: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f960: 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52       return GetR
f970: 6f 6f 74 4b 65 79 28 72 65 61 64 4f 6e 6c 79 52  ootKey(readOnlyR
f980: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
f990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
f9a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
f9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f9f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fa00: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fa10: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fa20: 65 74 52 65 61 64 57 72 69 74 65 52 6f 6f 74 4b  etReadWriteRootK
fa30: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
fa40: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
fa50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fa60: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
fa70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fa80: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52 6f      return GetRo
fa90: 6f 74 4b 65 79 28 72 65 61 64 57 72 69 74 65 52  otKey(readWriteR
faa0: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
fab0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb10: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fb20: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fb30: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fb40: 65 74 52 6f 6f 74 4b 65 79 28 0d 0a 20 20 20 20  etRootKey(..    
fb50: 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
fb60: 52 65 67 69 73 74 72 79 20 72 65 67 69 73 74 72  Registry registr
fb70: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
fb80: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
fb90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fba0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
fbb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fbc0: 20 20 20 69 66 20 28 72 65 67 69 73 74 72 79 20     if (registry 
fbd0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fbf0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
fc00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
fc10: 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
fc20: 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
fc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fc40: 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
fc50: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
fc60: 73 2e 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52  s.HKEY_CLASSES_R
fc70: 4f 4f 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  OOT) ||..       
fc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
fc90: 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
fca0: 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
fcb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fcc0: 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
fcd0: 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43  RootKeyNames.HKC
fce0: 52 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  R))..           
fcf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fd00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
fd10: 72 6e 20 72 65 67 69 73 74 72 79 2e 43 6c 61 73  rn registry.Clas
fd20: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
fd30: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
fd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
fd50: 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74  e if (MockRegist
fd60: 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
fd70: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
fd80: 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
fd90: 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
fda0: 4e 61 6d 65 73 2e 48 4b 45 59 5f 43 55 52 52 45  Names.HKEY_CURRE
fdb0: 4e 54 5f 43 4f 4e 46 49 47 29 20 7c 7c 0d 0a 20  NT_CONFIG) ||.. 
fdc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fdd0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
fde0: 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
fdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe00: 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
fe10: 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
fe20: 65 73 2e 48 4b 43 43 29 29 0d 0a 20 20 20 20 20  es.HKCC))..     
fe30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
fe40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe50: 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
fe60: 79 2e 43 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b  y.CurrentConfig;
fe70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fe80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
fe90: 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
fea0: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
feb0: 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
fec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fed0: 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
fee0: 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
fef0: 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 29  EY_CURRENT_USER)
ff00: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
ff10: 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
ff20: 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
ff30: 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
ff40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
ff50: 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
ff60: 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 55 29 29 0d  KeyNames.HKCU)).
ff70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ff80: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ff90: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
ffa0: 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55  egistry.CurrentU
ffb0: 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ser;..          
ffc0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
ffd0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
ffe0: 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
fff0: 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
10000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10010 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
10020 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
10030 73 2e 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 29  s.HKEY_DYN_DATA)
10040 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
10050 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10060 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
10070 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
10080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
10090 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
100a0 4b 65 79 4e 61 6d 65 73 2e 48 4b 44 44 29 29 0d  KeyNames.HKDD)).
100b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
100c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
100d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
100e0 65 67 69 73 74 72 79 2e 44 79 6e 44 61 74 61 3b  egistry.DynData;
100f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10100 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10110 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
10120 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
10130 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
10140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10150 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
10160 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
10170 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45  EY_LOCAL_MACHINE
10180 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
10190 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
101a0 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
101b0 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
101c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
101d0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
101e0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 4c 4d 29 29  tKeyNames.HKLM))
101f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10200 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10210 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10220 72 65 67 69 73 74 72 79 2e 4c 6f 63 61 6c 4d 61  registry.LocalMa
10230 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20  chine;..        
10240 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10250 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
10260 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79  if (MockRegistry
10270 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10290 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
102a0 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
102b0 6d 65 73 2e 48 4b 45 59 5f 50 45 52 46 4f 52 4d  mes.HKEY_PERFORM
102c0 41 4e 43 45 5f 44 41 54 41 29 20 7c 7c 0d 0a 20  ANCE_DATA) ||.. 
102d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
102e0 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
102f0 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
10300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10310 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
10320 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
10330 65 73 2e 48 4b 50 44 29 29 0d 0a 20 20 20 20 20  es.HKPD))..     
10340 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10360 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
10370 79 2e 50 65 72 66 6f 72 6d 61 6e 63 65 44 61 74  y.PerformanceDat
10380 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  a;..            
10390 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
103a0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
103b0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
103c0 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20  NameEquals(..   
103d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
103e0 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73       name, Regis
103f0 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e  tryRootKeyNames.
10400 48 4b 45 59 5f 55 53 45 52 53 29 20 7c 7c 0d 0a  HKEY_USERS) ||..
10410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10420 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
10430 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10450 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
10460 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
10470 6d 65 73 2e 48 4b 55 29 29 0d 0a 20 20 20 20 20  mes.HKU))..     
10480 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104a0 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
104b0 79 2e 55 73 65 72 73 3b 0d 0a 20 20 20 20 20 20  y.Users;..      
104c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
104e0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
104f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10500 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
10510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10550 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
10560 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
10570 67 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d  g JoinKeyNames(.
10580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10590 20 70 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d   params string[]
105a0 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
105b0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
105c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
105d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 6e            if ((n
105e0 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
105f0 20 28 6e 61 6d 65 73 2e 4c 65 6e 67 74 68 20 3d   (names.Length =
10600 3d 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  = 0))..         
10610 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
10620 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
10630 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
10640 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72  gBuilder builder
10650 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69   = new StringBui
10660 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lder();....     
10670 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
10680 63 68 20 28 73 74 72 69 6e 67 20 6e 61 6d 65 20  ch (string name 
10690 69 6e 20 6e 61 6d 65 73 29 0d 0a 20 20 20 20 20  in names)..     
106a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
106b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
106c0 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
106d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
106e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
106f0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
10700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
10710 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 3d 20 6e  ring newName = n
10720 61 6d 65 2e 54 72 69 6d 28 4b 65 79 4e 61 6d 65  ame.Trim(KeyName
10730 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20  Separator);.... 
10740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10750 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
10760 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6e 65 77 4e  NullOrEmpty(newN
10770 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
10780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10790 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
107a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107b0 69 66 20 28 62 75 69 6c 64 65 72 2e 4c 65 6e 67  if (builder.Leng
107c0 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
107d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
107e0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
107f0 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
10800 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
10810 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
10820 72 2e 41 70 70 65 6e 64 28 6e 65 77 4e 61 6d 65  r.Append(newName
10830 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10840 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10850 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10860 62 75 69 6c 64 65 72 2e 54 6f 53 74 72 69 6e 67  builder.ToString
10870 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
10880 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10890 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108d0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
108e0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
108f0 69 63 20 73 74 72 69 6e 67 20 4a 6f 69 6e 4b 65  ic string JoinKe
10900 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  yNames(..       
10910 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10920 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
10930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10940 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d 20 6e  arams string[] n
10950 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
10960 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
10970 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10980 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72          string r
10990 65 73 75 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79 4e  esult = JoinKeyN
109a0 61 6d 65 73 28 6e 61 6d 65 73 29 3b 0d 0a 0d 0a  ames(names);....
109b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
109c0 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
109d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
109e0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 4a        result = J
109f0 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79 2e  oinKeyNames(key.
10a00 4e 61 6d 65 2c 20 72 65 73 75 6c 74 29 3b 0d 0a  Name, result);..
10a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10a20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
10a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10a40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
10a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
10aa0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
10ab0 73 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 4b 65  string[] SplitKe
10ac0 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
10ad0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6b          string k
10ae0 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  eyName..        
10af0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10b00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10b10 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
10b20 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
10b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b40 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
10b50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10b60 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 4e 61      return keyNa
10b70 6d 65 2e 53 70 6c 69 74 28 0d 0a 20 20 20 20 20  me.Split(..     
10b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b                 K
10b90 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73  eyNameSeparators
10ba0 2c 20 53 74 72 69 6e 67 53 70 6c 69 74 4f 70 74  , StringSplitOpt
10bb0 69 6f 6e 73 2e 52 65 6d 6f 76 65 45 6d 70 74 79  ions.RemoveEmpty
10bc0 45 6e 74 72 69 65 73 29 3b 0d 0a 20 20 20 20 20  Entries);..     
10bd0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10be0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10c30 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
10c40 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
10c50 4c 61 73 74 53 75 62 4b 65 79 4e 61 6d 65 28 0d  LastSubKeyName(.
10c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c70 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 0d   string keyName.
10c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10c90 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
10ca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10cb0 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 4b     string[] subK
10cc0 65 79 4e 61 6d 65 73 20 3d 20 53 70 6c 69 74 4b  eyNames = SplitK
10cd0 65 79 4e 61 6d 65 28 6b 65 79 4e 61 6d 65 29 3b  eyName(keyName);
10ce0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10cf0 20 20 20 20 69 66 20 28 28 73 75 62 4b 65 79 4e      if ((subKeyN
10d00 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
10d10 20 28 73 75 62 4b 65 79 4e 61 6d 65 73 2e 4c 65   (subKeyNames.Le
10d20 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a 20 20 20  ngth == 0))..   
10d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d40 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
10d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10d60 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e 61   return subKeyNa
10d70 6d 65 73 5b 73 75 62 4b 65 79 4e 61 6d 65 73 2e  mes[subKeyNames.
10d80 4c 65 6e 67 74 68 20 2d 20 31 5d 3b 0d 0a 20 20  Length - 1];..  
10d90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10da0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
10db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
10e00 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
10e10 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
10e20 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
10e30 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
10e40 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  tic MockRegistry
10e50 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d  Key OpenSubKey(.
10e60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e70 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
10e80 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20   rootKey,..     
10e90 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
10ea0 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
10eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
10ec0 6f 6f 6c 20 77 72 69 74 61 62 6c 65 2c 0d 0a 20  ool writable,.. 
10ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
10ee0 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
10ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
10f00 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20  l verbose..     
10f10 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
10f20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10f30 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10f40 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
10f50 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f70 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
10f80 41 6e 64 54 72 61 63 65 28 77 72 69 74 61 62 6c  AndTrace(writabl
10f90 65 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e ?..           
10fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
10fb0 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
10fc0 73 74 20 3a 20 54 72 61 63 65 50 72 69 6f 72 69  st : TracePriori
10fd0 74 79 2e 48 69 67 68 65 72 2c 0d 0a 20 20 20 20  ty.Higher,..    
10fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10ff0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
11000 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
11010 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
11020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11030 20 20 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b            "rootK
11040 65 79 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79  ey = {0}, subKey
11050 4e 61 6d 65 20 3d 20 7b 31 7d 2c 20 77 72 69 74  Name = {1}, writ
11060 61 62 6c 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20  able = {2}",..  
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11080 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
11090 28 72 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69  (rootKey), ForDi
110a0 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65  splay(subKeyName
110b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
110c0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
110d0 69 73 70 6c 61 79 28 77 72 69 74 61 62 6c 65 29  isplay(writable)
110e0 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
110f0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
11100 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
11110 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
11120 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11140 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11150 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11160 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11170 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11180 41 6c 77 61 79 73 20 66 6f 72 62 69 64 20 77 72  Always forbid wr
11190 69 74 61 62 6c 65 20 61 63 63 65 73 73 20 77 68  itable access wh
111a0 65 6e 20 6f 70 65 72 61 74 69 6e 67 20 69 6e 0d  en operating in.
111b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
111c0 20 2f 2f 20 20 20 20 20 20 20 22 77 68 61 74 2d   //       "what-
111d0 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  if" mode...     
111e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
111f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
11200 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b  ockRegistryKey k
11210 65 79 20 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65  ey = rootKey.Ope
11220 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
11230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
11240 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
11250 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
11260 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
11270 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11280 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  (key != null) ?.
11290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
112a0 20 20 20 20 20 6e 65 77 20 4d 6f 63 6b 52 65 67       new MockReg
112b0 69 73 74 72 79 4b 65 79 28 6b 65 79 2c 20 77 68  istryKey(key, wh
112c0 61 74 49 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c  atIf, false, fal
112d0 73 65 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  se) : null;..   
112e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
112f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
11300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11340 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65  .            [Me
11350 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49  thodImpl(MethodI
11360 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c  mplOptions.NoInl
11370 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20  ining)]..       
11380 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
11390 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
113a0 65 79 20 43 72 65 61 74 65 53 75 62 4b 65 79 28  ey CreateSubKey(
113b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
113c0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
113d0 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20  y rootKey,..    
113e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
113f0 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11410 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
11420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
11430 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20  ol verbose..    
11440 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
11450 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
11470 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20   (verbose)..    
11480 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114a0 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
114b0 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
114c0 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c  riority.Highest,
114d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
114e0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
114f0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
11500 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
11510 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
11520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11530 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c 20  "rootKey = {0}, 
11540 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31 7d  subKeyName = {1}
11550 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
11560 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
11570 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29 2c  isplay(rootKey),
11580 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62 4b   ForDisplay(subK
11590 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20  eyName)),..     
115a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115b0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
115c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
115d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
115e0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
115f0 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
11600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11610 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11630 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11640 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11660 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11670 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11680 41 6c 77 61 79 73 20 6f 70 65 6e 20 61 20 6b 65  Always open a ke
11690 79 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 63  y, rather than c
116a0 72 65 61 74 69 6e 67 20 6f 6e 65 20 77 68 65 6e  reating one when
116b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
116d0 70 65 72 61 74 69 6e 67 20 69 6e 20 22 77 68 61  perating in "wha
116e0 74 2d 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20  t-if" mode...   
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11700 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
11710 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
11720 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
11730 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11750 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11770 20 2f 2f 20 48 41 43 4b 3a 20 41 74 74 65 6d 70   // HACK: Attemp
11780 74 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 73 70  t to open the sp
11790 65 63 69 66 69 65 64 20 73 75 62 2d 6b 65 79 2e  ecified sub-key.
117a0 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20    If..          
117b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
117c0 20 20 20 20 20 20 20 74 68 69 73 20 66 61 69 6c         this fail
117d0 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
117e0 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 6f  y return the roo
117f0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
11800 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
11810 20 20 20 20 6b 65 79 20 69 74 73 65 6c 66 20 73      key itself s
11820 69 6e 63 65 20 6e 6f 20 77 72 69 74 65 73 20 61  ince no writes a
11830 72 65 20 61 6c 6c 6f 77 65 64 20 69 6e 0d 0a 20  re allowed in.. 
11840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11850 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11860 22 77 68 61 74 2d 69 66 22 20 6d 6f 64 65 20 61  "what-if" mode a
11870 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
11880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11890 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
118a0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
118b0 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 20  RegistryKey key 
118c0 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53 75  = rootKey.OpenSu
118d0 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
118e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
118f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11900 75 72 6e 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c  urn (key != null
11910 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11930 20 6b 65 79 20 3a 20 6e 65 77 20 4d 6f 63 6b 52   key : new MockR
11940 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
11950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11960 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f               roo
11970 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  tKey, subKeyName
11980 2c 20 77 68 61 74 49 66 2c 20 66 61 6c 73 65 2c  , whatIf, false,
11990 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
119b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
119c0 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
119d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
119e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
119f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11a00 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
11a10 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a30 20 20 20 72 6f 6f 74 4b 65 79 2e 43 72 65 61 74     rootKey.Creat
11a40 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  eSubKey(subKeyNa
11a50 6d 65 29 2c 20 77 68 61 74 49 66 2c 20 66 61 6c  me), whatIf, fal
11a60 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
11a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a80 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11ab0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11ac0 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
11ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11af0 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
11b00 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
11b10 61 6d 65 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20  ame(), rootKey, 
11b20 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a  subKeyName);....
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b40 20 20 20 20 73 75 62 4b 65 79 73 43 72 65 61 74      subKeysCreat
11b50 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed++;..         
11b60 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11b70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11b80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11bd0 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
11be0 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
11bf0 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
11c00 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
11c10 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
11c20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b 65  void DeleteSubKe
11c30 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
11c40 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
11c50 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20  Key rootKey,..  
11c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11c70 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
11c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11c90 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
11ca0 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  ssing,..        
11cb0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
11cc0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
11cd0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
11ce0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
11cf0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
11d00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d10 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
11d20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
11d30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11d40 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
11d50 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
11d60 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
11d70 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
11d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d90 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
11da0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
11db0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
11dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11dd0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
11de0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
11df0 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
11e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e10 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
11e20 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
11e30 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
11e40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
11e50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
11e60 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
11e70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
11e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e90 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
11ea0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
11eb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11ec0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
11ed0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
11ee0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
11ef0 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
11f00 44 65 6c 65 74 65 53 75 62 4b 65 79 28 73 75 62  DeleteSubKey(sub
11f10 4b 65 79 4e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e  KeyName, throwOn
11f20 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  Missing);....   
11f30 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 79               May
11f40 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47  beLogOperation(G
11f50 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20  etMethodName(), 
11f60 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e  rootKey, subKeyN
11f70 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
11f80 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 73           subKeys
11f90 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20  Deleted++;..    
11fa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
11fb0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12000 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
12010 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
12020 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
12030 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
12040 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12050 63 20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62  c void DeleteSub
12060 4b 65 79 54 72 65 65 28 0d 0a 20 20 20 20 20 20  KeyTree(..      
12070 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
12080 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
12090 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
120a0 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
120b0 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
120c0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
120d0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
120e0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
120f0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12100 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
12110 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12120 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
12130 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
12140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12150 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
12160 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
12170 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
12180 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
12190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121a0 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
121b0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
121c0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
121d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
121e0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
121f0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
12200 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
12210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12220 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
12230 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
12240 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
12250 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12260 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
12270 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
12280 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
122a0 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
122b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
122c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
122d0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
122e0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
122f0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
12300 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
12310 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
12320 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d  (subKeyName);...
12330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12340 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69   MaybeLogOperati
12350 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  on(GetMethodName
12360 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62  (), rootKey, sub
12370 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  KeyName);....   
12380 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
12390 4b 65 79 73 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a  KeysDeleted++;..
123a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
123b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
123c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12410 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
12420 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
12430 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
12440 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
12450 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  tatic string[] G
12460 65 74 53 75 62 4b 65 79 4e 61 6d 65 73 28 0d 0a  etSubKeyNames(..
12470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12480 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
12490 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  key,..          
124a0 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
124b0 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
124c0 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65      bool verbose
124d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
124e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
124f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12500 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29      if (verbose)
12510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12520 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12530 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
12540 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
12550 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
12560 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gh,..           
12570 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
12580 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
12590 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
125a0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
125b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
125c0 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 22 2c 20     "key = {0}", 
125d0 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29 29  ForDisplay(key))
125e0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
125f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
12600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
12610 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
12620 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12640 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
12650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12660 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62 4b  turn key.GetSubK
12670 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20  eyNames();..    
12680 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12690 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
126a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
126d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
126e0 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
126f0 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
12700 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
12710 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
12720 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12730 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61 6c 75  c object GetValu
12740 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
12750 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
12760 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
12770 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12780 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
12790 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 64          object d
127a0 65 66 61 75 6c 74 56 61 6c 75 65 2c 0d 0a 20 20  efaultValue,..  
127b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
127c0 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20  ol whatIf,..    
127d0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
127e0 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20   verbose..      
127f0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
12800 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
12810 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
12820 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20  verbose)..      
12830 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12850 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
12860 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
12870 6f 72 69 74 79 2e 48 69 67 68 2c 0d 0a 20 20 20  ority.High,..   
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
128a0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
128b0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
128c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
128d0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
128e0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
128f0 7d 2c 20 64 65 66 61 75 6c 74 56 61 6c 75 65 20  }, defaultValue 
12900 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  = {2}",..       
12910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12920 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29   ForDisplay(key)
12930 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 61 6d  , ForDisplay(nam
12940 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12950 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
12960 44 69 73 70 6c 61 79 28 64 65 66 61 75 6c 74 56  Display(defaultV
12970 61 6c 75 65 29 29 2c 20 74 72 61 63 65 43 61 74  alue)), traceCat
12980 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
12990 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
129a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
129b0 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
129c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
129d0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
129e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
129f0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
12a00 20 3d 20 6b 65 79 2e 47 65 74 56 61 6c 75 65 28   = key.GetValue(
12a10 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 56 61 6c  name, defaultVal
12a20 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
12a30 20 20 20 20 20 20 20 20 6b 65 79 56 61 6c 75 65          keyValue
12a40 73 52 65 61 64 2b 2b 3b 0d 0a 0d 0a 20 20 20 20  sRead++;....    
12a50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12a60 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
12a70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12a80 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12ad0 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
12ae0 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
12af0 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
12b00 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
12b10 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
12b20 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
12b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12b40 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12b50 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
12b60 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
12b70 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
12b80 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
12b90 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
12ba0 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
12bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12bc0 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
12bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12be0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12bf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12c00 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a    if (verbose)..
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12c30 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
12c40 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
12c50 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
12c60 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  est,..          
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
12c80 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
12c90 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
12ca0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
12cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12cc0 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20      "key = {0}, 
12cd0 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20 76 61 6c 75  name = {1}, valu
12ce0 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  e = {2}",..     
12cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d00 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65     ForDisplay(ke
12d10 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  y), ForDisplay(n
12d20 61 6d 65 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame), ForDisplay
12d30 28 76 61 6c 75 65 29 29 2c 0d 0a 20 20 20 20 20  (value)),..     
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d50 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
12d60 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12d70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12d80 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
12d90 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12db0 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
12dc0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
12dd0 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
12de0 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
12df0 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 76  SetValue(name, v
12e00 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
12e10 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c            MaybeL
12e20 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74 4d  ogOperation(GetM
12e30 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 6b 65 79  ethodName(), key
12e40 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  , name, value);.
12e50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12e60 20 20 20 6b 65 79 56 61 6c 75 65 73 57 72 69 74     keyValuesWrit
12e70 74 65 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ten++;..        
12e80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12e90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
12ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12ed0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
12ee0 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
12ef0 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
12f00 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
12f10 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
12f20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
12f30 69 64 20 44 65 6c 65 74 65 56 61 6c 75 65 28 0d  id DeleteValue(.
12f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12f50 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12f60 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
12f70 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
12f80 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
12f90 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
12fa0 6e 4d 69 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20  nMissing,..     
12fb0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
12fc0 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
12fd0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65           bool ve
12fe0 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20  rbose..         
12ff0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13000 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13010 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72           if (ver
13020 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bose)..         
13030 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
13050 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
13060 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
13070 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20  ty.Highest,..   
13080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13090 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
130a0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
130b0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
130c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
130d0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
130e0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
130f0 7d 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6b  }", ForDisplay(k
13100 65 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ey),..          
13110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
13120 72 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 29 2c  rDisplay(name)),
13130 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13140 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13150 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13160 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
13170 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13190 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
131a0 20 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61          if (!wha
131b0 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
131c0 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65            key.De
131d0 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65 2c 20  leteValue(name, 
131e0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b  throwOnMissing);
131f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13200 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
13210 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
13220 61 6d 65 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65  ame(), key, name
13230 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
13240 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 56              keyV
13250 61 6c 75 65 73 44 65 6c 65 74 65 64 2b 2b 3b 0d  aluesDeleted++;.
13260 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
13280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
132d0 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
132e0 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
132f0 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
13300 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
13310 73 74 61 74 69 63 20 69 6e 74 20 57 72 69 74 65  static int Write
13320 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 0d 0a  OperationList(..
13330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13340 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
13350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13360 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
13370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13380 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
13390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
133a0 20 20 69 6e 74 20 63 6f 75 6e 74 20 3d 20 30 3b    int count = 0;
133b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
133c0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
133d0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
133e0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
133f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13410 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20  if (verbose)..  
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13430 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
13450 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
13460 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
13470 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20  y.Highest,..    
13480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13490 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
134a0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
134b0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
134c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134d0 20 20 20 22 52 65 67 69 73 74 72 79 20 6f 70 65     "Registry ope
134e0 72 61 74 69 6f 6e 20 6c 6f 67 20 66 69 6c 65 20  ration log file 
134f0 6e 61 6d 65 20 6e 6f 74 20 73 65 74 2e 22 2c 0d  name not set.",.
13500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13510 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
13520 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
13530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13540 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13550 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13560 6e 20 63 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  n count;..      
13570 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13590 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f  ock (syncRoot) /
135a0 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20  * TRANSACTIONAL 
135b0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
135c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
135d0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
135e0 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20  perationList == 
135f0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13600 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13620 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
13630 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
13640 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13670 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
13680 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
13690 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
136a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136b0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
136c0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
136d0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136f0 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73 74           "Regist
13700 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73  ry operation lis
13710 74 20 69 73 20 69 6e 76 61 6c 69 64 2e 22 2c 0d  t is invalid.",.
13720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13740 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13760 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13780 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
13790 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  unt;..          
137a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
137b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137c0 20 20 20 75 73 69 6e 67 20 28 53 74 72 65 61 6d     using (Stream
137d0 57 72 69 74 65 72 20 73 74 72 65 61 6d 57 72 69  Writer streamWri
137e0 74 65 72 20 3d 20 6e 65 77 20 53 74 72 65 61 6d  ter = new Stream
137f0 57 72 69 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Writer(..       
13800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13810 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 0d       fileName)).
13820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13830 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13850 66 6f 72 65 61 63 68 20 28 52 65 67 69 73 74 72  foreach (Registr
13860 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61  yOperation opera
13870 74 69 6f 6e 20 69 6e 20 6f 70 65 72 61 74 69 6f  tion in operatio
13880 6e 4c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20  nList)..        
13890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
138b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
138c0 66 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20  f (operation == 
138d0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
138e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138f0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
13900 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13920 73 74 72 65 61 6d 57 72 69 74 65 72 2e 57 72 69  streamWriter.Wri
13930 74 65 4c 69 6e 65 28 6f 70 65 72 61 74 69 6f 6e  teLine(operation
13940 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13960 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74             count
13970 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
139a0 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d            stream
139b0 57 72 69 74 65 72 2e 46 6c 75 73 68 28 29 3b 0d  Writer.Flush();.
139c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
139d0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
139e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13a00 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
13a10 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a30 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
13a40 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
13a50 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d  iority.Highest,.
13a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a70 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
13a80 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
13a90 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
13aa0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13ac0 57 72 6f 74 65 20 7b 30 7d 20 72 65 67 69 73 74  Wrote {0} regist
13ad0 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f  ry operations to
13ae0 20 69 74 73 20 6c 6f 67 20 66 69 6c 65 2e 22 2c   its log file.",
13af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13b00 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 29            count)
13b10 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
13b20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13b30 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13b40 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
13b50 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
13b60 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13b70 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
13be0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
13bf0 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
13c00 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
13c10 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
13c20 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
13c30 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
13c40 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
13c50 63 20 73 74 72 69 6e 67 20 47 65 74 4d 65 74 68  c string GetMeth
13c60 6f 64 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  odName()..      
13c70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13c80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13c90 54 72 61 63 65 4f 70 73 2e 47 65 74 4d 65 74 68  TraceOps.GetMeth
13ca0 6f 64 4e 61 6d 65 28 6e 75 6c 6c 2c 20 31 29 3b  odName(null, 1);
13cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13cc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
13cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
13d20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
13d30 20 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70   void MaybeLogOp
13d40 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
13d50 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13d60 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20   methodName,..  
13d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
13d80 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
13d90 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
13da0 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
13db0 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  yName..         
13dc0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13dd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13de0 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f           MaybeLo
13df0 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74 68 6f  gOperation(metho
13e00 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 73 75 62 4b  dName, key, subK
13e10 65 79 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e 75  eyName, null, nu
13e20 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
13e30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13e40 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e80 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13e90 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
13ea0 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62 65 4c  atic void MaybeL
13eb0 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20  ogOperation(..  
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
13ed0 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 2c  ring methodName,
13ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13ef0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
13f00 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
13f10 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
13f20 61 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  alueName,..     
13f30 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
13f40 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  t value..       
13f50 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
13f60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13f70 20 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65             Maybe
13f80 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74  LogOperation(met
13f90 68 6f 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 6e 75  hodName, key, nu
13fa0 6c 6c 2c 20 76 61 6c 75 65 4e 61 6d 65 2c 20 76  ll, valueName, v
13fb0 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
13fc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13fd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14010 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14020 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14030 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
14040 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a  eLogOperation(..
14050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14060 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d  string methodNam
14070 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
14080 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
14090 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
140a0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
140b0 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20   subKeyName,..  
140c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
140d0 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d  ring valueName,.
140e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
140f0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
14100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
14110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
14120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14130 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
14140 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
14150 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
14160 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14170 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14180 28 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d  (operationList =
14190 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
141a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141b0 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
141c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141d0 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 2e 41 64  operationList.Ad
141e0 64 28 6e 65 77 20 52 65 67 69 73 74 72 79 4f 70  d(new RegistryOp
141f0 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
14200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14210 20 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 20 6b 65    methodName, ke
14220 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 76  y, subKeyName, v
14230 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29  alueName, value)
14240 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14250 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14260 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14270 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
14280 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14290 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
142a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
142b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
142e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
142f0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
14300 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  n RegistryOperat
14310 69 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20  ionList Class.. 
14320 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a         [Serializ
14330 61 62 6c 65 28 29 5d 0d 0a 20 20 20 20 20 20 20  able()]..       
14340 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
14350 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 4f 70  class RegistryOp
14360 65 72 61 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a 20  erationList :.. 
14370 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c             List<
14380 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
14390 6e 3e 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  n>, IDisposable.
143a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
143b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
143c0 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
143d0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
143e0 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72 79   public Registry
143f0 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 0d  OperationList().
14400 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
14410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14420 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
14430 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14440 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
14450 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14460 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
144b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
144c0 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
144d0 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
144e0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
144f0 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
14500 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
14510 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63  rivate void Chec
14520 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74  kDisposed() /* t
14530 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
14540 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14550 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
14560 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
14570 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14580 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
14590 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
145a0 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
145b0 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
145c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
145d0 79 70 65 6f 66 28 52 65 67 69 73 74 72 79 4f 70  ypeof(RegistryOp
145e0 65 72 61 74 69 6f 6e 4c 69 73 74 29 2e 4e 61 6d  erationList).Nam
145f0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
14600 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
14610 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14660 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20       private /* 
14670 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
14680 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73  l */ void Dispos
14690 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
146a0 20 20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69      bool disposi
146b0 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
146c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
146d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
146e0 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
146f0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
14700 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14710 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14720 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
14730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14750 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14790 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
147a0 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
147b0 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
147c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147d0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
147e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
147f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14810 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
14820 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69  (RegistryOperati
14830 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20  on operation in 
14840 74 68 69 73 29 0d 0a 20 20 20 20 20 20 20 20 20  this)..         
14850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14880 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e   (operation == n
14890 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
148a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148b0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
148c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
148e0 70 65 72 61 74 69 6f 6e 2e 44 69 73 70 6f 73 65  peration.Dispose
148f0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
14900 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14920 20 20 20 20 20 20 20 20 20 20 43 6c 65 61 72 28            Clear(
14930 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14940 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14960 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14980 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
149a0 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
149b0 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
149c0 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
149d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
149e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14a00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14a10 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14a30 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a  / NOTE: This obj
14a40 65 63 74 20 69 73 20 6e 6f 77 20 64 69 73 70 6f  ect is now dispo
14a50 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  sed...          
14a60 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a80 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
14a90 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
14aa0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14ab0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14ac0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14b20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
14b30 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
14b40 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
14b50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14b60 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
14b70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69                Di
14b90 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43                GC
14bb0 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
14bc0 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
14bd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14be0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14bf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
14c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14c40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
14c50 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
14c60 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ctor..          
14c70 20 20 7e 52 65 67 69 73 74 72 79 4f 70 65 72 61    ~RegistryOpera
14c80 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20  tionList()..    
14c90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14ca0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
14cb0 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
14cc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14cd0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
14ce0 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
14cf0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
14d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14d50 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
14d60 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 79 4f  region RegistryO
14d70 70 65 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a  peration Class..
14d80 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14d90 73 65 61 6c 65 64 20 63 6c 61 73 73 20 52 65 67  sealed class Reg
14da0 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 0d 0a  istryOperation..
14db0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14dc0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
14dd0 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
14de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
14df0 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72  ivate const char
14e00 20 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 20   FieldDelimiter 
14e10 3d 20 27 5c 74 27 3b 0d 0a 20 20 20 20 20 20 20  = '\t';..       
14e20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14e30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
14e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e80 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
14e90 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
14ea0 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
14eb0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
14ec0 63 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  c RegistryOperat
14ed0 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ion(..          
14ee0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 74        string met
14ef0 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  hodName,..      
14f00 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
14f10 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
14f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14f30 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d  string subKeyNam
14f40 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
14f50 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
14f60 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
14f70 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
14f80 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
14f90 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
14fa0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14fb0 20 20 20 20 20 20 20 74 68 69 73 2e 6d 65 74 68         this.meth
14fc0 6f 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e  odName = methodN
14fd0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
14fe0 20 20 20 20 20 20 74 68 69 73 2e 73 75 62 4b 65        this.subKe
14ff0 79 4e 61 6d 65 20 3d 20 73 75 62 4b 65 79 4e 61  yName = subKeyNa
15000 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
15010 20 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 4e       this.valueN
15020 61 6d 65 20 3d 20 76 61 6c 75 65 4e 61 6d 65 3b  ame = valueName;
15030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15040 20 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 76    this.value = v
15050 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alue;....       
15060 20 20 20 20 20 20 20 20 20 53 65 74 4b 65 79 28           SetKey(
15070 6b 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  key);..         
15080 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15090 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
150a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
150b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
150e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
150f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
15100 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
15110 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
15120 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
15130 20 53 65 74 4b 65 79 28 0d 0a 20 20 20 20 20 20   SetKey(..      
15140 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
15150 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
15160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
15170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
15180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15190 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c   if (key != null
151a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
151b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
151c0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
151d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151e0 20 20 2f 2f 20 4e 4f 54 45 3a 20 4d 61 6b 65 20    // NOTE: Make 
151f0 73 75 72 65 20 74 68 69 73 20 63 6f 70 79 20 6f  sure this copy o
15200 66 20 74 68 65 20 72 6f 6f 74 20 72 65 67 69 73  f the root regis
15210 74 72 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20  try key..       
15220 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15230 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20        cannot be 
15240 75 73 65 64 20 74 6f 20 61 63 63 69 64 65 6e 74  used to accident
15250 61 6c 6c 79 20 6d 61 6b 65 20 72 65 67 69 73 74  ally make regist
15260 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
15270 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
15280 20 63 68 61 6e 67 65 73 2e 20 20 41 6c 73 6f 2c   changes.  Also,
15290 20 70 72 65 76 65 6e 74 20 74 68 69 73 20 4d 6f   prevent this Mo
152a0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 0d 0a 20  ckRegistryKey.. 
152b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
152c0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 62 6a 65     //       obje
152d0 63 74 20 66 72 6f 6d 20 63 6c 6f 73 69 6e 67 20  ct from closing 
152e0 69 74 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 72  its underlying r
152f0 65 67 69 73 74 72 79 0d 0a 20 20 20 20 20 20 20  egistry..       
15300 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15310 20 20 20 20 20 20 6b 65 79 20 61 73 20 77 65 20        key as we 
15320 77 69 6c 6c 20 6e 65 65 64 20 69 74 20 6c 61 74  will need it lat
15330 65 72 2e 20 20 54 68 69 73 20 69 6e 73 74 61 6e  er.  This instan
15340 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
15350 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
15360 20 77 69 6c 6c 20 63 6c 6f 73 65 20 69 74 2e 0d   will close it..
15370 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15380 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
15390 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
153a0 73 2e 6b 65 79 20 3d 20 6e 65 77 20 4d 6f 63 6b  s.key = new Mock
153b0 52 65 67 69 73 74 72 79 4b 65 79 28 6b 65 79 2c  RegistryKey(key,
153c0 20 74 72 75 65 2c 20 74 72 75 65 2c 20 74 72 75   true, true, tru
153d0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
153e0 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44             key.D
153f0 69 73 61 62 6c 65 43 6c 6f 73 65 28 29 3b 0d 0a  isableClose();..
15400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15410 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
15420 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
15430 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15450 74 68 69 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c 3b  this.key = null;
15460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15470 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
15480 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15490 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
154a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
154b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
154e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
154f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
15500 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
15510 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
15520 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
15530 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a  ng methodName;..
15540 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
15550 69 63 20 73 74 72 69 6e 67 20 4d 65 74 68 6f 64  ic string Method
15560 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
15570 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15580 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
15590 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
155a0 72 6e 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 20 7d  rn methodName; }
155b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
155c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
155d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
155f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15610 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
15620 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65    private MockRe
15630 67 69 73 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a  gistryKey key;..
15640 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
15650 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
15660 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20 20 20  ey Key..        
15670 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15680 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
15690 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
156a0 74 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20  turn key; }..   
156b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
156c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15710 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
15720 76 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b  vate string subK
15730 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  eyName;..       
15740 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
15750 6e 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20  ng SubKeyName.. 
15760 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
15780 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
15790 64 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b  d(); return subK
157a0 65 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20  eyName; }..     
157b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
157c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
157d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15810 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
15820 74 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e  te string valueN
15830 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
15840 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
15850 56 61 6c 75 65 4e 61 6d 65 0d 0a 20 20 20 20 20  ValueName..     
15860 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15870 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
15880 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
15890 20 72 65 74 75 72 6e 20 76 61 6c 75 65 4e 61 6d   return valueNam
158a0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
158b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
158c0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
158d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15900 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15910 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62        private ob
15920 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
15930 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
15940 6f 62 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20  object Value..  
15950 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15960 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
15970 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
15980 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65  (); return value
15990 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
159a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
159b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
159c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
15a20 67 69 6f 6e 20 53 79 73 74 65 6d 2e 4f 62 6a 65  gion System.Obje
15a30 63 74 20 4f 76 65 72 72 69 64 65 73 0d 0a 20 20  ct Overrides..  
15a40 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
15a50 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 45   override bool E
15a60 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
15a70 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f          object o
15a80 62 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  bj..            
15a90 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
15aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15ab0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
15ac0 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
15ad0 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
15ae0 72 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72  ryOperation oper
15af0 61 74 69 6f 6e 20 3d 20 6f 62 6a 20 61 73 20 52  ation = obj as R
15b00 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e  egistryOperation
15b10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15b20 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74 69       if (operati
15b30 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
15b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b50 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
15b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15b70 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 45 71    if (!String.Eq
15b80 75 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e 2e 6d  uals(operation.m
15b90 65 74 68 6f 64 4e 61 6d 65 2c 20 6d 65 74 68 6f  ethodName, metho
15ba0 64 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  dName))..       
15bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15bc0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
15bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15be0 20 28 21 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b   (!MockRegistryK
15bf0 65 79 2e 45 71 75 61 6c 73 28 6f 70 65 72 61 74  ey.Equals(operat
15c00 69 6f 6e 2e 6b 65 79 2c 20 6b 65 79 29 29 0d 0a  ion.key, key))..
15c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15c20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
15c30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15c40 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52 65       if (!MockRe
15c50 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
15c60 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
15c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
15c80 70 65 72 61 74 69 6f 6e 2e 73 75 62 4b 65 79 4e  peration.subKeyN
15c90 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29  ame, subKeyName)
15ca0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15cb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15cc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15cd0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
15ce0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
15cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15d00 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73   (!String.Equals
15d10 28 6f 70 65 72 61 74 69 6f 6e 2e 76 61 6c 75 65  (operation.value
15d20 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65 29  Name, valueName)
15d30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15d40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
15d50 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
15d60 20 20 20 20 20 20 20 20 69 66 20 28 21 4d 6f 63          if (!Moc
15d70 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61 6c  kRegistryKey.Val
15d80 75 65 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69  ueEquals(operati
15d90 6f 6e 2e 76 61 6c 75 65 2c 20 76 61 6c 75 65 29  on.value, value)
15da0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15db0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
15dc0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
15dd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
15de0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
15df0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15e00 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15e40 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15e50 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
15e60 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61 73  rride int GetHas
15e70 68 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20 20  hCode()..       
15e80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
15e90 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
15ea0 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
15eb0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
15ec0 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20  result = 0;.... 
15ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
15ee0 66 20 28 6d 65 74 68 6f 64 4e 61 6d 65 20 21 3d  f (methodName !=
15ef0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
15f00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
15f10 6c 74 20 5e 3d 20 6d 65 74 68 6f 64 4e 61 6d 65  lt ^= methodName
15f20 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
15f30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15f40 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 4d 6f 63     result ^= Moc
15f50 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 47 65 74  kRegistryKey.Get
15f60 48 61 73 68 43 6f 64 65 28 6b 65 79 29 3b 0d 0a  HashCode(key);..
15f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15f80 20 20 69 66 20 28 73 75 62 4b 65 79 4e 61 6d 65    if (subKeyName
15f90 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
15fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
15fb0 65 73 75 6c 74 20 5e 3d 20 73 75 62 4b 65 79 4e  esult ^= subKeyN
15fc0 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28  ame.GetHashCode(
15fd0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
15fe0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 4e        if (valueN
15ff0 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame != null)..  
16000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16010 20 20 72 65 73 75 6c 74 20 5e 3d 20 76 61 6c 75    result ^= valu
16020 65 4e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64  eName.GetHashCod
16030 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
16040 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e          result ^
16050 3d 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  = MockRegistryKe
16060 79 2e 56 61 6c 75 65 48 61 73 68 43 6f 64 65 28  y.ValueHashCode(
16070 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
16080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16090 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
160a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
160b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16100 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
16110 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
16120 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
16130 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16140 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
16150 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
16160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16170 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 62   StringBuilder b
16180 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74 72  uilder = new Str
16190 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
161a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
161b0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
161c0 46 6f 72 44 69 73 70 6c 61 79 28 6d 65 74 68 6f  ForDisplay(metho
161d0 64 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20  dName));..      
161e0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
161f0 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65  r.Append(FieldDe
16200 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20  limiter);..     
16210 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
16220 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69 73  er.Append(ForDis
16230 70 6c 61 79 28 6b 65 79 29 29 3b 0d 0a 20 20 20  play(key));..   
16240 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
16250 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c  lder.Append(Fiel
16260 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20  dDelimiter);..  
16270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
16280 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72  ilder.Append(For
16290 44 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61  Display(subKeyNa
162a0 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  me));..         
162b0 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
162c0 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d  ppend(FieldDelim
162d0 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  iter);..        
162e0 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e          builder.
162f0 41 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61  Append(ForDispla
16300 79 28 76 61 6c 75 65 4e 61 6d 65 29 29 3b 0d 0a  y(valueName));..
16310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16320 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46  builder.Append(F
16330 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d  ieldDelimiter);.
16340 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16350 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
16360 64 28 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20  d(ForDisplay(.. 
16370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16380 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
16390 65 79 2e 56 61 6c 75 65 54 6f 53 74 72 69 6e 67  ey.ValueToString
163a0 28 76 61 6c 75 65 2c 20 22 2c 20 22 2c 20 22 3c  (value, ", ", "<
163b0 6e 75 6c 6c 3e 22 29 29 29 3b 0d 0a 0d 0a 20 20  null>")));....  
163c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
163d0 74 75 72 6e 20 62 75 69 6c 64 65 72 2e 54 6f 53  turn builder.ToS
163e0 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
163f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16400 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
16410 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
16420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
16470 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
16480 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
16490 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
164a0 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
164b0 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20  l disposed;..   
164c0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
164d0 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f   void CheckDispo
164e0 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a  sed() /* throw *
164f0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
16500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16510 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
16520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16530 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
16540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16550 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
16560 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
16570 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
16580 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
16590 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
165a0 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  n).Name);..     
165b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
165c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
165d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
165f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16610 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
16620 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20  te /* protected 
16630 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20  virtual */ void 
16640 44 69 73 70 6f 73 65 28 0d 0a 20 20 20 20 20 20  Dispose(..      
16650 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 64            bool d
16660 69 73 70 6f 73 69 6e 67 0d 0a 20 20 20 20 20 20  isposing..      
16670 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
16680 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16690 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
166a0 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
166b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
166c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166d0 20 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e 67     if (disposing
166e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
166f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16710 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16730 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
16740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16750 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67  // dispose manag
16760 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
16770 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
16780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
167c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
167d0 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a   (key != null)..
167e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
167f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
16800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16810 20 20 20 20 20 20 20 6b 65 79 2e 43 6c 6f 73 65         key.Close
16820 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
16830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16840 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20   key = null;..  
16850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16860 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
16870 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
16880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16890 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
168a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
168b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
168c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
168d0 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
168e0 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
168f0 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
16900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16930 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16940 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
16950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16960 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
16970 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f 77 20  s object is now 
16980 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
169a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
169b0 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
169c0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
169d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
169e0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
169f0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16a00 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
16a10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16a60 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
16a70 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
16a80 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
16a90 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
16aa0 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
16ab0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16ac0 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
16ad0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
16ae0 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
16af0 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
16b00 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16b10 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
16b20 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
16b30 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b70 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16b80 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
16b90 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
16ba0 20 20 20 20 20 20 20 7e 52 65 67 69 73 74 72 79         ~Registry
16bb0 4f 70 65 72 61 74 69 6f 6e 28 29 0d 0a 20 20 20  Operation()..   
16bc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
16bd0 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
16be0 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
16bf0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
16c00 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
16c10 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
16c20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16c30 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
16c90 23 72 65 67 69 6f 6e 20 53 74 72 69 6e 67 4c 69  #region StringLi
16ca0 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  st Class..      
16cb0 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
16cc0 20 63 6c 61 73 73 20 53 74 72 69 6e 67 4c 69 73   class StringLis
16cd0 74 20 3a 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  t : List<string>
16ce0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
16cf0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16d00 53 74 72 69 6e 67 4c 69 73 74 28 29 0d 0a 20 20  StringList()..  
16d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
16d20 62 61 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  base()..        
16d30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
16d40 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
16d50 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
16d60 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
16d70 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16db0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16dc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74         public St
16dd0 72 69 6e 67 4c 69 73 74 28 49 45 6e 75 6d 65 72  ringList(IEnumer
16de0 61 62 6c 65 3c 73 74 72 69 6e 67 3e 20 63 6f 6c  able<string> col
16df0 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  lection)..      
16e00 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
16e10 28 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20  (collection)..  
16e20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16e30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
16e40 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
16e50 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
16e60 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
16e70 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
16e80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
16e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16ed0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
16ee0 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61 72 79  StringDictionary
16ef0 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
16f00 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63  private sealed c
16f10 6c 61 73 73 20 53 74 72 69 6e 67 44 69 63 74 69  lass StringDicti
16f20 6f 6e 61 72 79 20 3a 20 44 69 63 74 69 6f 6e 61  onary : Dictiona
16f30 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
16f40 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g>..        {.. 
16f50 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
16f60 63 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61  c StringDictiona
16f70 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
16f80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16f90 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
16fa0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
16fb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
16fc0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
16fd0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
16fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17020 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17030 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e 4c  #region VersionL
17040 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  ist Class..     
17050 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
17060 64 20 63 6c 61 73 73 20 56 65 72 73 69 6f 6e 4c  d class VersionL
17070 69 73 74 20 3a 20 4c 69 73 74 3c 56 65 72 73 69  ist : List<Versi
17080 6f 6e 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  on>..        {..
17090 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
170a0 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 28 29  ic VersionList()
170b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
170c0 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20    : base()..    
170d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
170e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
170f0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
17100 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17110 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17160 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
17170 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 28 49 45  c VersionList(IE
17180 6e 75 6d 65 72 61 62 6c 65 3c 56 65 72 73 69 6f  numerable<Versio
17190 6e 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a  n> collection)..
171a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
171b0 3a 20 62 61 73 65 28 63 6f 6c 6c 65 63 74 69 6f  : base(collectio
171c0 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
171d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
171e0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
171f0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
17200 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
17210 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
17220 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
17230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
17280 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e 4d 61 70  egion VersionMap
17290 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
172a0 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63  private sealed c
172b0 6c 61 73 73 20 56 65 72 73 69 6f 6e 4d 61 70 20  lass VersionMap 
172c0 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  : Dictionary<str
172d0 69 6e 67 2c 20 56 65 72 73 69 6f 6e 4c 69 73 74  ing, VersionList
172e0 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  >..        {..  
172f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
17300 20 56 65 72 73 69 6f 6e 4d 61 70 28 29 0d 0a 20   VersionMap().. 
17310 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17330 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
17340 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
17350 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
17360 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
17370 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
173b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
173c0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
173d0 20 50 61 63 6b 61 67 65 20 43 6c 61 73 73 0d 0a   Package Class..
173e0 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
173f0 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 50 61   sealed class Pa
17400 63 6b 61 67 65 0d 0a 20 20 20 20 20 20 20 20 7b  ckage..        {
17410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
17420 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
17430 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
17440 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50 61         public Pa
17450 63 6b 61 67 65 28 29 0d 0a 20 20 20 20 20 20 20  ckage()..       
17460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17470 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
17480 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
17490 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
174a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
174b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
174c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
174f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17510 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50  #region Public P
17520 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20  roperties..     
17530 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
17540 74 72 69 6e 67 20 70 72 6f 76 69 64 65 72 49 6e  tring providerIn
17550 76 61 72 69 61 6e 74 4e 61 6d 65 3b 0d 0a 20 20  variantName;..  
17560 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
17570 20 73 74 72 69 6e 67 20 50 72 6f 76 69 64 65 72   string Provider
17580 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 0d 0a 20  InvariantName.. 
17590 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
175a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
175b0 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f 76 69  t { return provi
175c0 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  derInvariantName
175d0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
175e0 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69       set { provi
175f0 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  derInvariantName
17600 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
17610 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
17620 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
17630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
17670 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
17680 76 61 74 65 20 73 74 72 69 6e 67 20 66 61 63 74  vate string fact
17690 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  oryTypeName;..  
176a0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
176b0 20 73 74 72 69 6e 67 20 46 61 63 74 6f 72 79 54   string FactoryT
176c0 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ypeName..       
176d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
176e0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
176f0 74 75 72 6e 20 66 61 63 74 6f 72 79 54 79 70 65  turn factoryType
17700 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Name; }..       
17710 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 66           set { f
17720 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20 3d  actoryTypeName =
17730 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
17740 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17750 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
177a0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
177b0 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  te AssemblyName 
177c0 70 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79  providerAssembly
177d0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
177e0 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
177f0 6c 79 4e 61 6d 65 20 50 72 6f 76 69 64 65 72 41  lyName ProviderA
17800 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20 20  ssemblyName..   
17810 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17820 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
17830 7b 20 72 65 74 75 72 6e 20 70 72 6f 76 69 64 65  { return provide
17840 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20 7d  rAssemblyName; }
17850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17860 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64 65 72    set { provider
17870 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 76  AssemblyName = v
17880 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
17890 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
178a0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
178b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
178e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
178f0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17900 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 64 65   AssemblyName de
17910 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61  signerAssemblyNa
17920 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
17930 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79   public Assembly
17940 4e 61 6d 65 20 44 65 73 69 67 6e 65 72 41 73 73  Name DesignerAss
17950 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20 20 20 20  emblyName..     
17960 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17970 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
17980 72 65 74 75 72 6e 20 64 65 73 69 67 6e 65 72 41  return designerA
17990 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20 7d 0d 0a  ssemblyName; }..
179a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
179b0 73 65 74 20 7b 20 64 65 73 69 67 6e 65 72 41 73  set { designerAs
179c0 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 76 61 6c  semblyName = val
179d0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
179e0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
179f0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
17a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a30 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17a40 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
17a50 6f 6f 6c 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62  ool globalAssemb
17a60 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20 20 20  lyCache;..      
17a70 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
17a80 6c 20 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  l GlobalAssembly
17a90 43 61 63 68 65 0d 0a 20 20 20 20 20 20 20 20 20  Cache..         
17aa0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17ab0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
17ac0 72 6e 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c  rn globalAssembl
17ad0 79 43 61 63 68 65 3b 20 7d 0d 0a 20 20 20 20 20  yCache; }..     
17ae0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
17af0 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43   globalAssemblyC
17b00 61 63 68 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ache = value; }.
17b10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
17b20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
17b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
17b80 20 70 72 69 76 61 74 65 20 47 75 69 64 20 70 61   private Guid pa
17b90 63 6b 61 67 65 49 64 3b 0d 0a 20 20 20 20 20 20  ckageId;..      
17ba0 20 20 20 20 20 20 70 75 62 6c 69 63 20 47 75 69        public Gui
17bb0 64 20 50 61 63 6b 61 67 65 49 64 0d 0a 20 20 20  d PackageId..   
17bc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
17bd0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
17be0 7b 20 72 65 74 75 72 6e 20 70 61 63 6b 61 67 65  { return package
17bf0 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  Id; }..         
17c00 20 20 20 20 20 20 20 73 65 74 20 7b 20 70 61 63         set { pac
17c10 6b 61 67 65 49 64 20 3d 20 76 61 6c 75 65 3b 20  kageId = value; 
17c20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
17c30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c80 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17c90 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64 20     private Guid 
17ca0 73 65 72 76 69 63 65 49 64 3b 0d 0a 20 20 20 20  serviceId;..    
17cb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 47          public G
17cc0 75 69 64 20 53 65 72 76 69 63 65 49 64 0d 0a 20  uid ServiceId.. 
17cd0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
17ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
17cf0 74 20 7b 20 72 65 74 75 72 6e 20 73 65 72 76 69  t { return servi
17d00 63 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ceId; }..       
17d10 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 73           set { s
17d20 65 72 76 69 63 65 49 64 20 3d 20 76 61 6c 75 65  erviceId = value
17d30 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
17d40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
17d50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17da0 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69       private Gui
17db0 64 20 64 61 74 61 53 6f 75 72 63 65 49 64 3b 0d  d dataSourceId;.
17dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
17dd0 6c 69 63 20 47 75 69 64 20 44 61 74 61 53 6f 75  lic Guid DataSou
17de0 72 63 65 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rceId..         
17df0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
17e00 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
17e10 72 6e 20 64 61 74 61 53 6f 75 72 63 65 49 64 3b  rn dataSourceId;
17e20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17e30 20 20 20 20 73 65 74 20 7b 20 64 61 74 61 53 6f      set { dataSo
17e40 75 72 63 65 49 64 20 3d 20 76 61 6c 75 65 3b 20  urceId = value; 
17e50 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
17e60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17eb0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17ec0 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64 20     private Guid 
17ed0 64 61 74 61 50 72 6f 76 69 64 65 72 49 64 3b 0d  dataProviderId;.
17ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
17ef0 6c 69 63 20 47 75 69 64 20 44 61 74 61 50 72 6f  lic Guid DataPro
17f00 76 69 64 65 72 49 64 0d 0a 20 20 20 20 20 20 20  viderId..       
17f10 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17f20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
17f30 74 75 72 6e 20 64 61 74 61 50 72 6f 76 69 64 65  turn dataProvide
17f40 72 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  rId; }..        
17f50 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 61          set { da
17f60 74 61 50 72 6f 76 69 64 65 72 49 64 20 3d 20 76  taProviderId = v
17f70 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
17f80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
17f90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
17fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
17fe0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17ff0 20 47 75 69 64 20 61 64 6f 4e 65 74 54 65 63 68   Guid adoNetTech
18000 6e 6f 6c 6f 67 79 49 64 3b 0d 0a 20 20 20 20 20  nologyId;..     
18010 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 47 75         public Gu
18020 69 64 20 41 64 6f 4e 65 74 54 65 63 68 6e 6f 6c  id AdoNetTechnol
18030 6f 67 79 49 64 0d 0a 20 20 20 20 20 20 20 20 20  ogyId..         
18040 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
18050 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
18060 72 6e 20 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c  rn adoNetTechnol
18070 6f 67 79 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20  ogyId; }..      
18080 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
18090 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c 6f 67 79  adoNetTechnology
180a0 49 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  Id = value; }.. 
180b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
180c0 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
180d0 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gion..        }.
180e0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
180f0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
18100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18140 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
18150 20 20 23 72 65 67 69 6f 6e 20 43 6f 6e 66 69 67    #region Config
18160 75 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a 20  uration Class.. 
18170 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
18180 65 61 6c 65 64 20 63 6c 61 73 73 20 43 6f 6e 66  ealed class Conf
18190 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
181a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
181b0 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
181c0 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
181d0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
181e0 20 63 6f 6e 73 74 20 63 68 61 72 20 53 77 69 74   const char Swit
181f0 63 68 20 3d 20 27 2d 27 3b 0d 0a 20 20 20 20 20  ch = '-';..     
18200 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
18210 6f 6e 73 74 20 63 68 61 72 20 41 6c 74 53 77 69  onst char AltSwi
18220 74 63 68 20 3d 20 27 2f 27 3b 0d 0a 0d 0a 20 20  tch = '/';....  
18230 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18280 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
18290 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
182a0 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 77 69 74  only char[] Swit
182b0 63 68 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20  chChars = {..   
182c0 20 20 20 20 20 20 20 20 20 20 20 20 20 53 77 69               Swi
182d0 74 63 68 2c 20 41 6c 74 53 77 69 74 63 68 0d 0a  tch, AltSwitch..
182e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a              };..
182f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
18300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
18350 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
18360 74 72 69 6e 67 20 49 6e 76 61 72 69 61 6e 74 4e  tring InvariantN
18370 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  ame = "System.Da
18380 74 61 2e 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20  ta.SQLite";..   
18390 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
183a0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66   const string Ef
183b0 36 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 20 3d  6InvariantName =
183c0 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
183d0 4c 69 74 65 2e 45 46 36 22 3b 0d 0a 0d 0a 20 20  Lite.EF6";....  
183e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
183f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18430 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
18440 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
18450 67 20 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  g FactoryTypeNam
18460 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
18470 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44 61 74       "System.Dat
18480 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 46  a.SQLite.SQLiteF
18490 61 63 74 6f 72 79 22 3b 0d 0a 0d 0a 20 20 20 20  actory";....    
184a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
184b0 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66 36  const string Ef6
184c0 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20  FactoryTypeName 
184d0 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
184e0 20 20 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e     "System.Data.
184f0 53 51 4c 69 74 65 2e 45 46 36 2e 53 51 4c 69 74  SQLite.EF6.SQLit
18500 65 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79  eProviderFactory
18510 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
18520 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18530 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18580 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
18590 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61  gion Private Sta
185a0 74 69 63 20 44 61 74 61 0d 0a 20 20 20 20 20 20  tic Data..      
185b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
185c0 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20 73 79  atic Assembly sy
185d0 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 3b  stemEf6Assembly;
185e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
185f0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
18600 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18650 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
18660 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
18670 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
18680 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d  vate AssemblyNam
18690 65 20 63 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61  e coreAssemblyNa
186a0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
186b0 20 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c   private Assembl
186c0 79 4e 61 6d 65 20 6c 69 6e 71 41 73 73 65 6d 62  yName linqAssemb
186d0 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
186e0 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73 73       private Ass
186f0 65 6d 62 6c 79 4e 61 6d 65 20 65 66 36 41 73 73  emblyName ef6Ass
18700 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  emblyName;..    
18710 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
18720 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 64 65 73  AssemblyName des
18730 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
18740 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
18750 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18760 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
187a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
187b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
187c0 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
187d0 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
187e0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 43         private C
187f0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28 0d 0a 20  onfiguration(.. 
18800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
18810 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
18820 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18830 20 20 20 73 74 72 69 6e 67 20 6c 6f 67 46 69 6c     string logFil
18840 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
18850 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72          string r
18860 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
18870 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
18880 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
18890 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
188a0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
188b0 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  oreFileName,..  
188c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
188d0 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  ring linqFileNam
188e0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
188f0 20 20 20 20 73 74 72 69 6e 67 20 65 66 36 46 69      string ef6Fi
18900 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
18910 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
18920 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  designerFileName
18930 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18940 20 20 20 73 74 72 69 6e 67 20 72 65 67 69 73 74     string regist
18950 72 79 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20  ryVersion,..    
18960 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
18970 6e 67 20 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e  ng configVersion
18980 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18990 20 20 20 73 74 72 69 6e 67 20 76 73 56 65 72 73     string vsVers
189a0 69 6f 6e 53 75 66 66 69 78 2c 0d 0a 20 20 20 20  ionSuffix,..    
189b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
189c0 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 2c 0d  ng debugFormat,.
189d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
189e0 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72   string traceFor
189f0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
18a00 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61        InstallFla
18a10 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61 67 73 2c  gs installFlags,
18a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a30 20 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 20    ProviderFlags 
18a40 70 72 6f 76 69 64 65 72 46 6c 61 67 73 2c 0d 0a  providerFlags,..
18a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18a60 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 64 65  TracePriority de
18a70 62 75 67 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  bugPriority,..  
18a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
18a90 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
18aa0 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20 20  ePriority,..    
18ab0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
18ac0 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
18ad0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
18ae0 69 6e 73 74 61 6c 6c 2c 0d 0a 20 20 20 20 20 20  install,..      
18af0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77            bool w
18b00 6f 77 36 34 2c 0d 0a 20 20 20 20 20 20 20 20 20  ow64,..         
18b10 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 52 75         bool noRu
18b20 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d 0a 20  ntimeVersion,.. 
18b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18b40 6f 6f 6c 20 6e 6f 44 65 73 6b 74 6f 70 2c 0d 0a  ool noDesktop,..
18b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b60 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61 63 74 2c 0d  bool noCompact,.
18b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18b80 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 32 30 2c   bool noNetFx20,
18b90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18ba0 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 33 35    bool noNetFx35
18bb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18bc0 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34     bool noNetFx4
18bd0 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0,..            
18be0 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78      bool noNetFx
18bf0 34 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  45,..           
18c00 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46       bool noNetF
18c10 78 34 35 31 2c 0d 0a 20 20 20 20 20 20 20 20 20  x451,..         
18c20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
18c30 74 46 78 34 35 32 2c 0d 0a 20 20 20 20 20 20 20  tFx452,..       
18c40 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
18c50 4e 65 74 46 78 34 36 2c 0d 0a 20 20 20 20 20 20  NetFx46,..      
18c60 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e            bool n
18c70 6f 4e 65 74 46 78 34 36 31 2c 0d 0a 20 20 20 20  oNetFx461,..    
18c80 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
18c90 20 6e 6f 4e 65 74 46 78 34 36 32 2c 0d 0a 20 20   noNetFx462,..  
18ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18cb0 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 2c 0d 0a 20  ol noNetFx47,.. 
18cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18cd0 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31 2c 0d  ool noNetFx471,.
18ce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18cf0 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 35 2c 0d   bool noVs2005,.
18d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d10 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 38 2c 0d   bool noVs2008,.
18d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d30 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30 2c 0d   bool noVs2010,.
18d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d50 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32 2c 0d   bool noVs2012,.
18d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d70 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 33 2c 0d   bool noVs2013,.
18d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18d90 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 35 2c 0d   bool noVs2015,.
18da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18db0 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 37 2c 0d   bool noVs2017,.
18dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18dd0 20 62 6f 6f 6c 20 6e 6f 54 72 61 63 65 2c 0d 0a   bool noTrace,..
18de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18df0 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65 2c 0d  bool noConsole,.
18e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18e10 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 2c 0d 0a 20 20   bool noLog,..  
18e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18e30 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ol throwOnMissin
18e40 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
18e50 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
18e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18e70 20 20 62 6f 6f 6c 20 64 65 62 75 67 2c 0d 0a 20    bool debug,.. 
18e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18e90 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 0d 0a 20 20  ool verbose,..  
18ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18eb0 6f 6c 20 63 6f 6e 66 69 72 6d 0d 0a 20 20 20 20  ol confirm..    
18ec0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
18ed0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
18ef0 69 73 2e 61 73 73 65 6d 62 6c 79 20 3d 20 61 73  is.assembly = as
18f00 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20 20 20 20  sembly;..       
18f10 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
18f20 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 67 46  gFileName = logF
18f30 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
18f40 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
18f50 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
18f60 6d 65 20 3d 20 72 65 67 69 73 74 72 79 4c 6f 67  me = registryLog
18f70 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
18f80 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
18f90 64 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65  directory = dire
18fa0 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
18fb0 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 72          this.cor
18fc0 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 72 65  eFileName = core
18fd0 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
18fe0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
18ff0 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 6c  linqFileName = l
19000 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  inqFileName;..  
19010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19020 69 73 2e 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d  is.ef6FileName =
19030 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20   ef6FileName;.. 
19040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
19050 68 69 73 2e 64 65 73 69 67 6e 65 72 46 69 6c 65  his.designerFile
19060 4e 61 6d 65 20 3d 20 64 65 73 69 67 6e 65 72 46  Name = designerF
19070 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
19080 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
19090 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 20 3d  egistryVersion =
190a0 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e   registryVersion
190b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
190c0 20 20 20 74 68 69 73 2e 63 6f 6e 66 69 67 56 65     this.configVe
190d0 72 73 69 6f 6e 20 3d 20 63 6f 6e 66 69 67 56 65  rsion = configVe
190e0 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  rsion;..        
190f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 73 56          this.vsV
19100 65 72 73 69 6f 6e 53 75 66 66 69 78 20 3d 20 76  ersionSuffix = v
19110 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 3b 0d  sVersionSuffix;.
19120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19130 20 74 68 69 73 2e 64 65 62 75 67 46 6f 72 6d 61   this.debugForma
19140 74 20 3d 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  t = debugFormat;
19150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19160 20 20 74 68 69 73 2e 74 72 61 63 65 46 6f 72 6d    this.traceForm
19170 61 74 20 3d 20 74 72 61 63 65 46 6f 72 6d 61 74  at = traceFormat
19180 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19190 20 20 20 74 68 69 73 2e 69 6e 73 74 61 6c 6c 46     this.installF
191a0 6c 61 67 73 20 3d 20 69 6e 73 74 61 6c 6c 46 6c  lags = installFl
191b0 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ags;..          
191c0 20 20 20 20 20 20 74 68 69 73 2e 70 72 6f 76 69        this.provi
191d0 64 65 72 46 6c 61 67 73 20 3d 20 70 72 6f 76 69  derFlags = provi
191e0 64 65 72 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20  derFlags;..     
191f0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
19200 64 65 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20  debugPriority = 
19210 64 65 62 75 67 50 72 69 6f 72 69 74 79 3b 0d 0a  debugPriority;..
19220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19230 74 68 69 73 2e 74 72 61 63 65 50 72 69 6f 72 69  this.tracePriori
19240 74 79 20 3d 20 74 72 61 63 65 50 72 69 6f 72 69  ty = tracePriori
19250 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ty;..           
19260 20 20 20 20 20 74 68 69 73 2e 70 65 72 55 73 65       this.perUse
19270 72 20 3d 20 70 65 72 55 73 65 72 3b 0d 0a 20 20  r = perUser;..  
19280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19290 69 73 2e 69 6e 73 74 61 6c 6c 20 3d 20 69 6e 73  is.install = ins
192a0 74 61 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  tall;..         
192b0 20 20 20 20 20 20 20 74 68 69 73 2e 77 6f 77 36         this.wow6
192c0 34 20 3d 20 77 6f 77 36 34 3b 0d 0a 20 20 20 20  4 = wow64;..    
192d0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
192e0 2e 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  .noRuntimeVersio
192f0 6e 20 3d 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72  n = noRuntimeVer
19300 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
19310 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 44 65         this.noDe
19320 73 6b 74 6f 70 20 3d 20 6e 6f 44 65 73 6b 74 6f  sktop = noDeskto
19330 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
19340 20 20 20 20 74 68 69 73 2e 6e 6f 43 6f 6d 70 61      this.noCompa
19350 63 74 20 3d 20 6e 6f 43 6f 6d 70 61 63 74 3b 0d  ct = noCompact;.
19360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19370 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 32 30 20   this.noNetFx20 
19380 3d 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20  = noNetFx20;..  
19390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
193a0 69 73 2e 6e 6f 4e 65 74 46 78 33 35 20 3d 20 6e  is.noNetFx35 = n
193b0 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20 20 20 20  oNetFx35;..     
193c0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
193d0 6e 6f 4e 65 74 46 78 34 30 20 3d 20 6e 6f 4e 65  noNetFx40 = noNe
193e0 74 46 78 34 30 3b 0d 0a 20 20 20 20 20 20 20 20  tFx40;..        
193f0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e          this.noN
19400 65 74 46 78 34 35 20 3d 20 6e 6f 4e 65 74 46 78  etFx45 = noNetFx
19410 34 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  45;..           
19420 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46       this.noNetF
19430 78 34 35 31 20 3d 20 6e 6f 4e 65 74 46 78 34 35  x451 = noNetFx45
19440 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
19450 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78      this.noNetFx
19460 34 35 32 20 3d 20 6e 6f 4e 65 74 46 78 34 35 32  452 = noNetFx452
19470 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19480 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
19490 36 20 3d 20 6e 6f 4e 65 74 46 78 34 36 3b 0d 0a  6 = noNetFx46;..
194a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
194b0 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36 31 20  this.noNetFx461 
194c0 3d 20 6e 6f 4e 65 74 46 78 34 36 31 3b 0d 0a 20  = noNetFx461;.. 
194d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
194e0 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36 32 20 3d  his.noNetFx462 =
194f0 20 6e 6f 4e 65 74 46 78 34 36 32 3b 0d 0a 20 20   noNetFx462;..  
19500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19510 69 73 2e 6e 6f 4e 65 74 46 78 34 37 20 3d 20 6e  is.noNetFx47 = n
19520 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20 20 20 20  oNetFx47;..     
19530 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
19540 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 6e 6f 4e  noNetFx471 = noN
19550 65 74 46 78 34 37 31 3b 0d 0a 20 20 20 20 20 20  etFx471;..      
19560 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
19570 6f 56 73 32 30 30 35 20 3d 20 6e 6f 56 73 32 30  oVs2005 = noVs20
19580 30 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  05;..           
19590 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30       this.noVs20
195a0 30 38 20 3d 20 6e 6f 56 73 32 30 30 38 3b 0d 0a  08 = noVs2008;..
195b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
195c0 74 68 69 73 2e 6e 6f 56 73 32 30 31 30 20 3d 20  this.noVs2010 = 
195d0 6e 6f 56 73 32 30 31 30 3b 0d 0a 20 20 20 20 20  noVs2010;..     
195e0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
195f0 6e 6f 56 73 32 30 31 32 20 3d 20 6e 6f 56 73 32  noVs2012 = noVs2
19600 30 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  012;..          
19610 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32        this.noVs2
19620 30 31 33 20 3d 20 6e 6f 56 73 32 30 31 33 3b 0d  013 = noVs2013;.
19630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19640 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 35 20 3d   this.noVs2015 =
19650 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20 20   noVs2015;..    
19660 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
19670 2e 6e 6f 56 73 32 30 31 37 20 3d 20 6e 6f 56 73  .noVs2017 = noVs
19680 32 30 31 37 3b 0d 0a 20 20 20 20 20 20 20 20 20  2017;..         
19690 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 54 72         this.noTr
196a0 61 63 65 20 3d 20 6e 6f 54 72 61 63 65 3b 0d 0a  ace = noTrace;..
196b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
196c0 74 68 69 73 2e 6e 6f 43 6f 6e 73 6f 6c 65 20 3d  this.noConsole =
196d0 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d 0a 20 20 20   noConsole;..   
196e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
196f0 73 2e 6e 6f 4c 6f 67 20 3d 20 6e 6f 4c 6f 67 3b  s.noLog = noLog;
19700 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19710 20 20 74 68 69 73 2e 74 68 72 6f 77 4f 6e 4d 69    this.throwOnMi
19720 73 73 69 6e 67 20 3d 20 74 68 72 6f 77 4f 6e 4d  ssing = throwOnM
19730 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  issing;..       
19740 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 68           this.wh
19750 61 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a  atIf = whatIf;..
19760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19770 74 68 69 73 2e 64 65 62 75 67 20 3d 20 64 65 62  this.debug = deb
19780 75 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ug;..           
19790 20 20 20 20 20 74 68 69 73 2e 76 65 72 62 6f 73       this.verbos
197a0 65 20 3d 20 76 65 72 62 6f 73 65 3b 0d 0a 20 20  e = verbose;..  
197b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
197c0 69 73 2e 63 6f 6e 66 69 72 6d 20 3d 20 63 6f 6e  is.confirm = con
197d0 66 69 72 6d 3b 0d 0a 20 20 20 20 20 20 20 20 20  firm;..         
197e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
197f0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
19800 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19850 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
19860 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
19870 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
19880 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
19890 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 47  te static void G
198a0 65 74 44 65 66 61 75 6c 74 46 69 6c 65 4e 61 6d  etDefaultFileNam
198b0 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
198c0 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
198d0 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
198e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
198f0 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e  string coreFileN
19900 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
19910 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
19920 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 2c 0d 0a   linqFileName,..
19930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19940 72 65 66 20 73 74 72 69 6e 67 20 65 66 36 46 69  ref string ef6Fi
19950 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
19960 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
19970 69 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65  ing designerFile
19980 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
19990 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
199a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
199b0 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
199c0 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  Assembly == null
199d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
199e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
199f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19a00 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
19a10 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
19a20 61 6d 65 28 74 68 69 73 41 73 73 65 6d 62 6c 79  ame(thisAssembly
19a30 2e 4c 6f 63 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20  .Location);.... 
19a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
19a50 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
19a60 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72  OrEmpty(director
19a70 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y))..           
19a80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
19a90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19aa0 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65      coreFileName
19ab0 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28   = Path.Combine(
19ac0 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
19ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19ae0 49 6e 73 74 61 6c 6c 65 72 2e 43 6f 72 65 46 69  Installer.CoreFi
19af0 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
19b00 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 71              linq
19b10 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
19b20 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
19b30 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
19b40 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 65          Installe
19b50 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b  r.LinqFileName);
19b60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19b70 20 20 20 20 65 66 36 46 69 6c 65 4e 61 6d 65 20      ef6FileName 
19b80 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  = Path.Combine(d
19b90 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
19ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
19bb0 6e 73 74 61 6c 6c 65 72 2e 45 66 36 46 69 6c 65  nstaller.Ef6File
19bc0 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
19bd0 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e            design
19be0 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  erFileName = Pat
19bf0 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
19c00 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
19c10 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c            Instal
19c20 6c 65 72 2e 44 65 73 69 67 6e 65 72 46 69 6c 65  ler.DesignerFile
19c30 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
19c40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
19c50 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c90 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19ca0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
19cb0 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63  static bool Chec
19cc0 6b 4f 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  kOption(..      
19cd0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
19ce0 72 69 6e 67 20 61 72 67 0d 0a 20 20 20 20 20 20  ring arg..      
19cf0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
19d00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19d10 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
19d20 6e 67 20 72 65 73 75 6c 74 20 3d 20 61 72 67 3b  ng result = arg;
19d30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19d40 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
19d50 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 72 65  IsNullOrEmpty(re
19d60 73 75 6c 74 29 29 0d 0a 20 20 20 20 20 20 20 20  sult))..        
19d70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19d90 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
19da0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
19db0 52 65 6d 6f 76 65 20 61 6c 6c 20 6c 65 61 64 69  Remove all leadi
19dc0 6e 67 20 73 77 69 74 63 68 20 63 68 61 72 73 2e  ng switch chars.
19dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19de0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
19df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
19e00 73 75 6c 74 20 3d 20 72 65 73 75 6c 74 2e 54 72  sult = result.Tr
19e10 69 6d 53 74 61 72 74 28 53 77 69 74 63 68 43 68  imStart(SwitchCh
19e20 61 72 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ars);....       
19e30 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
19e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19e50 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 48 6f       // NOTE: Ho
19e60 77 20 6d 61 6e 79 20 63 68 61 72 73 20 77 65 72  w many chars wer
19e70 65 20 72 65 6d 6f 76 65 64 3f 0d 0a 20 20 20 20  e removed?..    
19e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19e90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
19ea0 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e          int coun
19eb0 74 20 3d 20 61 72 67 2e 4c 65 6e 67 74 68 20 2d  t = arg.Length -
19ec0 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d   result.Length;.
19ed0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19ee0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
19ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19f00 2f 20 4e 4f 54 45 3a 20 57 61 73 20 74 68 65 72  / NOTE: Was ther
19f10 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 3f 0d  e at least one?.
19f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19f30 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
19f40 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
19f50 28 63 6f 75 6e 74 20 3e 20 30 29 0d 0a 20 20 20  (count > 0)..   
19f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19f70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19f80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
19f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fa0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
19fb0 20 4f 6b 2c 20 72 65 70 6c 61 63 65 20 74 68 65   Ok, replace the
19fc0 69 72 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20  ir original..   
19fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fe0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
19ff0 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gument...       
1a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a010 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1a020 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
1a030 20 3d 20 72 65 73 75 6c 74 3b 0d 0a 0d 0a 20 20   = result;....  
1a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a050 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1a060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a070 20 20 2f 2f 20 4e 4f 54 45 3a 20 59 65 73 2c 20    // NOTE: Yes, 
1a080 74 68 69 73 20 69 73 20 61 20 73 77 69 74 63 68  this is a switch
1a090 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1a0a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1a0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0c0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1a0d0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1a0e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1a0f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1a100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a110 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
1a120 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1a130 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1a140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a190 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
1a1a0 6f 6f 6c 20 4d 61 74 63 68 4f 70 74 69 6f 6e 28  ool MatchOption(
1a1b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a1c0 20 20 73 74 72 69 6e 67 20 61 72 67 2c 0d 0a 20    string arg,.. 
1a1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1a1e0 74 72 69 6e 67 20 6f 70 74 69 6f 6e 0d 0a 20 20  tring option..  
1a1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
1a200 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1a210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a220 69 66 20 28 28 61 72 67 20 3d 3d 20 6e 75 6c 6c  if ((arg == null
1a230 29 20 7c 7c 20 28 6f 70 74 69 6f 6e 20 3d 3d 20  ) || (option == 
1a240 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
1a250 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1a260 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1a270 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a280 75 72 6e 20 53 74 72 69 6e 67 2e 43 6f 6d 70 61  urn String.Compa
1a290 72 65 28 61 72 67 2c 20 30 2c 20 6f 70 74 69 6f  re(arg, 0, optio
1a2a0 6e 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  n, 0,..         
1a2b0 20 20 20 20 20 20 20 20 20 20 20 61 72 67 2e 4c             arg.L
1a2c0 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f 6d  ength, StringCom
1a2d0 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
1a2e0 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 3b  gnoreCase) == 0;
1a2f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1a300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1a310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a350 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1a360 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1a370 20 62 6f 6f 6c 3f 20 50 61 72 73 65 42 6f 6f 6c   bool? ParseBool
1a380 65 61 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ean(..          
1a390 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
1a3a0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
1a3b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
1a3c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a3d0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
1a3e0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
1a3f0 65 78 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ext))..         
1a400 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a420 6f 6c 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ol value;....   
1a430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a440 20 69 66 20 28 62 6f 6f 6c 2e 54 72 79 50 61 72   if (bool.TryPar
1a450 73 65 28 74 65 78 74 2c 20 6f 75 74 20 76 61 6c  se(text, out val
1a460 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
1a470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1a480 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
1a490 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a4a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a4b0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1a4d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1a4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a530 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f  private static o
1a540 62 6a 65 63 74 20 50 61 72 73 65 45 6e 75 6d 28  bject ParseEnum(
1a550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a560 20 20 54 79 70 65 20 65 6e 75 6d 54 79 70 65 2c    Type enumType,
1a570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a580 20 20 73 74 72 69 6e 67 20 74 65 78 74 2c 0d 0a    string text,..
1a590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a5a0 62 6f 6f 6c 20 6e 6f 43 61 73 65 0d 0a 20 20 20  bool noCase..   
1a5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
1a5c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1a5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1a5e0 66 20 28 28 65 6e 75 6d 54 79 70 65 20 3d 3d 20  f ((enumType == 
1a5f0 6e 75 6c 6c 29 20 7c 7c 20 21 65 6e 75 6d 54 79  null) || !enumTy
1a600 70 65 2e 49 73 45 6e 75 6d 29 0d 0a 20 20 20 20  pe.IsEnum)..    
1a610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a620 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a640 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
1a650 6c 6c 4f 72 45 6d 70 74 79 28 74 65 78 74 29 29  llOrEmpty(text))
1a660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a670 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a680 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1a690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6a0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1a6c0 75 72 6e 20 45 6e 75 6d 2e 50 61 72 73 65 28 65  urn Enum.Parse(e
1a6d0 6e 75 6d 54 79 70 65 2c 20 74 65 78 74 2c 20 6e  numType, text, n
1a6e0 6f 43 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  oCase);..       
1a6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1a700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a710 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1a720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1a730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a740 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
1a750 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
1a760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1a770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a780 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1a790 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1a7a0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
1a7b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1a7c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1a7d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a800 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1a810 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1a820 69 63 20 62 6f 6f 6c 20 49 73 53 79 73 74 65 6d  ic bool IsSystem
1a830 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61  Ef6AssemblyGloba
1a840 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l()..           
1a850 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a860 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 45 66      if (systemEf
1a870 36 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  6Assembly == nul
1a880 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1a890 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1a8a0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1a8b0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a8c0 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  systemEf6Assembl
1a8d0 79 2e 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  y.GlobalAssembly
1a8e0 43 61 63 68 65 3b 0d 0a 20 20 20 20 20 20 20 20  Cache;..        
1a8f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1a900 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1a910 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1a920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a970 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53  #region Public S
1a980 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
1a990 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
1a9a0 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 42 72  c static void Br
1a9b0 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 28  eakIntoDebugger(
1a9c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1a9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a9e0 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65 4c    Console.WriteL
1a9f0 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ine(..          
1aa00 20 20 20 20 20 20 20 20 20 20 22 41 74 74 61 63            "Attac
1aa10 68 20 61 20 64 65 62 75 67 67 65 72 20 74 6f 20  h a debugger to 
1aa20 70 72 6f 63 65 73 73 20 7b 30 7d 20 61 6e 64 20  process {0} and 
1aa30 70 72 65 73 73 20 22 20 2b 0d 0a 20 20 20 20 20  press " +..     
1aa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1aa50 61 6e 79 20 6b 65 79 20 74 6f 20 63 6f 6e 74 69  any key to conti
1aa60 6e 75 65 2e 22 2c 20 28 74 68 69 73 50 72 6f 63  nue.", (thisProc
1aa70 65 73 73 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a  ess != null) ?..
1aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aa90 20 20 20 20 74 68 69 73 50 72 6f 63 65 73 73 2e      thisProcess.
1aaa0 49 64 2e 54 6f 53 74 72 69 6e 67 28 29 20 3a 20  Id.ToString() : 
1aab0 22 3c 75 6e 6b 6e 6f 77 6e 3e 22 29 3b 0d 0a 0d  "<unknown>");...
1aac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aad0 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1aae0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1aaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
1ab00 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 74 72 75  sole.ReadKey(tru
1ab10 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
1ab20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ab30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ab40 20 20 20 20 63 61 74 63 68 20 28 49 6e 76 61 6c      catch (Inval
1ab50 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1ab60 74 69 6f 6e 29 20 2f 2f 20 43 6f 6e 73 6f 6c 65  tion) // Console
1ab70 2e 52 65 61 64 4b 65 79 0d 0a 20 20 20 20 20 20  .ReadKey..      
1ab80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ab90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1aba0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1abb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1abc0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1abd0 20 20 20 20 20 20 44 65 62 75 67 67 65 72 2e 42        Debugger.B
1abe0 72 65 61 6b 28 29 3b 0d 0a 20 20 20 20 20 20 20  reak();..       
1abf0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ac00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1ac10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac40 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ac50 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
1ac60 73 74 61 74 69 63 20 43 6f 6e 66 69 67 75 72 61  static Configura
1ac70 74 69 6f 6e 20 43 72 65 61 74 65 44 65 66 61 75  tion CreateDefau
1ac80 6c 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  lt()..          
1ac90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1aca0 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
1acb0 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
1acc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1acd0 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61  tring coreFileNa
1ace0 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
1acf0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1ad00 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20  ng linqFileName 
1ad10 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
1ad20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1ad30 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ef6FileName = nu
1ad40 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
1ad50 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 73 69       string desi
1ad60 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  gnerFileName = n
1ad70 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1ad80 20 20 20 20 20 20 20 20 47 65 74 44 65 66 61 75          GetDefau
1ad90 6c 74 46 69 6c 65 4e 61 6d 65 73 28 0d 0a 20 20  ltFileNames(..  
1ada0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adb0 20 20 72 65 66 20 64 69 72 65 63 74 6f 72 79 2c    ref directory,
1adc0 20 72 65 66 20 63 6f 72 65 46 69 6c 65 4e 61 6d   ref coreFileNam
1add0 65 2c 20 72 65 66 20 6c 69 6e 71 46 69 6c 65 4e  e, ref linqFileN
1ade0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1adf0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 65 66            ref ef
1ae00 36 46 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 64  6FileName, ref d
1ae10 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29  esignerFileName)
1ae20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ae30 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
1ae40 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28 0d 0a  Configuration(..
1ae50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae60 20 20 20 20 74 68 69 73 41 73 73 65 6d 62 6c 79      thisAssembly
1ae70 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 64 69  , null, null, di
1ae80 72 65 63 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c  rectory, coreFil
1ae90 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1aea0 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 71              linq
1aeb0 46 69 6c 65 4e 61 6d 65 2c 20 65 66 36 46 69 6c  FileName, ef6Fil
1aec0 65 4e 61 6d 65 2c 20 64 65 73 69 67 6e 65 72 46  eName, designerF
1aed0 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e  ileName, null, n
1aee0 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ull,..          
1aef0 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20            null, 
1af00 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 46 6f  TraceOps.DebugFo
1af10 72 6d 61 74 2c 20 54 72 61 63 65 4f 70 73 2e 54  rmat, TraceOps.T
1af20 72 61 63 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  raceFormat,..   
1af30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af40 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73 2e 44 65   InstallFlags.De
1af50 66 61 75 6c 74 2c 20 50 72 6f 76 69 64 65 72 46  fault, ProviderF
1af60 6c 61 67 73 2e 44 65 66 61 75 6c 74 2c 0d 0a 20  lags.Default,.. 
1af70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af80 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
1af90 2e 44 65 66 61 75 6c 74 2c 20 54 72 61 63 65 50  .Default, TraceP
1afa0 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 2c  riority.Default,
1afb0 20 66 61 6c 73 65 2c 20 74 72 75 65 2c 0d 0a 20   false, true,.. 
1afc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1afd0 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c     false, false,
1afe0 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1aff0 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1b000 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20  se, false,..    
1b010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b020 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1b030 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1b040 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1b050 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
1b060 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
1b070 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1b080 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1b090 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1b0a0 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
1b0b0 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 2c            false,
1b0c0 20 74 72 75 65 2c 20 74 72 75 65 2c 20 66 61 6c   true, true, fal
1b0d0 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1b0e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1b0f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1b100 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1b110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b140 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1b150 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
1b160 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
1b170 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
1b180 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
1b190 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 46  ic static bool F
1b1a0 72 6f 6d 41 72 67 73 28 0d 0a 20 20 20 20 20 20  romArgs(..      
1b1b0 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1b1c0 5b 5d 20 61 72 67 73 2c 0d 0a 20 20 20 20 20 20  [] args,..      
1b1d0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
1b1e0 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20 20 20  trict,..        
1b1f0 20 20 20 20 20 20 20 20 72 65 66 20 43 6f 6e 66          ref Conf
1b200 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66 69 67  iguration config
1b210 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  uration,..      
1b220 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
1b230 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
1b240 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1b250 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1b270 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1b280 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b290 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72            if (ar
1b2a0 67 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  gs == null)..   
1b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2c0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
1b2d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b2e0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
1b2f0 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20 6e 75  figuration == nu
1b300 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1b310 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1b320 66 69 67 75 72 61 74 69 6f 6e 20 3d 20 43 6f 6e  figuration = Con
1b330 66 69 67 75 72 61 74 69 6f 6e 2e 43 72 65 61 74  figuration.Creat
1b340 65 44 65 66 61 75 6c 74 28 29 3b 0d 0a 0d 0a 20  eDefault();.... 
1b350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b360 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20     int length = 
1b370 61 72 67 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  args.Length;....
1b380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b390 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
1b3a0 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20  ex = 0; index < 
1b3b0 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29  length; index++)
1b3c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b3f0 20 73 74 72 69 6e 67 20 61 72 67 20 3d 20 61 72   string arg = ar
1b400 67 73 5b 69 6e 64 65 78 5d 3b 0d 0a 0d 0a 20 20  gs[index];....  
1b410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b420 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b440 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 6b 69 70 20    // NOTE: Skip 
1b450 61 6e 79 20 61 72 67 75 6d 65 6e 74 20 74 68 61  any argument tha
1b460 74 20 69 73 20 6e 75 6c 6c 20 28 3f 29 20 6f 72  t is null (?) or
1b470 20 61 6e 20 65 6d 70 74 79 0d 0a 20 20 20 20 20   an empty..     
1b480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b490 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 72 69     //       stri
1b4a0 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1b4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1b4c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b4d0 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
1b4e0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1b4f0 79 28 61 72 67 29 29 0d 0a 20 20 20 20 20 20 20  y(arg))..       
1b500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b510 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
1b520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b530 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1b540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b550 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
1b560 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 6d  e are going to m
1b570 6f 64 69 66 79 20 74 68 65 20 6f 72 69 67 69 6e  odify the origin
1b580 61 6c 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20  al argument..   
1b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5a0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 79       //       by
1b5b0 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 6c 65   removing any le
1b5c0 61 64 69 6e 67 20 6f 70 74 69 6f 6e 20 63 68 61  ading option cha
1b5d0 72 61 63 74 65 72 73 3b 0d 0a 20 20 20 20 20 20  racters;..      
1b5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b5f0 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65    //       there
1b600 66 6f 72 65 2c 20 77 65 20 75 73 65 20 61 20 6e  fore, we use a n
1b610 65 77 20 73 74 72 69 6e 67 20 74 6f 20 68 6f 6c  ew string to hol
1b620 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  d the..         
1b630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b640 2f 20 20 20 20 20 20 20 6d 6f 64 69 66 69 65 64  /       modified
1b650 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20   argument...    
1b660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b670 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b690 73 74 72 69 6e 67 20 6e 65 77 41 72 67 20 3d 20  string newArg = 
1b6a0 61 72 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  arg;....        
1b6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b6d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1b6e0 4f 54 45 3a 20 41 6c 6c 20 74 68 65 20 73 75 70  OTE: All the sup
1b6f0 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c  ported command l
1b700 69 6e 65 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74  ine options must
1b710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b720 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b730 20 20 20 62 65 67 69 6e 20 77 69 74 68 20 61 6e     begin with an
1b740 20 6f 70 74 69 6f 6e 20 63 68 61 72 61 63 74 65   option characte
1b750 72 20 28 65 2e 67 2e 20 61 20 6d 69 6e 75 73 0d  r (e.g. a minus.
1b760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b770 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1b780 20 20 6f 72 20 66 6f 72 77 61 72 64 20 73 6c 61    or forward sla
1b790 73 68 29 3b 20 61 74 74 65 6d 70 74 20 74 6f 20  sh); attempt to 
1b7a0 76 61 6c 69 64 61 74 65 20 74 68 61 74 0d 0a 20  validate that.. 
1b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7c0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1b7d0 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61 69 6c  now.  If we fail
1b7e0 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 2c   in strict mode,
1b7f0 20 77 65 20 61 72 65 20 64 6f 6e 65 3b 0d 0a 20   we are done;.. 
1b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b810 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1b820 6f 74 68 65 72 77 69 73 65 2c 20 6a 75 73 74 20  otherwise, just 
1b830 73 6b 69 70 20 74 68 69 73 20 61 72 67 75 6d 65  skip this argume
1b840 6e 74 20 61 6e 64 20 61 64 76 61 6e 63 65 0d 0a  nt and advance..
1b850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b860 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1b870 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6f 6e 65   to the next one
1b880 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b890 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1b8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8b0 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65 63         if (!Chec
1b8c0 6b 4f 70 74 69 6f 6e 28 72 65 66 20 6e 65 77 41  kOption(ref newA
1b8d0 72 67 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rg))..          
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1b8f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b900 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1b910 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1b920 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1b950 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1b960 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1b970 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1b980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b990 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1b9a0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1b9b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9d0 20 20 20 22 55 6e 73 75 70 70 6f 72 74 65 64 20     "Unsupported 
1b9e0 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67  command line arg
1b9f0 75 6d 65 6e 74 3a 20 7b 30 7d 22 2c 0d 0a 20 20  ument: {0}",..  
1ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1ba20 72 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c 20  rDisplay(arg)), 
1ba30 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
1ba40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ba50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1ba60 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
1ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba80 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1ba90 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bab0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1bac0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1bad0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1bae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1baf0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1bb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb10 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6c       // NOTE: Al
1bb20 6c 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20  l the supported 
1bb30 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74  command line opt
1bb40 69 6f 6e 73 20 6d 75 73 74 0d 0a 20 20 20 20 20  ions must..     
1bb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb60 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 76 65     //       have
1bb70 20 61 20 76 61 6c 75 65 3b 20 74 68 65 72 65 66   a value; theref
1bb80 6f 72 65 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ore, attempt to 
1bb90 61 64 76 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  advance..       
1bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbb0 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 69 74 20   //       to it 
1bbc0 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61 69 6c  now.  If we fail
1bbd0 2c 20 77 65 20 61 72 65 20 64 6f 6e 65 2e 0d 0a  , we are done...
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbf0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1bc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc10 20 20 20 20 69 6e 64 65 78 2b 2b 3b 0d 0a 0d 0a      index++;....
1bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc30 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
1bc40 78 20 3e 3d 20 6c 65 6e 67 74 68 29 0d 0a 20 20  x >= length)..  
1bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1bc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc80 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1bc90 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1bca0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bcc0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1bcd0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1bce0 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd00 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1bd10 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1bd20 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd40 20 20 20 20 20 20 20 20 20 20 20 22 4d 69 73 73             "Miss
1bd50 69 6e 67 20 76 61 6c 75 65 20 66 6f 72 20 6f 70  ing value for op
1bd60 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20  tion: {0}",..   
1bd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
1bd90 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c 20 74  Display(arg)), t
1bda0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1bdb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1bdd0 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
1bde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdf0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1be00 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1be10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
1be30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be40 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1be50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be60 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be80 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74   // NOTE: Grab t
1be90 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  he textual value
1bea0 20 6f 66 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64   of this command
1beb0 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20   line..         
1bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1bed0 2f 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 0d  /       option..
1bee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bef0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1bf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf10 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
1bf20 20 3d 20 61 72 67 73 5b 69 6e 64 65 78 5d 3b 0d   = args[index];.
1bf30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1bf40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf60 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1bf70 46 69 67 75 72 65 20 6f 75 74 20 77 68 69 63 68  Figure out which
1bf80 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70   command line op
1bf90 74 69 6f 6e 20 74 68 69 73 20 69 73 0d 0a 20 20  tion this is..  
1bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfb0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
1bfc0 62 61 73 65 64 20 6f 6e 20 61 20 70 61 72 74 69  based on a parti
1bfd0 61 6c 20 6e 61 6d 65 20 6d 61 74 63 68 29 20 61  al name match) a
1bfe0 6e 64 20 74 68 65 6e 20 74 72 79 0d 0a 20 20 20  nd then try..   
1bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c000 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
1c010 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 74   interpret the t
1c020 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61 73 20  extual value as 
1c030 74 68 65 20 63 6f 72 72 65 63 74 0d 0a 20 20 20  the correct..   
1c040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c050 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 79       //       ty
1c060 70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe...           
1c070 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1c080 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c090 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 74           if (Mat
1c0a0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1c0b0 20 22 62 72 65 61 6b 22 29 29 0d 0a 20 20 20 20   "break"))..    
1c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0f0 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
1c100 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
1c110 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
1c120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c130 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1c140 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1c150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c160 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c180 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1c190 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1c1a0 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
1c1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c1c0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1c1d0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
1c1e0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
1c1f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c210 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1c220 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1c230 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1c240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c250 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
1c260 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
1c270 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
1c280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2a0 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
1c2b0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
1c2c0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2e0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1c2f0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
1c300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c310 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c320 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
1c330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c340 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c350 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
1c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1c380 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
1c390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3c0 20 20 20 20 20 20 69 66 20 28 28 62 6f 6f 6c 29        if ((bool)
1c3d0 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  value)..        
1c3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3f0 20 20 20 20 20 20 20 20 42 72 65 61 6b 49 6e 74          BreakInt
1c400 6f 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 20 20  oDebugger();..  
1c410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c420 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c440 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
1c450 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63  ption(newArg, "c
1c460 6f 6e 66 69 67 56 65 72 73 69 6f 6e 22 29 29 0d  onfigVersion")).
1c470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c480 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4a0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1c4b0 61 74 69 6f 6e 2e 63 6f 6e 66 69 67 56 65 72 73  ation.configVers
1c4c0 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ion = text;..   
1c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1c4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c500 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1c510 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f  tion(newArg, "co
1c520 6e 66 69 72 6d 22 29 29 0d 0a 20 20 20 20 20 20  nfirm"))..      
1c530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c540 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c560 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
1c570 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
1c580 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1c590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5a0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1c5b0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5f0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1c600 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1c610 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1c620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c630 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1c640 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1c650 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1c660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c680 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1c690 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1c6a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6c0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1c6d0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
1c6e0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
1c6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1c710 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1c720 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1c730 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c750 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
1c760 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1c770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c780 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1c790 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7b0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1c7c0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7e0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1c7f0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1c800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c810 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1c820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c830 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1c840 6e 2e 63 6f 6e 66 69 72 6d 20 3d 20 28 62 6f 6f  n.confirm = (boo
1c850 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
1c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c870 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1c880 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1c890 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1c8a0 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f 72 65 46  n(newArg, "coreF
1c8b0 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20  ileName"))..    
1c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8f0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1c900 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20  .coreFileName = 
1c910 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  text;..         
1c920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1c930 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c940 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1c950 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1c960 65 77 41 72 67 2c 20 22 64 65 62 75 67 22 29 29  ewArg, "debug"))
1c970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c980 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9a0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
1c9b0 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
1c9c0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
1c9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1c9f0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1ca00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ca20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1ca40 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1ca50 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca80 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
1ca90 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
1caa0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1cab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cac0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1cad0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1cae0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1caf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1cb10 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
1cb20 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
1cb30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb50 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1cb60 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
1cb70 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
1cb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1cba0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1cbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbd0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1cbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc00 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1cc10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc30 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1cc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc70 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1cc80 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 20  iguration.debug 
1cc90 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
1cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccb0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccd0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1cce0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1ccf0 22 64 65 62 75 67 46 6f 72 6d 61 74 22 29 29 0d  "debugFormat")).
1cd00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cd10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1cd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd30 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1cd40 61 74 69 6f 6e 2e 64 65 62 75 67 46 6f 72 6d 61  ation.debugForma
1cd50 74 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  t = text;..     
1cd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd70 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
1cd80 44 65 62 75 67 46 6f 72 6d 61 74 20 3d 20 63 6f  DebugFormat = co
1cd90 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75  nfiguration.debu
1cda0 67 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  gFormat;..      
1cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1cdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1cde0 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1cdf0 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 62 75 67  n(newArg, "debug
1ce00 50 72 69 6f 72 69 74 79 22 29 29 0d 0a 20 20 20  Priority"))..   
1ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1ce30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce40 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
1ce50 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20   = ParseEnum(.. 
1ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ce80 79 70 65 6f 66 28 54 72 61 63 65 50 72 69 6f 72  ypeof(TracePrior
1ce90 69 74 79 29 2c 20 74 65 78 74 2c 20 74 72 75 65  ity), text, true
1cea0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1ceb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cec0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1ced0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1cee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cef0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1cf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf10 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1cf20 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1cf30 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf50 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1cf60 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1cf70 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfa0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1cfb0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1cfc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1cfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfe0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1cff0 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  {0} value: {1}",
1d000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d020 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1d030 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
1d040 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
1d050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1d070 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1d080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0a0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1d0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0d0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1d0e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d100 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
1d110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d120 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1d130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d140 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1d150 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 50  iguration.debugP
1d160 72 69 6f 72 69 74 79 20 3d 20 28 54 72 61 63 65  riority = (Trace
1d170 50 72 69 6f 72 69 74 79 29 76 61 6c 75 65 3b 0d  Priority)value;.
1d180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d190 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1d1a0 63 65 4f 70 73 2e 44 65 62 75 67 50 72 69 6f 72  ceOps.DebugPrior
1d1b0 69 74 79 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  ity = configurat
1d1c0 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f 72 69 74  ion.debugPriorit
1d1d0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d200 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1d210 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1d220 72 67 2c 20 22 64 65 73 69 67 6e 65 72 46 69 6c  rg, "designerFil
1d230 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20  eName"))..      
1d240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d250 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d270 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64   configuration.d
1d280 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20  esignerFileName 
1d290 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  = text;..       
1d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1d2d0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1d2e0 28 6e 65 77 41 72 67 2c 20 22 64 69 72 65 63 74  (newArg, "direct
1d2f0 6f 72 79 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ory"))..        
1d300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d310 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1d320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d330 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72  onfiguration.dir
1d340 65 63 74 6f 72 79 20 3d 20 74 65 78 74 3b 0d 0a  ectory = text;..
1d350 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1d370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1d390 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49 41 4c 2a   NOTE: *SPECIAL*
1d3a0 20 4d 75 73 74 20 72 65 66 72 65 73 68 20 74 68   Must refresh th
1d3b0 65 20 66 69 6c 65 20 6e 61 6d 65 73 0d 0a 20 20  e file names..  
1d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1d3e0 20 20 20 68 65 72 65 20 62 65 63 61 75 73 65 20     here because 
1d3f0 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64  the underlying d
1d400 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
1d410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d420 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
1d430 61 73 20 63 68 61 6e 67 65 64 2e 0d 0a 20 20 20  as changed...   
1d440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d450 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1d460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d470 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1d480 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63  coreFileName = c
1d490 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f 72  onfiguration.cor
1d4a0 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  eFileName;....  
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
1d4d0 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
1d4e0 70 74 79 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65  pty(coreFileName
1d4f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1d500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d510 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65      coreFileName
1d520 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e   = Path.GetFileN
1d530 61 6d 65 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65  ame(coreFileName
1d540 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1d550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d560 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
1d570 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 72 65 46  ullOrEmpty(coreF
1d580 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
1d590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5a0 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 46             coreF
1d5b0 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c  ileName = Instal
1d5c0 6c 65 72 2e 43 6f 72 65 46 69 6c 65 4e 61 6d 65  ler.CoreFileName
1d5d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63   configuration.c
1d600 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  oreFileName = Pa
1d610 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20  th.Combine(..   
1d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d630 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1d640 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63  figuration.direc
1d650 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c 65 4e 61  tory, coreFileNa
1d660 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d680 20 20 20 20 73 74 72 69 6e 67 20 6c 69 6e 71 46      string linqF
1d690 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67  ileName = config
1d6a0 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69 6c 65  uration.linqFile
1d6b0 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
1d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6d0 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
1d6e0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6c  .IsNullOrEmpty(l
1d6f0 69 6e 71 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  inqFileName)).. 
1d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1d720 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  inqFileName = Pa
1d730 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 6c  th.GetFileName(l
1d740 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  inqFileName);...
1d750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d760 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d770 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1d780 45 6d 70 74 79 28 6c 69 6e 71 46 69 6c 65 4e 61  Empty(linqFileNa
1d790 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7b0 20 20 20 20 20 20 6c 69 6e 71 46 69 6c 65 4e 61        linqFileNa
1d7c0 6d 65 20 3d 20 49 6e 73 74 61 6c 6c 65 72 2e 4c  me = Installer.L
1d7d0 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  inqFileName;....
1d7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1d800 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69  iguration.linqFi
1d810 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
1d820 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
1d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d840 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1d850 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72 79 2c  ation.directory,
1d860 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 0d   linqFileName);.
1d870 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1d890 74 72 69 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d  tring ef6FileNam
1d8a0 65 20 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  e = configuratio
1d8b0 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a  n.ef6FileName;..
1d8c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1d8e0 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
1d8f0 4f 72 45 6d 70 74 79 28 65 66 36 46 69 6c 65 4e  OrEmpty(ef6FileN
1d900 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1d910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d920 20 20 20 20 20 20 20 65 66 36 46 69 6c 65 4e 61         ef6FileNa
1d930 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c  me = Path.GetFil
1d940 65 4e 61 6d 65 28 65 66 36 46 69 6c 65 4e 61 6d  eName(ef6FileNam
1d950 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1d960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d970 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
1d980 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65 66 36 46  NullOrEmpty(ef6F
1d990 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
1d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9b0 20 20 20 20 20 20 20 20 20 20 20 65 66 36 46 69             ef6Fi
1d9c0 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c 6c  leName = Install
1d9d0 65 72 2e 45 66 36 46 69 6c 65 4e 61 6d 65 3b 0d  er.Ef6FileName;.
1d9e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1da00 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65 66 36  onfiguration.ef6
1da10 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1da20 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
1da30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da40 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1da50 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72  uration.director
1da60 79 2c 20 65 66 36 46 69 6c 65 4e 61 6d 65 29 3b  y, ef6FileName);
1da70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1da80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da90 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72 46  string designerF
1daa0 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67  ileName = config
1dab0 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72  uration.designer
1dac0 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  FileName;....   
1dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dae0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
1daf0 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1db00 74 79 28 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  ty(designerFileN
1db10 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db30 20 20 20 20 20 20 20 64 65 73 69 67 6e 65 72 46         designerF
1db40 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47  ileName = Path.G
1db50 65 74 46 69 6c 65 4e 61 6d 65 28 64 65 73 69 67  etFileName(desig
1db60 6e 65 72 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  nerFileName);...
1db70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1db80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1db90 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1dba0 45 6d 70 74 79 28 64 65 73 69 67 6e 65 72 46 69  Empty(designerFi
1dbb0 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbd0 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e            design
1dbe0 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73  erFileName = Ins
1dbf0 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65 72 46  taller.DesignerF
1dc00 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1dc30 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72 46 69  ation.designerFi
1dc40 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
1dc50 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc70 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1dc80 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72 79 2c  ation.directory,
1dc90 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   designerFileNam
1dca0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1dcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dcd0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
1dce0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
1dcf0 41 72 67 2c 20 22 65 66 36 46 69 6c 65 4e 61 6d  Arg, "ef6FileNam
1dd00 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
1dd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1dd20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1dd40 66 69 67 75 72 61 74 69 6f 6e 2e 65 66 36 46 69  figuration.ef6Fi
1dd50 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a  leName = text;..
1dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1dd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd90 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1dda0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1ddb0 22 69 6e 73 74 61 6c 6c 22 29 29 0d 0a 20 20 20  "install"))..   
1ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddf0 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
1de00 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
1de10 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de30 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1de40 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1de50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de80 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1de90 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1dea0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1deb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1ded0 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
1dee0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
1def0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df10 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1df20 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1df30 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df50 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
1df60 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
1df70 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
1df80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfa0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
1dfb0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
1dfc0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
1dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfe0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
1dff0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
1e000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e010 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1e020 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
1e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1e050 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1e080 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
1e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0c0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1e0d0 74 69 6f 6e 2e 69 6e 73 74 61 6c 6c 20 3d 20 28  tion.install = (
1e0e0 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
1e0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e100 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e120 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1e130 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 69 6e  tion(newArg, "in
1e140 73 74 61 6c 6c 46 6c 61 67 73 22 29 29 0d 0a 20  stallFlags")).. 
1e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e160 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e180 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
1e190 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d  ue = ParseEnum(.
1e1a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1c0 20 74 79 70 65 6f 66 28 49 6e 73 74 61 6c 6c 46   typeof(InstallF
1e1d0 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74 72 75  lags), text, tru
1e1e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e200 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1e210 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e230 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e250 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
1e260 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
1e270 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
1e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e290 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1e2a0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
1e2b0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
1e2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2e0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
1e2f0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
1e300 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1e310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e320 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
1e330 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22   {0} value: {1}"
1e340 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e360 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
1e370 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
1e380 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3b0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
1e3c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3e0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e410 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1e420 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e440 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
1e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e460 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1e470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e480 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1e490 66 69 67 75 72 61 74 69 6f 6e 2e 69 6e 73 74 61  figuration.insta
1e4a0 6c 6c 46 6c 61 67 73 20 3d 20 28 49 6e 73 74 61  llFlags = (Insta
1e4b0 6c 6c 46 6c 61 67 73 29 76 61 6c 75 65 3b 0d 0a  llFlags)value;..
1e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4f0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1e500 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1e510 22 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 22 29 29  "linqFileName"))
1e520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e530 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e550 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1e560 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69 6c 65 4e  ration.linqFileN
1e570 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ame = text;..   
1e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e590 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1e5c0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6c 6f  tion(newArg, "lo
1e5d0 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  gFileName"))..  
1e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e610 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1e620 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d  on.logFileName =
1e630 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20   text;..        
1e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e650 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1e660 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1e670 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1e680 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f 6d 70 61  newArg, "noCompa
1e690 63 74 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ct"))..         
1e6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1e6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1e6d0 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
1e6e0 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
1e6f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1e700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e710 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1e720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1e740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e760 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
1e770 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
1e780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7a0 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
1e7b0 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
1e7c0 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
1e7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7f0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
1e800 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
1e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e830 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
1e840 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
1e850 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1e860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e870 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
1e880 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
1e890 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
1e8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8c0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
1e8d0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8f0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
1e900 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e920 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1e930 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1e940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e950 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1e960 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1e970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e980 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1e990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
1e9b0 6f 43 6f 6d 70 61 63 74 20 3d 20 28 62 6f 6f 6c  oCompact = (bool
1e9c0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
1e9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1e9f0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1ea00 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1ea10 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f 6e 73  (newArg, "noCons
1ea20 6f 6c 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ole"))..        
1ea30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ea50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1ea60 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
1ea70 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
1ea80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ea90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eaa0 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
1eab0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ead0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1eae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eaf0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
1eb00 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
1eb10 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb30 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
1eb40 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
1eb50 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
1eb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb80 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
1eb90 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
1eba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ebb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebc0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
1ebd0 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
1ebe0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
1ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec00 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
1ec10 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
1ec20 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
1ec30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec50 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
1ec60 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
1ec70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec80 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
1ec90 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
1eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecb0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1ecc0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
1ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ece0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
1ecf0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed10 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1ed20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed30 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
1ed40 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20 28 62 6f 6f  noConsole = (boo
1ed50 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
1ed60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1ed90 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1eda0 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 44 65 73  n(newArg, "noDes
1edb0 6b 74 6f 70 22 29 29 0d 0a 20 20 20 20 20 20 20  ktop"))..       
1edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ede0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edf0 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
1ee00 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
1ee10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ee20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee30 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1ee40 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1ee50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee80 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
1ee90 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
1eea0 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
1eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eec0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
1eed0 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
1eee0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
1eef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef10 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
1ef20 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
1ef30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ef40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef50 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
1ef60 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
1ef70 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1ef80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
1efa0 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
1efb0 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
1efc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1efd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efe0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
1eff0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
1f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f010 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
1f020 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
1f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f040 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f050 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f070 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
1f080 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
1f090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0c0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1f0d0 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d 20 28 62 6f  .noDesktop = (bo
1f0e0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
1f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f100 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1f120 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
1f130 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4c 6f  on(newArg, "noLo
1f140 67 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  g"))..          
1f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f170 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1f180 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
1f190 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
1f1a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1f1c0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1f1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f1f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f210 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
1f220 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
1f230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f250 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1f260 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1f270 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2a0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
1f2b0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2e0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
1f2f0 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
1f300 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1f310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f320 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
1f330 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1f340 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1f350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f370 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1f380 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1f390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3a0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1f3b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1f3e0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f400 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1f410 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f450 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
1f460 4c 6f 67 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  Log = (bool)valu
1f470 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1f480 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4a0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1f4b0 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1f4c0 72 67 2c 20 22 6e 6f 4e 65 74 46 78 32 30 22 29  rg, "noNetFx20")
1f4d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f4e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1f4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f500 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
1f510 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
1f520 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
1f530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f540 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
1f550 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
1f560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f570 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
1f5a0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
1f5b0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
1f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5e0 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
1f5f0 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
1f600 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
1f610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f620 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
1f630 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
1f640 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f670 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
1f680 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
1f690 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6b0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
1f6c0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
1f6d0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
1f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f700 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
1f710 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f730 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
1f740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f760 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1f770 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1f780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f790 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1f7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1f7e0 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
1f7f0 46 78 32 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  Fx20 = (bool)val
1f800 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1f810 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f830 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
1f840 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
1f850 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 33 35 22  Arg, "noNetFx35"
1f860 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1f870 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f890 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
1f8a0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
1f8b0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
1f8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f8e0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
1f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f900 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1f930 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
1f940 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
1f950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f970 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
1f980 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
1f990 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
1f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1f9c0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
1f9d0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
1f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa00 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
1fa10 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
1fa20 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1fa30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa40 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
1fa50 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
1fa60 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
1fa70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa90 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
1faa0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1fab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fac0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
1fad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1faf0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1fb00 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1fb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
1fb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fb40 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1fb50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1fb70 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
1fb80 74 46 78 33 35 20 3d 20 28 62 6f 6f 6c 29 76 61  tFx35 = (bool)va
1fb90 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
1fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1fbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fbc0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1fbd0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
1fbe0 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 30  wArg, "noNetFx40
1fbf0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1fc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1fc30 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
1fc40 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
1fc50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1fc70 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
1fc80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1fca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcc0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
1fcd0 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
1fce0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd00 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
1fd10 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
1fd20 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
1fd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1fd50 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
1fd60 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd90 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
1fda0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
1fdb0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdd0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
1fde0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
1fdf0 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
1fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
1fe30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1fe40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe50 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
1fe60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe80 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1fe90 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1feb0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1fec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1fee0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1ff00 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
1ff10 65 74 46 78 34 30 20 3d 20 28 62 6f 6f 6c 29 76  etFx40 = (bool)v
1ff20 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
1ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1ff40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ff50 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1ff60 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1ff70 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34  ewArg, "noNetFx4
1ff80 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  5"))..          
1ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1ffa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ffb0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1ffc0 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
1ffd0 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
1ffe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
20000 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
20010 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20050 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
20060 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
20070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20090 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
200a0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
200b0 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
200c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200e0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
200f0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
20100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20120 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
20130 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
20140 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
20150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20160 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
20170 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
20180 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
20190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201b0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
201c0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
201d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201e0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
201f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20210 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
20220 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
20230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20240 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
20250 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
20270 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20290 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
202a0 4e 65 74 46 78 34 35 20 3d 20 28 62 6f 6f 6c 29  NetFx45 = (bool)
202b0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
202c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202d0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
202e0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
202f0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
20300 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
20310 34 35 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20  451"))..        
20320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20330 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
20350 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
20360 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
20370 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20390 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
203a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
203b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
203d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203e0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
203f0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
20400 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
20410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20420 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
20430 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
20440 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
20450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20470 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
20480 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
20490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
204a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204b0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
204c0 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
204d0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
204e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204f0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
20500 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
20510 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
20520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20540 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
20550 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
20560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20570 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
20580 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
205b0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
205c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205d0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
205e0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
205f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20600 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
20610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20620 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
20630 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20 28 62 6f  noNetFx451 = (bo
20640 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
20650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20660 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
20670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
20680 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
20690 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65  on(newArg, "noNe
206a0 74 46 78 34 35 32 22 29 29 0d 0a 20 20 20 20 20  tFx452"))..     
206b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
206d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206e0 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
206f0 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
20700 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
20710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20720 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
20730 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
20740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20750 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20770 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
20780 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
20790 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207b0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
207c0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
207d0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
207e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
207f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20800 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
20810 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
20820 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
20830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20840 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
20850 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
20860 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
20870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
20890 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
208a0 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
208b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
208c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208d0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
208e0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
208f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20900 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
20910 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
20920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20930 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20940 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
20950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20960 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
20970 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
20980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20990 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
209a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209b0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
209c0 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20  on.noNetFx452 = 
209d0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
209e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a10 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
20a20 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
20a30 6f 4e 65 74 46 78 34 36 22 29 29 0d 0a 20 20 20  oNetFx46"))..   
20a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a70 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
20a80 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
20a90 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
20aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ab0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
20ac0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
20ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ae0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
20af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b00 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
20b10 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
20b20 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
20b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b40 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
20b50 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
20b60 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
20b70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
20b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b90 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
20ba0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
20bb0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
20bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20bd0 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
20be0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
20bf0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
20c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
20c30 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
20c40 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
20c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c60 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
20c70 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
20c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
20ca0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
20cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
20cd0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
20d00 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
20d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
20d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d40 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
20d50 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36 20 3d  tion.noNetFx46 =
20d60 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
20d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d80 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20da0 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
20db0 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
20dc0 6e 6f 4e 65 74 46 78 34 36 31 22 29 29 0d 0a 20  noNetFx461")).. 
20dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20de0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e00 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
20e10 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
20e20 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
20e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e40 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
20e50 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
20e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e90 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
20ea0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
20eb0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
20ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
20ee0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
20ef0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
20f00 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
20f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
20f30 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
20f40 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
20f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f60 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
20f70 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
20f80 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
20f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
20fc0 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
20fd0 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
20fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ff0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
21000 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
21010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
21030 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
21040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21060 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
21070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21090 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
210c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210d0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
210e0 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36  ration.noNetFx46
210f0 31 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  1 = (bool)value;
21100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21110 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21130 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
21140 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
21150 2c 20 22 6e 6f 4e 65 74 46 78 34 36 32 22 29 29  , "noNetFx462"))
21160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21170 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21190 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
211a0 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
211b0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
211c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
211e0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
211f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21200 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21220 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
21230 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
21240 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
21250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21270 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
21280 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
21290 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
212a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
212c0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
212d0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
212e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
21300 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
21310 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
21320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21340 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
21350 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
21360 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
21370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
21390 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
213a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
213b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213c0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
213d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213f0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
21400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21420 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
21430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21440 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
21450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21460 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
21470 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
21480 78 34 36 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  x462 = (bool)val
21490 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
214a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214c0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
214d0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
214e0 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 37 22  Arg, "noNetFx47"
214f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
21500 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
21510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21520 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
21530 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
21540 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
21550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21560 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21570 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
21580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21590 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
215a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
215c0 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
215d0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
215e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21600 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
21610 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
21620 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
21630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
21650 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
21660 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
21670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21690 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
216a0 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
216b0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
216c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216d0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
216e0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
216f0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21720 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
21730 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21750 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
21760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21780 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
21790 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
217a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217b0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
217c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
217d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
217e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
217f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
21800 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
21810 74 46 78 34 37 20 3d 20 28 62 6f 6f 6c 29 76 61  tFx47 = (bool)va
21820 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
21830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21850 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
21860 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
21870 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 37  wArg, "noNetFx47
21880 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  1"))..          
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
218a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
218b0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
218c0 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
218d0 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
218e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
218f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21900 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
21910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21950 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
21960 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
21970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21990 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
219a0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
219b0 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
219c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219e0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
219f0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
21a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
21a30 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
21a40 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
21a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a60 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
21a70 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
21a80 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
21a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
21ac0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ae0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
21af0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b10 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
21b20 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
21b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b40 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
21b50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21b70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b90 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
21ba0 4e 65 74 46 78 34 37 31 20 3d 20 28 62 6f 6f 6c  NetFx471 = (bool
21bb0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bd0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21be0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
21bf0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
21c00 28 6e 65 77 41 72 67 2c 20 22 6e 6f 52 75 6e 74  (newArg, "noRunt
21c10 69 6d 65 56 65 72 73 69 6f 6e 22 29 29 0d 0a 20  imeVersion")).. 
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c30 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c50 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
21c60 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
21c70 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
21c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c90 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
21ca0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
21cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ce0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
21cf0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
21d00 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
21d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
21d30 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
21d40 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
21d50 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
21d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d70 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
21d80 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
21d90 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
21da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21db0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
21dc0 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
21dd0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
21de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e00 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
21e10 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
21e20 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
21e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
21e50 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
21e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
21e80 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
21e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21eb0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
21ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ee0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
21ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
21f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
21f30 72 61 74 69 6f 6e 2e 6e 6f 52 75 6e 74 69 6d 65  ration.noRuntime
21f40 56 65 72 73 69 6f 6e 20 3d 20 28 62 6f 6f 6c 29  Version = (bool)
21f50 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
21f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
21f80 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
21f90 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
21fa0 6e 65 77 41 72 67 2c 20 22 6e 6f 54 72 61 63 65  newArg, "noTrace
21fb0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
21fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fe0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
21ff0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
22000 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
22010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22020 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
22030 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
22040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22050 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
22060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22080 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
22090 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
220a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
220b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220c0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
220d0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
220e0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
220f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
22110 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
22120 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
22130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22150 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
22160 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
22170 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
22180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22190 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
221a0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
221b0 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
221c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221e0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
221f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
22200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22210 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
22220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22240 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
22250 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
22260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22270 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
22280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
222a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
222b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
222c0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 54  onfiguration.noT
222d0 72 61 63 65 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  race = (bool)val
222e0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
222f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22310 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
22320 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
22330 41 72 67 2c 20 22 6e 6f 56 73 32 30 30 35 22 29  Arg, "noVs2005")
22340 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22350 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22370 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
22380 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
22390 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
223a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223b0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
223c0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
223d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
223f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
22410 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
22420 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
22430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22450 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
22460 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
22470 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
22480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22490 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
224a0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
224b0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
224c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224e0 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
224f0 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
22500 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22520 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
22530 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
22540 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
22550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22570 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
22580 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225a0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
225b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225d0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
225e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
225f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22600 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
22610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22620 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
22630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22640 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
22650 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
22660 30 30 35 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  005 = (bool)valu
22670 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
22680 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226a0 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
226b0 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
226c0 72 67 2c 20 22 6e 6f 56 73 32 30 30 38 22 29 29  rg, "noVs2008"))
226d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
226e0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
226f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22700 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
22710 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
22720 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
22730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22740 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
22750 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
22760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22770 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22790 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
227a0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
227b0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
227c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227e0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
227f0 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
22800 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
22810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22820 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
22830 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
22840 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
22850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
22870 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
22880 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
22890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
228a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228b0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
228c0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
228d0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
228e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
22900 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
22910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22930 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
22940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22960 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
22970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22990 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
229a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
229c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
229e0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
229f0 30 38 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  08 = (bool)value
22a00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22a10 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a30 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
22a40 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
22a50 67 2c 20 22 6e 6f 56 73 32 30 31 30 22 29 29 0d  g, "noVs2010")).
22a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22a70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a90 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
22aa0 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
22ab0 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
22ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ad0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
22ae0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
22af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
22b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
22b30 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
22b40 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
22b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b70 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
22b80 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
22b90 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bb0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
22bc0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
22bd0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
22c00 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
22c10 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
22c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c40 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
22c50 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
22c60 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
22c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
22c90 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
22ca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cc0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
22cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cf0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
22d00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
22d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
22d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d60 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
22d70 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
22d80 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  0 = (bool)value;
22d90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22da0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22dc0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
22dd0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
22de0 2c 20 22 6e 6f 56 73 32 30 31 32 22 29 29 0d 0a  , "noVs2012"))..
22df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e00 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
22e30 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
22e40 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
22e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e60 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
22e70 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
22e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22eb0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
22ec0 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
22ed0 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
22ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f00 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
22f10 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
22f20 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f40 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
22f50 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
22f60 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f80 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
22f90 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
22fa0 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
22fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fd0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
22fe0 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
22ff0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
23000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23010 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
23020 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
23030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23050 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
23060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23080 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
23090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
230a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230b0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
230e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230f0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
23100 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 32  uration.noVs2012
23110 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
23120 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23130 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23150 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
23160 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
23170 20 22 6e 6f 56 73 32 30 31 33 22 29 29 0d 0a 20   "noVs2013")).. 
23180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23190 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
231a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231b0 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
231c0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
231d0 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
231e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231f0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
23200 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
23210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23220 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23240 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
23250 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
23260 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
23270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
23290 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
232a0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
232b0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
232c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232d0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
232e0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
232f0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
23300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23310 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
23320 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
23330 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
23340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23360 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
23370 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
23380 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
23390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
233b0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
233c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
233e0 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
233f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23410 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
23420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23440 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
23450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23460 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
23470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23480 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
23490 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 33 20  ration.noVs2013 
234a0 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
234b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
234d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234e0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
234f0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
23500 22 6e 6f 56 73 32 30 31 35 22 29 29 0d 0a 20 20  "noVs2015"))..  
23510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23520 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23540 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
23550 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
23560 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
23570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23580 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
23590 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
235a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
235c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235d0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
235e0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
235f0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
23600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
23620 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
23630 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
23640 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
23650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23660 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
23670 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
23680 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
23690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236a0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
236b0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
236c0 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
236d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236f0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
23700 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
23710 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
23720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23730 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
23740 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
23750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
23770 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
23780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
237a0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
237b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237d0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
237e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
23800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23810 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
23820 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 35 20 3d  ation.noVs2015 =
23830 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
23840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23850 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
23860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23870 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
23880 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
23890 6e 6f 56 73 32 30 31 37 22 29 29 0d 0a 20 20 20  noVs2017"))..   
238a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
238c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238d0 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
238e0 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
238f0 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
23900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23910 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
23920 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
23930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23940 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
23950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23960 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
23970 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
23980 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
23990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239a0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
239b0 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
239c0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
239d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
239e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239f0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
23a00 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
23a10 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
23a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a30 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
23a40 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
23a50 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
23a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a80 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
23a90 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
23aa0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ac0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
23ad0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
23ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23af0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
23b00 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
23b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
23b30 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
23b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
23b60 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
23b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
23b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ba0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
23bb0 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37 20 3d 20  tion.noVs2017 = 
23bc0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
23bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23be0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c00 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
23c10 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70  ption(newArg, "p
23c20 65 72 55 73 65 72 22 29 29 0d 0a 20 20 20 20 20  erUser"))..     
23c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c60 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
23c70 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
23c80 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
23c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ca0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
23cb0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
23cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cd0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cf0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
23d00 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
23d10 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d30 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
23d40 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
23d50 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
23d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d80 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
23d90 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
23da0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
23db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dc0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
23dd0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
23de0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
23df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
23e10 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
23e20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
23e30 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
23e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e50 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
23e60 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
23e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
23e90 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
23ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23eb0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
23ec0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
23ef0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
23f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f30 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
23f40 6f 6e 2e 70 65 72 55 73 65 72 20 3d 20 28 62 6f  on.perUser = (bo
23f50 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
23f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
23f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
23f90 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
23fa0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70 72 6f 76  on(newArg, "prov
23fb0 69 64 65 72 46 6c 61 67 73 22 29 29 0d 0a 20 20  iderFlags"))..  
23fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fd0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ff0 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
24000 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d 0a  e = ParseEnum(..
24010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24030 74 79 70 65 6f 66 28 50 72 6f 76 69 64 65 72 46  typeof(ProviderF
24040 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74 72 75  lags), text, tru
24050 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
24060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24070 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
24080 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
24090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
240b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240c0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
240d0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
240e0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
240f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24100 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
24110 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
24120 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
24130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24150 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
24160 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
24170 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
24180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24190 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
241a0 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22   {0} value: {1}"
241b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
241c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241d0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
241e0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
241f0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
24200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24220 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
24230 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24250 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
24260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
24290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
242a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242b0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
242e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
242f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
24300 66 69 67 75 72 61 74 69 6f 6e 2e 70 72 6f 76 69  figuration.provi
24310 64 65 72 46 6c 61 67 73 20 3d 20 28 50 72 6f 76  derFlags = (Prov
24320 69 64 65 72 46 6c 61 67 73 29 76 61 6c 75 65 3b  iderFlags)value;
24330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24340 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24360 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
24370 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
24380 2c 20 22 72 65 67 69 73 74 72 79 4c 6f 67 46 69  , "registryLogFi
24390 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20  leName"))..     
243a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
243c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243d0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
243e0 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e  registryLogFileN
243f0 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ame = text;..   
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24410 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24430 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
24440 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 72 65  tion(newArg, "re
24450 67 69 73 74 72 79 56 65 72 73 69 6f 6e 22 29 29  gistryVersion"))
24460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24470 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24490 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
244a0 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72 79 56  ration.registryV
244b0 65 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a  ersion = text;..
244c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
244e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244f0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
24500 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
24510 22 73 74 72 69 63 74 22 29 29 0d 0a 20 20 20 20  "strict"))..    
24520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24530 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24550 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
24560 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
24570 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
24580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24590 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
245a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
245b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
245d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245e0 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
245f0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
24600 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
24610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24620 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
24630 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
24640 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
24650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
24680 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
24690 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
246a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246b0 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
246c0 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
246d0 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
246e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24700 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
24710 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
24720 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
24730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24740 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
24750 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
24760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24770 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24780 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
24790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247a0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
247b0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
247c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
247e0 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
247f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24800 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
24810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24820 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24840 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
24850 6c 6c 6f 77 20 74 68 65 20 63 6f 6d 6d 61 6e 64  llow the command
24860 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 20   line arguments 
24870 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  to..            
24880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24890 2f 2f 20 20 20 20 20 20 20 6f 76 65 72 72 69 64  //       overrid
248a0 65 20 74 68 65 20 22 73 74 72 69 63 74 6e 65 73  e the "strictnes
248b0 73 22 20 73 65 74 74 69 6e 67 0d 0a 20 20 20 20  s" setting..    
248c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
248e0 20 70 72 6f 76 69 64 65 64 20 62 79 20 6f 75 72   provided by our
248f0 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20 20 20 20   caller...      
24900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24910 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
24920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24930 20 20 20 20 20 20 73 74 72 69 63 74 20 3d 20 28        strict = (
24940 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
24950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24960 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24980 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
24990 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 74 68  tion(newArg, "th
249a0 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 22 29 29 0d  rowOnMissing")).
249b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
249c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
249d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249e0 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
249f0 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
24a00 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
24a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
24a30 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
24a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a70 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
24a80 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
24a90 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
24aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ac0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
24ad0 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
24ae0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
24af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b00 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
24b10 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
24b20 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
24b50 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
24b60 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
24b70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b90 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
24ba0 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
24bb0 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
24be0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
24bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c10 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
24c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c40 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
24c50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c70 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
24c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
24ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cb0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
24cc0 67 75 72 61 74 69 6f 6e 2e 74 68 72 6f 77 4f 6e  guration.throwOn
24cd0 4d 69 73 73 69 6e 67 20 3d 20 28 62 6f 6f 6c 29  Missing = (bool)
24ce0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
24cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d00 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
24d10 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
24d20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
24d30 6e 65 77 41 72 67 2c 20 22 74 72 61 63 65 46 6f  newArg, "traceFo
24d40 72 6d 61 74 22 29 29 0d 0a 20 20 20 20 20 20 20  rmat"))..       
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d80 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72  configuration.tr
24d90 61 63 65 46 6f 72 6d 61 74 20 3d 20 74 65 78 74  aceFormat = text
24da0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
24db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
24dc0 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46 6f 72  raceOps.TraceFor
24dd0 6d 61 74 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  mat = configurat
24de0 69 6f 6e 2e 74 72 61 63 65 46 6f 72 6d 61 74 3b  ion.traceFormat;
24df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24e00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
24e30 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
24e40 2c 20 22 74 72 61 63 65 50 72 69 6f 72 69 74 79  , "tracePriority
24e50 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
24e60 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e80 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
24e90 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  ct value = Parse
24ea0 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  Enum(..         
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ec0 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54 72         typeof(Tr
24ed0 61 63 65 50 72 69 6f 72 69 74 79 29 2c 20 74 65  acePriority), te
24ee0 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  xt, true);....  
24ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
24f10 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
24f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f50 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
24f60 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
24f70 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
24fb0 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
24fc0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
24fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fe0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
24ff0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
25000 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
25030 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61 6c 75  Invalid {0} valu
25040 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
25050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
25070 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
25080 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
25090 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
250a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
250c0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
250d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
250f0 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
25100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25110 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25120 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
25130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25140 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
25150 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25170 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25190 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
251a0 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74 79 20  n.tracePriority 
251b0 3d 20 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  = (TracePriority
251c0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 54 72       TraceOps.Tr
251f0 61 63 65 50 72 69 6f 72 69 74 79 20 3d 20 63 6f  acePriority = co
25200 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72 61 63  nfiguration.trac
25210 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  ePriority;..    
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25230 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
25240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
25250 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
25260 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76 65 72  ion(newArg, "ver
25270 62 6f 73 65 22 29 29 0d 0a 20 20 20 20 20 20 20  bose"))..       
25280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
252a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252b0 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
252c0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
252d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252f0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
25300 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
25310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25340 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
25350 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
25360 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
25370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25380 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
25390 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
253a0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
253b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253d0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
253e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
253f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25410 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
25420 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
25430 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
25440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25450 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
25460 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
25470 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
25480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254a0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
254b0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
254c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254d0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
254e0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
254f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25500 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
25510 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
25520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25530 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
25540 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
25550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25560 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25580 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
25590 2e 76 65 72 62 6f 73 65 20 3d 20 28 62 6f 6f 6c  .verbose = (bool
255a0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
255b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
255d0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
255e0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
255f0 28 6e 65 77 41 72 67 2c 20 22 76 73 56 65 72 73  (newArg, "vsVers
25600 69 6f 6e 53 75 66 66 69 78 22 29 29 0d 0a 20 20  ionSuffix"))..  
25610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25620 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25640 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
25650 6f 6e 2e 76 73 56 65 72 73 69 6f 6e 53 75 66 66  on.vsVersionSuff
25660 69 78 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20  ix = text;..    
25670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25680 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
25690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
256a0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
256b0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 77 68 61  ion(newArg, "wha
256c0 74 49 66 22 29 29 0d 0a 20 20 20 20 20 20 20 20  tIf"))..        
256d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
256f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
25700 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
25710 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
25720 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25740 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
25750 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25770 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25790 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
257a0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
257b0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
257c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257d0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
257e0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
257f0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25820 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
25830 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
25840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25860 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
25870 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
25880 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
25890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258a0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
258b0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
258c0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
258d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
258e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258f0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
25900 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
25910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25920 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
25930 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
25940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25950 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25960 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
25970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25980 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
25990 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
259a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
259c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259d0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
259e0 77 68 61 74 49 66 20 3d 20 28 62 6f 6f 6c 29 76  whatIf = (bool)v
259f0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
25a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25a20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
25a30 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
25a40 65 77 41 72 67 2c 20 22 77 6f 77 36 34 22 29 29  ewArg, "wow64"))
25a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25a60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a80 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
25a90 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
25aa0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
25ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ac0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
25ad0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
25ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25af0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b10 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
25b20 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
25b30 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
25b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b60 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
25b70 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
25b80 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ba0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
25bb0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
25bc0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
25bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
25bf0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
25c00 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
25c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c30 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
25c40 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
25c50 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
25c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
25c80 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
25c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cb0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ce0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
25cf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d10 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d50 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
25d60 69 67 75 72 61 74 69 6f 6e 2e 77 6f 77 36 34 20  iguration.wow64 
25d70 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
25d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25db0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
25dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25dd0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25df0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
25e00 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
25e10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e30 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
25e40 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
25e50 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
25e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e70 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
25e80 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
25e90 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
25ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25eb0 20 20 20 20 20 20 22 55 6e 73 75 70 70 6f 72 74        "Unsupport
25ec0 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ed command line 
25ed0 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a 20  option: {0}",.. 
25ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
25f00 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c  orDisplay(arg)),
25f10 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
25f20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f40 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
25f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f60 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25f70 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
25f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f90 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
25fa0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
25fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fc0 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
25fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25fe0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
25ff0 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
26000 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20  ption e)..      
26010 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26030 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
26040 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
26050 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a  ority.Highest,..
26060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26070 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
26080 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
26090 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61  back, e, traceCa
260a0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
260b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260c0 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20  error = "Failed 
260d0 74 6f 20 6d 6f 64 69 66 79 20 63 6f 6e 66 69 67  to modify config
260e0 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20  uration.";..    
260f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
26100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26110 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
26120 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
26130 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
26140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26180 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26190 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
261a0 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
261b0 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
261c0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
261d0 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 6f 63 65  tatic bool Proce
261e0 73 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss(..           
261f0 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
26200 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs,..           
26210 20 20 20 20 20 43 6f 6e 66 69 67 75 72 61 74 69       Configurati
26220 6f 6e 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  on configuration
26230 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26240 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74 2c 0d     bool strict,.
26250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26260 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
26270 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
26280 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
26290 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
262a0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
262b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
262c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262d0 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
262e0 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
262f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26300 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26310 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
26320 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 63 6f 6e  r = "Invalid con
26330 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20  figuration.";.. 
26340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26350 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
26360 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
26370 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26390 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
263a0 6d 62 6c 79 20 3d 20 63 6f 6e 66 69 67 75 72 61  mbly = configura
263b0 74 69 6f 6e 2e 61 73 73 65 6d 62 6c 79 3b 0d 0a  tion.assembly;..
263c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
263d0 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
263e0 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
263f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26400 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26410 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
26420 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 61 73 73  r = "Invalid ass
26430 65 6d 62 6c 79 2e 22 3b 0d 0a 20 20 20 20 20 20  embly.";..      
26440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26450 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
26460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26470 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
26490 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   (!configuration
264a0 2e 6e 6f 54 72 61 63 65 29 0d 0a 20 20 20 20 20  .noTrace)..     
264b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
264c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
264d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63            if (!c
264e0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4c  onfiguration.noL
264f0 6f 67 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  og &&..         
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26510 20 20 20 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c     String.IsNull
26520 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69 67 75 72  OrEmpty(configur
26530 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d  ation.logFileNam
26540 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26590 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
265a0 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66  OTE: Use the def
265b0 61 75 6c 74 20 6c 6f 67 20 66 69 6c 65 20 6e 61  ault log file na
265c0 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
265d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
265f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26600 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c   configuration.l
26610 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 47 65 74  ogFileName = Get
26620 4c 6f 67 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20  LogFileName(..  
26630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 74                "t
26650 72 61 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  race");..       
26660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26670 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
26680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
266c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
266d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266e0 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74   if (!configurat
266f0 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 29 0d 0a  ion.noConsole)..
26700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26710 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
26720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26730 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
26740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26750 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
26760 49 6e 20 76 65 72 62 6f 73 65 20 6d 6f 64 65 2c  In verbose mode,
26770 20 64 65 62 75 67 20 6f 75 74 70 75 74 20 28 74   debug output (t
26780 68 61 74 20 6d 65 65 74 73 0d 0a 20 20 20 20 20  hat meets..     
26790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
267b0 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 70  the configured p
267c0 72 69 6f 72 69 74 79 20 63 72 69 74 65 72 69 61  riority criteria
267d0 29 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  ) will be..     
267e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
26800 64 69 73 70 6c 61 79 65 64 20 74 6f 20 74 68 65  displayed to the
26810 20 63 6f 6e 73 6f 6c 65 3b 20 6f 74 68 65 72 77   console; otherw
26820 69 73 65 2c 20 74 72 61 63 65 0d 0a 20 20 20 20  ise, trace..    
26830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26840 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
26850 20 6f 75 74 70 75 74 20 28 74 68 61 74 20 6d 65   output (that me
26860 65 74 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ets the configur
26870 65 64 20 70 72 69 6f 72 69 74 79 0d 0a 20 20 20  ed priority..   
26880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26890 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
268a0 20 20 63 72 69 74 65 72 69 61 29 20 77 69 6c 6c    criteria) will
268b0 20 62 65 20 64 69 73 70 6c 61 79 65 64 20 74 6f   be displayed to
268c0 20 74 68 65 20 63 6f 6e 73 6f 6c 65 2e 0d 0a 20   the console... 
268d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
268f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26900 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
26910 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62  onfiguration.deb
26920 75 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ug)..           
26930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26940 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26960 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26980 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
26990 20 41 64 64 20 74 68 65 20 63 6f 6e 73 6f 6c 65   Add the console
269a0 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65 72 20   trace listener 
269b0 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
269c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
269e0 20 6c 69 73 74 20 6f 66 20 74 72 61 63 65 20 6c   list of trace l
269f0 69 73 74 65 6e 65 72 73 20 6d 61 69 6e 74 61 69  isteners maintai
26a00 6e 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20  ned by..        
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
26a30 20 74 68 65 20 54 72 61 63 65 4f 70 73 20 63 6c   the TraceOps cl
26a40 61 73 73 20 28 69 2e 65 2e 20 6f 6e 6c 79 20 6d  ass (i.e. only m
26a50 65 73 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20  essages..       
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a70 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
26a80 20 20 74 68 61 74 20 6d 65 65 74 20 74 68 65 20    that meet the 
26a90 64 65 62 75 67 20 70 72 69 6f 72 69 74 79 20 77  debug priority w
26aa0 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
26ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ac0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
26ad0 20 73 65 65 6e 20 6f 6e 20 74 68 65 20 63 6f 6e   seen on the con
26ae0 73 6f 6c 65 29 2e 0d 0a 20 20 20 20 20 20 20 20  sole)...        
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b00 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
26b30 65 4f 70 73 2e 53 65 74 75 70 44 65 62 75 67 4c  eOps.SetupDebugL
26b40 69 73 74 65 6e 65 72 73 28 29 3b 0d 0a 20 20 20  isteners();..   
26b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b60 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
26b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b80 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
26b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ba0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bf0 20 2f 2f 20 4e 4f 54 45 3a 20 41 64 64 20 74 68   // NOTE: Add th
26c00 65 20 63 6f 6e 73 6f 6c 65 20 74 72 61 63 65 20  e console trace 
26c10 6c 69 73 74 65 6e 65 72 20 74 6f 20 74 68 65 0d  listener to the.
26c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c40 20 2f 2f 20 20 20 20 20 20 20 6c 69 73 74 20 6f   //       list o
26c50 66 20 62 75 69 6c 74 2d 69 6e 20 74 72 61 63 65  f built-in trace
26c60 20 6c 69 73 74 65 6e 65 72 73 20 28 69 2e 65 2e   listeners (i.e.
26c70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c90 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
26ca0 6d 65 73 73 61 67 65 73 20 74 68 61 74 20 6d 65  messages that me
26cb0 65 74 20 74 68 65 20 74 72 61 63 65 0d 0a 20 20  et the trace..  
26cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26ce0 20 20 20 20 20 20 20 70 72 69 6f 72 69 74 79 20         priority 
26cf0 77 69 6c 6c 20 62 65 20 73 65 65 6e 20 6f 6e 20  will be seen on 
26d00 74 68 65 20 63 6f 6e 73 6f 6c 65 29 2e 0d 0a 20  the console)... 
26d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26d30 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
26d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d50 20 20 20 54 72 61 63 65 2e 4c 69 73 74 65 6e 65     Trace.Listene
26d60 72 73 2e 41 64 64 28 6e 65 77 20 43 6f 6e 73 6f  rs.Add(new Conso
26d70 6c 65 54 72 61 63 65 4c 69 73 74 65 6e 65 72 28  leTraceListener(
26d80 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26da0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
26db0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
26dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26dd0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
26de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26e10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26e20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26e30 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e  !configuration.n
26e40 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20 20 20  oLog &&..       
26e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e60 20 20 20 20 20 21 53 74 72 69 6e 67 2e 49 73 4e       !String.IsN
26e70 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69  ullOrEmpty(confi
26e80 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65  guration.logFile
26e90 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26eb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
26ed0 72 61 63 65 2e 4c 69 73 74 65 6e 65 72 73 2e 41  race.Listeners.A
26ee0 64 64 28 6e 65 77 20 54 65 78 74 57 72 69 74 65  dd(new TextWrite
26ef0 72 54 72 61 63 65 4c 69 73 74 65 6e 65 72 28 0d  rTraceListener(.
26f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c   configuration.l
26f30 6f 67 46 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 0d  ogFileName));...
26f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26f50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
26f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26f70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
26f80 4e 4f 54 45 3a 20 54 65 63 68 6e 69 63 61 6c 6c  NOTE: Technicall
26f90 79 2c 20 77 65 20 63 72 65 61 74 65 64 20 74 68  y, we created th
26fa0 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20  e log file...   
26fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fc0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
26fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fe0 20 20 20 20 20 20 20 20 20 66 69 6c 65 73 43 72           filesCr
26ff0 65 61 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20  eated++;..      
27000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27010 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
27020 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
27030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27040 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
27050 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
27060 45 3a 20 44 75 6d 70 20 74 68 65 20 63 6f 6e 66  E: Dump the conf
27070 69 67 75 72 61 74 69 6f 6e 20 6e 6f 77 20 69 6e  iguration now in
27080 20 63 61 73 65 20 77 65 20 6e 65 65 64 20 74 6f   case we need to
27090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
270a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
270b0 72 6f 75 62 6c 65 73 68 6f 6f 74 20 61 6e 79 20  roubleshoot any 
270c0 69 73 73 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  issues...       
270d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
270e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
270f0 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
27100 72 61 74 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f  ration.debugPrio
27110 72 69 74 79 20 3c 3d 20 54 72 61 63 65 50 72 69  rity <= TracePri
27120 6f 72 69 74 79 2e 4d 65 64 69 75 6d 29 0d 0a 20  ority.Medium).. 
27130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27140 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
27150 74 69 6f 6e 2e 44 75 6d 70 28 64 65 62 75 67 43  tion.Dump(debugC
27160 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  allback);....   
27170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27180 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
27190 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74 79  on.tracePriority
271a0 20 3c 3d 20 54 72 61 63 65 50 72 69 6f 72 69 74   <= TracePriorit
271b0 79 2e 4d 65 64 69 75 6d 29 0d 0a 20 20 20 20 20  y.Medium)..     
271c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271d0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
271e0 2e 44 75 6d 70 28 74 72 61 63 65 43 61 6c 6c 62  .Dump(traceCallb
271f0 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
27200 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27210 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27220 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
27230 6f 77 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ow where we are 
27240 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 61 6e 64  running from and
27250 20 68 6f 77 20 77 65 20 77 65 72 65 0d 0a 20 20   how we were..  
27260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27270 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 76 6f 6b    //       invok
27280 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed...           
27290 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
272a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272b0 20 73 74 72 69 6e 67 20 6c 6f 63 61 74 69 6f 6e   string location
272c0 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
272d0 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tion;....       
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
272f0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
27300 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
27310 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20  y.MediumLow,..  
27320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27330 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
27340 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
27350 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
27360 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
27370 20 20 20 20 20 20 20 20 20 20 20 20 22 52 75 6e              "Run
27380 6e 69 6e 67 20 65 78 65 63 75 74 61 62 6c 65 20  ning executable 
27390 69 73 3a 20 7b 30 7d 22 2c 20 46 6f 72 44 69 73  is: {0}", ForDis
273a0 70 6c 61 79 28 6c 6f 63 61 74 69 6f 6e 29 29 2c  play(location)),
273b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273c0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
273d0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
273e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273f0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
27400 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
27410 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c  ority.MediumLow,
27420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27430 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
27440 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
27450 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
27460 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
27470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27480 22 4f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e  "Original comman
27490 64 20 6c 69 6e 65 20 69 73 3a 20 7b 30 7d 22 2c  d line is: {0}",
274a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
274b0 20 20 20 20 20 20 20 20 20 20 45 6e 76 69 72 6f            Enviro
274c0 6e 6d 65 6e 74 2e 43 6f 6d 6d 61 6e 64 4c 69 6e  nment.CommandLin
274d0 65 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  e), traceCategor
274e0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
274f0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
27500 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
27510 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
27520 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20 20 20  MediumLow,..    
27530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27540 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
27550 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
27560 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
27570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27580 20 20 20 20 20 20 20 20 20 20 22 52 75 6e 6e 69            "Runni
27590 6e 67 20 70 72 6f 63 65 73 73 20 69 73 20 7b 30  ng process is {0
275a0 7d 2e 22 2c 20 49 73 36 34 42 69 74 50 72 6f 63  }.", Is64BitProc
275b0 65 73 73 28 29 20 3f 0d 0a 20 20 20 20 20 20 20  ess() ?..       
275c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275d0 20 20 20 20 20 22 36 34 2d 62 69 74 22 20 3a 20       "64-bit" : 
275e0 22 33 32 2d 62 69 74 22 29 2c 20 74 72 61 63 65  "32-bit"), trace
275f0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
27600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27610 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61    if (!configura
27620 74 69 6f 6e 2e 77 68 61 74 49 66 29 0d 0a 20 20  tion.whatIf)..  
27630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27640 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27650 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27670 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
27680 3a 20 49 66 20 74 68 65 20 64 65 62 75 67 67 65  : If the debugge
27690 72 20 69 73 20 61 74 74 61 63 68 65 64 20 61 6e  r is attached an
276a0 64 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  d "what-if"..   
276b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 6f       //       mo
276d0 64 65 20 69 73 20 5b 6e 6f 77 5d 20 64 69 73 61  de is [now] disa
276e0 62 6c 65 64 2c 20 69 73 73 75 65 20 61 20 77 61  bled, issue a wa
276f0 72 6e 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  rning...        
27700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27710 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27720 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
27730 44 65 62 75 67 67 65 72 2e 49 73 41 74 74 61 63  Debugger.IsAttac
27740 68 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  hed)..          
27750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27760 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27770 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
27780 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
27790 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
277a0 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20  y.MediumHigh,.. 
277b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
277d0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
277e0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  aceCallback,..  
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
27810 6f 72 63 65 64 20 74 6f 20 64 69 73 61 62 6c 65  orced to disable
27820 20 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d 6f 64   \"what-if\" mod
27830 65 20 77 69 74 68 20 22 20 2b 0d 0a 20 20 20 20  e with " +..    
27840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27850 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65 62              "deb
27860 75 67 67 65 72 20 61 74 74 61 63 68 65 64 2e 22  ugger attached."
27870 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
27880 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
27890 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
278a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278b0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
278c0 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
278d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
27900 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
27910 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
27920 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a  ty.MediumHigh,..
27930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27940 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
27950 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
27960 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
27970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27980 20 20 20 20 20 20 20 22 4e 6f 20 61 63 74 75 61         "No actua
27990 6c 20 63 68 61 6e 67 65 73 20 77 69 6c 6c 20 62  l changes will b
279a0 65 20 6d 61 64 65 20 74 6f 20 74 68 69 73 20 22  e made to this "
279b0 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
279c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279d0 22 73 79 73 74 65 6d 20 62 65 63 61 75 73 65 20  "system because 
279e0 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d 6f 64 65  \"what-if\" mode
279f0 20 69 73 20 65 6e 61 62 6c 65 64 2e 22 2c 0d 0a   is enabled.",..
27a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a10 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
27a20 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
27a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27a50 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
27a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a70 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
27a80 65 20 72 65 67 69 73 74 72 79 20 6c 6f 67 20 66  e registry log f
27a90 69 6c 65 20 6e 61 6d 65 20 68 61 73 20 62 65 65  ile name has bee
27aa0 6e 20 73 65 74 2c 20 69 74 73 0d 0a 20 20 20 20  n set, its..    
27ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ac0 2f 2f 20 20 20 20 20 20 20 76 61 6c 75 65 20 77  //       value w
27ad0 69 6c 6c 20 62 65 20 75 73 65 64 20 76 65 72 62  ill be used verb
27ae0 61 74 69 6d 20 61 73 20 74 68 65 20 70 6c 61 63  atim as the plac
27af0 65 20 77 68 65 72 65 0d 0a 20 20 20 20 20 20 20  e where..       
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27b10 20 20 20 20 20 20 61 6c 6c 20 72 65 67 69 73 74        all regist
27b20 72 79 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  ry write operati
27b30 6f 6e 73 20 77 69 6c 6c 20 28 65 76 65 6e 74 75  ons will (eventu
27b40 61 6c 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20  ally)..         
27b50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
27b60 20 20 20 20 62 65 20 6c 6f 67 67 65 64 2e 20 20      be logged.  
27b70 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20 72 65  Make sure the re
27b80 67 69 73 74 72 79 20 68 65 6c 70 65 72 20 63 6c  gistry helper cl
27b90 61 73 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ass..           
27ba0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
27bb0 20 20 68 61 73 20 61 20 76 61 6c 69 64 20 6f 70    has a valid op
27bc0 65 72 61 74 69 6f 6e 20 6c 69 73 74 3b 20 6f 74  eration list; ot
27bd0 68 65 72 77 69 73 65 2c 20 69 74 20 77 69 6c 6c  herwise, it will
27be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27bf0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e        //       n
27c00 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e 79 20 6c  ot perform any l
27c10 6f 67 67 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  ogging...       
27c20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c40 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
27c50 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72 79 4c  ration.registryL
27c60 6f 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75  ogFileName != nu
27c70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27c80 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
27c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ca0 20 20 20 20 52 65 67 69 73 74 72 79 48 65 6c 70      RegistryHelp
27cb0 65 72 2e 45 6e 61 62 6c 65 4f 72 44 69 73 61 62  er.EnableOrDisab
27cc0 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28  leOperationList(
27cd0 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
27ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27cf0 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
27d00 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
27d10 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67  iority.MediumHig
27d20 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h,..            
27d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d40 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
27d50 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
27d60 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
27d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d80 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73            "Regis
27d90 74 72 79 20 6c 6f 67 67 69 6e 67 20 74 6f 20 66  try logging to f
27da0 69 6c 65 20 7b 30 7d 20 65 6e 61 62 6c 65 64 2e  ile {0} enabled.
27db0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
27dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27dd0 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 6e 66 69  ForDisplay(confi
27de0 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72  guration.registr
27df0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d  yLogFileName)),.
27e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
27e20 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
27e50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
27e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e70 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
27e80 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  he command line 
27e90 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 6d 61 6e  has not been man
27ea0 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  ually..         
27eb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
27ec0 20 20 20 20 63 6f 6e 66 69 72 6d 65 64 20 28 69      confirmed (i
27ed0 2e 65 2e 20 76 69 61 20 74 68 65 20 65 78 70 6c  .e. via the expl
27ee0 69 63 69 74 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  icit command lin
27ef0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
27f00 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
27f10 6f 70 74 69 6f 6e 29 2c 20 74 68 65 6e 20 73 74  option), then st
27f20 6f 70 20 70 72 6f 63 65 73 73 69 6e 67 20 6e 6f  op processing no
27f30 77 2e 20 20 57 65 20 65 6e 66 6f 72 63 65 0d 0a  w.  We enforce..
27f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
27f60 73 20 72 75 6c 65 20 73 6f 20 74 68 61 74 20 73  s rule so that s
27f70 69 6d 70 6c 79 20 64 6f 75 62 6c 65 2d 63 6c 69  imply double-cli
27f80 63 6b 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  cking the..     
27f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
27fa0 2f 20 20 20 20 20 20 20 65 78 65 63 75 74 61 62  /       executab
27fb0 6c 65 20 77 69 6c 6c 20 6e 6f 74 20 72 65 73 75  le will not resu
27fc0 6c 74 20 69 6e 20 61 6e 79 20 63 68 61 6e 67 65  lt in any change
27fd0 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20  s being..       
27fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27ff0 20 20 20 20 20 20 6d 61 64 65 20 74 6f 20 74 68        made to th
28000 65 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20  e system...     
28010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28020 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
28030 20 20 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66         if (!conf
28040 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 72  iguration.confir
28050 6d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m)..            
28060 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28080 20 20 20 65 72 72 6f 72 20 3d 20 22 43 61 6e 6e     error = "Cann
28090 6f 74 20 63 6f 6e 74 69 6e 75 65 2c 20 74 68 65  ot continue, the
280a0 20 5c 22 63 6f 6e 66 69 72 6d 5c 22 20 6f 70 74   \"confirm\" opt
280b0 69 6f 6e 20 69 73 20 22 20 2b 0d 0a 20 20 20 20  ion is " +..    
280c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280d0 20 20 20 20 20 20 20 20 22 6e 6f 74 20 65 6e 61          "not ena
280e0 62 6c 65 64 2e 22 3b 0d 0a 0d 0a 20 20 20 20 20  bled.";....     
280f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28100 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
28110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28120 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
28130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28140 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
28150 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
28160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28170 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
28180 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   e)..           
28190 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
281a0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
281b0 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
281c0 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  ce(TracePriority
281d0 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20  .Highest,..     
281e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281f0 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
28200 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
28210 20 65 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72   e, traceCategor
28220 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
28230 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
28240 20 3d 20 22 46 61 69 6c 65 64 20 74 6f 20 70 72   = "Failed to pr
28250 6f 63 65 73 73 20 63 6f 6e 66 69 67 75 72 61 74  ocess configurat
28260 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20  ion.";..        
28270 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
28280 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28290 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
282a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
282b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
282c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
282f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28300 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
28310 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
28320 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
28330 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
28340 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
28350 63 20 62 6f 6f 6c 20 43 68 65 63 6b 52 75 6e 74  c bool CheckRunt
28360 69 6d 65 56 65 72 73 69 6f 6e 28 0d 0a 20 20 20  imeVersion(..   
28370 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
28380 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66 69  figuration confi
28390 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  guration,..     
283a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
283b0 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20 20  strict,..       
283c0 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
283d0 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
283e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
283f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28400 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
28410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28420 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28430 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
28440 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20 6e 75  figuration == nu
28450 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
28460 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28480 20 20 20 20 65 72 72 6f 72 20 3d 20 22 49 6e 76      error = "Inv
28490 61 6c 69 64 20 63 6f 6e 66 69 67 75 72 61 74 69  alid configurati
284a0 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  on.";..         
284b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
284c0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
284d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
284f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28510 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 61 74     // NOTE: What
28520 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
28530 72 75 6e 74 69 6d 65 20 77 61 73 20 74 68 65 20  runtime was the 
28540 63 6f 72 65 20 28 70 72 69 6d 61 72 79 29 0d 0a  core (primary)..
28550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28560 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
28570 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64 20 61  embly compiled a
28580 67 61 69 6e 73 74 20 28 65 2e 67 2e 20 22 76 32  gainst (e.g. "v2
28590 2e 30 2e 35 30 37 32 37 22 20 6f 72 0d 0a 20 20  .0.50727" or..  
285a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285b0 20 20 2f 2f 20 20 20 20 20 20 20 22 76 34 2e 30    //       "v4.0
285c0 2e 33 30 33 31 39 22 29 2e 0d 0a 20 20 20 20 20  .30319")...     
285d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
285e0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
285f0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
28600 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
28610 72 73 69 6f 6e 20 3d 20 47 65 74 49 6d 61 67 65  rsion = GetImage
28620 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d  RuntimeVersion(.
28630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28640 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
28650 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e  ration.coreFileN
28660 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
28670 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28690 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
286a0 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74 75 61   allow the actua
286b0 6c 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20  l image runtime 
286c0 63 68 65 63 6b 69 6e 67 20 74 6f 20 62 65 0d 0a  checking to be..
286d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286e0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 79 70      //       byp
286f0 61 73 73 65 64 20 76 69 61 20 74 68 65 20 22 2d  assed via the "-
28700 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  noRuntimeVersion
28710 22 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0d 0a  " command line..
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28730 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 74      //       opt
28740 69 6f 6e 2e 20 20 54 68 65 20 63 6f 6d 6d 61 6e  ion.  The comman
28750 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 20 69 73  d line option is
28760 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0d 0a 20   intended for.. 
28770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28780 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 70 65     //       expe
28790 72 74 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20  rt use only...  
287a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
287c0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
287d0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 52 75  nfiguration.noRu
287e0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 0d 0a 20  ntimeVersion).. 
287f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28800 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
28810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
28820 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
28830 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
28840 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a 20 20 20 20  ty.Medium,..    
28850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28860 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
28870 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
28880 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
28890 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288b0 20 20 22 41 73 73 65 6d 62 6c 79 20 69 73 20 63    "Assembly is c
288c0 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65 20  ompiled for the 
288d0 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b  .NET Framework {
288e0 30 7d 3b 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  0}; " +..       
288f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28900 20 20 20 20 20 22 68 6f 77 65 76 65 72 2c 20 69       "however, i
28910 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 72 65 73 74  nstallation rest
28920 72 69 63 74 69 6f 6e 73 20 62 61 73 65 64 20 6f  rictions based o
28930 6e 20 74 68 69 73 20 22 20 2b 0d 0a 20 20 20 20  n this " +..    
28940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28950 20 20 20 20 20 20 20 20 22 66 61 63 74 20 68 61          "fact ha
28960 76 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  ve been disabled
28970 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e 64   via the command
28980 20 6c 69 6e 65 2e 22 2c 0d 0a 20 20 20 20 20 20   line.",..      
28990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289a0 20 20 20 20 20 20 63 6f 72 65 49 6d 61 67 65 52        coreImageR
289b0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 2c 20  untimeVersion), 
289c0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
289d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
289e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
289f0 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
28a00 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
28a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28a40 20 54 4f 44 4f 3a 20 52 65 73 74 72 69 63 74 20   TODO: Restrict 
28a50 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
28a60 6e 20 62 61 73 65 64 20 6f 6e 20 77 68 69 63 68  n based on which
28a70 20 69 6d 61 67 65 0d 0a 20 20 20 20 20 20 20 20   image..        
28a80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
28a90 20 20 20 20 20 72 75 6e 74 69 6d 65 20 76 65 72       runtime ver
28aa0 73 69 6f 6e 73 20 28 77 68 69 63 68 20 6d 6f 72  sions (which mor
28ab0 65 2d 6f 72 2d 6c 65 73 73 20 63 6f 72 72 65 73  e-or-less corres
28ac0 70 6f 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20  pond..          
28ad0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
28ae0 20 20 20 74 6f 20 2e 4e 45 54 20 46 72 61 6d 65     to .NET Frame
28af0 77 6f 72 6b 20 76 65 72 73 69 6f 6e 73 29 20 61  work versions) a
28b00 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
28b10 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
28b20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
28b30 20 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 56 69    versions of Vi
28b40 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
28b50 20 61 72 65 20 69 6e 73 74 61 6c 6c 65 64 2e 0d   are installed..
28b60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28b70 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
28b80 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
28b90 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
28ba0 45 6d 70 74 79 28 63 6f 72 65 49 6d 61 67 65 52  Empty(coreImageR
28bb0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 29 0d  untimeVersion)).
28bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28bd0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28bf0 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64  error = "invalid
28c00 20 63 6f 72 65 20 66 69 6c 65 20 69 6d 61 67 65   core file image
28c10 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e   runtime version
28c20 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
28c30 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28c40 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
28c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
28c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28c70 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53        else if (S
28c80 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
28c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ca0 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 49             coreI
28cb0 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
28cc0 6f 6e 2c 20 43 4c 52 76 32 49 6d 61 67 65 52 75  on, CLRv2ImageRu
28cd0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d 0a 20  ntimeVersion,.. 
28ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28cf0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
28d00 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
28d10 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nal))..         
28d20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
28d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d40 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
28d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d60 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72 20 74    // NOTE: For t
28d70 68 65 20 43 4c 52 20 76 32 2e 30 20 72 75 6e 74  he CLR v2.0 runt
28d80 69 6d 65 2c 20 6d 61 6b 65 20 73 75 72 65 20 77  ime, make sure w
28d90 65 20 64 69 73 61 62 6c 65 0d 0a 20 20 20 20 20  e disable..     
28da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28db0 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 20     //       any 
28dc0 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 69  attempt to use i
28dd0 74 20 66 6f 72 20 74 68 69 6e 67 73 20 74 68 61  t for things tha
28de0 74 20 72 65 71 75 69 72 65 0d 0a 20 20 20 20 20  t require..     
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e00 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 20 61     //       an a
28e10 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64  ssembly compiled
28e20 20 66 6f 72 20 74 68 65 20 43 4c 52 20 76 34 2e   for the CLR v4.
28e30 30 2e 20 20 49 74 20 69 73 0d 0a 20 20 20 20 20  0.  It is..     
28e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e50 20 20 20 2f 2f 20 20 20 20 20 20 20 75 6e 63 65     //       unce
28e60 72 74 61 69 6e 20 69 66 20 74 68 69 73 20 69 73  rtain if this is
28e70 20 61 63 74 75 61 6c 6c 79 20 61 20 70 72 6f 62   actually a prob
28e80 6c 65 6d 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  lem in..        
28e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ea0 2f 2f 20 20 20 20 20 20 20 70 72 61 63 74 69 63  //       practic
28eb0 65 20 61 73 20 74 68 65 20 43 4c 52 20 76 34 2e  e as the CLR v4.
28ec0 30 20 63 61 6e 20 6c 6f 61 64 20 61 6e 64 20 75  0 can load and u
28ed0 73 65 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 20  se an..         
28ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28ef0 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
28f00 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
28f10 68 65 20 43 4c 52 20 76 32 2e 30 3b 20 68 6f 77  he CLR v2.0; how
28f20 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  ever,..         
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28f40 2f 20 20 20 20 20 20 20 73 69 6e 63 65 20 74 68  /       since th
28f50 69 73 20 70 72 6f 6a 65 63 74 20 6f 66 66 65 72  is project offer
28f60 73 20 62 6f 74 68 20 63 6f 6e 66 69 67 75 72 61  s both configura
28f70 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20  tions,..        
28f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f90 2f 2f 20 20 20 20 20 20 20 77 65 20 63 75 72 72  //       we curr
28fa0 65 6e 74 6c 79 20 64 69 73 61 6c 6c 6f 77 20 74  ently disallow t
28fb0 68 69 73 20 6d 69 73 6d 61 74 63 68 2e 0d 0a 20  his mismatch... 
28fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fd0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ff0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
29000 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 74 72 75  .noNetFx40 = tru
29010 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
29020 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
29030 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
29040 78 34 35 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  x45 = true;..   
29050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29060 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
29070 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20  on.noNetFx451 = 
29080 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
29090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
290a0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
290b0 65 74 46 78 34 35 32 20 3d 20 74 72 75 65 3b 0d  etFx452 = true;.
290c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
290d0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
290e0 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36  ration.noNetFx46
290f0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
29100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29110 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
29120 6e 6f 4e 65 74 46 78 34 36 31 20 3d 20 74 72 75  noNetFx461 = tru
29130 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
29140 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
29150 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
29160 78 34 36 32 20 3d 20 74 72 75 65 3b 0d 0a 20 20  x462 = true;..  
29170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29180 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
29190 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 20 3d 20  ion.noNetFx47 = 
291a0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
291b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
291c0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
291d0 65 74 46 78 34 37 31 20 3d 20 74 72 75 65 3b 0d  etFx471 = true;.
291e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
291f0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
29200 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 30 20  ration.noVs2010 
29210 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
29220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29230 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
29240 6f 56 73 32 30 31 32 20 3d 20 74 72 75 65 3b 0d  oVs2012 = true;.
29250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29260 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
29270 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 33 20  ration.noVs2013 
29280 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
29290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
292b0 6f 56 73 32 30 31 35 20 3d 20 74 72 75 65 3b 0d  oVs2015 = true;.
292c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
292d0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
292e0 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37 20  ration.noVs2017 
292f0 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
29300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29310 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
29320 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
29330 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d  riority.Medium,.
29340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
29360 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
29370 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
29380 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
29390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293a0 20 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79         "Assembly
293b0 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72   is compiled for
293c0 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
293d0 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a 20 20  ork {0}, " +..  
293e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293f0 20 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f            "suppo
29400 72 74 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20  rt for the .NET 
29410 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20 69 73  Framework {1} is
29420 20 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e 22 2c   now disabled.",
29430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 4c                CL
29450 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv2ImageRuntimeV
29460 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34 49 6d 61  ersion, CLRv4Ima
29470 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
29480 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
29490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294a0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
294b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
294c0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
294d0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
294e0 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61   if (String.Equa
294f0 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
29500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29510 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69 6d   coreImageRuntim
29520 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34 49  eVersion, CLRv4I
29530 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
29540 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
29550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29560 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
29570 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20  n.Ordinal))..   
29580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29590 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
295a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
295b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295c0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
295d0 20 46 6f 72 20 74 68 65 20 43 4c 52 20 76 34 2e   For the CLR v4.
295e0 30 20 72 75 6e 74 69 6d 65 2c 20 6d 61 6b 65 20  0 runtime, make 
295f0 73 75 72 65 20 77 65 20 64 69 73 61 62 6c 65 0d  sure we disable.
29600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29610 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
29620 20 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f    any attempt to
29630 20 75 73 65 20 69 74 20 66 6f 72 20 74 68 69 6e   use it for thin
29640 67 73 20 74 68 61 74 20 72 65 71 75 69 72 65 0d  gs that require.
29650 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29660 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
29670 20 20 61 6e 20 61 73 73 65 6d 62 6c 79 20 63 6f    an assembly co
29680 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65 20 43  mpiled for the C
29690 4c 52 20 76 32 2e 30 2e 0d 0a 20 20 20 20 20 20  LR v2.0...      
296a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296b0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
296c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
296d0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
296e0 74 46 78 32 30 20 3d 20 74 72 75 65 3b 0d 0a 20  tFx20 = true;.. 
296f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29700 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
29710 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 33 35 20 3d  tion.noNetFx35 =
29720 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
29730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29740 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
29750 56 73 32 30 30 35 20 3d 20 74 72 75 65 3b 0d 0a  Vs2005 = true;..
29760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29770 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
29780 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 30 38 20 3d  ation.noVs2008 =
29790 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
297a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297b0 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
297c0 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
297d0 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a  iority.Medium,..
297e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297f0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
29800 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
29810 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
29820 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
29830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29840 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 20        "Assembly 
29850 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20  is compiled for 
29860 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
29870 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a 20 20 20  rk {0}, " +..   
29880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29890 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f 72           "suppor
298a0 74 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46  t for the .NET F
298b0 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20 69 73 20  ramework {1} is 
298c0 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e 22 2c 0d  now disabled.",.
298d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
298e0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
298f0 44 69 73 70 6c 61 79 28 43 4c 52 76 34 49 6d 61  Display(CLRv4Ima
29900 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
29910 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
29920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29930 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76 32  ForDisplay(CLRv2
29940 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73  ImageRuntimeVers
29950 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ion)),..        
29960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29970 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
29980 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
29990 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
299a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299b0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
299c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
299d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299e0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 53 74 72       error = Str
299f0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
29a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a10 20 20 20 20 20 20 20 20 20 22 75 6e 73 75 70 70           "unsupp
29a20 6f 72 74 65 64 20 63 6f 72 65 20 66 69 6c 65 20  orted core file 
29a30 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65  image runtime ve
29a40 72 73 69 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20  rsion " +..     
29a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a60 20 20 20 20 20 20 20 22 7b 30 7d 2c 20 6d 75 73         "{0}, mus
29a70 74 20 62 65 20 7b 31 7d 20 6f 72 20 7b 32 7d 22  t be {1} or {2}"
29a80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
29aa0 6f 72 44 69 73 70 6c 61 79 28 63 6f 72 65 49 6d  orDisplay(coreIm
29ab0 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
29ac0 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n),..           
29ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ae0 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76   ForDisplay(CLRv
29af0 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  2ImageRuntimeVer
29b00 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20  sion),..        
29b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43      ForDisplay(C
29b30 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65  LRv4ImageRuntime
29b40 56 65 72 73 69 6f 6e 29 29 3b 0d 0a 0d 0a 20 20  Version));....  
29b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b60 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
29b70 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
29b80 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
29b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ba0 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
29bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bc0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
29bd0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
29be0 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
29bf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
29c10 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
29c20 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
29c30 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20  ity.Highest,..  
29c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c50 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
29c60 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
29c70 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61 74 65  ck, e, traceCate
29c80 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
29c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
29ca0 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20 74 6f  ror = "Failed to
29cb0 20 63 68 65 63 6b 20 69 6d 61 67 65 20 72 75 6e   check image run
29cc0 74 69 6d 65 20 76 65 72 73 69 6f 6e 2e 22 3b 0d  time version.";.
29cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ce0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29cf0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
29d00 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
29d10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
29d20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
29d30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
29d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
29d90 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
29da0 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20  hods..          
29db0 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
29dc0 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d   GetInvariantNam
29dd0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
29de0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
29df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
29e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29e20 20 20 72 65 74 75 72 6e 20 55 73 65 45 66 36 50    return UseEf6P
29e30 72 6f 76 69 64 65 72 28 74 72 61 63 65 29 20 3f  rovider(trace) ?
29e40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29e50 20 20 20 20 20 20 45 66 36 49 6e 76 61 72 69 61        Ef6Invaria
29e60 6e 74 4e 61 6d 65 20 3a 20 49 6e 76 61 72 69 61  ntName : Invaria
29e70 6e 74 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  ntName;..       
29e80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
29e90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
29ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
29ee0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
29ef0 20 62 6f 6f 6c 20 49 73 53 79 73 74 65 6d 45 66   bool IsSystemEf
29f00 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c 61 62  6AssemblyAvailab
29f10 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
29f20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d       bool trace.
29f30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29f40 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
29f50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
29f60 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
29f70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
29f90 66 20 28 73 79 73 74 65 6d 45 66 36 41 73 73 65  f (systemEf6Asse
29fa0 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
29fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29fc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79                sy
29fe0 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 20  stemEf6Assembly 
29ff0 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65  = Assembly.Refle
2a000 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d 0a  ctionOnlyLoad(..
2a010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a020 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74              Syst
2a030 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  emEf6AssemblyNam
2a040 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2a050 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a070 20 20 69 66 20 28 73 79 73 74 65 6d 45 66 36 41    if (systemEf6A
2a080 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
2a090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a0a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0c0 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2a0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0e0 20 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46             !HasF
2a0f0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2a100 67 73 2e 44 69 64 45 66 36 52 65 73 6f 6c 76 65  gs.DidEf6Resolve
2a110 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20  Trace, true)).. 
2a120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a130 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a150 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2a160 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2a170 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
2a180 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st,..           
2a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1a0 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
2a1b0 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
2a1c0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
2a1d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1f0 20 20 20 22 45 6e 74 69 74 79 20 46 72 61 6d 65     "Entity Frame
2a200 77 6f 72 6b 20 36 20 61 73 73 65 6d 62 6c 79 20  work 6 assembly 
2a210 77 61 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  was " +..       
2a220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a230 20 20 20 20 20 20 20 20 20 22 72 65 73 6f 6c 76           "resolv
2a240 65 64 20 74 6f 20 7b 30 7d 2e 22 2c 20 46 6f 72  ed to {0}.", For
2a250 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
2a260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a270 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d            system
2a280 45 66 36 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61  Ef6Assembly.Loca
2a290 74 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20  tion)),..       
2a2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2b0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2a2c0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2e0 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72          provider
2a2f0 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65  Flags |= Provide
2a300 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73  rFlags.DidEf6Res
2a310 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  olveTrace;..    
2a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a330 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2a340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a350 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
2a360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a370 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a380 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a390 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3b0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a3c0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
2a3d0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
2a3e0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a3f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2a400 74 72 61 63 65 20 26 26 0d 0a 20 20 20 20 20 20  trace &&..      
2a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48                !H
2a420 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2a430 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73 6f  Flags.DidEf6Reso
2a440 6c 76 65 54 72 61 63 65 2c 20 74 72 75 65 29 29  lveTrace, true))
2a450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a460 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a470 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
2a480 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
2a490 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
2a4a0 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20  ghest,..        
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4c0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
2a4d0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
2a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4f0 20 20 20 20 20 20 20 22 45 6e 74 69 74 79 20 46         "Entity F
2a500 72 61 6d 65 77 6f 72 6b 20 36 20 61 73 73 65 6d  ramework 6 assem
2a510 62 6c 79 20 77 61 73 20 6e 6f 74 20 72 65 73 6f  bly was not reso
2a520 6c 76 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20  lved.",..       
2a530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a540 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2a550 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a560 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72          provider
2a570 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65  Flags |= Provide
2a580 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73  rFlags.DidEf6Res
2a590 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  olveTrace;..    
2a5a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2a5b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a5c0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
2a5d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2a5e0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2a5f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2a600 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2a610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a640 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2a650 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2a660 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Public Methods..
2a670 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2a680 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73  ic bool HasFlags
2a690 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a6a0 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73 20     InstallFlags 
2a6b0 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20  hasFlags,..     
2a6c0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
2a6d0 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  all..           
2a6e0 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2a6f0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2a700 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c 29 0d         if (all).
2a710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a720 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e       return ((in
2a730 73 74 61 6c 6c 46 6c 61 67 73 20 26 20 68 61 73  stallFlags & has
2a740 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46 6c 61  Flags) == hasFla
2a750 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
2a760 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
2a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a780 72 65 74 75 72 6e 20 28 28 69 6e 73 74 61 6c 6c  return ((install
2a790 46 6c 61 67 73 20 26 20 68 61 73 46 6c 61 67 73  Flags & hasFlags
2a7a0 29 20 21 3d 20 49 6e 73 74 61 6c 6c 46 6c 61 67  ) != InstallFlag
2a7b0 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20 20 20 20  s.None);..      
2a7c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2a7d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2a7e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2a820 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2a830 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73 28 0d   bool HasFlags(.
2a840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a850 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 20 68   ProviderFlags h
2a860 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20  asFlags,..      
2a870 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 61            bool a
2a880 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ll..            
2a890 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a8a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a8b0 20 20 20 20 20 20 69 66 20 28 61 6c 6c 29 0d 0a        if (all)..
2a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a8d0 20 20 20 20 72 65 74 75 72 6e 20 28 28 70 72 6f      return ((pro
2a8e0 76 69 64 65 72 46 6c 61 67 73 20 26 20 68 61 73  viderFlags & has
2a8f0 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46 6c 61  Flags) == hasFla
2a900 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
2a910 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
2a920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a930 72 65 74 75 72 6e 20 28 28 70 72 6f 76 69 64 65  return ((provide
2a940 72 46 6c 61 67 73 20 26 20 68 61 73 46 6c 61 67  rFlags & hasFlag
2a950 73 29 20 21 3d 20 50 72 6f 76 69 64 65 72 46 6c  s) != ProviderFl
2a960 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20 20  ags.None);..    
2a970 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a980 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a9c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a9d0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2a9e0 69 63 20 62 6f 6f 6c 20 49 73 4c 69 6e 71 53 75  ic bool IsLinqSu
2a9f0 70 70 6f 72 74 65 64 28 0d 0a 20 20 20 20 20 20  pported(..      
2aa00 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2aa10 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
2aa20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2aa30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2aa40 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2aa60 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f 20 73 65  OTE: Check to se
2aa70 65 20 69 66 20 74 68 65 20 63 61 6c 6c 65 72 20  e if the caller 
2aa80 68 61 73 20 66 6f 72 63 65 64 20 4c 49 4e 51 20  has forced LINQ 
2aa90 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20 20 20 20  support to..    
2aaa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2aab0 20 20 20 20 20 62 65 20 65 6e 61 62 6c 65 64 20       be enabled 
2aac0 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64 2c 20 74  -OR- disabled, t
2aad0 68 65 72 65 62 79 20 62 79 70 61 73 73 69 6e 67  hereby bypassing
2aae0 20 74 68 65 20 6e 65 65 64 0d 0a 20 20 20 20 20   the need..     
2aaf0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2ab00 20 20 20 20 66 6f 72 20 22 61 75 74 6f 6d 61 74      for "automat
2ab10 69 63 20 64 65 74 65 63 74 69 6f 6e 22 20 62 79  ic detection" by
2ab20 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20   this method... 
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ab40 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2ab50 20 20 20 69 66 20 28 48 61 73 46 6c 61 67 73 28     if (HasFlags(
2ab60 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 46 6f  ProviderFlags.Fo
2ab70 72 63 65 4c 69 6e 71 45 6e 61 62 6c 65 64 2c 20  rceLinqEnabled, 
2ab80 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2ab90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2aba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2abb0 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20  f (trace &&..   
2abc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abd0 20 20 20 20 20 21 48 61 73 46 6c 61 67 73 28 50       !HasFlags(P
2abe0 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64  roviderFlags.Did
2abf0 4c 69 6e 71 46 6f 72 63 65 54 72 61 63 65 2c 20  LinqForceTrace, 
2ac00 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac30 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
2ac40 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
2ac50 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69  acePriority.Medi
2ac60 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20  umHigh,..       
2ac70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac80 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
2ac90 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
2aca0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
2acb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2acc0 22 46 6f 72 63 65 64 20 74 6f 20 65 6e 61 62 6c  "Forced to enabl
2acd0 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c 22  e support for \"
2ace0 4c 69 6e 71 5c 22 2e 22 2c 0d 0a 20 20 20 20 20  Linq\".",..     
2acf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad00 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2ad10 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad30 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20    providerFlags 
2ad40 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73  |= ProviderFlags
2ad50 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61  .DidLinqForceTra
2ad60 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
2ad70 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2ad80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad90 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2ada0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2adb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2adc0 20 20 20 65 6c 73 65 20 69 66 20 28 48 61 73 46     else if (HasF
2add0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2ade0 67 73 2e 46 6f 72 63 65 4c 69 6e 71 44 69 73 61  gs.ForceLinqDisa
2adf0 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20  bled, true))..  
2ae00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2ae10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae20 20 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26       if (trace &
2ae30 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
2ae40 20 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46             !HasF
2ae50 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2ae60 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54  gs.DidLinqForceT
2ae70 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20 20  race, true))..  
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2aea0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2aeb0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
2aec0 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
2aed0 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20  y.MediumHigh,.. 
2aee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aef0 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2af00 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2af10 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2af20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af30 20 20 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f        "Forced to
2af40 20 64 69 73 61 62 6c 65 20 73 75 70 70 6f 72 74   disable support
2af50 20 66 6f 72 20 5c 22 4c 69 6e 71 5c 22 2e 22 2c   for \"Linq\".",
2af60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2af70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2af80 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2af90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2afa0 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65           provide
2afb0 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64  rFlags |= Provid
2afc0 65 72 46 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46  erFlags.DidLinqF
2afd0 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  orceTrace;..    
2afe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aff0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b000 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b010 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
2b020 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2b030 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2b040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b050 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
2b060 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
2b070 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
2b080 69 74 65 2e 4c 69 6e 71 0d 0a 20 20 20 20 20 20  ite.Linq..      
2b090 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2b0a0 20 20 20 61 73 73 65 6d 62 6c 79 20 73 68 6f 75     assembly shou
2b0b0 6c 64 20 62 65 20 70 72 6f 63 65 73 73 65 64 20  ld be processed 
2b0c0 64 75 72 69 6e 67 20 74 68 65 20 69 6e 73 74 61  during the insta
2b0d0 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
2b0e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
2b0f0 20 74 68 65 20 74 61 72 67 65 74 20 69 73 20 56   the target is V
2b100 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 30  isual Studio 200
2b110 35 2c 20 74 68 69 73 20 6d 75 73 74 0d 0a 20 20  5, this must..  
2b120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b130 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7a 65         return ze
2b140 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro...           
2b150 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2b160 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2b170 21 6e 6f 4e 65 74 46 78 33 35 20 7c 7c 20 21 6e  !noNetFx35 || !n
2b180 6f 4e 65 74 46 78 34 30 20 7c 7c 20 21 6e 6f 4e  oNetFx40 || !noN
2b190 65 74 46 78 34 35 20 7c 7c 0d 0a 20 20 20 20 20  etFx45 ||..     
2b1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
2b1b0 6e 6f 4e 65 74 46 78 34 35 31 20 7c 7c 20 21 6e  noNetFx451 || !n
2b1c0 6f 4e 65 74 46 78 34 35 32 20 7c 7c 20 21 6e 6f  oNetFx452 || !no
2b1d0 4e 65 74 46 78 34 36 20 7c 7c 0d 0a 20 20 20 20  NetFx46 ||..    
2b1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b1f0 21 6e 6f 4e 65 74 46 78 34 36 31 20 7c 7c 20 21  !noNetFx461 || !
2b200 6e 6f 4e 65 74 46 78 34 36 32 20 7c 7c 20 21 6e  noNetFx462 || !n
2b210 6f 4e 65 74 46 78 34 37 20 7c 7c 0d 0a 20 20 20  oNetFx47 ||..   
2b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b230 20 21 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a 20   !noNetFx471;.. 
2b240 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2b250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2b260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2b2a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2b2b0 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45 66 36  ublic bool IsEf6
2b2c0 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20 20 20  Supported(..    
2b2d0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2b2e0 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2b2f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2b300 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2b310 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b330 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f 20   NOTE: Check to 
2b340 73 65 65 20 69 66 20 74 68 65 20 63 61 6c 6c 65  see if the calle
2b350 72 20 68 61 73 20 66 6f 72 63 65 64 20 45 46 36  r has forced EF6
2b360 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20 20 20   support to..   
2b370 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b380 20 20 20 20 20 20 62 65 20 65 6e 61 62 6c 65 64        be enabled
2b390 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64 2c 20   -OR- disabled, 
2b3a0 74 68 65 72 65 62 79 20 62 79 70 61 73 73 69 6e  thereby bypassin
2b3b0 67 20 74 68 65 20 6e 65 65 64 0d 0a 20 20 20 20  g the need..    
2b3c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b3d0 20 20 20 20 20 66 6f 72 20 22 61 75 74 6f 6d 61       for "automa
2b3e0 74 69 63 20 64 65 74 65 63 74 69 6f 6e 22 20 62  tic detection" b
2b3f0 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a  y this method...
2b400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b410 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2b420 20 20 20 20 69 66 20 28 48 61 73 46 6c 61 67 73      if (HasFlags
2b430 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 46  (ProviderFlags.F
2b440 6f 72 63 65 45 66 36 45 6e 61 62 6c 65 64 2c 20  orceEf6Enabled, 
2b450 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2b460 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2b480 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20  f (trace &&..   
2b490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4a0 20 20 20 20 20 21 48 61 73 46 6c 61 67 73 28 50       !HasFlags(P
2b4b0 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64  roviderFlags.Did
2b4c0 45 66 36 46 6f 72 63 65 54 72 61 63 65 2c 20 74  Ef6ForceTrace, t
2b4d0 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  rue))..         
2b4e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b500 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2b510 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2b520 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
2b530 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20  mHigh,..        
2b540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b550 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
2b560 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
2b570 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2b590 46 6f 72 63 65 64 20 74 6f 20 65 6e 61 62 6c 65  Forced to enable
2b5a0 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c 22 45   support for \"E
2b5b0 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20  f6\".",..       
2b5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5d0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2b5e0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2b5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b600 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 7c 3d  providerFlags |=
2b610 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44   ProviderFlags.D
2b620 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 3b  idEf6ForceTrace;
2b630 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b640 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2b650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2b660 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
2b670 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b690 65 6c 73 65 20 69 66 20 28 48 61 73 46 6c 61 67  else if (HasFlag
2b6a0 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2b6b0 46 6f 72 63 65 45 66 36 44 69 73 61 62 6c 65 64  ForceEf6Disabled
2b6c0 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2b6d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6f0 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2b700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b710 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67 73         !HasFlags
2b720 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44  (ProviderFlags.D
2b730 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 2c  idEf6ForceTrace,
2b740 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20   true))..       
2b750 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b770 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
2b780 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
2b790 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64  racePriority.Med
2b7a0 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20  iumHigh,..      
2b7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7c0 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
2b7d0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
2b7e0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
2b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b800 20 22 46 6f 72 63 65 64 20 74 6f 20 64 69 73 61   "Forced to disa
2b810 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ble support for 
2b820 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20  \"Ef6\".",..    
2b830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b840 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2b850 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b870 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73     providerFlags
2b880 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67   |= ProviderFlag
2b890 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61  s.DidEf6ForceTra
2b8a0 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
2b8b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b8d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2b8e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b8f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2b900 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2b910 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2b920 45 3a 20 52 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65  E: Return non-ze
2b930 72 6f 20 69 66 20 74 68 65 20 53 79 73 74 65 6d  ro if the System
2b940 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46 36  .Data.SQLite.EF6
2b950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b960 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d    //       assem
2b970 62 6c 79 20 73 68 6f 75 6c 64 20 62 65 20 70 72  bly should be pr
2b980 6f 63 65 73 73 65 64 20 64 75 72 69 6e 67 20 74  ocessed during t
2b990 68 65 20 69 6e 73 74 61 6c 6c 2e 0d 0a 20 20 20  he install...   
2b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b9b0 20 20 20 20 20 20 49 66 20 74 68 65 20 74 61 72        If the tar
2b9c0 67 65 74 20 69 73 20 56 69 73 75 61 6c 20 53 74  get is Visual St
2b9d0 75 64 69 6f 20 32 30 30 35 20 6f 72 20 56 69 73  udio 2005 or Vis
2b9e0 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ual..           
2b9f0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 74       //       St
2ba00 75 64 69 6f 20 32 30 30 38 2c 20 74 68 69 73 20  udio 2008, this 
2ba10 6d 75 73 74 20 72 65 74 75 72 6e 20 7a 65 72 6f  must return zero
2ba20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ba30 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2ba40 20 20 20 20 20 20 20 69 66 20 28 6e 6f 4e 65 74         if (noNet
2ba50 46 78 34 30 20 26 26 0d 0a 20 20 20 20 20 20 20  Fx40 &&..       
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 4e               noN
2ba70 65 74 46 78 34 35 20 26 26 20 6e 6f 4e 65 74 46  etFx45 && noNetF
2ba80 78 34 35 31 20 26 26 20 6e 6f 4e 65 74 46 78 34  x451 && noNetFx4
2ba90 35 32 20 26 26 20 6e 6f 4e 65 74 46 78 34 36 20  52 && noNetFx46 
2baa0 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
2bab0 20 20 20 20 20 20 20 20 6e 6f 4e 65 74 46 78 34          noNetFx4
2bac0 36 31 20 26 26 20 6e 6f 4e 65 74 46 78 34 36 32  61 && noNetFx462
2bad0 20 26 26 20 6e 6f 4e 65 74 46 78 34 37 20 26 26   && noNetFx47 &&
2bae0 20 6e 6f 4e 65 74 46 78 34 37 31 29 0d 0a 20 20   noNetFx471)..  
2baf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2bb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bb10 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2bb20 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2bb30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2bb40 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2bb50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2bb60 4e 4f 54 45 3a 20 41 6c 73 6f 2c 20 69 66 20 74  NOTE: Also, if t
2bb70 68 65 20 45 46 36 20 63 6f 72 65 20 61 73 73 65  he EF6 core asse
2bb80 6d 62 6c 79 20 69 73 20 75 6e 61 76 61 69 6c 61  mbly is unavaila
2bb90 62 6c 65 2c 20 74 68 69 73 0d 0a 20 20 20 20 20  ble, this..     
2bba0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2bbb0 20 20 20 20 6d 75 73 74 20 72 65 74 75 72 6e 20      must return 
2bbc0 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20  zero...         
2bbd0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2bbe0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
2bbf0 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
2bc00 62 6c 79 41 76 61 69 6c 61 62 6c 65 28 74 72 61  blyAvailable(tra
2bc10 63 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ce))..          
2bc20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2bc30 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
2bc40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2bc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2bc60 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c  / NOTE: Finally,
2bc70 20 69 66 20 74 68 65 20 45 46 36 20 63 6f 72 65   if the EF6 core
2bc80 20 61 73 73 65 6d 62 6c 79 20 69 73 20 6e 6f 74   assembly is not
2bc90 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20   available..    
2bca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2bcb0 20 20 20 20 20 67 6c 6f 62 61 6c 6c 79 20 5b 61       globally [a
2bcc0 6e 64 20 74 68 69 73 20 69 73 20 61 20 72 65 71  nd this is a req
2bcd0 75 69 72 65 6d 65 6e 74 20 66 6f 72 20 74 68 65  uirement for the
2bce0 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
2bcf0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2bd00 20 20 20 69 6e 73 74 61 6c 6c 5d 2c 20 72 65 74     install], ret
2bd10 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  urn zero...     
2bd20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2bd40 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28 50  eturn HasFlags(P
2bd50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 53 79 73  roviderFlags.Sys
2bd60 74 65 6d 45 66 36 4d 75 73 74 42 65 47 6c 6f 62  temEf6MustBeGlob
2bd70 61 6c 2c 20 74 72 75 65 29 20 3f 0d 0a 20 20 20  al, true) ?..   
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd90 20 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65   IsSystemEf6Asse
2bda0 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 20 3a 20 74  mblyGlobal() : t
2bdb0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2bdc0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2bdd0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2bde0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bdf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2be10 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2be20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
2be30 6f 6c 20 49 73 45 66 36 41 73 73 65 6d 62 6c 79  ol IsEf6Assembly
2be40 47 6c 6f 62 61 6c 28 29 0d 0a 20 20 20 20 20 20  Global()..      
2be50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2be60 20 20 20 20 20 20 20 20 20 69 66 20 28 65 66 36           if (ef6
2be70 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  AssemblyName == 
2be80 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2be90 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2bea0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
2bec0 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20  mbly assembly = 
2bed0 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65 63 74  Assembly.Reflect
2bee0 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d 0a 20 20  ionOnlyLoad(..  
2bef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf00 20 20 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d    ef6AssemblyNam
2bf10 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  e.ToString());..
2bf20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf30 20 20 72 65 74 75 72 6e 20 28 61 73 73 65 6d 62    return (assemb
2bf40 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 26 26 20 61  ly != null) && a
2bf50 73 73 65 6d 62 6c 79 2e 47 6c 6f 62 61 6c 41 73  ssembly.GlobalAs
2bf60 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20  semblyCache;..  
2bf70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2bf80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2bf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2bfd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2bfe0 62 6c 69 63 20 62 6f 6f 6c 20 55 73 65 45 66 36  blic bool UseEf6
2bff0 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
2c000 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
2c010 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20  trace..         
2c020 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2c030 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c040 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2c050 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2c060 4e 4f 54 45 3a 20 57 65 20 63 61 6e 6e 6f 74 20  NOTE: We cannot 
2c070 75 73 65 20 74 68 65 20 45 46 36 20 61 73 73 65  use the EF6 asse
2c080 6d 62 6c 79 20 61 73 20 74 68 65 20 70 72 6f 76  mbly as the prov
2c090 69 64 65 72 20 69 66 20 69 74 0d 0a 20 20 20 20  ider if it..    
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2c0b0 20 20 20 20 20 69 73 20 6e 6f 74 20 73 75 70 70       is not supp
2c0c0 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 69 6e  orted by this in
2c0d0 73 74 61 6c 6c 61 74 69 6f 6e 2e 0d 0a 20 20 20  stallation...   
2c0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2c0f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c100 20 69 66 20 28 21 49 73 45 66 36 53 75 70 70 6f   if (!IsEf6Suppo
2c110 72 74 65 64 28 74 72 61 63 65 29 29 0d 0a 20 20  rted(trace))..  
2c120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c130 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2c140 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2c150 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2c160 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2c170 46 6f 72 20 74 68 65 20 45 46 36 20 61 73 73 65  For the EF6 asse
2c180 6d 62 6c 79 20 74 6f 20 62 65 20 75 73 61 62 6c  mbly to be usabl
2c190 65 20 61 73 20 61 20 70 72 6f 76 69 64 65 72 20  e as a provider 
2c1a0 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  in..            
2c1b0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
2c1c0 20 6d 61 63 68 69 6e 65 20 63 6f 6e 66 69 67 75   machine configu
2c1d0 72 61 74 69 6f 6e 20 66 69 6c 65 2c 20 69 74 20  ration file, it 
2c1e0 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65 0d 0a  must be in the..
2c1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c200 2f 2f 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 20  //       global 
2c210 61 73 73 65 6d 62 6c 79 20 63 61 63 68 65 2e 0d  assembly cache..
2c220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c230 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2c240 20 20 20 20 20 72 65 74 75 72 6e 20 49 73 45 66       return IsEf
2c250 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28  6AssemblyGlobal(
2c260 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2c270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2c280 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2c290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c2c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2c2d0 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45 44 20      /* REQUIRED 
2c2e0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2c2f0 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e  public AssemblyN
2c300 61 6d 65 20 47 65 74 43 6f 72 65 41 73 73 65 6d  ame GetCoreAssem
2c310 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  blyName(..      
2c320 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2c330 72 61 63 65 20 2f 2a 20 4e 4f 54 20 55 53 45 44  race /* NOT USED
2c340 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2c350 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20       ) /* throw 
2c360 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2c370 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c380 20 20 20 69 66 20 28 63 6f 72 65 41 73 73 65 6d     if (coreAssem
2c390 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  blyName == null)
2c3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c3b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c3c0 20 20 20 20 20 20 20 20 20 63 6f 72 65 41 73 73           coreAss
2c3d0 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65  emblyName = Asse
2c3e0 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65  mblyName.GetAsse
2c3f0 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20  mblyName(..     
2c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c410 20 20 20 43 6f 72 65 46 69 6c 65 4e 61 6d 65 29     CoreFileName)
2c420 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2c430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2c440 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2c450 20 20 20 20 72 65 74 75 72 6e 20 63 6f 72 65 41      return coreA
2c460 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20  ssemblyName;..  
2c470 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2c480 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2c490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ..            /*
2c4e0 20 4f 50 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20   OPTIONAL */..  
2c4f0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2c500 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65   AssemblyName Ge
2c510 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d  tLinqAssemblyNam
2c520 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2c530 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2c540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c550 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
2c560 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2c580 20 28 49 73 4c 69 6e 71 53 75 70 70 6f 72 74 65   (IsLinqSupporte
2c590 64 28 74 72 61 63 65 29 20 26 26 20 28 6c 69 6e  d(trace) && (lin
2c5a0 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d  qAssemblyName ==
2c5b0 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
2c5c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c5e0 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65  linqAssemblyName
2c5f0 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2e   = AssemblyName.
2c600 47 65 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  GetAssemblyName(
2c610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c620 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71 46 69            LinqFi
2c630 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
2c640 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2c650 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c660 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2c670 6e 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61  n linqAssemblyNa
2c680 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
2c690 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2c6a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c6f0 20 20 20 20 20 2f 2a 20 4f 50 54 49 4f 4e 41 4c       /* OPTIONAL
2c700 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2c710 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79   public Assembly
2c720 4e 61 6d 65 20 47 65 74 45 66 36 41 73 73 65 6d  Name GetEf6Assem
2c730 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  blyName(..      
2c740 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2c750 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
2c760 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77        ) /* throw
2c770 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2c780 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c790 20 20 20 20 69 66 20 28 49 73 45 66 36 53 75 70      if (IsEf6Sup
2c7a0 70 6f 72 74 65 64 28 74 72 61 63 65 29 20 26 26  ported(trace) &&
2c7b0 20 28 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d   (ef6AssemblyNam
2c7c0 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  e == null))..   
2c7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c7f0 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c 79 4e      ef6AssemblyN
2c800 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61  ame = AssemblyNa
2c810 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e 61  me.GetAssemblyNa
2c820 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
2c830 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66 36               Ef6
2c840 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  FileName); /* th
2c850 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2c860 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c870 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2c880 75 72 6e 20 65 66 36 41 73 73 65 6d 62 6c 79 4e  urn ef6AssemblyN
2c890 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
2c8a0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2c8b0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2c900 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45        /* REQUIRE
2c910 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
2c920 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
2c930 79 4e 61 6d 65 20 47 65 74 44 65 73 69 67 6e 65  yName GetDesigne
2c940 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a  rAssemblyName(..
2c950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c960 62 6f 6f 6c 20 74 72 61 63 65 20 2f 2a 20 4e 4f  bool trace /* NO
2c970 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
2c980 20 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20             ) /* 
2c990 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2c9a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2c9b0 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65 73           if (des
2c9c0 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
2c9d0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2c9e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca00 20 20 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d     designerAssem
2ca10 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62  blyName = Assemb
2ca20 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d 62  lyName.GetAssemb
2ca30 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  lyName(..       
2ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca50 20 44 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   DesignerFileNam
2ca60 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
2ca70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ca80 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2ca90 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 73        return des
2caa0 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
2cab0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2cac0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2cad0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2cb20 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45 44 20      /* REQUIRED 
2cb30 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2cb40 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e  public AssemblyN
2cb50 61 6d 65 20 47 65 74 50 72 6f 76 69 64 65 72 41  ame GetProviderA
2cb60 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20  ssemblyName(..  
2cb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2cb80 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2cb90 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74            ) /* t
2cba0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2cbb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2cbc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
2cbd0 73 65 45 66 36 50 72 6f 76 69 64 65 72 28 74 72  seEf6Provider(tr
2cbe0 61 63 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ace) ?..        
2cbf0 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 45              GetE
2cc00 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74  f6AssemblyName(t
2cc10 72 61 63 65 29 20 3a 20 47 65 74 43 6f 72 65 41  race) : GetCoreA
2cc20 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74 72 61 63  ssemblyName(trac
2cc30 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2cc40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2cc50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2cc60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2cca0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
2ccb0 6e 67 20 47 65 74 43 6f 6e 66 69 67 49 6e 76 61  ng GetConfigInva
2ccc0 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20  riantName(..    
2ccd0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2cce0 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2ccf0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2cd00 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cd10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2cd20 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d   GetInvariantNam
2cd30 65 28 74 72 61 63 65 29 3b 0d 0a 20 20 20 20 20  e(trace);..     
2cd40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2cd50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2cd60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2cda0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2cdb0 63 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 76  c string GetProv
2cdc0 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d  iderInvariantNam
2cdd0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2cde0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2cdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2ce10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ce20 20 20 72 65 74 75 72 6e 20 47 65 74 49 6e 76 61    return GetInva
2ce30 72 69 61 6e 74 4e 61 6d 65 28 74 72 61 63 65 29  riantName(trace)
2ce40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2ce50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ce60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cea0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2ceb0 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
2cec0 20 47 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e   GetFactoryTypeN
2ced0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2cee0 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
2cef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cf00 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2cf10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2cf20 20 20 20 20 72 65 74 75 72 6e 20 55 73 65 45 66      return UseEf
2cf30 36 50 72 6f 76 69 64 65 72 28 74 72 61 63 65 29  6Provider(trace)
2cf40 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
2cf50 20 20 20 20 20 20 20 20 45 66 36 46 61 63 74 6f          Ef6Facto
2cf60 72 79 54 79 70 65 4e 61 6d 65 20 3a 20 46 61 63  ryTypeName : Fac
2cf70 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  toryTypeName;.. 
2cf80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2cf90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2cfe0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2cff0 75 62 6c 69 63 20 76 6f 69 64 20 44 75 6d 70 28  ublic void Dump(
2d000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d010 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
2d020 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 0d 0a 20  traceCallback.. 
2d030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2d040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2d050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d060 20 69 66 20 28 74 72 61 63 65 43 61 6c 6c 62 61   if (traceCallba
2d070 63 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ck != null)..   
2d080 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0a0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2d0b0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2d0c0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2d0d0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73               "As
2d0f0 73 65 6d 62 6c 79 22 2c 20 46 6f 72 44 69 73 70  sembly", ForDisp
2d100 6c 61 79 28 61 73 73 65 6d 62 6c 79 29 29 2c 0d  lay(assembly)),.
2d110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d120 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2d130 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d150 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2d160 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2d170 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2d180 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d190 20 20 20 20 20 20 20 20 20 22 4c 6f 67 46 69 6c           "LogFil
2d1a0 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
2d1b0 61 79 28 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29  ay(logFileName))
2d1c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d1d0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d1e0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2d1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d200 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2d210 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2d220 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2d230 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d240 20 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69             "Regi
2d250 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 22  stryLogFileName"
2d260 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d270 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
2d280 73 70 6c 61 79 28 72 65 67 69 73 74 72 79 4c 6f  splay(registryLo
2d290 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a 20 20  gFileName)),..  
2d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2b0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d2c0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d2e0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2d2f0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2d300 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d320 20 20 20 20 20 20 22 44 69 72 65 63 74 6f 72 79        "Directory
2d330 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 69  ", ForDisplay(di
2d340 72 65 63 74 6f 72 79 29 29 2c 0d 0a 20 20 20 20  rectory)),..    
2d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d360 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2d370 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2d380 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d390 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2d3a0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2d3b0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2d3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d3d0 20 20 20 20 22 43 6f 72 65 46 69 6c 65 4e 61 6d      "CoreFileNam
2d3e0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 63  e", ForDisplay(c
2d3f0 6f 72 65 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a  oreFileName)),..
2d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d410 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2d420 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2d430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d440 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2d450 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2d460 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2d470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d480 20 20 20 20 20 20 20 20 22 4c 69 6e 71 46 69 6c          "LinqFil
2d490 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
2d4a0 61 79 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29  ay(linqFileName)
2d4b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2d4c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2d4d0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4f0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2d500 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2d510 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2d520 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2d530 20 20 20 20 20 20 20 20 20 20 20 20 22 45 66 36              "Ef6
2d540 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69  FileName", ForDi
2d550 73 70 6c 61 79 28 65 66 36 46 69 6c 65 4e 61 6d  splay(ef6FileNam
2d560 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2d580 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2d590 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d5a0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2d5b0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2d5c0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2d5d0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
2d5f0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 22  esignerFileName"
2d600 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65 73  , ForDisplay(des
2d610 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 29 2c  ignerFileName)),
2d620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d630 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2d640 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d660 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2d670 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2d680 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2d690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d6a0 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73            "Regis
2d6b0 74 72 79 56 65 72 73 69 6f 6e 22 2c 20 46 6f 72  tryVersion", For
2d6c0 44 69 73 70 6c 61 79 28 72 65 67 69 73 74 72 79  Display(registry
2d6d0 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  Version)),..    
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d6f0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2d700 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2d710 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d720 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2d730 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2d740 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2d750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d760 20 20 20 20 22 43 6f 6e 66 69 67 56 65 72 73 69      "ConfigVersi
2d770 6f 6e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  on", ForDisplay(
2d780 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 29 29 2c  configVersion)),
2d790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d7a0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2d7b0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d7d0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2d7e0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2d7f0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2d800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d810 20 20 20 20 20 20 20 20 20 20 22 56 73 56 65 72            "VsVer
2d820 73 69 6f 6e 53 75 66 66 69 78 22 2c 20 46 6f 72  sionSuffix", For
2d830 44 69 73 70 6c 61 79 28 76 73 56 65 72 73 69 6f  Display(vsVersio
2d840 6e 53 75 66 66 69 78 29 29 2c 0d 0a 20 20 20 20  nSuffix)),..    
2d850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d860 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2d870 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2d880 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d890 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2d8a0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2d8b0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2d8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8d0 20 20 20 20 22 44 65 62 75 67 46 6f 72 6d 61 74      "DebugFormat
2d8e0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65  ", ForDisplay(de
2d8f0 62 75 67 46 6f 72 6d 61 74 29 29 2c 0d 0a 20 20  bugFormat)),..  
2d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d910 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d920 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d930 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d940 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2d950 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2d960 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2d970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d980 20 20 20 20 20 20 22 54 72 61 63 65 46 6f 72 6d        "TraceForm
2d990 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  at", ForDisplay(
2d9a0 74 72 61 63 65 46 6f 72 6d 61 74 29 29 2c 0d 0a  traceFormat)),..
2d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2d9d0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d9f0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2da00 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2da10 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da30 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6c 6c          "Install
2da40 46 6c 61 67 73 22 2c 20 46 6f 72 44 69 73 70 6c  Flags", ForDispl
2da50 61 79 28 69 6e 73 74 61 6c 6c 46 6c 61 67 73 29  ay(installFlags)
2da60 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2da70 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2da80 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2da90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2daa0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2dab0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2dac0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2dad0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2dae0 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 6f              "Pro
2daf0 76 69 64 65 72 46 6c 61 67 73 22 2c 20 46 6f 72  viderFlags", For
2db00 44 69 73 70 6c 61 79 28 70 72 6f 76 69 64 65 72  Display(provider
2db10 46 6c 61 67 73 29 29 2c 0d 0a 20 20 20 20 20 20  Flags)),..      
2db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db30 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2db40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2db50 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2db60 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2db70 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2db80 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2db90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dba0 20 20 22 44 65 62 75 67 50 72 69 6f 72 69 74 79    "DebugPriority
2dbb0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65  ", ForDisplay(de
2dbc0 62 75 67 50 72 69 6f 72 69 74 79 29 29 2c 0d 0a  bugPriority)),..
2dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbe0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2dbf0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2dc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2dc10 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2dc20 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2dc30 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2dc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc50 20 20 20 20 20 20 20 20 22 54 72 61 63 65 50 72          "TracePr
2dc60 69 6f 72 69 74 79 22 2c 20 46 6f 72 44 69 73 70  iority", ForDisp
2dc70 6c 61 79 28 74 72 61 63 65 50 72 69 6f 72 69 74  lay(tracePriorit
2dc80 79 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  y)),..          
2dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2dca0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2dcb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dcc0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2dcd0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2dce0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2dcf0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2dd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
2dd10 65 72 55 73 65 72 22 2c 20 46 6f 72 44 69 73 70  erUser", ForDisp
2dd20 6c 61 79 28 70 65 72 55 73 65 72 29 29 2c 0d 0a  lay(perUser)),..
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd40 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2dd50 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2dd70 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2dd80 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2dd90 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddb0 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6c 6c          "Install
2ddc0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 69 6e  ", ForDisplay(in
2ddd0 73 74 61 6c 6c 29 29 2c 0d 0a 20 20 20 20 20 20  stall)),..      
2dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddf0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2de00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2de10 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2de20 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2de30 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2de40 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2de50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de60 20 20 22 57 6f 77 36 34 22 2c 20 46 6f 72 44 69    "Wow64", ForDi
2de70 73 70 6c 61 79 28 77 6f 77 36 34 29 29 2c 0d 0a  splay(wow64)),..
2de80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de90 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2dea0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2deb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2dec0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ded0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2dee0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2def0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df00 20 20 20 20 20 20 20 20 22 4e 6f 52 75 6e 74 69          "NoRunti
2df10 6d 65 56 65 72 73 69 6f 6e 22 2c 20 46 6f 72 44  meVersion", ForD
2df20 69 73 70 6c 61 79 28 6e 6f 52 75 6e 74 69 6d 65  isplay(noRuntime
2df30 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  Version)),..    
2df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df50 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2df60 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2df70 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2df80 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2df90 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2dfa0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dfc0 20 20 20 20 22 4e 6f 44 65 73 6b 74 6f 70 22 2c      "NoDesktop",
2dfd0 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 44 65   ForDisplay(noDe
2dfe0 73 6b 74 6f 70 29 29 2c 0d 0a 20 20 20 20 20 20  sktop)),..      
2dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e000 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2e010 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2e020 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e030 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2e040 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2e050 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e070 20 20 22 4e 6f 43 6f 6d 70 61 63 74 22 2c 20 46    "NoCompact", F
2e080 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f 6d 70  orDisplay(noComp
2e090 61 63 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  act)),..        
2e0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0b0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2e0c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e0d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2e0e0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2e0f0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2e100 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2e110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e120 22 4e 6f 4e 65 74 46 78 32 30 22 2c 20 46 6f 72  "NoNetFx20", For
2e130 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 32  Display(noNetFx2
2e140 30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  0)),..          
2e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e160 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2e170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e180 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2e190 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2e1a0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2e1b0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2e1d0 6f 4e 65 74 46 78 33 35 22 2c 20 46 6f 72 44 69  oNetFx35", ForDi
2e1e0 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 33 35 29  splay(noNetFx35)
2e1f0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2e200 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2e210 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e230 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2e240 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2e250 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2e260 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2e270 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2e280 65 74 46 78 34 30 22 2c 20 46 6f 72 44 69 73 70  etFx40", ForDisp
2e290 6c 61 79 28 6e 6f 4e 65 74 46 78 34 30 29 29 2c  lay(noNetFx40)),
2e2a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e2b0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2e2c0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2e0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2e2f0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2e300 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2e310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e320 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2e330 46 78 34 35 22 2c 20 46 6f 72 44 69 73 70 6c 61  Fx45", ForDispla
2e340 79 28 6e 6f 4e 65 74 46 78 34 35 29 29 2c 0d 0a  y(noNetFx45)),..
2e350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e360 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e370 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e390 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e3a0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e3b0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3d0 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e3e0 34 35 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  451", ForDisplay
2e3f0 28 6e 6f 4e 65 74 46 78 34 35 31 29 29 2c 0d 0a  (noNetFx451)),..
2e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e410 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e420 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e440 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e450 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e460 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e480 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e490 34 35 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  452", ForDisplay
2e4a0 28 6e 6f 4e 65 74 46 78 34 35 32 29 29 2c 0d 0a  (noNetFx452)),..
2e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2e4d0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e4f0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2e500 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2e510 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e530 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2e540 34 36 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  46", ForDisplay(
2e550 6e 6f 4e 65 74 46 78 34 36 29 29 2c 0d 0a 20 20  noNetFx46)),..  
2e560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e570 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2e580 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2e590 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e5a0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2e5b0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2e5c0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5e0 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 36        "NoNetFx46
2e5f0 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  1", ForDisplay(n
2e600 6f 4e 65 74 46 78 34 36 31 29 29 2c 0d 0a 20 20  oNetFx461)),..  
2e610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e620 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2e630 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2e640 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e650 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2e660 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2e670 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e690 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 36        "NoNetFx46
2e6a0 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  2", ForDisplay(n
2e6b0 6f 4e 65 74 46 78 34 36 32 29 29 2c 0d 0a 20 20  oNetFx462)),..  
2e6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e6d0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2e6e0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e700 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2e710 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2e720 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2e730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e740 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 37        "NoNetFx47
2e750 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2e760 4e 65 74 46 78 34 37 29 29 2c 0d 0a 20 20 20 20  NetFx47)),..    
2e770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e780 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2e790 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2e7a0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e7b0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2e7c0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2e7d0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2e7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7f0 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 37 31 22      "NoNetFx471"
2e800 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e  , ForDisplay(noN
2e810 65 74 46 78 34 37 31 29 29 2c 0d 0a 20 20 20 20  etFx471)),..    
2e820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e830 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2e840 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2e850 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e860 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2e870 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2e880 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2e890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8a0 20 20 20 20 22 4e 6f 56 73 32 30 30 35 22 2c 20      "NoVs2005", 
2e8b0 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
2e8c0 30 30 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  005)),..        
2e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e8e0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2e8f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e900 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2e910 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2e920 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2e930 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2e940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e950 22 4e 6f 56 73 32 30 30 38 22 2c 20 46 6f 72 44  "NoVs2008", ForD
2e960 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 30 38 29  isplay(noVs2008)
2e970 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2e980 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2e990 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2e9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e9b0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2e9c0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2e9d0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2e9e0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2e9f0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
2ea00 73 32 30 31 30 22 2c 20 46 6f 72 44 69 73 70 6c  s2010", ForDispl
2ea10 61 79 28 6e 6f 56 73 32 30 31 30 29 29 2c 0d 0a  ay(noVs2010)),..
2ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea30 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2ea40 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2ea50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ea60 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ea70 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2ea80 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2ea90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eaa0 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31          "NoVs201
2eab0 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  2", ForDisplay(n
2eac0 6f 56 73 32 30 31 32 29 29 2c 0d 0a 20 20 20 20  oVs2012)),..    
2ead0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eae0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2eaf0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2eb00 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2eb10 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2eb20 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2eb30 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2eb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb50 20 20 20 20 22 4e 6f 56 73 32 30 31 33 22 2c 20      "NoVs2013", 
2eb60 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
2eb70 30 31 33 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  013)),..        
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb90 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2eba0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ebb0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2ebc0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2ebd0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2ebe0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec00 22 4e 6f 56 73 32 30 31 35 22 2c 20 46 6f 72 44  "NoVs2015", ForD
2ec10 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 35 29  isplay(noVs2015)
2ec20 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2ec40 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2ec50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec60 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2ec70 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2ec80 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2ec90 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2eca0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
2ecb0 73 32 30 31 37 22 2c 20 46 6f 72 44 69 73 70 6c  s2017", ForDispl
2ecc0 61 79 28 6e 6f 56 73 32 30 31 37 29 29 2c 0d 0a  ay(noVs2017)),..
2ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ece0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2ecf0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ed10 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ed20 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2ed30 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed50 20 20 20 20 20 20 20 20 22 4e 6f 54 72 61 63 65          "NoTrace
2ed60 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2ed70 54 72 61 63 65 29 29 2c 0d 0a 20 20 20 20 20 20  Trace)),..      
2ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed90 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2eda0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2edb0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2edc0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2edd0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2ede0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee00 20 20 22 4e 6f 43 6f 6e 73 6f 6c 65 22 2c 20 46    "NoConsole", F
2ee10 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f 6e 73  orDisplay(noCons
2ee20 6f 6c 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ole)),..        
2ee30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee40 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2ee50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ee60 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2ee70 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2ee80 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2ee90 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eeb0 22 4e 6f 4c 6f 67 22 2c 20 46 6f 72 44 69 73 70  "NoLog", ForDisp
2eec0 6c 61 79 28 6e 6f 4c 6f 67 29 29 2c 0d 0a 20 20  lay(noLog)),..  
2eed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eee0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2eef0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2ef10 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2ef20 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2ef30 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2ef40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef50 20 20 20 20 20 20 22 54 68 72 6f 77 4f 6e 4d 69        "ThrowOnMi
2ef60 73 73 69 6e 67 22 2c 20 46 6f 72 44 69 73 70 6c  ssing", ForDispl
2ef70 61 79 28 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ay(throwOnMissin
2ef80 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  g)),..          
2ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2efa0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2efb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2efc0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2efd0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2efe0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2eff0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57                "W
2f010 68 61 74 49 66 22 2c 20 46 6f 72 44 69 73 70 6c  hatIf", ForDispl
2f020 61 79 28 77 68 61 74 49 66 29 29 2c 0d 0a 20 20  ay(whatIf)),..  
2f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f040 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f050 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f060 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f070 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f080 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f090 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0b0 20 20 20 20 20 20 22 44 65 62 75 67 22 2c 20 46        "Debug", F
2f0c0 6f 72 44 69 73 70 6c 61 79 28 64 65 62 75 67 29  orDisplay(debug)
2f0d0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f0e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f0f0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f110 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f120 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f130 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f140 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f150 20 20 20 20 20 20 20 20 20 20 20 20 22 56 65 72              "Ver
2f160 62 6f 73 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  bose", ForDispla
2f170 79 28 76 65 72 62 6f 73 65 29 29 2c 0d 0a 20 20  y(verbose)),..  
2f180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f190 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f1a0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f1c0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f1d0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f1e0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f200 20 20 20 20 20 20 22 43 6f 6e 66 69 72 6d 22 2c        "Confirm",
2f210 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 6e 66   ForDisplay(conf
2f220 69 72 6d 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  irm)),..        
2f230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f240 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2f250 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f260 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2f270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f2a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2f2b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
2f2c0 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  sembly != null).
2f2d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f300 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f310 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f320 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f340 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73               "As
2f350 73 65 6d 62 6c 79 54 69 74 6c 65 22 2c 0d 0a 20  semblyTitle",.. 
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f370 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
2f380 73 70 6c 61 79 28 47 65 74 41 73 73 65 6d 62 6c  splay(GetAssembl
2f390 79 54 69 74 6c 65 28 61 73 73 65 6d 62 6c 79 29  yTitle(assembly)
2f3a0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3c0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2f3d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f3e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f3f0 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2f400 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2f410 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f430 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d 62           "Assemb
2f440 6c 79 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 22  lyConfiguration"
2f450 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
2f470 6f 72 44 69 73 70 6c 61 79 28 47 65 74 41 73 73  orDisplay(GetAss
2f480 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74 69  emblyConfigurati
2f490 6f 6e 28 61 73 73 65 6d 62 6c 79 29 29 29 2c 0d  on(assembly))),.
2f4a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f4c0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
2f4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2f4f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2f500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f530 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2f540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f550 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2f560 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2f570 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f590 20 20 20 20 20 20 20 22 49 73 53 79 73 74 65 6d         "IsSystem
2f5a0 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c  Ef6AssemblyAvail
2f5b0 61 62 6c 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  able", ForDispla
2f5c0 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 49 73 53 79              IsSy
2f5e0 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41  stemEf6AssemblyA
2f5f0 76 61 69 6c 61 62 6c 65 28 66 61 6c 73 65 29 29  vailable(false))
2f600 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f610 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f620 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f640 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f650 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f660 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f670 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f680 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73 53              "IsS
2f690 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79  ystemEf6Assembly
2f6a0 47 6c 6f 62 61 6c 22 2c 20 46 6f 72 44 69 73 70  Global", ForDisp
2f6b0 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 73                Is
2f6d0 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  SystemEf6Assembl
2f6e0 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d 0a 20 20  yGlobal())),..  
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f700 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f710 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f720 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
2f730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f760 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f780 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f790 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f7a0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f7b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f7c0 20 20 20 20 20 20 20 20 20 22 49 73 4c 69 6e 71           "IsLinq
2f7d0 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f 72 44  Supported", ForD
2f7e0 69 73 70 6c 61 79 28 49 73 4c 69 6e 71 53 75 70  isplay(IsLinqSup
2f7f0 70 6f 72 74 65 64 28 66 61 6c 73 65 29 29 29 2c  ported(false))),
2f800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f810 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2f820 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f840 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2f850 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2f860 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2f870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f880 20 20 20 20 20 20 20 20 20 20 22 49 73 45 66 36            "IsEf6
2f890 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f 72 44  Supported", ForD
2f8a0 69 73 70 6c 61 79 28 49 73 45 66 36 53 75 70 70  isplay(IsEf6Supp
2f8b0 6f 72 74 65 64 28 66 61 6c 73 65 29 29 29 2c 0d  orted(false))),.
2f8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f8d0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f8e0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f900 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f910 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f920 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f940 20 20 20 20 20 20 20 20 20 22 49 73 45 66 36 41           "IsEf6A
2f950 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 22 2c 20  ssemblyGlobal", 
2f960 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
2f970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f980 20 20 20 20 20 49 73 45 66 36 41 73 73 65 6d 62       IsEf6Assemb
2f990 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d 0a 20  lyGlobal())),.. 
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2f9c0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2f9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f9e0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2f9f0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2fa00 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2fa10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa20 20 20 20 20 20 20 20 22 55 73 65 45 66 36 50 72         "UseEf6Pr
2fa30 6f 76 69 64 65 72 22 2c 20 46 6f 72 44 69 73 70  ovider", ForDisp
2fa40 6c 61 79 28 55 73 65 45 66 36 50 72 6f 76 69 64  lay(UseEf6Provid
2fa50 65 72 28 66 61 6c 73 65 29 29 29 2c 0d 0a 20 20  er(false))),..  
2fa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa70 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2fa80 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
2faa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fad0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2faf0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
2fb00 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2fb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2fb30 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2fb40 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2fb50 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2fb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb70 20 22 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c   "GetCoreAssembl
2fb80 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  yName", ForDispl
2fb90 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
2fba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbb0 20 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79   GetCoreAssembly
2fbc0 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
2fbd0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbf0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2fc00 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2fc10 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
2fc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2fc50 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2fc60 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2fc70 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
2fca0 43 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65  CoreAssemblyName
2fcb0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29  ", ForDisplay(e)
2fcc0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fce0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2fcf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fd00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2fd20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd50 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2fd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd70 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
2fd80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fda0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2fdb0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2fdc0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2fdd0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdf0 20 20 22 47 65 74 4c 69 6e 71 41 73 73 65 6d 62    "GetLinqAssemb
2fe00 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70  lyName", ForDisp
2fe10 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
2fe20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe30 20 20 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c    GetLinqAssembl
2fe40 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20  yName(false))), 
2fe50 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2fe60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fe70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2fe80 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2fe90 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
2fea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2feb0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2fec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fed0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2fee0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2fef0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2ff00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65               "Ge
2ff20 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d  tLinqAssemblyNam
2ff30 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65  e", ForDisplay(e
2ff40 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2ff50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff60 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2ff70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ff80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ffa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ffd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2ffe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fff0 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
30000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
30010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30020 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
30030 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
30040 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
30050 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
30060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30070 20 20 20 22 47 65 74 45 66 36 41 73 73 65 6d 62     "GetEf6Assemb
30080 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70  lyName", ForDisp
30090 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
300a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300b0 20 20 47 65 74 45 66 36 41 73 73 65 6d 62 6c 79    GetEf6Assembly
300c0 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
300d0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
300e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30100 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
30110 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30130 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30150 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
30160 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
30170 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
30180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30190 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
301a0 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22  Ef6AssemblyName"
301b0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29  , ForDisplay(e))
301c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
301d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
301e0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
301f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30200 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
30220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30250 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30270 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
30280 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
30290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302a0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
302b0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
302c0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
302d0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
302e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302f0 20 22 47 65 74 44 65 73 69 67 6e 65 72 41 73 73   "GetDesignerAss
30300 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
30310 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
30320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30330 20 20 20 20 20 47 65 74 44 65 73 69 67 6e 65 72       GetDesigner
30340 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
30350 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
30360 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
30370 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30390 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
303a0 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
303b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
303c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
303e0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
303f0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30400 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30420 20 20 20 20 22 47 65 74 44 65 73 69 67 6e 65 72      "GetDesigner
30430 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
30440 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c 0d 0a  orDisplay(e)),..
30450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30460 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30470 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
30480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30490 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
304a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
304b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
304e0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
304f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30500 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
30510 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30520 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30540 20 20 20 20 20 20 22 47 65 74 49 6e 76 61 72 69        "GetInvari
30550 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  antName", ForDis
30560 70 6c 61 79 28 47 65 74 49 6e 76 61 72 69 61 6e  play(GetInvarian
30570 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  tName(..        
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30590 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
305a0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
305b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305c0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
305d0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
305e0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
305f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30600 20 20 20 20 20 20 20 20 20 20 22 47 65 74 43 6f            "GetCo
30610 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d  nfigInvariantNam
30620 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
30630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30640 20 20 20 20 20 20 20 20 20 47 65 74 43 6f 6e 66           GetConf
30650 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28  igInvariantName(
30660 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
30670 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
30680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30690 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
306a0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
306b0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
306c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
306d0 20 20 20 20 20 20 20 20 20 20 22 47 65 74 50 72            "GetPr
306e0 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
306f0 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
30700 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
30710 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72             GetPr
30720 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
30730 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72  ame(false))), tr
30740 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
30750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30760 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30770 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30780 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30790 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
307a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
307b0 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  etFactoryTypeNam
307c0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
307d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
307e0 20 20 20 20 20 20 20 20 20 47 65 74 46 61 63 74           GetFact
307f0 6f 72 79 54 79 70 65 4e 61 6d 65 28 66 61 6c 73  oryTypeName(fals
30800 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65 67  e))), traceCateg
30810 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30820 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
30830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30860 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30880 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
30890 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
308a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308b0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
308c0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
308d0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
308e0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
308f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30900 20 22 47 65 74 50 72 6f 76 69 64 65 72 41 73 73   "GetProviderAss
30910 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
30920 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
30930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30940 20 20 20 20 20 47 65 74 50 72 6f 76 69 64 65 72       GetProvider
30950 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
30960 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
30970 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
30980 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309a0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
309b0 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
309c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309e0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
309f0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30a00 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30a10 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a30 20 20 20 20 22 47 65 74 50 72 6f 76 69 64 65 72      "GetProvider
30a40 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
30a50 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c 0d 0a  orDisplay(e)),..
30a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a70 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30a80 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30aa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30ab0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30ac0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
30ad0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
30af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30b30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
30b40 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
30b50 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
30b60 20 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73        private As
30b70 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 3b  sembly assembly;
30b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
30b90 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 20 41 73  blic Assembly As
30ba0 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20  sembly..        
30bb0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30bc0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
30bd0 75 72 6e 20 61 73 73 65 6d 62 6c 79 3b 20 7d 0d  urn assembly; }.
30be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30bf0 20 73 65 74 20 7b 20 61 73 73 65 6d 62 6c 79 20   set { assembly 
30c00 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
30c10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
30c20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
30c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
30c70 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
30c80 61 74 65 20 73 74 72 69 6e 67 20 6c 6f 67 46 69  ate string logFi
30c90 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
30ca0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
30cb0 6e 67 20 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d 0a  ng LogFileName..
30cc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
30ce0 65 74 20 7b 20 72 65 74 75 72 6e 20 6c 6f 67 46  et { return logF
30cf0 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20  ileName; }..    
30d00 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
30d10 7b 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20  { logFileName = 
30d20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
30d30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
30d40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
30d90 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
30da0 65 20 73 74 72 69 6e 67 20 72 65 67 69 73 74 72  e string registr
30db0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  yLogFileName;.. 
30dc0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
30dd0 63 20 73 74 72 69 6e 67 20 52 65 67 69 73 74 72  c string Registr
30de0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  yLogFileName..  
30df0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
30e00 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
30e10 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69 73 74   { return regist
30e20 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 20 7d  ryLogFileName; }
30e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30e40 20 20 73 65 74 20 7b 20 72 65 67 69 73 74 72 79    set { registry
30e50 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61  LogFileName = va
30e60 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
30e70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
30e80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
30e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ec0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30ed0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
30ee0 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
30ef0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
30f00 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 69 72  ublic string Dir
30f10 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
30f20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
30f30 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
30f40 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 20 7d  urn directory; }
30f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30f60 20 20 73 65 74 20 7b 20 64 69 72 65 63 74 6f 72    set { director
30f70 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  y = value; }..  
30f80 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
30f90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
30fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
30fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
30ff0 69 76 61 74 65 20 73 74 72 69 6e 67 20 63 6f 72  ivate string cor
31000 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  eFileName;..    
31010 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
31020 74 72 69 6e 67 20 43 6f 72 65 46 69 6c 65 4e 61  tring CoreFileNa
31030 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
31040 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31050 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
31060 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d  coreFileName; }.
31070 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31080 20 73 65 74 20 7b 20 63 6f 72 65 46 69 6c 65 4e   set { coreFileN
31090 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
310a0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
310b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31100 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31110 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 6c  private string l
31120 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  inqFileName;..  
31130 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
31140 20 73 74 72 69 6e 67 20 4c 69 6e 71 46 69 6c 65   string LinqFile
31150 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
31160 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31170 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
31180 6e 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 20  n linqFileName; 
31190 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
311a0 20 20 20 73 65 74 20 7b 20 6c 69 6e 71 46 69 6c     set { linqFil
311b0 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
311c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
311d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
311e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31220 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31230 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
31240 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20   ef6FileName;.. 
31250 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
31260 63 20 73 74 72 69 6e 67 20 45 66 36 46 69 6c 65  c string Ef6File
31270 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
31280 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31290 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
312a0 6e 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 20 7d  n ef6FileName; }
312b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
312c0 20 20 73 65 74 20 7b 20 65 66 36 46 69 6c 65 4e    set { ef6FileN
312d0 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
312e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
312f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31350 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 64  private string d
31360 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b  esignerFileName;
31370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
31380 62 6c 69 63 20 73 74 72 69 6e 67 20 44 65 73 69  blic string Desi
31390 67 6e 65 72 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  gnerFileName..  
313a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
313b0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
313c0 20 7b 20 72 65 74 75 72 6e 20 64 65 73 69 67 6e   { return design
313d0 65 72 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20  erFileName; }.. 
313e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
313f0 65 74 20 7b 20 64 65 73 69 67 6e 65 72 46 69 6c  et { designerFil
31400 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
31410 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31420 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31470 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31480 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
31490 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e   registryVersion
314a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
314b0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 52 65 67  ublic string Reg
314c0 69 73 74 72 79 56 65 72 73 69 6f 6e 0d 0a 20 20  istryVersion..  
314d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
314e0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
314f0 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69 73 74   { return regist
31500 72 79 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20  ryVersion; }..  
31510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
31520 74 20 7b 20 72 65 67 69 73 74 72 79 56 65 72 73  t { registryVers
31530 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ion = value; }..
31540 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
31550 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
31560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
315a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
315b0 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 63  private string c
315c0 6f 6e 66 69 67 56 65 72 73 69 6f 6e 3b 0d 0a 20  onfigVersion;.. 
315d0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
315e0 63 20 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 56  c string ConfigV
315f0 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ersion..        
31600 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31610 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
31620 75 72 6e 20 63 6f 6e 66 69 67 56 65 72 73 69 6f  urn configVersio
31630 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  n; }..          
31640 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f 6e 66        set { conf
31650 69 67 56 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75  igVersion = valu
31660 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
31670 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31680 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
316d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
316e0 72 69 6e 67 20 76 73 56 65 72 73 69 6f 6e 53 75  ring vsVersionSu
316f0 66 66 69 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ffix;..         
31700 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
31710 20 56 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78   VsVersionSuffix
31720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31740 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 73   get { return vs
31750 56 65 72 73 69 6f 6e 53 75 66 66 69 78 3b 20 7d  VersionSuffix; }
31760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31770 20 20 73 65 74 20 7b 20 76 73 56 65 72 73 69 6f    set { vsVersio
31780 6e 53 75 66 66 69 78 20 3d 20 76 61 6c 75 65 3b  nSuffix = value;
31790 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
317a0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
317b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
317c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
317d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
317e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
317f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
31800 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
31810 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 3b 0d  ng debugFormat;.
31820 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
31830 6c 69 63 20 73 74 72 69 6e 67 20 44 65 62 75 67  lic string Debug
31840 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20  Format..        
31850 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31860 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
31870 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  urn debugFormat;
31880 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31890 20 20 20 20 73 65 74 20 7b 20 64 65 62 75 67 46      set { debugF
318a0 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20 7d  ormat = value; }
318b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
318c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
318d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31910 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31920 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
31930 20 74 72 61 63 65 46 6f 72 6d 61 74 3b 0d 0a 20   traceFormat;.. 
31940 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
31950 63 20 73 74 72 69 6e 67 20 54 72 61 63 65 46 6f  c string TraceFo
31960 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rmat..          
31970 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
31980 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
31990 6e 20 74 72 61 63 65 46 6f 72 6d 61 74 3b 20 7d  n traceFormat; }
319a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
319b0 20 20 73 65 74 20 7b 20 74 72 61 63 65 46 6f 72    set { traceFor
319c0 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  mat = value; }..
319d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
319e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
319f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31a40 70 72 69 76 61 74 65 20 49 6e 73 74 61 6c 6c 46  private InstallF
31a50 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61 67  lags installFlag
31a60 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
31a70 70 75 62 6c 69 63 20 49 6e 73 74 61 6c 6c 46 6c  public InstallFl
31a80 61 67 73 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73  ags InstallFlags
31a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31ab0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
31ac0 73 74 61 6c 6c 46 6c 61 67 73 3b 20 7d 0d 0a 20  stallFlags; }.. 
31ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
31ae0 65 74 20 7b 20 69 6e 73 74 61 6c 6c 46 6c 61 67  et { installFlag
31af0 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  s = value; }..  
31b00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31b10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
31b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
31b70 69 76 61 74 65 20 50 72 6f 76 69 64 65 72 46 6c  ivate ProviderFl
31b80 61 67 73 20 70 72 6f 76 69 64 65 72 46 6c 61 67  ags providerFlag
31b90 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
31ba0 70 75 62 6c 69 63 20 50 72 6f 76 69 64 65 72 46  public ProviderF
31bb0 6c 61 67 73 20 50 72 6f 76 69 64 65 72 46 6c 61  lags ProviderFla
31bc0 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
31bd0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
31be0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
31bf0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 3b 20 7d  providerFlags; }
31c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31c10 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64 65 72    set { provider
31c20 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d  Flags = value; }
31c30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
31c40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
31c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c90 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
31ca0 20 20 70 72 69 76 61 74 65 20 54 72 61 63 65 50    private TraceP
31cb0 72 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69  riority debugPri
31cc0 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  ority;..        
31cd0 20 20 20 20 70 75 62 6c 69 63 20 54 72 61 63 65      public Trace
31ce0 50 72 69 6f 72 69 74 79 20 44 65 62 75 67 50 72  Priority DebugPr
31cf0 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20 20 20  iority..        
31d00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31d10 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
31d20 75 72 6e 20 64 65 62 75 67 50 72 69 6f 72 69 74  urn debugPriorit
31d30 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
31d40 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 62 75        set { debu
31d50 67 50 72 69 6f 72 69 74 79 20 3d 20 76 61 6c 75  gPriority = valu
31d60 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
31d70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
31d80 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31dc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
31dd0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54 72        private Tr
31de0 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
31df0 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  ePriority;..    
31e00 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54          public T
31e10 72 61 63 65 50 72 69 6f 72 69 74 79 20 54 72 61  racePriority Tra
31e20 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  cePriority..    
31e30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31e40 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
31e50 20 72 65 74 75 72 6e 20 74 72 61 63 65 50 72 69   return tracePri
31e60 6f 72 69 74 79 3b 20 7d 0d 0a 20 20 20 20 20 20  ority; }..      
31e70 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
31e80 74 72 61 63 65 50 72 69 6f 72 69 74 79 20 3d 20  tracePriority = 
31e90 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
31ea0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
31eb0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
31ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31f00 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
31f10 65 20 62 6f 6f 6c 20 70 65 72 55 73 65 72 3b 0d  e bool perUser;.
31f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
31f30 6c 69 63 20 62 6f 6f 6c 20 50 65 72 55 73 65 72  lic bool PerUser
31f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
31f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31f60 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 65   get { return pe
31f70 72 55 73 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  rUser; }..      
31f80 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
31f90 70 65 72 55 73 65 72 20 3d 20 76 61 6c 75 65 3b  perUser = value;
31fa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31fb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
31fc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
31fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32000 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32010 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
32020 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20 20 20   install;..     
32030 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
32040 6f 6c 20 49 6e 73 74 61 6c 6c 0d 0a 20 20 20 20  ol Install..    
32050 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32060 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
32070 20 72 65 74 75 72 6e 20 69 6e 73 74 61 6c 6c 3b   return install;
32080 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32090 20 20 20 20 73 65 74 20 7b 20 69 6e 73 74 61 6c      set { instal
320a0 6c 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  l = value; }..  
320b0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
320c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
320d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
32120 69 76 61 74 65 20 62 6f 6f 6c 20 77 6f 77 36 34  ivate bool wow64
32130 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32140 75 62 6c 69 63 20 62 6f 6f 6c 20 57 6f 77 36 34  ublic bool Wow64
32150 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32170 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 77 6f   get { return wo
32180 77 36 34 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  w64; }..        
32190 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 77 6f          set { wo
321a0 77 36 34 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  w64 = value; }..
321b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
321c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
321d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32210 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32220 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 52  private bool noR
32230 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b 0d 0a  untimeVersion;..
32240 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
32250 69 63 20 62 6f 6f 6c 20 4e 6f 52 75 6e 74 69 6d  ic bool NoRuntim
32260 65 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20  eVersion..      
32270 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
32280 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
32290 65 74 75 72 6e 20 6e 6f 52 75 6e 74 69 6d 65 56  eturn noRuntimeV
322a0 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 20  ersion; }..     
322b0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
322c0 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f   noRuntimeVersio
322d0 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  n = value; }..  
322e0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
322f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
32350 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 44 65 73  ivate bool noDes
32360 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  ktop;..         
32370 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
32380 6f 44 65 73 6b 74 6f 70 0d 0a 20 20 20 20 20 20  oDesktop..      
32390 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
323a0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
323b0 65 74 75 72 6e 20 6e 6f 44 65 73 6b 74 6f 70 3b  eturn noDesktop;
323c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
323d0 20 20 20 20 73 65 74 20 7b 20 6e 6f 44 65 73 6b      set { noDesk
323e0 74 6f 70 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  top = value; }..
323f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32460 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 43  private bool noC
32470 6f 6d 70 61 63 74 3b 0d 0a 20 20 20 20 20 20 20  ompact;..       
32480 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
32490 20 4e 6f 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20   NoCompact..    
324a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
324b0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
324c0 20 72 65 74 75 72 6e 20 6e 6f 43 6f 6d 70 61 63   return noCompac
324d0 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  t; }..          
324e0 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 43 6f        set { noCo
324f0 6d 70 61 63 74 20 3d 20 76 61 6c 75 65 3b 20 7d  mpact = value; }
32500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32510 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32560 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32570 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
32580 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20 20 20 20  oNetFx20;..     
32590 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
325a0 6f 6c 20 4e 6f 4e 65 74 46 78 32 30 0d 0a 20 20  ol NoNetFx20..  
325b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
325c0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
325d0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
325e0 78 32 30 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  x20; }..        
325f0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
32600 4e 65 74 46 78 32 30 20 3d 20 76 61 6c 75 65 3b  NetFx20 = value;
32610 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32620 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32630 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32670 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32680 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
32690 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20 20   noNetFx35;..   
326a0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
326b0 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 33 35 0d 0a  bool NoNetFx35..
326c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
326d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
326e0 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
326f0 74 46 78 33 35 3b 20 7d 0d 0a 20 20 20 20 20 20  tFx35; }..      
32700 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
32710 6e 6f 4e 65 74 46 78 33 35 20 3d 20 76 61 6c 75  noNetFx35 = valu
32720 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32730 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32740 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32780 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32790 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
327a0 6f 6c 20 6e 6f 4e 65 74 46 78 34 30 3b 0d 0a 20  ol noNetFx40;.. 
327b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
327c0 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 30  c bool NoNetFx40
327d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
327e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
327f0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
32800 4e 65 74 46 78 34 30 3b 20 7d 0d 0a 20 20 20 20  NetFx40; }..    
32810 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
32820 7b 20 6e 6f 4e 65 74 46 78 34 30 20 3d 20 76 61  { noNetFx40 = va
32830 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
32840 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32850 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32890 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
328a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
328b0 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35 3b 0d  bool noNetFx45;.
328c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
328d0 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
328e0 34 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  45..            
328f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
32900 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
32910 6e 6f 4e 65 74 46 78 34 35 3b 20 7d 0d 0a 20 20  noNetFx45; }..  
32920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
32930 74 20 7b 20 6e 6f 4e 65 74 46 78 34 35 20 3d 20  t { noNetFx45 = 
32940 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
32950 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
32960 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
329a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
329b0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
329c0 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35  e bool noNetFx45
329d0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
329e0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65  public bool NoNe
329f0 74 46 78 34 35 31 0d 0a 20 20 20 20 20 20 20 20  tFx451..        
32a00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32a10 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
32a20 75 72 6e 20 6e 6f 4e 65 74 46 78 34 35 31 3b 20  urn noNetFx451; 
32a30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
32a40 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78     set { noNetFx
32a50 34 35 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  451 = value; }..
32a60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ac0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32ad0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e  private bool noN
32ae0 65 74 46 78 34 35 32 3b 0d 0a 20 20 20 20 20 20  etFx452;..      
32af0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
32b00 6c 20 4e 6f 4e 65 74 46 78 34 35 32 0d 0a 20 20  l NoNetFx452..  
32b10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32b20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32b30 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
32b40 78 34 35 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20  x452; }..       
32b50 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
32b60 6f 4e 65 74 46 78 34 35 32 20 3d 20 76 61 6c 75  oNetFx452 = valu
32b70 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32b80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32b90 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bd0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
32be0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
32bf0 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 3b 0d 0a 20  ol noNetFx46;.. 
32c00 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32c10 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 36  c bool NoNetFx46
32c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
32c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32c40 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
32c50 4e 65 74 46 78 34 36 3b 20 7d 0d 0a 20 20 20 20  NetFx46; }..    
32c60 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
32c70 7b 20 6e 6f 4e 65 74 46 78 34 36 20 3d 20 76 61  { noNetFx46 = va
32c80 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
32c90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32ca0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ce0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32cf0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32d00 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 31 3b  bool noNetFx461;
32d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
32d20 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
32d30 78 34 36 31 0d 0a 20 20 20 20 20 20 20 20 20 20  x461..          
32d40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32d50 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
32d60 6e 20 6e 6f 4e 65 74 46 78 34 36 31 3b 20 7d 0d  n noNetFx461; }.
32d70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32d80 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36   set { noNetFx46
32d90 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  1 = value; }..  
32da0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
32db0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
32e10 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
32e20 46 78 34 36 32 3b 0d 0a 20 20 20 20 20 20 20 20  Fx462;..        
32e30 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
32e40 4e 6f 4e 65 74 46 78 34 36 32 0d 0a 20 20 20 20  NoNetFx462..    
32e50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
32e60 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
32e70 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34   return noNetFx4
32e80 36 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  62; }..         
32e90 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e         set { noN
32ea0 65 74 46 78 34 36 32 20 3d 20 76 61 6c 75 65 3b  etFx462 = value;
32eb0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32ec0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
32ed0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
32ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f10 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
32f20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
32f30 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20 20   noNetFx47;..   
32f40 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
32f50 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 37 0d 0a  bool NoNetFx47..
32f60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
32f80 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
32f90 74 46 78 34 37 3b 20 7d 0d 0a 20 20 20 20 20 20  tFx47; }..      
32fa0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
32fb0 6e 6f 4e 65 74 46 78 34 37 20 3d 20 76 61 6c 75  noNetFx47 = valu
32fc0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
32fd0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
32fe0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
32ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33020 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33030 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
33040 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a  ol noNetFx471;..
33050 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
33060 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34  ic bool NoNetFx4
33070 37 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  71..            
33080 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33090 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
330a0 6e 6f 4e 65 74 46 78 34 37 31 3b 20 7d 0d 0a 20  noNetFx471; }.. 
330b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
330c0 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 37 31 20  et { noNetFx471 
330d0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
330e0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
330f0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
33100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33140 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
33150 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30  ate bool noVs200
33160 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5;..            
33170 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73  public bool NoVs
33180 32 30 30 35 0d 0a 20 20 20 20 20 20 20 20 20 20  2005..          
33190 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
331a0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
331b0 6e 20 6e 6f 56 73 32 30 30 35 3b 20 7d 0d 0a 20  n noVs2005; }.. 
331c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
331d0 65 74 20 7b 20 6e 6f 56 73 32 30 30 35 20 3d 20  et { noVs2005 = 
331e0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
331f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33200 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33250 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33260 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 38 3b  e bool noVs2008;
33270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
33280 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30  blic bool NoVs20
33290 30 38 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  08..            
332a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
332b0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
332c0 6e 6f 56 73 32 30 30 38 3b 20 7d 0d 0a 20 20 20  noVs2008; }..   
332d0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
332e0 20 7b 20 6e 6f 56 73 32 30 30 38 20 3d 20 76 61   { noVs2008 = va
332f0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33300 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33310 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33350 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33360 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33370 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30 3b 0d 0a  bool noVs2010;..
33380 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
33390 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 30  ic bool NoVs2010
333a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
333b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
333c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
333d0 56 73 32 30 31 30 3b 20 7d 0d 0a 20 20 20 20 20  Vs2010; }..     
333e0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
333f0 20 6e 6f 56 73 32 30 31 30 20 3d 20 76 61 6c 75   noVs2010 = valu
33400 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33410 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33420 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33460 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33470 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
33480 6f 6c 20 6e 6f 56 73 32 30 31 32 3b 0d 0a 20 20  ol noVs2012;..  
33490 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
334a0 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 32 0d 0a   bool NoVs2012..
334b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
334c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
334d0 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73  et { return noVs
334e0 32 30 31 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20  2012; }..       
334f0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
33500 6f 56 73 32 30 31 32 20 3d 20 76 61 6c 75 65 3b  oVs2012 = value;
33510 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33520 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33530 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33570 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33580 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
33590 20 6e 6f 56 73 32 30 31 33 3b 0d 0a 20 20 20 20   noVs2013;..    
335a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
335b0 6f 6f 6c 20 4e 6f 56 73 32 30 31 33 0d 0a 20 20  ool NoVs2013..  
335c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
335d0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
335e0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30   { return noVs20
335f0 31 33 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  13; }..         
33600 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56         set { noV
33610 73 32 30 31 33 20 3d 20 76 61 6c 75 65 3b 20 7d  s2013 = value; }
33620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33630 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33680 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33690 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
336a0 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20 20 20 20  oVs2015;..      
336b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
336c0 6c 20 4e 6f 56 73 32 30 31 35 0d 0a 20 20 20 20  l NoVs2015..    
336d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
336e0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
336f0 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 35   return noVs2015
33700 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
33710 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32       set { noVs2
33720 30 31 35 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  015 = value; }..
33730 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33740 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
337a0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56  private bool noV
337b0 73 32 30 31 37 3b 0d 0a 20 20 20 20 20 20 20 20  s2017;..        
337c0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
337d0 4e 6f 56 73 32 30 31 37 0d 0a 20 20 20 20 20 20  NoVs2017..      
337e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
337f0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
33800 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 37 3b 20  eturn noVs2017; 
33810 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
33820 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 31     set { noVs201
33830 37 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  7 = value; }..  
33840 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33850 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
338a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
338b0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 54 72 61  ivate bool noTra
338c0 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
338d0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 54   public bool NoT
338e0 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
338f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33900 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33910 6e 20 6e 6f 54 72 61 63 65 3b 20 7d 0d 0a 20 20  n noTrace; }..  
33920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33930 74 20 7b 20 6e 6f 54 72 61 63 65 20 3d 20 76 61  t { noTrace = va
33940 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33950 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33960 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
339b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
339c0 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d  bool noConsole;.
339d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
339e0 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6f 6e 73 6f  lic bool NoConso
339f0 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
33a00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33a10 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
33a20 6e 6f 43 6f 6e 73 6f 6c 65 3b 20 7d 0d 0a 20 20  noConsole; }..  
33a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33a40 74 20 7b 20 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20  t { noConsole = 
33a50 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33a60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33a70 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33ac0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33ad0 65 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 3b 0d 0a 20  e bool noLog;.. 
33ae0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
33af0 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 0d 0a 20 20  c bool NoLog..  
33b00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33b10 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33b20 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4c 6f 67 3b   { return noLog;
33b30 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33b40 20 20 20 20 73 65 74 20 7b 20 6e 6f 4c 6f 67 20      set { noLog 
33b50 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
33b60 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
33b70 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
33b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
33bc0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
33bd0 61 74 65 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e  ate bool throwOn
33be0 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20 20 20  Missing;..      
33bf0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
33c00 6c 20 54 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  l ThrowOnMissing
33c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33c30 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 74 68   get { return th
33c40 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b 20 7d 0d  rowOnMissing; }.
33c50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33c60 20 73 65 74 20 7b 20 74 68 72 6f 77 4f 6e 4d 69   set { throwOnMi
33c70 73 73 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d  ssing = value; }
33c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33c90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ce0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33cf0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 77    private bool w
33d00 68 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20  hatIf;..        
33d10 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
33d20 57 68 61 74 49 66 0d 0a 20 20 20 20 20 20 20 20  WhatIf..        
33d30 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
33d40 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
33d50 75 72 6e 20 77 68 61 74 49 66 3b 20 7d 0d 0a 20  urn whatIf; }.. 
33d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
33d70 65 74 20 7b 20 77 68 61 74 49 66 20 3d 20 76 61  et { whatIf = va
33d80 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33d90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33da0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33de0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33df0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33e00 62 6f 6f 6c 20 64 65 62 75 67 3b 0d 0a 20 20 20  bool debug;..   
33e10 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
33e20 62 6f 6f 6c 20 44 65 62 75 67 0d 0a 20 20 20 20  bool Debug..    
33e30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33e40 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
33e50 20 72 65 74 75 72 6e 20 64 65 62 75 67 3b 20 7d   return debug; }
33e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33e70 20 20 73 65 74 20 7b 20 64 65 62 75 67 20 3d 20    set { debug = 
33e80 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33e90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33ea0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33ef0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33f00 65 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 3b 0d  e bool verbose;.
33f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
33f20 6c 69 63 20 62 6f 6f 6c 20 56 65 72 62 6f 73 65  lic bool Verbose
33f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33f50 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 65   get { return ve
33f60 72 62 6f 73 65 3b 20 7d 0d 0a 20 20 20 20 20 20  rbose; }..      
33f70 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33f80 76 65 72 62 6f 73 65 20 3d 20 76 61 6c 75 65 3b  verbose = value;
33f90 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33fa0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33fb0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ff0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34000 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
34010 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20 20 20   confirm;..     
34020 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
34030 6f 6c 20 43 6f 6e 66 69 72 6d 0d 0a 20 20 20 20  ol Confirm..    
34040 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
34050 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
34060 20 72 65 74 75 72 6e 20 63 6f 6e 66 69 72 6d 3b   return confirm;
34070 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34080 20 20 20 20 73 65 74 20 7b 20 63 6f 6e 66 69 72      set { confir
34090 6d 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  m = value; }..  
340a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
340b0 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
340c0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
340d0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
340e0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
340f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34130 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
34140 20 23 72 65 67 69 6f 6e 20 46 72 61 6d 65 77 6f   #region Framewo
34150 72 6b 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20  rkList Class..  
34160 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
34170 61 6c 65 64 20 63 6c 61 73 73 20 46 72 61 6d 65  aled class Frame
34180 77 6f 72 6b 4c 69 73 74 0d 0a 20 20 20 20 20 20  workList..      
34190 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
341a0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
341b0 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
341c0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
341d0 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73 74 28 29   FrameworkList()
341e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
341f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34200 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
34210 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
34220 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
34230 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34240 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34280 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
34290 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
342a0 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
342b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
342c0 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
342d0 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b 0d 0a 20  yKey rootKey;.. 
342e0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
342f0 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
34300 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20 20 20 20  y RootKey..     
34310 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34320 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
34330 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65 79 3b 20  return rootKey; 
34340 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34350 20 20 20 73 65 74 20 7b 20 72 6f 6f 74 4b 65 79     set { rootKey
34360 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
34370 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
34380 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
34390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
343c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
343d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
343e0 76 61 74 65 20 53 74 72 69 6e 67 4c 69 73 74 20  vate StringList 
343f0 6e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  names;..        
34400 20 20 20 20 70 75 62 6c 69 63 20 53 74 72 69 6e      public Strin
34410 67 4c 69 73 74 20 4e 61 6d 65 73 0d 0a 20 20 20  gList Names..   
34420 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
34430 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
34440 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65 73 3b 20  { return names; 
34450 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34460 20 20 20 73 65 74 20 7b 20 6e 61 6d 65 73 20 3d     set { names =
34470 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
34480 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
34490 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
344a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
344d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
344e0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
344f0 74 65 20 56 65 72 73 69 6f 6e 4d 61 70 20 76 65  te VersionMap ve
34500 72 73 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20  rsions;..       
34510 20 20 20 20 20 70 75 62 6c 69 63 20 56 65 72 73       public Vers
34520 69 6f 6e 4d 61 70 20 56 65 72 73 69 6f 6e 73 0d  ionMap Versions.
34530 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
34540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34550 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 65 72  get { return ver
34560 73 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20 20 20 20  sions; }..      
34570 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
34580 76 65 72 73 69 6f 6e 73 20 3d 20 76 61 6c 75 65  versions = value
34590 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
345a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
345b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
345c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
34600 20 20 20 20 20 70 72 69 76 61 74 65 20 53 74 72       private Str
34610 69 6e 67 4c 69 73 74 20 70 6c 61 74 66 6f 72 6d  ingList platform
34620 4e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  Names;..        
34630 20 20 20 20 70 75 62 6c 69 63 20 53 74 72 69 6e      public Strin
34640 67 4c 69 73 74 20 50 6c 61 74 66 6f 72 6d 4e 61  gList PlatformNa
34650 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
34660 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34670 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
34680 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 73 3b 20   platformNames; 
34690 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
346a0 20 20 20 73 65 74 20 7b 20 70 6c 61 74 66 6f 72     set { platfor
346b0 6d 4e 61 6d 65 73 20 3d 20 76 61 6c 75 65 3b 20  mNames = value; 
346c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
346d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
346e0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
346f0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
34700 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
34710 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34760 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 56 73        #region Vs
34770 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20  List Class..    
34780 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
34790 65 64 20 63 6c 61 73 73 20 56 73 4c 69 73 74 0d  ed class VsList.
347a0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
347b0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
347c0 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
347d0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
347e0 20 70 75 62 6c 69 63 20 56 73 4c 69 73 74 28 29   public VsList()
347f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34810 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
34820 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
34830 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
34840 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
34850 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
348a0 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
348b0 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
348c0 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
348d0 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
348e0 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b  stryKey rootKey;
348f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
34900 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
34910 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20  yKey RootKey..  
34920 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34930 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
34940 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65   { return rootKe
34950 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
34960 20 20 20 20 20 20 73 65 74 20 7b 20 72 6f 6f 74        set { root
34970 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  Key = value; }..
34980 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34990 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
349a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
349f0 70 72 69 76 61 74 65 20 56 65 72 73 69 6f 6e 4c  private VersionL
34a00 69 73 74 20 76 65 72 73 69 6f 6e 73 3b 0d 0a 20  ist versions;.. 
34a10 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
34a20 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 20 56 65  c VersionList Ve
34a30 72 73 69 6f 6e 73 0d 0a 20 20 20 20 20 20 20 20  rsions..        
34a40 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34a50 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34a60 75 72 6e 20 76 65 72 73 69 6f 6e 73 3b 20 7d 0d  urn versions; }.
34a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34a80 20 73 65 74 20 7b 20 76 65 72 73 69 6f 6e 73 20   set { versions 
34a90 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34aa0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
34ab0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
34ac0 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
34ad0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
34ae0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
34af0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
34b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34b50 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
34b60 74 65 20 43 6f 6e 73 74 61 6e 74 20 44 61 74 61  te Constant Data
34b70 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
34b80 6e 20 50 61 63 6b 61 67 65 20 26 20 50 72 6f 76  n Package & Prov
34b90 69 64 65 72 20 4e 61 6d 65 73 0d 0a 20 20 20 20  ider Names..    
34ba0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
34bb0 74 20 73 74 72 69 6e 67 20 43 6f 72 65 46 69 6c  t string CoreFil
34bc0 65 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e  eName = "System.
34bd0 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
34be0 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
34bf0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
34c00 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 22  LinqFileName = "
34c10 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
34c20 74 65 2e 4c 69 6e 71 2e 64 6c 6c 22 3b 0d 0a 20  te.Linq.dll";.. 
34c30 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
34c40 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66 36 46  onst string Ef6F
34c50 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73 74 65  ileName = "Syste
34c60 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46  m.Data.SQLite.EF
34c70 36 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20  6.dll";..       
34c80 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
34c90 74 72 69 6e 67 20 44 65 73 69 67 6e 65 72 46 69  tring DesignerFi
34ca0 6c 65 4e 61 6d 65 20 3d 20 22 53 51 4c 69 74 65  leName = "SQLite
34cb0 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c 22 3b 0d  .Designer.dll";.
34cc0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
34cd0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 50 72   const string Pr
34ce0 6f 76 69 64 65 72 4e 61 6d 65 20 3d 20 22 53 51  oviderName = "SQ
34cf0 4c 69 74 65 20 44 61 74 61 20 50 72 6f 76 69 64  Lite Data Provid
34d00 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  er";..        pr
34d10 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
34d20 6e 67 20 50 72 6f 6a 65 63 74 4e 61 6d 65 20 3d  ng ProjectName =
34d30 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
34d40 4c 69 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Lite";..        
34d50 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
34d60 72 69 6e 67 20 4c 65 67 61 63 79 50 72 6f 6a 65  ring LegacyProje
34d70 63 74 4e 61 6d 65 20 3d 20 22 53 51 4c 69 74 65  ctName = "SQLite
34d80 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ";....        //
34d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dd0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
34de0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
34df0 74 72 69 6e 67 20 44 65 73 63 72 69 70 74 69 6f  tring Descriptio
34e00 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
34e10 20 22 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b   ".NET Framework
34e20 20 44 61 74 61 20 50 72 6f 76 69 64 65 72 20 66   Data Provider f
34e30 6f 72 20 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20  or SQLite";..   
34e40 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
34e50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
34e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ea0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
34eb0 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
34ec0 6e 67 20 43 4c 52 76 32 49 6d 61 67 65 52 75 6e  ng CLRv2ImageRun
34ed0 74 69 6d 65 56 65 72 73 69 6f 6e 20 3d 20 22 76  timeVersion = "v
34ee0 32 2e 30 2e 35 30 37 32 37 22 3b 0d 0a 20 20 20  2.0.50727";..   
34ef0 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
34f00 73 74 20 73 74 72 69 6e 67 20 43 4c 52 76 34 49  st string CLRv4I
34f10 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
34f20 6f 6e 20 3d 20 22 76 34 2e 30 2e 33 30 33 31 39  on = "v4.0.30319
34f30 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ";....        //
34f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
34f90 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
34fa0 74 72 69 6e 67 20 53 79 73 74 65 6d 45 66 36 41  tring SystemEf6A
34fb0 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 22 45  ssemblyName = "E
34fc0 6e 74 69 74 79 46 72 61 6d 65 77 6f 72 6b 2c 20  ntityFramework, 
34fd0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
34fe0 20 22 56 65 72 73 69 6f 6e 3d 36 2e 30 2e 30 2e   "Version=6.0.0.
34ff0 30 2c 20 43 75 6c 74 75 72 65 3d 6e 65 75 74 72  0, Culture=neutr
35000 61 6c 2c 20 50 75 62 6c 69 63 4b 65 79 54 6f 6b  al, PublicKeyTok
35010 65 6e 3d 62 37 37 61 35 63 35 36 31 39 33 34 65  en=b77a5c561934e
35020 30 38 39 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  089";....       
35030 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35080 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
35090 74 20 73 74 72 69 6e 67 20 4e 61 6d 65 41 6e 64  t string NameAnd
350a0 56 61 6c 75 65 46 6f 72 6d 61 74 20 3d 20 22 7b  ValueFormat = "{
350b0 30 7d 3a 20 7b 31 7d 22 3b 0d 0a 20 20 20 20 20  0}: {1}";..     
350c0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
350d0 20 73 74 72 69 6e 67 20 4c 6f 67 46 69 6c 65 53   string LogFileS
350e0 75 66 66 69 78 20 3d 20 22 2e 6c 6f 67 22 3b 0d  uffix = ".log";.
350f0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35140 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
35150 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
35160 6e 67 20 56 73 44 65 76 45 6e 76 53 65 74 75 70  ng VsDevEnvSetup
35170 46 6f 72 6d 61 74 20 3d 20 22 7b 30 7d 3a 20 7b  Format = "{0}: {
35180 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  1}";....        
35190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
351d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
351e0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
351f0 20 73 74 72 69 6e 67 20 52 6f 6f 74 4b 65 79 4e   string RootKeyN
35200 61 6d 65 20 3d 20 22 53 6f 66 74 77 61 72 65 22  ame = "Software"
35210 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
35220 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
35230 57 6f 77 36 34 53 75 62 4b 65 79 4e 61 6d 65 20  Wow64SubKeyName 
35240 3d 20 22 57 6f 77 36 34 33 32 4e 6f 64 65 22 3b  = "Wow6432Node";
35250 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
35260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
352a0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
352b0 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  /..        // NO
352c0 54 45 3a 20 54 68 65 20 2e 4e 45 54 20 46 72 61  TE: The .NET Fra
352d0 6d 65 77 6f 72 6b 20 68 61 73 20 62 6f 74 68 20  mework has both 
352e0 33 32 2d 62 69 74 20 61 6e 64 20 36 34 2d 62 69  32-bit and 64-bi
352f0 74 20 65 64 69 74 69 6f 6e 73 2e 0d 0a 20 20 20  t editions...   
35300 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
35310 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
35320 72 65 61 64 6f 6e 6c 79 20 62 6f 6f 6c 20 4e 65  readonly bool Ne
35330 74 46 78 49 73 33 32 42 69 74 4f 6e 6c 79 20 3d  tFxIs32BitOnly =
35340 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
35350 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
353a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
353b0 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72 20 6e    // NOTE: For n
353c0 6f 77 2c 20 56 69 73 75 61 6c 20 53 74 75 64 69  ow, Visual Studi
353d0 6f 20 69 73 20 61 6c 77 61 79 73 20 61 20 33 32  o is always a 32
353e0 2d 62 69 74 20 61 70 70 6c 69 63 61 74 69 6f 6e  -bit application
353f0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
35400 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
35410 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 62  tatic readonly b
35420 6f 6f 6c 20 56 73 49 73 33 32 42 69 74 4f 6e 6c  ool VsIs32BitOnl
35430 79 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  y = true;....   
35440 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35490 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
354a0 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20  static readonly 
354b0 73 74 72 69 6e 67 20 56 73 49 64 46 6f 72 6d 61  string VsIdForma
354c0 74 20 3d 20 22 42 22 3b 0d 0a 0d 0a 20 20 20 20  t = "B";....    
354d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
354e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
354f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
35520 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
35530 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
35540 74 72 69 6e 67 20 58 50 61 74 68 46 6f 72 41 64  tring XPathForAd
35550 64 45 6c 65 6d 65 6e 74 20 3d 0d 0a 20 20 20 20  dElement =..    
35560 20 20 20 20 20 20 20 20 22 63 6f 6e 66 69 67 75          "configu
35570 72 61 74 69 6f 6e 2f 73 79 73 74 65 6d 2e 64 61  ration/system.da
35580 74 61 2f 44 62 50 72 6f 76 69 64 65 72 46 61 63  ta/DbProviderFac
35590 74 6f 72 69 65 73 2f 61 64 64 5b 40 69 6e 76 61  tories/add[@inva
355a0 72 69 61 6e 74 3d 5c 22 7b 30 7d 5c 22 5d 22 3b  riant=\"{0}\"]";
355b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
355c0 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
355d0 6e 6c 79 20 73 74 72 69 6e 67 20 58 50 61 74 68  nly string XPath
355e0 46 6f 72 52 65 6d 6f 76 65 45 6c 65 6d 65 6e 74  ForRemoveElement
355f0 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
35600 22 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 73  "configuration/s
35610 79 73 74 65 6d 2e 64 61 74 61 2f 44 62 50 72 6f  ystem.data/DbPro
35620 76 69 64 65 72 46 61 63 74 6f 72 69 65 73 2f 72  viderFactories/r
35630 65 6d 6f 76 65 5b 40 69 6e 76 61 72 69 61 6e 74  emove[@invariant
35640 3d 5c 22 7b 30 7d 5c 22 5d 22 3b 0d 0a 20 20 20  =\"{0}\"]";..   
35650 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
35660 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
356a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
356b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
356c0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74  egion Private St
356d0 61 74 69 63 20 44 61 74 61 0d 0a 20 20 20 20 20  atic Data..     
356e0 20 20 20 23 72 65 67 69 6f 6e 20 44 69 61 67 6e     #region Diagn
356f0 6f 73 74 69 63 73 20 26 20 4c 6f 67 67 69 6e 67  ostics & Logging
35700 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
35710 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
35720 61 63 68 65 20 74 68 65 20 63 75 72 72 65 6e 74  ache the current
35730 20 70 72 6f 63 65 73 73 20 61 6e 64 20 61 73 73   process and ass
35740 65 6d 62 6c 79 20 61 73 20 74 68 65 79 20 64 6f  embly as they do
35750 20 6e 6f 74 20 63 68 61 6e 67 65 0d 0a 20 20 20   not change..   
35760 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e       //       an
35770 64 20 6d 61 79 20 62 65 20 6e 65 65 64 65 64 20  d may be needed 
35780 69 6e 20 71 75 69 74 65 20 61 20 66 65 77 20 64  in quite a few d
35790 69 66 66 65 72 65 6e 74 20 70 6c 61 63 65 73 2e  ifferent places.
357a0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
357b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
357c0 61 74 69 63 20 50 72 6f 63 65 73 73 20 74 68 69  atic Process thi
357d0 73 50 72 6f 63 65 73 73 20 3d 20 50 72 6f 63 65  sProcess = Proce
357e0 73 73 2e 47 65 74 43 75 72 72 65 6e 74 50 72 6f  ss.GetCurrentPro
357f0 63 65 73 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  cess();..       
35800 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
35810 41 73 73 65 6d 62 6c 79 20 74 68 69 73 41 73 73  Assembly thisAss
35820 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
35830 2e 47 65 74 45 78 65 63 75 74 69 6e 67 41 73 73  .GetExecutingAss
35840 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  embly();....    
35850 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
358a0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
358b0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20     // NOTE: The 
358c0 74 72 61 63 65 20 63 61 74 65 67 6f 72 79 20 69  trace category i
358d0 73 20 74 68 65 20 73 61 6d 65 20 66 6f 72 20 62  s the same for b
358e0 6f 74 68 20 74 68 65 20 64 65 62 75 67 20 61 6e  oth the debug an
358f0 64 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20  d trace..       
35900 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 62 61   //       callba
35910 63 6b 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  cks...        //
35920 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35930 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
35940 74 72 61 63 65 43 61 74 65 67 6f 72 79 20 3d 20  traceCategory = 
35950 28 74 68 69 73 41 73 73 65 6d 62 6c 79 20 21 3d  (thisAssembly !=
35960 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
35970 20 20 20 20 20 20 50 61 74 68 2e 47 65 74 46 69        Path.GetFi
35980 6c 65 4e 61 6d 65 28 74 68 69 73 41 73 73 65 6d  leName(thisAssem
35990 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 20 3a 20  bly.Location) : 
359a0 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
359b0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
359c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35a00 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
35a10 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 20 74 68 65  // NOTE: Set the
35a20 20 64 65 62 75 67 20 61 6e 64 20 74 72 61 63 65   debug and trace
35a30 20 6c 6f 67 67 69 6e 67 20 63 61 6c 6c 62 61 63   logging callbac
35a40 6b 73 20 75 73 65 64 20 62 79 20 74 68 65 0d 0a  ks used by the..
35a50 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
35a60 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20   application... 
35a70 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
35a80 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35a90 63 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  c TraceCallback 
35aa0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 20 3d 20  debugCallback = 
35ab0 41 70 70 44 65 62 75 67 3b 0d 0a 20 20 20 20 20  AppDebug;..     
35ac0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35ad0 63 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20  c TraceCallback 
35ae0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 3d 20  traceCallback = 
35af0 41 70 70 54 72 61 63 65 3b 0d 0a 20 20 20 20 20  AppTrace;..     
35b00 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
35b10 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
35b70 69 6f 6e 20 53 79 73 74 65 6d 20 44 69 72 65 63  ion System Direc
35b80 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 70 72  tory..        pr
35b90 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
35ba0 69 6e 67 20 73 79 73 74 65 6d 44 69 72 65 63 74  ing systemDirect
35bb0 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23  ory = null;....#
35bc0 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20  if WINDOWS..    
35bd0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
35be0 69 63 20 73 74 72 69 6e 67 20 73 79 73 74 65 6d  ic string system
35bf0 44 69 72 65 63 74 6f 72 79 57 6f 77 36 34 20 3d  DirectoryWow64 =
35c00 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69 66 0d 0a   null;..#endif..
35c10 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
35c20 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
35c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
35c80 20 23 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72   #region Registr
35c90 79 20 53 74 61 74 69 73 74 69 63 73 0d 0a 20 20  y Statistics..  
35ca0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
35cb0 61 74 69 63 20 69 6e 74 20 66 69 6c 65 73 43 72  atic int filesCr
35cc0 65 61 74 65 64 20 3d 20 30 3b 0d 0a 20 20 20 20  eated = 0;..    
35cd0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
35ce0 69 63 20 69 6e 74 20 66 69 6c 65 73 4d 6f 64 69  ic int filesModi
35cf0 66 69 65 64 20 3d 20 30 3b 0d 0a 20 20 20 20 20  fied = 0;..     
35d00 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
35d10 63 20 69 6e 74 20 66 69 6c 65 73 44 65 6c 65 74  c int filesDelet
35d20 65 64 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20  ed = 0;..       
35d30 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
35d40 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
35d50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35da0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
35db0 65 67 69 6f 6e 20 54 72 61 63 65 20 48 61 6e 64  egion Trace Hand
35dc0 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 70 72  ling..        pr
35dd0 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
35de0 69 6e 67 20 47 65 74 4c 6f 67 46 69 6c 65 4e 61  ing GetLogFileNa
35df0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
35e00 20 73 74 72 69 6e 67 20 74 79 70 65 4e 61 6d 65   string typeName
35e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 20  ..            ) 
35e20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
35e30 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
35e40 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
35e50 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 54 65  ame = Path.GetTe
35e60 6d 70 46 69 6c 65 4e 61 6d 65 28 29 3b 0d 0a 20  mpFileName();.. 
35e70 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
35e80 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61  g directory = Pa
35e90 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
35ea0 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a  ame(fileName);..
35eb0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
35ec0 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20  ng fileNameOnly 
35ed0 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61  = Path.GetFileNa
35ee0 6d 65 57 69 74 68 6f 75 74 45 78 74 65 6e 73 69  meWithoutExtensi
35ef0 6f 6e 28 66 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  on(fileName);...
35f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
35f10 69 6e 67 20 6e 65 77 46 69 6c 65 4e 61 6d 65 20  ing newFileName 
35f20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  = Path.Combine(d
35f30 69 72 65 63 74 6f 72 79 2c 20 53 74 72 69 6e 67  irectory, String
35f40 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
35f50 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31            "{0}{1
35f60 7d 7b 32 7d 22 2c 20 74 72 61 63 65 43 61 74 65  }{2}", traceCate
35f70 67 6f 72 79 2c 20 21 53 74 72 69 6e 67 2e 49 73  gory, !String.Is
35f80 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 79 70 65  NullOrEmpty(type
35f90 4e 61 6d 65 29 20 3f 0d 0a 20 20 20 20 20 20 20  Name) ?..       
35fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2e 22               "."
35fb0 20 2b 20 74 79 70 65 4e 61 6d 65 20 3a 20 53 74   + typeName : St
35fc0 72 69 6e 67 2e 45 6d 70 74 79 2c 20 22 2e 22 20  ring.Empty, "." 
35fd0 2b 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c 79 20 2b  + fileNameOnly +
35fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35ff0 20 20 20 20 20 20 4c 6f 67 46 69 6c 65 53 75 66        LogFileSuf
36000 66 69 78 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  fix));....      
36010 20 20 20 20 20 20 46 69 6c 65 2e 4d 6f 76 65 28        File.Move(
36020 66 69 6c 65 4e 61 6d 65 2c 20 6e 65 77 46 69 6c  fileName, newFil
36030 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
36040 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65         return ne
36050 77 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  wFileName;..    
36060 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36070 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360b0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
360c0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
360d0 69 63 20 76 6f 69 64 20 41 70 70 44 65 62 75 67  ic void AppDebug
360e0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  (..            s
360f0 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a  tring message,..
36100 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
36110 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20  ng category..   
36120 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
36130 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36140 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
36150 67 43 6f 72 65 28 53 74 72 69 6e 67 2e 46 6f 72  gCore(String.For
36160 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
36170 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
36180 65 62 75 67 46 6f 72 6d 61 74 2c 20 54 72 61 63  ebugFormat, Trac
36190 65 4f 70 73 2e 4e 65 78 74 44 65 62 75 67 49 64  eOps.NextDebugId
361a0 28 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  (),..           
361b0 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 54 69       TraceOps.Ti
361c0 6d 65 53 74 61 6d 70 28 44 61 74 65 54 69 6d 65  meStamp(DateTime
361d0 2e 55 74 63 4e 6f 77 29 2c 20 6d 65 73 73 61 67  .UtcNow), messag
361e0 65 29 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a  e), category);..
361f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36200 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
36250 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36260 73 74 61 74 69 63 20 76 6f 69 64 20 41 70 70 54  static void AppT
36270 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
36280 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67     string messag
36290 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
362a0 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d  string category.
362b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
362c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
362d0 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
362e0 54 72 61 63 65 43 6f 72 65 28 53 74 72 69 6e 67  TraceCore(String
362f0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
36300 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
36310 70 73 2e 54 72 61 63 65 46 6f 72 6d 61 74 2c 20  ps.TraceFormat, 
36320 54 72 61 63 65 4f 70 73 2e 4e 65 78 74 54 72 61  TraceOps.NextTra
36330 63 65 49 64 28 29 2c 0d 0a 20 20 20 20 20 20 20  ceId(),..       
36340 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
36350 73 2e 54 69 6d 65 53 74 61 6d 70 28 44 61 74 65  s.TimeStamp(Date
36360 54 69 6d 65 2e 55 74 63 4e 6f 77 29 2c 20 6d 65  Time.UtcNow), me
36370 73 73 61 67 65 29 2c 20 63 61 74 65 67 6f 72 79  ssage), category
36380 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
36390 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
363a0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
363b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
363c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
363d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
363e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
363f0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
36400 23 72 65 67 69 6f 6e 20 47 65 6e 65 72 69 63 20  #region Generic 
36410 50 6c 61 74 66 6f 72 6d 20 48 61 6e 64 6c 69 6e  Platform Handlin
36420 67 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  g..        priva
36430 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  te static bool I
36440 73 36 34 42 69 74 50 72 6f 63 65 73 73 28 29 0d  s64BitProcess().
36450 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36460 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
36470 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
36480 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66   Returns true if
36490 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f   the current pro
364a0 63 65 73 73 20 69 73 20 36 34 2d 62 69 74 2e 20  cess is 64-bit. 
364b0 20 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20   If this..      
364c0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69        //       i
364d0 73 20 74 72 75 65 2c 20 77 65 20 2a 6b 6e 6f 77  s true, we *know
364e0 2a 20 74 68 61 74 20 77 65 20 6d 75 73 74 20 62  * that we must b
364f0 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 20 36  e running on a 6
36500 34 2d 62 69 74 0d 0a 20 20 20 20 20 20 20 20 20  4-bit..         
36510 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72     //       oper
36520 61 74 69 6e 67 20 73 79 73 74 65 6d 20 61 73 20  ating system as 
36530 77 65 6c 6c 2e 20 20 48 6f 77 65 76 65 72 2c 20  well.  However, 
36540 69 66 20 74 68 69 73 20 69 73 20 66 61 6c 73 65  if this is false
36550 2c 20 77 65 0d 0a 20 20 20 20 20 20 20 20 20 20  , we..          
36560 20 20 2f 2f 20 20 20 20 20 20 20 64 6f 20 6e 6f    //       do no
36570 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 6b 6e  t necessarily kn
36580 6f 77 20 74 68 61 74 20 77 65 20 61 72 65 20 72  ow that we are r
36590 75 6e 6e 69 6e 67 20 6f 6e 20 61 20 33 32 2d 62  unning on a 32-b
365a0 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
365b0 2f 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69  //       operati
365c0 6e 67 20 73 79 73 74 65 6d 2c 20 64 75 65 20 74  ng system, due t
365d0 6f 20 57 6f 57 36 34 20 28 57 69 6e 33 32 2d 6f  o WoW64 (Win32-o
365e0 6e 2d 57 69 6e 36 34 29 2c 20 65 74 63 2e 0d 0a  n-Win64), etc...
365f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
36600 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36610 72 6e 20 28 49 6e 74 50 74 72 2e 53 69 7a 65 20  rn (IntPtr.Size 
36620 3d 3d 20 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 29  == sizeof(long))
36630 3b 20 2f 2f 20 4e 4f 54 45 3a 20 50 6f 69 6e 74  ; // NOTE: Point
36640 65 72 20 69 73 20 36 34 2d 62 69 74 73 3f 0d 0a  er is 64-bits?..
36650 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36660 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
366b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
366c0 73 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 75  static bool IsSu
366d0 70 70 6f 72 74 65 64 52 6f 6f 74 4b 65 79 28 0d  pportedRootKey(.
366e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63  .            Moc
366f0 6b 52 65 67 69 73 74 72 79 20 72 65 67 69 73 74  kRegistry regist
36700 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
36710 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
36720 20 72 6f 6f 74 4b 65 79 0d 0a 20 20 20 20 20 20   rootKey..      
36730 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
36740 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36750 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 2e 52 65  return Object.Re
36760 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 72 6f  ferenceEquals(ro
36770 6f 74 4b 65 79 2c 20 72 65 67 69 73 74 72 79 2e  otKey, registry.
36780 43 75 72 72 65 6e 74 55 73 65 72 29 20 7c 7c 0d  CurrentUser) ||.
36790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
367a0 20 4f 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63   Object.Referenc
367b0 65 45 71 75 61 6c 73 28 72 6f 6f 74 4b 65 79 2c  eEquals(rootKey,
367c0 20 72 65 67 69 73 74 72 79 2e 4c 6f 63 61 6c 4d   registry.LocalM
367d0 61 63 68 69 6e 65 29 3b 0d 0a 20 20 20 20 20 20  achine);..      
367e0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
367f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36830 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36840 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
36850 20 73 74 72 69 6e 67 20 47 65 74 52 6f 6f 74 4b   string GetRootK
36860 65 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  eyName(..       
36870 20 20 20 20 20 62 6f 6f 6c 20 70 65 72 55 73 65       bool perUse
36880 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r,..            
36890 62 6f 6f 6c 20 77 6f 77 36 34 0d 0a 20 20 20 20  bool wow64..    
368a0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
368b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
368c0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
368d0 20 20 2f 2f 20 42 55 47 46 49 58 3a 20 41 70 70    // BUGFIX: App
368e0 61 72 65 6e 74 6c 79 2c 20 74 68 65 20 70 65 72  arently, the per
368f0 2d 75 73 65 72 20 72 65 67 69 73 74 72 79 20 68  -user registry h
36900 69 76 65 20 64 6f 65 73 20 6e 6f 74 20 75 73 65  ive does not use
36910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
36920 20 20 20 20 20 20 20 20 20 74 68 65 20 22 57 6f           the "Wo
36930 77 36 34 33 32 4e 6f 64 65 22 20 6e 6f 64 65 20  w6432Node" node 
36940 74 6f 20 73 74 6f 72 65 20 73 65 74 74 69 6e 67  to store setting
36950 73 20 66 6f 72 20 33 32 2d 62 69 74 0d 0a 20 20  s for 32-bit..  
36960 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
36970 20 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e       application
36980 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 20 36  s running on a 6
36990 34 2d 62 69 74 20 6f 70 65 72 61 74 69 6e 67 20  4-bit operating 
369a0 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20 20 20  system...       
369b0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20       //         
369c0 54 69 63 6b 65 74 20 5b 61 30 36 37 37 33 30 39  Ticket [a0677309
369d0 66 30 5d 20 68 61 73 20 66 75 72 74 68 65 72 20  f0] has further 
369e0 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20 20 20 20  details...      
369f0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
36a00 20 20 20 20 20 20 72 65 74 75 72 6e 20 52 65 67        return Reg
36a10 69 73 74 72 79 48 65 6c 70 65 72 2e 4a 6f 69 6e  istryHelper.Join
36a20 4b 65 79 4e 61 6d 65 73 28 52 6f 6f 74 4b 65 79  KeyNames(RootKey
36a30 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
36a40 20 20 20 20 20 20 20 21 70 65 72 55 73 65 72 20         !perUser 
36a50 26 26 20 77 6f 77 36 34 20 26 26 20 49 73 36 34  && wow64 && Is64
36a60 42 69 74 50 72 6f 63 65 73 73 28 29 20 3f 0d 0a  BitProcess() ?..
36a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36a80 20 20 20 20 57 6f 77 36 34 53 75 62 4b 65 79 4e      Wow64SubKeyN
36a90 61 6d 65 20 3a 20 53 74 72 69 6e 67 2e 45 6d 70  ame : String.Emp
36aa0 74 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ty);..        }.
36ab0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
36b10 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72  ivate static str
36b20 69 6e 67 20 47 65 74 53 79 73 74 65 6d 44 69 72  ing GetSystemDir
36b30 65 63 74 6f 72 79 28 0d 0a 20 20 20 20 20 20 20  ectory(..       
36b40 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36 34 0d       bool wow64.
36b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
36b60 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 57          {..#if W
36b70 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20 20  INDOWS..        
36b80 20 20 20 20 69 66 20 28 77 6f 77 36 34 29 0d 0a      if (wow64)..
36b90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
36bb0 66 20 28 73 79 73 74 65 6d 44 69 72 65 63 74 6f  f (systemDirecto
36bc0 72 79 57 6f 77 36 34 20 3d 3d 20 6e 75 6c 6c 29  ryWow64 == null)
36bd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36be0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36bf0 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 44           systemD
36c00 69 72 65 63 74 6f 72 79 57 6f 77 36 34 20 3d 0d  irectoryWow64 =.
36c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36c20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e           UnsafeN
36c30 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 47 65 74  ativeMethods.Get
36c40 53 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 28  SystemDirectory(
36c50 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
36c60 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36c70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
36c80 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57  systemDirectoryW
36c90 6f 77 36 34 3b 0d 0a 20 20 20 20 20 20 20 20 20  ow64;..         
36ca0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
36cb0 20 20 65 6c 73 65 0d 0a 23 65 6e 64 69 66 0d 0a    else..#endif..
36cc0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
36ce0 66 20 28 73 79 73 74 65 6d 44 69 72 65 63 74 6f  f (systemDirecto
36cf0 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry == null)..   
36d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36d10 20 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79   systemDirectory
36d20 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 53   = Environment.S
36d30 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 3b 0d  ystemDirectory;.
36d40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
36d50 20 20 20 72 65 74 75 72 6e 20 73 79 73 74 65 6d     return system
36d60 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20  Directory;..    
36d70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36d80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
36d90 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
36da0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36df0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 47         #region G
36e00 65 6e 65 72 69 63 20 53 74 72 69 6e 67 20 48 61  eneric String Ha
36e10 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  ndling..        
36e20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
36e30 74 72 69 6e 67 20 46 6f 72 44 69 73 70 6c 61 79  tring ForDisplay
36e40 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f  (..            o
36e50 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20  bject value..   
36e60 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
36e70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
36e80 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
36e90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
36ea0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c         return "<
36eb0 6e 75 6c 6c 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20  null>";....     
36ec0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 65         string re
36ed0 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  sult;..         
36ee0 20 20 20 54 79 70 65 20 74 79 70 65 20 3d 20 76     Type type = v
36ef0 61 6c 75 65 2e 47 65 74 54 79 70 65 28 29 3b 0d  alue.GetType();.
36f00 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  ...            i
36f10 66 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f  f (type == typeo
36f20 66 28 58 6d 6c 45 6c 65 6d 65 6e 74 29 29 0d 0a  f(XmlElement))..
36f30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58                 X
36f50 6d 6c 45 6c 65 6d 65 6e 74 20 65 6c 65 6d 65 6e  mlElement elemen
36f60 74 20 3d 20 28 58 6d 6c 45 6c 65 6d 65 6e 74 29  t = (XmlElement)
36f70 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
36f80 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
36f90 20 3d 20 65 6c 65 6d 65 6e 74 2e 4f 75 74 65 72   = element.Outer
36fa0 58 6d 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  Xml;..          
36fb0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36fc0 20 65 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d   else if (type =
36fd0 3d 20 74 79 70 65 6f 66 28 56 65 72 73 69 6f 6e  = typeof(Version
36fe0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
36ff0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
37000 20 20 20 56 65 72 73 69 6f 6e 20 76 65 72 73 69     Version versi
37010 6f 6e 20 3d 20 28 56 65 72 73 69 6f 6e 29 76 61  on = (Version)va
37020 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
37030 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
37040 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22   String.Format("
37050 76 7b 30 7d 22 2c 20 76 65 72 73 69 6f 6e 29 3b  v{0}", version);
37060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37070 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
37080 65 20 69 66 20 28 74 79 70 65 20 3d 3d 20 74 79  e if (type == ty
37090 70 65 6f 66 28 50 72 6f 63 65 73 73 53 74 61 72  peof(ProcessStar
370a0 74 49 6e 66 6f 29 29 0d 0a 20 20 20 20 20 20 20  tInfo))..       
370b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
370c0 20 20 20 20 20 20 20 20 50 72 6f 63 65 73 73 53          ProcessS
370d0 74 61 72 74 49 6e 66 6f 20 73 74 61 72 74 49 6e  tartInfo startIn
370e0 66 6f 20 3d 20 28 50 72 6f 63 65 73 73 53 74 61  fo = (ProcessSta
370f0 72 74 49 6e 66 6f 29 76 61 6c 75 65 3b 0d 0a 0d  rtInfo)value;...
37100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37110 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69 6e 67   result = String
37120 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
37130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 66                "f
37140 69 6c 65 4e 61 6d 65 20 3d 20 7b 30 7d 2c 20 61  ileName = {0}, a
37150 72 67 75 6d 65 6e 74 73 20 3d 20 7b 31 7d 2c 20  rguments = {1}, 
37160 77 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79  workingDirectory
37170 20 3d 20 7b 32 7d 2c 20 22 20 2b 0d 0a 20 20 20   = {2}, " +..   
37180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37190 20 22 75 73 65 53 68 65 6c 6c 45 78 65 63 75 74   "useShellExecut
371a0 65 20 3d 20 7b 33 7d 2c 20 72 65 64 69 72 65 63  e = {3}, redirec
371b0 74 53 74 61 6e 64 61 72 64 4f 75 74 70 75 74 20  tStandardOutput 
371c0 3d 20 7b 34 7d 2c 20 22 20 2b 0d 0a 20 20 20 20  = {4}, " +..    
371d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
371e0 22 72 65 64 69 72 65 63 74 53 74 61 6e 64 61 72  "redirectStandar
371f0 64 45 72 72 6f 72 20 3d 20 7b 35 7d 22 2c 20 46  dError = {5}", F
37200 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20  orDisplay(..    
37210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37220 73 74 61 72 74 49 6e 66 6f 2e 46 69 6c 65 4e 61  startInfo.FileNa
37230 6d 65 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  me), ForDisplay(
37240 73 74 61 72 74 49 6e 66 6f 2e 41 72 67 75 6d 65  startInfo.Argume
37250 6e 74 73 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  nts),..         
37260 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
37270 73 70 6c 61 79 28 73 74 61 72 74 49 6e 66 6f 2e  splay(startInfo.
37280 57 6f 72 6b 69 6e 67 44 69 72 65 63 74 6f 72 79  WorkingDirectory
37290 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a  ), ForDisplay(..
372a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
372b0 20 20 20 20 73 74 61 72 74 49 6e 66 6f 2e 55 73      startInfo.Us
372c0 65 53 68 65 6c 6c 45 78 65 63 75 74 65 29 2c 20  eShellExecute), 
372d0 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
372e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
372f0 20 73 74 61 72 74 49 6e 66 6f 2e 52 65 64 69 72   startInfo.Redir
37300 65 63 74 53 74 61 6e 64 61 72 64 4f 75 74 70 75  ectStandardOutpu
37310 74 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  t), ForDisplay(.
37320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37330 20 20 20 20 20 73 74 61 72 74 49 6e 66 6f 2e 52       startInfo.R
37340 65 64 69 72 65 63 74 53 74 61 6e 64 61 72 64 45  edirectStandardE
37350 72 72 6f 72 29 29 3b 20 2f 2a 20 52 45 43 55 52  rror)); /* RECUR
37360 53 49 56 45 20 2a 2f 0d 0a 20 20 20 20 20 20 20  SIVE */..       
37370 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37380 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70      else if (typ
37390 65 20 3d 3d 20 74 79 70 65 6f 66 28 50 72 6f 63  e == typeof(Proc
373a0 65 73 73 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ess))..         
373b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
373c0 20 20 20 20 20 20 50 72 6f 63 65 73 73 20 70 72        Process pr
373d0 6f 63 65 73 73 20 3d 20 28 50 72 6f 63 65 73 73  ocess = (Process
373e0 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  )value;....     
373f0 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
37400 74 20 3d 20 70 72 6f 63 65 73 73 2e 49 64 2e 54  t = process.Id.T
37410 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20  oString();..    
37420 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37430 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
37440 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 44  type == typeof(D
37450 61 74 61 52 65 63 65 69 76 65 64 45 76 65 6e 74  ataReceivedEvent
37460 41 72 67 73 29 29 0d 0a 20 20 20 20 20 20 20 20  Args))..        
37470 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
37480 20 20 20 20 20 20 20 44 61 74 61 52 65 63 65 69         DataRecei
37490 76 65 64 45 76 65 6e 74 41 72 67 73 20 65 76 65  vedEventArgs eve
374a0 6e 74 41 72 67 73 20 3d 20 28 44 61 74 61 52 65  ntArgs = (DataRe
374b0 63 65 69 76 65 64 45 76 65 6e 74 41 72 67 73 29  ceivedEventArgs)
374c0 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
374d0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
374e0 20 3d 20 46 6f 72 44 69 73 70 6c 61 79 28 65 76   = ForDisplay(ev
374f0 65 6e 74 41 72 67 73 2e 44 61 74 61 29 3b 20 2f  entArgs.Data); /
37500 2a 20 52 45 43 55 52 53 49 56 45 20 2a 2f 0d 0a  * RECURSIVE */..
37510 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
37520 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
37530 69 66 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65  if (type == type
37540 6f 66 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  of(MockRegistryK
37550 65 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey))..          
37560 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37570 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72       MockRegistr
37580 79 4b 65 79 20 6b 65 79 20 3d 20 28 4d 6f 63 6b  yKey key = (Mock
37590 52 65 67 69 73 74 72 79 4b 65 79 29 76 61 6c 75  RegistryKey)valu
375a0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
375b0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 46        result = F
375c0 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 2e 54 6f  orDisplay(key.To
375d0 53 74 72 69 6e 67 28 29 29 3b 20 2f 2a 20 52 45  String()); /* RE
375e0 43 55 52 53 49 56 45 20 2a 2f 0d 0a 20 20 20 20  CURSIVE */..    
375f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37600 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20         else..   
37610 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
37620 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
37630 6c 74 20 3d 20 76 61 6c 75 65 2e 54 6f 53 74 72  lt = value.ToStr
37640 69 6e 67 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ing();....      
37650 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65            if (re
37660 73 75 6c 74 2e 4c 65 6e 67 74 68 20 3d 3d 20 30  sult.Length == 0
37670 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
37680 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 3c         return "<
37690 65 6d 70 74 79 3e 22 3b 0d 0a 0d 0a 20 20 20 20  empty>";....    
376a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
376b0 74 79 70 65 2e 49 73 53 75 62 63 6c 61 73 73 4f  type.IsSubclassO
376c0 66 28 74 79 70 65 6f 66 28 45 78 63 65 70 74 69  f(typeof(Excepti
376d0 6f 6e 29 29 29 0d 0a 20 20 20 20 20 20 20 20 20  on)))..         
376e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
376f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
37700 73 75 6c 74 20 3d 20 53 74 72 69 6e 67 2e 46 6f  sult = String.Fo
37710 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
37720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
37730 7b 30 7d 7b 31 7d 7b 30 7d 22 2c 20 45 6e 76 69  {0}{1}{0}", Envi
37740 72 6f 6e 6d 65 6e 74 2e 4e 65 77 4c 69 6e 65 2c  ronment.NewLine,
37750 20 72 65 73 75 6c 74 29 3b 0d 0a 20 20 20 20 20   result);..     
37760 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
37770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
37780 73 65 20 69 66 20 28 21 74 79 70 65 2e 49 73 53  se if (!type.IsS
37790 75 62 63 6c 61 73 73 4f 66 28 74 79 70 65 6f 66  ubclassOf(typeof
377a0 28 56 61 6c 75 65 54 79 70 65 29 29 29 0d 0a 20  (ValueType))).. 
377b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
377c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
377d0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 53        result = S
377e0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22 5c 22  tring.Format("\"
377f0 7b 30 7d 5c 22 22 2c 20 72 65 73 75 6c 74 29 3b  {0}\"", result);
37800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37810 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
37820 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
37830 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
37840 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
37850 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
37860 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
378c0 65 67 69 6f 6e 20 41 73 73 65 6d 62 6c 79 20 41  egion Assembly A
378d0 74 74 72 69 62 75 74 65 20 48 61 6e 64 6c 69 6e  ttribute Handlin
378e0 67 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  g..        publi
378f0 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
37900 47 65 74 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69  GetAssemblyConfi
37910 67 75 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20  guration(..     
37920 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
37930 61 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20  assembly..      
37940 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
37950 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37960 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
37970 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
37980 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37990 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
379a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
379b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
379c0 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49    if (assembly.I
379d0 73 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20  sDefined(..     
379e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
379f0 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 41 73         typeof(As
37a00 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74  semblyConfigurat
37a10 69 6f 6e 41 74 74 72 69 62 75 74 65 29 2c 20 66  ionAttribute), f
37a20 61 6c 73 65 29 29 0d 0a 20 20 20 20 20 20 20 20  alse))..        
37a30 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
37a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a50 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 43         AssemblyC
37a60 6f 6e 66 69 67 75 72 61 74 69 6f 6e 41 74 74 72  onfigurationAttr
37a70 69 62 75 74 65 20 63 6f 6e 66 69 67 75 72 61 74  ibute configurat
37a80 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ion =..         
37a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37aa0 20 20 20 28 41 73 73 65 6d 62 6c 79 43 6f 6e 66     (AssemblyConf
37ab0 69 67 75 72 61 74 69 6f 6e 41 74 74 72 69 62 75  igurationAttribu
37ac0 74 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  te)..           
37ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ae0 20 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73   assembly.GetCus
37af0 74 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a  tomAttributes(..
37b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37b20 74 79 70 65 6f 66 28 41 73 73 65 6d 62 6c 79 43  typeof(AssemblyC
37b30 6f 6e 66 69 67 75 72 61 74 69 6f 6e 41 74 74 72  onfigurationAttr
37b40 69 62 75 74 65 29 2c 0d 0a 20 20 20 20 20 20 20  ibute),..       
37b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37b60 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 5b           false)[
37b70 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  0];....         
37b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
37b90 65 74 75 72 6e 20 63 6f 6e 66 69 67 75 72 61 74  eturn configurat
37ba0 69 6f 6e 2e 43 6f 6e 66 69 67 75 72 61 74 69 6f  ion.Configuratio
37bb0 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n;..            
37bc0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37bd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
37be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
37bf0 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tch..           
37c00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37c10 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
37c20 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
37c30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
37c40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
37c50 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
37c60 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20  rn null;..      
37c70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cc0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37cd0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
37ce0 73 74 72 69 6e 67 20 47 65 74 41 73 73 65 6d 62  string GetAssemb
37cf0 6c 79 54 69 74 6c 65 28 0d 0a 20 20 20 20 20 20  lyTitle(..      
37d00 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
37d10 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20  ssembly..       
37d20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
37d30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69  {..            i
37d40 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e  f (assembly != n
37d50 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
37d60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37d70 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
37d80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
37d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37da0 20 69 66 20 28 61 73 73 65 6d 62 6c 79 2e 49 73   if (assembly.Is
37db0 44 65 66 69 6e 65 64 28 0d 0a 20 20 20 20 20 20  Defined(..      
37dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37dd0 20 20 20 20 20 20 74 79 70 65 6f 66 28 41 73 73        typeof(Ass
37de0 65 6d 62 6c 79 54 69 74 6c 65 41 74 74 72 69 62  emblyTitleAttrib
37df0 75 74 65 29 2c 20 66 61 6c 73 65 29 29 0d 0a 20  ute), false)).. 
37e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
37e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 73                As
37e30 73 65 6d 62 6c 79 54 69 74 6c 65 41 74 74 72 69  semblyTitleAttri
37e40 62 75 74 65 20 74 69 74 6c 65 20 3d 0d 0a 20 20  bute title =..  
37e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e60 20 20 20 20 20 20 20 20 20 20 28 41 73 73 65 6d            (Assem
37e70 62 6c 79 54 69 74 6c 65 41 74 74 72 69 62 75 74  blyTitleAttribut
37e80 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
37e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ea0 61 73 73 65 6d 62 6c 79 2e 47 65 74 43 75 73 74  assembly.GetCust
37eb0 6f 6d 41 74 74 72 69 62 75 74 65 73 28 0d 0a 20  omAttributes(.. 
37ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
37ee0 79 70 65 6f 66 28 41 73 73 65 6d 62 6c 79 54 69  ypeof(AssemblyTi
37ef0 74 6c 65 41 74 74 72 69 62 75 74 65 29 2c 20 66  tleAttribute), f
37f00 61 6c 73 65 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20  alse)[0];....   
37f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37f20 20 20 20 20 20 72 65 74 75 72 6e 20 74 69 74 6c       return titl
37f30 65 2e 54 69 74 6c 65 3b 0d 0a 20 20 20 20 20 20  e.Title;..      
37f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
37f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37f60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
37f70 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
37f80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37fa0 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
37fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37fc0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
37fd0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
37fe0 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
37ff0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
38000 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
38010 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
38020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38060 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
38070 69 6f 6e 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  ion .NET Framewo
38080 72 6b 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20  rk Handling..   
38090 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
380a0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 46 72  tic string GetFr
380b0 61 6d 65 77 6f 72 6b 52 6f 6f 74 4b 65 79 4e 61  ameworkRootKeyNa
380c0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
380d0 20 62 6f 6f 6c 20 70 65 72 55 73 65 72 2c 0d 0a   bool perUser,..
380e0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
380f0 20 77 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20   wow64..        
38100 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
38110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
38120 74 75 72 6e 20 52 65 67 69 73 74 72 79 48 65 6c  turn RegistryHel
38130 70 65 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73  per.JoinKeyNames
38140 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
38150 20 20 20 47 65 74 52 6f 6f 74 4b 65 79 4e 61 6d     GetRootKeyNam
38160 65 28 70 65 72 55 73 65 72 2c 20 77 6f 77 36 34  e(perUser, wow64
38170 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
38180 20 20 20 20 22 4d 69 63 72 6f 73 6f 66 74 22 2c      "Microsoft",
38190 20 22 2e 4e 45 54 46 72 61 6d 65 77 6f 72 6b 22   ".NETFramework"
381a0 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
381b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
381c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
381d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
381e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
381f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38200 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
38210 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
38220 67 20 47 65 74 46 72 61 6d 65 77 6f 72 6b 4b 65  g GetFrameworkKe
38230 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
38240 20 20 20 20 73 74 72 69 6e 67 20 66 72 61 6d 65      string frame
38250 77 6f 72 6b 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  workName,..     
38260 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66         Version f
38270 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c  rameworkVersion,
38280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
38290 72 69 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d  ring platformNam
382a0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
382b0 62 6f 6f 6c 20 70 65 72 55 73 65 72 2c 0d 0a 20  bool perUser,.. 
382c0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
382d0 77 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20 20  wow64..         
382e0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
382f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
38300 69 6e 67 20 66 72 61 6d 65 77 6f 72 6b 56 65 72  ing frameworkVer
38310 73 69 6f 6e 53 74 72 69 6e 67 20 3d 20 28 66 72  sionString = (fr
38320 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 20 21  ameworkVersion !
38330 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20  = null) ?..     
38340 20 20 20 20 20 20 20 20 20 20 20 22 76 22 20 2b             "v" +
38350 20 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f   frameworkVersio
38360 6e 2e 54 6f 53 74 72 69 6e 67 28 29 20 3a 20 6e  n.ToString() : n
38370 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
38380 20 20 20 20 72 65 74 75 72 6e 20 52 65 67 69 73      return Regis
38390 74 72 79 48 65 6c 70 65 72 2e 4a 6f 69 6e 4b 65  tryHelper.JoinKe
383a0 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  yNames(..       
383b0 20 20 20 20 20 20 20 20 20 47 65 74 52 6f 6f 74           GetRoot
383c0 4b 65 79 4e 61 6d 65 28 70 65 72 55 73 65 72 2c  KeyName(perUser,
383d0 20 77 6f 77 36 34 29 2c 20 22 4d 69 63 72 6f 73   wow64), "Micros
383e0 6f 66 74 22 2c 20 66 72 61 6d 65 77 6f 72 6b 4e  oft", frameworkN
383f0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
38400 20 20 20 20 20 20 66 72 61 6d 65 77 6f 72 6b 56        frameworkV
38410 65 72 73 69 6f 6e 53 74 72 69 6e 67 2c 20 70 6c  ersionString, pl
38420 61 74 66 6f 72 6d 4e 61 6d 65 29 3b 0d 0a 20 20  atformName);..  
38430 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
38440 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
38450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
38490 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
384a0 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 49  atic string GetI
384b0 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
384c0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
384d0 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65   string fileName
384e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
384f0 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
38500 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
38510 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
38520 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
38530 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20  mbly assembly = 
38540 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65 63 74  Assembly.Reflect
38550 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 46 72 6f 6d 28  ionOnlyLoadFrom(
38560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38570 20 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 3b        fileName);
38580 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a   /* throw */....
38590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
385a0 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20  if (assembly != 
385b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
385c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
385d0 6e 20 61 73 73 65 6d 62 6c 79 2e 49 6d 61 67 65  n assembly.Image
385e0 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b 0d  RuntimeVersion;.
385f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
38600 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
38610 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  h..            {
38620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38630 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
38640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
38650 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  ...            r
38660 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
38670 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
38680 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
38690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
386a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
386b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
386c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
386d0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
386e0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 46 72  tic string GetFr
386f0 61 6d 65 77 6f 72 6b 44 69 72 65 63 74 6f 72 79  ameworkDirectory
38700 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 4d  (..            M
38710 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72  ockRegistryKey r
38720 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20 20 20  ootKey,..       
38730 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66 72 61       Version fra
38740 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c 0d 0a  meworkVersion,..
38750 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
38760 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
38770 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36         bool wow6
38780 34 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4,..            
38790 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
387a0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76            bool v
387b0 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20  erbose..        
387c0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b      )..        {
387d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73  ..            us
387e0 69 6e 67 20 28 4d 6f 63 6b 52 65 67 69 73 74 72  ing (MockRegistr
387f0 79 4b 65 79 20 6b 65 79 20 3d 20 52 65 67 69 73  yKey key = Regis
38800 74 72 79 48 65 6c 70 65 72 2e 4f 70 65 6e 53 75  tryHelper.OpenSu
38810 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
38820 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 4b             rootK
38830 65 79 2c 20 47 65 74 46 72 61 6d 65 77 6f 72 6b  ey, GetFramework
38840 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 70 65 72 55  RootKeyName(perU
38850 73 65 72 2c 20 77 6f 77 36 34 29 2c 0d 0a 20 20  ser, wow64),..  
38860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38870 20 20 66 61 6c 73 65 2c 20 77 68 61 74 49 66 2c    false, whatIf,
38880 20 76 65 72 62 6f 73 65 29 29 0d 0a 20 20 20 20   verbose))..    
38890 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
388a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if