131. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/12/2018 10:19:11 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

131.1 Files compared

# Location File Last Modified
1 MSSRe Build 4.zip\ETL Packages\RegistriesETL\Release 11 DoDFragment_Import.dtsx Tue Apr 10 19:44:47 2018 UTC
2 MSSRe Build 4.zip\ETL Packages\RegistriesETL\Release 11 DoDFragment_Import.dtsx Thu Apr 12 12:31:59 2018 UTC

131.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 8 15026
Changed 7 16
Inserted 0 0
Removed 0 0

131.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

131.4 Active regular expressions

No regular expressions were active.

131.5 Comparison detail

  1   <?xml vers ion="1.0"? >
  2   <DTS:Execu table xmln s:DTS="www .microsoft .com/SqlSe rver/Dts"
  3     DTS:refI d="Package "
  4     DTS:Crea tionDate=" 2/29/2012  8:08:36 AM "
  5     DTS:Crea tionName=" SSIS.Packa ge.3"
  6     DTS:Crea torCompute rName="NB2 B4054"
  7     DTS:Crea torName="H ARRIS\dhas sell"
  8     DTS:Dela yValidatio n="True"
  9     DTS:DTSI D="{42D7C8 3D-5B77-45 99-A447-78 DABE082E75 }"
  10     DTS:Exec utableType ="SSIS.Pac kage.3"
  11     DTS:Last ModifiedPr oductVersi on="11.0.6 020.0"
  12     DTS:Loca leID="1033 "
  13     DTS:Obje ctName="Do DFragment_ Import"
  14     DTS:Pack ageType="5 "
  15     DTS:Vers ionBuild=" 891"
  16     DTS:Vers ionGUID="{ C638F69E-0 2F2-4890-8 060-8CACE9 B82283}">
  17     <DTS:Pro perty
  18       DTS:Na me="Packag eFormatVer sion">6</D TS:Propert y>
  19     <DTS:Con nectionMan agers>
  20       <DTS:C onnectionM anager
  21         DTS: refId="Pac kage.Conne ctionManag ers[Loggin g]"
  22         DTS: CreationNa me="OLEDB"
  23         DTS: DTSID="{D7 948F44-D7B E-4422-8F9 0-4A130AEC ABC9}"
  24         DTS: ObjectName ="Logging" >
  25         <DTS :PropertyE xpression
  26           DT S:Name="In itialCatal og">@[User ::LoggingD atabase]</ DTS:Proper tyExpressi on>
  27         <DTS :PropertyE xpression
  28           DT S:Name="Se rverName"> @[User::Lo ggingServe r]</DTS:Pr opertyExpr ession>
  29         <DTS :ObjectDat a>
  30           <D TS:Connect ionManager
  31               DTS:Connec tionString ="Data Sou rce= DNS            ;Initial C atalog=pre prodRegist ryStaging; Provider=S QLNCLI11.1 ;Integrate d Security =SSPI;Auto  Translate =False;App lication N ame=SSIS-P ackage-{D7 948F44-D7B E-4422-8F9 0-4A130AEC ABC9}patri ot-regdev. RegistrySt aging_Test ;" />
  32         </DT S:ObjectDa ta>
  33       </DTS: Connection Manager>
  34     </DTS:Co nnectionMa nagers>
  35     <DTS:Con figuration s>
  36       <DTS:C onfigurati on
  37         DTS: Configurat ionString= "C:\Docume nts and Se ttings\vha iswhassed\ My Documen ts\Deploym entSolutio n\Deployme ntSolution \DoDFragme nt_Import. dtsConfig"
  38         DTS: Configurat ionType="1 "
  39         DTS: CreationNa me=""
  40         DTS: DTSID="{36 2B883D-605 4-40EF-B72 D-29515B28 7238}"
  41         DTS: ObjectName ="Configur ation 1" / >
  42     </DTS:Co nfiguratio ns>
  43     <DTS:Var iables>
  44       <DTS:V ariable
  45         DTS: CreationNa me=""
  46         DTS: DTSID="{4B E3288C-2EF 6-4115-9D4 D-3756F742 8123}"
  47         DTS: IncludeInD ebugDump=" 2345"
  48         DTS: Namespace= "User"
  49         DTS: ObjectName ="fileName 2">
  50         <DTS :VariableV alue
  51           DT S:DataType ="8"
  52           xm l:space="p reserve">< /DTS:Varia bleValue>
  53       </DTS: Variable>
  54       <DTS:V ariable
  55         DTS: CreationNa me=""
  56         DTS: DTSID="{2A CF4A8E-DF9 6-4D9D-A5A 0-C70711EF 6B5F}"
  57         DTS: IncludeInD ebugDump=" 2345"
  58         DTS: Namespace= "User"
  59         DTS: ObjectName ="InputFil eExtension ">
  60         <DTS :VariableV alue
  61           DT S:DataType ="8">*.xls *</DTS:Var iableValue >
  62       </DTS: Variable>
  63       <DTS:V ariable
  64         DTS: CreationNa me=""
  65         DTS: DTSID="{4B 3B6902-8B1 8-4CC3-9AA D-A22D1642 608B}"
  66         DTS: IncludeInD ebugDump=" 2345"
  67         DTS: Namespace= "User"
  68         DTS: ObjectName ="InputFol der">
  69         <DTS :VariableV alue
  70             DTS:DataTy pe="8">\\ DNS            \nds_etl2$ \Productio n\DoDFragm ent_Import </DTS:Vari ableValue>
  71       </DTS: Variable>
  72       <DTS:V ariable
  73         DTS: CreationNa me=""
  74         DTS: DTSID="{AA 433FD3-D00 A-428E-AE5 C-ED9C704F A4CC}"
  75         DTS: IncludeInD ebugDump=" 6789"
  76         DTS: Namespace= "User"
  77         DTS: ObjectName ="iPackage ID">
  78         <DTS :VariableV alue
  79           DT S:DataType ="3">0</DT S:Variable Value>
  80       </DTS: Variable>
  81       <DTS:V ariable
  82         DTS: CreationNa me=""
  83         DTS: DTSID="{C8 A32ED7-3AF A-4E06-AAB F-35351DE3 98C1}"
  84         DTS: IncludeInD ebugDump=" 2345"
  85         DTS: Namespace= "User"
  86         DTS: ObjectName ="LoggingD atabase">
  87         <DTS :VariableV alue
  88           DT S:DataType ="8">prepr odRegistry Staging</D TS:Variabl eValue>
  89       </DTS: Variable>
  90       <DTS:V ariable
  91         DTS: CreationNa me=""
  92         DTS: DTSID="{2B 9089E3-8D5 7-433A-A09 9-DBE9E078 0F3D}"
  93         DTS: IncludeInD ebugDump=" 2345"
  94         DTS: Namespace= "User"
  95         DTS: ObjectName ="LoggingS erver">
  96         <DTS :VariableV alue
  97             DTS:DataTy pe="8"> DNS            </DTS:Vari ableValue>
  98       </DTS: Variable>
  99       <DTS:V ariable
  100         DTS: CreationNa me=""
  101         DTS: DTSID="{86 C54F04-55B 3-4029-988 8-72943EE6 4FD2}"
  102         DTS: IncludeInD ebugDump=" 2345"
  103         DTS: Namespace= "User"
  104         DTS: ObjectName ="Registry Database">
  105         <DTS :VariableV alue
  106           DT S:DataType ="8">Regis try</DTS:V ariableVal ue>
  107       </DTS: Variable>
  108       <DTS:V ariable
  109         DTS: CreationNa me=""
  110         DTS: DTSID="{8D 2A9598-70E A-4C91-856 0-9506DF85 B2B9}"
  111         DTS: IncludeInD ebugDump=" 2345"
  112         DTS: Namespace= "User"
  113         DTS: ObjectName ="Registry Server">
  114         <DTS :VariableV alue
  115           DT S:DataType ="8">vaaus crssql20</ DTS:Variab leValue>
  116       </DTS: Variable>
  117       <DTS:V ariable
  118         DTS: CreationNa me=""
  119         DTS: DTSID="{01 F1A00F-D95 A-465F-B79 F-88072BAD 0A76}"
  120         DTS: IncludeInD ebugDump=" 2345"
  121         DTS: Namespace= "User"
  122         DTS: ObjectName ="Registry StagingDat abase">
  123         <DTS :VariableV alue
  124           DT S:DataType ="8">prepr odRegistry Staging</D TS:Variabl eValue>
  125       </DTS: Variable>
  126       <DTS:V ariable
  127         DTS: CreationNa me=""
  128         DTS: DTSID="{E8 EB3FDF-7F8 D-4EB8-925 B-6FE440B0 FDEB}"
  129         DTS: IncludeInD ebugDump=" 2345"
  130         DTS: Namespace= "User"
  131         DTS: ObjectName ="Registry StagingSer ver">
  132         <DTS :VariableV alue
  133             DTS:DataTy pe="8"> DNS            </DTS:Vari ableValue>
  134       </DTS: Variable>
  135       <DTS:V ariable
  136         DTS: CreationNa me=""
  137         DTS: DTSID="{DD 64EA12-384 5-4683-BDB 0-0F708DB0 CEA8}"
  138         DTS: IncludeInD ebugDump=" 2345"
  139         DTS: Namespace= "User"
  140         DTS: ObjectName ="RunIdent ifier">
  141         <DTS :VariableV alue
  142           DT S:DataType ="8"
  143           xm l:space="p reserve">< /DTS:Varia bleValue>
  144       </DTS: Variable>
  145     </DTS:Va riables>
  146     <DTS:Exe cutables>
  147       <DTS:E xecutable
  148         DTS: refId="Pac kage\Log P ackage  Be gan"
  149         DTS: CreationNa me="Micros oft.SqlSer ver.Dts.Ta sks.Execut eSQLTask.E xecuteSQLT ask, Micro soft.SqlSe rver.SQLTa sk, Versio n=11.0.0.0 , Culture= neutral, P ublicKeyTo ken=89845d cd8080cc91 "
  150         DTS: DelayValid ation="Tru e"
  151         DTS: Descriptio n="Execute  SQL Task"
  152         DTS: DTSID="{8B 98966E-FE5 2-4BD3-B77 7-E702F853 5A0C}"
  153         DTS: Executable Type="Micr osoft.SqlS erver.Dts. Tasks.Exec uteSQLTask .ExecuteSQ LTask, Mic rosoft.Sql Server.SQL Task, Vers ion=11.0.0 .0, Cultur e=neutral,  PublicKey Token=8984 5dcd8080cc 91"
  154         DTS: LocaleID=" -1"
  155         DTS: ObjectName ="Log Pack age  Began "
  156         DTS: TaskContac t="Execute  SQL Task;  Microsoft  Corporati on; Micros oft SQL Se rver 2008;  © 2007 Mi crosoft Co rporation;  All Right s Reserved ;http://ww w.microsof t.com/sql/ support/de fault.asp; 1"
  157         DTS: ThreadHint ="0">
  158         <DTS :Variables  />
  159         <DTS :PropertyE xpression
  160           DT S:Name="Sq lStatement Source">"E xec dbo.us p_ETL_Pack ageStart 0 , '"  + @[ System::Pa ckageName]  + "','" +  (DT_STR,  25, 1252)  @[System:: StartTime]  + "','Sta rted', '"+ (DT_STR, 1 0, 1252) @ [System::V ersionMajo r]+"."+(DT _STR, 10,  1252) @[Sy stem::Vers ionMinor]+ "."+(DT_ST R, 10, 125 2) @[Syste m::Version Build]+"'" </DTS:Prop ertyExpres sion>
  161         <DTS :ObjectDat a>
  162           <S QLTask:Sql TaskData
  163              SQLTask:Co nnection=" {D7948F44- D7BE-4422- 8F90-4A130 AECABC9}"
  164              SQLTask:Sq lStatement Source="Ex ec dbo.usp _ETL_Packa geStart 0,  'DoDFragm ent_Import ','11/10/2 016 10:56: 59 AM','St arted', '1 .0.891'"
  165              SQLTask:Re sultType=" ResultSetT ype_Single Row" xmlns :SQLTask=" www.micros oft.com/sq lserver/dt s/tasks/sq ltask">
  166              <SQLTask:R esultBindi ng
  167                SQLTask: ResultName ="0"
  168                SQLTask: DtsVariabl eName="Use r::iPackag eID" />
  169           </ SQLTask:Sq lTaskData>
  170         </DT S:ObjectDa ta>
  171       </DTS: Executable >
  172       <DTS:E xecutable
  173         DTS: refId="Pac kage\LogPa ckage End"
  174         DTS: CreationNa me="Micros oft.SqlSer ver.Dts.Ta sks.Execut eSQLTask.E xecuteSQLT ask, Micro soft.SqlSe rver.SQLTa sk, Versio n=11.0.0.0 , Culture= neutral, P ublicKeyTo ken=89845d cd8080cc91 "
  175         DTS: Descriptio n="Execute  SQL Task"
  176         DTS: DTSID="{F2 2E3DEB-498 3-450B-AC3 F-089C27E3 F6F8}"
  177         DTS: Executable Type="Micr osoft.SqlS erver.Dts. Tasks.Exec uteSQLTask .ExecuteSQ LTask, Mic rosoft.Sql Server.SQL Task, Vers ion=11.0.0 .0, Cultur e=neutral,  PublicKey Token=8984 5dcd8080cc 91"
  178         DTS: LocaleID=" -1"
  179         DTS: ObjectName ="LogPacka ge End"
  180         DTS: TaskContac t="Execute  SQL Task;  Microsoft  Corporati on; Micros oft SQL Se rver 2008;  © 2007 Mi crosoft Co rporation;  All Right s Reserved ;http://ww w.microsof t.com/sql/ support/de fault.asp; 1"
  181         DTS: ThreadHint ="0">
  182         <DTS :Variables  />
  183         <DTS :PropertyE xpression
  184           DT S:Name="Sq lStatement Source">"D eclare @Da te datetim e=getdate(
  185   Exec dbo.u sp_ETL_Pac kageEnd "  + (DT_STR,  20,1252)  @[User::iP ackageID]  + ",@Date, 'Succeeded '"</DTS:Pr opertyExpr ession>
  186         <DTS :ObjectDat a>
  187           <S QLTask:Sql TaskData
  188              SQLTask:Co nnection=" {D7948F44- D7BE-4422- 8F90-4A130 AECABC9}"
  189              SQLTask:Sq lStatement Source="De clare @Dat e datetime =getdate()  &#xA;Exec  dbo.usp_E TL_Package End 0,@Dat e,'Succeed ed'" xmlns :SQLTask=" www.micros oft.com/sq lserver/dt s/tasks/sq ltask" />
  190         </DT S:ObjectDa ta>
  191       </DTS: Executable >
  192       <DTS:E xecutable
  193         DTS: refId="Pac kage\Seque nce Contai ner"
  194         DTS: CreationNa me="STOCK: SEQUENCE"
  195         DTS: Descriptio n="Sequenc e Containe r"
  196         DTS: DTSID="{6F 84A9A0-E31 7-42CE-8C5 5-36615FEC 9C59}"
  197         DTS: Executable Type="STOC K:SEQUENCE "
  198         DTS: LocaleID=" -1"
  199         DTS: ObjectName ="Sequence  Container ">
  200         <DTS :Variables  />
  201         <DTS :Executabl es>
  202           <D TS:Executa ble
  203              DTS:refId= "Package\S equence Co ntainer\Fo reach Loop  Container "
  204              DTS:Creati onName="ST OCK:FOREAC HLOOP"
  205              DTS:Descri ption="For each Loop  Container"
  206              DTS:DTSID= "{CED8BB06 -6A93-4BC6 -8D15-6265 C1ACC198}"
  207              DTS:Execut ableType=" STOCK:FORE ACHLOOP"
  208              DTS:Locale ID="-1"
  209              DTS:Object Name="Fore ach Loop C ontainer">
  210              <DTS:ForEa chEnumerat or
  211                DTS:Crea tionName=" DTS.ForEac hFileEnume rator.3"
  212                DTS:DTSI D="{51750C C6-FA21-46 7A-8418-95 0473A1EADA }"
  213                DTS:Obje ctName="{5 1750CC6-FA 21-467A-84 18-950473A 1EADA}">
  214                <DTS:Pro pertyExpre ssion
  215                  DTS:Na me="Direct ory">@[Use r::InputFo lder]</DTS :PropertyE xpression>
  216                <DTS:Pro pertyExpre ssion
  217                  DTS:Na me="FileSp ec">@[User ::InputFil eExtension ]</DTS:Pro pertyExpre ssion>
  218                <DTS:Obj ectData>
  219                  <ForEa chFileEnum eratorProp erties>
  220                    <FEF EProperty
  221                        Folder="\\ DNS            \nds_etl2$ \Productio n\DoDFragm ent_Import " />
  222                    <FEF EProperty
  223                      Fi leSpec="*. xls*" />
  224                    <FEF EProperty
  225                      Fi leNameRetr ievalType= "0" />
  226                    <FEF EProperty
  227                      Re curse="0"  />
  228                  </ForE achFileEnu meratorPro perties>
  229                </DTS:Ob jectData>
  230              </DTS:ForE achEnumera tor>
  231              <DTS:Varia bles />
  232              <DTS:Execu tables>
  233                <DTS:Exe cutable
  234                  DTS:re fId="Packa ge\Sequenc e Containe r\Foreach  Loop Conta iner\Scrip t Task - p rocess rec ords"
  235                  DTS:Cr eationName ="Microsof t.SqlServe r.Dts.Task s.ScriptTa sk.ScriptT ask, Micro soft.SqlSe rver.Scrip tTask, Ver sion=11.0. 0.0, Cultu re=neutral , PublicKe yToken=898 45dcd8080c c91"
  236                  DTS:De scription= "Script Ta sk"
  237                  DTS:DT SID="{FFC9 4649-7913- 44BD-B51F- EACBED7C95 60}"
  238                  DTS:Ex ecutableTy pe="Micros oft.SqlSer ver.Dts.Ta sks.Script Task.Scrip tTask, Mic rosoft.Sql Server.Scr iptTask, V ersion=11. 0.0.0, Cul ture=neutr al, Public KeyToken=8 9845dcd808 0cc91"
  239                  DTS:Lo caleID="-1 "
  240                  DTS:Ob jectName=" Script Tas k - proces s records"
  241                  DTS:Th readHint=" 0">
  242                  <DTS:V ariables / >
  243                  <DTS:O bjectData>
  244                    <Scr iptProject
  245                      Na me="ST_fce 6863cd8c94 187b7bd252 8130634e1"
  246                      VS TAMajorVer sion="3"
  247                      VS TAMinorVer sion="0"
  248                      La nguage="CS harp"
  249                      Re adOnlyVari ables="Use r::fileNam e2,User::L oggingData base,User: :LoggingSe rver,User: :RegistryD atabase,Us er::Regist ryServer">
  250                      <P rojectItem
  251                         Name="Prop erties\Set tings.sett ings"
  252                         Encoding=" UTF8"><![C DATA[<?xml  version=' 1.0' encod ing='iso-8 859-1'?>
  253   <SettingsF ile xmlns= "uri:setti ngs" Curre ntProfile= "(Default) ">
  254     <Profile s>
  255       <Profi le Name="( Default)"  />
  256     </Profil es>
  257     <Setting s />
  258   </Settings File>]]></ ProjectIte m>
  259                      <P rojectItem
  260                         Name="Prop erties\Ass emblyInfo. cs"
  261                         Encoding=" UTF8"><![C DATA[using  System.Re flection;
  262   using Syst em.Runtime .CompilerS ervices;
  263  
  264   //
  265   // General  Informati on about a n assembly  is contro lled throu gh the fol lowing 
  266   // set of  attributes . Change t hese attri bute value s to modif y the info rmation
  267   // associa ted with a n assembly .
  268   //
  269   [assembly:  AssemblyT itle("ST_f ce6863cd8c 94187b7bd2 528130634e 1.csproj") ]
  270   [assembly:  AssemblyD escription ("")]
  271   [assembly:  AssemblyC onfigurati on("")]
  272   [assembly:  AssemblyC ompany("De partment o f Veterans  Affairs") ]
  273   [assembly:  AssemblyP roduct("ST _fce6863cd 8c94187b7b d252813063 4e1.csproj ")]
  274   [assembly:  AssemblyC opyright(" Copyright  @ Departme nt of Vete rans Affai rs 2014")]
  275   [assembly:  AssemblyT rademark(" ")]
  276   [assembly:  AssemblyC ulture("") ]
  277   //
  278   // Version  informati on for an  assembly c onsists of  the follo wing four  values:
  279   //
  280   //      Ma jor Versio n
  281   //      Mi nor Versio
  282   //      Bu ild Number
  283   //      Re vision
  284   //
  285   // You can  specify a ll the val ues or you  can defau lt the Rev ision and  Build Numb ers 
  286   // by usin g the '*'  as shown b elow:
  287  
  288   [assembly:  AssemblyV ersion("1. 0.*")]]]>< /ProjectIt em>
  289                      <P rojectItem
  290                         Name="Exce lColumn.cs "
  291                         Encoding=" UTF8"><![C DATA[/* 
  292    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  293    * 
  294    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  295    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  296    * 
  297    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  298    * mailto: dr.john.tu nnicliffe@ btinternet .com
  299    * All rig hts reserv ed.
  300    * 
  301    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  302    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  303    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  304    * 
  305    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  306    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  307    * 
  308    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  309    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  310    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  311    * 
  312    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  313    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  314    */
  315  
  316   /*
  317    * Code ch ange notes :
  318    * 
  319    * Author                                                             Change                                               Date
  320    * ******* ********** ********** ********** ********** ********** ********** ********** *
  321    * John Tu nnicliffe               Initial  Release          01-J an-2007
  322    * ******* ********** ********** ********** ********** ********** ********** ********** *
  323    */
  324   using Syst em;
  325   using Syst em.Xml;
  326  
  327   namespace  OfficeOpen Xml
  328   {
  329       /// <s ummary>
  330       /// Re presents a n individu al column  within the  worksheet
  331       /// </ summary>
  332       public  class Exc elColumn
  333       {
  334           pr ivate Exce lWorksheet  _xlWorksh eet;
  335           pr ivate XmlE lement _co lElement =  null;
  336           pr ivate XmlN amespaceMa nager _nsM anager;
  337  
  338           #r egion Exce lColumn Co nstructor
  339           // / <summary >
  340           // / Creates  a new inst ance of th e ExcelCol umn class.   
  341           // / For inte rnal use o nly!
  342           // / </summar y>
  343           // / <param n ame="Works heet"></pa ram>
  344           // / <param n ame="col"> </param>
  345           pr otected in ternal Exc elColumn(E xcelWorksh eet Worksh eet, int c ol)
  346           {
  347                NameTabl e nt = new  NameTable ();
  348                _nsManag er = new X mlNamespac eManager(n t);
  349                _nsManag er.AddName space("d",  ExcelPack age.schema Main);
  350  
  351                _xlWorks heet = Wor ksheet;
  352                XmlNode  parent = W orksheet.W orksheetXm l.SelectSi ngleNode(" //d:cols",  _nsManage r);
  353                if (pare nt == null )
  354                {
  355                    pare nt = (XmlN ode)Worksh eet.Worksh eetXml.Cre ateElement ("cols", E xcelPackag e.schemaMa in);
  356                    XmlN ode refChi ld = Works heet.Works heetXml.Se lectSingle Node("//d: sheetData" , _nsManag er);
  357                    pare nt = Works heet.Works heetXml.Do cumentElem ent.Insert Before(par ent, refCh ild);
  358                }
  359                XmlAttri bute minAt tr;
  360                XmlAttri bute maxAt tr;
  361                XmlNode  insertBefo re = null;
  362                // the c olumn defi nitions co ver a rang e of colum ns, so fin d the one  we want
  363                bool ins ertBeforeF ound = fal se;
  364                foreach  (XmlNode c olNode in  parent.Chi ldNodes)
  365                {
  366                    int  min = 1;
  367                    int  max = 1;
  368                    minA ttr = (Xml Attribute) colNode.At tributes.G etNamedIte m("min");
  369                    if ( minAttr !=  null)
  370                         min = int. Parse(minA ttr.Value) ;
  371                    maxA ttr = (Xml Attribute) colNode.At tributes.G etNamedIte m("max");
  372                    if ( maxAttr !=  null)
  373                         max = int. Parse(maxA ttr.Value) ;
  374                    if ( !insertBef oreFound & & (col <=  min || col  <= max))
  375                    {
  376                         insertBefo reFound =  true;
  377                         insertBefo re = colNo de;
  378                    }
  379                    if ( col >= min  && col <=  max)
  380                    {
  381                         _colElemen t = (XmlEl ement)colN ode;
  382                         break;
  383                    }
  384                }
  385                if (_col Element ==  null)
  386                {
  387                    // c reate the  new column  definitio n
  388                    _col Element =  Worksheet. WorksheetX ml.CreateE lement("co l", ExcelP ackage.sch emaMain);
  389                    _col Element.Se tAttribute ("min", co l.ToString ());
  390                    _col Element.Se tAttribute ("max", co l.ToString ());
  391  
  392                    if ( insertBefo re != null )
  393                         parent.Ins ertBefore( _colElemen t, insertB efore);
  394                    else
  395                         parent.App endChild(_ colElement );
  396                }
  397           }
  398           #e ndregion
  399  
  400           // / <summary >
  401           // / Returns  a referenc e to the E lement tha t represen ts the col umn.
  402           // / For inte rnal use o nly!
  403           // / </summar y>
  404           pr otected in ternal Xml Element El ement { ge t { return  (_colElem ent); } }
  405  
  406           // / <summary >
  407           // / Sets the  first col umn the de finition r efers to.
  408           // / </summar y>
  409           pu blic int C olumnMin
  410           {
  411                get { re turn (int. Parse(_col Element.Ge tAttribute ("min")));  }
  412                set { _c olElement. SetAttribu te("min",  value.ToSt ring()); }
  413           }
  414  
  415           // / <summary >
  416           // / Sets the  last colu mn the def inition re fers to.
  417           // / </summar y>
  418           pu blic int C olumnMax
  419           {
  420                get { re turn (int. Parse(_col Element.Ge tAttribute ("max")));  }
  421                set { _c olElement. SetAttribu te("max",  value.ToSt ring()); }
  422           }
  423  
  424           #r egion Exce lColumn Hi dden
  425           // / <summary >
  426           // / Allows t he column  to be hidd en in the  worksheet
  427           // / </summar y>
  428           pu blic bool  Hidden
  429           {
  430                get
  431                {
  432                    bool  retValue  = false;
  433                    stri ng hidden  = _colElem ent.GetAtt ribute("hi dden", "1" );
  434                    if ( hidden ==  "1") retVa lue = true ;
  435                    retu rn (retVal ue);
  436                }
  437                set
  438                {
  439                    if ( value)
  440                         _colElemen t.SetAttri bute("hidd en", "1");
  441                    else
  442                         _colElemen t.SetAttri bute("hidd en", "0");
  443                }
  444           }
  445           #e ndregion
  446  
  447           #r egion Exce lColumn Wi dth
  448           // / <summary >
  449           // / Sets the  width of  the column  in the wo rksheet
  450           // / </summar y>
  451           pu blic doubl e Width
  452           {
  453                get
  454                {
  455                    doub le retValu e = 10;  / / default  column siz e
  456                    stri ng width =  _colEleme nt.GetAttr ibute("wid th");
  457                    if ( width != " ") retValu e = int.Pa rse(width) ;
  458                    retu rn retValu e;
  459                }
  460                set { _c olElement. SetAttribu te("width" , value.To String());  }
  461           }
  462           #e ndregion
  463  
  464           #r egion Exce lColumn St yle
  465           // / <summary >
  466           // / Sets the  style for  the entir e column u sing a sty le name.
  467           // / </summar y>
  468           pu blic strin g Style
  469           {
  470                get { re turn _xlWo rksheet.Ge tStyleName (StyleID);  }
  471                set
  472                {
  473                    // T ODO: imple ment corre ctly.  The  current c ode causes  Excel to  throw a fi t!
  474                    Styl eID = _xlW orksheet.G etStyleID( value);
  475                }
  476           }
  477           // / <summary >
  478           // / Sets the  style for  the entir e column u sing the s tyle ID.  
  479           // / </summar y>
  480           pu blic int S tyleID
  481           {
  482                get
  483                {
  484                    int  retValue =  0;
  485                    stri ng sid = _ colElement .GetAttrib ute("s");
  486                    if ( sid != "")  retValue  = int.Pars e(sid);
  487                    retu rn retValu e;
  488                }
  489                set { _c olElement. SetAttribu te("s", va lue.ToStri ng()); }
  490           }
  491           #e ndregion
  492  
  493           // / <summary >
  494           // / Returns  the range  of columns  covered b y the colu mn definit ion.
  495           // / </summar y>
  496           // / <returns >A string  describing  the range  of column s covered  by the col umn defini tion.</ret urns>
  497           pu blic overr ide string  ToString( )
  498           {
  499                return s tring.Form at("Column  Range: {0 } to {1}",  _colEleme nt.GetAttr ibute("min "), _colEl ement.GetA ttribute(" min"));
  500           }
  501       }
  502   }]]></Proj ectItem>
  503                      <P rojectItem
  504                         Name="Prop erties\Set tings.Desi gner.cs"
  505                         Encoding=" UTF8"><![C DATA[//--- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -----
  506   // <auto-g enerated>
  507   //     Thi s code was  generated  by a tool .
  508   //
  509   //     Cha nges to th is file ma y cause in correct be havior and  will be l ost if
  510   //     the  code is r egenerated .
  511   // </auto- generated>
  512   //-------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
  513  
  514   [assembly:  global::S ystem.Diag nostics.Co deAnalysis .SuppressM essageAttr ibute("Mic rosoft.Per formance",  "CA1811:A voidUncall edPrivateC ode", Scop e = "membe r", Target  = "ST_fce 6863cd8c94 187b7bd252 8130634e1. csproj.Pro perties.Se ttings.get _Default() :ST_fce686 3cd8c94187 b7bd252813 0634e1.csp roj.Proper ties.Sett"  +
  515       "ings" )]
  516  
  517   namespace  ST_fce6863 cd8c94187b 7bd2528130 634e1.cspr oj.Propert ies
  518   {
  519  
  520  
  521       intern al sealed  partial cl ass Settin gs : globa l::System. Configurat ion.Applic ationSetti ngsBase
  522       {
  523  
  524           [g lobal::Sys tem.Runtim e.Compiler Services.C ompilerGen eratedAttr ibute()]
  525           pr ivate stat ic Setting s defaultI nstance =  new Settin gs();
  526  
  527           pu blic stati c Settings  Default
  528           {
  529                get
  530                {
  531                    retu rn default Instance;
  532                }
  533           }
  534       }
  535   }]]></Proj ectItem>
  536                      <P rojectItem
  537                         Name="Proj ect"
  538                         Encoding=" UTF16LE">< ![CDATA[<? xml versio n="1.0" en coding="UT F-16" stan dalone="ye s"?>
  539   <c:Project  xmlns:c=" http://sch emas.micro soft.com/c odeproject ml/2010/08 /main" xml ns:msb="ht tp://schem as.microso ft.com/dev eloper/msb uild/2003"  runtimeVe rsion="4.0 " schemaVe rsion="1.0 ">
  540           <m sb:Propert yGroup>
  541                    <msb :CodeName> st_fce6863 cd8c94187b 7bd2528130 634e1</msb :CodeName>
  542                    <msb :Language> msBuild</m sb:Languag e>
  543                    <msb :DisplayNa me>st_fce6 863cd8c941 87b7bd2528 130634e1</ msb:Displa yName>
  544                    <msb :ProjectId >{AD0FF316 -51AA-4F21 -A68F-8343 6BF4967C}< /msb:Proje ctId>
  545           </ msb:Proper tyGroup>
  546           <m sb:ItemGro up>
  547                    <msb :Project I nclude="st _fce6863cd 8c94187b7b d252813063 4e1.csproj "/>
  548                    <msb :File Incl ude="Excel Worksheet. cs"/>
  549                    <msb :File Incl ude="Excel Column.cs" />
  550                    <msb :File Incl ude="Excel Cell.cs"/>
  551                    <msb :File Incl ude="Excel Row.cs"/>
  552                    <msb :File Incl ude="Excel Package.cs "/>
  553                    <msb :File Incl ude="Excel HeaderFoot er.cs"/>
  554                    <msb :File Incl ude="Excel Styles.cs" />
  555                    <msb :File Incl ude="Excel Workbook.c s"/>
  556                    <msb :File Incl ude="Excel Worksheets .cs"/>
  557                    <msb :File Incl ude="Excel WorksheetV iew.cs"/>
  558                    <msb :File Incl ude="Offic ePropertie s.cs"/>
  559                    <msb :File Incl ude="Prope rties\Asse mblyInfo.c s"/>
  560                    <msb :File Incl ude="Prope rties\Reso urces.resx "/>
  561                    <msb :File Incl ude="Prope rties\Reso urces.Desi gner.cs"/>
  562                    <msb :File Incl ude="Prope rties\Sett ings.setti ngs"/>
  563                    <msb :File Incl ude="Prope rties\Sett ings.Desig ner.cs"/>
  564                    <msb :File Incl ude="Scrip tMain.cs"/ >
  565           </ msb:ItemGr oup>
  566   </c:Projec t>]]></Pro jectItem>
  567                      <P rojectItem
  568                         Name="Prop erties\Res ources.res x"
  569                         Encoding=" UTF8"><![C DATA[<?xml  version=" 1.0" encod ing="utf-8 "?>
  570   <root>
  571     <!-- 
  572       Micros oft ResX S chema 
  573       
  574       Versio n 2.0
  575       
  576       The pr imary goal s of this  format is  to allow a  simple XM L format 
  577       that i s mostly h uman reada ble. The g eneration  and parsin g of the 
  578       variou s data typ es are don e through  the TypeCo nverter cl asses 
  579       associ ated with  the data t ypes.
  580       
  581       Exampl e:
  582       
  583       ... ad o.net/XML  headers &  schema ...
  584       <reshe ader name= "resmimety pe">text/m icrosoft-r esx</reshe ader>
  585       <reshe ader name= "version"> 2.0</reshe ader>
  586       <reshe ader name= "reader">S ystem.Reso urces.ResX ResourceRe ader, Syst em.Windows .Forms, .. .</reshead er>
  587       <reshe ader name= "writer">S ystem.Reso urces.ResX ResourceWr iter, Syst em.Windows .Forms, .. .</reshead er>
  588       <data  name="Name 1"><value> this is my  long stri ng</value> <comment>t his is a c omment</co mment></da ta>
  589       <data  name="Colo r1" type=" System.Dra wing.Color , System.D rawing">Bl ue</data>
  590       <data  name="Bitm ap1" mimet ype="appli cation/x-m icrosoft.n et.object. binary.bas e64">
  591           <v alue>[base 64 mime en coded seri alized .NE T Framewor k object]< /value>
  592       </data >
  593       <data  name="Icon 1" type="S ystem.Draw ing.Icon,  System.Dra wing" mime type="appl ication/x- microsoft. net.object .bytearray .base64">
  594           <v alue>[base 64 mime en coded stri ng represe nting a by te array f orm of the  .NET Fram ework obje ct]</value >
  595           <c omment>Thi s is a com ment</comm ent>
  596       </data >
  597                    
  598       There  are any nu mber of "r esheader"  rows that  contain si mple 
  599       name/v alue pairs .
  600       
  601       Each d ata row co ntains a n ame, and v alue. The  row also c ontains a 
  602       type o r mimetype . Type cor responds t o a .NET c lass that  support 
  603       text/v alue conve rsion thro ugh the Ty peConverte r architec ture. 
  604       Classe s that don 't support  this are  serialized  and store d with the  
  605       mimety pe set.
  606       
  607       The mi metype is  used for s erialized  objects, a nd tells t he 
  608       ResXRe sourceRead er how to  depersist  the object . This is  currently  not 
  609       extens ible. For  a given mi metype the  value mus t be set a ccordingly :
  610       
  611       Note -  applicati on/x-micro soft.net.o bject.bina ry.base64  is the for mat 
  612       that t he ResXRes ourceWrite r will gen erate, how ever the r eader can 
  613       read a ny of the  formats li sted below .
  614       
  615       mimety pe: applic ation/x-mi crosoft.ne t.object.b inary.base 64
  616       value    : The ob ject must  be seriali zed with 
  617                : System .Serializa tion.Forma tters.Bina ry.BinaryF ormatter
  618                : and th en encoded  with base 64 encodin g.
  619       
  620       mimety pe: applic ation/x-mi crosoft.ne t.object.s oap.base64
  621       value    : The ob ject must  be seriali zed with 
  622                : System .Runtime.S erializati on.Formatt ers.Soap.S oapFormatt er
  623                : and th en encoded  with base 64 encodin g.
  624  
  625       mimety pe: applic ation/x-mi crosoft.ne t.object.b ytearray.b ase64
  626       value    : The ob ject must  be seriali zed into a  byte arra
  627                : using  a System.C omponentMo del.TypeCo nverter
  628                : and th en encoded  with base 64 encodin g.
  629       -->
  630     <xsd:sch ema id="ro ot" xmlns= "" xmlns:x sd="http:/ /www.w3.or g/2001/XML Schema" xm lns:msdata ="urn:sche mas-micros oft-com:xm l-msdata">
  631       <xsd:e lement nam e="root" m sdata:IsDa taSet="tru e">
  632         <xsd :complexTy pe>
  633           <x sd:choice  maxOccurs= "unbounded ">
  634              <xsd:eleme nt name="m etadata">
  635                <xsd:com plexType>
  636                  <xsd:s equence>
  637                    <xsd :element n ame="value " type="xs d:string"  minOccurs= "0" />
  638                  </xsd: sequence>
  639                  <xsd:a ttribute n ame="name"  type="xsd :string" / >
  640                  <xsd:a ttribute n ame="type"  type="xsd :string" / >
  641                  <xsd:a ttribute n ame="mimet ype" type= "xsd:strin g" />
  642                </xsd:co mplexType>
  643              </xsd:elem ent>
  644              <xsd:eleme nt name="a ssembly">
  645                <xsd:com plexType>
  646                  <xsd:a ttribute n ame="alias " type="xs d:string"  />
  647                  <xsd:a ttribute n ame="name"  type="xsd :string" / >
  648                </xsd:co mplexType>
  649              </xsd:elem ent>
  650              <xsd:eleme nt name="d ata">
  651                <xsd:com plexType>
  652                  <xsd:s equence>
  653                    <xsd :element n ame="value " type="xs d:string"  minOccurs= "0" msdata :Ordinal=" 1" />
  654                    <xsd :element n ame="comme nt" type=" xsd:string " minOccur s="0" msda ta:Ordinal ="2" />
  655                  </xsd: sequence>
  656                  <xsd:a ttribute n ame="name"  type="xsd :string" m sdata:Ordi nal="1" />
  657                  <xsd:a ttribute n ame="type"  type="xsd :string" m sdata:Ordi nal="3" />
  658                  <xsd:a ttribute n ame="mimet ype" type= "xsd:strin g" msdata: Ordinal="4 " />
  659                </xsd:co mplexType>
  660              </xsd:elem ent>
  661              <xsd:eleme nt name="r esheader">
  662                <xsd:com plexType>
  663                  <xsd:s equence>
  664                    <xsd :element n ame="value " type="xs d:string"  minOccurs= "0" msdata :Ordinal=" 1" />
  665                  </xsd: sequence>
  666                  <xsd:a ttribute n ame="name"  type="xsd :string" u se="requir ed" />
  667                </xsd:co mplexType>
  668              </xsd:elem ent>
  669           </ xsd:choice >
  670         </xs d:complexT ype>
  671       </xsd: element>
  672     </xsd:sc hema>
  673     <reshead er name="r esmimetype ">
  674       <value >text/micr osoft-resx </value>
  675     </reshea der>
  676     <reshead er name="v ersion">
  677       <value >2.0</valu e>
  678     </reshea der>
  679     <reshead er name="r eader">
  680       <value >System.Re sources.Re sXResource Reader, Sy stem.Windo ws.Forms,  Version=2. 0.0.0, Cul ture=neutr al, Public KeyToken=b 77a5c56193 4e089</val ue>
  681     </reshea der>
  682     <reshead er name="w riter">
  683       <value >System.Re sources.Re sXResource Writer, Sy stem.Windo ws.Forms,  Version=2. 0.0.0, Cul ture=neutr al, Public KeyToken=b 77a5c56193 4e089</val ue>
  684     </reshea der>
  685   </root>]]> </ProjectI tem>
  686                      <P rojectItem
  687                         Name="st_f ce6863cd8c 94187b7bd2 528130634e 1.csproj"
  688                         Encoding=" UTF16LE">< ![CDATA[<? xml versio n="1.0" en coding="ut f-16"?>
  689   <Project T oolsVersio n="4.0" De faultTarge ts="Build"  xmlns="ht tp://schem as.microso ft.com/dev eloper/msb uild/2003" >
  690     <!-- Thi s section  defines pr oject-leve l properti es.
  691  
  692          Con figuration  - Specifi es whether  the defau lt configu ration is  Release or  Debug.
  693          Pla tform - Sp ecifies wh at CPU the  output of  this proj ect can ru n on.
  694          Out putType -  Must be "L ibrary" fo r VSTA.
  695          NoS tandardLib raries - S et to "fal se" for VS TA.
  696          Roo tNamespace  - In C#,  this speci fies the n amespace g iven to ne w files.
  697                            In Visu al Basic,  all object s are wrap ped in thi s namespac e at runti me.
  698          Ass emblyName  - Name of  the output  assembly.
  699     -->
  700     <Propert yGroup>
  701       <Proje ctTypeGuid s>{30D016F 9-3734-4E3 3-A861-5E7 D899E18F3} ;{FAE04EC0 -301F-11D3 -BF4B-00C0 4F79EFBC}< /ProjectTy peGuids>
  702       <Confi guration C ondition="  '$(Config uration)'  == '' ">De bug</Confi guration>
  703       <Platf orm Condit ion=" '$(P latform)'  == '' ">An yCPU</Plat form>
  704       <Outpu tType>Libr ary</Outpu tType>
  705       <NoSta ndardLibra ries>false </NoStanda rdLibrarie s>
  706       <RootN amespace>S T_fce6863c d8c94187b7 bd25281306 34e1.cspro j</RootNam espace>
  707       <Assem blyName>ST _fce6863cd 8c94187b7b d252813063 4e1.csproj </Assembly Name>
  708       <Proje ctGuid>{0E 1FF2EE-743 0-43F8-8FB 2-B279B32C 3743}</Pro jectGuid>
  709       <Targe tFramework Version>v4 .6</Target FrameworkV ersion>
  710       <Targe tFramework Profile>
  711       </Targ etFramewor kProfile>
  712     </Proper tyGroup>
  713     <!-- Thi s section  defines pr operties t hat are se t when the  "Debug" c onfigurati on is
  714          sel ected.
  715  
  716          Deb ugSymbols  - If true,  create sy mbols (.pd b). If fal se, do not  create sy mbols.
  717          Opt imize - If  true, opt imize the  build outp ut. If fal se, do not  optimize.
  718          Out putPath -  Output pat h of the p roject rel ative to t he project  file.
  719          Ena bleUnmanag edDebuggin g - If tru e, startin g the debu gger will  attach bot h managed  and unmana ged debugg ers.
  720          Def ineConstan ts - Const ants defin ed for the  preproces sor.
  721          War ning Level  - Warning  level for  the compi ler.
  722     -->
  723     <Propert yGroup Con dition=" ' $(Configur ation)' ==  'Debug' " >
  724       <Debug Symbols>tr ue</DebugS ymbols>
  725       <Optim ize>false< /Optimize>
  726       <Outpu tPath>.\bi n\Debug\</ OutputPath >
  727       <Enabl eUnmanaged Debugging> false</Ena bleUnmanag edDebuggin g>
  728       <Defin eConstants >DEBUG;TRA CE</Define Constants>
  729       <Warni ngLevel>4< /WarningLe vel>
  730       <Prefe r32Bit>fal se</Prefer 32Bit>
  731     </Proper tyGroup>
  732     <!-- Thi s section  defines pr operties t hat are se t when the  "Release"  configura tion is
  733          sel ected.
  734  
  735          Deb ugSymbols  - If true,  create sy mbols (.pd b). If fal se, do not  create sy mbols.
  736          Opt imize - If  true, opt imize the  build outp ut. If fal se, do not  optimize.
  737          Out putPath -  Output pat h of the p roject rel ative to t he project  file.
  738          Ena bleUnmanag edDebuggin g - If tru e, startin g the debu gger will  attach bot h managed  and unmana ged debugg ers.
  739          Def ineConstan ts - Const ants defin ed for the  preproces sor.
  740          War ning Level  - Warning  level for  the compi ler.
  741     -->
  742     <Propert yGroup Con dition=" ' $(Configur ation)' ==  'Release'  ">
  743       <Debug Symbols>fa lse</Debug Symbols>
  744       <Optim ize>true</ Optimize>
  745       <Outpu tPath>.\bi n\Release\ </OutputPa th>
  746       <Enabl eUnmanaged Debugging> false</Ena bleUnmanag edDebuggin g>
  747       <Defin eConstants >TRACE</De fineConsta nts>
  748       <Warni ngLevel>4< /WarningLe vel>
  749       <Prefe r32Bit>fal se</Prefer 32Bit>
  750     </Proper tyGroup>
  751     <!-- Thi s section  enables pr e- and pos t-build st eps. Howev er,
  752          it  is recomme nded that  MSBuild ta sks be use d instead  of these p roperties.
  753     -->
  754     <Propert yGroup>
  755       <PreBu ildEvent>
  756       </PreB uildEvent>
  757       <PostB uildEvent>
  758       </Post BuildEvent >
  759     </Proper tyGroup>
  760     <!-- Thi s sections  specifies  reference s for the  project. - ->
  761     <ItemGro up>
  762       <Refer ence Inclu de="System " />
  763       <Refer ence Inclu de="System .Core">
  764         <Req uiredTarge tFramework >3.5</Requ iredTarget Framework>
  765       </Refe rence>
  766       <Refer ence Inclu de="System .Data" />
  767       <Refer ence Inclu de="System .Drawing"  />
  768       <Refer ence Inclu de="System .Windows.F orms" />
  769       <Refer ence Inclu de="System .Xml" />
  770       <Refer ence Inclu de="Micros oft.SqlSer ver.Manage dDTS, Vers ion=11.0.0 .0, Cultur e=Neutral,  PublicKey Token=8984 5dcd8080cc 91" />
  771       <Refer ence Inclu de="Micros oft.SqlSer ver.Script Task, Vers ion=11.0.0 .0, Cultur e=Neutral,  PublicKey Token=8984 5dcd8080cc 91" />
  772       <Refer ence Inclu de="Window sBase">
  773         <Req uiredTarge tFramework >3.0</Requ iredTarget Framework>
  774       </Refe rence>
  775     </ItemGr oup>
  776     <!-- Thi s section  defines th e user sou rce files  that are p art of the
  777          pro ject.
  778  
  779          Com pile - Spe cifies a s ource file  to compil e.
  780          Emb eddedResou rce - Spec ifies a .r esx file f or embedde d resource s.
  781          Non e - Specif ies a file  that is n ot to be p assed to t he compile r (for ins tance,
  782                  a text  file or X ML file).
  783          App Designer -  Specifies  the direc tory where  the appli cation pro perties fi les can
  784                          be found.
  785     -->
  786     <ItemGro up>
  787       <AppDe signer Inc lude="Prop erties\" / >
  788       <Compi le Include ="ExcelCel l.cs" />
  789       <Compi le Include ="ExcelCol umn.cs" />
  790       <Compi le Include ="ExcelHea derFooter. cs" />
  791       <Compi le Include ="ExcelPac kage.cs" / >
  792       <Compi le Include ="ExcelRow .cs" />
  793       <Compi le Include ="ExcelSty les.cs" />
  794       <Compi le Include ="ExcelWor kbook.cs"  />
  795       <Compi le Include ="ExcelWor ksheet.cs"  />
  796       <Compi le Include ="ExcelWor ksheets.cs " />
  797       <Compi le Include ="ExcelWor ksheetView .cs" />
  798       <Compi le Include ="OfficePr operties.c s" />
  799       <Compi le Include ="Properti es\Assembl yInfo.cs">
  800         <Sub Type>Code< /SubType>
  801       </Comp ile>
  802       <Embed dedResourc e Include= "Propertie s\Resource s.resx">
  803         <Gen erator>Res XFileCodeG enerator</ Generator>
  804         <Las tGenOutput >Resources .Designer. cs</LastGe nOutput>
  805       </Embe ddedResour ce>
  806       <Compi le Include ="Properti es\Resourc es.Designe r.cs">
  807         <Aut oGen>True< /AutoGen>
  808         <Dep endentUpon >Resources .resx</Dep endentUpon >
  809         <Des ignTime>Tr ue</Design Time>
  810       </Comp ile>
  811       <None  Include="P roperties\ Settings.s ettings">
  812         <Gen erator>Set tingsSingl eFileGener ator</Gene rator>
  813         <Las tGenOutput >Settings. Designer.c s</LastGen Output>
  814       </None >
  815       <Compi le Include ="Properti es\Setting s.Designer .cs">
  816         <Aut oGen>True< /AutoGen>
  817         <Dep endentUpon >Settings. settings</ DependentU pon>
  818         <Des ignTimeSha redInput>T rue</Desig nTimeShare dInput>
  819       </Comp ile>
  820       <Compi le Include ="ScriptMa in.cs">
  821         <Sub Type>Code< /SubType>
  822       </Comp ile>
  823       <!-- I nclude the  default c onfigurati on informa tion and m etadata fi les for th e add-in.
  824            T hese files  are copie d to the b uild outpu t director y when the  project i s
  825            b uilt, and  the path t o the conf iguration  file is pa ssed to ad d-in on th e command
  826            l ine when d ebugging.
  827       -->
  828     </ItemGr oup>
  829     <!-- Inc lude the b uild rules  for a C#  project.-- >
  830     <Import  Project="$ (MSBuildBi nPath)\Mic rosoft.CSh arp.target s" />
  831     <!-- Thi s section  defines VS TA propert ies that d escribe th e host-cha ngable pro ject prope rties. -->
  832     <Project Extensions >
  833       <Visua lStudio>
  834         <Fla vorPropert ies GUID=" {30D016F9- 3734-4E33- A861-5E7D8 99E18F3}">
  835           <P rojectProp erties Hos tName="VST AHostName"  HostPacka ge="{B3A68 5AA-7EAF-4 BC6-9940-5 7959FA5AC0 7}" Applic ationType= "usd" Lang uage="cs"  TemplatesP ath="" Deb ugInfoExeN ame="#HKEY _LOCAL_MAC HINE\SOFTW ARE\Micros oft\Visual Studio\9.0 \InstallDi r#\devenv. exe" />
  836           <H ost Name=" SSIS_Scrip tTask" />
  837           <P rojectClie nt>
  838              <HostIdent ifier>SSIS _ST110</Ho stIdentifi er>
  839           </ ProjectCli ent>
  840         </Fl avorProper ties>
  841       </Visu alStudio>
  842     </Projec tExtension s>
  843   </Project> ]]></Proje ctItem>
  844                      <P rojectItem
  845                         Name="Exce lWorksheet .cs"
  846                         Encoding=" UTF8"><![C DATA[/* 
  847    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  848    * 
  849    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  850    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  851    * 
  852    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  853    * mailto: dr.john.tu nnicliffe@ btinternet .com
  854    * All rig hts reserv ed.
  855    * 
  856    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  857    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  858    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  859    * 
  860    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  861    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  862    * 
  863    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  864    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  865    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  866    * 
  867    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  868    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  869    */
  870  
  871   /*
  872    * Code ch ange notes :
  873    * 
  874    * Author                                                             Change                                               Date
  875    * ******* ********** ********** ********** ********** ********** ********** ********** *
  876    * John Tu nnicliffe               Initial  Release          01-J an-2007
  877    * ******* ********** ********** ********** ********** ********** ********** ********** *
  878    */
  879   using Syst em;
  880   using Syst em.Xml;
  881   using Syst em.IO;
  882   using Syst em.IO.Pack aging;
  883   using Syst em.Configu ration;
  884  
  885   namespace  OfficeOpen Xml
  886   {
  887       /// <s ummary>
  888       /// Re presents a n Excel wo rksheet an d provides  access to  its prope rties and  methods
  889       /// </ summary>
  890       public  class Exc elWorkshee t
  891       {
  892           #r egion Work sheet Priv ate Proper ties
  893           // / <summary >
  894           // / Temporar y tag for  all column  numbers i n the work sheet XML
  895           // / For inte rnal use o nly!
  896           // / </summar y>
  897           pr otected in ternal con st string  tempColumn NumberTag  = "colNumb er";
  898           // / <summary >
  899           // / Referenc e to the p arent pack age
  900           // / For inte rnal use o nly!
  901           // / </summar y>
  902           pr otected in ternal Exc elPackage  xlPackage;
  903           pr ivate Uri  _worksheet Uri;
  904           pr ivate stri ng _name;
  905           pr ivate int  _sheetID;
  906           pr ivate bool  _hidden;
  907           pr ivate stri ng _relati onshipID;
  908           pr ivate XmlD ocument _w orksheetXm l;
  909           pr ivate Exce lWorksheet View _shee tView;
  910           pr ivate Exce lHeaderFoo ter _heade rFooter;
  911           pr ivate XmlN amespaceMa nager _nsM anager;
  912           #e ndregion   // END Wor ksheet Pri vate Prope rties
  913  
  914           #r egion Exce lWorksheet  Construct or
  915           // / <summary >
  916           // / Creates  a new inst ance of Ex celWorkshe et class. 
  917           // / For inte rnal use o nly!
  918           // / </summar y>
  919           // / <param n ame="Paren tXlPackage ">Parent E xcelPackag e object</ param>
  920           // / <param n ame="Relat ionshipID" >Package r elationshi p ID</para m>
  921           // / <param n ame="sheet Name">Name  of the ne w workshee t</param>
  922           // / <param n ame="uriWo rksheet">U ri of the  worksheet  in the pac kage</para m>
  923           // / <param n ame="Sheet ID">The wo rksheet's  ID in the  workbook X ML</param>
  924           // / <param n ame="Hide" >Indicates  if the wo rksheet is  hidden</p aram>
  925           pr otected in ternal Exc elWorkshee t(
  926                ExcelPac kage Paren tXlPackage ,
  927                string R elationshi pID,
  928                string s heetName,
  929                Uri uriW orksheet,
  930                int Shee tID,
  931                bool Hid e)
  932           {
  933                xlPackag e = Parent XlPackage;
  934                _relatio nshipID =  Relationsh ipID;
  935                _workshe etUri = ur iWorksheet ;
  936                _name =  sheetName;
  937                //_type  = Type;
  938                _sheetID  = SheetID ;
  939                Hidden =  Hide;
  940           }
  941           #e ndregion
  942  
  943           #r egion Work sheet Publ ic Propert ies
  944           // / <summary >
  945           // / Read-onl y: the Uri  to the wo rksheet wi thin the p ackage
  946           // / </summar y>
  947           pr otected in ternal Uri  Worksheet Uri { get  { return ( _worksheet Uri); } }
  948           // / <summary >
  949           // / Read-onl y: a refer ence to th e PackageP art for th e workshee t within t he package
  950           // / </summar y>
  951           pr otected in ternal Pac kagePart P art { get  { return ( xlPackage. Package.Ge tPart(Work sheetUri)) ; } }
  952           // / <summary >
  953           // / Read-onl y: the ID  for the wo rksheet's  relationsh ip with th e workbook  in the pa ckage
  954           // / </summar y>
  955           pr otected in ternal str ing Relati onshipID {  get { ret urn (_rela tionshipID ); } }
  956           // / <summary >
  957           // / The uniq ue identif ier for th e workshee t.  Note t hat these  can be ran dom, so no t
  958           // / too usef ul in code !
  959           // / </summar y>
  960           pr otected in ternal int  SheetID {  get { ret urn (_shee tID); } }
  961           // / <summary >
  962           // / Provides  access to  a namespa ce manager  instance  to allow X Path searc hing
  963           // / </summar y>
  964           pu blic XmlNa mespaceMan ager NameS paceManage r
  965           {
  966                get
  967                {
  968                    if ( _nsManager  == null)
  969                    {
  970                         NameTable  nt = new N ameTable() ;
  971                         _nsManager  = new Xml NamespaceM anager(nt) ;
  972                         _nsManager .AddNamesp ace("d", E xcelPackag e.schemaMa in);
  973                    }
  974                    retu rn (_nsMan ager);
  975                }
  976           }
  977           // / <summary >
  978           // / Returns  a ExcelWor ksheetView  object th at allows  you to
  979           // / set the  view state  propertie s of the w orksheet
  980           // / </summar y>
  981           pu blic Excel WorksheetV iew View
  982           {
  983                get
  984                {
  985                    if ( _sheetView  == null)
  986                    {
  987                         _sheetView  = new Exc elWorkshee tView(this );
  988                    }
  989                    retu rn (_sheet View);
  990                }
  991           }
  992  
  993           #r egion Name  // Worksh eet Name
  994           // / <summary >
  995           // / The work sheet's na me as it a ppears on  the tab
  996           // / </summar y>
  997           pu blic strin g Name
  998           {
  999                get { re turn (_nam e); }
  1000                set
  1001                {
  1002                    XmlN ode sheetN ode = xlPa ckage.Work book.Workb ookXml.Sel ectSingleN ode(string .Format("/ /d:sheet[@ sheetId={0 }]", _shee tID), Name SpaceManag er);
  1003                    if ( sheetNode  != null)
  1004                    {
  1005                         XmlAttribu te nameAtt r = (XmlAt tribute)sh eetNode.At tributes.G etNamedIte m("name");
  1006                         if (nameAt tr != null )
  1007                         {
  1008                             nameAt tr.Value =  value;
  1009                         }
  1010                    }
  1011                    _nam e = value;
  1012                }
  1013           }
  1014           #e ndregion / / END Work sheet Name
  1015  
  1016           #r egion Hidd en
  1017           // / <summary >
  1018           // / Indicate s if the w orksheet i s hidden i n the work book
  1019           // / </summar y>
  1020           pu blic bool  Hidden
  1021           {
  1022                get { re turn (_hid den); }
  1023                set
  1024                {
  1025                    XmlN ode sheetN ode = xlPa ckage.Work book.Workb ookXml.Sel ectSingleN ode(string .Format("/ /d:sheet[@ sheetId={0 }]", _shee tID), Name SpaceManag er);
  1026                    if ( sheetNode  != null)
  1027                    {
  1028                         XmlAttribu te nameAtt r = (XmlAt tribute)sh eetNode.At tributes.G etNamedIte m("hidden" );
  1029                         if (nameAt tr != null )
  1030                         {
  1031                             nameAt tr.Value =  value.ToS tring();
  1032                         }
  1033                    }
  1034                    _hid den = valu e;
  1035                }
  1036           }
  1037           #e ndregion
  1038  
  1039           #r egion defa ultRowHeig ht
  1040           // / <summary >
  1041           // / Allows y ou to get/ set the de fault heig ht of all  rows in th e workshee t
  1042           // / </summar y>
  1043           pu blic int d efaultRowH eight
  1044           {
  1045                get
  1046                {
  1047                    int  retValue =  15; // Ex cel's defa ult height
  1048                    XmlE lement she etFormat =  (XmlEleme nt)Workshe etXml.Sele ctSingleNo de("//d:sh eetFormatP r", NameSp aceManager );
  1049                    if ( sheetForma t != null)
  1050                    {
  1051                         string ret  = sheetFo rmat.GetAt tribute("d efaultRowH eight");
  1052                         if (ret !=  "")
  1053                             retVal ue = int.P arse(ret);
  1054                    }
  1055                    retu rn retValu e;
  1056                }
  1057                set
  1058                {
  1059                    XmlE lement she etFormat =  (XmlEleme nt)Workshe etXml.Sele ctSingleNo de("//d:sh eetFormatP r", NameSp aceManager );
  1060                    if ( sheetForma t == null)
  1061                    {
  1062                         // create  the node a s it does  not exist
  1063                         sheetForma t = Worksh eetXml.Cre ateElement ("sheetFor matPr", Ex celPackage .schemaMai n);
  1064                         // find lo cation to  insert new  element
  1065                         XmlNode sh eetViews =  Worksheet Xml.Select SingleNode ("//d:shee tViews", N ameSpaceMa nager);
  1066                         // insert  the new no de
  1067                         WorksheetX ml.Documen tElement.I nsertAfter (sheetForm at, sheetV iews);
  1068                    }
  1069                    shee tFormat.Se tAttribute ("defaultR owHeight",  value.ToS tring());
  1070                }
  1071           }
  1072           #e ndregion
  1073  
  1074           #r egion Work sheetXml
  1075           // / <summary >
  1076           // / The XML  document h olding all  the works heet data.
  1077           // / </summar y>
  1078           pu blic XmlDo cument Wor ksheetXml
  1079           {
  1080                get
  1081                {
  1082                    if ( _worksheet Xml == nul l)
  1083                    {
  1084                         _worksheet Xml = new  XmlDocumen t();
  1085                         PackagePar t packPart  = xlPacka ge.Package .GetPart(W orksheetUr i);
  1086                         _worksheet Xml.Load(p ackPart.Ge tStream()) ;
  1087                         // convert  worksheet  into the  type of XM L we like  dealing wi th
  1088                         AddNumeric CellIDs();
  1089                    }
  1090                    retu rn (_works heetXml);
  1091                }
  1092           }
  1093           #e ndregion
  1094  
  1095           #r egion Head erFooter
  1096           // / <summary >
  1097           // / A refere nce to the  header an d footer c lass which  allows yo u to 
  1098           // / set the  header and  footer fo r all odd,  even and  first page s of the w orksheet
  1099           // / </summar y>
  1100           pu blic Excel HeaderFoot er HeaderF ooter
  1101           {
  1102                get
  1103                {
  1104                    if ( _headerFoo ter == nul l)
  1105                    {
  1106                         XmlNode he aderFooter Node = Wor ksheetXml. SelectSing leNode("// d:headerFo oter", Nam eSpaceMana ger);
  1107                         if (header FooterNode  == null)
  1108                             header FooterNode  = Workshe etXml.Docu mentElemen t.AppendCh ild(Worksh eetXml.Cre ateElement ("headerFo oter", Exc elPackage. schemaMain ));
  1109                         _headerFoo ter = new  ExcelHeade rFooter((X mlElement) headerFoot erNode);
  1110                    }
  1111                    retu rn (_heade rFooter);
  1112                }
  1113           }
  1114           #e ndregion
  1115  
  1116           //  TODO: imp lement fre eze pane. 
  1117           //  TODO: imp lement pag e margin p roperties
  1118  
  1119           #e ndregion / / END Work sheet Publ ic Propert ies
  1120  
  1121           #r egion Work sheet Publ ic Methods
  1122           // / <summary >
  1123           // / Provides  access to  an indivi dual cell  within the  worksheet .
  1124           // / </summar y>
  1125           // / <param n ame="row"> The row nu mber in th e workshee t</param>
  1126           // / <param n ame="col"> The column  number in  the works heet</para m>
  1127           // / <returns ></returns >
  1128           pu blic Excel Cell Cell( int row, i nt col)
  1129           {
  1130                return ( new ExcelC ell(this,  row, col)) ;
  1131           }
  1132  
  1133           // / <summary >
  1134           // / Provides  access to  an indivi dual row w ithin the  worksheet  so you can  set its p roperties.
  1135           // / </summar y>
  1136           // / <param n ame="row"> The row nu mber in th e workshee t</param>
  1137           // / <returns ></returns >
  1138           pu blic Excel Row Row(in t row)
  1139           {
  1140                return ( new ExcelR ow(this, r ow));
  1141           }
  1142  
  1143           // / <summary >
  1144           // / Provides  access to  an indivi dual colum n within t he workshe et so you  can set it s properti es.
  1145           // / </summar y>
  1146           // / <param n ame="col"> The column  number in  the works heet</para m>
  1147           // / <returns ></returns >
  1148           pu blic Excel Column Col umn(int co l)
  1149           {
  1150                return ( new ExcelC olumn(this , col));
  1151           }
  1152  
  1153           #r egion Crea teSharedFo rmula
  1154           // / <summary >
  1155           // / Creates  a shared f ormula bas ed on the  formula al ready in s tartCell
  1156           // / Essentia lly this s upports th e formula  attributes  such as t ="shared"  ref="B2:B4 " si="0"
  1157           // / as per B rian Jones : Open XML  Formats b log. See
  1158           // / http://b logs.msdn. com/brian_ jones/arch ive/2006/1 1/15/simpl e-spreadsh eetml-file -part-2-of -3.aspx
  1159           // / </summar y>
  1160           // / <param n ame="start Cell">The  cell conta ining the  formula</p aram>
  1161           // / <param n ame="endCe ll">The en d cell (i. e. end of  the range) </param>
  1162           pu blic void  CreateShar edFormula( ExcelCell  startCell,  ExcelCell  endCell)
  1163           {
  1164                XmlEleme nt formula Element;
  1165                string f ormula = s tartCell.F ormula;
  1166                if (form ula == "")  throw new  Exception ("CreateSh aredFormul a Error: s tartCell d oes not co ntain a fo rmula!");
  1167  
  1168                // find  or create  a shared f ormula ID
  1169                int shar edID = -1;
  1170                foreach  (XmlNode n ode in _wo rksheetXml .SelectNod es("//d:sh eetData/d: row/d:c/d: f/@si", Na meSpaceMan ager))
  1171                {
  1172                    int  curID = in t.Parse(no de.Value);
  1173                    if ( curID > sh aredID) sh aredID = c urID;
  1174                }
  1175                sharedID ++;  // fi rst value  must be ze ro
  1176  
  1177                for (int  row = sta rtCell.Row ; row <= e ndCell.Row ; row++)
  1178                {
  1179                    for  (int col =  startCell .Column; c ol <= endC ell.Column ; col++)
  1180                    {
  1181                         ExcelCell  cell = Cel l(row, col );
  1182  
  1183                         // to forc e Excel to  re-calcul ate the fo rmula, we  must remov e the valu e
  1184                         cell.Remov eValue();
  1185  
  1186                         formulaEle ment = (Xm lElement)c ell.Elemen t.SelectSi ngleNode(" ./d:f", Na meSpaceMan ager);
  1187                         if (formul aElement = = null)
  1188                         {
  1189                             formul aElement =  cell.AddF ormulaElem ent();
  1190                         }
  1191                         formulaEle ment.SetAt tribute("t ", "shared ");
  1192                         formulaEle ment.SetAt tribute("s i", shared ID.ToStrin g());
  1193                    }
  1194                }
  1195  
  1196                // final ly add the  shared ce ll range t o the star tCell
  1197                formulaE lement = ( XmlElement )startCell .Element.S electSingl eNode("./d :f", NameS paceManage r);
  1198                formulaE lement.Set Attribute( "ref", str ing.Format ("{0}:{1}" , startCel l.CellAddr ess, endCe ll.CellAdd ress));
  1199           }
  1200           #e ndregion
  1201  
  1202           // / <summary >
  1203           // / Inserts  conditiona l formatti ng for the  cell rang e.
  1204           // / Currentl y only sup ports the  dataBar st yle.
  1205           // / </summar y>
  1206           // / <param n ame="start Cell"></pa ram>
  1207           // / <param n ame="endCe ll"></para m>
  1208           // / <param n ame="color "></param>
  1209           pu blic void  CreateCond itionalFor matting(Ex celCell st artCell, E xcelCell e ndCell, st ring color )
  1210           {
  1211                XmlNode  formatNode  = Workshe etXml.Sele ctSingleNo de("//d:co nditionalF ormatting" , NameSpac eManager);
  1212                if (form atNode ==  null)
  1213                {
  1214                    form atNode = W orksheetXm l.CreateEl ement("con ditionalFo rmatting",  ExcelPack age.schema Main);
  1215                    XmlN ode prevNo de = Works heetXml.Se lectSingle Node("//d: mergeCells ", NameSpa ceManager) ;
  1216                    if ( prevNode = = null)
  1217                         prevNode =  Worksheet Xml.Select SingleNode ("//d:shee tData", Na meSpaceMan ager);
  1218                    Work sheetXml.D ocumentEle ment.Inser tAfter(for matNode, p revNode);
  1219                }
  1220                XmlAttri bute attr  = formatNo de.Attribu tes["sqref "];
  1221                if (attr  == null)
  1222                {
  1223                    attr  = Workshe etXml.Crea teAttribut e("sqref") ;
  1224                    form atNode.Att ributes.Ap pend(attr) ;
  1225                }
  1226                attr.Val ue = strin g.Format(" {0}:{1}",  startCell. CellAddres s, endCell .CellAddre ss);
  1227  
  1228                XmlNode  node = for matNode.Se lectSingle Node("./d: cfRule", N ameSpaceMa nager);
  1229                if (node  == null)
  1230                {
  1231                    node  = Workshe etXml.Crea teElement( "cfRule",  ExcelPacka ge.schemaM ain);
  1232                    form atNode.App endChild(n ode);
  1233                }
  1234  
  1235                attr = n ode.Attrib utes["type "];
  1236                if (attr  == null)
  1237                {
  1238                    attr  = Workshe etXml.Crea teAttribut e("type");
  1239                    node .Attribute s.Append(a ttr);
  1240                }
  1241                attr.Val ue = "data Bar";
  1242  
  1243                attr = n ode.Attrib utes["prio rity"];
  1244                if (attr  == null)
  1245                {
  1246                    attr  = Workshe etXml.Crea teAttribut e("priorit y");
  1247                    node .Attribute s.Append(a ttr);
  1248                }
  1249                attr.Val ue = "1";
  1250  
  1251                // the f ollowing i s poor cod e, but jus t an examp le!!!
  1252                XmlNode  databar =  WorksheetX ml.CreateE lement("da tabar", Ex celPackage .schemaMai n);
  1253                node.App endChild(d atabar);
  1254  
  1255                XmlNode  child = Wo rksheetXml .CreateEle ment("cfvo ", ExcelPa ckage.sche maMain);
  1256                databar. AppendChil d(child);
  1257                attr = W orksheetXm l.CreateAt tribute("t ype");
  1258                child.At tributes.A ppend(attr );
  1259                attr.Val ue = "min" ;
  1260                attr = W orksheetXm l.CreateAt tribute("v al");
  1261                child.At tributes.A ppend(attr );
  1262                attr.Val ue = "0";
  1263  
  1264                child =  WorksheetX ml.CreateE lement("cf vo", Excel Package.sc hemaMain);
  1265                databar. AppendChil d(child);
  1266                attr = W orksheetXm l.CreateAt tribute("t ype");
  1267                child.At tributes.A ppend(attr );
  1268                attr.Val ue = "max" ;
  1269                attr = W orksheetXm l.CreateAt tribute("v al");
  1270                child.At tributes.A ppend(attr );
  1271                attr.Val ue = "0";
  1272  
  1273                child =  WorksheetX ml.CreateE lement("co lor", Exce lPackage.s chemaMain) ;
  1274                databar. AppendChil d(child);
  1275                attr = W orksheetXm l.CreateAt tribute("r gb");
  1276                child.At tributes.A ppend(attr );
  1277                attr.Val ue = color ;
  1278           }
  1279  
  1280           #r egion Inse rtRow
  1281           // / <summary >
  1282           // / Inserts  a new row  into the s preadsheet .  Existin g rows bel ow the ins ersion pos ition are 
  1283           // / shifted  down.  All  formula a re updated  to take a ccount of  the new ro w.
  1284           // / </summar y>
  1285           // / <param n ame="posit ion">The p osition of  the new r ow</param>
  1286           pu blic void  InsertRow( int positi on)
  1287           {
  1288                XmlNode  rowNode =  null;
  1289                // creat e the new  row elemen t
  1290                XmlEleme nt rowElem ent = Work sheetXml.C reateEleme nt("row",  ExcelPacka ge.schemaM ain);
  1291                rowEleme nt.Attribu tes.Append (Worksheet Xml.Create Attribute( "r"));
  1292                rowEleme nt.Attribu tes["r"].V alue = pos ition.ToSt ring();
  1293  
  1294                XmlNode  sheetDataN ode = Work sheetXml.S electSingl eNode("//d :sheetData ", NameSpa ceManager) ;
  1295                if (shee tDataNode  != null)
  1296                {
  1297                    int  renumberFr om = 1;
  1298                    XmlN odeList no des = shee tDataNode. ChildNodes ;
  1299                    int  nodeCount  = nodes.Co unt;
  1300                    XmlN ode insert AfterRowNo de = null;
  1301                    int  insertAfte rRowNodeID  = 0;
  1302                    for  (int i = 0 ; i < node Count; i++ )
  1303                    {
  1304                         int curren tRowID = i nt.Parse(n odes[i].At tributes[" r"].Value) ;
  1305                         if (curren tRowID < p osition)
  1306                         {
  1307                             insert AfterRowNo de = nodes [i];
  1308                             insert AfterRowNo deID = i;
  1309                         }
  1310                         if (curren tRowID >=  position)
  1311                         {
  1312                             renumb erFrom = c urrentRowI D;
  1313                             break;
  1314                         }
  1315                    }
  1316  
  1317                    // u pdate the  existing r ow ids
  1318                    for  (int i = i nsertAfter RowNodeID  + 1; i < n odeCount;  i++)
  1319                    {
  1320                         int curren tRowID = i nt.Parse(n odes[i].At tributes[" r"].Value) ;
  1321                         if (curren tRowID >=  renumberFr om)
  1322                         {
  1323                             nodes[ i].Attribu tes["r"].V alue = Con vert.ToStr ing(curren tRowID + 1 );
  1324  
  1325                             // now  update an y formula  that are i n the row 
  1326                             XmlNod eList form ulaNodes =  nodes[i]. SelectNode s("./d:c/d :f", NameS paceManage r);
  1327                             foreac h (XmlNode  formulaNo de in form ulaNodes)
  1328                             {
  1329                                 fo rmulaNode. InnerText  = ExcelCel l.UpdateFo rmulaRefer ences(form ulaNode.In nerText, 1 , 0, posit ion, 0);
  1330                             }
  1331                         }
  1332                    }
  1333  
  1334                    // n ow insert  the new ro w
  1335                    if ( insertAfte rRowNode ! = null)
  1336                         rowNode =  sheetDataN ode.Insert After(rowE lement, in sertAfterR owNode);
  1337  
  1338                }
  1339           }
  1340           #e ndregion
  1341  
  1342           #r egion Dele teRow
  1343           // / <summary >
  1344           // / Deletes  the specif ied row fr om the wor ksheet.
  1345           // / If shift OtherRowsU p=true the n all form ula are up dated to t ake accoun t of the d eleted row .
  1346           // / </summar y>
  1347           // / <param n ame="rowTo Delete">Th e number o f the row  to be dele ted</param >
  1348           // / <param n ame="shift OtherRowsU p">Set to  true if yo u want the  other row s renumber ed so they  all move  up</param>
  1349           pu blic void  DeleteRow( int rowToD elete, boo l shiftOth erRowsUp)
  1350           {
  1351                XmlNode  sheetDataN ode = Work sheetXml.S electSingl eNode("//d :sheetData ", NameSpa ceManager) ;
  1352                if (shee tDataNode  != null)
  1353                {
  1354                    XmlN odeList no des = shee tDataNode. ChildNodes ;
  1355                    int  nodeCount  = nodes.Co unt;
  1356                    int  rowNodeID  = 0;
  1357                    XmlN ode rowNod e = null;
  1358                    for  (int i = 0 ; i < node Count; i++ )
  1359                    {
  1360                         int curren tRowID = i nt.Parse(n odes[i].At tributes[" r"].Value) ;
  1361                         if (curren tRowID ==  rowToDelet e)
  1362                         {
  1363                             rowNod eID = i;
  1364                             rowNod e = nodes[ i];
  1365                         }
  1366                    }
  1367  
  1368                    if ( shiftOther RowsUp)
  1369                    {
  1370                         // update  the existi ng row ids
  1371                         for (int i  = rowNode ID + 1; i  < nodeCoun t; i++)
  1372                         {
  1373                             int cu rrentRowID  = int.Par se(nodes[i ].Attribut es["r"].Va lue);
  1374                             if (cu rrentRowID  > rowToDe lete)
  1375                             {
  1376                                 no des[i].Att ributes["r "].Value =  Convert.T oString(cu rrentRowID  - 1);
  1377  
  1378                                 //  now updat e any form ula that a re in the  row 
  1379                                 Xm lNodeList  formulaNod es = nodes [i].Select Nodes("./d :c/d:f", N ameSpaceMa nager);
  1380                                 fo reach (Xml Node formu laNode in  formulaNod es)
  1381                                      formulaN ode.InnerT ext = Exce lCell.Upda teFormulaR eferences( formulaNod e.InnerTex t, -1, 0,  rowToDelet e, 0);
  1382                             }
  1383                         }
  1384                    }
  1385                    // d elete the  row
  1386                    if ( rowNode !=  null)
  1387                    {
  1388                         sheetDataN ode.Remove Child(rowN ode);
  1389                    }
  1390                }
  1391           }
  1392           #e ndregion
  1393  
  1394           #e ndregion / / END Work sheet Publ ic Methods
  1395  
  1396           #r egion Work sheet Priv ate Method s
  1397  
  1398           #r egion Work sheet Save
  1399           // / <summary >
  1400           // / Saves th e workshee t to the p ackage.  F or interna l use only .
  1401           // / </summar y>
  1402           pr otected in ternal voi d Save()   // Workshe et Save
  1403           {
  1404                #region  Delete the  printer s ettings co mponent (i f it exist s)
  1405                // we al so need to  delete th e relation ship from  the pageSe tup tag
  1406                XmlNode  pageSetup  = _workshe etXml.Sele ctSingleNo de("//d:pa geSetup",  NameSpaceM anager);
  1407                if (page Setup != n ull)
  1408                {
  1409                    XmlA ttribute a ttr = (Xml Attribute) pageSetup. Attributes .GetNamedI tem("id",  ExcelPacka ge.schemaR elationshi ps);
  1410                    if ( attr != nu ll)
  1411                    {
  1412                         string rel ID = attr. Value;
  1413                         // first d elete the  attribute  from the X ML
  1414                         pageSetup. Attributes .Remove(at tr);
  1415  
  1416                         // get the  URI
  1417                         PackageRel ationship  relPrinter Settings =  Part.GetR elationshi p(relID);
  1418                         Uri printe rSettingsU ri = new U ri("/xl" +  relPrinte rSettings. TargetUri. ToString() .Replace(" ..", ""),  UriKind.Re lative);
  1419  
  1420                         // now del ete the re lationship
  1421                         Part.Delet eRelations hip(relPri nterSettin gs.Id);
  1422  
  1423                         // now del ete the pa rt from th e package
  1424                         xlPackage. Package.De letePart(p rinterSett ingsUri);
  1425                    }
  1426                }
  1427                #endregi on
  1428  
  1429                if (_wor ksheetXml  != null)
  1430                {
  1431                    // s ave the he ader & foo ter (if de fined)
  1432                    if ( _headerFoo ter != nul l)
  1433                         HeaderFoot er.Save();
  1434                    // r eplace the  numeric C ell IDs we  inserted  with AddNu mericCellI Ds()
  1435                    Repl aceNumeric CellIDs();
  1436  
  1437                    // s ave worksh eet to pac kage
  1438                    Pack agePart pa rtPack = x lPackage.P ackage.Get Part(Works heetUri);
  1439                    Work sheetXml.S ave(partPa ck.GetStre am(FileMod e.Create,  FileAccess .Write));
  1440                    xlPa ckage.Writ eDebugFile (Worksheet Xml, @"xl\ worksheets ", "sheet"  + SheetID  + ".xml") ;
  1441                }
  1442           }
  1443           #e ndregion
  1444  
  1445           #r egion AddN umericCell IDs
  1446           // / <summary >
  1447           // / Adds num eric cell  identifier s so that  it is easi er to work  out posit ion of cel ls
  1448           // / Private  method, fo r internal  use only!
  1449           // / </summar y>
  1450           pr ivate void  AddNumeri cCellIDs()
  1451           {
  1452                // proce ss each ro w
  1453                foreach  (XmlNode r owNode in  WorksheetX ml.SelectN odes("//d: sheetData/ d:row", Na meSpaceMan ager))
  1454                {
  1455                    // r emove the  spans attr ibute.  Ex cel simply  recreates  it when t he file is  opened.
  1456                    XmlA ttribute a ttr = (Xml Attribute) rowNode.At tributes.G etNamedIte m("spans") ;
  1457                    if ( attr != nu ll)
  1458                         rowNode.At tributes.R emove(attr );
  1459  
  1460                    int  row = Conv ert.ToInt3 2(rowNode. Attributes .GetNamedI tem("r").V alue);
  1461                    // p rocess eac h cell in  current ro w
  1462                    fore ach (XmlNo de colNode  in rowNod e.SelectNo des("./d:c ", NameSpa ceManager) )
  1463                    {
  1464                         XmlAttribu te cellAdd ressAttr =  (XmlAttri bute)colNo de.Attribu tes.GetNam edItem("r" );
  1465                         if (cellAd dressAttr  != null)
  1466                         {
  1467                             string  cellAddre ss = cellA ddressAttr .Value;
  1468  
  1469                             int co l = ExcelC ell.GetCol umnNumber( cellAddres s);
  1470                             attr =  Worksheet Xml.Create Attribute( tempColumn NumberTag) ;
  1471                             if (at tr != null )
  1472                             {
  1473                                 at tr.Value =  col.ToStr ing();
  1474                                 co lNode.Attr ibutes.App end(attr);
  1475                                 //  remove al l cell Add resses lik e A1, A2,  A3 etc.
  1476                                 co lNode.Attr ibutes.Rem ove(cellAd dressAttr) ;
  1477                             }
  1478                         }
  1479                    }
  1480                }
  1481           }
  1482           #e ndregion
  1483  
  1484           #r egion Repl aceNumeric CellIDs
  1485           // / <summary >
  1486           // / Replaces  the numer ic cell id entifiers  we inserte d with Add NumericCel lIDs with  the tradit ional 
  1487           // / A1, A2 c ell identi fiers that  Excel und erstands.
  1488           // / Private  method, fo r internal  use only!
  1489           // / </summar y>
  1490           pr ivate void  ReplaceNu mericCellI Ds()
  1491           {
  1492                int maxC olumn = 0;
  1493                // proce ss each ro w
  1494                foreach  (XmlNode r owNode in  WorksheetX ml.SelectN odes("//d: sheetData/ d:row", Na meSpaceMan ager))
  1495                {
  1496                    int  row = Conv ert.ToInt3 2(rowNode. Attributes .GetNamedI tem("r").V alue);
  1497                    int  count = 0;
  1498                    // p rocess eac h cell in  current ro w
  1499                    fore ach (XmlNo de colNode  in rowNod e.SelectNo des("./d:c ", NameSpa ceManager) )
  1500                    {
  1501                         XmlAttribu te colNumb er = (XmlA ttribute)c olNode.Att ributes.Ge tNamedItem (tempColum nNumberTag );
  1502                         if (colNum ber != nul l)
  1503                         {
  1504                             count+ +;
  1505                             if (co unt > maxC olumn) max Column = c ount;
  1506                             int co l = Conver t.ToInt32( colNumber. Value);
  1507                             string  cellAddre ss = Excel Cell.GetCo lumnLetter (col) + ro w.ToString ();
  1508                             XmlAtt ribute att r = Worksh eetXml.Cre ateAttribu te("r");
  1509                             if (at tr != null )
  1510                             {
  1511                                 at tr.Value =  cellAddre ss;
  1512                                 //  the cellA ddress nee ds to be t he first a ttribute,  otherwise  Excel comp lains
  1513                                 if  (colNode. Attributes .Count ==  0)
  1514                                      colNode. Attributes .Append(at tr);
  1515                                 el se
  1516                                 {
  1517                                      colNode. Attributes .InsertBef ore(attr,  (XmlAttrib ute)colNod e.Attribut es.Item(0) );
  1518                                 }
  1519                             }
  1520                             // rem ove all nu meric cell  addresses  added by  AddNumeric CellIDs
  1521                             colNod e.Attribut es.Remove( colNumber) ;
  1522                         }
  1523                    }
  1524                }
  1525  
  1526                // proce ss each ro w and add  the spans  attribute
  1527                // TODO:  Need to a dd proper  spans hand ling.
  1528                //foreac h (XmlNode  rowNode i n XmlDoc.S electNodes ("//d:shee tData/d:ro w", NameSp aceManager ))
  1529                //{
  1530                //  // w e must add  or update  the "span s" attribu te of each  row
  1531                //  XmlA ttribute s pans = (Xm lAttribute )rowNode.A ttributes. GetNamedIt em("spans" );
  1532                //  if ( spans == n ull)
  1533                //  {
  1534                //    sp ans = XmlD oc.CreateA ttribute(" spans");
  1535                //    ro wNode.Attr ibutes.App end(spans) ;
  1536                //  }
  1537                //  span s.Value =  "1:" + max Column.ToS tring();
  1538                //}
  1539           }
  1540           #e ndregion
  1541  
  1542           #r egion Get  Style Info rmation
  1543           // / <summary >
  1544           // / Returns  the name o f the styl e using it s xfId
  1545           // / </summar y>
  1546           // / <param n ame="Style ID">The xf Id of the  style</par am>
  1547           // / <returns >The name  of the sty le</return s>
  1548           pr otected in ternal str ing GetSty leName(int  StyleID)
  1549           {
  1550                string r etValue =  null;
  1551                XmlNode  styleNode  = null;
  1552                int coun t = 0;
  1553                foreach  (XmlNode n ode in xlP ackage.Wor kbook.Styl esXml.Sele ctNodes("/ /d:cellXfs /d:xf", Na meSpaceMan ager))
  1554                {
  1555                    if ( count == S tyleID)
  1556                    {
  1557                         styleNode  = node;
  1558                         break;
  1559                    }
  1560                    coun t++;
  1561                }
  1562  
  1563                if (styl eNode != n ull)
  1564                {
  1565                    stri ng searchS tring = st ring.Forma t("//d:cel lStyle[@xf Id = '{0}' ]", styleN ode.Attrib utes["xfId "].Value);
  1566                    XmlN ode styleN ameNode =  xlPackage. Workbook.S tylesXml.S electSingl eNode(sear chString,  NameSpaceM anager);
  1567                    if ( styleNameN ode != nul l)
  1568                    {
  1569                         retValue =  styleName Node.Attri butes["nam e"].Value;
  1570                    }
  1571                }
  1572  
  1573                return r etValue;
  1574           }
  1575  
  1576           // / <summary >
  1577           // / Returns  the style  ID given a  style nam e.  
  1578           // / The styl e ID will  be created  if not fo und, but o nly if the  style nam e exists!
  1579           // / </summar y>
  1580           // / <param n ame="Style Name"></pa ram>
  1581           // / <returns ></returns >
  1582           pr otected in ternal int  GetStyleI D(string S tyleName)
  1583           {
  1584                int styl eID = 0;
  1585                // find  the named  style in t he style s heet
  1586                string s earchStrin g = string .Format("/ /d:cellSty le[@name =  '{0}']",  StyleName) ;
  1587                XmlNode  styleNameN ode = xlPa ckage.Work book.Style sXml.Selec tSingleNod e(searchSt ring, Name SpaceManag er);
  1588                if (styl eNameNode  != null)
  1589                {
  1590                    stri ng xfId =  styleNameN ode.Attrib utes["xfId "].Value;
  1591                    // l ook up pos ition of s tyle in th e cellXfs 
  1592                    sear chString =  string.Fo rmat("//d: cellXfs/d: xf[@xfId =  '{0}']",  xfId);
  1593                    XmlN ode styleN ode = xlPa ckage.Work book.Style sXml.Selec tSingleNod e(searchSt ring, Name SpaceManag er);
  1594                    if ( styleNode  != null)
  1595                    {
  1596                         XmlNodeLis t nodes =  styleNode. SelectNode s("precedi ng-sibling ::d:xf", N ameSpaceMa nager);
  1597                         if (nodes  != null)
  1598                             styleI D = nodes. Count;
  1599                    }
  1600                }
  1601                return s tyleID;
  1602           }
  1603           #e ndregion
  1604  
  1605           #e ndregion   // END Wor ksheet Pri vate Metho ds
  1606       }  //  END class  Worksheet
  1607   }]]></Proj ectItem>
  1608                      <P rojectItem
  1609                         Name="Prop erties\Res ources.Des igner.cs"
  1610                         Encoding=" UTF8"><![C DATA[//--- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -----
  1611   // <auto-g enerated>
  1612   //     Thi s code was  generated  by a tool .
  1613   //
  1614   //     Cha nges to th is file ma y cause in correct be havior and  will be l ost if
  1615   //     the  code is r egenerated .
  1616   // </auto- generated>
  1617   //-------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
  1618  
  1619   [assembly:  global::S ystem.Diag nostics.Co deAnalysis .SuppressM essageAttr ibute("Mic rosoft.Per formance",  "CA1811:A voidUncall edPrivateC ode", Scop e = "membe r", Target  = "ST_fce 6863cd8c94 187b7bd252 8130634e1. csproj.Pro perties.Re sources.ge t_Resource Manager(): System.Res ources.Res ou" +
  1620       "rceMa nager")]
  1621   [assembly:  global::S ystem.Diag nostics.Co deAnalysis .SuppressM essageAttr ibute("Mic rosoft.Per formance",  "CA1811:A voidUncall edPrivateC ode", Scop e = "membe r", Target  = "ST_fce 6863cd8c94 187b7bd252 8130634e1. csproj.Pro perties.Re sources.ge t_Culture( ):System.G lobalizati on.Culture In" +
  1622       "fo")]
  1623   [assembly:  global::S ystem.Diag nostics.Co deAnalysis .SuppressM essageAttr ibute("Mic rosoft.Per formance",  "CA1811:A voidUncall edPrivateC ode", Scop e = "membe r", Target  = "ST_fce 6863cd8c94 187b7bd252 8130634e1. csproj.Pro perties.Re sources.se t_Culture( System.Glo balization .CultureIn fo" +
  1624       "):Voi d")]
  1625  
  1626   namespace  ST_fce6863 cd8c94187b 7bd2528130 634e1.cspr oj.Propert ies
  1627   {
  1628  
  1629  
  1630       /// <s ummary>
  1631       ///    A strongly -typed res ource clas s, for loo king up lo calized st rings, etc .
  1632       /// </ summary>
  1633       // Thi s class wa s auto-gen erated by  the Strong lyTypedRes ourceBuild er
  1634       // cla ss via a t ool like R esGen or V isual Stud io.
  1635       // To  add or rem ove a memb er, edit y our .ResX  file then  rerun ResG en
  1636       // wit h the /str  option, o r rebuild  your VS pr oject.
  1637       [globa l::System. Diagnostic s.Debugger NonUserCod eAttribute ()]
  1638       intern al class R esources
  1639       {
  1640  
  1641           pr ivate stat ic global: :System.Re sources.Re sourceMana ger resour ceMan;
  1642  
  1643           pr ivate stat ic global: :System.Gl obalizatio n.CultureI nfo resour ceCulture;
  1644  
  1645           [g lobal::Sys tem.Diagno stics.Code Analysis.S uppressMes sageAttrib ute("Micro soft.Perfo rmance", " CA1811:Avo idUncalled PrivateCod e")]
  1646           in ternal Res ources()
  1647           {
  1648           }
  1649  
  1650           // / <summary >
  1651           // /   Return s the cach ed Resourc eManager i nstance us ed by this  class.
  1652           // / </summar y>
  1653           [g lobal::Sys tem.Compon entModel.E ditorBrows ableAttrib ute(System .Component Model.Edit orBrowsabl eState.Adv anced)]
  1654           in ternal sta tic global ::System.R esources.R esourceMan ager Resou rceManager
  1655           {
  1656                get
  1657                {
  1658                    if ( (resourceM an == null ))
  1659                    {
  1660                         global::Sy stem.Resou rces.Resou rceManager  temp = ne w global:: System.Res ources.Res ourceManag er("ST_fce 6863cd8c94 187b7bd252 8130634e1. csproj.Pro perties.Re sources",  typeof(Res ources).As sembly);
  1661                         resourceMa n = temp;
  1662                    }
  1663                    retu rn resourc eMan;
  1664                }
  1665           }
  1666  
  1667           // / <summary >
  1668           // /   Overri des the cu rrent thre ad's Curre ntUICultur e property  for all
  1669           // /   resour ce lookups  using thi s strongly  typed res ource clas s.
  1670           // / </summar y>
  1671           [g lobal::Sys tem.Compon entModel.E ditorBrows ableAttrib ute(System .Component Model.Edit orBrowsabl eState.Adv anced)]
  1672           in ternal sta tic global ::System.G lobalizati on.Culture Info Cultu re
  1673           {
  1674                get
  1675                {
  1676                    retu rn resourc eCulture;
  1677                }
  1678                set
  1679                {
  1680                    reso urceCultur e = value;
  1681                }
  1682           }
  1683       }
  1684   }]]></Proj ectItem>
  1685                      <P rojectItem
  1686                         Name="Scri ptMain.cs"
  1687                         Encoding=" UTF8"><![C DATA[/*
  1688      Microso ft SQL Ser ver Integr ation Serv ices Scrip t Task
  1689      Write s cripts usi ng Microso ft Visual  C# 2008.
  1690      The Scr iptMain is  the entry  point cla ss of the  script.
  1691   */
  1692  
  1693   using Syst em;
  1694   using Syst em.Data;
  1695   using Syst em.Data.Sq lClient;
  1696   using Syst em.Data.Sq lTypes;
  1697   using Micr osoft.SqlS erver.Dts. Runtime;
  1698   using Syst em.Windows .Forms;
  1699   using Syst em.Data.Ol eDb;
  1700   using Syst em.Globali zation;
  1701   using Syst em.IO;
  1702   using Syst em.Collect ions.Gener ic;
  1703   using Offi ceOpenXml;
  1704  
  1705   namespace  ST_c08b961 ebac34ca79 93811373af cc663.cspr oj
  1706   {
  1707       [Micro soft.SqlSe rver.Dts.T asks.Scrip tTask.SSIS ScriptTask EntryPoint Attribute]
  1708       public  partial c lass Scrip tMain : Mi crosoft.Sq lServer.Dt s.Tasks.Sc riptTask.V STARTScrip tObjectMod elBase
  1709       {
  1710           pr ivate File Type input FileType;
  1711           pr ivate stri ng logStri ng = "";
  1712           in t _edipiCo lumn = -1;
  1713           in t _ssnColu mn = -1;
  1714           in t _labRepo rtDateColu mn = -1;
  1715           in t _keyFiel dColumn =  -1;
  1716           st ring _keyF ieldColumn Name = "";
  1717           pr ivate stri ng inputFi leName = " ";
  1718  
  1719           Li st<string>  rawEdipis  = new Lis t<string>( );
  1720           Li st<string>  validKeyF ields = ne w List<str ing>();
  1721           Di ctionary<s tring, str ing> keyTo Edipi = ne w Dictiona ry<string,  string>() ;
  1722           Di ctionary<s tring,stri ng> validE dipiIcns =  new Dicti onary<stri ng, string >();
  1723  
  1724           Fi leInfo _in putExcel;
  1725           Fi leInfo _ba ckupExcel;
  1726           in t _inputEx celColumnC ount = 1;
  1727           in t _inputEx celRowCoun t = 1;
  1728           Ex celWorkshe et _inputE xcelWorksh eet;
  1729           pr ivate stri ng _connec tionString StagingDat abase = "" ;
  1730           pr ivate stri ng _connec tionString RegistryDa tabase = " ";
  1731           pr ivate Guid  _guidId =  Guid.NewG uid();
  1732           pr ivate int  _dod_fragm ent_raw_da ta_id = 1;
  1733  
  1734           //  Settings
  1735           // private st ring efrDo DFragTestF ile = "";
  1736           pr ivate bool  efrDoDFra gLogAllTra nsactions  = false;
  1737           pr ivate stri ng efrDoDF ragCrsMviE tlName = " ";
  1738           pr ivate stri ng efrDoDF ragEdipiCo lumnName =  "";
  1739           pr ivate stri ng efrDoDF ragLabRepo rtColumnNa me = "";
  1740           pr ivate stri ng efrDoDF ragSsnColu mnName = " ";
  1741           pr ivate stri ng efrDoDF ragArchive Folder = " ";
  1742           pr ivate stri ng efrDoDF ragJpcKeyF ield = "";
  1743           pr ivate stri ng efrDoDF ragUsafKey Field = "" ;
  1744           pr ivate stri ng efrDoDF ragEmfKeyF ield = "";
  1745           pr ivate stri ng efrDoDF ragJpcLabD ateField =  "";
  1746           pr ivate stri ng efrDoDF ragUsafLab DateField  = "";
  1747           pr ivate stri ng efrDoDF ragEmfLabD ateField =  "";
  1748           pr ivate bool  efrDoDFra gTestMode  = false;
  1749  
  1750  
  1751           #r egion VSTA  generated  code
  1752           en um ScriptR esults
  1753           {
  1754                Success  = Microsof t.SqlServe r.Dts.Runt ime.DTSExe cResult.Su ccess,
  1755                Failure  = Microsof t.SqlServe r.Dts.Runt ime.DTSExe cResult.Fa ilure
  1756           };
  1757           #e ndregion
  1758  
  1759           pu blic void  Main()
  1760           {
  1761                logStrin g = "Begin ning DoDFr agmentScri ptTask. ";
  1762                Dts.Task Result = ( int)Script Results.Su ccess;
  1763  
  1764                // Set u p connecti on string  for Regist ryStaging  database
  1765                setupCon nectionStr ings();
  1766  
  1767                //writeL og();
  1768  
  1769                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1770                    setC onfigValue s();
  1771  
  1772                //writeL og();
  1773  
  1774                // Load  input file  data 
  1775                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1776                    load InputExcel Data();
  1777  
  1778                //writeL og();
  1779  
  1780                //// fin d columns  in input 
  1781                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1782                    setC olumns();
  1783  
  1784               // writeL og();
  1785  
  1786                //// Get  distinct  list of ed ipi's in t he input f ile
  1787                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1788                    setR awEdipisFr omInput();
  1789  
  1790               // writeL og();
  1791  
  1792                // Load  the CRS_MV I_Patient  table with  the EDIPI s
  1793                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1794                    inse rtRawEdipi sIntoDatab ase();
  1795  
  1796                //writeL og();
  1797  
  1798                // Execu te the CRS MVI packag e
  1799                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1800                    exec uteCRSMVIP ackage();
  1801  
  1802                    //wr iteLog();
  1803                if (efrD oDFragTest Mode)
  1804                    Mess ageBox.Sho w("Update  ICN and MV I status") ;
  1805  
  1806                // Retri eve the up dated EDIP Is
  1807                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1808                    retr ieveDataba seEdipis() ;
  1809  
  1810                //writeL og();
  1811  
  1812                // Gener ate an upd ated outpu t file to  continue p rocessing
  1813                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1814                    Gene rateUpdate dExcelFile ();
  1815  
  1816                //writeL og();
  1817  
  1818                // Save  updated ou tput file  to DoD_Fra gment_Raw_ Data
  1819                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1820                    Inse rtUpdatedE xcelFileTo Database() ;
  1821  
  1822                //writeL og();
  1823  
  1824                // Save  updated ou tput file  to DoD_Fra gment_Raw_ Data
  1825                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1826                    Inse rtFragRawD ata();
  1827  
  1828                //writeL og();
  1829  
  1830                // Save  updated ou tput file  to DoD_Fra gment_Raw_ Data
  1831                if (Dts. TaskResult  == (int)S criptResul ts.Success )
  1832                    Move FilesToArc hive();
  1833  
  1834                logStrin g += "COMP LETE.";
  1835  
  1836                writeLog ();      
  1837           }
  1838  
  1839           pr ivate void  MoveFiles ToArchive( )
  1840           {
  1841                try
  1842                {
  1843                    //Me ssageBox.S how("Start ing");
  1844  
  1845                    //Me ssageBox.S how("efrDo DFragArchi veFolder:  " + efrDoD FragArchiv eFolder);
  1846                    //Me ssageBox.S how("name:  " + Path. GetFileNam eWithoutEx tension(_i nputExcel. FullName)) ;
  1847  
  1848                    stri ng destina tionFileNa me = efrDo DFragArchi veFolder +  "\\" + Pa th.GetFile NameWithou tExtension (_inputExc el.FullNam e);
  1849                    dest inationFil eName += " _" + DateT ime.Now.To String("yy yyMMddHHmm ss");
  1850                    dest inationFil eName += P ath.GetExt ension(_in putExcel.F ullName);
  1851  
  1852  
  1853                    //Me ssageBox.S how("destf ilename: "  + destina tionFileNa me);
  1854  
  1855                    logS tring += " Archiving  inputExcel  to : " +  destinatio nFileName  + "; ";
  1856  
  1857                    File .Move(_inp utExcel.Fu llName, de stinationF ileName);
  1858  
  1859                    dest inationFil eName = ef rDoDFragAr chiveFolde r + "\\" +  Path.GetF ileName(_b ackupExcel .FullName) ;
  1860  
  1861                    //Me ssageBox.S how("destf ilename: "  + destina tionFileNa me);
  1862                    logS tring += " Archiving  backupExce l to : " +  destinati onFileName  + "; ";
  1863                    
  1864                    File .Move(_bac kupExcel.F ullName, d estination FileName);
  1865  
  1866  
  1867                    //Me ssageBox.S how("done  backup");
  1868                }
  1869                catch (E xception e x)
  1870                {
  1871                    logS tring += " ERROR: Mov eFilesToAr chive thre w exceptio n: " + ex. Message.To String() +  "; ";
  1872  
  1873                    // D on't fail  on this st ep, just m ove along  ...
  1874                    //Dt s.TaskResu lt = (int) ScriptResu lts.Failur e;
  1875                }
  1876  
  1877                logStrin g += "Comp leted Move FilesToArc hive; ";
  1878           }
  1879  
  1880           pr ivate void  InsertFra gRawData()
  1881           {
  1882                string s sn = "";
  1883                string e dipi = "";
  1884                string i cn = "";
  1885                List<str ing> inser tedEdipis  = new List <string>() ;
  1886                DataTabl e dodFragD ataTable =  GetDoDFra gDataTable ();
  1887                DateTime  labReport Date = new  DateTime( );
  1888                string s LabReportD ate = "";
  1889  
  1890                try
  1891                {
  1892                    logS tring += " Processing  " + _inpu tExcelRowC ount.ToStr ing() + "   rows; ";
  1893  
  1894                    // I terate thr ough the i nput file.  Pull out  relevant d ata values  and
  1895                    // i nsert reco rds into r aw data
  1896  
  1897                    usin g (ExcelPa ckage xlPa ckage = ne w ExcelPac kage(_inpu tExcel))
  1898                    {
  1899                         ExcelWorks heet input ExcelWorks heet = xlP ackage.Wor kbook.Work sheets[1];
  1900  
  1901                         // Skip he ader row
  1902                         for (int r owNum = 2  ; rowNum < = _inputEx celRowCoun t; rowNum+ +)
  1903                         {
  1904                             edipi  = inputExc elWorkshee t.Cell(row Num, _edip iColumn).V alue.ToStr ing();
  1905  
  1906                             if (!i nsertedEdi pis.Contai ns(edipi))
  1907                             {
  1908                                 if  (_ssnColu mn > -1)
  1909                                      ssn = in putExcelWo rksheet.Ce ll(rowNum,  _ssnColum n).Value.T oString();
  1910                                 el se
  1911                                      ssn = "" ;
  1912  
  1913                                 if  (validEdi piIcns.Try GetValue(e dipi, out  icn))
  1914                                 {
  1915                                      sLabRepo rtDate = i nputExcelW orksheet.C ell(rowNum , _labRepo rtDateColu mn).Value. ToString() ;
  1916  
  1917                                      if (inpu tExcelWork sheet.Cell (rowNum, _ labReportD ateColumn) .Value.Len gth > 0)
  1918                                      {
  1919                                          try
  1920                                          {
  1921                                               labReportD ate = Date Time.FromO ADate(
  1922                                                   Conver t.ToDouble (
  1923                                                       in putExcelWo rksheet.Ce ll(rowNum,  _labRepor tDateColum n).Value,
  1924                                                       Sy stem.Globa lization.C ultureInfo .Invariant Culture));
  1925  
  1926                                               //labRepor tDate = Da teTime.Now ;
  1927                                          }
  1928                                          catc h (Excepti on e)
  1929                                          {
  1930                                               logString  += "ERROR  with labRe portDate c onversion  on row: "  + rowNum.T oString() 
  1931                                                   + "  V alue: " +  inputExcel Worksheet. Cell(rowNu m, _labRep ortDateCol umn).Value ;
  1932                                               logString  += " Excep tion: " +  e.Message. ToString()  + "; ";
  1933                                          }
  1934                                      }
  1935                                      else
  1936                                      {
  1937                                          // C an't inser t nulls, d irectly, s o use a pl aceholder  and change  it to nul l afterwar ds
  1938  
  1939                                          labR eportDate  = new Date Time(1900,  01, 01);
  1940                                      }
  1941  
  1942                                      //logStr ing += "ss n: " +
  1943                                      //     s sn + " id:  " + dod_f ragment_ra w_data_id        // D OD_FRAGMEN T_RAW_DATA _ID
  1944                                      //     +  " inputda te: " + Da teTime.Now .ToString( )
  1945                                      //     +  " labrepo rtdate: "  + labRepor tDate.ToSt ring() +
  1946                                      //     "  icn: " +  icn + "    END";
  1947  
  1948                                      dodFragD ataTable.R ows.Add(
  1949                                           ssn                                / / PATIENTS SN
  1950                                          , _d od_fragmen t_raw_data _id        // DOD_FRA GMENT_RAW_ DATA_ID
  1951                                          , Da teTime.Now                     / / ORIGINAL INPUTDATE
  1952                                          , Da teTime.Now                     / / CREATED
  1953                                          , "D oD Frag ET L"                  / / CREATEDB Y
  1954                                          , Da teTime.Now                     / / UPDATED
  1955                                          , "D oD Frag ET L"                  / / UPDATEDB Y
  1956                                          , la bReportDat e                   / / LAB_REPO RT_DATE
  1957                                          , ic n                              / / PATIENT_ ICN
  1958                                      );
  1959                                 }
  1960                                 el se
  1961                                 {
  1962                                      logStrin g += "Inva lid EDIPI  found: " +  edipi + "    ICN ret urned: " +  icn;
  1963                                 };
  1964                             }
  1965                             else
  1966                             {
  1967                                 // logString  += "EDIPI  already ad ded: " + e dipi + ";  ";
  1968                             }
  1969                         }
  1970  
  1971                         logString  += "Added  " + dodFra gDataTable .Rows.Coun t.ToString () + " row s to dod f rag datata ble; ";
  1972  
  1973                         // Insert  the data t able into  the databa se
  1974                         insertDoD_ Fragment_D ata_Receiv e_Log(dodF ragDataTab le);
  1975                    }
  1976                }
  1977                catch (E xception e x)
  1978                {
  1979                    logS tring += " ERROR: Ins ertFragRaw Data threw  exception : " + ex.M essage.ToS tring() +  "; ";
  1980                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  1981                }
  1982  
  1983                logStrin g += "Comp leted Inse rtFragRawD ata; ";
  1984           }
  1985  
  1986           st atic DataT able GetDo DFragDataT able()
  1987           {
  1988                // Here  we create  a DataTabl e mimicing  our datab ase table
  1989                DataTabl e table =  new DataTa ble();
  1990                table.Co lumns.Add( "PATIENTSS N", typeof (string));
  1991                table.Co lumns.Add( "DOD_FRAGM ENT_RAW_DA TA_ID", ty peof(int)) ;
  1992                table.Co lumns.Add( "ORIGINALI NPUTDATE",  typeof(Da teTime));
  1993                table.Co lumns.Add( "CREATED",  typeof(Da teTime));
  1994                table.Co lumns.Add( "CREATEDBY ", typeof( string));
  1995                table.Co lumns.Add( "UPDATED",  typeof(Da teTime));
  1996                table.Co lumns.Add( "UPDATEDBY ", typeof( string));
  1997                table.Co lumns.Add( "LAB_Repor t_DATE", t ypeof(Date Time));             
  1998                table.Co lumns.Add( "PATIENT_I CN", typeo f(string)) ;
  1999  
  2000                return t able;
  2001           }
  2002  
  2003           pr ivate bool  InsertUpd atedExcelF ileToDatab ase()
  2004           {
  2005                logStrin g += "Begi n InsertUp datedExcel FileToData base";
  2006  
  2007                bool ret Value = tr ue;
  2008                string s ourceLab =  Path.GetF ileNameWit houtExtens ion(_input Excel.Full Name); //.  inputFile Name.Subst ring(0, in putFileNam e.IndexOf( '.'));
  2009  
  2010                try
  2011                {
  2012                    File Stream fSt ream = Fil e.OpenRead (_inputExc el.FullNam e);
  2013  
  2014                    byte [] content s = new by te[fStream .Length];
  2015                    fStr eam.Read(c ontents, 0 , (int)fSt ream.Lengt h);
  2016                    fStr eam.Close( );
  2017  
  2018                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringRegis tryDatabas e))
  2019                    {
  2020                         string sql Cmd = "";
  2021                         sqlCmd +=  "INSERT IN TO [EFR].[ DOD_FRAGME NT_RAW_DAT A] ";
  2022                         sqlCmd +=  "([SOURCE_ LAB],[FILE _DATA],[OR IGINAL_NAM E],[CONTEN T_TYPE]";
  2023                         sqlCmd +=  ",[CREATED BY],[CREAT ED],[UPDAT EDBY],[UPD ATED]) ";
  2024                         sqlCmd +=  "VALUES (" ;
  2025                         sqlCmd +=  "'" + sour ceLab + "' ";
  2026                         sqlCmd +=  ",@bytes";  
  2027                         sqlCmd +=  ",'" + inp utFileName  + "'";
  2028                         sqlCmd +=  ",'EXCEL'" ;
  2029                         sqlCmd +=  ",'DOD FRA GMENT ETL' ";
  2030                         sqlCmd +=  ",getdate( )";
  2031                         sqlCmd +=  ",'DOD FRA GMENT ETL' ";
  2032                         sqlCmd +=  ",getdate( ))";
  2033  
  2034                         logString  += sqlCmd  + "; ";
  2035  
  2036                         SqlCommand  cmd = new  SqlComman d(sqlCmd);
  2037                         cmd.Parame ters.Add(" @bytes", c ontents);
  2038                         cmd.Comman dType = Co mmandType. Text;
  2039                         cmd.Connec tion = con nection;
  2040                         connection .Open();
  2041  
  2042                         int numRow s = cmd.Ex ecuteNonQu ery();
  2043  
  2044                         logString  += "Insert ed: " + nu mRows.ToSt ring() + "  into efr. dod_fragme nt_raw_dat a; ";
  2045  
  2046                         // Capture  the id of  the recor d that was  inserted
  2047  
  2048                         if (numRow s == 1)
  2049                         {
  2050                             SqlCom mand comma nd = new S qlCommand( "select to p(1) [DOD_ FRAGMENT_R AW_DATA_ID ] from EFR .DOD_FRAGM ENT_RAW_DA TA order b y [DOD_FRA GMENT_RAW_ DATA_ID] d esc");
  2051                             comman d.CommandT ype = Comm andType.Te xt;
  2052                             comman d.Connecti on = conne ction;
  2053  
  2054                             _dod_f ragment_ra w_data_id  = Convert. ToInt32(co mmand.Exec uteScalar( ));
  2055  
  2056                             logStr ing += "do d_fragment _raw_data_ id: " + _d od_fragmen t_raw_data _id.ToStri ng() + ";  ";
  2057                         }
  2058                         else
  2059                         {
  2060                             Dts.Ta skResult =  (int)Scri ptResults. Failure;
  2061                             retVal ue = false ;
  2062                         }
  2063                    }                  
  2064                }
  2065                catch (E xception e x)
  2066                {
  2067                    logS tring += " ERROR: Ins ertUpdated ExcelFile  threw exce ption: " +  ex.Messag e.ToString () + "; ";
  2068                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2069                    retV alue = fal se;
  2070                }
  2071  
  2072                // Pause , prevent  file in us e error
  2073                System.T hreading.T hread.Slee p(10000);
  2074  
  2075                return r etValue;
  2076           }
  2077  
  2078           pr ivate void  GenerateU pdatedExce lFile()
  2079           {
  2080                string e dipi = "";
  2081                string k ey = "";
  2082                int firs tDataRow =  2;
  2083                List<str ing> inval idEdipis =  new List< string>();
  2084                List<str ing> inser tedEdipis  = new List <string>() ;
  2085  
  2086                try
  2087                {
  2088                    // S ave off th e input fi le to a ba ckup
  2089                    stri ng backupF ileName =  generateBa ckupExcelF ileName(_i nputExcel. FullName);
  2090  
  2091                    logS tring += " Copying in put file:  " + _input Excel.Full Name + " t o backup f ile: " + b ackupFileN ame + "; " ;
  2092                    File .Copy(_inp utExcel.Fu llName, ba ckupFileNa me, true);
  2093  
  2094                    logS tring += " Get handle  on backup  file; ";
  2095                    // G et a handl e on the b ackup file  for later  processin g
  2096                    _bac kupExcel =  new FileI nfo(backup FileName);
  2097  
  2098                    logS tring += " Remove inv alid rows;  ";
  2099  
  2100                    // I terate thr ough the o utput file . Delete r ows withou t a valid  EDIPI,
  2101                    // a nd insert  records fo r each row  with a va lid edipi,  but only  insert 
  2102                    // o ne record  per edipi.
  2103                    // W hat makes  this more  complicate d is the E MF files.  They have  12 rows
  2104                    // a ssociated  with a sin gle record , but only  one row h as the EDI PI. To han dle
  2105                    // t his, we ne ed to chec k the key  field for  each row,  and see if  that key
  2106                    // i s associat ed with an  EDIPI tha t is in th e ValidEDI PI list.
  2107  
  2108                    usin g (ExcelPa ckage xlPa ckage = ne w ExcelPac kage(_inpu tExcel))
  2109                    {
  2110                         ExcelWorks heet input ExcelWorks heet = xlP ackage.Wor kbook.Work sheets[1];
  2111  
  2112                         // Skip he ader row;  process ba ckwards so  we can de lete
  2113                         // JPC fil es have a  two-line h eader row;  need to a ccount for  this
  2114  
  2115                         if (inputF ileType ==  FileType. JPC)
  2116                             firstD ataRow = 3 ;
  2117  
  2118                         for (int r owNum = _i nputExcelR owCount; r owNum >= f irstDataRo w; rowNum- -)
  2119                         {
  2120                             // Get  the keyfi eld value
  2121                             key =  inputExcel Worksheet. Cell(rowNu m, _keyFie ldColumn). Value.ToSt ring();
  2122  
  2123                             //Mess ageBox.Sho w("Row: "  + rowNum.T oString()  + "  Key:  " + key);
  2124  
  2125                             // Che ck if that  key is as sociated w ith a vali d edipi
  2126                             if (ke yToEdipi.T ryGetValue (key, out  edipi))
  2127                             {
  2128                                 // edipi = in putExcelWo rksheet.Ce ll(rowNum,  _edipiCol umn).Value .ToString( );
  2129  
  2130                                 // MessageBox .Show("Fou nd EDIPI:  " + edipi) ;
  2131  
  2132                                 if  (!validEd ipiIcns.Co ntainsKey( edipi))
  2133                                 {
  2134                                      //if (ro wNum < 4)
  2135                                      //    lo gString +=  "Deleting  row: " +  inputExcel Worksheet. Cell(rowNu m, 1).Valu e.ToString () + "; ";
  2136  
  2137                                      //Messag eBox.Show( "Not Delet ing row");
  2138  
  2139                                      inputExc elWorkshee t.DeleteRo w(rowNum,  true);
  2140                                      _inputEx celRowCoun t--;
  2141                                 }
  2142                                 el se
  2143                                 {
  2144                                      //Messag eBox.Show( "Deleting  this row") ;
  2145                                 }
  2146                             }
  2147                             else
  2148                             {
  2149                                 // MessageBox .Show("No  EDIPI for  this key") ;
  2150                                 //  Delete th is row
  2151  
  2152                                 in putExcelWo rksheet.De leteRow(ro wNum, true );
  2153                                 _i nputExcelR owCount--;
  2154                             }
  2155                         }
  2156  
  2157                         inputExcel Worksheet. Save();
  2158  
  2159                         //xlPackag e.Save();
  2160                         //xlPackag e.Dispose( );
  2161  
  2162                         //MessageB ox.Show("a fter save: ");
  2163                    }
  2164  
  2165                    // P ause, I th ink there  is a timin g issue
  2166  
  2167                    //Me ssageBox.S how("befor e");
  2168                    Syst em.Threadi ng.Thread. Sleep(1000 0);
  2169                    //Me ssageBox.S how("after ");
  2170                }
  2171                catch (E xception e x)
  2172                {
  2173                    logS tring += " ERROR: Gen erateUpdat edExcelFil e threw ex ception: "  + ex.Mess age.ToStri ng() + ";  ";
  2174                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2175                }
  2176  
  2177                logStrin g += "Comp leted Gene rateUpdate dExcelFile ; ";
  2178           }
  2179  
  2180           pr ivate void  insertDoD _Fragment_ Data_Recei ve_Log(Dat aTable dt)
  2181           {
  2182                logStrin g += "Star ting inser tDoD_Fragm ent_Data_R eceive_Log ; ";
  2183  
  2184                try
  2185                {
  2186                    usin g (SqlBulk Copy sqlBu lkCopy = n ew SqlBulk Copy(_conn ectionStri ngRegistry Database))
  2187                    {
  2188                         sqlBulkCop y.Destinat ionTableNa me = "EFR. DoD_FRAGME NT_DATA_RE CEIVELOG";
  2189  
  2190                         foreach (v ar column  in dt.Colu mns)
  2191                         {
  2192                             logStr ing += col umn.ToStri ng() + "    ";
  2193  
  2194                             sqlBul kCopy.Colu mnMappings .Add(colum n.ToString (), column .ToString( ));
  2195                         }
  2196  
  2197                         sqlBulkCop y.WriteToS erver(dt);
  2198                    }
  2199  
  2200                    logS tring += " Inserted r ecords int o DoD_FRAG MENT_DATA_ RECEIVELOG ; ";
  2201  
  2202                    // N ow update  EFR.DoD_FR AGMENT_DAT A_RECEIVEL OG to make  the missi ng lab_rep ort_date's  null
  2203                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringRegis tryDatabas e))
  2204                    {
  2205                         string sql Cmd = "";
  2206                         sqlCmd +=  "UPDATE [E FR].[DoD_F RAGMENT_DA TA_RECEIVE LOG] ";
  2207                         sqlCmd +=  "SET [LAB_ Report_DAT E] = null  ";
  2208                         sqlCmd +=  "WHERE [LA B_Report_D ATE] = '19 00-01-01 0 0:00:00.00 0' ";
  2209  
  2210                         logString  += sqlCmd  + "; ";
  2211  
  2212                         SqlCommand  cmd = new  SqlComman d(sqlCmd);
  2213                         cmd.Comman dType = Co mmandType. Text;
  2214                         cmd.Connec tion = con nection;
  2215                         connection .Open();
  2216  
  2217                         int numRow s = cmd.Ex ecuteNonQu ery();
  2218  
  2219                         logString  += "Update d: " + num Rows.ToStr ing() + "  in efr.DoD _FRAGMENT_ DATA_RECEI VELOG; ";
  2220                    } 
  2221                }
  2222                catch (E xception e x)
  2223                {
  2224                    logS tring += " ERROR: ins ertDoD_Fra gment_Data _Receive_L og_Entry t hrew excep tion: " +  ex.Message .ToString( ) + "; ";
  2225                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2226                }
  2227  
  2228                logStrin g += "Endi ng insertD oD_Fragmen t_Data_Rec eive_Log;  ";
  2229           }
  2230  
  2231           pr ivate void  setupConn ectionStri ngs()
  2232           {
  2233                logStrin g += "Star ting setup Connection Strings();  ";
  2234  
  2235                _connect ionStringS tagingData base = "Da ta Source= ";
  2236                _connect ionStringS tagingData base += (s tring)Dts. Variables[ "User::Log gingServer "].Value;
  2237                _connect ionStringS tagingData base += "; Initial Ca talog=";
  2238                _connect ionStringS tagingData base += (s tring)Dts. Variables[ "User::Log gingDataba se"].Value ;
  2239                _connect ionStringS tagingData base += "; Integrated  Security= True";
  2240  
  2241                logStrin g += "conn ectionStri ngStagingD atabase: "  + _connec tionString StagingDat abase + ";  ";
  2242  
  2243  
  2244                _connect ionStringR egistryDat abase = "D ata Source =";
  2245                _connect ionStringR egistryDat abase += ( string)Dts .Variables ["User::Re gistryServ er"].Value ;
  2246                _connect ionStringR egistryDat abase += " ;Initial C atalog=";
  2247                _connect ionStringR egistryDat abase += ( string)Dts .Variables ["User::Re gistryData base"].Val ue;
  2248                _connect ionStringR egistryDat abase += " ;Integrate d Security =True";
  2249  
  2250                logStrin g += "conn ectionStri ngRegistry Database:  " + _conne ctionStrin gRegistryD atabase +  "; ";
  2251           }
  2252  
  2253           pr ivate void  loadInput ExcelData( )
  2254           {
  2255                logStrin g += "Star ting loadI nputExcelD ata(); ";
  2256  
  2257                try
  2258                {
  2259                    _inp utExcel =  new FileIn fo(Dts.Var iables["fi leName2"]. Value.ToSt ring());
  2260  
  2261                    logS tring += " Using pack age file:  " + Dts.Va riables["f ileName2"] .Value.ToS tring() +  "; ";
  2262  
  2263                    //}
  2264  
  2265                    inpu tFileName  = _inputEx cel.Name;
  2266  
  2267                    usin g (ExcelPa ckage xlPa ckage = ne w ExcelPac kage(_inpu tExcel))
  2268                    {
  2269                         _inputExce lWorksheet  = xlPacka ge.Workboo k.Workshee ts[1];
  2270  
  2271                         // Find th e number o f columns  in the wor ksheet. Co mpensate f or possibl e blank va lues in th e header
  2272                        
  2273                         int blankC ols = 0;
  2274  
  2275                         while (_in putExcelWo rksheet.Ce ll(1, _inp utExcelCol umnCount). Value.ToSt ring().Tri m() != ""  || blankCo ls < 5)
  2276                         {
  2277                             _input ExcelColum nCount++;
  2278  
  2279                             if (_i nputExcelW orksheet.C ell(1, _in putExcelCo lumnCount) .Value.ToS tring().Tr im() == "" )
  2280                             {
  2281                                 bl ankCols++;
  2282                             }
  2283                             else i f (blankCo ls > 0)
  2284                             {
  2285                                 bl ankCols =  0;
  2286                             }
  2287                         }
  2288                         _inputExce lColumnCou nt = _inpu tExcelColu mnCount -  5;
  2289                         logString  += "Column s in input ExcelData  file: " +  _inputExce lColumnCou nt.ToStrin g() + "; " ;
  2290  
  2291                         if (_input ExcelColum nCount ==  0)
  2292                         {
  2293                             logStr ing += "ER ROR: No Co lumns in i nputExcelD ata file;  ";
  2294                             Dts.Ta skResult =  (int)Scri ptResults. Failure;
  2295                         }
  2296                    }
  2297                }
  2298                catch (E xception e x)
  2299                {
  2300                    logS tring += " ERROR: loa dInputExce lData thre w exceptio n: " + ex. Message.To String() +  "; ";
  2301  
  2302                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2303                }
  2304           }
  2305  
  2306           pr ivate void  setRawEdi pisFromInp ut()
  2307           {
  2308                logStrin g += "Star ting setRa wEdipisFro mInput();  ";
  2309  
  2310                try
  2311                {
  2312                    stri ng edipi =  "";
  2313                    stri ng key = " ";
  2314                    int  notFoundCo unt = 0;
  2315                    int  rowNum = 1 ;
  2316                    bool  blankRow  = true;
  2317  
  2318                    // D on't proce ss header  row, compe nsate for  possible b lank rows
  2319                    whil e (notFoun dCount < 1 0)
  2320                    {
  2321                         // See if  this row i s blank
  2322                         blankRow =  true;
  2323                         for (int c  = 1; c <=  _inputExc elColumnCo unt; c++)
  2324                         {
  2325                             if (_i nputExcelW orksheet.C ell(rowNum ,c).ToStri ng().Trim( ) != "")
  2326                             {
  2327                                 bl ankRow = f alse;
  2328                                 br eak;
  2329                             }
  2330                         }
  2331  
  2332                         if (blankR ow)
  2333                         {
  2334                             notFou ndCount++;
  2335                             rowNum ++;
  2336                             contin ue;
  2337                         }
  2338                         else if (n otFoundCou nt != 0)
  2339                         {
  2340                             notFou ndCount =  0;
  2341                         }
  2342  
  2343                         // Not a b lank row,  so process
  2344                         edipi = _i nputExcelW orksheet.C ell(rowNum ,_edipiCol umn).ToStr ing().Trim ();
  2345                         key = _inp utExcelWor ksheet.Cel l(rowNum,_ keyFieldCo lumn).ToSt ring().Tri m();
  2346  
  2347                         // If we'v e already  checked th e edipi, n o need to  revalidate .
  2348                         if (!rawEd ipis.Conta ins(edipi)  && edipi. Trim().Len gth > 0 &&  edipi.ToL ower() !=  efrDoDFrag EdipiColum nName.ToLo wer())
  2349                         {
  2350                             rawEdi pis.Add(ed ipi);
  2351                             keyToE dipi.Add(k ey, edipi) ;
  2352                             //rawK eyFields.A dd(_inputE xcelWorksh eet.Cell(r owNum,_key FieldColum n).ToStrin g().Trim() );
  2353                         }
  2354  
  2355                         rowNum++;
  2356                    }
  2357  
  2358                    _inp utExcelRow Count = ro wNum - 11;
  2359  
  2360                    if ( rawEdipis. Count > 0)
  2361                    {
  2362                         logString  += "rawEdi pis: " + r awEdipis.C ount.ToStr ing() + ";  ";
  2363                         logString  += "RowCou nt: " + _i nputExcelR owCount.To String() +  "; ";
  2364                    }
  2365                    else
  2366                    {
  2367                         logString  += "ERROR:  No rawEdi pis found.  ";
  2368                         Dts.TaskRe sult = (in t)ScriptRe sults.Fail ure;
  2369                    }
  2370                }
  2371                catch (E xception e x)
  2372                {
  2373                    logS tring += " ERROR: set RawEdipisF romInput t hrew excep tion: " +  ex.Message .ToString( ) + "; ";
  2374                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2375                }
  2376           }
  2377  
  2378           pr ivate void  setColumn s()
  2379           {
  2380                logStrin g += "Star ting setCo lumns(); " ;
  2381  
  2382                string c olumnName  = "";
  2383  
  2384                try
  2385                {
  2386                    // E ach lab us es a diffe rent strin g for the  filename.                  
  2387                    if ( _inputExce l.Name.ToU pper().Con tains("JPC "))
  2388                    {
  2389                         inputFileT ype = File Type.JPC;
  2390                         efrDoDFrag LabReportC olumnName  = efrDoDFr agJpcLabDa teField;
  2391                         _keyFieldC olumnName  = efrDoDFr agJpcKeyFi eld;
  2392                    }
  2393                    else  if (_inpu tExcel.Nam e.ToUpper( ).Contains ("EMF"))
  2394                    {
  2395                         inputFileT ype = File Type.EMF;
  2396                         efrDoDFrag LabReportC olumnName  = efrDoDFr agEmfLabDa teField; / / "Lab Rep ort Date";
  2397                         _keyFieldC olumnName  = efrDoDFr agEmfKeyFi eld;
  2398                    }
  2399                    else  if (_inpu tExcel.Nam e.ToUpper( ).Contains ("USAF"))
  2400                    {
  2401                         inputFileT ype = File Type.USAF;
  2402                         efrDoDFrag LabReportC olumnName  = efrDoDFr agUsafLabD ateField;
  2403                         _keyFieldC olumnName  = efrDoDFr agUsafKeyF ield;
  2404                    }
  2405                    else
  2406                    {
  2407                         logString  += "ERROR:  Could not  determine  input fil e type due  to filena me issue;  ";
  2408                         Dts.TaskRe sult = (in t)ScriptRe sults.Fail ure;
  2409                    }
  2410  
  2411                    //Me ssageBox.S how("EfrDo dFraglabRe portcolumn name: " +  efrDoDFrag LabReportC olumnName) ;
  2412  
  2413                    for  (int c = 1 ; c <= _in putExcelCo lumnCount;  c++)
  2414                    {
  2415                         columnName  = _inputE xcelWorksh eet.Cell(1 , c).Value .ToString( ).ToLower( );
  2416                        
  2417                         //MessageB ox.Show("C olumn: " +  columnNam e);
  2418  
  2419                         if (column Name == ef rDoDFragEd ipiColumnN ame.ToLowe r())
  2420                         {
  2421                             _edipi Column = c ;
  2422                         }
  2423                         else if (c olumnName  == efrDoDF ragLabRepo rtColumnNa me.ToLower ())
  2424                         {
  2425                             _labRe portDateCo lumn = c;
  2426                         }
  2427                         else if (c olumnName  == efrDoDF ragSsnColu mnName.ToL ower())
  2428                         {
  2429                             _ssnCo lumn = c;
  2430                         }
  2431                         else if (c olumnName  == _keyFie ldColumnNa me.ToLower ())
  2432                         {
  2433                             _keyFi eldColumn  = c;
  2434                         }
  2435                    }
  2436  
  2437                    if ( _edipiColu mn > -1)
  2438                    {
  2439                         logString  += "EDIPI  column: "  + _edipiCo lumn.ToStr ing() + ";  ";
  2440                    }
  2441                    else
  2442                    {
  2443                         logString  += "ERROR:  EDIPI col umn not fo und;";
  2444                         Dts.TaskRe sult = (in t)ScriptRe sults.Fail ure;
  2445                    }
  2446  
  2447                    if ( _labReport DateColumn  > -1)
  2448                    {
  2449                         logString  += "LabRep ortDate co lumn: " +  _labReport DateColumn .ToString( ) + "; ";
  2450                    }
  2451                    else
  2452                    {
  2453                         logString  += "ERROR:  LabReport Date colum n not foun d;";
  2454                         Dts.TaskRe sult = (in t)ScriptRe sults.Fail ure;
  2455                    }
  2456  
  2457                    if ( _ssnColumn  > -1)
  2458                    {
  2459                         logString  += "ssn co lumn: " +  _ssnColumn .ToString( ) + "; ";
  2460                    }
  2461                    else
  2462                    {
  2463                         logString  += "WARNIN G: ssn col umn not fo und;"; //  this is no t an error
  2464                    }
  2465                }
  2466                catch (E xception e x)
  2467                {
  2468                    logS tring += " ERROR: set EdipiColum n threw ex ception: "  + ex.Mess age.ToStri ng() + ";  ";
  2469                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2470                }
  2471           }
  2472  
  2473           pr ivate void  executeCR SMVIPackag e()
  2474           {
  2475                // Run s cripttask
  2476                // http: //benefic. net/run-ss is-child-p ackages-wi th-script- task/ 
  2477                logStrin g += "Star t running  CRS_MVI sc ript task;  ";
  2478  
  2479                try
  2480                {
  2481                    //St ring packa geLocation  = Dts.Con nections[e frDoDFragC rsMviEtlNa me].Connec tionString ;
  2482                    Stri ng package Location =  efrDoDFra gCrsMviEtl Name;
  2483                    Pack age oPkg;
  2484                    Micr osoft.SqlS erver.Dts. Runtime.Ap plication  oApp = new  Microsoft .SqlServer .Dts.Runti me.Applica tion();
  2485                    Chil dEventList ener event Listener =  new Child EventListe ner(Dts);
  2486  
  2487                    // L oad child  package.
  2488                    // L oadPackage  = file, L oadFromDts Server = p ackage sto re, or Loa dFromSqlSe rver = SQL  package s ources.
  2489                    //oP kg = oApp. LoadPackag e(packageL ocation, e ventListen er);
  2490                    oPkg  = oApp.Lo adFromSqlS erver(pack ageLocatio n, (string )Dts.Varia bles["User ::Registry Server"].V alue, null , null, nu ll);
  2491  
  2492                    // S et child p ackage var iables.
  2493                    // N OTE: Packa ge configu ration var iables are  set at pa ckage exec ution time , so make  sure the v ariables
  2494                    //        you'r e setting  here aren' t going to  be overwr itten by a  package c onfigurati on.
  2495  
  2496                    //Wr iteVariabl e("User::R unMode", " Main", oPk g);
  2497                    //Pk gVarsSet(o Pkg, "User ::loadYear ,User::loa dMonth");
  2498  
  2499                    // E xecute chi ld package .
  2500                    Dts. TaskResult  = (int)oP kg.Execute (null, nul l, eventLi stener, nu ll, null);
  2501  
  2502                    if ( Dts.TaskRe sult == (i nt)DTSExec Result.Fai lure)
  2503                    {
  2504                         logString  += "ERROR:  Failure r unning chi ld package . ";
  2505                    }
  2506                }
  2507                catch (E xception e x)
  2508                {
  2509                    logS tring += " ERROR: Exc eption in  executeCRS MVIPackage (): " + ex .Message.T oString()  + "; ";
  2510                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2511                }
  2512  
  2513                logStrin g += "Comp leted runn ing CRS_MV I script t ask; ";
  2514           }
  2515  
  2516           pr ivate stri ng generat eBackupExc elFileName (string in putExcelFi le)
  2517           {
  2518                string n ewExcelFil eName = "" ;
  2519  
  2520                try
  2521                {
  2522                    stri ng filePat hName = in putExcelFi le;
  2523                    newE xcelFileNa me = Path. GetDirecto ryName(fil ePathName)  +
  2524                         "\\" +
  2525                         Path.GetFi leNameWith outExtensi on(filePat hName) + " _original_ " +
  2526                         DateTime.N ow.ToStrin g("yyyyMMd dHHmmss")  + // "_Bac kup" +
  2527                       P ath.GetExt ension(fil ePathName) ;
  2528  
  2529                    int  fileIncrem ent = 1;
  2530                    whil e (File.Ex ists(newEx celFileNam e))
  2531                    {
  2532                         newExcelFi leName = P ath.GetDir ectoryName (filePathN ame) +
  2533                         "\\" +
  2534                         Path.GetFi leNameWith outExtensi on(filePat hName) + " _original_ " +
  2535                         DateTime.N ow.ToStrin g("yyyyMMd dHHmmss")  + "_" +
  2536                         fileIncrem ent.ToStri ng() +
  2537                       P ath.GetExt ension(fil ePathName) ;
  2538  
  2539                         fileIncrem ent++;
  2540                    }
  2541  
  2542                    logS tring += " Source Fil e: " + inp utExcelFil e + "; " +  "Backup F ile: " + n ewExcelFil eName + ";  ";
  2543                }
  2544                catch (E xception e x)
  2545                {
  2546                    logS tring += " ERROR: gen erateOutpu tExcelFile Name threw  exception : " + ex.M essage.ToS tring() +  "; ";
  2547                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2548                }
  2549  
  2550                return n ewExcelFil eName;
  2551           }
  2552  
  2553           pr ivate bool  retrieveD atabaseEdi pis()
  2554           {
  2555                bool ret Value = tr ue;
  2556  
  2557                try
  2558                {
  2559                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringStagi ngDatabase ))
  2560                    {
  2561                         string sql Cmd = "";
  2562                         sqlCmd +=  "select Pa tient_Edip i, MVI_PAT IENT_ICN_N I_DOD from  etl_crs_m vi_patient  ";
  2563                         sqlCmd +=  "where MVI _Response  = 'OK' ";
  2564                         sqlCmd +=  "and creat edby = 'Do DFragETL'  ";
  2565                         sqlCmd +=  "and RUN_I DENTIFIER  = '" + _gu idId.ToStr ing() + "'  ";
  2566                         sqlCmd +=  "and MVI_P ATIENT_ICN _NI_DOD is  not null" ;
  2567                         logString  += sqlCmd  + "; ";
  2568  
  2569                         SqlCommand  cmd = new  SqlComman d(sqlCmd);
  2570                         cmd.Comman dType = Co mmandType. Text;
  2571                         cmd.Connec tion = con nection;
  2572                         connection .Open();
  2573  
  2574                         SqlDataRea der reader  = cmd.Exe cuteReader ();
  2575  
  2576                         while (rea der.Read() )
  2577                         {
  2578                             validE dipiIcns.A dd(reader. GetString( reader.Get Ordinal("P atient_Edi pi")), rea der.GetStr ing(reader .GetOrdina l("MVI_PAT IENT_ICN_N I_DOD")));
  2579                         }
  2580  
  2581                         logString  += "# vali d edipis:  " + validE dipiIcns.C ount.ToStr ing() + ";  ";
  2582                    }
  2583  
  2584                    if ( validEdipi Icns.Count  == 0)
  2585                    {
  2586                         logString  += "WARNIN G: NO VALI D EDIPIS;  ";
  2587                         //Dts.Task Result = ( int)Script Results.Fa ilure;
  2588                         retValue =  false;
  2589                    }
  2590                }
  2591                catch (E xception e x)
  2592                {
  2593                    logS tring += " ERROR: ret rieveDatab aseEdipis  threw exce ption: " +  ex.Messag e.ToString () + "; ";
  2594                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2595                    retV alue = fal se;
  2596                }
  2597  
  2598                return r etValue;
  2599           }
  2600  
  2601           pr ivate void  insertRaw EdipisInto Database()
  2602           {
  2603                logStrin g += "Star ting inser tRawEdipis IntoDataba se(); ";
  2604  
  2605                string s ql = "";
  2606                sql += " INSERT INT O ETL_CRS_ MVI_Patien t ";
  2607                sql += " ([PATIENT_ EDIPI],[RU N_IDENTIFI ER],";
  2608                sql += " [CREATED], [CREATEDBY ],[UPDATED ],[UPDATED BY]";
  2609                sql += " ) ";
  2610                sql += " VALUES (@e dipi, ";
  2611                sql += " '" + _guid Id.ToStrin g() + "',  getdate(),  'DoDFragE TL', getda te(), 'DoD FragETL')" ;
  2612  
  2613                logStrin g += "Inse rt edipis  sql: " + s ql + "; ";
  2614                int coun ter = 0;
  2615  
  2616                try
  2617                {
  2618                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringStagi ngDatabase ))
  2619                    {
  2620  
  2621                         SqlCommand  cmd = new  SqlComman d(sql);
  2622                         cmd.Comman dType = Co mmandType. Text;
  2623                         cmd.Connec tion = con nection;
  2624  
  2625                         foreach (s tring edip i in rawEd ipis)
  2626                         {
  2627                             cmd.Pa rameters.C lear();
  2628  
  2629                             cmd.Pa rameters.A ddWithValu e("@edipi" , edipi);
  2630  
  2631                             connec tion.Open( );
  2632                             cmd.Ex ecuteNonQu ery();
  2633                             connec tion.Close ();
  2634  
  2635                             counte r++;
  2636                         }
  2637                    }
  2638  
  2639                    logS tring += " Finished i nserting e dipis: " +  counter.T oString()  + "; ";
  2640                }
  2641                catch (E xception e )
  2642                {
  2643                    logS tring += " ERROR: Exc eption wri ting edipi s to the d atabase: "  + e.Inner Exception. ToString() ;
  2644                    Dts. TaskResult  = (int)Sc riptResult s.Failure;
  2645                }
  2646           }
  2647  
  2648           pr ivate void  setConfig Values()
  2649           {
  2650                logStrin g += "Star ting setCo nfigValues (); ";
  2651  
  2652                try
  2653                {
  2654                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringRegis tryDatabas e))
  2655                    {
  2656                         string que ryString =  "select [ NAME], [va lue] from  CRS_SETTIN GS where [ NAME] like  ('EfrDoDF rag%')";
  2657                         DataTable  results =  new DataTa ble();
  2658  
  2659                         using (Sql Command co mmand = ne w SqlComma nd(querySt ring, conn ection))
  2660                         {
  2661                             using  (SqlDataAd apter data Adapter =  new SqlDat aAdapter(c ommand))
  2662                             {
  2663                                 da taAdapter. Fill(resul ts);
  2664  
  2665                                 fo reach (Dat aRow dr in  results.R ows)
  2666                                 {
  2667                                      if (dr[0 ] != null)
  2668                                      {
  2669                                          if ( dr[0].ToSt ring() ==  "EfrDoDFra gTestMode"  && dr[1]  != null)
  2670                                          {
  2671                                               if (dr[1]. ToString() .Trim().To Lower() ==  "true")
  2672                                                   efrDoD FragTestMo de = true;
  2673                                          }
  2674                                          //el se if (dr[ 0].ToStrin g() == "Ef rDoDFragTe stFile" &&  dr[1] !=  null)
  2675                                          //{
  2676                                          //     efrDoDFr agTestFile  = dr[1].T oString();
  2677                                          //}
  2678                                          if ( dr[0].ToSt ring() ==  "EfrDoDFra gLogAllTra nsactions"  && dr[1]  != null)
  2679                                          {
  2680                                               if (dr[1]. ToString() .Trim().To Lower() ==  "true")
  2681                                                   efrDoD FragLogAll Transactio ns = true;
  2682                                          }
  2683                                          else  if (dr[0] .ToString( ) == "EfrD oDFragCrsM viEtlName"  && dr[1]  != null)
  2684                                          {
  2685                                               efrDoDFrag CrsMviEtlN ame = dr[1 ].ToString ();
  2686                                          }
  2687                                          else  if (dr[0] .ToString( ) == "EfrD oDFragEdip iColumnNam e" && dr[1 ] != null)
  2688                                          {
  2689                                               efrDoDFrag EdipiColum nName = dr [1].ToStri ng();
  2690                                          }
  2691                                          else  if (dr[0] .ToString( ) == "EfrD oDFragLabR eportColum nName" &&  dr[1] != n ull)
  2692                                          {
  2693                                               efrDoDFrag LabReportC olumnName  = dr[1].To String();
  2694                                          }
  2695                                          else  if (dr[0] .ToString( ) == "EfrD oDFragSsnC olumnName"  && dr[1]  != null)
  2696                                          {
  2697                                               efrDoDFrag SsnColumnN ame = dr[1 ].ToString ();
  2698                                          }
  2699                                          else  if (dr[0] .ToString( ) == "EfrD oDFragArch iveFolder"  && dr[1]  != null)
  2700                                          {
  2701                                               efrDoDFrag ArchiveFol der = dr[1 ].ToString ();
  2702                                          }
  2703                                          else  if (dr[0] .ToString( ) == "EfrD oDFragJpcK eyField" & & dr[1] !=  null)
  2704                                          {
  2705                                               efrDoDFrag JpcKeyFiel d = dr[1]. ToString() ;
  2706                                          }
  2707                                          else  if (dr[0] .ToString( ) == "EfrD oDFragUsaf KeyField"  && dr[1] ! = null)
  2708                                          {
  2709                                               efrDoDFrag UsafKeyFie ld = dr[1] .ToString( );
  2710                                          }
  2711                                          else  if (dr[0] .ToString( ) == "EfrD oDFragEmfK eyField" & & dr[1] !=  null)
  2712                                          {
  2713                                               efrDoDFrag EmfKeyFiel d = dr[1]. ToString() ;
  2714                                          }
  2715                                          else  if (dr[0] .ToString( ) == "EfrD oDFragJpcL abDateFiel d" && dr[1 ] != null)
  2716                                          {
  2717                                               efrDoDFrag JpcLabDate Field = dr [1].ToStri ng();
  2718                                          }
  2719                                          else  if (dr[0] .ToString( ) == "EfrD oDFragUsaf LabDateFie ld" && dr[ 1] != null )
  2720                                          {
  2721                                               efrDoDFrag UsafLabDat eField = d r[1].ToStr ing();
  2722                                          }
  2723                                          else  if (dr[0] .ToString( ) == "EfrD oDFragEmfL abDateFiel d" && dr[1 ] != null)
  2724                                          {
  2725                                               efrDoDFrag EmfLabDate Field = dr [1].ToStri ng();
  2726                                          }
  2727                                      }
  2728                                 }
  2729                             }
  2730                         }
  2731                    }
  2732  
  2733                    //lo gString +=  "EfrDoDFr agTestMode : " + efrD oDFragTest Mode + ";  ";
  2734                    //lo gString +=  "EfrDoDFr agTestFold er: " + ef rDoDFragTe stFile + " ; ";
  2735                    logS tring += " Dts.Variab les[User:: fileName2] .Value: "  + Dts.Vari ables["Use r::fileNam e2"].Value .ToString( ) + "; ";
  2736                    logS tring += " EfrDoDFrag LogAllTran sactions:  " + efrDoD FragLogAll Transactio ns + "; ";
  2737                    logS tring += " EfrDoDFrag CrsMviEtlN ame: " + e frDoDFragC rsMviEtlNa me + "; ";
  2738                    logS tring += " EfrDoDFrag EdipiColum nName: " +  efrDoDFra gEdipiColu mnName + " ; ";
  2739                    logS tring += " efrDoDFrag LabReportC olumnName:  " + efrDo DFragLabRe portColumn Name + ";  ";
  2740                    logS tring += " efrDoDFrag SsnColumnN ame: " + e frDoDFragS snColumnNa me + "; ";
  2741                    logS tring += " efrDoDFrag ArchiveFol der: " + e frDoDFragA rchiveFold er + "; ";
  2742                    logS tring += " EfrDoDFrag JpcKeyFiel d: " + efr DoDFragJpc KeyField +  "; ";
  2743                    logS tring += " EfrDoDFrag UsafKeyFie ld: " + ef rDoDFragUs afKeyField  + "; ";
  2744                    logS tring += " EfrDoDFrag EmfKeyFiel d: " + efr DoDFragEmf KeyField +  "; ";
  2745                    logS tring += " EfrDoDFrag JpcLabDate Field: " +  efrDoDFra gJpcLabDat eField + " ; ";
  2746                    logS tring += " EfrDoDFrag UsafLabDat eField: "  + efrDoDFr agUsafLabD ateField +  "; ";
  2747                    logS tring += " EfrDoDFrag EmfLabDate Field: " +  efrDoDFra gEmfLabDat eField + " ; ";
  2748  
  2749                    //Dt s.Variable s["RunIden tifier"].V alue = gui dId.ToStri ng();
  2750  
  2751                    logS tring += " guidId: "  + _guidId. ToString()  + "; ";
  2752                }
  2753                catch (E xception e )
  2754                {
  2755                    logS tring += " Error gett ing config  values: "  + e.Messa ge;
  2756                }
  2757           }
  2758  
  2759           pr ivate void  writeLog( )
  2760           {
  2761                try
  2762                {
  2763                    usin g (SqlConn ection con nection =  new SqlCon nection(_c onnectionS tringStagi ngDatabase ))
  2764                    {
  2765                         SqlCommand  cmd = new  SqlComman d("INSERT  INTO ETL_E rrorLogs ( PackageID,  ProcessID , ErrorNum ber, Error Descriptio n, ErrorTi me) VALUES  (@Package ID, @Proce ssID, @Err orNumber,  @ErrorDesc ription, g etdate())" );
  2766                         cmd.Comman dType = Co mmandType. Text;
  2767                         cmd.Connec tion = con nection;
  2768                         cmd.Parame ters.AddWi thValue("@ PackageID" , 0);
  2769                         cmd.Parame ters.AddWi thValue("@ ProcessID" , 0);
  2770                         cmd.Parame ters.AddWi thValue("@ ErrorNumbe r", 0);
  2771                         cmd.Parame ters.AddWi thValue("@ ErrorDescr iption", " DoD Fragme nt ETL: "  + logStrin g);
  2772                         connection .Open();
  2773                         cmd.Execut eNonQuery( );
  2774                    }
  2775  
  2776                    logS tring = "" ;
  2777                }
  2778                catch (E xception e )
  2779                {
  2780                    // n ot much to  do if we  can't writ e to the d atabase .. .
  2781                }
  2782           }
  2783       }
  2784  
  2785       enum F ileType
  2786       {
  2787           JP C,
  2788           US AF,
  2789           EM F,
  2790           UN K
  2791       }
  2792  
  2793  
  2794       #regio n ChildEve ntListener  - A custo m event li stener to  re-throw c hild packa ge events  in the mas ter.
  2795       ////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// ////////// /////
  2796       // Chi ldEventLis tener
  2797       //   A  custom Ev entListene r that re- throws chi ld package  events in  the maste r package.
  2798       //   U seful when  running a  master pa ckage for  identifyin g why a ch ild packag e failed i n the erro r
  2799       //   m essages vi ewable in  visual stu dio, SQL a gent job h istory log  file view er, etc.
  2800       //
  2801       class  ChildEvent Listener :  DefaultEv ents
  2802       {
  2803           //  The const ructor
  2804           //  Takes a d ts as an a rgument so  errors ca n be re-th rown again st the cur rently run ning dts.
  2805           Mi crosoft.Sq lServer.Dt s.Tasks.Sc riptTask.S criptObjec tModel dts ;
  2806           pu blic Child EventListe ner(Micros oft.SqlSer ver.Dts.Ta sks.Script Task.Scrip tObjectMod el dts)
  2807           {
  2808                this.dts  = dts;
  2809           }
  2810  
  2811           pu blic overr ide bool O nError(Dts Object sou rce, int e rrorCode,  string sub Component,  string de scription
  2812                                               , string h elpFile, i nt helpCon text, stri ng idofInt erfaceWith Error)
  2813           {
  2814                dts.Even ts.FireErr or(errorCo de, subCom ponent, de scription,  helpFile,  helpConte xt);
  2815                // Conti nue execut ing the ta sk even th ough an er ror was tr iggered.
  2816                return f alse;
  2817           }
  2818  
  2819           pu blic overr ide void O nInformati on(DtsObje ct source,  int infor mationCode , string s ubComponen t
  2820                                                   , stri ng descrip tion, stri ng helpFil e, int hel pContext
  2821                                                   , stri ng idofInt erfaceWith Error, ref  bool fire Again)
  2822           {
  2823                dts.Even ts.FireInf ormation(i nformation Code, subC omponent,  descriptio n, helpFil e, helpCon text, ref  fireAgain) ;
  2824           }
  2825  
  2826           pu blic overr ide void O nWarning(D tsObject s ource, int  warningCo de, string  subCompon ent, strin g descript ion
  2827                                               , string h elpFile, i nt helpCon text, stri ng idofInt erfaceWith Error)
  2828           {
  2829                dts.Even ts.FireWar ning(warni ngCode, su bComponent , descript ion, helpF ile, helpC ontext);
  2830           }
  2831       }
  2832       #endre gion //Chi ldEventLis tener - A  custom eve nt listene r to re-th row child  package ev ents in th e master.
  2833   }]]></Proj ectItem>
  2834                      <P rojectItem
  2835                         Name="Exce lWorkbook. cs"
  2836                         Encoding=" UTF8"><![C DATA[/* 
  2837    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  2838    * 
  2839    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  2840    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  2841    * 
  2842    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  2843    * mailto: dr.john.tu nnicliffe@ btinternet .com
  2844    * All rig hts reserv ed.
  2845    * 
  2846    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  2847    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  2848    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  2849    * 
  2850    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  2851    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  2852    * 
  2853    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  2854    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  2855    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  2856    * 
  2857    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  2858    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  2859    */
  2860  
  2861   /*
  2862    * Code ch ange notes :
  2863    * 
  2864    * Author                                                             Change                                               Date
  2865    * ******* ********** ********** ********** ********** ********** ********** ********** *
  2866    * John Tu nnicliffe               Initial  Release          01-J an-2007
  2867    * ******* ********** ********** ********** ********** ********** ********** ********** *
  2868    */
  2869   using Syst em;
  2870   using Syst em.Xml;
  2871   using Syst em.IO;
  2872   using Syst em.IO.Pack aging;
  2873  
  2874   namespace  OfficeOpen Xml
  2875   {
  2876       #regio n Public E num ExcelC alcMode
  2877       /// <s ummary>
  2878       /// Re presents t he possibl e workbook  calculati on modes
  2879       /// </ summary>
  2880       public  enum Exce lCalcMode
  2881       {
  2882           // / <summary >
  2883           // / Set the  calculatio n mode to  Automatic
  2884           // / </summar y>
  2885           Au tomatic,
  2886           // / <summary >
  2887           // / Set the  calculatio n mode to  AutomaticN oTable
  2888           // / </summar y>
  2889           Au tomaticNoT able,
  2890           // / <summary >
  2891           // / Set the  calculatio n mode to  Manual
  2892           // / </summar y>
  2893           Ma nual
  2894       }
  2895       #endre gion
  2896  
  2897       /// <s ummary>
  2898       /// Re presents t he Excel w orkbook an d provides  access to  all the 
  2899       /// do cument pro perties an d workshee ts within  the workbo ok.
  2900       /// </ summary>
  2901       public  class Exc elWorkbook
  2902       {
  2903           #r egion Priv ate Proper ties
  2904           pr ivate Exce lPackage _ xlPackage;
  2905           //  we have t o hard cod e these ur is as we n eed them t o create a  workbook  from scrat ch
  2906           pr ivate Uri  _uriWorkbo ok = new U ri("/xl/wo rkbook.xml ", UriKind .Relative) ;
  2907           pr ivate Uri  _uriShared Strings =  new Uri("/ xl/sharedS trings.xml ", UriKind .Relative) ;
  2908           pr ivate Uri  _uriStyles  = new Uri ("/xl/styl es.xml", U riKind.Rel ative);
  2909           pr ivate Uri  _uriCalcCh ain = new  Uri("/xl/c alcChain.x ml", UriKi nd.Relativ e);
  2910  
  2911           pr ivate XmlD ocument _x mlWorkbook ;
  2912           pr ivate XmlD ocument _x mlSharedSt rings;
  2913           pr ivate XmlD ocument _x mlStyles;
  2914  
  2915           pr ivate Exce lWorksheet s _workshe ets;
  2916           pr ivate XmlN amespaceMa nager _nsM anager;
  2917           pr ivate Offi ceProperti es _proper ties;
  2918           #e ndregion
  2919  
  2920           #r egion Exce lWorkbook  Constructo r
  2921           // / <summary >
  2922           // / Creates  a new inst ance of th e ExcelWor kbook clas s.  For in ternal use  only!
  2923           // / </summar y>
  2924           // / <param n ame="xlPac kage">The  parent pac kage</para m>
  2925           pr otected in ternal Exc elWorkbook (ExcelPack age xlPack age)
  2926           {
  2927                _xlPacka ge = xlPac kage;
  2928                //  Crea te a Names paceManage r to handl e the defa ult namesp ace, 
  2929                //  and  create a p refix for  the defaul t namespac e:
  2930                NameTabl e nt = new  NameTable ();
  2931                _nsManag er = new X mlNamespac eManager(n t);
  2932                _nsManag er.AddName space("d",  ExcelPack age.schema Main);
  2933           }
  2934           #e ndregion
  2935  
  2936           #r egion Work sheets
  2937           // / <summary >
  2938           // / Provides  access to  all the w orksheets  in the wor kbook.
  2939           // / </summar y>
  2940           pu blic Excel Worksheets  Worksheet s
  2941           {
  2942                get
  2943                {
  2944                    if ( _worksheet s == null)
  2945                    {
  2946                         _worksheet s = new Ex celWorkshe ets(_xlPac kage);
  2947                    }
  2948                    retu rn (_works heets);
  2949                }
  2950           }
  2951           #e ndregion
  2952  
  2953           #r egion Work book Prope rties
  2954           // / <summary >
  2955           // / The Uri  to the wor kbook in t he package
  2956           // / </summar y>
  2957           pr otected in ternal Uri  WorkbookU ri { get {  return (_ uriWorkboo k); } }
  2958           // / <summary >
  2959           // / The Uri  to the sty les.xml in  the packa ge
  2960           // / </summar y>
  2961           pr otected in ternal Uri  StylesUri  { get { r eturn (_ur iStyles);  } }
  2962           // / <summary >
  2963           // / The Uri  to the sha red string s file
  2964           // / </summar y>
  2965           pr otected in ternal Uri  SharedStr ingsUri {  get { retu rn (_uriSh aredString s); } }
  2966           // / <summary >
  2967           // / Returns  a referenc e to the w orkbook's  part withi n the pack age
  2968           // / </summar y>
  2969           pr otected in ternal Pac kagePart P art { get  { return ( _xlPackage .Package.G etPart(Wor kbookUri)) ; } }
  2970  
  2971           #r egion Work bookXml
  2972           // / <summary >
  2973           // / Provides  access to  the XML d ata repres enting the  workbook  in the pac kage.
  2974           // / </summar y>
  2975           pu blic XmlDo cument Wor kbookXml
  2976           {
  2977                get
  2978                {
  2979                    if ( _xmlWorkbo ok == null )
  2980                    {
  2981                         if (_xlPac kage.Packa ge.PartExi sts(Workbo okUri))
  2982                             _xmlWo rkbook = _ xlPackage. GetXmlFrom Uri(Workbo okUri);
  2983                         else
  2984                         {
  2985                             // cre ate a new  workbook p art and ad d to the p ackage
  2986                             Packag ePart part Workbook =  _xlPackag e.Package. CreatePart (WorkbookU ri, @"appl ication/vn d.openxmlf ormats-off icedocumen t.spreadsh eetml.shee t.main+xml ");
  2987  
  2988                             // cre ate the wo rkbook
  2989                             _xmlWo rkbook = n ew XmlDocu ment();
  2990                             // cre ate the wo rkbook tag
  2991                             XmlEle ment tagWo rkbook = _ xmlWorkboo k.CreateEl ement("wor kbook", Ex celPackage .schemaMai n);
  2992                             // Add  the relat ionships n amespace
  2993                             ExcelP ackage.Add SchemaAttr ibute(tagW orkbook, E xcelPackag e.schemaRe lationship s, "r");
  2994                             _xmlWo rkbook.App endChild(t agWorkbook );
  2995  
  2996                             //// c reate the  bookViews  tag
  2997                             XmlEle ment bookV iews = _xm lWorkbook. CreateElem ent("bookV iews", Exc elPackage. schemaMain );
  2998                             tagWor kbook.Appe ndChild(bo okViews);
  2999                             XmlEle ment workb ookView =  _xmlWorkbo ok.CreateE lement("wo rkbookView ", ExcelPa ckage.sche maMain);
  3000                             bookVi ews.Append Child(work bookView);
  3001  
  3002                             // cre ate the sh eets tag
  3003                             XmlEle ment tagSh eets = _xm lWorkbook. CreateElem ent("sheet s", ExcelP ackage.sch emaMain);
  3004                             tagWor kbook.Appe ndChild(ta gSheets);
  3005  
  3006                             // sav e it to th e package
  3007                             Stream Writer str eamWorkboo k = new St reamWriter (partWorkb ook.GetStr eam(FileMo de.Create,  FileAcces s.Write));
  3008                             _xmlWo rkbook.Sav e(streamWo rkbook);
  3009                             stream Workbook.C lose();
  3010                             _xlPac kage.Packa ge.Flush() ;
  3011                         }
  3012                    }
  3013                    retu rn (_xmlWo rkbook);
  3014                }
  3015           }
  3016           #e ndregion
  3017  
  3018           #r egion Shar edStrings
  3019           // / <summary >
  3020           // / Provides  access to  the XML d ata repres enting the  shared st rings in t he package .
  3021           // / For inte rnal use o nly!
  3022           // / </summar y>
  3023           pr otected in ternal Xml Document S haredStrin gsXml
  3024           {
  3025                get
  3026                {
  3027                    if ( _xmlShared Strings ==  null)
  3028                    {
  3029                         if (_xlPac kage.Packa ge.PartExi sts(Shared StringsUri ))
  3030                             _xmlSh aredString s = _xlPac kage.GetXm lFromUri(S haredStrin gsUri);
  3031                         else
  3032                         {
  3033                             // cre ate a new  sharedStri ngs part a nd add to  the packag e
  3034                             Packag ePart part Strings =  _xlPackage .Package.C reatePart( SharedStri ngsUri, @" applicatio n/vnd.open xmlformats -officedoc ument.spre adsheetml. sharedStri ngs+xml");
  3035  
  3036                             // cre ate the sh ared strin gs xml doc  (with no  entries in  it)
  3037                             _xmlSh aredString s = new Xm lDocument( );
  3038                             XmlEle ment tagSs t = _xmlSh aredString s.CreateEl ement("sst ", ExcelPa ckage.sche maMain);
  3039                             tagSst .SetAttrib ute("count ", "0");
  3040                             tagSst .SetAttrib ute("uniqu eCount", " 0");
  3041                             _xmlSh aredString s.AppendCh ild(tagSst );
  3042  
  3043                             // sav e it to th e package
  3044                             Stream Writer str eamStrings  = new Str eamWriter( partString s.GetStrea m(FileMode .Create, F ileAccess. Write));
  3045                             _xmlSh aredString s.Save(str eamStrings );
  3046                             stream Strings.Cl ose();
  3047                             _xlPac kage.Packa ge.Flush() ;
  3048  
  3049                             // cre ate the re lationship  between t he workboo k and the  new shared  strings p art
  3050                             _xlPac kage.Workb ook.Part.C reateRelat ionship(Sh aredString sUri, Targ etMode.Int ernal, Exc elPackage. schemaRela tionships  + "/shared Strings");
  3051                             _xlPac kage.Packa ge.Flush() ;
  3052                         }
  3053                    }
  3054                    retu rn (_xmlSh aredString s);
  3055                }
  3056           }
  3057           #e ndregion
  3058  
  3059           #r egion Styl esXml
  3060           // / <summary >
  3061           // / Provides  access to  the XML d ata repres enting the  styles in  the packa ge. 
  3062           // / </summar y>
  3063           pu blic XmlDo cument Sty lesXml
  3064           {
  3065                get
  3066                {
  3067                    if ( _xmlStyles  == null)
  3068                    {
  3069                         if (_xlPac kage.Packa ge.PartExi sts(Styles Uri))
  3070                             _xmlSt yles = _xl Package.Ge tXmlFromUr i(StylesUr i);
  3071                         else
  3072                         {
  3073                             // cre ate a new  styles par t and add  to the pac kage
  3074                             Packag ePart part Syles = _x lPackage.P ackage.Cre atePart(St ylesUri, @ "applicati on/vnd.ope nxmlformat s-officedo cument.spr eadsheetml .styles+xm l");
  3075  
  3076                             // cre ate the st yle sheet
  3077                             _xmlSt yles = new  XmlDocume nt();
  3078                             XmlEle ment tagSt ylesheet =  _xmlStyle s.CreateEl ement("sty leSheet",  ExcelPacka ge.schemaM ain);
  3079                             _xmlSt yles.Appen dChild(tag Stylesheet );
  3080                             // cre ate the fo nts tag
  3081                             XmlEle ment tagFo nts = _xml Styles.Cre ateElement ("fonts",  ExcelPacka ge.schemaM ain);
  3082                             tagFon ts.SetAttr ibute("cou nt", "1");
  3083                             tagSty lesheet.Ap pendChild( tagFonts);
  3084                             // cre ate the fo nt tag
  3085                             XmlEle ment tagFo nt = _xmlS tyles.Crea teElement( "font", Ex celPackage .schemaMai n);
  3086                             tagFon ts.AppendC hild(tagFo nt);
  3087                             // cre ate the sz  tag
  3088                             XmlEle ment tagSz  = _xmlSty les.Create Element("s z", ExcelP ackage.sch emaMain);
  3089                             tagSz. SetAttribu te("val",  "11");
  3090                             tagFon t.AppendCh ild(tagSz) ;
  3091                             // cre ate the na me tag
  3092                             XmlEle ment tagNa me = _xmlS tyles.Crea teElement( "name", Ex celPackage .schemaMai n);
  3093                             tagNam e.SetAttri bute("val" , "Calibri ");
  3094                             tagFon t.AppendCh ild(tagNam e);
  3095                             // cre ate the ce llStyleXfs  tag
  3096                             XmlEle ment tagCe llStyleXfs  = _xmlSty les.Create Element("c ellStyleXf s", ExcelP ackage.sch emaMain);
  3097                             tagCel lStyleXfs. SetAttribu te("count" , "1");
  3098                             tagSty lesheet.Ap pendChild( tagCellSty leXfs);
  3099                             // cre ate the xf  tag
  3100                             XmlEle ment tagXf  = _xmlSty les.Create Element("x f", ExcelP ackage.sch emaMain);
  3101                             tagXf. SetAttribu te("numFmt Id", "0");
  3102                             tagXf. SetAttribu te("fontId ", "0");
  3103                             tagCel lStyleXfs. AppendChil d(tagXf);
  3104                             // cre ate the ce llXfs tag
  3105                             XmlEle ment tagCe llXfs = _x mlStyles.C reateEleme nt("cellXf s", ExcelP ackage.sch emaMain);
  3106                             tagCel lXfs.SetAt tribute("c ount", "1" );
  3107                             tagSty lesheet.Ap pendChild( tagCellXfs );
  3108                             // cre ate the xf  tag
  3109                             XmlEle ment tagXf 2 = _xmlSt yles.Creat eElement(" xf", Excel Package.sc hemaMain);
  3110                             tagXf2 .SetAttrib ute("numFm tId", "0") ;
  3111                             tagXf2 .SetAttrib ute("fontI d", "0");
  3112                             tagXf2 .SetAttrib ute("xfId" , "0");
  3113                             tagCel lXfs.Appen dChild(tag Xf2);
  3114  
  3115                             // sav e it to th e package
  3116                             Stream Writer str eamStyles  = new Stre amWriter(p artSyles.G etStream(F ileMode.Cr eate, File Access.Wri te));
  3117                             _xmlSt yles.Save( streamStyl es);
  3118                             stream Styles.Clo se();
  3119                             _xlPac kage.Packa ge.Flush() ;
  3120  
  3121                             // cre ate the re lationship  between t he workboo k and the  new shared  strings p art
  3122                             _xlPac kage.Workb ook.Part.C reateRelat ionship(St ylesUri, T argetMode. Internal,  ExcelPacka ge.schemaR elationshi ps + "/sty les");
  3123                             _xlPac kage.Packa ge.Flush() ;
  3124                         }
  3125                    }
  3126                    retu rn (_xmlSt yles);
  3127                }
  3128                set
  3129                {
  3130                    _xml Styles = v alue;
  3131                }
  3132           }
  3133           #e ndregion
  3134  
  3135           #r egion Offi ce Documen t Properti es
  3136           // / <summary >
  3137           // / Provides  access to  the offic e document  propertie s
  3138           // / </summar y>
  3139           pu blic Offic ePropertie s Properti es
  3140           {
  3141                get
  3142                {
  3143                    if ( _propertie s == null)
  3144                         _propertie s = new Of ficeProper ties(_xlPa ckage);
  3145                    retu rn _proper ties;
  3146                }
  3147           }
  3148           #e ndregion
  3149  
  3150           #r egion Calc Mode
  3151           // / <summary >
  3152           // / Allows y ou to set  the calcul ation mode  for the w orkbook.
  3153           // / </summar y>
  3154           pu blic Excel CalcMode C alcMode
  3155           {
  3156                get
  3157                {
  3158                    Exce lCalcMode  retValue =  ExcelCalc Mode.Autom atic;
  3159                    //   Retrieve t he calcMod e attribut e in the c alcPr elem ent.
  3160                    XmlN ode node =  WorkbookX ml.SelectS ingleNode( "//d:calcP r", _nsMan ager);
  3161                    if ( node != nu ll)
  3162                    {
  3163                         XmlAttribu te attr =  node.Attri butes["cal cMode"];
  3164                         if (attr ! = null)
  3165                         {
  3166                             switch  (attr.Val ue)
  3167                             {
  3168                                 ca se "auto":
  3169                                      retValue  = ExcelCa lcMode.Aut omatic;
  3170                                      break;
  3171                                 ca se "autoNo Table":
  3172                                      retValue  = ExcelCa lcMode.Aut omaticNoTa ble;
  3173                                      break;
  3174                                 ca se "manual ":
  3175                                      retValue  = ExcelCa lcMode.Man ual;
  3176                                      break;
  3177                             }
  3178                         }
  3179                    }
  3180                    retu rn (retVal ue);
  3181                }
  3182                set
  3183                {
  3184                    XmlE lement ele ment = (Xm lElement)W orkbookXml .SelectSin gleNode("/ /d:calcPr" , _nsManag er);
  3185                    //if  (element  == null)
  3186                    //{
  3187                    //   // create  the elemen t
  3188                    //   element =  WorkbookXm l.CreateEl ement(
  3189                    //}
  3190                    stri ng actualV alue = "au to";  // d efault
  3191                    //   Set the va lue of the  attribute :
  3192                    swit ch (value)
  3193                    {
  3194                         case Excel CalcMode.A utomatic:
  3195                             actual Value = "a uto";
  3196                             break;
  3197                         case Excel CalcMode.A utomaticNo Table:
  3198                             actual Value = "a utoNoTable ";
  3199                             break;
  3200                         case Excel CalcMode.M anual:
  3201                             actual Value = "m anual";
  3202                             break;
  3203                    }
  3204                    elem ent.SetAtt ribute("ca lcMode", a ctualValue );
  3205                }
  3206           #e ndregion
  3207  
  3208           }
  3209           #e ndregion
  3210  
  3211           #r egion Work book Priva te Methods
  3212  
  3213           #r egion Save  // Workbo ok Save
  3214           // / <summary >
  3215           // / Saves th e workbook  and all i ts compone nts to the  package.
  3216           // / For inte rnal use o nly!
  3217           // / </summar y>
  3218           pr otected in ternal voi d Save()   // Workboo k Save
  3219           {
  3220                // ensur e we have  at least o ne workshe et
  3221                if (Work sheets.Cou nt == 0)
  3222                    thro w new Exce ption("Wor kbook Save  Error: th e workbook  must cont ain at lea st one wor ksheet!");
  3223                
  3224                #region  Delete cal cChain com ponent
  3225                // if th e calcChai n componen t exists,  we should  delete it  to force E xcel to re create it
  3226                // when  the spread sheet is n ext opened
  3227                if (_xlP ackage.Pac kage.PartE xists(_uri CalcChain) )
  3228                {
  3229                    //   there will  be a rela tionship w ith the wo rkbook, so  first del ete the re lationship
  3230                    Uri  calcChain  = new Uri( "calcChain .xml", Uri Kind.Relat ive);
  3231                    fore ach (Packa geRelation ship relat ionship in  _xlPackag e.Workbook .Part.GetR elationshi ps())
  3232                    {
  3233                         if (relati onship.Tar getUri ==  calcChain)
  3234                         {
  3235                             _xlPac kage.Workb ook.Part.D eleteRelat ionship(re lationship .Id);
  3236                             break;
  3237                         }
  3238                    }
  3239                    // d elete the  calcChain  component
  3240                    _xlP ackage.Pac kage.Delet ePart(_uri CalcChain) ;
  3241                }
  3242                #endregi on
  3243                
  3244                // save  the workbo ok
  3245                if (_xml Workbook ! = null)
  3246                {
  3247                    _xlP ackage.Sav ePart(Work bookUri, _ xmlWorkboo k);
  3248                    _xlP ackage.Wri teDebugFil e(_xmlWork book, "xl" , "workboo k.xml");
  3249                }
  3250                
  3251                // save  the proper ties of th e workbook
  3252                if (_pro perties !=  null)
  3253                {
  3254                    _pro perties.Sa ve();
  3255                }
  3256                
  3257                // save  the style  sheet
  3258                if (_xml Styles !=  null)
  3259                {
  3260                    _xlP ackage.Sav ePart(Styl esUri, _xm lStyles);
  3261                    _xlP ackage.Wri teDebugFil e(_xmlStyl es, "xl",  "styles.xm l");
  3262                }
  3263                
  3264                // save  the shared  strings
  3265                if (_xml SharedStri ngs != nul l)
  3266                {
  3267                    _xlP ackage.Sav ePart(Shar edStringsU ri, _xmlSh aredString s);
  3268                    _xlP ackage.Wri teDebugFil e(_xmlShar edStrings,  "xl", "sh aredstring s.xml");
  3269                }
  3270                
  3271                // save  all the op en workshe ets
  3272                foreach  (ExcelWork sheet work sheet in W orksheets)
  3273                {
  3274                    work sheet.Save ();
  3275                }
  3276                System.W indows.For ms.Message Box.Show(" done");
  3277           }
  3278           #e ndregion
  3279  
  3280           #e ndregion
  3281       } // e nd Workboo k
  3282   }]]></Proj ectItem>
  3283                      <P rojectItem
  3284                         Name="Offi ceProperti es.cs"
  3285                         Encoding=" UTF8"><![C DATA[/* 
  3286    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  3287    * 
  3288    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  3289    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  3290    * 
  3291    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  3292    * mailto: dr.john.tu nnicliffe@ btinternet .com
  3293    * All rig hts reserv ed.
  3294    * 
  3295    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  3296    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  3297    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  3298    * 
  3299    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  3300    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  3301    * 
  3302    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  3303    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  3304    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  3305    * 
  3306    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  3307    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  3308    */
  3309  
  3310   /*
  3311    * Code ch ange notes :
  3312    * 
  3313    * Author                                                             Change                                               Date
  3314    * ******* ********** ********** ********** ********** ********** ********** ********** *
  3315    * John Tu nnicliffe               Initial  Release          01-J an-2007
  3316    * ******* ********** ********** ********** ********** ********** ********** ********** *
  3317    */
  3318   using Syst em;
  3319   using Syst em.Xml;
  3320   using Syst em.IO;
  3321   using Syst em.IO.Pack aging;
  3322  
  3323   namespace  OfficeOpen Xml
  3324   {
  3325       /// <s ummary>
  3326       /// Pr ovides acc ess to the  propertie s bag of a ny office  document ( i.e. Word,  Excel etc .)
  3327       /// </ summary>
  3328       public  class Off icePropert ies
  3329       {
  3330           #r egion Priv ate Proper ties
  3331  
  3332           pr ivate cons t string s chemaCore  = @"http:/ /schemas.o penxmlform ats.org/pa ckage/2006 /metadata/ core-prope rties";
  3333           pr ivate cons t string s chemeExten ded = @"ht tp://schem as.openxml formats.or g/officeDo cument/200 6/extended -propertie s";
  3334           pr ivate cons t string s chemaCusto m = @"http ://schemas .openxmlfo rmats.org/ officeDocu ment/2006/ custom-pro perties";
  3335           pr ivate cons t string s chemaDc =  @"http://p url.org/dc /elements/ 1.1/";
  3336           pr ivate cons t string s chemaDcTer ms = @"htt p://purl.o rg/dc/term s/";
  3337           pr ivate cons t string s chemaDcmiT ype = @"ht tp://purl. org/dc/dcm itype/";
  3338           pr ivate cons t string s chemaXsi =  @"http:// www.w3.org /2001/XMLS chema-inst ance";
  3339           pr ivate cons t string s chemaVt =  @"http://s chemas.ope nxmlformat s.org/offi ceDocument /2006/docP ropsVTypes ";
  3340  
  3341           pr ivate Uri  _uriProper tiesCore =  new Uri(" /docProps/ core.xml",  UriKind.R elative);
  3342           pr ivate Uri  _uriProper tiesExtend ed = new U ri("/docPr ops/app.xm l", UriKin d.Relative );
  3343           pr ivate Uri  _uriProper tiesCustom  = new Uri ("/docProp s/custom.x ml", UriKi nd.Relativ e);
  3344  
  3345           pr ivate XmlD ocument _x mlProperti esCore;
  3346           pr ivate XmlD ocument _x mlProperti esExtended ;
  3347           pr ivate XmlD ocument _x mlProperti esCustom;
  3348           pr ivate Exce lPackage _ xlPackage;
  3349           pr ivate XmlN amespaceMa nager _nsM anager;
  3350           #e ndregion
  3351  
  3352           #r egion Exce lPropertie s Construc tor
  3353           // / <summary >
  3354           // / Provides  access to  all the o ffice docu ment prope rties.
  3355           // / </summar y>
  3356           // / <param n ame="xlPac kage"></pa ram>
  3357           pu blic Offic ePropertie s(ExcelPac kage xlPac kage)
  3358           {
  3359                _xlPacka ge = xlPac kage;
  3360                //  Crea te a Names paceManage r to handl e the defa ult namesp ace, 
  3361                //  and  create a p refix for  the defaul t namespac e:
  3362                NameTabl e nt = new  NameTable ();
  3363                _nsManag er = new X mlNamespac eManager(n t);
  3364                // defau lt namespa ce
  3365                _nsManag er.AddName space("d",  ExcelPack age.schema Main);
  3366                _nsManag er.AddName space("vt" , schemaVt );
  3367                // exten ded proper ties (app. xml)
  3368                _nsManag er.AddName space("xp" , schemeEx tended);
  3369                // custo m properti es
  3370                _nsManag er.AddName space("ctp ", schemaC ustom);
  3371                // core  properties
  3372                _nsManag er.AddName space("cp" , schemaCo re);
  3373                // core  property n amespaces
  3374                _nsManag er.AddName space("dc" , schemaDc );
  3375                _nsManag er.AddName space("dct erms", sch emaDcTerms );
  3376                _nsManag er.AddName space("dcm itype", sc hemaDcmiTy pe);
  3377                _nsManag er.AddName space("xsi ", schemaX si);
  3378           }
  3379           #e ndregion
  3380  
  3381           #r egion Prot ected Inte rnal Prope rties
  3382           // / <summary >
  3383           // / The URI  to the cor e properti es compone nt (core.x ml)
  3384           // / </summar y>
  3385           pr otected in ternal Uri  CorePrope rtiesUri {  get { ret urn (_uriP ropertiesC ore); } }
  3386           // / <summary >
  3387           // / The URI  to the ext ended prop erties com ponent (ap p.xml)
  3388           // / </summar y>
  3389           pr otected in ternal Uri  ExtendedP ropertiesU ri { get {  return (_ uriPropert iesExtende d); } }
  3390           // / <summary >
  3391           // / The URI  to the cus tom proper ties compo nent (cust om.xml)
  3392           // / </summar y>
  3393           pr otected in ternal Uri  CustomPro pertiesUri  { get { r eturn (_ur iPropertie sCustom);  } }
  3394           #e ndregion
  3395  
  3396           #r egion Core  Propertie s
  3397  
  3398           #r egion Core Properties Xml
  3399           // / <summary >
  3400           // / Provides  access to  the XML d ocument th at holds a ll the cod
  3401           // / document  propertie s.
  3402           // / </summar y>
  3403           pu blic XmlDo cument Cor ePropertie sXml
  3404           {
  3405                get
  3406                {
  3407                    if ( _xmlProper tiesCore = = null)
  3408                    {
  3409                         if (_xlPac kage.Packa ge.PartExi sts(CorePr opertiesUr i))
  3410                             _xmlPr opertiesCo re = _xlPa ckage.GetX mlFromUri( CoreProper tiesUri);
  3411                         else
  3412                         {
  3413                             // cre ate a new  document p roperties  part and a dd to the  package
  3414                             Packag ePart part Core = _xl Package.Pa ckage.Crea tePart(Cor ePropertie sUri, @"ap plication/ vnd.openxm lformats-p ackage.cor e-properti es+xml");
  3415  
  3416                             // cre ate the do cument pro perties XM L (with no  entries i n it)
  3417                             _xmlPr opertiesCo re = new X mlDocument ();
  3418                             XmlEle ment root  = _xmlProp ertiesCore .CreateEle ment("cp:c orePropert ies", sche maCore);
  3419                             ExcelP ackage.Add SchemaAttr ibute(root , schemaCo re, "cp");
  3420                             ExcelP ackage.Add SchemaAttr ibute(root , schemaDc , "dc");
  3421                             ExcelP ackage.Add SchemaAttr ibute(root , schemaDc Terms, "dc terms");
  3422                             ExcelP ackage.Add SchemaAttr ibute(root , schemaDc miType, "d cmitype");
  3423                             ExcelP ackage.Add SchemaAttr ibute(root , schemaXs i, "xsi");
  3424                             _xmlPr opertiesCo re.AppendC hild(root) ;
  3425  
  3426                             // sav e it to th e package
  3427                             Stream Writer str eamCore =  new Stream Writer(par tCore.GetS tream(File Mode.Creat e, FileAcc ess.Write) );
  3428                             _xmlPr opertiesCo re.Save(st reamCore);
  3429                             stream Core.Close ();
  3430                             _xlPac kage.Packa ge.Flush() ;
  3431  
  3432                             // cre ate the re lationship  between t he workboo k and the  new shared  strings p art
  3433                             _xlPac kage.Packa ge.CreateR elationshi p(CoreProp ertiesUri,  TargetMod e.Internal , @"http:/ /schemas.o penxmlform ats.org/pa ckage/2006 /relations hips/metad ata/core-p roperties" );
  3434                             _xlPac kage.Packa ge.Flush() ;
  3435                         }
  3436                    }
  3437                    retu rn (_xmlPr opertiesCo re);
  3438                }
  3439           }
  3440           #e ndregion
  3441  
  3442           // / <summary >
  3443           // / Gets/set s the titl e property  of the do cument (co re propert y)
  3444           // / </summar y>
  3445           pu blic strin g Title
  3446           {
  3447                get { re turn GetCo reProperty Value("dc" , "title") ; }
  3448                set { Se tCorePrope rtyValue(" dc", "titl e", value) ; }
  3449           }
  3450  
  3451           // / <summary >
  3452           // / Gets/set s the subj ect proper ty of the  document ( core prope rty)
  3453           // / </summar y>
  3454           pu blic strin g Subject
  3455           {
  3456                get { re turn GetCo reProperty Value("dc" , "subject "); }
  3457                set { Se tCorePrope rtyValue(" dc", "subj ect", valu e); }
  3458           }
  3459  
  3460           // / <summary >
  3461           // / Gets/set s the auth or propert y of the d ocument (c ore proper ty)
  3462           // / </summar y>
  3463           pu blic strin g Author
  3464           {
  3465                get { re turn GetCo reProperty Value("dc" , "creator "); }
  3466                set { Se tCorePrope rtyValue(" dc", "crea tor", valu e); }
  3467           }
  3468  
  3469           // / <summary >
  3470           // / Gets/set s the comm ents prope rty of the  document  (core prop erty)
  3471           // / </summar y>
  3472           pu blic strin g Comments
  3473           {
  3474                get { re turn GetCo reProperty Value("dc" , "descrip tion"); }
  3475                set { Se tCorePrope rtyValue(" dc", "desc ription",  value); }
  3476           }
  3477  
  3478           // / <summary >
  3479           // / Gets/set s the keyw ords prope rty of the  document  (core prop erty)
  3480           // / </summar y>
  3481           pu blic strin g Keywords
  3482           {
  3483                get { re turn GetCo reProperty Value("cp" , "keyword s"); }
  3484                set { Se tCorePrope rtyValue(" cp", "keyw ords", val ue); }
  3485           }
  3486  
  3487           // / <summary >
  3488           // / Gets/set s the last ModifiedBy  property  of the doc ument (cor e property )
  3489           // / </summar y>
  3490           pu blic strin g LastModi fiedBy
  3491           {
  3492                get { re turn GetCo reProperty Value("cp" , "lastMod ifiedBy");  }
  3493                set { Se tCorePrope rtyValue(" cp", "last ModifiedBy ", value);  }
  3494           }
  3495  
  3496           // / <summary >
  3497           // / Gets/set s the last Printed pr operty of  the docume nt (core p roperty)
  3498           // / </summar y>
  3499           pu blic strin g LastPrin ted
  3500           {
  3501                get { re turn GetCo reProperty Value("cp" , "lastPri nted"); }
  3502                set { Se tCorePrope rtyValue(" cp", "last Printed",  value); }
  3503           }
  3504  
  3505           // / <summary >
  3506           // / Gets/set s the cate gory prope rty of the  document  (core prop erty)
  3507           // / </summar y>
  3508           pu blic strin g Category
  3509           {
  3510                get { re turn GetCo reProperty Value("cp" , "categor y"); }
  3511                set { Se tCorePrope rtyValue(" cp", "cate gory", val ue); }
  3512           }
  3513  
  3514           // / <summary >
  3515           // / Gets/set s the stat us propert y of the d ocument (c ore proper ty)
  3516           // / </summar y>
  3517           pu blic strin g Status
  3518           {
  3519                get { re turn GetCo reProperty Value("cp" , "content Status");  }
  3520                set { Se tCorePrope rtyValue(" cp", "cont entStatus" , value);  }
  3521           }
  3522  
  3523           #r egion Get  and Set Co re Propert ies
  3524           // / <summary >
  3525           // / Gets the  value of  a core pro perty
  3526           // / Private  method, fo r internal  use only!
  3527           // / </summar y>
  3528           // / <param n ame="nameS pace">The  namespace  of the pro perty</par am>
  3529           // / <param n ame="prope rtyName">T he propert y name</pa ram>
  3530           // / <returns >The curre nt value o f the prop erty</retu rns>
  3531           pr ivate stri ng GetCore PropertyVa lue(string  nameSpace , string p ropertyNam e)
  3532           {
  3533                string r etValue =  null;
  3534                string s earchStrin g = string .Format("/ /cp:corePr operties/{ 0}:{1}", n ameSpace,  propertyNa me);
  3535                XmlNode  node = Cor ePropertie sXml.Selec tSingleNod e(searchSt ring, _nsM anager);
  3536                if (node  != null)
  3537                {
  3538                    retV alue = nod e.InnerTex t;
  3539                }
  3540                return r etValue;
  3541           }
  3542  
  3543           // / <summary >
  3544           // / Sets a c ore proper ty value.
  3545           // / Private  method, fo r internal  use only!
  3546           // / </summar y>
  3547           // / <param n ame="nameS pace">The  property's  namespace </param>
  3548           // / <param n ame="prope rtyName">T he name of  the prope rty</param >
  3549           // / <param n ame="propV alue">The  value of t he propert y</param>
  3550           pr ivate void  SetCorePr opertyValu e(string n ameSpace,  string pro pertyName,  string pr opValue)
  3551           {
  3552                string s earchStrin g = string .Format("/ /cp:corePr operties/{ 0}:{1}", n ameSpace,  propertyNa me);
  3553                XmlNode  node = Cor ePropertie sXml.Selec tSingleNod e(searchSt ring, _nsM anager);
  3554                if (node  == null)
  3555                {
  3556                    // t he propert y does not  exist, so  create th e XML node
  3557                    stri ng schema  = schemaCo re;
  3558                    swit ch (nameSp ace)
  3559                    {
  3560                         case "cp":  schema =  schemaCore ; break;
  3561                         case "dc":  schema =  schemaDc;  break;
  3562                         case "dcte rms": sche ma = schem aDcTerms;  break;
  3563                         case "dcmi type": sch ema = sche maDcmiType ; break;
  3564                         case "xsi" : schema =  schemaXsi ; break;
  3565                    }
  3566                    node  = (XmlNod e)CoreProp ertiesXml. CreateElem ent(nameSp ace, prope rtyName, s chema);
  3567                    Core Properties Xml.Docume ntElement. AppendChil d(node);
  3568  
  3569                }
  3570                node.Inn erText = p ropValue;
  3571           }
  3572           #e ndregion
  3573  
  3574           #e ndregion
  3575  
  3576           #r egion Exte nded Prope rties
  3577           #r egion Exte ndedProper tiesXml
  3578           // / <summary >
  3579           // / Provides  access to  the XML d ocument th at holds t he extende d properti es of the  document ( app.xml)
  3580           // / </summar y>
  3581           pu blic XmlDo cument Ext endedPrope rtiesXml
  3582           {
  3583                get
  3584                {
  3585                    if ( _xmlProper tiesExtend ed == null )
  3586                    {
  3587                         if (_xlPac kage.Packa ge.PartExi sts(Extend edProperti esUri))
  3588                             _xmlPr opertiesEx tended = _ xlPackage. GetXmlFrom Uri(Extend edProperti esUri);
  3589                         else
  3590                         {
  3591                             // cre ate a new  extended p roperties  part and a dd to the  package
  3592                             Packag ePart part Extended =  _xlPackag e.Package. CreatePart (ExtendedP ropertiesU ri, @"appl ication/vn d.openxmlf ormats-off icedocumen t.extended -propertie s+xml");
  3593  
  3594                             // cre ate the ex tended pro perties XM L (with no  entries i n it)
  3595                             _xmlPr opertiesEx tended = n ew XmlDocu ment();
  3596                             XmlEle ment root  = _xmlProp ertiesExte nded.Creat eElement(" Properties ", schemeE xtended);
  3597                             ExcelP ackage.Add SchemaAttr ibute(root , schemaVt , "vt");
  3598                             _xmlPr opertiesEx tended.App endChild(r oot);
  3599  
  3600                             // sav e it to th e package
  3601                             Stream Writer str eamExtende d = new St reamWriter (partExten ded.GetStr eam(FileMo de.Create,  FileAcces s.Write));
  3602                             _xmlPr opertiesEx tended.Sav e(streamEx tended);
  3603                             stream Extended.C lose();
  3604                             _xlPac kage.Packa ge.Flush() ;
  3605  
  3606                             // cre ate the re lationship  between t he workboo k and the  new shared  strings p art
  3607                             _xlPac kage.Packa ge.CreateR elationshi p(Extended Properties Uri, Targe tMode.Inte rnal, @"ht tp://schem as.openxml formats.or g/officeDo cument/200 6/relation ships/exte nded-prope rties");
  3608                             _xlPac kage.Packa ge.Flush() ;
  3609                         }
  3610                    }
  3611                    retu rn (_xmlPr opertiesEx tended);
  3612                }
  3613           }
  3614           #e ndregion
  3615  
  3616           // / <summary >
  3617           // / Gets the  Applicati on propert y of the d ocument (e xtended pr operty)
  3618           // / </summar y>
  3619           pu blic strin g Applicat ion
  3620           {
  3621                get { re turn GetEx tendedProp ertyValue( "Applicati on"); }
  3622           }
  3623  
  3624           // / <summary >
  3625           // / Gets/set s the Hype rlinkBase  property o f the docu ment (exte nded prope rty)
  3626           // / </summar y>
  3627           pu blic Uri H yperlinkBa se
  3628           {
  3629                get { re turn new U ri(GetExte ndedProper tyValue("H yperlinkBa se")); }
  3630                set { Se tExtendedP ropertyVal ue("Hyperl inkBase",  value.ToSt ring()); }
  3631           }
  3632  
  3633           // / <summary >
  3634           // / Gets the  AppVersio n property  of the do cument (ex tended pro perty)
  3635           // / </summar y>
  3636           pu blic strin g AppVersi on
  3637           {
  3638                get { re turn GetEx tendedProp ertyValue( "AppVersio n"); }
  3639           }
  3640  
  3641           // / <summary >
  3642           // / Gets/set s the Comp any proper ty of the  document ( extended p roperty)
  3643           // / </summar y>
  3644           pu blic strin g Company
  3645           {
  3646                get { re turn GetEx tendedProp ertyValue( "Company") ; }
  3647                set { Se tExtendedP ropertyVal ue("Compan y", value) ; }
  3648           }
  3649  
  3650           // / <summary >
  3651           // / Gets/set s the Mana ger proper ty of the  document ( extended p roperty)
  3652           // / </summar y>
  3653           pu blic strin g Manager
  3654           {
  3655                get { re turn GetEx tendedProp ertyValue( "Manager") ; }
  3656                set { Se tExtendedP ropertyVal ue("Manage r", value) ; }
  3657           }
  3658  
  3659           #r egion Get  and Set Ex tended Pro perties
  3660           pr ivate stri ng GetExte ndedProper tyValue(st ring prope rtyName)
  3661           {
  3662                string r etValue =  null;
  3663                string s earchStrin g = string .Format("/ /xp:Proper ties/xp:{0 }", proper tyName);
  3664                XmlNode  node = Ext endedPrope rtiesXml.S electSingl eNode(sear chString,  _nsManager );
  3665                if (node  != null)
  3666                {
  3667                    retV alue = nod e.InnerTex t;
  3668                }
  3669                return r etValue;
  3670           }
  3671  
  3672           pr ivate void  SetExtend edProperty Value(stri ng propert yName, str ing propVa lue)
  3673           {
  3674                string s earchStrin g = string .Format("/ /xp:Proper ties/xp:{0 }", proper tyName);
  3675                XmlNode  node = Ext endedPrope rtiesXml.S electSingl eNode(sear chString,  _nsManager );
  3676                if (node  == null)
  3677                {
  3678                    // t he propert y does not  exist, so  create th e XML node
  3679                    node  = (XmlNod e)Extended Properties Xml.Create Element(pr opertyName , schemeEx tended);
  3680                    Exte ndedProper tiesXml.Do cumentElem ent.Append Child(node );
  3681                }
  3682                node.Inn erText = p ropValue;
  3683           }
  3684           #e ndregion
  3685           #e ndregion
  3686  
  3687           #r egion Cust om Propert ies
  3688  
  3689           #r egion Cust omProperti esXml
  3690           // / <summary >
  3691           // / Provides  access to  the XML d ocument wh ich holds  the docume nt's custo m properti es
  3692           // / </summar y>
  3693           pu blic XmlDo cument Cus tomPropert iesXml
  3694           {
  3695                get
  3696                {
  3697                    if ( _xmlProper tiesCustom  == null)
  3698                    {
  3699                         if (_xlPac kage.Packa ge.PartExi sts(Custom Properties Uri))
  3700                             _xmlPr opertiesCu stom = _xl Package.Ge tXmlFromUr i(CustomPr opertiesUr i);
  3701                         else
  3702                         {
  3703                             // cre ate a new  extended p roperties  part and a dd to the  package
  3704                             Packag ePart part Custom = _ xlPackage. Package.Cr eatePart(C ustomPrope rtiesUri,  @"applicat ion/vnd.op enxmlforma ts-officed ocument.cu stom-prope rties+xml" );
  3705  
  3706                             // cre ate the ex tended pro perties XM L (with no  entries i n it)
  3707                             _xmlPr opertiesCu stom = new  XmlDocume nt();
  3708                             XmlEle ment root  = _xmlProp ertiesCust om.CreateE lement("Pr operties",  schemaCus tom);
  3709                             ExcelP ackage.Add SchemaAttr ibute(root , schemaVt , "vt");
  3710                             _xmlPr opertiesCu stom.Appen dChild(roo t);
  3711  
  3712                             // sav e it to th e package
  3713                             Stream Writer str eamCustom  = new Stre amWriter(p artCustom. GetStream( FileMode.C reate, Fil eAccess.Wr ite));
  3714                             _xmlPr opertiesCu stom.Save( streamCust om);
  3715                             stream Custom.Clo se();
  3716                             _xlPac kage.Packa ge.Flush() ;
  3717  
  3718                             // cre ate the re lationship  between t he workboo k and the  new shared  strings p art
  3719                             _xlPac kage.Packa ge.CreateR elationshi p(CustomPr opertiesUr i, TargetM ode.Intern al, @"http ://schemas .openxmlfo rmats.org/ officeDocu ment/2006/ relationsh ips/custom -propertie s");
  3720                             _xlPac kage.Packa ge.Flush() ;
  3721                         }
  3722                    }
  3723                    retu rn (_xmlPr opertiesCu stom);
  3724                }
  3725           }
  3726           #e ndregion
  3727  
  3728           #r egion Get  and Set Cu stom Prope rties
  3729           // / <summary >
  3730           // / Gets the  value of  a custom p roperty
  3731           // / </summar y>
  3732           // / <param n ame="prope rtyName">T he name of  the prope rty</param >
  3733           // / <returns >The curre nt value o f the prop erty</retu rns>
  3734           pu blic strin g GetCusto mPropertyV alue(strin g property Name)
  3735           {
  3736                string r etValue =  null;
  3737                string s earchStrin g = string .Format("/ /ctp:Prope rties/ctp: property/@ name[.='{0 }']", prop ertyName);
  3738                XmlNode  node = Cus tomPropert iesXml.Sel ectSingleN ode(search String, _n sManager);
  3739                if (node  != null)
  3740                {
  3741                    retV alue = nod e.LastChil d.InnerTex t;
  3742                }
  3743                return r etValue;
  3744           }
  3745  
  3746           // / <summary >
  3747           // / Allows y ou to set  the value  of a curre nt custom  property o r create 
  3748           // / your own  custom pr operty.  
  3749           // / Currentl y only sup ports stri ng values.
  3750           // / </summar y>
  3751           // / <param n ame="prope rtyName">T he name of  the prope rty</param >
  3752           // / <param n ame="propV alue">The  value of t he propert y</param>
  3753           pu blic void  SetCustomP ropertyVal ue(string  propertyNa me, string  propValue )
  3754           {
  3755                // TODO:   provide  support fo r other cu stom prope rty data t ypes
  3756                string s earchStrin g = @"//ct p:Properti es";
  3757                XmlNode  allProps =  CustomPro pertiesXml .SelectSin gleNode(se archString , _nsManag er);
  3758  
  3759                searchSt ring = str ing.Format ("//ctp:Pr operties/c tp:propert y/@ctp:nam e[.='{0}'] ", propert yName);
  3760                XmlNode  node = Cus tomPropert iesXml.Sel ectSingleN ode(search String, _n sManager);
  3761                if (node  == null)
  3762                {
  3763                    // t he propert y does not  exist, so  first fin d the max  PID
  3764                    int  pid = 4;
  3765                    fore ach (XmlNo de prop in  allProps. ChildNodes )
  3766                    {
  3767                         XmlAttribu te attr =  (XmlAttrib ute)prop.A ttributes. GetNamedIt em("pid");
  3768                         if (attr ! = null)
  3769                         {
  3770                             int at trValue =  int.Parse( attr.Value );
  3771                             if (at trValue >  pid)
  3772                                 pi d = attrVa lue;
  3773                         }
  3774                    }
  3775                    pid+ +;
  3776                    // t he propert y does not  exist, so  create th e XML node
  3777                    XmlE lement ele ment = Cus tomPropert iesXml.Cre ateElement ("property ", schemaC ustom);
  3778                    elem ent.SetAtt ribute("fm tid", "{D5 CDD505-2E9 C-101B-939 7-08002B2C F9AE}");
  3779                    elem ent.SetAtt ribute("pi d", pid.To String());   // custo m property  pid
  3780                    elem ent.SetAtt ribute("na me", prope rtyName);
  3781  
  3782                    XmlE lement val ueElement  = CustomPr opertiesXm l.CreateEl ement("vt" , "lpwstr" , schemaVt );
  3783                    valu eElement.I nnerText =  propValue ;
  3784                    elem ent.Append Child(valu eElement);
  3785  
  3786                    Cust omProperti esXml.Docu mentElemen t.AppendCh ild(elemen t);
  3787                }
  3788                else
  3789                {
  3790                    node .LastChild .InnerText  = propVal ue;
  3791                }
  3792  
  3793           }
  3794           #e ndregion
  3795           #e ndregion
  3796  
  3797           #r egion Save   // Offic ePropertie s save
  3798           // / <summary >
  3799           // / Saves th e office d ocument pr operties b ack to the  package ( if they ex ist!).
  3800           // / </summar y>
  3801           pr otected in ternal voi d Save()
  3802           {
  3803                if (_xml Properties Core != nu ll)
  3804                {
  3805                    _xlP ackage.Wri teDebugFil e(_xmlProp ertiesCore , "docProp s", "core. xml");
  3806                    _xlP ackage.Sav ePart(Core Properties Uri, _xmlP ropertiesC ore);
  3807                }
  3808                if (_xml Properties Extended ! = null)
  3809                {
  3810                    _xlP ackage.Wri teDebugFil e(_xmlProp ertiesExte nded, "doc Props", "a pp.xml");
  3811                    _xlP ackage.Sav ePart(Exte ndedProper tiesUri, _ xmlPropert iesExtende d);
  3812                }
  3813                if (_xml Properties Custom !=  null)
  3814                {
  3815                    _xlP ackage.Wri teDebugFil e(_xmlProp ertiesCust om, "docPr ops", "cus tom.xml");
  3816                    _xlP ackage.Sav ePart(Cust omProperti esUri, _xm lPropertie sCustom);
  3817                }
  3818  
  3819           }
  3820           #e ndregion
  3821  
  3822       }
  3823   }]]></Proj ectItem>
  3824                      <P rojectItem
  3825                         Name="Exce lRow.cs"
  3826                         Encoding=" UTF8"><![C DATA[/* 
  3827    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  3828    * 
  3829    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  3830    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  3831    * 
  3832    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  3833    * mailto: dr.john.tu nnicliffe@ btinternet .com
  3834    * All rig hts reserv ed.
  3835    * 
  3836    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  3837    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  3838    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  3839    * 
  3840    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  3841    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  3842    * 
  3843    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  3844    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  3845    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  3846    * 
  3847    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  3848    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  3849    */
  3850  
  3851   /*
  3852    * Code ch ange notes :
  3853    * 
  3854    * Author                                                             Change                                               Date
  3855    * ******* ********** ********** ********** ********** ********** ********** ********** *
  3856    * John Tu nnicliffe               Initial  Release          01-J an-2007
  3857    * ******* ********** ********** ********** ********** ********** ********** ********** *
  3858    */
  3859   using Syst em;
  3860   using Syst em.Xml;
  3861  
  3862   namespace  OfficeOpen Xml
  3863   {
  3864       /// <s ummary>
  3865       /// Re presents a n individu al row in  the spread sheet.
  3866       /// </ summary>
  3867       public  class Exc elRow
  3868       {
  3869           pr ivate Exce lWorksheet  _xlWorksh eet;
  3870           pr ivate XmlE lement _ro wElement =  null;
  3871  
  3872           #r egion Exce lRow Const ructor
  3873           // / <summary >
  3874           // / Creates  a new inst ance of th e ExcelRow  class. 
  3875           // / For inte rnal use o nly!
  3876           // / </summar y>
  3877           // / <param n ame="Works heet">The  parent wor ksheet</pa ram>
  3878           // / <param n ame="row"> The row nu mber</para m>
  3879           pr otected in ternal Exc elRow(Exce lWorksheet  Worksheet , int row)
  3880           {
  3881                _xlWorks heet = Wor ksheet;
  3882  
  3883                //  Sear ch for the  existing  row
  3884                _rowElem ent = (Xml Element)Wo rksheet.Wo rksheetXml .SelectSin gleNode(st ring.Forma t("//d:she etData/d:r ow[@r='{0} ']", row),  _xlWorksh eet.NameSp aceManager );
  3885                if (_row Element ==  null)
  3886                {
  3887                    // W e didn't f ind the ro w, so add  a new row  element.
  3888                    // H OWEVER we  MUST inser t new row  in the cor rect posit ion - othe rwise Exce l 2007 wil l complain !!!
  3889                    _row Element =  Worksheet. WorksheetX ml.CreateE lement("ro w", ExcelP ackage.sch emaMain);
  3890                    _row Element.Se tAttribute ("r", row. ToString() );
  3891  
  3892                    // n ow work ou t where to  insert th e new row
  3893                    XmlN ode sheetD ataNode =  Worksheet. WorksheetX ml.SelectS ingleNode( "//d:sheet Data", _xl Worksheet. NameSpaceM anager);
  3894                    if ( sheetDataN ode != nul l)
  3895                    {
  3896                         XmlNode fo llowingRow  = null;
  3897                         foreach (X mlNode cur rentRow in  Worksheet .Worksheet Xml.Select Nodes("//d :sheetData /d:row", _ xlWorkshee t.NameSpac eManager))
  3898                         {
  3899                             int ro wFound = C onvert.ToI nt32(curre ntRow.Attr ibutes.Get NamedItem( "r").Value );
  3900                             if (ro wFound > r ow)
  3901                             {
  3902                                 fo llowingRow  = current Row;
  3903                                 br eak;
  3904                             }
  3905                         }
  3906                         if (follow ingRow ==  null)
  3907                             // no  data rows  exist, so  just add r ow
  3908                             sheetD ataNode.Ap pendChild( _rowElemen t);
  3909                         else
  3910                             sheetD ataNode.In sertBefore (_rowEleme nt, follow ingRow);
  3911                    }
  3912                }
  3913           }
  3914           #e ndregion
  3915  
  3916           // / <summary >
  3917           // / Provides  access to  the node  representi ng the row .
  3918           // / For inte rnal use o nly!
  3919           // / </summar y>
  3920           pr otected in ternal Xml Node Node  { get { re turn (_row Element);  } }
  3921  
  3922           #r egion Exce lRow Hidde n
  3923           // / <summary >
  3924           // / Allows t he row to  be hidden  in the wor ksheet
  3925           // / </summar y>
  3926           pu blic bool  Hidden
  3927           {
  3928                get
  3929                {
  3930                    bool  retValue  = false;
  3931                    stri ng hidden  = _rowElem ent.GetAtt ribute("hi dden", "1" );
  3932                    if ( hidden ==  "1") retVa lue = true ;
  3933                    retu rn (retVal ue);
  3934                }
  3935                set
  3936                {
  3937                    if ( value)
  3938                         _rowElemen t.SetAttri bute("hidd en", "1");
  3939                    else
  3940                         _rowElemen t.SetAttri bute("hidd en", "0");
  3941                }
  3942           }
  3943           #e ndregion
  3944  
  3945           #r egion Exce lRow Heigh t
  3946           // / <summary >
  3947           // / Sets the  height of  the row
  3948           // / </summar y>
  3949           pu blic doubl e Height
  3950           {
  3951                get
  3952                {
  3953                    doub le retValu e = 10;  / / default  row height
  3954                    stri ng ht = _r owElement. GetAttribu te("ht");
  3955                    if ( ht != "")
  3956                    {
  3957                         retValue =  double.Pa rse(ht);
  3958                    }
  3959                    retu rn (retVal ue);
  3960                }
  3961                set
  3962                {
  3963                    _row Element.Se tAttribute ("ht", val ue.ToStrin g());
  3964                    // w e must set  customHei ght="1" fo r the heig ht setting  to take e ffect
  3965                    _row Element.Se tAttribute ("customHe ight", "1" );
  3966                }
  3967           }
  3968           #e ndregion
  3969  
  3970           #r egion Exce lRow Style
  3971           // / <summary >
  3972           // / Gets/set s the styl e name bas ed on the  StyleID
  3973           // / </summar y>
  3974           pu blic strin g Style
  3975           {
  3976                get { re turn _xlWo rksheet.Ge tStyleName (StyleID);  }
  3977                set { St yleID = _x lWorksheet .GetStyleI D(value);  }
  3978           }
  3979  
  3980           // / <summary >
  3981           // / Sets the  style for  the entir e row usin g the styl e ID.  
  3982           // / </summar y>
  3983           pu blic int S tyleID
  3984           {
  3985                get
  3986                {
  3987                    int  retValue =  0;
  3988                    stri ng sid = _ rowElement .GetAttrib ute("s");
  3989                    if ( sid != "")  retValue  = int.Pars e(sid);
  3990                    retu rn retValu e;
  3991                }
  3992                set
  3993                {
  3994                    _row Element.Se tAttribute ("s", valu e.ToString ());
  3995                    // t o get Exce l to apply  this styl e we need  to set cus tomFormat= "1"
  3996                    _row Element.Se tAttribute ("customFo rmat", "1" );
  3997                }
  3998           }
  3999           #e ndregion
  4000  
  4001       }
  4002   }]]></Proj ectItem>
  4003                      <P rojectItem
  4004                         Name="Exce lWorksheet View.cs"
  4005                         Encoding=" UTF8"><![C DATA[/* 
  4006    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  4007    * 
  4008    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  4009    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  4010    * 
  4011    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  4012    * mailto: dr.john.tu nnicliffe@ btinternet .com
  4013    * All rig hts reserv ed.
  4014    * 
  4015    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  4016    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  4017    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  4018    * 
  4019    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  4020    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  4021    * 
  4022    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  4023    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  4024    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  4025    * 
  4026    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  4027    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  4028    */
  4029  
  4030   /*
  4031    * Code ch ange notes :
  4032    * 
  4033    * Author                                                             Change                                               Date
  4034    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4035    * John Tu nnicliffe               Initial  Release          01-J an-2007
  4036    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4037    */
  4038   using Syst em;
  4039   using Syst em.Xml;
  4040  
  4041   namespace  OfficeOpen Xml
  4042   {
  4043       /// <s ummary>
  4044       /// Re presents t he differe nt view st ates of th e workshee t
  4045       /// </ summary>
  4046       public  class Exc elWorkshee tView
  4047       {
  4048           //  TODO: imp lement the  different  view stat es of the  worksheet
  4049           pr ivate Exce lWorksheet  _xlWorksh eet;
  4050           pr ivate XmlE lement _sh eetView;
  4051  
  4052           #r egion Exce lWorksheet View Const ructor
  4053           // / <summary >
  4054           // / Creates  a new Exce lWorksheet View which  provides  access to  all the 
  4055           // / view sta tes of the  worksheet .
  4056           // / </summar y>
  4057           // / <param n ame="xlWor ksheet"></ param>
  4058           pr otected in ternal Exc elWorkshee tView(Exce lWorksheet  xlWorkshe et)
  4059           {
  4060                _xlWorks heet = xlW orksheet;
  4061           }
  4062           #e ndregion
  4063  
  4064           #r egion Shee tViewEleme nt
  4065           // / <summary >
  4066           // / Returns  a referenc e to the s heetView e lement
  4067           // / </summar y>
  4068           pr otected in ternal Xml Element Sh eetViewEle ment
  4069           {
  4070                get
  4071                {
  4072                    if ( _sheetView  == null)
  4073                    {
  4074                         _sheetView  = (XmlEle ment)_xlWo rksheet.Wo rksheetXml .SelectSin gleNode("/ /d:sheetVi ew", _xlWo rksheet.Na meSpaceMan ager);
  4075                    }
  4076                    retu rn _sheetV iew;
  4077                }
  4078           }
  4079           #e ndregion
  4080  
  4081           #r egion TabS elected
  4082           // / <summary >
  4083           // / Indicate s if the w orksheet i s selected  within th e workbook
  4084           // / </summar y>
  4085           pu blic bool  TabSelecte d
  4086           {
  4087                get
  4088                {
  4089                    bool  retValue  = false;
  4090                    stri ng ret = S heetViewEl ement.GetA ttribute(" tabSelecte d");
  4091                    if ( ret == "1" ) retValue  = true;
  4092                    retu rn retValu e;
  4093                }
  4094                set
  4095                {
  4096                    // t he sheetVi ew node sh ould alway s exist, s o no need  to create
  4097                    if ( value)
  4098                    {
  4099                         // ensure  no other w orksheet h as its tab Selected a ttribute s et to 1
  4100                         foreach (E xcelWorksh eet sheet  in _xlWork sheet.xlPa ckage.Work book.Works heets)
  4101                             sheet. View.TabSe lected = f alse;
  4102  
  4103                         SheetViewE lement.Set Attribute( "tabSelect ed", "1");
  4104                    }
  4105                    else
  4106                         SheetViewE lement.Set Attribute( "tabSelect ed", "0");
  4107                }
  4108           }
  4109           #e ndregion
  4110  
  4111           #r egion Page LayoutView
  4112           // / <summary >
  4113           // / Sets the  view mode  of the wo rksheet to  pageLayou t
  4114           // / </summar y>
  4115           pu blic bool  PageLayout View
  4116           {
  4117                get
  4118                {
  4119                    bool  retValue  = false;
  4120                    stri ng ret = S heetViewEl ement.GetA ttribute(" view");
  4121                    if ( ret == "pa geLayout")  retValue  = true;
  4122                    retu rn retValu e;
  4123                }
  4124                set
  4125                {
  4126                    if ( value)
  4127                         SheetViewE lement.Set Attribute( "view", "p ageLayout" );
  4128                    else
  4129                         SheetViewE lement.Rem oveAttribu te("view") ;
  4130                }
  4131           }
  4132           #e ndregion
  4133       }
  4134   }]]></Proj ectItem>
  4135                      <P rojectItem
  4136                         Name="Exce lWorksheet s.cs"
  4137                         Encoding=" UTF8"><![C DATA[/* 
  4138    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  4139    * 
  4140    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  4141    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  4142    * 
  4143    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  4144    * mailto: dr.john.tu nnicliffe@ btinternet .com
  4145    * All rig hts reserv ed.
  4146    * 
  4147    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  4148    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  4149    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  4150    * 
  4151    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  4152    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  4153    * 
  4154    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  4155    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  4156    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  4157    * 
  4158    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  4159    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  4160    */
  4161  
  4162   /*
  4163    * Code ch ange notes :
  4164    * 
  4165    * Author                                                             Change                                               Date
  4166    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4167    * John Tu nnicliffe               Initial  Release          01-J an-2007
  4168    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4169    */
  4170   using Syst em;
  4171   using Syst em.Collect ions;
  4172   using Syst em.Collect ions.Gener ic;
  4173   using Syst em.Text;
  4174   using Syst em.Xml;
  4175   using Syst em.IO;
  4176   using Syst em.IO.Pack aging;
  4177  
  4178   namespace  OfficeOpen Xml
  4179   {
  4180       /// <s ummary>
  4181       /// Pr ovides enu meration t hrough all  the works heets in t he workboo k
  4182       /// </ summary>
  4183       public  class Exc elWorkshee ts : IEnum erable
  4184       {
  4185           #r egion Exce lWorksheet s Private  Properties
  4186           pr ivate Dict ionary<int , ExcelWor ksheet> _w orksheets;
  4187           pr ivate Exce lPackage _ xlPackage;
  4188           pr ivate XmlN amespaceMa nager _nsM anager;
  4189           pr ivate XmlN ode _works heetsNode;
  4190           #e ndregion
  4191  
  4192           #r egion Exce lWorksheet s Construc tor
  4193           // / <summary >
  4194           // / Creates  a new inst ance of th e ExcelWor ksheets cl ass.
  4195           // / For inte rnal use o nly!
  4196           // / </summar y>
  4197           // / <param n ame="xlPac kage"></pa ram>
  4198           pr otected in ternal Exc elWorkshee ts(ExcelPa ckage xlPa ckage)
  4199           {
  4200                _xlPacka ge = xlPac kage;
  4201                //  Crea te a Names paceManage r to handl e the defa ult namesp ace, 
  4202                //  and  create a p refix for  the defaul t namespac e:
  4203                NameTabl e nt = new  NameTable ();
  4204                _nsManag er = new X mlNamespac eManager(n t);
  4205                _nsManag er.AddName space("d",  ExcelPack age.schema Main);
  4206                _nsManag er.AddName space("r",  ExcelPack age.schema Relationsh ips);
  4207  
  4208                // obtai n containe r node for  all works heets
  4209                _workshe etsNode =  _xlPackage .Workbook. WorkbookXm l.SelectSi ngleNode(" //d:sheets ", _nsMana ger);
  4210                if (_wor ksheetsNod e == null)
  4211                {
  4212                    // c reate new  node as it  did not e xist
  4213                    _wor ksheetsNod e = _xlPac kage.Workb ook.Workbo okXml.Crea teElement( "sheets",  ExcelPacka ge.schemaM ain);
  4214                    _xlP ackage.Wor kbook.Work bookXml.Do cumentElem ent.Append Child(_wor ksheetsNod e);
  4215                }
  4216  
  4217                _workshe ets = new  Dictionary <int, Exce lWorksheet >();
  4218                int posi tionID = 1 ;
  4219                foreach  (XmlNode s heetNode i n _workshe etsNode.Ch ildNodes)
  4220                {
  4221                    stri ng name =  sheetNode. Attributes ["name"].V alue;
  4222                    //   Get the re lationship  id attrib ute:
  4223                    stri ng relId =  sheetNode .Attribute s["r:id"]. Value;
  4224                    int  sheetID =  Convert.To Int32(shee tNode.Attr ibutes["sh eetId"].Va lue);
  4225                    //if  (sheetID  != count)
  4226                    //{
  4227                    //   // renumbe r the shee ts as they  are in an  odd order
  4228                    //   sheetID =  count;
  4229                    //   sheetNode. Attributes ["sheetId" ].Value =  sheetID.To String();
  4230                    //}
  4231                    // g et hidden  attribute  (if presen t)
  4232                    bool  hidden =  false;
  4233                    XmlN ode attr =  sheetNode .Attribute s["hidden" ];
  4234                    if ( attr != nu ll)
  4235                         hidden = C onvert.ToB oolean(att r.Value);
  4236  
  4237                    //st ring type  = "";
  4238                    //at tr = sheet Node.Attri butes["typ e"];
  4239                    //if  (attr !=  null)
  4240                    //   type = att r.Value;
  4241  
  4242                    Pack ageRelatio nship shee tRelation  = _xlPacka ge.Workboo k.Part.Get Relationsh ip(relId);
  4243                    Uri  uriWorkshe et = PackU riHelper.R esolvePart Uri(_xlPac kage.Workb ook.Workbo okUri, she etRelation .TargetUri );
  4244  
  4245                    // a dd workshe et to our  collection
  4246                    _wor ksheets.Ad d(position ID, new Ex celWorkshe et(_xlPack age, relId , name, ur iWorksheet , sheetID,  hidden));
  4247                    posi tionID++;
  4248                }
  4249           }
  4250           #e ndregion
  4251  
  4252           #r egion Exce lWorksheet s Public P roperties
  4253           // / <summary >
  4254           // / Returns  the number  of worksh eets in th e workbook
  4255           // / </summar y>
  4256           pu blic int C ount
  4257           {
  4258                get { re turn (_wor ksheets.Co unt); }
  4259           }
  4260           #e ndregion
  4261  
  4262           #r egion Exce lWorksheet s Public M ethods
  4263           // / <summary >
  4264           // / Returns  an enumera tor that a llows the  foreach sy ntax to be  used to 
  4265           // / itterate  through a ll the wor ksheets
  4266           // / </summar y>
  4267           // / <returns >An enumer ator</retu rns>
  4268           pu blic IEnum erator Get Enumerator ()
  4269           {
  4270                return ( _worksheet s.Values.G etEnumerat or());
  4271           }
  4272  
  4273           #r egion Add  Worksheet
  4274           // / <summary >
  4275           // / Adds a b lank works heet with  the desire d name
  4276           // / </summar y>
  4277           // / <param n ame="Name" ></param>
  4278           pu blic Excel Worksheet  Add(string  Name)
  4279           {
  4280                // first  find maxi mum existi ng sheetID
  4281                // also  check the  name is un ique - if  not throw  an error
  4282                int shee tID = 0;
  4283                foreach  (XmlNode s heet in _w orksheetsN ode.ChildN odes)
  4284                {
  4285                    XmlA ttribute a ttr = (Xml Attribute) sheet.Attr ibutes.Get NamedItem( "sheetId") ;
  4286                    if ( attr != nu ll)
  4287                    {
  4288                         int curID  = int.Pars e(attr.Val ue);
  4289                         if (curID  > sheetID)
  4290                             sheetI D = curID;
  4291                    }
  4292                    attr  = (XmlAtt ribute)she et.Attribu tes.GetNam edItem("na me");
  4293                    if ( attr != nu ll)
  4294                    {
  4295                         if (attr.V alue == Na me)
  4296                             throw  new Except ion("Add w orksheet E rror: atte mpting to  create wor ksheet wit h duplicat e name");
  4297                    }
  4298                }
  4299                // we no w have the  max exist ing values , so add o ne
  4300                sheetID+ +;
  4301  
  4302                // add t he new wor ksheet to  the packag e
  4303                Uri uriW orksheet =  new Uri(" /xl/worksh eets/sheet " + sheetI D.ToString () + ".xml ", UriKind .Relative) ;
  4304                PackageP art worksh eetPart =  _xlPackage .Package.C reatePart( uriWorkshe et, @"appl ication/vn d.openxmlf ormats-off icedocumen t.spreadsh eetml.work sheet+xml" );
  4305  
  4306                // creat e the new,  empty wor ksheet and  save it t o the pack age
  4307                StreamWr iter strea mWorksheet  = new Str eamWriter( worksheetP art.GetStr eam(FileMo de.Create,  FileAcces s.Write));
  4308                XmlDocum ent worksh eetXml = C reateNewWo rksheet();
  4309                workshee tXml.Save( streamWork sheet);
  4310                streamWo rksheet.Cl ose();
  4311                _xlPacka ge.Package .Flush();
  4312  
  4313                // creat e the rela tionship b etween the  workbook  and the ne w workshee t
  4314                PackageR elationshi p rel = _x lPackage.W orkbook.Pa rt.CreateR elationshi p(uriWorks heet, Targ etMode.Int ernal, Exc elPackage. schemaRela tionships  + "/worksh eet");
  4315                _xlPacka ge.Package .Flush();
  4316  
  4317                // now c reate the  new worksh eet tag an d set name /SheetId a ttributes  in the wor kbook.xml
  4318                XmlEleme nt workshe etNode = _ xlPackage. Workbook.W orkbookXml .CreateEle ment("shee t", ExcelP ackage.sch emaMain);
  4319                // creat e the new  sheet node
  4320                workshee tNode.SetA ttribute(" name", Nam e);
  4321                workshee tNode.SetA ttribute(" sheetId",  sheetID.To String());
  4322                // set t he r:id at tribute
  4323                workshee tNode.SetA ttribute(" id", Excel Package.sc hemaRelati onships, r el.Id);
  4324                // inser t the shee t tag with  all attri butes set  as above
  4325                _workshe etsNode.Ap pendChild( worksheetN ode);
  4326  
  4327                // creat e a refere nce to the  new works heet in ou r collecti on
  4328                ExcelWor ksheet wor ksheet = n ew ExcelWo rksheet(_x lPackage,  rel.Id, Na me, uriWor ksheet, sh eetID, fal se);
  4329                int posi tionID = _ worksheets .Count + 1 ;
  4330                _workshe ets.Add(po sitionID,  worksheet) ;
  4331                return w orksheet;
  4332           }
  4333  
  4334           // / <summary >
  4335           // / Creates  the XML do cument rep resenting  a new empt y workshee t
  4336           // / </summar y>
  4337           // / <returns ></returns >
  4338           pr otected in ternal Xml Document C reateNewWo rksheet()
  4339           {
  4340                // creat e the new  worksheet
  4341                XmlDocum ent worksh eetXml = n ew XmlDocu ment();
  4342                // XML d ocument do es not exi st so crea te the new  worksheet  XML doc
  4343                XmlEleme nt workshe etNode = w orksheetXm l.CreateEl ement("wor ksheet", E xcelPackag e.schemaMa in);
  4344                workshee tNode.SetA ttribute(" xmlns:r",  ExcelPacka ge.schemaR elationshi ps);
  4345                workshee tXml.Appen dChild(wor ksheetNode );
  4346                // creat e the shee tViews tag
  4347                XmlEleme nt tagShee tViews = w orksheetXm l.CreateEl ement("she etViews",  ExcelPacka ge.schemaM ain);
  4348                workshee tNode.Appe ndChild(ta gSheetView s);
  4349                // creat e the shee t View tag
  4350                XmlEleme nt tagShee tView = wo rksheetXml .CreateEle ment("shee tView", Ex celPackage .schemaMai n);
  4351                tagSheet View.SetAt tribute("w orkbookVie wId", "0") ;
  4352                tagSheet Views.Appe ndChild(ta gSheetView );
  4353                // creat e the empt y sheetDat a tag (mus t be prese nt, but ca n be empty )
  4354                XmlEleme nt tagShee tData = wo rksheetXml .CreateEle ment("shee tData", Ex celPackage .schemaMai n);
  4355                workshee tNode.Appe ndChild(ta gSheetData );
  4356                return w orksheetXm l;
  4357           }
  4358           #e ndregion
  4359  
  4360           #r egion Dele te Workshe et
  4361           // / <summary >
  4362           // / Delete a  worksheet  from the  workbook p ackage
  4363           // / </summar y>
  4364           // / <param n ame="posit ionID">The  position  of the wor ksheet in  the workbo ok</param>
  4365           pu blic void  Delete(int  positionI D)
  4366           {
  4367                if (_wor ksheets.Co unt == 1)
  4368                    thro w new Exce ption("Err or: You ar e attempti ng to dele te the las t workshee t in the w orkbook.   One worksh eet MUST b e present  in the wor kbook!");
  4369                ExcelWor ksheet wor ksheet = _ worksheets [positionI D];
  4370  
  4371                // delet e the work sheet from  the packa ge 
  4372                _xlPacka ge.Package .DeletePar t(workshee t.Workshee tUri);
  4373  
  4374                // delet e the rela tionship f rom the pa ckage 
  4375                _xlPacka ge.Workboo k.Part.Del eteRelatio nship(work sheet.Rela tionshipID );
  4376  
  4377                // delet e workshee t from the  workbook  XML
  4378                XmlNode  sheetsNode  = _xlPack age.Workbo ok.Workboo kXml.Selec tSingleNod e("//d:wor kbook/d:sh eets", _ns Manager);
  4379                if (shee tsNode !=  null)
  4380                {
  4381                    XmlN ode sheetN ode = shee tsNode.Sel ectSingleN ode(string .Format(". /d:sheet[@ sheetId={0 }]", works heet.Sheet ID), _nsMa nager);
  4382                    if ( sheetNode  != null)
  4383                    {
  4384                         sheetsNode .RemoveChi ld(sheetNo de);
  4385                    }
  4386                }
  4387                // delet e workshee t from the  Dictionar y object
  4388                _workshe ets.Remove (positionI D);
  4389           }
  4390           #e ndregion
  4391  
  4392           // / <summary >
  4393           // / Returns  the worksh eet at the  specified  position.   
  4394           // / </summar y>
  4395           // / <param n ame="Posit ionID">The  position  of the wor ksheet. 1- base</para m>
  4396           // / <returns ></returns >
  4397           pu blic Excel Worksheet  this[int P ositionID]
  4398           {
  4399                get
  4400                {
  4401                    retu rn (_works heets[Posi tionID]);
  4402                }
  4403           }
  4404  
  4405           // / <summary >
  4406           // / Returns  the worksh eet matchi ng the spe cified nam e
  4407           // / </summar y>
  4408           // / <param n ame="Name" >The name  of the wor ksheet</pa ram>
  4409           // / <returns ></returns >
  4410           pu blic Excel Worksheet  this[strin g Name]
  4411           {
  4412                get
  4413                {
  4414                    Exce lWorksheet  xlWorkshe et = null;
  4415                    fore ach (Excel Worksheet  worksheet  in _worksh eets.Value s)
  4416                    {
  4417                         if (worksh eet.Name = = Name)
  4418                             xlWork sheet = wo rksheet;
  4419                    }
  4420                    retu rn (xlWork sheet);
  4421                    //th row new Ex ception(st ring.Forma t("ExcelWo rksheets E rror: Work sheet '{0} ' not foun d!",Name)) ;
  4422                }
  4423           }
  4424  
  4425           // / <summary >
  4426           // / Copies t he named w orksheet a nd creates  a new wor ksheet in  the same w orkbook
  4427           // / </summar y>
  4428           // / <param n ame="Name" >The name  of the exi sting work sheet</par am>
  4429           // / <param n ame="NewNa me">The na me of the  new worksh eet to cre ate</param >
  4430           // / <returns ></returns >
  4431           pu blic Excel Worksheet  Copy(strin g Name, st ring NewNa me)
  4432           {
  4433                // TODO:  implement  copy work sheet
  4434                throw ne w Exceptio n("The met hod or ope ration is  not implem ented.");
  4435           }
  4436           #e ndregion
  4437       } // e nd class W orksheets
  4438   }]]></Proj ectItem>
  4439                      <P rojectItem
  4440                         Name="Exce lCell.cs"
  4441                         Encoding=" UTF8"><![C DATA[/* 
  4442    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  4443    * 
  4444    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  4445    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  4446    * 
  4447    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  4448    * mailto: dr.john.tu nnicliffe@ btinternet .com
  4449    * All rig hts reserv ed.
  4450    * 
  4451    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  4452    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  4453    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  4454    * 
  4455    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  4456    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  4457    * 
  4458    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  4459    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  4460    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  4461    * 
  4462    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  4463    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  4464    */
  4465  
  4466   /*
  4467    * Code ch ange notes :
  4468    * 
  4469    * Author                                                             Change                                               Date
  4470    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4471    * John Tu nnicliffe               Initial  Release          01-J an-2007
  4472    * ******* ********** ********** ********** ********** ********** ********** ********** *
  4473    */
  4474   using Syst em;
  4475   using Syst em.Xml;
  4476   using Syst em.Text.Re gularExpre ssions;
  4477   using Syst em.IO.Pack aging;
  4478  
  4479   namespace  OfficeOpen Xml
  4480   {
  4481       /// <s ummary>
  4482       /// Ex celCell re presents a n individu al workshe et cell.
  4483       /// </ summary>
  4484       public  class Exc elCell
  4485       {
  4486           #r egion Cell  Private P roperties
  4487           pr ivate Exce lWorksheet  _xlWorksh eet;
  4488           pr ivate XmlE lement _ce llElement;
  4489           pr ivate int  _row;
  4490           pr ivate int  _col;
  4491           pr ivate stri ng _value;
  4492           pr ivate stri ng _valueR ef;
  4493           pr ivate stri ng _formul a;
  4494           pr ivate stri ng _dataTy pe;
  4495           pr ivate Uri  _hyperlink ;
  4496           #e ndregion
  4497  
  4498           #r egion Exce lCell Cons tructor
  4499           // / <summary >
  4500           // / Creates  a new inst ance of Ex celCell cl ass. For i nternal us e only!
  4501           // / </summar y>
  4502           // / <param n ame="xlWor ksheet">A  reference  to the par ent worksh eet</param >
  4503           // / <param n ame="row"> The row nu mber in th e parent w orksheet</ param>
  4504           // / <param n ame="col"> The column  number in  the paren t workshee t</param>
  4505           pr otected in ternal Exc elCell(Exc elWorkshee t xlWorksh eet, int r ow, int co l)
  4506           {
  4507                if (row  < 1 || col  < 1)
  4508                    thro w new Exce ption("Exc elCell Con structor:  Negative r ow and col umn number s are not  allowed");
  4509                if (xlWo rksheet ==  null)
  4510                    thro w new Exce ption("Exc elCell Con structor:  xlWorkshee t must be  set to a v alid refer ence");
  4511  
  4512                _xlWorks heet = xlW orksheet;
  4513                _row = r ow;
  4514                _col = c ol;
  4515  
  4516                _cellEle ment = Get OrCreateCe llElement( xlWorkshee t, row, co l);
  4517           }
  4518           #e ndregion   // END Cel l Construc tors
  4519  
  4520           #r egion Exce lCell Publ ic Propert ies
  4521  
  4522           // / <summary >
  4523           // / Read-onl y referenc e to the c ell's XmlN ode (for i nternal us e only)
  4524           // / </summar y>
  4525           pr otected in ternal Xml Element El ement { ge t { return  _cellElem ent; } }
  4526           // / <summary >
  4527           // / Read-onl y referenc e to the c ell's row  number
  4528           // / </summar y>
  4529           pu blic int R ow { get {  return _r ow; } }
  4530           // / <summary >
  4531           // / Read-onl y referenc e to the c ell's colu mn number
  4532           // / </summar y>
  4533           pu blic int C olumn { ge t { return  _col; } }
  4534           // / <summary >
  4535           // / Returns  the curren t cell add ress in th e standard  Excel for mat (e.g.  'E5')
  4536           // / </summar y>
  4537           pu blic strin g CellAddr ess { get  { return G etCellAddr ess(_row,  _col); } }
  4538           // / <summary >
  4539           // / Returns  true if th e cell's c ontents ar e numeric.
  4540           // / </summar y>
  4541           pu blic bool  IsNumeric  { get { re turn (IsNu mericValue (Value));  } }
  4542  
  4543           #r egion Exce lCell Valu e
  4544           // / <summary >
  4545           // / Gets/set s the valu e of the c ell.
  4546           // / </summar y>
  4547           pu blic strin g Value
  4548           {
  4549                get
  4550                {
  4551                    if ( _value ==  null)
  4552                    {
  4553                         bool IsNum eric = tru e;  // def ault
  4554                         XmlNode va lueNode =  _cellEleme nt.SelectS ingleNode( "./d:v", _ xlWorkshee t.NameSpac eManager);
  4555                         if (valueN ode == nul l)
  4556                         {
  4557                             _value Ref = "";
  4558                             _value  = "";
  4559                         }
  4560                         else
  4561                         {
  4562                             _value Ref = valu eNode.Inne rText;
  4563                             // che ck to see  if we have  a string  value
  4564                             XmlAtt ribute att r = _cellE lement.Att ributes["t "];
  4565                             if (at tr != null )
  4566                                 Is Numeric =  !(attr.Val ue == "s") ;
  4567  
  4568                             if (Is Numeric)
  4569                                 _v alue = _va lueRef;
  4570                             else
  4571                                 _v alue = Get SharedStri ng(Convert .ToInt32(_ valueRef)) ;
  4572                         }
  4573                    }
  4574                    retu rn (_value );
  4575                }
  4576                set
  4577                {
  4578                    _val ue = value ;
  4579                    // s et the val ue of the  cell
  4580                    XmlN ode valueN ode = _cel lElement.S electSingl eNode("./d :v", _xlWo rksheet.Na meSpaceMan ager);
  4581                    if ( valueNode  == null)
  4582                    {
  4583                         //  Cell w ith delete d value. A dd a value  element n ow.
  4584                         valueNode  = _cellEle ment.Owner Document.C reateEleme nt("v", Ex celPackage .schemaMai n);
  4585                         _cellEleme nt.AppendC hild(value Node);
  4586                    }
  4587                    if ( IsNumericV alue(value ))
  4588                    {
  4589                         _valueRef  = value;
  4590                         // ensure  we remove  any existi ng string  data type  flag
  4591                         XmlAttribu te attr =  _cellEleme nt.Attribu tes["t"];
  4592                         if (attr ! = null)
  4593                             _cellE lement.Att ributes.Re moveNamedI tem("t");
  4594                    }
  4595                    else
  4596                    {
  4597                         _valueRef  = SetShare dString(_v alue).ToSt ring();
  4598                         XmlAttribu te attr =  _cellEleme nt.Attribu tes["t"];
  4599                         if (attr = = null)
  4600                         {
  4601                             attr =  _cellElem ent.OwnerD ocument.Cr eateAttrib ute("t");
  4602                             _cellE lement.Att ributes.Ap pend(attr) ;
  4603                         }
  4604                         attr.Value  = "s";
  4605                    }
  4606                    valu eNode.Inne rText = _v alueRef;
  4607                }
  4608           }
  4609           #e ndregion
  4610  
  4611           #r egion Exce lCell Data Type
  4612           // / <summary >
  4613           // / Gets/set s the cell 's data ty pe.  
  4614           // / Not curr ently impl emented co rrectly!
  4615           // / </summar y>
  4616           pu blic strin g DataType
  4617           {
  4618                // TODO:  complete  DataType
  4619                get
  4620                {
  4621                    stri ng retValu e = null;
  4622                    XmlA ttribute a ttr = _cel lElement.A ttributes[ "t"];
  4623                    if ( attr != nu ll)
  4624                    {
  4625                         _dataType  = "";  //  default
  4626                    }
  4627                    retu rn (retVal ue);
  4628                }
  4629                set
  4630                {
  4631                    _dat aType = va lue;
  4632                    XmlA ttribute a ttr = _cel lElement.A ttributes[ "t"];
  4633                    if ( attr == nu ll)
  4634                    {
  4635                         attr = _ce llElement. OwnerDocum ent.Create Attribute( "t");
  4636                         _cellEleme nt.Attribu tes.Append (attr);
  4637                    }
  4638                    attr .Value = v alue;
  4639                }
  4640           }
  4641           #e ndregion
  4642  
  4643           #r egion Exce lCell Styl e
  4644           // / <summary >
  4645           // / Allows y ou to set  the cell's  style usi ng a named  style
  4646           // / </summar y>
  4647           pu blic strin g Style
  4648           {
  4649                get { re turn (_xlW orksheet.G etStyleNam e(StyleID) ); }
  4650                set { St yleID = _x lWorksheet .GetStyleI D(value);  }
  4651           }
  4652  
  4653           // / <summary >
  4654           // / Allows y ou to set  the cell's  style usi ng the num ber of the  style.
  4655           // / Useful w hen coping  styles fr om one cel l to anoth er.
  4656           // / </summar y>
  4657           pu blic int S tyleID
  4658           {
  4659                get
  4660                {
  4661                    int  retValue =  0;
  4662                    stri ng sid = _ cellElemen t.GetAttri bute("s");
  4663                    if ( sid != "")  retValue  = int.Pars e(sid);
  4664                    retu rn retValu e;
  4665                }
  4666                set { _c ellElement .SetAttrib ute("s", v alue.ToStr ing()); }
  4667           }
  4668           #e ndregion
  4669  
  4670           #r egion Exce lCell Hype rlink
  4671           // / <summary >
  4672           // / Allows y ou to set/ get the ce ll's Hyper link
  4673           // / </summar y>
  4674           pu blic Uri H yperlink
  4675           {
  4676                get
  4677                {
  4678                    if ( _hyperlink  == null)
  4679                    {
  4680                         string sea rchString  = string.F ormat("//d :hyperlink s/d:hyperl ink[@ref =  '{0}']",  CellAddres s);
  4681                         XmlNode li nkNode = _ cellElemen t.OwnerDoc ument.Sele ctSingleNo de(searchS tring, _xl Worksheet. NameSpaceM anager);
  4682                         if (linkNo de != null )
  4683                         {
  4684                             XmlAtt ribute att r = (XmlAt tribute)li nkNode.Att ributes.Ge tNamedItem ("id", Exc elPackage. schemaRela tionships) ;
  4685                             if (at tr != null )
  4686                             {
  4687                                 st ring relID  = attr.Va lue;
  4688                                 //  now use t he relID t o lookup t he hyperli nk in the  relationsh ip table
  4689                                 Pa ckageRelat ionship re lationship  = _xlWork sheet.Part .GetRelati onship(rel ID);
  4690                                 _h yperlink =  relations hip.Target Uri;
  4691                             }
  4692                         }
  4693                    }
  4694                    retu rn (_hyper link);
  4695                }
  4696                set
  4697                {
  4698                    _hyp erlink = v alue;
  4699                    XmlN ode linkPa rent = _ce llElement. OwnerDocum ent.Select SingleNode ("//d:hype rlinks", _ xlWorkshee t.NameSpac eManager);
  4700                    if ( linkParent  == null)
  4701                    {
  4702                         // create  the hyperl inks node
  4703                         linkParent  = _cellEl ement.Owne rDocument. CreateElem ent("hyper links", Ex celPackage .schemaMai n);
  4704                         XmlNode pr evNode = _ cellElemen t.OwnerDoc ument.Sele ctSingleNo de("//d:co nditionalF ormatting" , _xlWorks heet.NameS paceManage r);
  4705                         if (prevNo de == null )
  4706                         {
  4707                             prevNo de = _cell Element.Ow nerDocumen t.SelectSi ngleNode(" //d:mergeC ells", _xl Worksheet. NameSpaceM anager);
  4708                             if (pr evNode ==  null)
  4709                             {
  4710                                 pr evNode = _ cellElemen t.OwnerDoc ument.Sele ctSingleNo de("//d:sh eetData",  _xlWorkshe et.NameSpa ceManager) ;
  4711                             }
  4712                         }
  4713                         _cellEleme nt.OwnerDo cument.Doc umentEleme nt.InsertA fter(linkP arent, pre vNode);
  4714                    }
  4715  
  4716                    stri ng searchS tring = st ring.Forma t("./d:hyp erlink[@re f = '{0}'] ", CellAdd ress);
  4717                    XmlE lement lin kNode = (X mlElement) linkParent .SelectSin gleNode(se archString , _xlWorks heet.NameS paceManage r);
  4718                    XmlA ttribute a ttr;
  4719                    if ( linkNode = = null)
  4720                    {
  4721                         linkNode =  _cellElem ent.OwnerD ocument.Cr eateElemen t("hyperli nk", Excel Package.sc hemaMain);
  4722                         // now add  cell addr ess attrib ute
  4723                         linkNode.S etAttribut e("ref", C ellAddress );
  4724                         linkParent .AppendChi ld(linkNod e);
  4725                    }
  4726  
  4727                    attr  = (XmlAtt ribute)lin kNode.Attr ibutes.Get NamedItem( "id", Exce lPackage.s chemaRelat ionships);
  4728                    if ( attr == nu ll)
  4729                    {
  4730                         attr = _ce llElement. OwnerDocum ent.Create Attribute( "r", "id",  ExcelPack age.schema Relationsh ips);
  4731                         linkNode.A ttributes. Append(att r);
  4732                    }
  4733                    Pack ageRelatio nship rela tionship =  null;
  4734                    stri ng relID =  attr.Valu e;
  4735                    if ( relID == " ")
  4736                         relationsh ip = _xlWo rksheet.Pa rt.CreateR elationshi p(_hyperli nk, Target Mode.Exter nal, @"htt p://schema s.openxmlf ormats.org /officeDoc ument/2006 /relations hips/hyper link");
  4737                    else
  4738                    {
  4739                         relationsh ip = _xlWo rksheet.Pa rt.GetRela tionship(r elID);
  4740                         if (relati onship.Tar getUri !=  _hyperlink )
  4741                             relati onship = _ xlWorkshee t.Part.Cre ateRelatio nship(_hyp erlink, Ta rgetMode.E xternal, @ "http://sc hemas.open xmlformats .org/offic eDocument/ 2006/relat ionships/h yperlink") ;
  4742                    }
  4743                    attr .Value = r elationshi p.Id;
  4744  
  4745                    //at tr = (XmlA ttribute)l inkNode.At tributes.G etNamedIte m("display ", ExcelPa ckage.sche maMain);
  4746                    //if  (attr ==  null)
  4747                    //{
  4748                    //   attr = _ce llNode.Own erDocument .CreateAtt ribute("di splay");
  4749                    //   linkNode.A ttributes. Append(att r);
  4750                    //}
  4751                    //at tr.Value =  Display;
  4752                }
  4753           }
  4754           #e ndregion
  4755  
  4756           #r egion Exce lCell Form ula
  4757           // / <summary >
  4758           // / Provides  read/writ e access t o the cell 's formula .
  4759           // / </summar y>
  4760           pu blic strin g Formula
  4761           {
  4762                get
  4763                {
  4764                    if ( _formula = = null)
  4765                    {
  4766                         XmlNode fo rmulaNode  = _cellEle ment.Selec tSingleNod e("./d:f",  _xlWorksh eet.NameSp aceManager );
  4767                         if (formul aNode != n ull)
  4768                         {
  4769                             // fir st check i f we have  a shared f ormula
  4770                             XmlAtt ribute att r = (XmlAt tribute)fo rmulaNode. Attributes .GetNamedI tem("t");
  4771                             if (at tr == null )
  4772                             {
  4773                                 //  we have a  standard  formula
  4774                                 _f ormula = f ormulaNode .InnerText ;
  4775                             }
  4776                             else
  4777                             {
  4778                                 if  (attr.Val ue == "sha red")
  4779                                 {
  4780                                      // we mu st obtain  the formul a from the  shared ce ll referen ce
  4781                                      XmlAttri bute refAt tr = (XmlA ttribute)f ormulaNode .Attribute s.GetNamed Item("si") ;
  4782                                      if (refA ttr == nul l)
  4783                                          thro w new Exce ption("Exc elCell for mula marke d as share d but no r eference I D found (i .e. si att ribute)");
  4784                                      else
  4785                                      {
  4786                                          stri ng searchS tring = st ring.Forma t("//d:she etData/d:r ow/d:c/d:f [@si='{0}' ]", refAtt r.Value);
  4787                                          XmlN ode refNod e = _cellE lement.Own erDocument .SelectSin gleNode(se archString , _xlWorks heet.NameS paceManage r);
  4788                                          if ( refNode ==  null)
  4789                                               throw new  Exception( "ExcelCell  formula m arked as s hared but  no referen ce node fo und");
  4790                                          else
  4791                                               _formula =  refNode.I nnerText;
  4792                                      }
  4793                                 }
  4794                                 el se
  4795                                      _formula  = formula Node.Inner Text;
  4796                             }
  4797                         }
  4798                    }
  4799                    retu rn (_formu la);
  4800                }
  4801                set
  4802                {
  4803                    // E xample cel l content  for formul as
  4804                    // < f>D7</f>
  4805                    // < f>SUM(D6:D 8)</f>
  4806                    // < f>F6+F7+F8 </f>
  4807                    _for mula = val ue;
  4808                    // i nsert the  formula in to the cel l
  4809                    XmlE lement for mulaElemen t = (XmlEl ement)_cel lElement.S electSingl eNode("./d :f", _xlWo rksheet.Na meSpaceMan ager);
  4810                    if ( formulaEle ment == nu ll)
  4811                    {
  4812                         formulaEle ment = Add FormulaEle ment();
  4813                    }
  4814                    // w e are sett ing the fo rmula dire ctly, so r emove the  shared att ributes (i f present)
  4815                    form ulaElement .Attribute s.RemoveNa medItem("t ", ExcelPa ckage.sche maMain);
  4816                    form ulaElement .Attribute s.RemoveNa medItem("s i", ExcelP ackage.sch emaMain);
  4817  
  4818                    // s et the for mula
  4819                    form ulaElement .InnerText  = value;
  4820  
  4821                    // f orce Excel  to re-cal culate the  cell by r emoving th e value
  4822                    Remo veValue();
  4823                }
  4824           }
  4825           #e ndregion
  4826  
  4827           #r egion Exce lCell Comm ent
  4828           // / <summary >
  4829           // / Returns  the commen t as a str ing
  4830           // / </summar y>
  4831           pu blic strin g Comment
  4832           {
  4833                // TODO:  implement  get which  will obta in the tex t of the c omment fro m the comm ent1.xml f ile
  4834                get
  4835                {
  4836                    thro w new Exce ption("Fun ction not  yet implem ented!");
  4837                }
  4838                // TODO:  implement  set which  will add  comments t o the work sheet
  4839                // this  will requi re you to  add entrie s to the D rawing.vml  file to g et this to  work! 
  4840           }
  4841           #e ndregion
  4842  
  4843           //  TODO: con ditional f ormatting
  4844  
  4845           #e ndregion   // END Cel l Public P roperties
  4846  
  4847           #r egion Exce lCell Publ ic Methods
  4848           // / <summary >
  4849           // / Removes  the XmlNod e that hol ds the cel l's value.
  4850           // / Useful w hen the ce ll contain s a formul a as this  will force  Excel to  re-calcula te the cel l's conten t.
  4851           // / </summar y>
  4852           pu blic void  RemoveValu e()
  4853           {
  4854                XmlNode  valueNode  = _cellEle ment.Selec tSingleNod e("./d:v",  _xlWorksh eet.NameSp aceManager );
  4855                if (valu eNode != n ull)
  4856                {
  4857                    _cel lElement.R emoveChild (valueNode );
  4858                }
  4859           }
  4860  
  4861           // / <summary >
  4862           // / Returns  the cell's  value as  a string.
  4863           // / </summar y>
  4864           // / <returns >The cell' s value</r eturns>
  4865           pu blic overr ide string  ToString( ) { return  Value; }
  4866  
  4867           #e ndregion   // END Cel l Public M ethods
  4868  
  4869           #r egion Exce lCell Priv ate Method s
  4870  
  4871           #r egion IsNu mericValue
  4872           // / <summary >
  4873           // / Returns  true if th e string c ontains a  numeric va lue
  4874           // / </summar y>
  4875           // / <param n ame="Value "></param>
  4876           // / <returns ></returns >
  4877           pu blic stati c bool IsN umericValu e(string V alue)
  4878           {
  4879                Regex ob jNotIntPat tern = new  Regex("[^ 0-9,.-]");
  4880                Regex ob jIntPatter n = new Re gex("^-[0- 9,.]+$|^[0 -9,.]+$");
  4881  
  4882                return ! objNotIntP attern.IsM atch(Value ) &&
  4883                                 ob jIntPatter n.IsMatch( Value);
  4884           }
  4885           #e ndregion
  4886  
  4887           #r egion Shar edString m ethods
  4888           pr ivate int  SetSharedS tring(stri ng Value)
  4889           {
  4890                //  Assu me the str ing won't  be found ( assign it  an impossi ble index) :
  4891                int inde x = -1;
  4892  
  4893                //  Chec k to see i f the stri ng already  exists. I f so, retr ieve its i ndex.
  4894                //  This  search is  case-sens itive, but  Excel sto res differ ently case d
  4895                //  stri ngs separa tely withi n the stri ng file.
  4896                XmlNode  stringNode  = _xlWork sheet.xlPa ckage.Work book.Share dStringsXm l.SelectSi ngleNode(s tring.Form at("//d:si [d:t='{0}' ]", Value) , _xlWorks heet.NameS paceManage r);
  4897                if (stri ngNode ==  null)
  4898                {
  4899                    //   You didn't  find the  string in  the table,  so add it  now.
  4900                    stri ngNode = _ xlWorkshee t.xlPackag e.Workbook .SharedStr ingsXml.Cr eateElemen t("si", Ex celPackage .schemaMai n);
  4901                    XmlE lement tex tNode = _x lWorksheet .xlPackage .Workbook. SharedStri ngsXml.Cre ateElement ("t", Exce lPackage.s chemaMain) ;
  4902                    text Node.Inner Text = Val ue;
  4903                    stri ngNode.App endChild(t extNode);
  4904                    _xlW orksheet.x lPackage.W orkbook.Sh aredString sXml.Docum entElement .AppendChi ld(stringN ode);
  4905                }
  4906  
  4907                if (stri ngNode !=  null)
  4908                {
  4909                    //   Retrieve t he index o f the sele cted node.
  4910                    //   To do that , count th e number o f precedin g
  4911                    //   nodes by r etrieving  a referenc e to those  nodes.
  4912                    XmlN odeList no des = stri ngNode.Sel ectNodes(" preceding- sibling::d :si", _xlW orksheet.N ameSpaceMa nager);
  4913                    inde x = nodes. Count;
  4914                }
  4915                return ( index);
  4916           }
  4917  
  4918           pr ivate stri ng GetShar edString(i nt stringI D)
  4919           {
  4920                string r etValue =  null;
  4921                XmlNodeL ist string Nodes = _x lWorksheet .xlPackage .Workbook. SharedStri ngsXml.Sel ectNodes(s tring.Form at("//d:si ", stringI D), _xlWor ksheet.Nam eSpaceMana ger);
  4922                XmlNode  stringNode  = stringN odes[strin gID];
  4923                if (stri ngNode !=  null)
  4924                    retV alue = str ingNode.In nerText;
  4925                return ( retValue);
  4926           }
  4927           #e ndregion
  4928  
  4929           #r egion AddF ormulaNode
  4930           // / <summary >
  4931           // / Adds a n ew formula  node to t he cell in  the corre ct locatio n
  4932           // / </summar y>
  4933           // / <returns ></returns >
  4934           pr otected in ternal Xml Element Ad dFormulaEl ement()
  4935           {
  4936                XmlEleme nt formula Element =  _cellEleme nt.OwnerDo cument.Cre ateElement ("f", Exce lPackage.s chemaMain) ;
  4937                // find  the right  location f or insersi on
  4938                XmlNode  valueNode  = _cellEle ment.Selec tSingleNod e("./d:v",  _xlWorksh eet.NameSp aceManager );
  4939                if (valu eNode == n ull)
  4940                    _cel lElement.A ppendChild (formulaEl ement);
  4941                else
  4942                    _cel lElement.I nsertBefor e(formulaE lement, va lueNode);
  4943                return f ormulaElem ent;
  4944           }
  4945           #e ndregion
  4946  
  4947           #r egion GetO rCreateCel lElement
  4948           pr ivate XmlE lement Get OrCreateCe llElement( ExcelWorks heet xlWor ksheet, in t row, int  col)
  4949           {
  4950                XmlEleme nt cellNod e = null;
  4951                // this  will creat e the row  if it does  not alrea dy exist
  4952                XmlNode  rowNode =  xlWorkshee t.Row(row) .Node;
  4953                if (rowN ode != nul l)
  4954                {
  4955                    cell Node = (Xm lElement)r owNode.Sel ectSingleN ode(string .Format(". /d:c[@" +  ExcelWorks heet.tempC olumnNumbe rTag + "=' {0}']", co l), _xlWor ksheet.Nam eSpaceMana ger);
  4956                    if ( cellNode = = null)
  4957                    {
  4958                         //  Didn't  find the  cell so cr eate the c ell elemen t
  4959                         cellNode =  xlWorkshe et.Workshe etXml.Crea teElement( "c", Excel Package.sc hemaMain);
  4960                         cellNode.S etAttribut e(ExcelWor ksheet.tem pColumnNum berTag, co l.ToString ());
  4961  
  4962                         // You mus t insert t he new cel l at the c orrect loc ation.
  4963                         // Loop th rough the  children,  looking fo r the firs t cell tha t is
  4964                         // beyond  the cell y ou're tryi ng to inse rt. Insert  before th at cell.
  4965                         XmlNode bi ggerNode =  null;
  4966                         XmlNodeLis t cellNode s = rowNod e.SelectNo des("./d:c ", _xlWork sheet.Name SpaceManag er);
  4967                         if (cellNo des != nul l)
  4968                         {
  4969                             foreac h (XmlNode  node in c ellNodes)
  4970                             {
  4971                                 Xm lNode colN ode = node .Attribute s[ExcelWor ksheet.tem pColumnNum berTag];
  4972                                 if  (colNode  != null)
  4973                                 {
  4974                                      int colF ound = Con vert.ToInt 32(colNode .Value);
  4975                                      if (colF ound > col )
  4976                                      {
  4977                                          bigg erNode = n ode;
  4978                                          brea k;
  4979                                      }
  4980                                 }
  4981                             }
  4982                         }
  4983                         if (bigger Node == nu ll)
  4984                         {
  4985                             rowNod e.AppendCh ild(cellNo de);
  4986                         }
  4987                         else
  4988                         {
  4989                             rowNod e.InsertBe fore(cellN ode, bigge rNode);
  4990                         }
  4991                    }
  4992                }
  4993                return ( cellNode);
  4994           }
  4995           #e ndregion
  4996  
  4997           #e ndregion / / END Cell  Private M ethods
  4998  
  4999           #r egion Exce lCell Stat ic Cell Ad dress Mani pulation R outines
  5000  
  5001           #r egion GetC olumnLette r
  5002           // / <summary >
  5003           // / Returns  the charac ter repres entation o f the numb ered colum n
  5004           // / </summar y>
  5005           // / <param n ame="iColu mnNumber"> The number  of the co lumn</para m>
  5006           // / <returns >The lette r represen ting the c olumn</ret urns>
  5007           pr otected in ternal sta tic string  GetColumn Letter(int  iColumnNu mber)
  5008           {
  5009                int iMai nLetterUni code;
  5010                char iMa inLetterCh ar;
  5011  
  5012                // TODO:  we need t o cater fo r columns  larger tha n ZZ
  5013                if (iCol umnNumber  > 26)
  5014                {
  5015                    int  iFirstLett erUnicode  = 0;  // d efault
  5016                    int  iFirstLett er = Conve rt.ToInt32 (iColumnNu mber / 26) ;
  5017                    char  iFirstLet terChar;
  5018                    if ( Convert.To Double(iFi rstLetter)  == (Conve rt.ToDoubl e(iColumnN umber) / 2 6))
  5019                    {
  5020                         iFirstLett erUnicode  = iFirstLe tter - 1 +  64;
  5021                         iMainLette rChar = 'Z ';
  5022                    }
  5023                    else
  5024                    {
  5025                         iFirstLett erUnicode  = iFirstLe tter + 64;
  5026                         iMainLette rUnicode =  (iColumnN umber - (i FirstLette r * 26)) +  64;
  5027                         iMainLette rChar = (c har)iMainL etterUnico de;
  5028                    }
  5029                    iFir stLetterCh ar = (char )iFirstLet terUnicode ;
  5030  
  5031                    retu rn (iFirst LetterChar .ToString( ) + iMainL etterChar. ToString() );
  5032                }
  5033                // if we  get here  we only ha ve a singl e letter t o return
  5034                iMainLet terUnicode  = 64 + iC olumnNumbe r;
  5035                iMainLet terChar =  (char)iMai nLetterUni code;
  5036                return ( iMainLette rChar.ToSt ring());
  5037           }
  5038           #e ndregion
  5039  
  5040           #r egion GetC olumnNumbe r
  5041           // / <summary >
  5042           // / Returns  the column  number fr om the cel lAddress
  5043           // / e.g. D5  would retu rn 5
  5044           // / </summar y>
  5045           // / <param n ame="cellA ddress">An  Excel for mat cell a ddresss (e .g. D5)</p aram>
  5046           // / <returns >The colum n number</ returns>
  5047           pu blic stati c int GetC olumnNumbe r(string c ellAddress )
  5048           {
  5049                // find  out positi on where c haracters  stop and n umbers beg in
  5050                int iCol umnNumber  = 0;
  5051                int iPos  = 0;
  5052                bool fou nd = false ;
  5053                foreach  (char chr  in cellAdd ress.ToCha rArray())
  5054                {
  5055                    iPos ++;
  5056                    if ( char.IsNum ber(chr))
  5057                    {
  5058                         found = tr ue;
  5059                         break;
  5060                    }
  5061                }
  5062  
  5063                if (foun d)
  5064                {
  5065                    stri ng AlphaPa rt = cellA ddress.Sub string(0,  cellAddres s.Length -  (cellAddr ess.Length  + 1 - iPo s));
  5066  
  5067                    int  length = A lphaPart.L ength;
  5068                    int  count = 0;
  5069                    fore ach (char  chr in Alp haPart.ToC harArray() )
  5070                    {
  5071                         count++;
  5072                         int chrVal ue = ((int )chr - 64) ;
  5073                         switch (le ngth)
  5074                         {
  5075                             case 1 :
  5076                                 iC olumnNumbe r = chrVal ue;
  5077                                 br eak;
  5078                             case 2 :
  5079                                 if  (count ==  1)
  5080                                      iColumnN umber += ( chrValue *  26);
  5081                                 el se
  5082                                      iColumnN umber += c hrValue;
  5083                                 br eak;
  5084                             case 3 :
  5085                                 if  (count ==  1)
  5086                                      iColumnN umber += ( chrValue *  26 * 26);
  5087                                 if  (count ==  2)
  5088                                      iColumnN umber += ( chrValue *  26);
  5089                                 el se
  5090                                      iColumnN umber += c hrValue;
  5091                                 br eak;
  5092                             case 4 :
  5093                                 if  (count ==  1)
  5094                                      iColumnN umber += ( chrValue *  26 * 26 *  26);
  5095                                 if  (count ==  2)
  5096                                      iColumnN umber += ( chrValue *  26 * 26);
  5097                                 if  (count ==  3)
  5098                                      iColumnN umber += ( chrValue *  26);
  5099                                 el se
  5100                                      iColumnN umber += c hrValue;
  5101                                 br eak;
  5102                         }
  5103                    }
  5104                }
  5105                return ( iColumnNum ber);
  5106           }
  5107           #e ndregion
  5108  
  5109           #r egion GetR owNumber
  5110           // / <summary >
  5111           // / Returns  the row nu mber from  the cellAd dress
  5112           // / e.g. D5  would retu rn 5
  5113           // / </summar y>
  5114           // / <param n ame="cellA ddress">An  Excel for mat cell a ddresss (e .g. D5)</p aram>
  5115           // / <returns >The row n umber</ret urns>
  5116           pu blic stati c int GetR owNumber(s tring cell Address)
  5117           {
  5118                // find  out positi on where c haracters  stop and n umbers beg in
  5119                int iPos  = 0;
  5120                bool fou nd = false ;
  5121                foreach  (char chr  in cellAdd ress.ToCha rArray())
  5122                {
  5123                    iPos ++;
  5124                    if ( char.IsNum ber(chr))
  5125                    {
  5126                         found = tr ue;
  5127                         break;
  5128                    }
  5129                }
  5130                if (foun d)
  5131                {
  5132                    stri ng NumberP art = cell Address.Su bstring(iP os - 1, ce llAddress. Length - ( iPos - 1)) ;
  5133                    if ( ExcelCell. IsNumericV alue(Numbe rPart))
  5134                         return (in t.Parse(Nu mberPart)) ;
  5135                }
  5136                return ( 0);
  5137           }
  5138           #e ndregion
  5139  
  5140           #r egion GetC ellAddress
  5141           // / <summary >
  5142           // / Returns  the AlphaN umeric rep resentatio n that Exc el expects  for a Cel l Address
  5143           // / </summar y>
  5144           // / <param n ame="iRow" >The numbe r of the r ow</param>
  5145           // / <param n ame="iColu mn">The nu mber of th e column i n the work sheet</par am>
  5146           // / <returns >The cell  address in  the forma t A1</retu rns>
  5147           pu blic stati c string G etCellAddr ess(int iR ow, int iC olumn)
  5148           {
  5149                return ( GetColumnL etter(iCol umn) + iRo w.ToString ());
  5150           }
  5151           #e ndregion
  5152  
  5153           #r egion IsVa lidCellAdd ress
  5154           // / <summary >
  5155           // / Checks t hat a cell  address ( e.g. A5) i s valid.
  5156           // / </summar y>
  5157           // / <param n ame="cellA ddress">Th e alphanum eric cell  address</p aram>
  5158           // / <returns >True if t he cell ad dress is v alid</retu rns>
  5159           pu blic stati c bool IsV alidCellAd dress(stri ng cellAdd ress)
  5160           {
  5161                int row  = GetRowNu mber(cellA ddress);
  5162                int col  = GetColum nNumber(ce llAddress) ;
  5163  
  5164                if (GetC ellAddress (row, col)  == cellAd dress)
  5165                    retu rn (true);
  5166                else
  5167                    retu rn (false) ;
  5168           }
  5169           #e ndregion
  5170  
  5171           #r egion Upda teFormulaR eferences
  5172           // / <summary >
  5173           // / Updates  the Excel  formula so  that all  the cellAd dresses ar e incremen ted by the  row and c olumn incr ements
  5174           // / if they  fall after  the after Row and af terColumn.
  5175           // / Supports  inserting  rows and  columns in to existin g template s.
  5176           // / </summar y>
  5177           // / <param n ame="Formu la">The Ex cel formul a</param>
  5178           // / <param n ame="rowIn crement">T he amount  to increme nt the cel l referenc e by</para m>
  5179           // / <param n ame="colIn crement">T he amount  to increme nt the cel l referenc e by</para m>
  5180           // / <param n ame="after Row">Only  change row s after th is row</pa ram>
  5181           // / <param n ame="after Column">On ly change  columns af ter this c olumn</par am>
  5182           // / <returns ></returns >
  5183           pu blic stati c string U pdateFormu laReferenc es(string  Formula, i nt rowIncr ement, int  colIncrem ent, int a fterRow, i nt afterCo lumn)
  5184           {
  5185                string n ewFormula  = "";
  5186  
  5187                Regex ge tAlphaNume ric = new  Regex(@"[^ a-zA-Z0-9] ", RegexOp tions.Igno reCase);
  5188                Regex ge tSigns = n ew Regex(@ "[a-zA-Z0- 9]", Regex Options.Ig noreCase);
  5189  
  5190                string a lphaNumeri c = getAlp haNumeric. Replace(Fo rmula, " " ).Replace( "  ", " ") ;
  5191                string s igns = get Signs.Repl ace(Formul a, " ");
  5192                char[] c hrSigns =  signs.ToCh arArray();
  5193                int coun t = 0;
  5194                int leng th = 0;
  5195                foreach  (string ce llAddress  in alphaNu meric.Spli t(' '))
  5196                {
  5197                    coun t++;
  5198                    leng th += cell Address.Le ngth;
  5199  
  5200                    // i f the cell Address co ntains an  alpha part  followed  by a numbe r part, th en it is a  valid cel lAddress
  5201                    int  row = GetR owNumber(c ellAddress );
  5202                    int  col = GetC olumnNumbe r(cellAddr ess);
  5203                    stri ng newCell Address =  "";
  5204                    if ( ExcelCell. GetCellAdd ress(row,  col) == ce llAddress)    // this  checks if  the cellA ddress is  valid
  5205                    {
  5206                         // we have  a valid c ell addres s so chang e its valu e (if nece ssary)
  5207                         if (row >=  afterRow)
  5208                             row +=  rowIncrem ent;
  5209                         if (col >=  afterColu mn)
  5210                             col +=  colIncrem ent;
  5211                         newCellAdd ress = Get CellAddres s(row, col );
  5212                    }
  5213                    if ( newCellAdd ress == "" )
  5214                    {
  5215                         newFormula  += cellAd dress;
  5216                    }
  5217                    else
  5218                    {
  5219                         newFormula  += newCel lAddress;
  5220                    }
  5221  
  5222                    for  (int i = l ength; i <  signs.Len gth; i++)
  5223                    {
  5224                         if (chrSig ns[i] == '  ')
  5225                             break;
  5226                         if (chrSig ns[i] != '  ')
  5227                         {
  5228                             length ++;
  5229                             newFor mula += ch rSigns[i]. ToString() ;
  5230                         }
  5231                    }
  5232                }
  5233                return ( newFormula );
  5234           }
  5235           #e ndregion
  5236  
  5237           #e ndregion / / END Cell Address Ma nipulation  Routines
  5238       }
  5239   }]]></Proj ectItem>
  5240                      <P rojectItem
  5241                         Name="Exce lStyles.cs "
  5242                         Encoding=" UTF8"><![C DATA[/* 
  5243    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  5244    * 
  5245    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  5246    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  5247    * 
  5248    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  5249    * mailto: dr.john.tu nnicliffe@ btinternet .com
  5250    * All rig hts reserv ed.
  5251    * 
  5252    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  5253    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  5254    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  5255    * 
  5256    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  5257    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  5258    * 
  5259    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  5260    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  5261    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  5262    * 
  5263    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  5264    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  5265    */
  5266  
  5267   /*
  5268    * Code ch ange notes :
  5269    * 
  5270    * Author                                                             Change                                               Date
  5271    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5272    * John Tu nnicliffe               Initial  Release          01-J an-2007
  5273    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5274    */
  5275   using Syst em;
  5276   using Syst em.Xml;
  5277  
  5278   namespace  OfficeOpen Xml
  5279   {
  5280       class  ExcelStyle s
  5281       {
  5282           //  TODO: wri te a wrapp er around  the styles .xml
  5283       }
  5284   }]]></Proj ectItem>
  5285                      <P rojectItem
  5286                         Name="Exce lHeaderFoo ter.cs"
  5287                         Encoding=" UTF8"><![C DATA[/* 
  5288    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  5289    * 
  5290    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  5291    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  5292    * 
  5293    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  5294    * mailto: dr.john.tu nnicliffe@ btinternet .com
  5295    * All rig hts reserv ed.
  5296    * 
  5297    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  5298    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  5299    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  5300    * 
  5301    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  5302    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  5303    * 
  5304    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  5305    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  5306    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  5307    * 
  5308    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  5309    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  5310    */
  5311  
  5312   /*
  5313    * Code ch ange notes :
  5314    * 
  5315    * Author                                                             Change                                               Date
  5316    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5317    * John Tu nnicliffe               Initial  Release          01-J an-2007
  5318    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5319    */
  5320   using Syst em;
  5321   using Syst em.Xml;
  5322  
  5323   namespace  OfficeOpen Xml
  5324   {
  5325       #regio n class Ex celHeaderF ooterText
  5326       /// <s ummary>
  5327       /// He lper class  for Excel HeaderFoot er - simpl y stores t he three h eader or f ooter
  5328       /// te xt strings
  5329       /// </ summary>
  5330       public  class Exc elHeaderFo oterText
  5331       {
  5332           // / <summary >
  5333           // / Sets the  text to a ppear on t he left ha nd side of  the heade r (or foot er) on the  worksheet .
  5334           // / </summar y>
  5335           pu blic strin g LeftAlig nedText =  null;
  5336           // / <summary >
  5337           // / Sets the  text to a ppear in t he center  of the hea der (or fo oter) on t he workshe et.
  5338           // / </summar y>
  5339           pu blic strin g Centered Text = nul l;
  5340           // / <summary >
  5341           // / Sets the  text to a ppear on t he right h and side o f the head er (or foo ter) on th e workshee t.
  5342           // / </summar y>
  5343           pu blic strin g RightAli gnedText =  null;
  5344       }
  5345       #endre gion
  5346  
  5347       #regio n ExcelHea derFooter
  5348       /// <s ummary>
  5349       /// Re presents t he Header  and Footer  on an Exc el Workshe et
  5350       /// </ summary>
  5351       public  class Exc elHeaderFo oter
  5352       {
  5353           #r egion Stat ic Propert ies
  5354           // / <summary >
  5355           // / Use this  to insert  the page  number int o the head er or foot er of the  worksheet
  5356           // / </summar y>
  5357           pu blic const  string Pa geNumber =  @"&P";
  5358           // / <summary >
  5359           // / Use this  to insert  the numbe r of pages  into the  header or  footer of  the worksh eet
  5360           // / </summar y>
  5361           pu blic const  string Nu mberOfPage s = @"&N";
  5362           // / <summary >
  5363           // / Use this  to insert  the name  of the wor ksheet int o the head er or foot er of the  worksheet
  5364           // / </summar y>
  5365           pu blic const  string Sh eetName =  @"&A";
  5366           // / <summary >
  5367           // / Use this  to insert  the full  path to th e folder c ontaining  the workbo ok into th e header o r footer o f the work sheet
  5368           // / </summar y>
  5369           pu blic const  string Fi lePath = @ "&Z";
  5370           // / <summary >
  5371           // / Use this  to insert  the name  of the wor kbook file  into the  header or  footer of  the worksh eet
  5372           // / </summar y>
  5373           pu blic const  string Fi leName = @ "&F";
  5374           // / <summary >
  5375           // / Use this  to insert  the curre nt date in to the hea der or foo ter of the  worksheet
  5376           // / </summar y>
  5377           pu blic const  string Cu rrentDate  = @"&D";
  5378           // / <summary >
  5379           // / Use this  to insert  the curre nt time in to the hea der or foo ter of the  worksheet
  5380           // / </summar y>
  5381           pu blic const  string Cu rrentTime  = @"&T";
  5382           #e ndregion
  5383  
  5384           #r egion Exce lHeaderFoo ter Privat e Properti es
  5385           pr ivate XmlE lement _he aderFooter Node;
  5386           pr ivate Exce lHeaderFoo terText _o ddHeader;
  5387           pr ivate Exce lHeaderFoo terText _o ddFooter;
  5388           pr ivate Exce lHeaderFoo terText _e venHeader;
  5389           pr ivate Exce lHeaderFoo terText _e venFooter;
  5390           pr ivate Exce lHeaderFoo terText _f irstHeader ;
  5391           pr ivate Exce lHeaderFoo terText _f irstFooter ;
  5392           pr ivate Syst em.Nullabl e<bool> _a lignWithMa rgins = nu ll;
  5393           pr ivate Syst em.Nullabl e<bool> _d ifferentOd dEven = nu ll;
  5394           pr ivate Syst em.Nullabl e<bool> _d ifferentFi rst = null ;
  5395           #e ndregion
  5396  
  5397           #r egion Exce lHeaderFoo ter Constr uctor
  5398           // / <summary >
  5399           // / ExcelHea derFooter  Constructo r
  5400           // / For inte rnal use o nly!
  5401           // / </summar y>
  5402           // / <param n ame="Heade rFooterNod e"></param >
  5403           pr otected in ternal Exc elHeaderFo oter(XmlEl ement Head erFooterNo de)
  5404           {
  5405                if (Head erFooterNo de.Name !=  "headerFo oter")
  5406                    thro w new Exce ption("Exc elHeaderFo oter Error : Passed i nvalid hea derFooter  node");
  5407                else
  5408                {
  5409                    _hea derFooterN ode = Head erFooterNo de;
  5410                    // T ODO: popul ate struct ure based  on XML con tent
  5411                }
  5412           }
  5413           #e ndregion
  5414  
  5415           #r egion alig nWithMargi ns
  5416           // / <summary >
  5417           // / Gets/set s the alig nWithMargi ns attribu te
  5418           // / </summar y>
  5419           pu blic bool  AlignWithM argins
  5420           {
  5421                get
  5422                {
  5423                    if ( _alignWith Margins ==  null)
  5424                    {
  5425                         _alignWith Margins =  false;
  5426                         XmlAttribu te attr =  (XmlAttrib ute)_heade rFooterNod e.Attribut es.GetName dItem("ali gnWithMarg ins");
  5427                         if (attr ! = null)
  5428                         {
  5429                             if (at tr.Value = = "1")
  5430                                 _a lignWithMa rgins = tr ue;
  5431                         }
  5432                    }
  5433                    retu rn _alignW ithMargins .Value;
  5434                }
  5435                set
  5436                {
  5437                    _ali gnWithMarg ins = valu e;
  5438                    XmlA ttribute a ttr = (Xml Attribute) _headerFoo terNode.At tributes.G etNamedIte m("alignWi thMargins" );
  5439                    if ( attr == nu ll)
  5440                    {
  5441                         attr = _he aderFooter Node.Attri butes.Appe nd(_header FooterNode .OwnerDocu ment.Creat eAttribute ("alignWit hMargins") );
  5442                    }
  5443                    if ( value)
  5444                         attr.Value  = "1";
  5445                    else
  5446                         attr.Value  = "0";
  5447                }
  5448           }
  5449           #e ndregion
  5450  
  5451           #r egion diff erentOddEv en
  5452           // / <summary >
  5453           // / Gets/set s the flag  that tell s Excel to  display d ifferent h eaders and  footers o n odd and  even pages .
  5454           // / </summar y>
  5455           pu blic bool  differentO ddEven
  5456           {
  5457                get
  5458                {
  5459                    if ( _different OddEven ==  null)
  5460                    {
  5461                         _different OddEven =  false;
  5462                         XmlAttribu te attr =  (XmlAttrib ute)_heade rFooterNod e.Attribut es.GetName dItem("dif ferentOddE ven");
  5463                         if (attr ! = null)
  5464                         {
  5465                             if (at tr.Value = = "1")
  5466                                 _d ifferentOd dEven = tr ue;
  5467                         }
  5468                    }
  5469                    retu rn _differ entOddEven .Value;
  5470                }
  5471                set
  5472                {
  5473                    _dif ferentOddE ven = valu e;
  5474                    XmlA ttribute a ttr = (Xml Attribute) _headerFoo terNode.At tributes.G etNamedIte m("differe ntOddEven" );
  5475                    if ( attr == nu ll)
  5476                    {
  5477                         attr = _he aderFooter Node.Attri butes.Appe nd(_header FooterNode .OwnerDocu ment.Creat eAttribute ("differen tOddEven") );
  5478                    }
  5479                    if ( value)
  5480                         attr.Value  = "1";
  5481                    else
  5482                         attr.Value  = "0";
  5483                }
  5484           }
  5485           #e ndregion
  5486  
  5487           #r egion diff erentFirst
  5488           // / <summary >
  5489           // / Gets/set s the flag  that tell s Excel to  display d ifferent h eaders and  footers o n the firs t page of  the worksh eet.
  5490           // / </summar y>
  5491           pu blic bool  differentF irst
  5492           {
  5493                get
  5494                {
  5495                    if ( _different First == n ull)
  5496                    {
  5497                         _different First = fa lse;
  5498                         XmlAttribu te attr =  (XmlAttrib ute)_heade rFooterNod e.Attribut es.GetName dItem("dif ferentFirs t");
  5499                         if (attr ! = null)
  5500                         {
  5501                             if (at tr.Value = = "1")
  5502                                 _d ifferentFi rst = true ;
  5503                         }
  5504                    }
  5505                    retu rn _differ entFirst.V alue;
  5506                }
  5507                set
  5508                {
  5509                    _dif ferentFirs t = value;
  5510                    XmlA ttribute a ttr = (Xml Attribute) _headerFoo terNode.At tributes.G etNamedIte m("differe ntFirst");
  5511                    if ( attr == nu ll)
  5512                    {
  5513                         attr = _he aderFooter Node.Attri butes.Appe nd(_header FooterNode .OwnerDocu ment.Creat eAttribute ("differen tFirst"));
  5514                    }
  5515                    if ( value)
  5516                         attr.Value  = "1";
  5517                    else
  5518                         attr.Value  = "0";
  5519                }
  5520           }
  5521           #e ndregion
  5522  
  5523           #r egion Exce lHeaderFoo ter Public  Propertie s
  5524           // / <summary >
  5525           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e header o n odd numb ered pages  of the do cument.
  5526           // / If you w ant the sa me header  on both od d and even  pages, th en only se t values i n this Exc elHeaderFo oterText c lass.
  5527           // / </summar y>
  5528           pu blic Excel HeaderFoot erText odd Header { g et { if (_ oddHeader  == null) _ oddHeader  = new Exce lHeaderFoo terText();  return _o ddHeader;  } }
  5529           // / <summary >
  5530           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e footer o n odd numb ered pages  of the do cument.
  5531           // / If you w ant the sa me footer  on both od d and even  pages, th en only se t values i n this Exc elHeaderFo oterText c lass.
  5532           // / </summar y>
  5533           pu blic Excel HeaderFoot erText odd Footer { g et { if (_ oddFooter  == null) _ oddFooter  = new Exce lHeaderFoo terText();  return _o ddFooter;  } }
  5534           //  evenHeade r and even Footer set  different OddEven =  true
  5535           // / <summary >
  5536           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e header o n even num bered page s of the d ocument.
  5537           // / </summar y>
  5538           pu blic Excel HeaderFoot erText eve nHeader {  get { if ( _evenHeade r == null)  _evenHead er = new E xcelHeader FooterText (); differ entOddEven  = true; r eturn _eve nHeader; }  }
  5539           // / <summary >
  5540           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e footer o n even num bered page s of the d ocument.
  5541           // / </summar y>
  5542           pu blic Excel HeaderFoot erText eve nFooter {  get { if ( _evenFoote r == null)  _evenFoot er = new E xcelHeader FooterText (); differ entOddEven  = true; r eturn _eve nFooter; }  }
  5543           //  firstHead er and fir stFooter s et differe ntFirst =  true
  5544           // / <summary >
  5545           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e header o n the firs t page of  the docume nt.
  5546           // / </summar y>
  5547           pu blic Excel HeaderFoot erText fir stHeader {  get { if  (_firstHea der == nul l) _firstH eader = ne w ExcelHea derFooterT ext(); dif ferentFirs t = true;  return _fi rstHeader;  } }
  5548           // / <summary >
  5549           // / Provides  access to  a ExcelHe aderFooter Text class  that allo ws you to  set the va lues of th e footer o n the firs t page of  the docume nt.
  5550           // / </summar y>
  5551           pu blic Excel HeaderFoot erText fir stFooter {  get { if  (_firstFoo ter == nul l) _firstF ooter = ne w ExcelHea derFooterT ext(); dif ferentFirs t = true;  return _fi rstFooter;  } }
  5552           #e ndregion
  5553  
  5554           #r egion Save   //  Exce lHeaderFoo ter
  5555           // / <summary >
  5556           // / Saves th e header a nd footer  informatio n to the w orksheet X ML
  5557           // / </summar y>
  5558           pr otected in ternal voi d Save()
  5559           {
  5560                //  The  header/foo ter elemen ts must ap pear in th is order,  if they ap pear:
  5561                //  <odd Header />
  5562                //  <odd Footer />
  5563                //  <eve nHeader />
  5564                //  <eve nFooter />
  5565                //  <fir stHeader / >
  5566                //  <fir stFooter / >
  5567  
  5568                XmlNode  node;
  5569                if (_odd Header !=  null)
  5570                {
  5571                    node  = _header FooterNode .AppendChi ld(_header FooterNode .OwnerDocu ment.Creat eElement(" oddHeader" , ExcelPac kage.schem aMain));
  5572                    node .InnerText  = GetHead erFooterTe xt(oddHead er);
  5573                }
  5574                if (_odd Footer !=  null)
  5575                {
  5576                    node  = _header FooterNode .AppendChi ld(_header FooterNode .OwnerDocu ment.Creat eElement(" oddFooter" , ExcelPac kage.schem aMain));
  5577                    node .InnerText  = GetHead erFooterTe xt(oddFoot er);
  5578                }
  5579  
  5580                // only  set evenHe ader and e venFooter 
  5581                if (diff erentOddEv en)
  5582                {
  5583                    if ( _evenHeade r != null)
  5584                    {
  5585                         node = _he aderFooter Node.Appen dChild(_he aderFooter Node.Owner Document.C reateEleme nt("evenHe ader", Exc elPackage. schemaMain ));
  5586                         node.Inner Text = Get HeaderFoot erText(eve nHeader);
  5587                    }
  5588                    if ( _evenFoote r != null)
  5589                    {
  5590                         node = _he aderFooter Node.Appen dChild(_he aderFooter Node.Owner Document.C reateEleme nt("evenFo oter", Exc elPackage. schemaMain ));
  5591                         node.Inner Text = Get HeaderFoot erText(eve nFooter);
  5592                    }
  5593                }
  5594  
  5595                // only  set firstH eader and  firstFoote r
  5596                if (diff erentFirst )
  5597                {
  5598                    if ( _firstHead er != null )
  5599                    {
  5600                         node = _he aderFooter Node.Appen dChild(_he aderFooter Node.Owner Document.C reateEleme nt("firstH eader", Ex celPackage .schemaMai n));
  5601                         node.Inner Text = Get HeaderFoot erText(fir stHeader);
  5602                    }
  5603                    if ( _firstFoot er != null )
  5604                    {
  5605                         node = _he aderFooter Node.Appen dChild(_he aderFooter Node.Owner Document.C reateEleme nt("firstF ooter", Ex celPackage .schemaMai n));
  5606                         node.Inner Text = Get HeaderFoot erText(fir stFooter);
  5607                    }
  5608                }
  5609           }
  5610  
  5611           // / <summary >
  5612           // / Helper f unction fo r Save
  5613           // / </summar y>
  5614           // / <param n ame="inStr uct"></par am>
  5615           // / <returns ></returns >
  5616           pr otected in ternal str ing GetHea derFooterT ext(ExcelH eaderFoote rText inSt ruct)
  5617           {
  5618                string r etValue =  "";
  5619                if (inSt ruct.LeftA lignedText  != null)
  5620                    retV alue += "& L" + inStr uct.LeftAl ignedText;
  5621                if (inSt ruct.Cente redText !=  null)
  5622                    retV alue += "& C" + inStr uct.Center edText;
  5623                if (inSt ruct.Right AlignedTex t != null)
  5624                    retV alue += "& R" + inStr uct.RightA lignedText ;
  5625                return r etValue;
  5626           }
  5627           #e ndregion
  5628       }
  5629       #endre gion
  5630  
  5631   }]]></Proj ectItem>
  5632                      <P rojectItem
  5633                         Name="Exce lPackage.c s"
  5634                         Encoding=" UTF8"><![C DATA[/* 
  5635    * You may  amend and  distribut e as you l ike, but d on't remov e this hea der!
  5636    * 
  5637    * ExcelPa ckage prov ides serve r-side gen eration of  Excel 200 7 spreadsh eets.
  5638    * See htt p://www.co deplex.com /ExcelPack age for de tails.
  5639    * 
  5640    * Copyrig ht 2007 ©  Dr John Tu nnicliffe 
  5641    * mailto: dr.john.tu nnicliffe@ btinternet .com
  5642    * All rig hts reserv ed.
  5643    * 
  5644    * ExcelPa ckage is a n Open Sou rce projec t provided  under the  
  5645    * GNU Gen eral Publi c License  (GPL) as p ublished b y the 
  5646    * Free So ftware Fou ndation, I nc., 59 Te mple Place , Suite 33 0, Boston,  MA 02111- 1307 USA
  5647    * 
  5648    * The GNU  General P ublic Lice nse can be  viewed at  http://ww w.opensour ce.org/lic enses/gpl- license.ph p
  5649    * If you  unfamiliar  with this  license o r have que stions abo ut it, her e is an ht tp://www.g nu.org/lic enses/gpl- faq.html
  5650    * 
  5651    * The cod e for this  project m ay be used  and redis tributed b y any mean s PROVIDIN G it is 
  5652    * not sol d for prof it without  the autho r's writte n consent,  and provi ding that  this notic
  5653    * and the  author's  name and a ll copyrig ht notices  remain in tact.
  5654    * 
  5655    * All cod e and exec utables ar e provided  "as is" w ith no war ranty eith er express  or implie d. 
  5656    * The aut hor accept s no liabi lity for a ny damage  or loss of  business  that this  product ma y cause.
  5657    */
  5658  
  5659   /*
  5660    * Code ch ange notes :
  5661    * 
  5662    * Author                                                             Change                                               Date
  5663    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5664    * John Tu nnicliffe               Initial  Release          01-J an-2007
  5665    * ******* ********** ********** ********** ********** ********** ********** ********** *
  5666    */
  5667   using Syst em;
  5668   using Syst em.Xml;
  5669   using Syst em.IO;
  5670   using Syst em.IO.Pack aging;
  5671  
  5672   namespace  OfficeOpen Xml
  5673   {
  5674       /// <s ummary>
  5675       /// Re presents a n Excel 20 07 XLSX fi le package .  Opens t he file an d provides  access
  5676       /// to  all the c omponents  (workbook,  worksheet s, propert ies etc.).
  5677       /// </ summary>
  5678       public  class Exc elPackage  : IDisposa ble
  5679       {
  5680           #r egion Prop erties
  5681           // / <summary >
  5682           // / Provides  access to  the main  schema use d by all E xcel compo nents
  5683           // / </summar y>
  5684           pr otected in ternal con st string  schemaMain  = @"http: //schemas. openxmlfor mats.org/s preadsheet ml/2006/ma in";
  5685           // / <summary >
  5686           // / Provides  access to  the relat ionship sc hema
  5687           // / </summar y>
  5688           pr otected in ternal con st string  schemaRela tionships  = @"http:/ /schemas.o penxmlform ats.org/of ficeDocume nt/2006/re lationship s";
  5689  
  5690           pr ivate Pack age _packa ge;
  5691           pr ivate stri ng _output FolderPath ;
  5692  
  5693           pr ivate Exce lWorkbook  _workbook;
  5694  
  5695           #e ndregion
  5696  
  5697           #r egion Exce lPackage C onstructor s
  5698           // / <summary >
  5699           // / Creates  a new inst ance of th e ExcelPac kage class  based on  a existing  file or c reates a n ew file. 
  5700           // / </summar y>
  5701           // / <param n ame="newFi le">If new File exist s, it is o pened.  Ot herwise it  is create d from scr atch.</par am>
  5702           pu blic Excel Package(Fi leInfo new File)
  5703           {
  5704                _outputF olderPath  = newFile. DirectoryN ame;
  5705                if (newF ile.Exists )
  5706                    // o pen the ex isting pac kage
  5707                    _pac kage = Pac kage.Open( newFile.Fu llName, Fi leMode.Ope n, FileAcc ess.ReadWr ite);
  5708                else
  5709                {
  5710                    // c reate a ne w package  and add th e main wor kbook.xml  part
  5711                    _pac kage = Pac kage.Open( newFile.Fu llName, Fi leMode.Cre ate, FileA ccess.Read Write);
  5712  
  5713                    // s ave a temp orary part  to create  the defau lt applica tion/xml c ontent typ e
  5714                    Uri  uriDefault ContentTyp e = new Ur i("/defaul t.xml", Ur iKind.Rela tive);
  5715                    Pack agePart pa rtTemp = _ package.Cr eatePart(u riDefaultC ontentType , "applica tion/xml") ;
  5716  
  5717                    XmlD ocument wo rkbook = W orkbook.Wo rkbookXml;  // this w ill create  the workb ook xml in  the packa ge
  5718  
  5719                    // c reate the  relationsh ip to the  main part
  5720                    _pac kage.Creat eRelations hip(Workbo ok.Workboo kUri, Targ etMode.Int ernal, sch emaRelatio nships + " /officeDoc ument");
  5721  
  5722                    // r emove the  temporary  part that  created th e default  xml conten t type
  5723                    _pac kage.Delet ePart(uriD efaultCont entType);
  5724                }
  5725           }
  5726  
  5727           // / <summary >
  5728           // / Creates  a new inst ance of th e ExcelPac kage class  based on  a existing  template.
  5729           // / WARNING:  If newFil e exists,  it is dele ted!
  5730           // / </summar y>
  5731           // / <param n ame="newFi le">The na me of the  Excel file  to be cre ated</para m>
  5732           // / <param n ame="templ ate">The n ame of the  Excel tem plate to u se as the  basis of t he new Exc el file</p aram>
  5733           pu blic Excel Package(Fi leInfo new File, File Info templ ate)
  5734           {
  5735                _outputF olderPath  = newFile. DirectoryN ame;
  5736                if (temp late.Exist s)
  5737                {
  5738                    if ( newFile.Ex ists)
  5739                    {
  5740                         try
  5741                         {
  5742                             newFil e.Delete() ;
  5743                         }
  5744                         catch (Exc eption ex)
  5745                         {
  5746                             throw  new Except ion("Excel Package Er ror: Targe t file alr eady exist s and is l ocked.", e x);
  5747                         }
  5748                    }
  5749                    newF ile = temp late.CopyT o(newFile. FullName);
  5750                    newF ile.IsRead Only = fal se;
  5751  
  5752                    _pac kage = Pac kage.Open( newFile.Fu llName, Fi leMode.Ope n, FileAcc ess.ReadWr ite);
  5753                }
  5754                else
  5755                    thro w new Exce ption("Exc elPackage  Error: Pas sed invali d Template Path to Ex cel Templa te");
  5756           }
  5757           #e ndregion
  5758  
  5759           #r egion Publ ic Propert ies
  5760           // / <summary >
  5761           // / Setting  DebugMode  to true wi ll cause t he Save me thod to wr ite the 
  5762           // / raw XML  components  to the sa me folder  as the out put Excel  file
  5763           // / </summar y>
  5764           pu blic bool  DebugMode  = false;
  5765  
  5766           // / <summary >
  5767           // / Returns  a referenc e to the f ile packag e
  5768           // / </summar y>
  5769           pu blic Packa ge Package  { get { r eturn (_pa ckage); }  }
  5770  
  5771           // / <summary >
  5772           // / Returns  a referenc e to the w orkbook co mponent wi thin the p ackage.
  5773           // / All work sheets and  cells can  be access ed through  the workb ook.
  5774           // / </summar y>
  5775           pu blic Excel Workbook W orkbook
  5776           {
  5777                get
  5778                {
  5779                    if ( _workbook  == null)
  5780                         _workbook  = new Exce lWorkbook( this);
  5781                    retu rn (_workb ook);
  5782                }
  5783           }
  5784           #e ndregion
  5785  
  5786           #r egion Writ eDebugFile
  5787           // / <summary >
  5788           // / Writes a  debug fil e to the o utput fold er, but on ly if Debu gMode = tr ue
  5789           // / </summar y>
  5790           // / <param n ame="XmlDo c">The Xml Document t o save to  the file s ystem</par am>
  5791           // / <param n ame="subFo lder">The  subfolder  in which t he file is  to be sav ed</param>
  5792           // / <param n ame="FileN ame">The n ame of the  file to s ave.</para m>
  5793           pr otected in ternal voi d WriteDeb ugFile(Xml Document X mlDoc, str ing subFol der, strin g FileName )
  5794           {
  5795                if (Debu gMode)
  5796                {
  5797                    Dire ctoryInfo  dir = new  DirectoryI nfo(_outpu tFolderPat h + "/" +  subFolder) ;
  5798                    if ( !dir.Exist s)
  5799                         dir.Create ();
  5800  
  5801                    File Info file  = new File Info(_outp utFolderPa th + "/" +  subFolder  + "/" + F ileName);
  5802                    if ( file.Exist s)
  5803                    {
  5804                         file.IsRea dOnly = fa lse;
  5805                         file.Delet e();
  5806                    }
  5807                    XmlD oc.Save(fi le.FullNam e);
  5808                }
  5809           }
  5810           #e ndregion
  5811  
  5812  
  5813           // /// <summa ry>
  5814           // /// Return s the Uri  to a paren t part (e. g. workboo k.xml) 
  5815           // /// </summ ary>
  5816           // /// <param  name="Rel ationship" >The relat ionship th e </param>
  5817           // /// <retur ns></retur ns>
  5818           // protected  internal U ri GetMain Uri(string  Relations hip)
  5819           // {
  5820           //   Uri uriM ain = null ;
  5821           //   //  Get  the Uri to  the main  part
  5822           //   Uri uriP arent = ne w Uri("/",  UriKind.R elative);
  5823           //   PackageR elationshi p relation ship = Get MainRelati onship(Rel ationship) ;
  5824           //   if (rela tionship ! = null)
  5825           //     uriMai n = PackUr iHelper.Re solvePartU ri(uriPare nt, relati onship.Tar getUri);
  5826           //   return ( uriMain);
  5827           // }
  5828  
  5829           // /// <summa ry>
  5830           // /// 
  5831           // /// </summ ary>
  5832           // /// <param  name="Rel ationship" ></param>
  5833           // /// <retur ns></retur ns>
  5834           // protected  internal P ackageRela tionship G etMainRela tionship(s tring Rela tionship)
  5835           // {
  5836           //   PackageR elationshi p relMain  = null;
  5837           //   foreach  (PackageRe lationship  relations hip in _pa ckage.GetR elationshi psByType(s chemaRelat ionships +  "/" + Rel ationship) )
  5838           //   {
  5839           //     relMai n = relati onship;
  5840           //     break;   //  Ther e should o nly be one  main part
  5841           //   }
  5842           //   return ( relMain);
  5843           // }
  5844  
  5845           #r egion GetS haredUri
  5846           // / <summary >
  5847           // / Obtains  the Uri to  a shared  part (e.g.  sharedstr ings.xml)
  5848           // / </summar y>
  5849           // / <param n ame="uriPa rent">Uri  to the par ent compon ent</param >
  5850           // / <param n ame="Relat ionship">T he relatio nship to t he parent  component< /param>
  5851           // / <returns >The Uri t o a shared  part</ret urns>
  5852           pr otected in ternal Uri  GetShared Uri(Uri ur iParent, s tring Rela tionship)
  5853           {
  5854                Uri uriS hared = nu ll;
  5855                PackageP art partPa rent = _pa ckage.GetP art(uriPar ent);
  5856                //  Get  the Uri to  the share d part
  5857                foreach  (System.IO .Packaging .PackageRe lationship  relations hip in par tParent.Ge tRelations hipsByType (schemaRel ationships  + "/" + R elationshi p))
  5858                {
  5859                    uriS hared = Pa ckUriHelpe r.ResolveP artUri(uri Parent, re lationship .TargetUri );
  5860                    brea k;  //  Th ere should  only be o ne shared  resource
  5861                }
  5862                return ( uriShared) ;
  5863           }
  5864           #e ndregion
  5865  
  5866           #r egion AddS chemaAttri bute
  5867           // / <summary >
  5868           // / Adds add itional sc hema attri butes to t he root el ement
  5869           // / </summar y>
  5870           // / <param n ame="root" >The root  element</p aram>
  5871           // / <param n ame="nameS pace">The  namespace  of the sch ema</param >
  5872           // / <param n ame="schem a">The sch ema to app ly</param>
  5873           pr otected in ternal sta tic void A ddSchemaAt tribute(Xm lElement r oot, strin g schema,  string nam eSpace)
  5874           {
  5875                XmlAttri bute nsAtt ribute = r oot.OwnerD ocument.Cr eateAttrib ute("xmlns ", nameSpa ce, @"http ://www.w3. org/2000/x mlns/");
  5876                nsAttrib ute.Value  = schema;
  5877                root.Att ributes.Ap pend(nsAtt ribute);
  5878           }
  5879  
  5880           // / <summary >
  5881           // / Adds add itional sc hema attri butes to t he root el ement
  5882           // / </summar y>
  5883           // / <param n ame="root" >The root  element</p aram>
  5884           // / <param n ame="schem a">The sch ema to app ly</param>
  5885           pr otected in ternal sta tic void A ddSchemaAt tribute(Xm lElement r oot, strin g schema)
  5886           {
  5887                XmlAttri bute nsAtt ribute = r oot.OwnerD ocument.Cr eateAttrib ute("xmlns ");
  5888                nsAttrib ute.Value  = schema;
  5889                root.Att ributes.Ap pend(nsAtt ribute);
  5890           }
  5891           #e ndregion
  5892  
  5893           #r egion Save Part
  5894           // / <summary >
  5895           // / Saves th e XmlDocum ent into t he package  at the sp ecified Ur i.
  5896           // / </summar y>
  5897           // / <param n ame="uriPa rt">The Ur i of the c omponent</ param>
  5898           // / <param n ame="xmlPa rt">The Xm lDocument  to save</p aram>
  5899           pr otected in ternal voi d SavePart (Uri uriPa rt, XmlDoc ument xmlP art)
  5900           {
  5901                PackageP art partPa ck = _pack age.GetPar t(uriPart) ;
  5902                xmlPart. Save(partP ack.GetStr eam(FileMo de.Create,  FileAcces s.Write));
  5903           }
  5904           #e ndregion
  5905  
  5906           #r egion Disp ose
  5907           // / <summary >
  5908           // / Closes t he package .
  5909           // / </summar y>
  5910           pu blic void  Dispose()
  5911           {
  5912                _package .Close();
  5913           }
  5914           #e ndregion
  5915  
  5916           #r egion Save   // Excel Package sa ve
  5917           // / <summary >
  5918           // / Saves al l the comp onents bac k into the  package.
  5919           // / This met hod recurs ively call s the Save  method on  all sub-c omponents.
  5920           // / </summar y>
  5921           pu blic void  Save()
  5922           {
  5923                Workbook .Save();
  5924           }
  5925           #e ndregion
  5926  
  5927           #r egion GetX mlFromUri
  5928           // / <summary >
  5929           // / Obtains  the XmlDoc ument from  the packa ge referen ced by the  Uri
  5930           // / </summar y>
  5931           // / <param n ame="uriPa rt">The Ur i to the c omponent</ param>
  5932           // / <returns >The XmlDo cument of  the compon ent</retur ns>
  5933           pr otected in ternal Xml Document G etXmlFromU ri(Uri uri Part)
  5934           {
  5935                XmlDocum ent xlPart  = new Xml Document() ;
  5936                PackageP art packPa rt = _pack age.GetPar t(uriPart) ;
  5937                xlPart.L oad(packPa rt.GetStre am());
  5938                return ( xlPart);
  5939           }
  5940           #e ndregion
  5941       }
  5942   }]]></Proj ectItem>
  5943                      <B inaryItem
  5944                         Name="ST_f ce6863cd8c 94187b7bd2 528130634e 1.csproj.d ll">TVqQAA MAAAAEAAAA //8AALgAAA AAAAAAQAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA
  5945   AAAAgAAAAA 4fug4AtAnN IbgBTM0hVG hpcyBwcm9n cmFtIGNhbm 5vdCBiZSBy dW4gaW4gRE 9TIG1v
  5946   ZGUuDQ0KJA AAAAAAAABQ RQAATAEDAC 1PklcAAAAA AAAAAOAAAi ELAQsAABYB AAAIAAAAAA AA3jUB
  5947   AAAgAAAAQA EAAAAAEAAg AAAAAgAABA AAAAAAAAAG AAAAAAAAAA CAAQAAAgAA AAAAAAMAYI UAABAA
  5948   ABAAAAAAEA AAEAAAAAAA ABAAAAAAAA AAAAAAAIg1 AQBTAAAAAE ABAOgEAAAA AAAAAAAAAA AAAAAA
  5949   AAAAAGABAA wAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  5950   AAAAIAAACA AAAAAAAAAA AAAACCAAAE gAAAAAAAAA AAAAAC50ZX h0AAAA5BUB AAAgAAAAFg EAAAIA
  5951   AAAAAAAAAA AAAAAAACAA AGAucnNyYw AAAOgEAAAA QAEAAAYAAA AYAQAAAAAA AAAAAAAAAA BAAABA
  5952   LnJlbG9jAA AMAAAAAGAB AAACAAAAHg EAAAAAAAAA AAAAAAAAQA AAQgAAAAAA AAAAAAAAAA AAAADA
  5953   NQEAAAAAAE gAAAACAAUA mJAAAPCkAA ABAAAAAAAA AOCPAAC4AA AAAAAAAAAA AAAAAAAAAA AAAAAA
  5954   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA MwBQBMAAAA AAAAAAIoDQ AACgQXMgQF Fy8LcgEAAH BzDgAA
  5955   CnoDLQtykA AAcHMOAAAK egIDfQEAAA QCBH0DAAAE AgV9BAAABA ICAwQFKBoA AAZ9AgAABC oeAnsC
  5956   AAAEKh4Cew MAAAQqHgJ7 BAAABCpKAn sDAAAEAnsE AAAEKB4AAA YqMgIoBwAA BigWAAAGKh MwAwCs
  5957   AAAAAQAAEQ J7BQAABDqa AAAAFwoCew IAAARyGQEA cAJ7AQAABG 9qAAAGbw8A AAoLBy0YAn IlAQBw
  5958   fQYAAAQCci UBAHB9BQAA BCthAgdvEA AACn0GAAAE AnsCAAAEbx EAAApyJwEA cG8SAAAKDA gsFAhv
  5959   EwAACnIrAQ BwKBQAAAoW /gEKBiwOAg J7BgAABH0F AAAEKxcCAg J7BgAABCgV AAAKKBgAAA Z9BQAA
  5960   BAJ7BQAABC oTMAMAAQEA AAIAABECA3 0FAAAEAnsC AAAEchkBAH ACewEAAARv agAABm8PAA AKCgYt
  5961   KAJ7AgAABG 8WAAAKci8B AHByMwEAcG 8XAAAKCgJ7 AgAABAZvGA AACiYDKBYA AAYsOAIDfQ YAAAQC
  5962   ewIAAARvEQ AACnInAQBw bxIAAAoLBy x+AnsCAAAE bxEAAApyJw EAcG8ZAAAK JitmAgICew UAAAQo
  5963   FwAABg0SAy gaAAAKfQYA AAQCewIAAA RvEQAACnIn AQBwbxIAAA oMCC0oAnsC AAAEbxYAAA pyJwEA
  5964   cG8bAAAKDA J7AgAABG8R AAAKCG8cAA AKJghyKwEA cG8dAAAKBg J7BgAABG8e AAAKKgAAAB MwAgAo
  5965   AAAAAwAAER QKAnsCAAAE bxEAAApyJw EAcG8SAAAK CwcsCwJyJQ EAcH0IAAAE BioTMAIAUA AAAAQA
  5966   ABECA30IAA AEAnsCAAAE bxEAAApyJw EAcG8SAAAK CgYtKAJ7Ag AABG8WAAAK cicBAHBvGw AACgoC
  5967   ewIAAARvEQ AACgZvHAAA CiYGA28dAA AKKkoCewEA AAQCKA0AAA ZvfgAABipO AgJ7AQAABA NvfwAA
  5968   BigOAAAGKg ATMAIAKQAA AAUAABEWCg J7AgAABHIr AQBwbx8AAA oLB3IlAQBw KCAAAAosBw coIQAA
  5969   CgoGKmICew IAAARyKwEA cA8BKBoAAA pvIgAACioA ABMwAwCLAA AABgAAEQJ7 CQAABBQoIw AACix2
  5970   cqcBAHACKA UAAAYoJAAA CgoCewIAAA RvFgAACgYC ewEAAARvag AABm8PAAAK CwcsRQdvEQ AACnL5
  5971   AQBwcv8BAH BvJQAACnQo AAABDAgsJw hvEwAACg0C ewEAAARvZw AABglvJgAA ChMEAhEEby cAAAp9
  5972   CQAABAJ7CQ AABCoAEzAE AAgCAAAHAA ARAgN9CQAA BAJ7AgAABG 8WAAAKcogC AHACewEAAA RvagAA
  5973   Bm8PAAAKCg Y6nAAAAAJ7 AgAABG8WAA AKcqYCAHBy MwEAcG8XAA AKCgJ7AgAA BG8WAAAKcr wCAHAC
  5974   ewEAAARvag AABm8PAAAK CwctRQJ7Ag AABG8WAAAK cvACAHACew EAAARvagAA Bm8PAAAKCw ctIQJ7
  5975   AgAABG8WAA AKcg4DAHAC ewEAAARvag AABm8PAAAK CwJ7AgAABG 8WAAAKbygA AAoGB28pAA AKJnIq
  5976   AwBwAigFAA AGKCQAAAoM BggCewEAAA RvagAABm8P AAAKdAgAAA ENCS00AnsC AAAEbxYAAA pyYgMA
  5977   cHIzAQBwbx cAAAoNCXJ2 AwBwAigFAA AGbyIAAAoG CW8YAAAKJg lvEQAACnL5 AQBwcv8BAH BvJQAA
  5978   CnQoAAABEw QRBC0vAnsC AAAEbxYAAA pyfgMAcHL5 AQBwcv8BAH BvKgAAChME CW8RAAAKEQ RvHAAA
  5979   CiYUEwURBG 8TAAAKEwYR BnIlAQBwKB QAAAosIAJ7 AQAABG9nAA AGAnsJAAAE F3KCAwBwby sAAAoT
  5980   BStGAnsBAA AEb2cAAAYR Bm8mAAAKEw URBW8nAAAK AnsJAAAEKC wAAAosHgJ7 AQAABG9nAA AGAnsJ
  5981   AAAEF3KCAw BwbysAAAoT BREEEQVvLQ AACm8dAAAK KhMwAwDtAA AACAAAEQJ7 BwAABDrbAA AAAnsC
  5982   AAAEch8EAH ACewEAAARv agAABm8PAA AKCgY5uQAA AAZvEQAACn InAQBwby4A AAp0KAAAAQ sHLREC
  5983   Bm8QAAAKfQ cAAAQ4jwAA AAdvEwAACn IrBABwKBQA AAoscQZvEQ AACnI5BABw by4AAAp0KA AAAQwI
  5984   LQtyPwQAcH MOAAAKenLi BABwCG8TAA AKKCQAAAoN AnsCAAAEbx YAAAoJAnsB AAAEb2oAAA ZvDwAA
  5985   ChMEEQQtC3 IwBQBwcw4A AAp6AhEEbx AAAAp9BwAA BCsMAgZvEA AACn0HAAAE AnsHAAAEKg AAABMw
  5986   AwBsAAAACQ AAEQIDfQcA AAQCewIAAA RyHwQAcAJ7 AQAABG9qAA AGbw8AAAp0 CAAAAQoGLQ cCKBkA
  5987   AAYKBm8RAA AKcicBAHBy MwEAcG8vAA AKJgZvEQAA CnI5BABwcj MBAHBvLwAA CiYGA28eAA AKAigU
  5988   AAAGKi5yrg UAcHMOAAAK ehMwAwAtAA AACgAAEQJ7 AgAABHIZAQ BwAnsBAAAE b2oAAAZvDw AACgoG
  5989   LA0CewIAAA QGbzAAAAom Kh4CKAcAAA YqAAAAEzAC ACkAAAALAA ARcuoFAHBz MQAACgpy/g UAcHMx
  5990   AAAKCwYCbz IAAAotCAcC bzIAAAoqFi oAAAATMAMA 0wAAAAwAAB EVCgJ7AQAA BHs5AAAEb0 MAAAZv
  5991   XgAABnIsBg BwAygkAAAK AnsBAAAEb2 oAAAZvDwAA CgsHLXoCew EAAAR7OQAA BG9DAAAGb1 4AAAZy
  5992   OQQAcHIzAQ BwbxcAAAoL AnsBAAAEez kAAARvQwAA Bm9eAAAGci cBAHByMwEA cG8XAAAKDA gDbx4A
  5993   AAoHCG8YAA AKJgJ7AQAA BHs5AAAEb0 MAAAZvXgAA Bm8oAAAKB2 8YAAAKJgcs HgdyUAYAcA J7AQAA
  5994   BG9qAAAGbz MAAAoNCW80 AAAKCgYqAB MwAwBMAAAA DQAAERQKAn sBAAAEezkA AARvQwAABm 9eAAAG
  5995   coAGAHADjC wAAAEoJAAA CgJ7AQAABG 9qAAAGbzMA AAoLBwNvNQ AACgwILAcI bxAAAAoKBi oTMAMA
  5996   WQAAAA4AAB ECewIAAARv FgAACnKOBg BwcjMBAHBv FwAACgoCew IAAARyGQEA cAJ7AQAABG 9qAAAG
  5997   bw8AAAoLBy 0PAnsCAAAE Bm8YAAAKJi sOAnsCAAAE BgdvNgAACi YGKgAAABsw AwAFAQAADw AAERQK
  5998   AwRvdQAABm 9NAAAGCwc5 7gAAAAdykg YAcAWMLAAA ASgkAAAKAn sBAAAEb2oA AAZvDwAACn QIAAAB
  5999   CgY6wQAAAA NvcgAABnLC BgBwcjMBAH BvFwAACgoG csYGAHAPAy gaAAAKbyIA AAoUDAdy2g YAcAJ7
  6000   AQAABG9qAA AGbzMAAAoN CSxnCW83AA AKEwcrPREH bzgAAAp0Dw AAARMEEQRv EQAACnLGBg BwbxIA
  6001   AAoTBREFLB gRBW8TAAAK KBUAAAoTBh EGBTEFEQQM KwkRB285AA AKLbreFREH dQIAAAETCB EILAcR
  6002   CG86AAAK3A gtCgcGbxgA AAomKwkHBg hvNgAACiYG KgAAAAEQAA ACAI4AStgA FQAAAAATMA MAbwAA
  6003   ABAAABECHx oxWhYMAh8a Wyg7AAAKDQ koPAAACgIo PAAACiMAAA AAAAA6QFsz DAkXWR9AWA wfWgsr
  6004   EgkfQFgMAg kfGlpZH0BY CgbRCwjREw QSBCg9AAAK EgEoPQAACi g+AAAKKh9A AlgKBtELEg EoPQAA
  6005   CioAEzAFAD IBAAARAAAR FgoWCxYMAm 8/AAAKEwkW EworHBEJEQ qTDQcXWAsJ KEAAAAosBB cMKw4R
  6006   ChdYEwoRCh EJjmky3Ag5 8wAAAAIWAm 9BAAAKAm9B AAAKF1gHWV lvQgAAChME EQRvQQAACh MFFhMG
  6007   EQRvPwAACh MLFhMMOLEA AAARCxEMkx MHEQYXWBMG EQcfQFkTCB EFEw0RDRdZ RQQAAAACAA AABwAA
  6008   AB0AAABDAA AAK3gRCAor cxEGFzMKBh EIHxpaWAor ZAYRCFgKK1 0RBhczCwYR CB8aWh8aWl gKEQYY
  6009   MwoGEQgfGl pYCis+BhEI WAorNxEGFz MOBhEIHxpa HxpaHxpaWA oRBhgzCwYR CB8aWh8aWl gKEQYZ
  6010   MwoGEQgfGl pYCisFBhEI WAoRDBdYEw wRDBELjmk/ RP///wYqAA ATMAUAXQAA ABIAABEWCh YLAm8/
  6011   AAAKEwQWEw UrHBEEEQWT DAYXWAoIKE AAAAosBBcL Kw4RBRdYEw URBREEjmky 3AcsIwIGF1 kCb0EA
  6012   AAoGF1lZb0 IAAAoNCSgW AAAGLAcJKC EAAAoqFipO AygbAAAGDw AoGgAACig+ AAAKKgAAAB MwAgAh
  6013   AAAAEwAAEQ IoHQAABgoC KBwAAAYLBg coHgAABgIo FAAACiwCFy oWKgAAABMw BABWAQAAFA AAEXIl
  6014   AQBwCnLmBg BwF3NDAAAK C3IABwBwF3 NDAAAKDAcC chgHAHBvRA AACnIcBwBw chgHAHBvRQ AACg0I
  6015   AnIYBwBwb0 QAAAoTBBEE bz8AAAoTBR YTBhYTBwkX jTEAAAETDR ENFh8gnREN b0YAAAoTDh YTDzjS
  6016   AAAAEQ4RD5 oTCBEGF1gT BhEHEQhvQQ AAClgTBxEI KB0AAAYTCR EIKBwAAAYT CnIlAQBwEw sRCREK
  6017   KB4AAAYRCC gUAAAKLCIR CQUyBhEJA1 gTCREKDgQy BhEKBFgTCh EJEQooHgAA BhMLEQtyJQ EAcCgU
  6018   AAAKLAsGEQ goPgAACgor CQYRCyg+AA AKChEHEwwr MxEFEQyTHy AuNREFEQyT HyAuGxEHF1 gTBwYR
  6019   BREMjzEAAA EoPQAACig+ AAAKChEMF1 gTDBEMEQRv QQAACjLCEQ 8XWBMPEQ8R Do5pPyP/// 8GKgAA
  6020   GzAEAM8BAA AVAAARAigN AAAKc0cAAA oKAgZzSAAA Cn0MAAAEAn sMAAAEciIH AHByMwEAcG 9JAAAK
  6021   AgN9CgAABA NvcgAABnIm BwBwAnsMAA AEbw8AAAoL By1AA29yAA AGcjgHAHBy MwEAcG8XAA AKCwNv
  6022   cgAABnIOAw BwAnsMAAAE bw8AAAoMA2 9yAAAGbygA AAoHCG82AA AKCxQTBRYT BgdvSgAACm 83AAAK
  6023   Ewo4kwAAAB EKbzgAAAp0 DwAAARMHFx MIFxMJEQdv EQAACnJCBw Bwby4AAAp0 KAAAAQ0JLA 0JbxMA
  6024   AAooIQAACh MIEQdvEQAA CnJKBwBwby 4AAAp0KAAA ARMEEQQsDh EEbxMAAAoo IQAAChMJEQ YtEQQR
  6025   CDEFBBEJMA cXEwYRBxMF BBEIMhQEEQ kwDwIRB3QI AAABfQsAAA QrDBEKbzkA AAo6Yf///9 4VEQp1
  6026   AgAAARMLEQ ssBxELbzoA AArcAnsLAA AELWoCA29y AAAGclIHAH ByMwEAcG8X AAAKfQsAAA QCewsA
  6027   AARyQgcAcA 8CKBoAAApv IgAACgJ7Cw AABHJKBwBw DwIoGgAACm 8iAAAKEQUs EAcCewsAAA QRBW82
  6028   AAAKJioHAn sLAAAEbxgA AAomKgABEA AAAgChAKZH ARUAAAAAHg J7CwAABCpa AnsLAAAEck IHAHBv
  6029   HwAACighAA AKKmICewsA AARyQgcAcA 8BKBoAAApv IgAACipaAn sLAAAEckoH AHBvHwAACi ghAAAK
  6030   KmICewsAAA RySgcAcA8B KBoAAApvIg AACioTMAMA KQAAABYAAB EWCgJ7CwAA BHJaBwBwcm gHAHBv
  6031   SwAACgsHcm gHAHAoFAAA CiwCFwoGKr 4DLBYCewsA AARyWgcAcH JoBwBwbyIA AAoqAnsLAA AEcloH
  6032   AHBybAcAcG 8iAAAKKgAA ABMwAgAyAA AAFwAAESMA AAAAAAAkQA oCewsAAARy cAcAcG8fAA AKCwdy
  6033   JQEAcCggAA AKLAgHKCEA AApsCgYqYg J7CwAABHJw BwBwDwEoTA AACm8iAAAK KkoCewoAAA QCKC0A
  6034   AAZvfgAABi pOAgJ7CgAA BANvfwAABi guAAAGKgAA EzACACkAAA AFAAARFgoC ewsAAARyKw EAcG8f
  6035   AAAKCwdyJQ EAcCggAAAK LAcHKCEAAA oKBipiAnsL AAAEcisBAH APASgaAAAK byIAAAoqrn J8BwBw
  6036   AnsLAAAEck IHAHBvHwAA CgJ7CwAABH JCBwBwbx8A AAooTQAACi oeAigNAAAK KgAAAzACAE 8AAAAA
  6037   AAAAAnweAA AE/hUBAAAb AnwfAAAE/h UBAAAbAnwg AAAE/hUBAA AbAigNAAAK A29OAAAKcq 4HAHAo
  6038   IAAACiwLcs gHAHBzDgAA CnoCA30XAA AEKgATMAIA YQAAAAQAAB ECfB4AAAQo TwAACi1IAh ZzUAAA
  6039   Cn0eAAAEAn sXAAAEbxEA AApyPAgAcG 8uAAAKdCgA AAEKBiweBm 8TAAAKcmgH AHAoFAAACi wMAhdz
  6040   UAAACn0eAA AEAnweAAAE KFEAAAoqAA AAEzADAGsA AAAEAAARAg NzUAAACn0e AAAEAnsXAA AEbxEA
  6041   AApyPAgAcG 8uAAAKdCgA AAEKBi0mAn sXAAAEbxEA AAoCexcAAA RvFgAACnI8 CABwbxsAAA pvHAAA
  6042   CgoDLAwGcm gHAHBvHQAA CioGcmwHAH BvHQAACioA EzACAGEAAA AEAAARAnwf AAAEKE8AAA otSAIW
  6043   c1AAAAp9Hw AABAJ7FwAA BG8RAAAKcl 4IAHBvLgAA CnQoAAABCg YsHgZvEwAA CnJoBwBwKB QAAAos
  6044   DAIXc1AAAA p9HwAABAJ8 HwAABChRAA AKKgAAABMw AwBrAAAABA AAEQIDc1AA AAp9HwAABA J7FwAA
  6045   BG8RAAAKcl 4IAHBvLgAA CnQoAAABCg YtJgJ7FwAA BG8RAAAKAn sXAAAEbxYA AApyXggAcG 8bAAAK
  6046   bxwAAAoKAy wMBnJoBwBw bx0AAAoqBn JsBwBwbx0A AAoqABMwAg BhAAAABAAA EQJ8IAAABC hPAAAK
  6047   LUgCFnNQAA AKfSAAAAQC excAAARvEQ AACnKACABw by4AAAp0KA AAAQoGLB4G bxMAAApyaA cAcCgU
  6048   AAAKLAwCF3 NQAAAKfSAA AAQCfCAAAA QoUQAACioA AAATMAMAaw AAAAQAABEC A3NQAAAKfS AAAAQC
  6049   excAAARvEQ AACnKACABw by4AAAp0KA AAAQoGLSYC excAAARvEQ AACgJ7FwAA BG8WAAAKco AIAHBv
  6050   GwAACm8cAA AKCgMsDAZy aAcAcG8dAA AKKgZybAcA cG8dAAAKKm oCexgAAAQt CwJzMAAABn 0YAAAE
  6051   AnsYAAAEKm oCexkAAAQt CwJzMAAABn 0ZAAAEAnsZ AAAEKoYCex oAAAQtCwJz MAAABn0aAA AEAhco
  6052   NQAABgJ7Gg AABCqGAnsb AAAELQsCcz AAAAZ9GwAA BAIXKDUAAA YCexsAAAQq hgJ7HAAABC 0LAnMw
  6053   AAAGfRwAAA QCFyg3AAAG AnscAAAEKo YCex0AAAQt CwJzMAAABn 0dAAAEAhco NwAABgJ7HQ AABCoA
  6054   AAATMAQAlw EAAAoAABEC exgAAAQsOA J7FwAABAJ7 FwAABG8WAA AKcp4IAHBy MwEAcG8XAA AKbxgA
  6055   AAoKBgICKD gAAAYoPwAA Bm8eAAAKAn sZAAAELDgC excAAAQCex cAAARvFgAA CnKyCABwcj MBAHBv
  6056   FwAACm8YAA AKCgYCAig5 AAAGKD8AAA ZvHgAACgIo NAAABjmAAA AAAnsaAAAE LDgCexcAAA QCexcA
  6057   AARvFgAACn LGCABwcjMB AHBvFwAACm 8YAAAKCgYC Aig6AAAGKD 8AAAZvHgAA CgJ7GwAABC w4AnsX
  6058   AAAEAnsXAA AEbxYAAApy 3AgAcHIzAQ BwbxcAAApv GAAACgoGAg IoOwAABig/ AAAGbx4AAA oCKDYA
  6059   AAY5gAAAAA J7HAAABCw4 AnsXAAAEAn sXAAAEbxYA AApy8ggAcH IzAQBwbxcA AApvGAAACg oGAgIo
  6060   PAAABig/AA AGbx4AAAoC ex0AAAQsOA J7FwAABAJ7 FwAABG8WAA AKcgoJAHBy MwEAcG8XAA AKbxgA
  6061   AAoKBgICKD 0AAAYoPwAA Bm8eAAAKKg ATMAMAVgAA ABgAABFyJQ EAcAoDew0A AAQsEgZyIg kAcAN7
  6062   DQAABChSAA AKCgN7DgAA BCwSBnIoCQ BwA3sOAAAE KFIAAAoKA3 sPAAAELBIG ci4JAHADew 8AAAQo
  6063   UgAACgoGKg AAEzAEAJUA AAAZAAARAi gNAAAKAgNv UwAACn0kAA AEA29UAAAK LBQCA29VAA AKGRko
  6064   VgAACn0jAA AEKgIDb1UA AAoYGShWAA AKfSMAAARy NAkAcBhzVw AACgoCeyMA AAQGck4JAH BvWAAA
  6065   CiYCKEMAAA ZvXQAABiYC eyMAAAQCKE MAAAZvWQAA BhZybgkAcG 9ZAAAKJgJ7 IwAABAZvWg AACioA
  6066   AAAbMAQAaw AAABoAABEC KA0AAAoCA2 9TAAAKfSQA AAQEb1QAAA osRgNvVAAA CiwVA29bAA AK3g0K
  6067   chUKAHAGc1 wAAAp6BANv VQAACm9dAA AKEAEDFm9e AAAKAgNvVQ AAChkZKFYA AAp9IwAABC pykQoA
  6068   cHMOAAAKeg ABEAAAAAAi AAgqAA0mAA ABHgJ7IwAA BCpuAnslAA AELQwCAnNX AAAGfSUAAA QCeyUA
  6069   AAQqEzADAI MAAAAbAAAR AnsmAAAELH oCeyQAAARy FgsAcAQoUg AACnNfAAAK CgZvVAAACi 0GBm9g
  6070   AAAKG40pAA ABDAgWAnsk AAAEoggXch YLAHCiCBgE oggZchYLAH CiCBoFoggo YQAACnNiAA AKCwdv
  6071   VAAACiwNBx ZvXgAACgdv WwAACgMHb1 UAAApvYwAA CioAGzADAF QAAAAcAAAR FAoCeyMAAA QDb2QA
  6072   AAoLB3IaCw BwBCg+AAAK b2UAAApvZg AACg0rFglv ZwAACgwDCG 8nAAAKKGgA AAoKKwgJbz kAAAot
  6073   4t4KCSwGCW 86AAAK3AYq ARAAAAIAJg AiSAAKAAAA ABMwBAAsAA AABAAAEQJv FgAACnKlCw BwBHKx
  6074   CwBwbyoAAA oKBgNvHQAA CgJvEQAACg ZvHAAACiYq EzACACYAAA AEAAARAm8W AAAKcqULAH BvGwAA
  6075   CgoGA28dAA AKAm8RAAAK Bm8cAAAKJi oAABMwBAAc AAAAHQAAEQ J7IwAABANv ZAAACgoEBh gYb2kA
  6076   AApvagAACi oyAnsjAAAE b2sAAAoqMg IoQwAABm9k AAAGKgAAEz ACACEAAAAe AAARc2wAAA oKAnsj
  6077   AAAEA29kAA AKCwYHb20A AApvbgAACg YqAAAAGzAE ADMBAAAfAA ARAigNAAAK AgN9JwAABA IDb3IA
  6078   AAZy7QsAcA SMLAAAASgk AAAKAnsnAA AEb2oAAAZv DwAACnQIAA ABfSgAAAQC eygAAAQ66Q AAAAID
  6079   b3IAAAZyKQ wAcHIzAQBw bxcAAAp9KA AABAJ7KAAA BHJ+AwBwDw IoGgAACm8i AAAKA29yAA AGcg4D
  6080   AHACeycAAA RvagAABm8P AAAKCgY5lQ AAABQLA29y AAAGcjEMAH ACeycAAARv agAABm8zAA AKbzcA
  6081   AAoTBCswEQ RvOAAACnQP AAABDAhvEQ AACnJ+AwBw by4AAApvEw AACigVAAAK DQkEMQQICy sJEQRv
  6082   OQAACi3H3h URBHUCAAAB EwURBSwHEQ VvOgAACtwH LQ4GAnsoAA AEbxgAAAom KgYCeygAAA QHbzYA
  6083   AAomKgABEA AAAgDBAD3+ ABUAAAAAHg J7KAAABCoT MAMAKQAAAB YAABEWCgJ7 KAAABHJaBw BwcmgH
  6084   AHBvSwAACg sHcmgHAHAo FAAACiwCFw oGKr4DLBYC eygAAARyWg cAcHJoBwBw byIAAAoqAn soAAAE
  6085   cloHAHBybA cAcG8iAAAK KgAAABMwAg AxAAAAFwAA ESMAAAAAAA AkQAoCeygA AARyWQwAcG 8fAAAK
  6086   CwdyJQEAcC ggAAAKLAcH KG8AAAoKBi q2AnsoAAAE clkMAHAPAS hMAAAKbyIA AAoCeygAAA RyXwwA
  6087   cHJoBwBwby IAAAoqSgJ7 JwAABAIoVA AABm9+AAAG Kk4CAnsnAA AEA29/AAAG KFUAAAYqAA ATMAIA
  6088   KQAAAAUAAB EWCgJ7KAAA BHIrAQBwbx 8AAAoLB3Il AQBwKCAAAA osBwcoIQAA CgoGKrYCey gAAARy
  6089   KwEAcA8BKB oAAApvIgAA CgJ7KAAABH J5DABwcmgH AHBvIgAACi oeAigNAAAK KgATMAMAeQ AAACAA
  6090   ABECcpMMAH AYc1cAAAp9 LgAABAJytQ wAcBhzVwAA Cn0vAAAEAn LhDABwGHNX AAAKfTAAAA QCcv8M
  6091   AHAYc1cAAA p9MQAABAIo DQAACgIDfS 0AAARzRwAA CgoCBnNIAA AKfTYAAAQC ezYAAARyIg cAcHIz
  6092   AQBwb0kAAA oqggJ7NQAA BC0RAgJ7LQ AABHOAAAAG fTUAAAQCez UAAAQqHgJ7 LgAABCoeAn swAAAE
  6093   Kh4Cey8AAA QqXgJ7LQAA BG9CAAAGAi hZAAAGb2QA AAoqAAATMA MALwEAACEA ABECezIAAA Q6HQEA
  6094   AAJ7LQAABG 9CAAAGAihZ AAAGb3AAAA osHAICey0A AAQCKFkAAA ZvSwAABn0y AAAEOOkAAA ACey0A
  6095   AARvQgAABg IoWQAABnIj DQBwb1gAAA oKAnNsAAAK fTIAAAQCez IAAARyug0A cHIzAQBwbx cAAAoL
  6096   B3L/AQBwcn 4DAHAoRgAA BgJ7MgAABA dvGAAACiYC ezIAAARyzA 0AcHIzAQBw bxcAAAoMBw hvGAAA
  6097   CiYCezIAAA Ry4A0AcHIz AQBwbxcAAA oNCAlvGAAA CiYCezIAAA Ry+g0AcHIz AQBwbxcAAA oTBAcR
  6098   BG8YAAAKJg YYGG9pAAAK c3EAAAoTBQ J7MgAABBEF b3IAAAoRBW 9zAAAKAnst AAAEb0IAAA ZvdAAA
  6099   CgJ7MgAABC oAEzAEABIB AAAiAAARAn szAAAEOgAB AAACey0AAA RvQgAABgIo WwAABm9wAA AKLBwC
  6100   AnstAAAEAi hbAAAGb0sA AAZ9MwAABD jMAAAAAnst AAAEb0IAAA YCKFsAAAZy CA4AcG9YAA AKCgJz
  6101   bAAACn0zAA AEAnszAAAE cqUOAHByMw EAcG8XAAAK CwdyrQ4AcH JsBwBwbyIA AAoHcrkOAH BybAcA
  6102   cG8iAAAKAn szAAAEB28Y AAAKJgYYGG 9pAAAKc3EA AAoMAnszAA AECG9yAAAK CG9zAAAKAn stAAAE
  6103   b0IAAAZvdA AACgJ7LQAA BG9DAAAGb1 wAAAYCKFsA AAYWctEOAH BvKwAACiYC ey0AAARvQg AABm90
  6104   AAAKAnszAA AEKgAAEzAE AJwCAAAjAA ARAns0AAAE OooCAAACey 0AAARvQgAA BgIoWgAABm 9wAAAK
  6105   LBwCAnstAA AEAihaAAAG b0sAAAZ9NA AABDhWAgAA AnstAAAEb0 IAAAYCKFoA AAZydg8AcG 9YAAAK
  6106   CgJzbAAACn 00AAAEAns0 AAAEcgUQAH ByMwEAcG8X AAAKCwJ7NA AABAdvGAAA CiYCezQAAA RyGxAA
  6107   cHIzAQBwbx cAAAoMCHKt DgBwcmgHAH BvIgAACgcI bxgAAAomAn s0AAAEcicQ AHByMwEAcG 8XAAAK
  6108   DQgJbxgAAA omAns0AAAE cjEQAHByMw EAcG8XAAAK EwQRBHI3EA Bwcj8QAHBv IgAACgkRBG 8YAAAK
  6109   JgJ7NAAABH JFEABwcjMB AHBvFwAACh MFEQVyNxAA cHJPEABwby IAAAoJEQVv GAAACiYCez QAAARy
  6110   XxAAcHIzAQ BwbxcAAAoT BhEGcq0OAH ByaAcAcG8i AAAKBxEGbx gAAAomAns0 AAAEcnkQAH ByMwEA
  6111   cG8XAAAKEw cRB3J/EABw cmwHAHBvIg AAChEHcpEQ AHBybAcAcG 8iAAAKEQYR B28YAAAKJg J7NAAA
  6112   BHKfEABwcj MBAHBvFwAA ChMIEQhyrQ 4AcHJoBwBw byIAAAoHEQ hvGAAACiYC ezQAAARyeR AAcHIz
  6113   AQBwbxcAAA oTCREJcn8Q AHBybAcAcG 8iAAAKEQly kRAAcHJsBw BwbyIAAAoR CXKvEABwcm wHAHBv
  6114   IgAAChEIEQ lvGAAACiYG GBhvaQAACn NxAAAKEwoC ezQAAAQRCm 9yAAAKEQpv cwAACgJ7LQ AABG9C
  6115   AAAGb3QAAA oCey0AAARv QwAABm9cAA AGAihaAAAG FnK5EABwby sAAAomAnst AAAEb0IAAA ZvdAAA
  6116   CgJ7NAAABC oiAgN9NAAA BCqCAns3AA AELRECAnst AAAEc48AAA Z9NwAABAJ7 NwAABCoAAB MwAwBv
  6117   AAAAJAAAER YKAihdAAAG clARAHACez YAAARvDwAA CgsHLFEHbx EAAApyZhEA cG8SAAAKDA gsPQhv
  6118   EwAACiUNLD MJcngRAHAo FAAACi0cCX KCEQBwKBQA AAotEwlymh EAcCgUAAAK LQorChYKKw YXCisC
  6119   GAoGKgATMA MAWwAAACUA ABECKF0AAA ZyUBEAcAJ7 NgAABG8PAA AKdAgAAAEK cngRAHALAw wIRQMA
  6120   AAACAAAACg AAABIAAAAr FnJ4EQBwCy sOcoIRAHAL KwZymhEAcA sGcmYRAHAH byIAAAoqAB swBADH
  6121   AQAAJgAAEQ IoWAAABm+B AAAGLQtyqB EAcHMOAAAK egJ7LQAABG 9CAAAGAnsx AAAEb3AAAA o5hQAA
  6122   AHI3EgBwGH NXAAAKCgJ7 LQAABG9DAA AGb1wAAAZv dQAACm9mAA AKDSsyCW9n AAAKCwdvJw AACgYo
  6123   IwAACiwdAn stAAAEb0MA AAZvXAAABg dvLQAACm92 AAAKKwgJbz kAAAotxt4K CSwGCW86AA AK3AJ7
  6124   LQAABG9CAA AGAnsxAAAE b1oAAAoCez IAAAQsMgJ7 LQAABAIoWQ AABgJ7MgAA BG9IAAAGAn stAAAE
  6125   AnsyAAAEcl MSAHByWRIA cG9EAAAGAn s3AAAELAsC ezcAAARvtg AABgJ7NAAA BCwyAnstAA AEAiha
  6126   AAAGAns0AA AEb0gAAAYC ey0AAAQCez QAAARyUxIA cHJzEgBwb0 QAAAYCezMA AAQsMgJ7LQ AABAIo
  6127   WwAABgJ7Mw AABG9IAAAG AnstAAAEAn szAAAEclMS AHByiRIAcG 9EAAAGAihY AAAGb4IAAA YTBCsT
  6128   EQRvOAAACn QLAAACDAhv ewAABhEEbz kAAAot5N4V EQR1AgAAAR MFEQUsBxEF bzoAAArccq 0SAHAo
  6129   dwAACiYqAA EcAAACAFoA PpgACgAAAA ACAIYBIKYB FQAAAADSAi gNAAAKAgN9 OQAABAIEfT 4AAAQC
  6130   DgR9OgAABA IFfTsAAAQC DgV9PAAABA IOBihvAAAG Kh4CezoAAA QqXgJ7OQAA BG9CAAAGAi hmAAAG
  6131   b2QAAAoqHg J7PgAABCoe Ans8AAAEKg AAABMwAwA2 AAAAIAAAEQ J7QgAABC0n c0cAAAoKAg ZzSAAA
  6132   Cn1CAAAEAn tCAAAEciIH AHByMwEAcG 9JAAAKAntC AAAEKm4Ce0 AAAAQtDAIC c4kAAAZ9QA AABAJ7
  6133   QAAABCoeAn s7AAAEKgAA EzADAFwAAA AnAAARAns5 AAAEb0MAAA ZvXQAABnK3 EgBwAns8AA AEjCwA
  6134   AAEoJAAACg IoagAABm8P AAAKCgYsIA ZvEQAACnJF EABwby4AAA p0KAAAAQsH LAcHA28dAA AKAgN9
  6135   OwAABCoeAn s9AAAEKhMw AwBiAAAAJw AAEQJ7OQAA BG9DAAAGb1 0AAAZytxIA cAJ7PAAABI wsAAAB
  6136   KCQAAAoCKG oAAAZvDwAA CgoGLCYGbx EAAApyWgcA cG8uAAAKdC gAAAELBywN Bw8BKHgAAA pvHQAA
  6137   CgIDfT0AAA QqAAATMAMA RAAAACgAAB EfDwoCKHIA AAZy5xIAcA IoagAABm8P AAAKdAgAAA ELBywg
  6138   B3ILEwBwbx 8AAAoMCHIl AQBwKCAAAA osBwgoIQAA CgoGKhMwAw ByAAAADgAA EQIocgAABn LnEgBw
  6139   AihqAAAGbw 8AAAp0CAAA AQoGLUACKH IAAAZyLRMA cHIzAQBwbx cAAAoKAihy AAAGckkTAH ACKGoA
  6140   AAZvDwAACg sCKHIAAAZv KAAACgYHby kAAAomBnIL EwBwDwEoGg AACm8iAAAK KgAAEzACAE gAAAAd
  6141   AAARAns/AA AELTkCc2wA AAp9PwAABA J7OQAABG9C AAAGAihmAA AGb2QAAAoK Ans/AAAEBm 9tAAAK
  6142   b24AAAoCKH wAAAYCez8A AAQqEzAEAG AAAAAKAAAR AntBAAAELV ECKHIAAAZy ZxMAcAIoag AABm8P
  6143   AAAKCgYtJg IocgAABm8o AAAKAihyAA AGcq4HAHBy MwEAcG8XAA AKbxgAAAoK AgZ0CAAAAX MxAAAG
  6144   fUEAAAQCe0 EAAAQqJgID BHMBAAAGKi ICA3NMAAAG KiICA3MhAA AGKhswBQBY AQAAKQAAEQ NvEQAA
  6145   BgsHciUBAH AoFAAACiwL cokTAHBzDg AACnoVDAJ7 PwAABHIMFA BwAihqAAAG bzMAAApvNw AAChMI
  6146   KyIRCG84AA AKdA8AAAEN CW8TAAAKKC EAAAoTBBEE CDEDEQQMEQ hvOQAACi3V 3hURCHUCAA ABEwkR
  6147   CSwHEQlvOg AACtwIF1gM A28DAAAGEw UrfQNvBAAA BhMGK2MCEQ URBih0AAAG EwcRB28UAA AGEQdv
  6148   AgAABnIfBA BwAihqAAAG bw8AAAp0CA AAAQoGLQgR B28ZAAAGCg ZyJwEAcHIr BABwbyIAAA oGcjkE
  6149   AHASAigaAA AKbyIAAAoR BhdYEwYRBg RvBAAABjGT EQUXWBMFEQ UEbwMAAAY+ dv///wNvAg AABnIf
  6150   BABwAihqAA AGbw8AAAp0 CAAAAQoGcn YDAHByTBQA cANvBQAABg RvBQAABihN AAAKbyIAAA oqARAA
  6151   AAIAPgAvbQ AVAAAAABMw BADBAgAAKg AAEQIocgAA BnK8AgBwAi hqAAAGbw8A AAoKBi1aAi hyAAAG
  6152   clwUAHByMw EAcG8XAAAK CgIocgAABn LwAgBwAihq AAAGbw8AAA oLBy0XAihy AAAGcg4DAH ACKGoA
  6153   AAZvDwAACg sCKHIAAAZv KAAACgYHby kAAAomBm8R AAAKcogUAH BvEgAACgwI LR4CKHIAAA ZyiBQA
  6154   cG8bAAAKDA ZvEQAACghv HAAACiYIck wUAHADbwUA AAYEbwUAAA YoTQAACm8d AAAKBnKUFA BwAihq
  6155   AAAGbw8AAA oNCS0eAihy AAAGcqoUAH ByMwEAcG8X AAAKDQYJbx gAAAomCW8R AAAKcrgUAH BvEgAA
  6156   CgwILR4CKH IAAAZyuBQA cG8bAAAKDA lvEQAACghv HAAACiYIcs IUAHBvHQAA CglvEQAACn LSFABw
  6157   bxIAAAoMCC 0eAihyAAAG ctIUAHBvGw AACgwJbxEA AAoIbxwAAA omCHJoBwBw bx0AAAoCKH IAAAZy
  6158   5BQAcHIzAQ BwbxcAAAoT BAkRBG8YAA AKJgIocgAA BnL0FABwcj MBAHBvFwAA ChMFEQQRBW 8YAAAK
  6159   JgIocgAABn K4FABwbxsA AAoMEQVvEQ AACghvHAAA CiYIckIHAH BvHQAACgIo cgAABnI3EA BwbxsA
  6160   AAoMEQVvEQ AACghvHAAA CiYIcmwHAH BvHQAACgIo cgAABnL0FA BwcjMBAHBv FwAAChMFEQ QRBW8Y
  6161   AAAKJgIocg AABnK4FABw bxsAAAoMEQ VvEQAACghv HAAACiYIck oHAHBvHQAA CgIocgAABn I3EABw
  6162   bxsAAAoMEQ VvEQAACghv HAAACiYIcm wHAHBvHQAA CgIocgAABn L+FABwcjMB AHBvFwAACh MFEQQR
  6163   BW8YAAAKJg IocgAABnIK FQBwbxsAAA oMEQVvEQAA CghvHAAACi YIBW8dAAAK KgAAABswBg C2AQAA
  6164   KwAAEQIocg AABnIpDABw cjMBAHBvFw AACgoGbxEA AAoCKHIAAA ZyfgMAcG8b AAAKbxwAAA omBm8R
  6165   AAAKcn4DAH BvEgAACg8B KBoAAApvHQ AACgIocgAA BnIOAwBwAi hqAAAGbw8A AAoLBzlKAQ AAFwwH
  6166   b0oAAAoNCW 80AAAKEwQU EwUWEwYWEw crRgkRB281 AAAKbxEAAA pyfgMAcG8S AAAKbxMAAA ooIQAA
  6167   ChMIEQgDLw 4JEQdvNQAA ChMFEQcTBh EIAzIFEQgM KwwRBxdYEw cRBxEEMrQR BhdYEwk4wA AAAAkR
  6168   CW81AAAKbx EAAApyfgMA cG8SAAAKbx MAAAooIQAA ChMKEQoIP4 8AAAAJEQlv NQAACm8RAA AKcn4D
  6169   AHBvEgAACh EKF1goeQAA Cm8dAAAKCR EJbzUAAApy EhUAcAIoag AABm8zAAAK EwsRC283AA AKEw0r
  6170   JRENbzgAAA p0DwAAARMM EQwRDG8QAA AKFxYDFigg AAAGbx4AAA oRDW85AAAK LdLeFRENdQ IAAAET
  6171   DhEOLAcRDm 86AAAK3BEJ F1gTCREJEQ Q/N////xEF LAoHBhEFby kAAAomKgAA ARAAAAIAUQ EygwEV
  6172   AAAAABswBg BbAQAALAAA EQIocgAABn IOAwBwAihq AAAGbw8AAA oKBjk9AQAA Bm9KAAAKCw dvNAAA
  6173   CgwWDRQTBB YTBSs7BxEF bzUAAApvEQ AACnJ+AwBw bxIAAApvEw AACighAAAK EwYRBgMzDR EFDQcR
  6174   BW81AAAKEw QRBRdYEwUR BQgywAQ50g AAAAkXWBMH OMAAAAAHEQ dvNQAACm8R AAAKcn4DAH BvEgAA
  6175   Cm8TAAAKKC EAAAoTCBEI Az6PAAAABx EHbzUAAApv EQAACnJ+Aw BwbxIAAAoR CBdZKHkAAA pvHQAA
  6176   CgcRB281AA AKchIVAHAC KGoAAAZvMw AAChMJEQlv NwAAChMLKy URC284AAAK dA8AAAETCh EKEQpv
  6177   EAAAChUWAx YoIAAABm8e AAAKEQtvOQ AACi3S3hUR C3UCAAABEw wRDCwHEQxv OgAACtwRBx dYEwcR
  6178   Bwg/OP///x EELAkGEQRv MAAACiYqAA EQAAACAPgA MioBFQAAAA ATMAYAKQEA AC0AABECez 8AAARy
  6179   JhUAcAIoag AABm8PAAAK CgY5jgAAAA ZvEQAACnL5 AQBwcv8BAH BvJQAACnQo AAABCwcscA dvEwAA
  6180   CgwGbxEAAA oHb3oAAAom AihnAAAGCG 8mAAAKDXJC FQBwCW8nAA AKb3sAAApy ShUAcHIlAQ Bwb0UA
  6181   AAooPgAACh hzVwAAChME AihnAAAGCW 8tAAAKb3YA AAoCezkAAA RvQgAABhEE b1oAAAoCez 8AAAQs
  6182   dQJ7QQAABC wLAihzAAAG bz4AAAYCKH 0AAAYCezkA AARvQgAABg IoZgAABm9k AAAKEwUCKH IAAAYR
  6183   BRgYb2kAAA pvagAACgJ7 OQAABAIocg AABnJQFQBw cmwVAHACKG kAAAaMLAAA AXJ4FQBwKH wAAApv
  6184   RAAABioAAA AbMAMAQAEA AC4AABECKH IAAAZyMQwA cAIoagAABm 8zAAAKbzcA AAoTBjj6AA AAEQZv
  6185   OAAACnQPAA ABCgZvEQAA CnKCFQBwby 4AAAp0KAAA AQsHLA0Gbx EAAAoHb3oA AAomBm8RAA AKcn4D
  6186   AHBvLgAACm 8TAAAKKBUA AAomBnLaBg BwAihqAAAG bzMAAApvNw AAChMHK3IR B284AAAKdA 8AAAEM
  6187   CG8RAAAKcn 4DAHBvLgAA CnQoAAABDQ ksTAlvEwAA ChMEEQQoHA AABhMFAihy AAAGcsYGAH BvGwAA
  6188   CgsHLCcHEg UoGgAACm8d AAAKCG8RAA AKB28cAAAK JghvEQAACg lvegAACiYR B285AAAKLY XeFREH
  6189   dQIAAAETCB EILAcRCG86 AAAK3BEGbz kAAAo6+v7/ /94VEQZ1Ag AAARMJEQks BxEJbzoAAA rcKkE0
  6190   AAACAAAAiA AAAH8AAAAH AQAAFQAAAA AAAAACAAAA HQAAAA0BAA AqAQAAFQAA AAAAAAAbMA QAegEA
  6191   AC8AABEWCg IocgAABnIx DABwAihqAA AGbzMAAApv NwAAChMJOD IBAAARCW84 AAAKdA8AAA ELB28R
  6192   AAAKcn4DAH BvLgAACm8T AAAKKBUAAA oMFg0HctoG AHACKGoAAA ZvMwAACm83 AAAKEwo4yA AAABEK
  6193   bzgAAAp0Dw AAARMEEQRv EQAACnLGBg Bwby4AAAp0 KAAAARMFEQ U5mwAAAAkX WA0JBjECCQ oRBW8T
  6194   AAAKKBUAAA oTBhEGKBsA AAYSAigaAA AKKD4AAAoT BwIocgAABn J+AwBwbxsA AAoTCBEILE kRCBEH
  6195   bx0AAAoRBG 8RAAAKb30A AAotEREEbx EAAAoRCG8c AAAKJishEQ RvEQAAChEI EQRvEQAACh ZvfgAA
  6196   CnQoAAABb3 8AAAomEQRv EQAAChEFb3 oAAAomEQpv OQAACjos// //3hURCnUC AAABEwsRCy wHEQtv
  6197   OgAACtwRCW 85AAAKOsL+ ///eFREJdQ IAAAETDBEM LAcRDG86AA AK3CoAAEE0 AAACAAAAZg AAANsA
  6198   AABBAQAAFQ AAAAAAAAAC AAAAHwAAAE UBAABkAQAA FQAAAAAAAA AbMAMAyAAA ADAAABEUCh QLFgwC
  6199   ezkAAARvQw AABm9fAAAG co4VAHACKG oAAAZvMwAA Cm83AAAKEw YrGREGbzgA AAp0DwAAAQ 0IAzME
  6200   CQsrDQgXWA wRBm85AAAK Ld7eFREGdQ IAAAETBxEH LAcRB286AA AK3AcsW3Kw FQBwB28RAA AKcq8Q
  6201   AHBvEgAACm 8TAAAKKCQA AAoTBAJ7OQ AABG9DAAAG b18AAAYRBA IoagAABm8P AAAKEwURBS wXEQVv
  6202   EQAACnJFEA BwbxIAAApv EwAACgoGKg EQAAACAC0A JlMAFQAAAA ATMAMAlAAA ADEAABEWCn LqFQBw
  6203   AygkAAAKCw J7OQAABG9D AAAGb18AAA YHAihqAAAG bw8AAAoMCC xkCG8RAAAK cq8QAHBvEg AACm8T
  6204   AAAKDXIkFg BwCSgkAAAK CwJ7OQAABG 9DAAAGb18A AAYHAihqAA AGbw8AAAoT BBEELCARBH JkFgBw
  6205   AihqAAAGbz MAAAoTBREF LAgRBW80AA AKCgYqGzAI AN0BAAAyAA ARAigNAAAK AgN9RAAABH NHAAAK
  6206   CgIGc0gAAA p9RQAABAJ7 RQAABHIiBw BwcjMBAHBv SQAACgJ7RQ AABHJ+AwBw cv8BAHBvSQ AACgIC
  6207   e0QAAARvQw AABm9dAAAG cpQWAHACe0 UAAARvDwAA Cn1GAAAEAn tGAAAELUYC AntEAAAEb0 MAAAZv
  6208   XQAABnL6DQ BwcjMBAHBv FwAACn1GAA AEAntEAAAE b0MAAAZvXQ AABm8oAAAK AntGAAAEbx gAAAom
  6209   AnOBAAAKfU MAAAQXCwJ7 RgAABG9KAA AKbzcAAAoT CjjYAAAAEQ pvOAAACnQP AAABDAhvEQ AACnJF
  6210   EABwbxIAAA pvEwAACg0I bxEAAApyqh YAcG8SAAAK bxMAAAoTBA hvEQAACnK0 FgBwbxIAAA pvEwAA
  6211   CigVAAAKEw UWEwYIbxEA AApyWgcAcG 8SAAAKEwcR BywOEQdvEw AACiiCAAAK EwYCe0QAAA RvQwAA
  6212   Bm9cAAAGEQ RvJgAAChMI AntEAAAEb0 MAAAZvWQAA BhEIbycAAA ooaAAAChMJ AntDAAAEBw J7RAAA
  6213   BBEECREJEQ URBnNlAAAG b4MAAAoHF1 gLEQpvOQAA Cjoc////3h URCnUCAAAB EwsRCywHEQ tvOgAA
  6214   CtwqAAAAAR AAAAIA3ADr xwEVAAAAAD ICe0MAAARv hAAACipaAn tDAAAEb4UA AApvhgAACo wFAAAb
  6215   KhswBgDkAQ AAMwAAERYK AntGAAAEb0 oAAApvNwAA ChMMK2oRDG 84AAAKdA8A AAELB28RAA AKcrQW
  6216   AHBvLgAACn QoAAABDAgs EghvEwAACi ghAAAKDQkG MQIJCgdvEQ AACnJFEABw by4AAAp0KA AAAQwI
  6217   LBkIbxMAAA oDKBQAAAos C3LEFgBwcw 4AAAp6EQxv OQAACi2N3h URDHUCAAAB Ew0RDSwHEQ 1vOgAA
  6218   CtwGF1gKcl UXAHASACga AAAKcngVAH AoUgAAChhz VwAAChMEAn tEAAAEb0IA AAYRBHJ/Fw Bwb1gA
  6219   AAoTBREFGB hvaQAACnNx AAAKEwYCKI QAAAYTBxEH EQZvcgAACh EGb3MAAAoC e0QAAARvQg AABm90
  6220   AAAKAntEAA AEb0MAAAZv XAAABhEEFn IUGABwbysA AAoTCAJ7RA AABG9CAAAG b3QAAAoCe0 QAAARv
  6221   QwAABm9dAA AGcmwVAHBy MwEAcG8XAA AKEwkRCXJF EABwA28iAA AKEQlytBYA cBIAKBoAAA pvIgAA
  6222   ChEJcvkBAH By/wEAcBEI by0AAApvhw AACiYCe0YA AAQRCW8YAA AKJgJ7RAAA BBEIby0AAA oDEQQG
  6223   FnNlAAAGEw oCe0MAAARv hAAAChdYEw sCe0MAAAQR CxEKb4MAAA oRCioBEAAA AgAUAHeLAB UAAAAA
  6224   EzADAI4AAA A0AAARc2wA AAoKBnKxGA BwcjMBAHBv FwAACgsHcs UYAHBy/wEA cG8iAAAKBg dvGAAA
  6225   CiYGctUYAH ByMwEAcG8X AAAKDAcIbx gAAAomBnLr GABwcjMBAH BvFwAACg0J cv8YAHBybA cAcG8i
  6226   AAAKCAlvGA AACiYGch0Z AHByMwEAcG 8XAAAKEwQH EQRvGAAACi YGKgAAEzAD ALYAAAA1AA ARAntD
  6227   AAAEb4QAAA oXMwtyMRkA cHMOAAAKeg J7QwAABANv iAAACgoCe0 QAAARvQgAA BgZvZgAABm 9aAAAK
  6228   AntEAAAEb0 MAAAZvXAAA BgZvaAAABm 92AAAKAntE AAAEb0MAAA ZvXQAABnIi GgBwAntFAA AEbw8A
  6229   AAoLBywtB3 JOGgBwBm9p AAAGjCwAAA EoJAAACgJ7 RQAABG8PAA AKDAgsCAcI bzAAAAomAn tDAAAE
  6230   A2+JAAAKJi o2AntDAAAE A2+IAAAKKh swAgBIAAAA NgAAERQKAn tDAAAEb4UA AApvhgAACg wrGBIC
  6231   KIoAAAoLB2 9sAAAGAygU AAAKLAIHCh ICKIsAAAot 394OEgL+Fg UAABtvOgAA CtwGKgEQAA ACABMA
  6232   JTgADgAAAA Aucn4aAHBz DgAACno6Ai gNAAAKAgN9 RwAABCrqAn tIAAAELSsC AntHAAAEb3 IAAAZy
  6233   1hoAcAJ7Rw AABG9qAAAG bw8AAAp0CA AAAX1IAAAE AntIAAAEKg AAEzACACQA AAAWAAARFg oCKIoA
  6234   AAZy8hoAcG 8fAAAKCwdy aAcAcCgUAA AKLAIXCgYq GzADAH8AAA A3AAARAyxm AntHAAAEez kAAARv
  6235   QwAABm9YAA AGb4IAAAYL KxgHbzgAAA p0CwAAAgoG b2sAAAYWb4 wAAAYHbzkA AAot4N4RB3 UCAAAB
  6236   DAgsBghvOg AACtwCKIoA AAZy8hoAcH JoBwBwbyIA AAoqAiiKAA AGcvIaAHBy bAcAcG8iAA AKKgAB
  6237   EAAAAgAeAC RCABEAAAAA EzACACQAAA AWAAARFgoC KIoAAAZyCh sAcG8fAAAK CwdyFBsAcC gUAAAK
  6238   LAIXCgYqqg MsFgIoigAA BnIKGwBwch QbAHBvIgAA CioCKIoAAA ZyChsAcG+M AAAKKgATMA MAEAEA
  6239   ACAAABECci obAHAYc1cA AAp9UQAABA JyUBsAcBhz VwAACn1SAA AEAnJ0GwBw GHNXAAAKfV MAAAQC
  6240   KA0AAAoCA3 1XAAAEc0cA AAoKAgZzSA AACn1YAAAE AntYAAAEci IHAHByMwEA cG9JAAAKAn tYAAAE
  6241   cp4bAHBypB sAcG9JAAAK AntYAAAEci 8cAHByNRwA cG9JAAAKAn tYAAAEcsoc AHBy0hwAcG 9JAAAK
  6242   AntYAAAEcm MdAHByaR0A cG9JAAAKAn tYAAAEcvod AHByAB4AcG 9JAAAKAntY AAAEckIeAH ByUh4A
  6243   cG9JAAAKAn tYAAAEcoYe AHBymB4AcG 9JAAAKAntY AAAEctIeAH By2h4AcG9J AAAKKh4Ce1 EAAAQq
  6244   HgJ7UgAABC oeAntTAAAE KhMwBAA9AQ AAIgAAEQJ7 VAAABDorAQ AAAntXAAAE b0IAAAYCKJ AAAAZv
  6245   cAAACiwcAg J7VwAABAIo kAAABm9LAA AGfVQAAAQ4 9wAAAAJ7Vw AABG9CAAAG AiiQAAAGci 4fAHBv
  6246   WAAACgoCc2 wAAAp9VAAA BAJ7VAAABH KkHwBwcmkd AHBvFwAACg sHcmkdAHBy Yx0AcChGAA AGB3IA
  6247   HgBwcvodAH AoRgAABgdy Uh4AcHJCHg BwKEYAAAYH cpgeAHByhh 4AcChGAAAG B3LaHgBwct IeAHAo
  6248   RgAABgJ7VA AABAdvGAAA CiYGGBhvaQ AACnNxAAAK DAJ7VAAABA hvcgAACghv cwAACgJ7Vw AABG9C
  6249   AAAGb3QAAA oCe1cAAARv QgAABgIokA AABhZyyB8A cG9ZAAAKJg J7VwAABG9C AAAGb3QAAA oCe1QA
  6250   AAQqRgJy+h 0AcHJ1IABw KKYAAAYqSg Jy+h0AcHJ1 IABwAyinAA AGKkYCcvod AHBygSAAcC imAAAG
  6251   KkoCcvodAH BygSAAcAMo pwAABipGAn L6HQBwcpEg AHAopgAABi pKAnL6HQBw cpEgAHADKK cAAAYq
  6252   RgJy+h0AcH KhIABwKKYA AAYqSgJy+h 0AcHKhIABw AyinAAAGKk YCcmMdAHBy uSAAcCimAA AGKkoC
  6253   cmMdAHByuS AAcAMopwAA BipGAnJjHQ BwcssgAHAo pgAABipKAn JjHQBwcssg AHADKKcAAA YqRgJy
  6254   Yx0AcHLpIA BwKKYAAAYq SgJyYx0AcH LpIABwAyin AAAGKkYCcm MdAHByASEA cCimAAAGKk oCcmMd
  6255   AHByASEAcA MopwAABipG AnJjHQBwch MhAHAopgAA BipKAnJjHQ BwchMhAHAD KKcAAAYqAA ATMAMA
  6256   LgAAADgAAB EUCnIvIQBw AwQoTQAACg sCKJMAAAYH AntYAAAEbw 8AAAoMCCwH CG8QAAAKCg YqAAAT
  6257   MAQAwwAAAD kAABFyLyEA cAMEKE0AAA oKAiiTAAAG BgJ7WAAABG 8PAAAKCwc6 lQAAAHJpHQ BwDAMl
  6258   DSxpCXJjHQ BwKBQAAAot Ngly+h0AcC gUAAAKLTEJ ckIeAHAoFA AACi0sCXKG HgBwKBQAAA otJwly
  6259   0h4AcCgUAA AKLSIrJnJp HQBwDCsecg AeAHAMKxZy Uh4AcAwrDn KYHgBwDCsG ctoeAHAMAi iTAAAG
  6260   AwQIb40AAA oLAiiTAAAG bygAAAoHbx gAAAomBwVv HgAACioAEz AEAP0AAAAi AAARAntVAA AEOusA
  6261   AAACe1cAAA RvQgAABgIo kQAABm9wAA AKLBwCAntX AAAEAiiRAA AGb0sAAAZ9 VQAABDi3AA AAAntX
  6262   AAAEb0IAAA YCKJEAAAZy ZyEAcG9YAA AKCgJzbAAA Cn1VAAAEAn tVAAAEcvQh AHByNRwAcG 8XAAAK
  6263   CwdypBsAcH KeGwBwKEYA AAYCe1UAAA QHbxgAAAom BhgYb2kAAA pzcQAACgwC e1UAAAQIb3 IAAAoI
  6264   b3MAAAoCe1 cAAARvQgAA Bm90AAAKAn tXAAAEb0IA AAYCKJEAAA YWcgoiAHBv WQAACiYCe1 cAAARv
  6265   QgAABm90AA AKAntVAAAE KjICcrsiAH AosQAABipG AnLTIgBwKL EAAAZzjgAA CipKAnLTIg BwA297
  6266   AAAKKLIAAA YqMgJy7yIA cCixAAAGKj ICcgUjAHAo sQAABio2An IFIwBwAyiy AAAGKjICch UjAHAo
  6267   sQAABio2An IVIwBwAyiy AAAGKgAAEz ADAC0AAAA4 AAARFApyJS MAcAMoJAAA CgsCKKgAAA YHAntY
  6268   AAAEbw8AAA oMCCwHCG8Q AAAKCgYqAA AAEzADAE4A AAA6AAARci UjAHADKCQA AAoKAiioAA AGBgJ7
  6269   WAAABG8PAA AKCwctJAIo qAAABgNyNR wAcG8XAAAK CwIoqAAABm 8oAAAKB28Y AAAKJgcEbx 4AAAoq
  6270   AAATMAQA/Q AAACIAABEC e1YAAAQ66w AAAAJ7VwAA BG9CAAAGAi iSAAAGb3AA AAosHAICe1 cAAAQC
  6271   KJIAAAZvSw AABn1WAAAE OLcAAAACe1 cAAARvQgAA BgIokgAABn JTIwBwb1gA AAoKAnNsAA AKfVYA
  6272   AAQCe1YAAA Ry9CEAcHLS HABwbxcAAA oLB3KkGwBw cp4bAHAoRg AABgJ7VgAA BAdvGAAACi YGGBhv
  6273   aQAACnNxAA AKDAJ7VgAA BAhvcgAACg hvcwAACgJ7 VwAABG9CAA AGb3QAAAoC e1cAAARvQg AABgIo
  6274   kgAABhZy3C MAcG9ZAAAK JgJ7VwAABG 9CAAAGb3QA AAoCe1YAAA QqAAAAEzAD ADIAAAA4AA ARFApy
  6275   iSQAcAMoJA AACgsCKLMA AAYHAntYAA AEbw8AAAoM CCwMCG+PAA AKbxAAAAoK BioAABswBA BKAQAA
  6276   OwAAEXLjJA BwCgIoswAA BgYCe1gAAA RvDwAACgty BSUAcAMoJA AACgoCKLMA AAYGAntYAA AEbw8A
  6277   AAoMCDr/AA AAGg0Hb0oA AApvNwAACh MJK0ARCW84 AAAKdA8AAA ETBBEEbxEA AApyZyUAcG 8uAAAK
  6278   dCgAAAETBR EFLBYRBW8T AAAKKCEAAA oTBhEGCTED EQYNEQlvOQ AACi233hUR CXUCAAABEw oRCiwH
  6279   EQpvOgAACt wJF1gNAiiz AAAGcm8lAH By0hwAcG8X AAAKEwcRB3 KBJQBwco0l AHBvIgAACh EHcmcl
  6280   AHASAygaAA AKbyIAAAoR B3JFEABwA2 8iAAAKAiiz AAAGcp4bAH By2yUAcHKk GwBwb40AAA oTCBEI
  6281   BG8eAAAKEQ cRCG8YAAAK JgIoswAABm 8oAAAKEQdv GAAACiYqCG +PAAAKBG8e AAAKKgAAAR AAAAIA
  6282   TQBNmgAVAA AAAAMwBACv AAAAAAAAAA J7VAAABCwy AntXAAAEAn tUAAAEcukl AHBy+yUAcG 9EAAAG
  6283   AntXAAAEAi iQAAAGAntU AAAEb0gAAA YCe1UAAAQs MgJ7VwAABA J7VQAABHLp JQBwcg0mAH BvRAAA
  6284   BgJ7VwAABA IokQAABgJ7 VQAABG9IAA AGAntWAAAE LDICe1cAAA QCe1YAAARy 6SUAcHIdJg Bwb0QA
  6285   AAYCe1cAAA QCKJIAAAYC e1YAAARvSA AABioeAigN AAAKKgATMA IALQAAADwA ABF+WQAABC 0gcjMm
  6286   AHDQDwAAAi iRAAAKb5IA AApzkwAACg oGgFkAAAR+ WQAABCoafl oAAAQqHgKA WgAABCoafl sAAAQq
  6287   LnO8AAAGgF sAAAQqHgIo lgAACioAAz ADACABAAAA AAAAAnKzJg BwfV0AAAQC KJgAAAoWb5 kAAAoC
  6288   KMUAAAYCKJ gAAApvmgAA Ci0GAijNAA AGAiiYAAAK b5oAAAotBg IoxgAABgIo mAAACm+aAA AKLQYC
  6289   KMgAAAYCKJ gAAApvmgAA Ci0GAijHAA AGAiiYAAAK b5oAAAotBg IozAAABgIo mAAACm+aAA AKLQYC
  6290   KMkAAAYCe3 0AAAQsC3L3 JgBwKHcAAA omAiiYAAAK b5oAAAotBw IoywAABiYC KJgAAApvmg AACi0G
  6291   AijDAAAGAi iYAAAKb5oA AAotBwIowg AABiYCKJgA AApvmgAACi 0GAijAAAAG AiiYAAAKb5 oAAAot
  6292   BgIovwAABg Ile10AAARy KycAcCg+AA AKfV0AAAQC KM4AAAYqGz AFABMBAAA9 AAARAnt2AA AEcj8n
  6293   AHACe2gAAA RvVQAACiib AAAKKFIAAA oKBnJDJwBw KJwAAAoMEg JyRycAcCid AAAKKFIAAA oKBgJ7
  6294   aAAABG9VAA AKKJ4AAAoo PgAACgoCJX tdAAAEcmUn AHAGcpsnAH AonwAACn1d AAAEAntoAA AEb1UA
  6295   AAoGKKAAAA oCe3YAAARy PycAcAJ7aQ AABG9VAAAK KKEAAAooUg AACgoCJXtd AAAEcqEnAH AGcpsn
  6296   AHAonwAACn 1dAAAEAntp AAAEb1UAAA oGKKAAAAre KQsCJXtdAA AEctknAHAH b6IAAApvew AACnKb
  6297   JwBwKJ8AAA p9XQAABN4A AiV7XQAABH IxKABwKD4A AAp9XQAABC oAARAAAAAA AADT0wApJg AAARsw
  6298   BgAwAwAAPg AAEXIlAQBw CnIlAQBwC3 IlAQBwDHOj AAAKDSjBAA AGEwQSBf4V UAAAAQIle1 0AAARy
  6299   bygAcAJ8aw AABCgaAAAK cocoAHAonw AACn1dAAAE AntoAAAEc0 AAAAYTBhEG b0MAAAZvWA AABhdv
  6300   hgAABhMHGB MIOBcCAAAR BxEIAnteAA AEb3QAAAZv BwAABm97AA AKCwkHb6QA AAo66wEAAA J7XwAA
  6301   BBUxHBEHEQ gCe18AAARv dAAABm8HAA AGb3sAAAoK KwZyJQEAcA oCe2cAAAQH EgJvpQAACj luAQAA
  6302   EQcRCAJ7YA AABG90AAAG bwcAAAZvew AACiYRBxEI AntgAAAEb3 QAAAZvBwAA Bm9BAAAKFj 6tAAAA
  6303   EQcRCAJ7YA AABG90AAAG bwcAAAYopg AACiinAAAK KKgAAAoTBd 2RAAAAEwkC JXtdAAAEEw sbjSkA
  6304   AAETDBEMFh ELohEMF3KZ KABwohEMGB IIKBoAAAqi EQwZcvMoAH CiEQwaEQcR CAJ7YAAABG 90AAAG
  6305   bwcAAAaiEQ woYQAACn1d AAAEAiV7XQ AABHIHKQBw EQlvogAACm 97AAAKcpsn AHAonwAACn 1dAAAE
  6306   3g4gbAcAAB cXc6kAAAoT BREEb6oAAA ofCY0BAAAB Ew0RDRYGoh ENFwJ7cAAA BIwsAAABoh ENGCic
  6307   AAAKjFAAAA GiEQ0ZKJwA AAqMUAAAAa IRDRpyISkA cKIRDRsonA AACoxQAAAB ohENHHIhKQ BwohEN
  6308   HREFjFAAAA GiEQ0eCKIR DW+rAAAKJi s/AiV7XQAA BBMOG40pAA ABEw8RDxYR DqIRDxdyOy kAcKIR
  6309   DxgHohEPGX JnKQBwohEP GgiiEQ8oYQ AACn1dAAAE EQgXWBMIEQ gCe2sAAAQ+ 3P3//wIle1 0AAARy
  6310   iykAcBEEb6 oAAApvrAAA ChMQEhAoGg AACnKZKQBw KJ8AAAp9XQ AABAIRBCjE AAAG3gwRBi wHEQZv
  6311   OgAACtzeNx MKAiV7XQAA BHLVKQBwEQ pvogAACm97 AAAKcpsnAH AonwAACn1d AAAEAiiYAA AKF2+Z
  6312   AAAK3gACJX tdAAAEcisq AHAoPgAACn 1dAAAEKkFM AAAAAAAAEw EAACoAAAA9 AQAAgwAAAC YAAAEC
  6313   AAAAWgAAAH oCAADUAgAA DAAAAAAAAA AAAAAAJwAA ALsCAADiAg AANwAAACYA AAETMAMA+w AAAD8A
  6314   ABFzrQAACg oGb64AAApy ZyoAcNApAA ABKJEAAApv rwAACiYGb6 4AAApyfSoA cNAsAAABKJ EAAApv
  6315   rwAACiYGb6 4AAApyryoA cNBQAAABKJ EAAApvrwAA CiYGb64AAA py0yoAcNBQ AAABKJEAAA pvrwAA
  6316   CiYGb64AAA py4yoAcNAp AAABKJEAAA pvrwAACiYG b64AAApy9y oAcNBQAAAB KJEAAApvrw AACiYG
  6317   b64AAApyBy sAcNApAAAB KJEAAApvrw AACiYGb64A AApyGysAcN BQAAABKJEA AApvrwAACi YGb64A
  6318   AApyOysAcN ApAAABKJEA AApvrwAACi YGKgAbMAUA YAIAAEAAAB ECJXtdAAAE clMrAHAoPg AACn1d
  6319   AAAEFwoCe2 gAAARvVQAA CiibAAAKCw J7aAAABG9V AAAKKLAAAA oMCG+xAAAK 1I1ZAAABDQ gJFghv
  6320   sQAACmlvsg AACiYIb7MA AAoCe24AAA RztAAAChME ciUBAHATBR EFcqErAHAo PgAAChMFEQ Vy9ysA
  6321   cCg+AAAKEw URBXJpLABw KD4AAAoTBR EFcscsAHAo PgAAChMFEQ Vy2SwAcAdy 2SwAcCifAA AKEwUR
  6322   BXLdLABwKD 4AAAoTBREF cu0sAHACe2 MAAARy2SwA cCifAAAKEw URBXLzLABw KD4AAAoTBR EFcgUt
  6323   AHAoPgAACh MFEQVyLS0A cCg+AAAKEw URBXIFLQBw KD4AAAoTBR EFckMtAHAo PgAAChMFAi V7XQAA
  6324   BBEFcpsnAH AoUgAACn1d AAAEEQVztQ AAChMGEQZv tgAACnJbLQ BwCW+3AAAK JhEGF2+4AA AKEQYR
  6325   BG+5AAAKEQ RvugAAChEG b7sAAAoTBw Ile10AAARy aS0AcBIHKB oAAApyfy0A cCifAAAKfV 0AAAQR
  6326   BxczV3LDLQ Bwc7UAAAoT CBEIF2+4AA AKEQgRBG+5 AAAKAhEIb7 wAAAoovQAA Cn1wAAAEAi V7XQAA
  6327   BHKmLgBwAn xwAAAEKBoA AApymycAcC ifAAAKfV0A AAQrDgIomA AAChdvmQAA ChYK3gwRBC wHEQRv
  6328   OgAACtzeOR MJAiV7XQAA BHLcLgBwEQ lvogAACm97 AAAKcpsnAH AonwAACn1d AAAEAiiYAA AKF2+Z
  6329   AAAKFgreAC AQJwAAKL4A AAoGKkE0AA ACAAAAagAA AKMBAAANAg AADAAAAAAA AAAAAAAAKQ AAAPIB
  6330   AAAbAgAAOQ AAACYAAAEb MAUA4QEAAE EAABFyJQEA cApyJQEAcA sYDHOjAAAK JnOjAAAKJg ICe2gA
  6331   AARvVQAACi jKAAAGDQIl e10AAAQTCB yNKQAAARMJ EQkWEQiiEQ kXcjwvAHCi EQkYAntoAA AEb1UA
  6332   AAqiEQkZcm YvAHCiEQka CaIRCRtymy cAcKIRCShh AAAKfV0AAA QCe2gAAARv VQAACgkXKL 8AAAoC
  6333   JXtdAAAEco ovAHAoPgAA Cn1dAAAEAg lzYgAACn1p AAAEAiV7XQ AABHLCLwBw KD4AAAp9XQ AABAJ7
  6334   aAAABHNAAA AGEwQRBG9D AAAGb1gAAA YXb4YAAAYT BQJ7XAAABC 0CGQwCe2sA AAQTBitwEQ URBgJ7
  6335   YQAABG90AA AGbwcAAAZv ewAACgsCe2 YAAAQHEgBv pQAACiwoAn tnAAAEBm/A AAAKLTIRBR EGF296
  6336   AAAGAiV7aw AABBdZfWsA AAQrGBEFEQ YXb3oAAAYC JXtrAAAEF1 l9awAABBEG F1kTBhEGCC +LEQVv
  6337   ewAABt4MEQ QsBxEEbzoA AArcIBAnAA AovgAACt43 EwcCJXtdAA AEcu4vAHAR B2+iAAAKb3 sAAApy
  6338   mycAcCifAA AKfV0AAAQC KJgAAAoXb5 kAAAreAAIl e10AAARyUj AAcCg+AAAK fV0AAAQqAA AAQTQA
  6339   AAIAAADVAA AApgAAAHsB AAAMAAAAAA AAAAAAAAAa AAAAeQEAAJ MBAAA3AAAA JgAAARswBQ CzAQAA
  6340   QgAAEQIle1 0AAARynDAA cCg+AAAKfV 0AAAQCe24A AARzwQAACg oGcvowAHBv wgAACgNvrg AACm/D
  6341   AAAKEwcrPB EHbzgAAAoL AiV7XQAABA dvewAACnI8 MQBwKFIAAA p9XQAABAZv xAAACgdvew AACgdv
  6342   ewAACm/FAA AKJhEHbzkA AAotu94VEQ d1AgAAARMI EQgsBxEIbz oAAArcBgNv xgAACt4KBi wGBm86
  6343   AAAK3AIle1 0AAARyRDEA cCg+AAAKfV 0AAAQCe24A AARztAAACg xyJQEAcA0J cq4xAHAoPg AACg0J
  6344   cggyAHAoPg AACg0JckQy AHAoPgAACg 0CJXtdAAAE CXKbJwBwKF IAAAp9XQAA BAlztQAACh MEEQQX
  6345   b7gAAAoRBA hvuQAACghv ugAAChEEb7 sAAAoTBQIl e10AAARyrj IAcBIFKBoA AApywjIAcC ifAAAK
  6346   fV0AAATeCg gsBghvOgAA CtzeNxMGAi V7XQAABHIQ MwBwEQZvog AACm97AAAK cpsnAHAonw AACn1d
  6347   AAAEAiiYAA AKF2+ZAAAK 3gACJXtdAA AEcpczAHAo PgAACn1dAA AEKgBBZAAA AgAAADoAAA BJAAAA
  6348   gwAAABUAAA AAAAAAAgAA ACIAAAB/AA AAoQAAAAoA AAAAAAAAAg AAAM0AAACM AAAAWQEAAA oAAAAA
  6349   AAAAAAAAAB YAAABPAQAA ZQEAADcAAA AmAAABAzAF AIcBAAAAAA AAAiV7XQAA BHLxMwBwKD 4AAAp9
  6350   XQAABAJyOT QAcH1tAAAE AiV7bQAABA IomAAACm/H AAAKclM0AH BvyAAACm/J AAAKdCkAAA EoPgAA
  6351   Cn1tAAAEAi V7bQAABHJ7 NABwKD4AAA p9bQAABAIl e20AAAQCKJ gAAApvxwAA CnKfNABwb8 gAAApv
  6352   yQAACnQpAA ABKD4AAAp9 bQAABAIle2 0AAARyyzQA cCg+AAAKfW 0AAAQCJXtd AAAEcv80AH ACe20A
  6353   AARymycAcC ifAAAKfV0A AAQCcjk0AH B9bgAABAIl e24AAAQCKJ gAAApvxwAA CnJDNQBwb8 gAAApv
  6354   yQAACnQpAA ABKD4AAAp9 bgAABAIle2 4AAARyezQA cCg+AAAKfW 4AAAQCJXtu AAAEAiiYAA AKb8cA
  6355   AApybTUAcG /IAAAKb8kA AAp0KQAAAS g+AAAKfW4A AAQCJXtuAA AEcss0AHAo PgAACn1uAA AEAiV7
  6356   XQAABHKbNQ BwAntuAAAE cpsnAHAonw AACn1dAAAE KgAbMAUAzA EAAEMAABEC JXtdAAAEcu E1AHAo
  6357   PgAACn1dAA AEAgIomAAA Cm/HAAAKci E2AHBvyAAA Cm/JAAAKb3 sAAApzYgAA Cn1oAAAEAi V7XQAA
  6358   BHI1NgBwAi iYAAAKb8cA AApyITYAcG /IAAAKb8kA AApvewAACn KbJwBwKJ8A AAp9XQAABA ICe2gA
  6359   AARvygAACn 1jAAAEAnto AAAEc0AAAA YKAgZvQwAA Bm9YAAAGF2 +GAAAGfWwA AAQWCytHAi V7agAA
  6360   BBdYfWoAAA QCe2wAAAQX AntqAAAEb3 QAAAZvBwAA Bm97AAAKb8 sAAApyJQEA cCgUAAAKLA YHF1gL
  6361   KwYHFjECFg sCe2wAAAQX AntqAAAEb3 QAAAZvBwAA Bm97AAAKb8 sAAApyJQEA cCggAAAKLY wHGzKI
  6362   AgJ7agAABB tZfWoAAAQC JXtdAAAEcl 82AHACfGoA AAQoGgAACn KbJwBwKJ8A AAp9XQAABA J7agAA
  6363   BC0iAiV7XQ AABHKhNgBw KD4AAAp9XQ AABAIomAAA ChdvmQAACt 4KBiwGBm86 AAAK3N41DA Ile10A
  6364   AARy9zYAcA hvogAACm97 AAAKcpsnAH AonwAACn1d AAAEAiiYAA AKF2+ZAAAK 3gAqQTQAAA IAAACX
  6365   AAAA8wAAAI oBAAAKAAAA AAAAAAAAAA AWAAAAgAEA AJYBAAA1AA AAJgAAARsw BQDjAQAARA AAEQIl
  6366   e10AAARyTz cAcCg+AAAK fV0AAARyJQ EAcApyJQEA cAsWDBcNFx MEOOIAAAAX EwQXEwUrLw J7bAAA
  6367   BAkRBW90AA AGb3sAAApv ywAACnIlAQ BwKCAAAAos BRYTBCsQEQ UXWBMFEQUC e2oAAAQxxx EELA0I
  6368   F1gMCRdYDT iQAAAACCwC FgwCe2wAAA QJAnteAAAE b3QAAAZvew AACm/LAAAK CgJ7bAAABA kCe2EA
  6369   AARvdAAABm 97AAAKb8sA AAoLAntkAA AEBm+kAAAK LT8Gb8sAAA pvQQAAChYx MQZvzAAACg J7cwAA
  6370   BG/MAAAKKC AAAAosGQJ7 ZAAABAZvzQ AACgJ7ZgAA BAcGb84AAA oJF1gNCB8K Pxb///8CCR 8LWX1r
  6371   AAAEAntkAA AEb88AAAoW MVcCJXtdAA AEcpU3AHAC e2QAAARvzw AAChMHEgco GgAACnKbJw BwKJ8A
  6372   AAp9XQAABA Ile10AAARy rTcAcAJ8aw AABCgaAAAK cpsnAHAonw AACn1dAAAE KyICJXtdAA AEcsM3
  6373   AHAoPgAACn 1dAAAEAiiY AAAKF2+ZAA AK3jcTBgIl e10AAARy+z cAcBEGb6IA AApvewAACn KbJwBw
  6374   KJ8AAAp9XQ AABAIomAAA ChdvmQAACt 4AKgBBHAAA AAAAABYAAA CVAQAAqwEA ADcAAAAmAA ABGzAF
  6375   AL8CAABFAA ARAiV7XQAA BHJZOABwKD 4AAAp9XQAA BHIlAQBwCg J7aAAABG/K AAAKb9AAAA pyiTgA
  6376   cG/RAAAKLC QCFn1cAAAE AgJ7egAABH 10AAAEAgJ7 dwAABH1iAA AEOJwAAAAC e2gAAARvyg AACm/Q
  6377   AAAKcpE4AH Bv0QAACiwh Ahh9XAAABA ICe3wAAAR9 dAAABAICe3 kAAAR9YgAA BCtfAntoAA AEb8oA
  6378   AApv0AAACn KZOABwb9EA AAosIQIXfV wAAAQCAnt7 AAAEfXQAAA QCAnt4AAAE fWIAAAQrIg Ile10A
  6379   AARyozgAcC g+AAAKfV0A AAQCKJgAAA oXb5kAAAoX CziPAAAAAn tsAAAEFwdv dAAABm8HAA AGb3sA
  6380   AApvzAAACg oGAntzAAAE b8wAAAooFA AACiwJAgd9 XgAABCtSBg J7dAAABG/M AAAKKBQAAA osCQIH
  6381   fWAAAAQrNg YCe3UAAARv zAAACigUAA AKLAkCB31f AAAEKxoGAn tiAAAEb8wA AAooFAAACi wHAgd9
  6382   YQAABAcXWA sHAntqAAAE PmX///8Ce1 4AAAQVMSgC JXtdAAAEci o5AHACfF4A AAQoGgAACn KbJwBw
  6383   KJ8AAAp9XQ AABCsiAiV7 XQAABHJIOQ BwKD4AAAp9 XQAABAIomA AAChdvmQAA CgJ7YAAABB UxKAIl
  6384   e10AAARyhj kAcAJ8YAAA BCgaAAAKcp snAHAonwAA Cn1dAAAEKy ICJXtdAAAE crQ5AHAoPg AACn1d
  6385   AAAEAiiYAA AKF2+ZAAAK AntfAAAEFT EoAiV7XQAA BHICOgBwAn xfAAAEKBoA AApymycAcC ifAAAK
  6386   fV0AAAQrFg Ile10AAARy HDoAcCg+AA AKfV0AAATe NQwCJXtdAA AEclo6AHAI b6IAAApvew AACnKb
  6387   JwBwKJ8AAA p9XQAABAIo mAAAChdvmQ AACt4AKgBB HAAAAAAAAB wAAABtAgAA iQIAADUAAA AmAAAB
  6388   GzAHAOMAAA BGAAARAiV7 XQAABHKqOg BwKD4AAAp9 XQAABAJ7cg AABApz0gAA CgwCKJgAAA pz0AAA
  6389   Bg0IBgIomA AACm/HAAAK ckM1AHBvyA AACm/JAAAK dCkAAAEUFB Rv0wAACgsC KJgAAAoHFB QJFBRv
  6390   1AAACm+ZAA AKAiiYAAAK b5oAAAoXMx YCJXtdAAAE cvI6AHAoPg AACn1dAAAE 3jcTBAIle1 0AAARy
  6391   QDsAcBEEb6 IAAApvewAA CnKbJwBwKJ 8AAAp9XQAA BAIomAAACh dvmQAACt4A AiV7XQAABH KaOwBw
  6392   KD4AAAp9XQ AABCoAARAA AAAAFgB/lQ A3JgAAARsw BQBbAQAARw AAEXIlAQBw CgMLHI0pAA ABEwQR
  6393   BBYHKNUAAA qiEQQXcj8n AHCiEQQYBy ibAAAKohEE GXLqOwBwoh EEGiicAAAK EwUSBXJHJw BwKJ0A
  6394   AAqiEQQbBy ieAAAKohEE KGEAAAoKFw wrbx6NKQAA ARMGEQYWBy jVAAAKohEG F3I/JwBwoh EGGAco
  6395   mwAACqIRBh ly6jsAcKIR BhoonAAACh MHEgdyRycA cCidAAAKoh EGG3JDJwBw ohEGHBICKB oAAAqi
  6396   EQYdByieAA AKohEGKGEA AAoKCBdYDA Yo1gAACi2J AiV7XQAABB MIHI0pAAAB EwkRCRYRCK IRCRdy
  6397   ADwAcKIRCR gDohEJGXIc PABwohEJGg aiEQkbcpsn AHCiEQkoYQ AACn1dAAAE 3jUNAiV7XQ AABHI8
  6398   PABwCW+iAA AKb3sAAApy mycAcCifAA AKfV0AAAQC KJgAAAoXb5 kAAAreAAYq AEEcAAAAAA AABgAA
  6399   AB4BAAAkAQ AANQAAACYA AAEbMAUAeQ EAAEgAABEX CgJ7bQAABH O0AAAKC3Il AQBwDAhypj wAcCg+
  6400   AAAKDAhyNT 0AcCg+AAAK DAhyaz0AcC g+AAAKDAhy pz0AcAJ8bw AABP4WFgAA AW97AAAKct U9AHAo
  6401   nwAACgwIct s9AHAoPgAA CgwCJXtdAA AECHKbJwBw KFIAAAp9XQ AABAhztQAA Cg0JF2+4AA AKCQdv
  6402   uQAACgdvug AACglv1wAA ChMEKzECe2 cAAAQRBBEE cik+AHBv2A AACm/ZAAAK EQQRBHJFPg Bwb9gA
  6403   AApv2QAACm /OAAAKEQRv 2gAACi3GAi V7XQAABHJz PgBwAntnAA AEb9sAAAoT BhIGKBoAAA pymycA
  6404   cCifAAAKfV 0AAATeCgcs BgdvOgAACt wCe2cAAARv 2wAACi0YAi V7XQAABHKV PgBwKD4AAA p9XQAA
  6405   BBYK3jkTBQ Ile10AAARy yz4AcBEFb6 IAAApvewAA CnKbJwBwKJ 8AAAp9XQAA BAIomAAACh dvmQAA
  6406   ChYK3gAGKg AAAEE0AAAC AAAADgAAAP 8AAAANAQAA CgAAAAAAAA AAAAAAAgAA ADwBAAA+AQ AAOQAA
  6407   ACYAAAEbMA UAggEAAEkA ABECJXtdAA AEcis/AHAo PgAACn1dAA AEciUBAHAK BnJ9PwBwKD 4AAAoK
  6408   BnK/PwBwKD 4AAAoKBnIF QABwKD4AAA oKBnJdQABw KD4AAAoKBn JjQABwKD4A AAoKBnLZLA BwAnxv
  6409   AAAE/hYWAA ABb3sAAApy hUAAcCifAA AKCgIle10A AARy70AAcA ZymycAcCif AAAKfV0AAA QWCwJ7
  6410   bQAABHO0AA AKDAZztQAA Cg0JF2+4AA AKCQhvuQAA CgJ7ZAAABG /cAAAKEwYr PhIGKN0AAA oTBAlv
  6411   tgAACm/eAA AKCW+2AAAK chdBAHARBG /fAAAKJghv ugAACglvuw AACiYIb+AA AAoHF1gLEg Yo4QAA
  6412   Ci253g4SBv 4WCAAAG286 AAAK3N4KCC wGCG86AAAK 3AIle10AAA RyJUEAcBIB KBoAAApymy cAcCif
  6413   AAAKfV0AAA TeMhMFAiV7 XQAABHJdQQ BwEQVv4gAA Cm97AAAKKF IAAAp9XQAA BAIomAAACh dvmQAA
  6414   Ct4AKgAAAS gAAAIAxgBL EQEOAAAAAA IApAB9IQEK AAAAAAAAmA C3TwEyJgAA ARswBQAWBg AASgAA
  6415   EQIle10AAA RywUEAcCg+ AAAKfV0AAA QCe24AAARz tAAACgpy+0 EAcAtzrQAA CgwHBnPjAA AKDQlz
  6416   5AAAChMEEQ QIb+UAAAom CG+qAAAKb8 MAAAoTBzg7 AwAAEQdvOA AACnRUAAAB EwURBRZv5g AACjkg
  6417   AwAAEQUWb+ YAAApvewAA CnKSQgBwKB QAAAosNBEF F2/mAAAKLC oRBRdv5gAA Cm97AAAKb8 sAAApv
  6418   zAAACnK4Qg BwKBQAAAos BwIXfX0AAA QRBRZv5gAA Cm97AAAKcs JCAHAoFAAA Ciw8EQUXb+ YAAAos
  6419   MhEFF2/mAA AKb3sAAApv ywAACm/MAA AKcrhCAHAo FAAACjmKAg AAAhd9cQAA BDh+AgAAEQ UWb+YA
  6420   AApvewAACn L8QgBwKBQA AAosIhEFF2 /mAAAKLBgC EQUXb+YAAA pvewAACn1y AAAEOEMCAA ARBRZv
  6421   5gAACm97AA AKcixDAHAo FAAACiwiEQ UXb+YAAAos GAIRBRdv5g AACm97AAAK fXMAAAQ4CA IAABEF
  6422   Fm/mAAAKb3 sAAApyYEMA cCgUAAAKLC IRBRdv5gAA CiwYAhEFF2 /mAAAKb3sA AAp9dAAABD jNAQAA
  6423   EQUWb+YAAA pvewAACnKc QwBwKBQAAA osIhEFF2/m AAAKLBgCEQ UXb+YAAApv ewAACn11AA AEOJIB
  6424   AAARBRZv5g AACm97AAAK csxDAHAoFA AACiwiEQUX b+YAAAosGA IRBRdv5gAA Cm97AAAKfX YAAAQ4
  6425   VwEAABEFFm /mAAAKb3sA AApy/EMAcC gUAAAKLCIR BRdv5gAACi wYAhEFF2/m AAAKb3sAAA p9dwAA
  6426   BDgcAQAAEQ UWb+YAAApv ewAACnIoRA BwKBQAAAos IhEFF2/mAA AKLBgCEQUX b+YAAApvew AACn14
  6427   AAAEOOEAAA ARBRZv5gAA Cm97AAAKcl ZEAHAoFAAA CiwiEQUXb+ YAAAosGAIR BRdv5gAACm 97AAAK
  6428   fXkAAAQ4pg AAABEFFm/m AAAKb3sAAA pygkQAcCgU AAAKLB8RBR dv5gAACiwV AhEFF2/mAA AKb3sA
  6429   AAp9egAABC tuEQUWb+YA AApvewAACn K2RABwKBQA AAosHxEFF2 /mAAAKLBUC EQUXb+YAAA pvewAA
  6430   Cn17AAAEKz YRBRZv5gAA Cm97AAAKcu xEAHAoFAAA CiwdEQUXb+ YAAAosEwIR BRdv5gAACm 97AAAK
  6431   fXwAAAQRB2 85AAAKOrn8 ///eFREHdQ IAAAETCBEI LAcRCG86AA AK3N4MEQQs BxEEbzoAAA rc3goJ
  6432   LAYJbzoAAA rc3goGLAYG bzoAAArcAi V7XQAABHIg RQBwAiiYAA AKb8cAAApy bkUAcG/IAA AKb8kA
  6433   AApvewAACn KbJwBwKJ8A AAp9XQAABA Ile10AAAQT CRqNAQAAAR MKEQoWEQmi EQoXco5FAH CiEQoY
  6434   AntxAAAEjE MAAAGiEQoZ cpsnAHCiEQ oo5wAACn1d AAAEAiV7XQ AABHLMRQBw AntyAAAEcp snAHAo
  6435   nwAACn1dAA AEAiV7XQAA BHIARgBwAn tzAAAEcpsn AHAonwAACn 1dAAAEAiV7 XQAABHI4Rg BwAnt0
  6436   AAAEcpsnAH AonwAACn1d AAAEAiV7XQ AABHJ4RgBw Ant1AAAEcp snAHAonwAA Cn1dAAAEAi V7XQAA
  6437   BHKsRgBwAn t2AAAEcpsn AHAonwAACn 1dAAAEAiV7 XQAABHLgRg BwAnt3AAAE cpsnAHAonw AACn1d
  6438   AAAEAiV7XQ AABHIQRwBw Ant4AAAEcp snAHAonwAA Cn1dAAAEAi V7XQAABHJC RwBwAnt5AA AEcpsn
  6439   AHAonwAACn 1dAAAEAiV7 XQAABHJyRw BwAnt6AAAE cpsnAHAonw AACn1dAAAE AiV7XQAABH KqRwBw
  6440   Ant7AAAEcp snAHAonwAA Cn1dAAAEAi V7XQAABHLk RwBwAnt8AA AEcpsnAHAo nwAACn1dAA AEAiV7
  6441   XQAABHIcSA BwAnxvAAAE /hYWAAABb3 sAAApymycA cCifAAAKfV 0AAATeIRMG AiV7XQAABH IuSABw
  6442   EQZvogAACi hSAAAKfV0A AATeACoAAE F8AAACAAAA VAAAAE4DAA CiAwAAFQAA AAAAAAACAA AAPgAA
  6443   AHsDAAC5Aw AADAAAAAAA AAACAAAANg AAAJEDAADH AwAACgAAAA AAAAACAAAA IgAAALEDAA DTAwAA
  6444   CgAAAAAAAA AAAAAAFgAA AN4FAAD0BQ AAIQAAACYA AAEbMAQAtQ AAAEsAABEC e20AAARztA AACgpy
  6445   akgAcHO1AA AKCwcXb7gA AAoHBm+5AA AKB2+2AAAK crlJAHAWjC wAAAFv3wAA CiYHb7YAAA pyz0kA
  6446   cBaMLAAAAW /fAAAKJgdv tgAACnLlSQ BwFowsAAAB b98AAAomB2 +2AAAKcv9J AHByI0oAcA J7XQAA
  6447   BCg+AAAKb9 8AAAomBm+6 AAAKB2+7AA AKJt4KBiwG Bm86AAAK3A JyJQEAcH1d AAAE3gMm3g AqAAAA
  6448   ARwAAAIADA COmgAKAAAA AAAAAACxsQ ADJgAAAQMw AgAfAQAAAA AAAAJyJQEA cH1dAAAEAh V9XgAA
  6449   BAIVfV8AAA QCFX1gAAAE AhV9YQAABA JyJQEAcH1i AAAEAnIlAQ BwfWMAAAQC c6MAAAp9ZA AABAJz
  6450   owAACn1lAA AEAnPoAAAK fWYAAAQCc+ gAAAp9ZwAA BAIXfWoAAA QCF31rAAAE AnIlAQBwfW 0AAAQC
  6451   ciUBAHB9bg AABAIo6QAA Cn1vAAAEAh d9cAAABAJy JQEAcH1yAA AEAnIlAQBw fXMAAAQCci UBAHB9
  6452   dAAABAJyJQ EAcH11AAAE AnIlAQBwfX YAAAQCciUB AHB9dwAABA JyJQEAcH14 AAAEAnIlAQ BwfXkA
  6453   AAQCciUBAH B9egAABAJy JQEAcH17AA AEAnIlAQBw fXwAAAQCKO oAAAoqOgIo 6wAACgIDfY YAAAQq
  6454   bgJ7hgAABG /sAAAKBAUO BA4FDgZv7Q AACiYWKm4C e4YAAARv7A AACgQFDgQO BQ4GDghv7g AACipm
  6455   AnuGAAAEb+ wAAAoEBQ4E DgUOBm/vAA AKKrQAAADO yu++AQAAAJ EAAABsU3lz dGVtLlJlc2 91cmNl
  6456   cy5SZXNvdX JjZVJlYWRl ciwgbXNjb3 JsaWIsIFZl cnNpb249NC 4wLjAuMCwg Q3VsdHVyZT 1uZXV0
  6457   cmFsLCBQdW JsaWNLZXlU b2tlbj1iNz dhNWM1NjE5 MzRlMDg5I1 N5c3RlbS5S ZXNvdXJjZX MuUnVu
  6458   dGltZVJlc2 91cmNlU2V0 AgAAAAAAAA AAAAAAUEFE UEFEULQAAA BCU0pCAQAB AAAAAAAMAA AAdjQu
  6459   MC4zMDMxOQ AAAAAFAGwA AACIIwAAI3 4AAPQjAADc JgAAI1N0cm luZ3MAAAAA 0EoAAExKAA AjVVMA
  6460   HJUAABAAAA AjR1VJRAAA ACyVAADEDw AAI0Jsb2IA AAAAAAAAAg AAAVcfogkJ AwAAAPolMw AWAAAB
  6461   AAAAdAAAAB QAAACGAAAA 0wAAAJMAAA ACAAAA7wAA ABsAAAAQAA AASwAAAAwA AABVAAAAfA AAAAgA
  6462   AAABAAAACA AAAAEAAAAB AAAAAAAKAA EAAAAAAAYA vwG4AQYAxg G4AQYA0gG4 AQYA6gHXAQ oACwL2
  6463   AQ4AawJCAh IAxgKmAhYA 7ALhAgoAMg O4ARYAXgXh AgYA1Qa4AR oAswifCAYA 6gjgCBYAFg nhAhYA
  6464   hQnhAhoAqQ qfCAYAzg2z DQYA9Q3XAQ YANBMjEwYA ZRNQEwYAUB SzDQYAJhW4 AR4AxRa5Fg 4AKhhC
  6465   AhIAQBimAg YAtxqdGgYA 4hrQGgYA+R rQGgYAFhvQ GgYANRvQGg YAThvQGgYA ZxvQGgYAgh vQGgYA
  6466   nRvQGgYAth vQGgYA7xvP GwYADxzPGw YAWBy4ARYA gRzhAhYApx zhAgYAvxy4 AQYA0hy4AR YADh3h
  6467   AgYALh24AR oAmx2fCBoA 7R2fCAoAPR 4eHhYASx7h AgYAjh64AQ oAxB4eHhYA 3x7hAhYA6R 7hAgYA
  6468   Eh+4AQYAOB /gCAYAXx/g CAYAaB/gCA oAeB+4AQYA rB/gCBoAyR +fCAYA/h+z DRoADCCfCA YAKSDg
  6469   CAYAUCDgCA YAXSDgCCIA pyCSICIAsi CSIAYAxCC4 AQYA0yDQGk cA9CAAABcB DyEAAAYASy E4IQYA
  6470   aCG4AQYAbS G4AQYAkSHQ GgoAvSGnIQ oA1iGnIQYA 6yHPGw4ADS JCAgYAVSLg CAYAdiK4AQ YAlCLg
  6471   CAYA4CK4AR 4A+yK5Fh4A FiO5Fh4AHi O5Fh4AOSO5 Fh4AWiO5Fg YAZSPgCAYA eSO4AR4AmS ODIx4A
  6472   pyODIx4Asi ODIx4A2COD Ix4A+CPlIx 4AAiS5Fh4A LSTlIwYAaS RYJB4AgiSD Ix4ApySDIx 4A3SSD
  6473   IxIABCWmAh IAHCWmAhIA 2hKmAhIAsw imAhIAOiWm AhIAVyWmAh IAYiWmAhIA cCWmAhIAfC WmAh4A
  6474   qCWDIx4AxC XlI1cADyEA AB4A5iXlIx 4AIiaDIx4A MSblIw4ATC ZCAgAAAAAB AAAAAAABAA EAAQAQ
  6475   ADkAQwAFAA EAAQABABAA UQBDAAUACg AhAAEAEABd AEMABQANAD AAAQAQAHMA QwAFABAAMQ ABABAA
  6476   hQBDAAUAIQ BAAAEAEACS AEMABQAnAE wAAAAQAJsA QwAFACkAVg ABAQAApwBD AA0AKQBXAA EAEAC1
  6477   AEMABQAtAF cAAQAQAMMA QwAFADgAZQ ABABAA0gBD AAUAQwCAAA EAEADiAEMA BQBHAIkAAQ AQAPUA
  6478   QwAFAEkAjw AAABAABgEQ AQUAWQC3AA ABEABGARAB FQBbALsAAQ AQAE8BWgEZ AFwAvgADAQ AAhQEA
  6479   AA0AfgDQAA ABAACTAVoB DQCBANAAAA AQAJwBWgEd AIYA0AABAN QCEwABAPcC FwABAAQDGw ABAAkD
  6480   GwABAA4DHg ABABUDHgAB AB8DHgABAC gDHgABADYD IQABANQCEw ABAFIFFwAB AHIFngAGAA AGHgAG
  6481   ABAGHgAGAB 0GHgBWgC4G HgBWgDkGHg BWgEcGHgBW gFEGHgBWgF oGHgBWgGMG HgBWgG8GHg ABAHsG
  6482   FwABAI0G3g ABAJgG3gAB AKMG3gABAK 8G3gABALsG 3gABAMgG3g ABAOAG4gAB APIG4gABAA QH4gBV
  6483   gHQIHgBVgH 8IHgABALsI AwIBAMQIHg ABANYIBwIG APMIGQIBAN QCEwABAHkJ FwAGBrgJGw BWgMAJ
  6484   aAJWgMoJaA JWgNsJaAIB AOIJewIBAO 0JIQABAPoJ IQABAAwKIQ ABABcKIQAB ACUKfwIBAD IKfwIB
  6485   AEQKfwIBAE 8KgwIBAHIF ngABAFsKhw JVgJoLHgAF AK4LewIBAL gLIQABAMYL HgABAMwLGw ABANUL
  6486   GQIBAN0LHg ABAO0LfwIB APsL4gIBAA YM5gIBAHIF ngABAE8KPg MBAOIJewIB AHIFngABAN sNRwMB
  6487   ANQCEwABAP sLFwBRgM0O HgBRgNgOHg BRgOcOHgBR gPQOHgBRgP 0OHgBRgAsP HgBRgBoPHg BRgCQP
  6488   HgABAC0PIQ ABAEAPIQAB AFcPIQABAG wPfwIBAH8P fwIBAJYPfw IBAOIJewIB AHIFngARAE QTywYR
  6489   AHETzwYRAL UT7QYBANkT +wYBAOcTHg ABAPETGwAB AP4TGwABAA kUGwABAB4U GwABAC4UHg ABAEIU
  6490   HgABAFcU/w YBAGEU/wYB AHAUBgcBAH sUBgcBAIoU DgcBAJYUDg cBAKMUGwAB ALoUGwABAM 4UEwAB
  6491   AOMUHgABAA QVHgABACsV EgcBADMVGw ABAE0VGQIB AGoVHgABAI IVHgABAJwV HgABALoVHg ABANIV
  6492   HgABAOoVHg ABAAAWHgAB ABcWHgABAC 0WHgABAEcW HgABAGIWHg ABAHwWGQIG BrgJGwBWgA kYIQdW
  6493   gBEYIQcGBr gJGwBWgBkY +wZWgB0Y+w ZWgCIY+wZW gCYY+wYBAD wYKgdQIAAA AACFGEEDJQ ABAKgg
  6494   AAAAAIUIRw MtAAQAsCAA AAAAhghTAz IABAC4IAAA AACGCFsDMg AEAMAgAAAA AIYIZgM2AA QA0yAA
  6495   AAAAhgh2Az oABADgIAAA AACGCIQDNg AEAJghAAAA AIYIjgM+AA QAqCIAAAAA hgiYAzYABQ DcIgAA
  6496   AACGCKUDPg AFADgjAAAA AIYIsgM2AA YASyMAAAAA hgi8Az4ABg BgIwAAAACG CMYDMgAHAJ UjAAAA
  6497   AIYI0gNDAA cAsCMAAAAA hgjeA0gACA BIJAAAAACG COwDTQAIAF wmAAAAAIYI +gM2AAkAWC cAAAAA
  6498   hggGBD4ACQ DQJwAAAACG CBIENgAKAN wnAAAAAIYA HgRTAAoAFS gAAAAAxgAq BDYACgAgKA AAAACW
  6499   ADMEVwAKAF goAAAAAIEA QgRcAAsAOC kAAAAAgQBS BGEADACQKQ AAAACFAGIE LQANAPgpAA AAAIEA
  6500   dARmAA0AHC sAAAAAlQCL BG8AEACYKw AAAACWAJsE dAARANgsAA AAAJYAqwR0 ABIAQS0AAA AAlgC4
  6501   BHkAEwBYLQ AAAACWAMcE VwAVAIgtAA AAAJYA2gR/ ABYA7C4AAA AAhRhBA6IA GwDYMAAAAA CFCEcD
  6502   LQAdAOAwAA AAAIYIfQUy AB0A9zAAAA AAhgiLBUMA HQAQMQAAAA CGCJkFMgAe ACcxAAAAAI YIpwVD
  6503   AB4AQDEAAA AAhgi1BToA HwB1MQAAAA CGCMAFqQAf AKgxAAAAAI YIywWuACAA 5jEAAAAAhg jVBbIA
  6504   IAD/MQAAAA CGCLIDNgAh ABIyAAAAAI YIvAM+ACEA KDIAAAAAhg jGAzIAIgBd MgAAAACGCN IDQwAi
  6505   AHYyAAAAAM YAKgQ2ACMA ojIAAAAAhh hBA1MAIwCs MgAAAACFGE ED6QAjAAgz AAAAAIYIFA c6ACQA
  6506   eDMAAAAAhg gpB6kAJADw MwAAAACGCD 4HOgAlAGA0 AAAAAIYIUw epACUA2DQA AAAAhghoBz oAJgBI
  6507   NQAAAACGCH sHqQAmAL81 AAAAAIYIjg fvACcA2jUA AAAAhgicB+ 8AJwD1NQAA AACGCKoH7w AnABc2
  6508   AAAAAIYIuQ fvACcAOTYA AAAAhgjIB+ 8AJwBbNgAA AACGCNgH7w AnAIA2AAAA AIUA6AdTAC cAJDgA
  6509   AAAAhQDtB/ QAJwCIOAAA AACGGEEDCw IoACw5AAAA AIYYQQMRAi kAtDkAAAAA hgj9CBwCKw C8OQAA
  6510   AACGCAkJIQ IrANg5AAAA AIUAIgkmAi sAaDoAAAAA hQAxCS4CLg DYOgAAAACV AD4JNgIwAB A7AAAA
  6511   AJUAPgk+Aj MARDsAAAAA hQBRCUUCNQ BsOwAAAADm AVoJUwA3AH k7AAAAAIYA 6AdTADcAiD sAAAAA
  6512   hQBiCU0CNw C4OwAAAACF GEEDogA4AA g9AAAAAIUI jQleAjoAED 0AAAAAhgi1 BToAOgBFPQ AAAACG
  6513   CMAFqQA6AH g9AAAAAIYI lgmuADsAtT 0AAAAAhgih CbIAOwDjPQ AAAACGCLID NgA8APY9AA AAAIYI
  6514   vAM+ADwADD 4AAAAAhgjG AzIAPQBBPg AAAACGCNID QwA9AG8+AA AAAIYYQQNT AD4AeD4AAA AAhRhB
  6515   A4sCPgD9Pg AAAACGCGcK kQI/AB4/AA AAAIUIdgpI AD8AJj8AAA AAhQiGCkgA PwAuPwAAAA CFCJQK
  6516   SAA/ADY/AA AAAIUItQqW Aj8AUD8AAA AAhgi+CpsC PwCMQAAAAA CFCM4KmwI/ AKxBAAAAAI YI4wqb
  6517   Aj8AVEQAAA AAhgjxCqAC PwBdRAAAAA CGCP8KpgJA AIBEAAAAAI YIDgurAkAA /EQAAAAAhg gbC7AC
  6518   QABkRQAAAA CFAOgHUwBB AFRHAAAAAI UYQQPqAkEA iUcAAAAAhQ gUDEgARwCR RwAAAACFCL UKlgJH
  6519   AKlHAAAAAI UIJQw2AEcA sUcAAAAAhQ g4DDIARwC8 RwAAAACGCE QM9gJHAP5H AAAAAIYIWQ z7AkcA
  6520   GkgAAAAAhg hiDDYARwAk SAAAAACGCG sMPgBHAIxI AAAAAIYItQ U6AEgAlEgA AAAAhgjABa kASAAE
  6521   SQAAAACGCH QMMgBJAFRJ AAAAAIYIiQ xDAEkA1EkA AAAAhgieDJ sCSgAoSgAA AACGCK8MAA NKAJRK
  6522   AAAAAIYAwA wFA0oAnkoA AAAAhgD6BA wDTACnSgAA AACGAP4EEg NNALBKAAAA AIYAxQwYA0 4AJEwA
  6523   AAAAhgDZDC ADUAD0TgAA AACGAPUMQw BTAMhQAAAA AIYA/wwpA1 QAQFIAAAAA hQDoB1MAVg B4UwAA
  6524   AACBAAkNUw BWAPhUAAAA AIEAGw1TAF YAtFYAAAAA hQAxDWEAVg CYVwAAAACF AD4NXABXAD hYAAAA
  6525   AIUYQQOLAl gANFoAAAAA hgjrDTIAWQ BBWgAAAADm AQEOSwNZAF haAAAAAIYA Dw5QA1kAWF wAAAAA
  6526   hQATDpsCWg D0XAAAAACG ACYOQwBaAL ZdAAAAAIYI LQ5WA1sAxF 0AAAAAhggt DlADXAAoXg AAAACG
  6527   ADYOXANdAD ReAAAAAIUY QQNvA18AQ1 4AAAAAhQhG Di0AYACAXg AAAACGCFsO OgBgALBeAA AAAIYI
  6528   aw6pAGAATF 8AAAAAhgh7 DjoAYQB8Xw AAAACGCI4O qQBhAKhfAA AAAIYYQQOL AmIAxGAAAA AAhQir
  6529   D0gAYwDMYA AAAACFCMEP SABjANRgAA AAAIUI2w9I AGMA3GAAAA AAhgjzD5sC YwAlYgAAAA CGCAkQ
  6530   NgBjADdiAA AAAIYIExA+ AGMASmIAAA AAhggdEDYA ZABcYgAAAA CGCCkQPgBk AG9iAAAAAI YINRA2
  6531   AGUAgWIAAA AAhghAED4A ZQCUYgAAAA CGCEsQNgBm AKZiAAAAAI YIWBA+AGYA uWIAAAAAhg hlEDYA
  6532   ZwDLYgAAAA CGCHIQPgBn AN5iAAAAAI YIfxA2AGgA 8GIAAAAAhg iSED4AaAAD YwAAAACGCK UQNgBp
  6533   ABVjAAAAAI YItRA+AGkA KGMAAAAAhg jFEDYAagA6 YwAAAACGCN IQPgBqAE1j AAAAAIYI3x A2AGsA
  6534   X2MAAAAAhg jqED4AawB0 YwAAAACBAP UQswZsALBj AAAAAIEACh G5Bm4AgGQA AAAAhggfEZ sCcQCJ
  6535   ZQAAAACGCD kRNgBxAJZl AAAAAIYISR FIAHEAqGUA AAAAhghbEU 0AcQC7ZQAA AACGCG0RNg ByAMhl
  6536   AAAAAIYIfB E2AHIA1WUA AAAAhgiIET 4AcgDjZQAA AACGCJQRNg BzAPBlAAAA AIYIoBE+AH MAAGYA
  6537   AAAAgQCsEc AGdAA8ZgAA AACBAMURxQ Z1AJhmAAAA AIYI3hGbAn cApGcAAAAA hgD2EcAGdw DkZwAA
  6538   AACGAA0SxQ Z4AExpAAAA AIUA6AdTAH oAB2oAAAAA gxhBA1MAeg AQagAAAACT CIET0wZ6AE lqAAAA
  6539   AJMIlRPYBn oAUGoAAAAA kwihE90Geg BYagAAAACW CMUT8QZ7AG tqAAAAAIYY QQNTAHsAX2 oAAAAA
  6540   kRgGInIMew B0agAAAACG AI8WUwB7AK BrAAAAAIEA lBZTAHsA0G wAAAAAgQCn FlMAewBYcA AAAACR
  6541   AM8WFgd7AG BxAAAAAIEA 4xY6AHsAAH QAAAAAgQAE F1MAewAkdg AAAACBAB0X Gwd7AEh4AA AAAIEA
  6542   QRdTAHwA3H kAAAAAgQBY F1MAfADoew AAAACBAGsX UwB8APR9AA AAAIEAgRdT AHwA3IAAAA AAgQCM
  6543   F1MAfADcgQ AAAACBAKEX wAZ8AGCDAA AAAIEAvRc6 AH0AHIUAAA AAgQDUF1MA fQDUhgAAAA CBAPAX
  6544   UwB9AHSNAA AAAIEAABhT AH0AVI4AAA AAhhhBA1MA fQB/jwAAAA CGGEEDLgd9 AI6PAAAAAM YAShg0
  6545   B34Aqo8AAA AAxgBSGEAH hQDGjwAAAA DGAGAYTgeN AAAAAQBqGA AAAgB2GAAA AwB6GAAAAQ B+GAAA
  6546   AQB+GAAAAQ B+GAAAAQB+ GAAAAQB+GA AAAQB+GAAA AQAbBQAAAQ AbBQAAAQCE GAAAAQBqGA AAAgB2
  6547   GAAAAwB6GA AAAQCNGAAA AQCbGAAAAQ CbGAAAAQCn GAAAAgCsGA AAAQCbGAAA AQBCBQAAAg C0GAAA
  6548   AwDBGAAABA DOGAAABQDX GAAAAQDjGA AAAgB6GAAA AQB+GAAAAQ B+GAAAAQB+ GAAAAQB+GA AAAQB+
  6549   GAAAAQB+GA AAAQDtGAAA AQB+GAAAAQ B+GAAAAQB+ GAAAAQD+GA AAAQAHGQAA AQAHGQAAAg APGQAA
  6550   AQAYGQAAAg AfGQAAAwBa BgAAAQApGQ AAAgAzGQAA AQBAGQAAAg BFGQAAAwBM GQAAAQBAGQ AAAgBF
  6551   GQAAAQBWGQ AAAgBeGQAA AQBWGQAAAQ DjGAAAAgB2 GAAAAQB+GA AAAQB+GAAA AQB+GAAAAQ B+GAAA
  6552   AQCuCwAAAQ B+GAAAAQB+ GAAAAQBmGQ AAAgBWDQAA AwB2GQAABA CAGQAABQBl DQAABgCNGQ AAAQB+
  6553   GAAAAQB+GA AAAQB+GAAA AQB2GAAAAg B6GAAAAQB2 GAAAAQB6GA AAAQCSGQAA AgCcGQAAAQ CSGQAA
  6554   AgCcGQAAAw CkGQAAAQCq GQAAAQCzGQ AAAgC/GQAA AQAwBQAAAQ DQGQAAAQCu CwAAAQCDDQ AAAQDa
  6555   GQAAAQDlGQ AAAQCDDQAA AQCDDQAAAg DwGQAAAQBq GAAAAQB+GA AAAQB+GAAA AQCuCwAAAQ B+GAAA
  6556   AQB+GAAAAQ B+GAAAAQB+ GAAAAQB+GA AAAQB+GAAA AQB+GAAAAQ B+GAAAAQB+ GAAAAQBMGQ AAAgD4
  6557   GQAAAQBMGQ AAAgD4GQAA AwAFGgAAAQ B+GAAAAQB+ GAAAAQB+GA AAAQD4GQAA AQD4GQAAAg AFGgAA
  6558   AQD4GQAAAQ D4GQAAAgAF GgAAAQB+GA AAAQAPGgAA AQASGgAAAQ A8GAAAAQAh GgAAAgAoGg AAAwAy
  6559   GgAABAA/Gg AABQBLGgAA BgBUGgAABw BgGgAAAQAh GgAAAgB3Gg AAAwAyGgAA BAA/GgAABQ BLGgAA
  6560   BgBUGgAABw BgGgAACACH GgAAAQAhGg AAAgCRGgAA AwAyGgAABA A/GgAABQBL GgAABgBUGg AABwBg
  6561   GgYACQAMAB EA0QBBAz4A 2QBBAz4A4Q BBAz4A6QBB Az4A8QBBAz 4A+QBBAz4A AQFBAz4ACQ FBAz4A
  6562   EQFBAz4AGQ FBAz4AIQFB A0MAKQFBA1 MACQBBA1MA MQFBAz4AeQ BiHFoHeQBz HDYAeQCYHG IHOQG0
  6563   HGgHeQCEAz YASQHGHG8H UQHaHHQAeQ DiHJsCcQD0 HH4HeQACHY UHWQEeHYwH YQEqBDYAcQ A0HWgH
  6564   OQFEHZIHeQ COAz4AeQBL HT4AQQBZHc AGSQFmHW8H YQF0HXQAQQ B6HcUGSQDG HLkHSQGHHc EHWQGO
  6565   HccHgQCvHc 4HaQG/HUgA cQDNHS0AeQ DhHeIHcQA0 HesHgQD4Hf QHSQBmHbkH aQELHjYAWQ GOHYwH
  6566   WQEeHccHeQ ASHoUHeQFB Az4AeQFDHi kIeQBXHjcI gQHrDTIAgQ G0HEsIeQBj HuIHgQEBDk sDkQBw
  6567   HmEIkQB8Hj oAEQBaCVMA UQHaHHoIUQ GFHn8IiQEq BDYASQGTHo QISQGaHpII iQGmHpcISQ GvHjIA
  6568   SQG6HpwIeQ FBA8QIeQHR HrMGSQHRHr MGSQHZHswI mQFBA1MAUQ BBA+0IUQD2 HsUGeQADH/ QIQQBZ
  6569   HbMGqQEqBD YASQGHHR8J eQBiDDYADA AZHzoADABB AywJDACEAz IJSQGTHjcJ aQAmHzYAsQ FHHzoA
  6570   sQFSHzYAYQ BzH0IJSQBB A04JYQCAH1 YJYQD4HfQH YQCLH00AsQ EmDlMAMQFB A2MJaQCWH2 sJaQCd
  6571   H6kA0QFBAz 4A0QG6H1MA SQGTHncJaQ BBAz4AcQDo Bz4AYQDBH4 cJgQDnH44J 2QEBDpUJFA BwHjIJ
  6572   6QEaIKkJgQ AwIMQJcQDo B9AJYQA6IF MAcQBBA1MA gQAwINwJcQ BAINAJqQF0 HfcJYQBFIA IK+QFB
  6573   A9AJcQDoBw gKAQI6IFMA YQBoIFMAgQ BuIFYKgQB/ ID4ACQK/IF wKGQIqBDYA UQEqBG8AOQ HMIJIH
  6574   CQAqBDYASQ GTHt8KWQHr DTIAWQFBDk sIOQFjHg0L IQJBAz4AHA BBA1MAUQHq IFcAHAAPDm ILHADr
  6575   DTIAHAAEIY ILJAABDpcL QQB6HawLHA AtDt8LHADM IOYLLABwHv ULLAB8HjoA QQAaIT4AcQ D0HBkM
  6576   SQBBAz4AeQ AqIV4COQJB A1MAQQJ/IU YMQQKaIU8M mQBBA1UMWQ JBA2IMaQJB A1MAKQBBA1 MAcQJB
  6577   A1MAMQAvIn YMwQA3IkMA wQBGIjIAeQ JaInsMgQJ/ IoAMgQIqBM AGeQKHInsM SQGTHoYMiQ KZIo4M
  6578   eQKeInsMMQ GqIjYANABB A1MANAC2Iu YLPAC/IqsM oQDLItgGUQ GFHrQMgQLw IrwMgQJBA8 MMuQAN
  6579   I8oMmQIPDt AMqQLrDTIA uQBBA1MAuQ BOI/wMsQIP DgINiQJwIx EN8QGvHhgN 8QF+IxwN8Q E6IFMA
  6580   0QJBAz4A2Q JBAz4A2QLJ IyQN4QIPDi oN8QIOJDIN 2QIeJDkNAQ NzH1MA8QI6 JDIA8QJKJG EIUQHa
  6581   HEANCQNwJE UNiQI2DmIN PAB2JOYLEQ NBAz4AEQOO JD4AqQIBDk sDEQPKJHsN GQMPDoENEQ P2JBsH
  6582   wQAOJZ8NKQ MtDqUNMQOE A2EIsQFiDD YASQElJTYA SQEqJTYANA APDiwJPAAP DmILNADrDT IASQEy
  6583   JTYASQG2Ii kIOQNBA1MA OQNFJcoNUQ OIJdcNeQKQ JXsMiQKhJV cA2QK2JQ8O eQPRJVwAeQ PcJWEA
  6584   eQN+IzoAPA DrDTIANAAB DicORABwHj IJiQP8JVMA 4QICJioNAQ M6IFMARAB8 HjoAMQEPJj gO2QJB
  6585   A1MOkQNBA1 sOmQM/JmIO oQItDmgOSQ GTHm0OPABB A1MAsQBEJp gOMQBBA1MA OQBBA1MAwQ BgJp0O
  6586   oQNrJqMOoQ N1JqwOoQOF JrcODgBAAL sADgBEAMAA DgBIAMUADg BMAMoADgBQ AM8ADgBUAN QADgBY
  6587   ANkADgCEAP 8ADgCIAHIB CACoAGwCCA CsAHECCACw AHYCDgDgAM 8CDgAkAXUD DgAoAQUEDg AsAZkE
  6588   DgAwASkFDg A0AWoFDgA4 AZ0FDgA8Ad YFDgBAASkG CAD8AWwCCA AAAnECCAAI AmwCCAAMAn ECCAAQ
  6589   AnYCCAAUAi UHLgATAAoP LgAbADoPLg BjAKIPLgAL AMAOLgAzAA oPLgBbAJkP LgArAEAPLg AjADoP
  6590   LgA7AGQPLg BDADoPgwED BFAL4wGDBH ECIwK7BHEC aQqjBGkMiQ qjBGkMYQur BHECdQebB6 cHrge0
  6591   B9UHAAgRCB 8IJAguCEAI UQhaCGUIig iiCLUIvwjT CPoIFQkaCT 4JXglxCX0J sgnXCeIJ6Q n8CQ8K
  6592   HwopCkMKTg pjCnkKgQqI CpoKqgrGCu YK9goZCzML QwtqC7ML0g vsC/oLCQwS DCEMKQwvDF 0MlAzY
  6593   DAwNSg1pDY kNrA21DcIN 6g35DRUOPg 5zDo8OAgAB AAMADQAFAB QABgAdAAcA HwAKACQACw AuAAwA
  6594   OQANADwADg A/AA8AUwAQ AFUAAADyBI gAAAD6BI0A AAD+BI0AAA AFBZEAAAAR BZUAAAAbBZ EAAAAh
  6595   BZEAAAAqBZ EAAAAwBY0A AAA4BZkAAA BCBZEAAABK BZEAAADyBI gAAADfBY0A AADpBY0AAA DzBZUA
  6596   AAD6BbcAAA AqBZEAAAAw BY0AAAABCJ UAAAASCJUA AAAjCJUAAA AyCPoAAAA8 CPoAAABGCP oAAABR
  6597   CPoAAABcCP oAAABoCPoA AACzCFQCAA BwCVkCAACs CWMCAADzBZ UAAACxCbcA AAAqBZEAAA AwBY0A
  6598   AAAoC7YCAA AzC5kAAAA/ C5kAAABJC5 kAAABaC7sC AABfC8ACAA BrC8ACAAB8 C8ACAACGC8 UCAACR
  6599   C8oCAABJDZ kAAABaC7sC AABWDZEAAA BlDY0AAABt DS8DAAB+DT QDAACDDZEA AADzBZUAAA CIDY0A
  6600   AACZDcACAA CmDTkDAAA7 Do0AAABBDm MDAABBDmkD AAChDogAAA CyDpUAAAC+ DpUAAAAkEp kAAAA2
  6601   EpkAAABMEp kAAABgEsAC AAByEpEAAA B4EpEAAACA EpEAAACHEp EAAACQEpEA AACZEpEAAA CoEpEA
  6602   AAC0EpEAAA C9EpEAAADE EsACAADaEp EAAADmEpkA AAD0EpEAAA D/EpEAAAAH E5EAAAAPE8 ACAAA0
  6603   E+MGAACtE+ gGAADRE/YG AgACAAMAAg ADAAUAAgAE AAcAAgAFAA kAAgAGAAsA AQAIAA0AAg AHAA0A
  6604   AgAJAA8AAQ AKAA8AAgAL ABEAAQAMAB EAAgANABMA AQAOABMAAQ AQABUAAgAP ABUAAgARAB cAAQAS
  6605   ABcAAgATAB kAAgAiABsA AgAjAB0AAQ AkAB0AAgAl AB8AAQAmAB 8AAgAnACEA AQAoACEAAg ApACMA
  6606   AQAqACMAAg ArACUAAQAs ACUAAQAuAC cAAgAtACcA AgAyACkAAQ AzACkAAgA0 ACsAAQA1AC sAAgA2
  6607   AC0AAQA3AC 0AAgA4AC8A AgA5ADEAAg A6ADMAAgA7 ADUAAgA8AD cAAgA9ADkA AgBCADsAAg BDAD0A
  6608   AgBNAD8AAg BOAEEAAQBP AEEAAgBQAE MAAQBRAEMA AgBSAEUAAQ BTAEUAAQBV AEcAAgBUAE cAAgBY
  6609   AEkAAgBZAE sAAgBaAE0A AgBbAE8AAg BcAFEAAgBd AFMAAgBeAF UAAgBfAFcA AQBgAFcAAg BhAFkA
  6610   AgBiAFsAAQ BjAFsAAgBm AF0AAgBnAF 8AAgBoAGEA AgBpAGMAAg BqAGUAAgBr AGcAAgBsAG kAAQBt
  6611   AGkAAgBuAG sAAQBvAGsA AgBwAG0AAQ BxAG0AAgBy AG8AAgBzAH EAAgCBAHMA AgCGAHUAAg CHAHcA
  6612   AgCKAHkAAg CLAHsAAQCM AHsAAgCNAH 0AAQCOAH0A AgCQAH8AAg CRAIEAAgCS AIMAAgCTAI UAAgCU
  6613   AIcAAQCVAI cAAgCWAIkA AQCXAIkAAg CYAIsAAQCZ AIsAAgCaAI 0AAQCbAI0A AgCcAI8AAQ CdAI8A
  6614   AgCeAJEAAQ CfAJEAAgCg AJMAAQChAJ MAAgCiAJUA AQCjAJUAAg CkAJcAAQCl AJcAAgCoAJ kAAgCp
  6615   AJsAAgCqAJ 0AAQCrAJ0A AgCsAJ8AAQ CuAKEAAgCt AKEAAgCvAK MAAQCwAKMA AgCzAKUAAg C4AKcA
  6616   AgC5AKkAAQ C6AKkAAgC7 AKsAJgmgCV oLjgujC54M pAwxDgSAAA ABAAAAnxdm TAAAAAAAAC 0cAAAE
  6617   AAAAAAAAAA AAAAABAK8B AAAAAAQAAA AAAAAAAAAA AAEAuAEAAA AACwAAAAAA AAAAAAAACg AjAgAA
  6618   AAALAAAAAA AAAAAAAAAK AIcCAAAAAA QAAAAAAAAA AAAAAAEA4Q IAAAAABAAA AAAAAAAAAA AA+gGT
  6619   CAAAAAAEAA AAAAAAAAAA AAABALkWAA AAAAQAAAAA AAAAAAAAAA EAkiAAAAAA AAAAAAEAAA CRJgAA
  6620   EgARAAAAAA AAPE1vZHVs ZT4AU1RfZm NlNjg2M2Nk OGM5NDE4N2 I3YmQyNTI4 MTMwNjM0ZT EuY3Nw
  6621   cm9qLmRsbA BFeGNlbENl bGwAT2ZmaW NlT3Blblht bABFeGNlbE NvbHVtbgBF eGNlbEhlYW RlckZv
  6622   b3RlclRleH QARXhjZWxI ZWFkZXJGb2 90ZXIARXhj ZWxQYWNrYW dlAEV4Y2Vs Um93AEV4Y2 VsU3R5
  6623   bGVzAEV4Y2 VsQ2FsY01v ZGUARXhjZW xXb3JrYm9v awBFeGNlbF dvcmtzaGVl dABFeGNlbF dvcmtz
  6624   aGVldHMARX hjZWxXb3Jr c2hlZXRWaW V3AE9mZmlj ZVByb3Blcn RpZXMAUmVz b3VyY2VzAF NUX2Zj
  6625   ZTY4NjNjZD hjOTQxODdi N2JkMjUyOD EzMDYzNGUx LmNzcHJvai 5Qcm9wZXJ0 aWVzAFNldH Rpbmdz
  6626   AFNjcmlwdE 1haW4AU1Rf YzA4Yjk2MW ViYWMzNGNh Nzk5MzgxMT M3M2FmY2M2 NjMuY3Nwcm 9qAFNj
  6627   cmlwdFJlc3 VsdHMARmls ZVR5cGUAQ2 hpbGRFdmVu dExpc3Rlbm VyAG1zY29y bGliAFN5c3 RlbQBP
  6628   YmplY3QASU Rpc3Bvc2Fi bGUARW51bQ BTeXN0ZW0u Q29sbGVjdG lvbnMASUVu dW1lcmFibG UAU3lz
  6629   dGVtLkNvbm ZpZ3VyYXRp b24AQXBwbG ljYXRpb25T ZXR0aW5nc0 Jhc2UATWlj cm9zb2Z0Ll NxbFNl
  6630   cnZlci5TY3 JpcHRUYXNr AE1pY3Jvc2 9mdC5TcWxT ZXJ2ZXIuRH RzLlRhc2tz LlNjcmlwdF Rhc2sA
  6631   VlNUQVJUU2 NyaXB0T2Jq ZWN0TW9kZW xCYXNlAE1p Y3Jvc29mdC 5TcWxTZXJ2 ZXIuTWFuYW dlZERU
  6632   UwBNaWNyb3 NvZnQuU3Fs U2VydmVyLk R0cy5SdW50 aW1lAERlZm F1bHRFdmVu dHMAX3hsV2 9ya3No
  6633   ZWV0AFN5c3 RlbS5YbWwA WG1sRWxlbW VudABfY2Vs bEVsZW1lbn QAX3JvdwBf Y29sAF92YW x1ZQBf
  6634   dmFsdWVSZW YAX2Zvcm11 bGEAX2RhdG FUeXBlAFVy aQBfaHlwZX JsaW5rAC5j dG9yAGdldF 9FbGVt
  6635   ZW50AGdldF 9Sb3cAZ2V0 X0NvbHVtbg BnZXRfQ2Vs bEFkZHJlc3 MAZ2V0X0lz TnVtZXJpYw BnZXRf
  6636   VmFsdWUAc2 V0X1ZhbHVl AGdldF9EYX RhVHlwZQBz ZXRfRGF0YV R5cGUAZ2V0 X1N0eWxlAH NldF9T
  6637   dHlsZQBnZX RfU3R5bGVJ RABzZXRfU3 R5bGVJRABn ZXRfSHlwZX JsaW5rAHNl dF9IeXBlcm xpbmsA
  6638   Z2V0X0Zvcm 11bGEAc2V0 X0Zvcm11bG EAZ2V0X0Nv bW1lbnQAUm Vtb3ZlVmFs dWUAVG9TdH JpbmcA
  6639   SXNOdW1lcm ljVmFsdWUA U2V0U2hhcm VkU3RyaW5n AEdldFNoYX JlZFN0cmlu ZwBBZGRGb3 JtdWxh
  6640   RWxlbWVudA BHZXRPckNy ZWF0ZUNlbG xFbGVtZW50 AEdldENvbH VtbkxldHRl cgBHZXRDb2 x1bW5O
  6641   dW1iZXIAR2 V0Um93TnVt YmVyAEdldE NlbGxBZGRy ZXNzAElzVm FsaWRDZWxs QWRkcmVzcw BVcGRh
  6642   dGVGb3JtdW xhUmVmZXJl bmNlcwBFbG VtZW50AFJv dwBDb2x1bW 4AQ2VsbEFk ZHJlc3MASX NOdW1l
  6643   cmljAFZhbH VlAERhdGFU eXBlAFN0eW xlAFN0eWxl SUQASHlwZX JsaW5rAEZv cm11bGEAQ2 9tbWVu
  6644   dABfY29sRW xlbWVudABY bWxOYW1lc3 BhY2VNYW5h Z2VyAF9uc0 1hbmFnZXIA Z2V0X0NvbH Vtbk1p
  6645   bgBzZXRfQ2 9sdW1uTWlu AGdldF9Db2 x1bW5NYXgA c2V0X0NvbH Vtbk1heABn ZXRfSGlkZG VuAHNl
  6646   dF9IaWRkZW 4AZ2V0X1dp ZHRoAHNldF 9XaWR0aABD b2x1bW5NaW 4AQ29sdW1u TWF4AEhpZG RlbgBX
  6647   aWR0aABMZW Z0QWxpZ25l ZFRleHQAQ2 VudGVyZWRU ZXh0AFJpZ2 h0QWxpZ25l ZFRleHQAUG FnZU51
  6648   bWJlcgBOdW 1iZXJPZlBh Z2VzAFNoZW V0TmFtZQBG aWxlUGF0aA BGaWxlTmFt ZQBDdXJyZW 50RGF0
  6649   ZQBDdXJyZW 50VGltZQBf aGVhZGVyRm 9vdGVyTm9k ZQBfb2RkSG VhZGVyAF9v ZGRGb290ZX IAX2V2
  6650   ZW5IZWFkZX IAX2V2ZW5G b290ZXIAX2 ZpcnN0SGVh ZGVyAF9maX JzdEZvb3Rl cgBOdWxsYW JsZWAx
  6651   AF9hbGlnbl dpdGhNYXJn aW5zAF9kaW ZmZXJlbnRP ZGRFdmVuAF 9kaWZmZXJl bnRGaXJzdA BnZXRf
  6652   QWxpZ25XaX RoTWFyZ2lu cwBzZXRfQW xpZ25XaXRo TWFyZ2lucw BnZXRfZGlm ZmVyZW50T2 RkRXZl
  6653   bgBzZXRfZG lmZmVyZW50 T2RkRXZlbg BnZXRfZGlm ZmVyZW50Rm lyc3QAc2V0 X2RpZmZlcm VudEZp
  6654   cnN0AGdldF 9vZGRIZWFk ZXIAZ2V0X2 9kZEZvb3Rl cgBnZXRfZX ZlbkhlYWRl cgBnZXRfZX ZlbkZv
  6655   b3RlcgBnZX RfZmlyc3RI ZWFkZXIAZ2 V0X2ZpcnN0 Rm9vdGVyAF NhdmUAR2V0 SGVhZGVyRm 9vdGVy
  6656   VGV4dABBbG lnbldpdGhN YXJnaW5zAG RpZmZlcmVu dE9kZEV2ZW 4AZGlmZmVy ZW50Rmlyc3 QAb2Rk
  6657   SGVhZGVyAG 9kZEZvb3Rl cgBldmVuSG VhZGVyAGV2 ZW5Gb290ZX IAZmlyc3RI ZWFkZXIAZm lyc3RG
  6658   b290ZXIAc2 NoZW1hTWFp bgBzY2hlbW FSZWxhdGlv bnNoaXBzAF dpbmRvd3NC YXNlAFN5c3 RlbS5J
  6659   Ty5QYWNrYW dpbmcAUGFj a2FnZQBfcG Fja2FnZQBf b3V0cHV0Rm 9sZGVyUGF0 aABfd29ya2 Jvb2sA
  6660   U3lzdGVtLk lPAEZpbGVJ bmZvAERlYn VnTW9kZQBn ZXRfUGFja2 FnZQBnZXRf V29ya2Jvb2 sAWG1s
  6661   RG9jdW1lbn QAV3JpdGVE ZWJ1Z0ZpbG UAR2V0U2hh cmVkVXJpAE FkZFNjaGVt YUF0dHJpYn V0ZQBT
  6662   YXZlUGFydA BEaXNwb3Nl AEdldFhtbE Zyb21VcmkA V29ya2Jvb2 sAX3Jvd0Vs ZW1lbnQAWG 1sTm9k
  6663   ZQBnZXRfTm 9kZQBnZXRf SGVpZ2h0AH NldF9IZWln aHQATm9kZQ BIZWlnaHQA dmFsdWVfXw BBdXRv
  6664   bWF0aWMAQX V0b21hdGlj Tm9UYWJsZQ BNYW51YWwA X3hsUGFja2 FnZQBfdXJp V29ya2Jvb2 sAX3Vy
  6665   aVNoYXJlZF N0cmluZ3MA X3VyaVN0eW xlcwBfdXJp Q2FsY0NoYW luAF94bWxX b3JrYm9vaw BfeG1s
  6666   U2hhcmVkU3 RyaW5ncwBf eG1sU3R5bG VzAF93b3Jr c2hlZXRzAF 9wcm9wZXJ0 aWVzAGdldF 9Xb3Jr
  6667   c2hlZXRzAG dldF9Xb3Jr Ym9va1VyaQ BnZXRfU3R5 bGVzVXJpAG dldF9TaGFy ZWRTdHJpbm dzVXJp
  6668   AFBhY2thZ2 VQYXJ0AGdl dF9QYXJ0AG dldF9Xb3Jr Ym9va1htbA BnZXRfU2hh cmVkU3RyaW 5nc1ht
  6669   bABnZXRfU3 R5bGVzWG1s AHNldF9TdH lsZXNYbWwA Z2V0X1Byb3 BlcnRpZXMA Z2V0X0NhbG NNb2Rl
  6670   AHNldF9DYW xjTW9kZQBX b3Jrc2hlZX RzAFdvcmti b29rVXJpAF N0eWxlc1Vy aQBTaGFyZW RTdHJp
  6671   bmdzVXJpAF BhcnQAV29y a2Jvb2tYbW wAU2hhcmVk U3RyaW5nc1 htbABTdHls ZXNYbWwAUH JvcGVy
  6672   dGllcwBDYW xjTW9kZQB0 ZW1wQ29sdW 1uTnVtYmVy VGFnAHhsUG Fja2FnZQBf d29ya3NoZW V0VXJp
  6673   AF9uYW1lAF 9zaGVldElE AF9oaWRkZW 4AX3JlbGF0 aW9uc2hpcE lEAF93b3Jr c2hlZXRYbW wAX3No
  6674   ZWV0Vmlldw BfaGVhZGVy Rm9vdGVyAG dldF9Xb3Jr c2hlZXRVcm kAZ2V0X1Jl bGF0aW9uc2 hpcElE
  6675   AGdldF9TaG VldElEAGdl dF9OYW1lU3 BhY2VNYW5h Z2VyAGdldF 9WaWV3AGdl dF9OYW1lAH NldF9O
  6676   YW1lAGdldF 9kZWZhdWx0 Um93SGVpZ2 h0AHNldF9k ZWZhdWx0Um 93SGVpZ2h0 AGdldF9Xb3 Jrc2hl
  6677   ZXRYbWwAZ2 V0X0hlYWRl ckZvb3Rlcg BDZWxsAENy ZWF0ZVNoYX JlZEZvcm11 bGEAQ3JlYX RlQ29u
  6678   ZGl0aW9uYW xGb3JtYXR0 aW5nAEluc2 VydFJvdwBE ZWxldGVSb3 cAQWRkTnVt ZXJpY0NlbG xJRHMA
  6679   UmVwbGFjZU 51bWVyaWND ZWxsSURzAE dldFN0eWxl TmFtZQBHZX RTdHlsZUlE AFdvcmtzaG VldFVy
  6680   aQBSZWxhdG lvbnNoaXBJ RABTaGVldE lEAE5hbWVT cGFjZU1hbm FnZXIAVmll dwBOYW1lAG RlZmF1
  6681   bHRSb3dIZW lnaHQAV29y a3NoZWV0WG 1sAEhlYWRl ckZvb3Rlcg BTeXN0ZW0u Q29sbGVjdG lvbnMu
  6682   R2VuZXJpYw BEaWN0aW9u YXJ5YDIAX3 dvcmtzaGVl dHNOb2RlAG dldF9Db3Vu dABJRW51bW VyYXRv
  6683   cgBHZXRFbn VtZXJhdG9y AEFkZABDcm VhdGVOZXdX b3Jrc2hlZX QARGVsZXRl AGdldF9JdG VtAENv
  6684   cHkAQ291bn QASXRlbQBn ZXRfU2hlZX RWaWV3RWxl bWVudABnZX RfVGFiU2Vs ZWN0ZWQAc2 V0X1Rh
  6685   YlNlbGVjdG VkAGdldF9Q YWdlTGF5b3 V0VmlldwBz ZXRfUGFnZU xheW91dFZp ZXcAU2hlZX RWaWV3
  6686   RWxlbWVudA BUYWJTZWxl Y3RlZABQYW dlTGF5b3V0 VmlldwBzY2 hlbWFDb3Jl AHNjaGVtZU V4dGVu
  6687   ZGVkAHNjaG VtYUN1c3Rv bQBzY2hlbW FEYwBzY2hl bWFEY1Rlcm 1zAHNjaGVt YURjbWlUeX BlAHNj
  6688   aGVtYVhzaQ BzY2hlbWFW dABfdXJpUH JvcGVydGll c0NvcmUAX3 VyaVByb3Bl cnRpZXNFeH RlbmRl
  6689   ZABfdXJpUH JvcGVydGll c0N1c3RvbQ BfeG1sUHJv cGVydGllc0 NvcmUAX3ht bFByb3Blcn RpZXNF
  6690   eHRlbmRlZA BfeG1sUHJv cGVydGllc0 N1c3RvbQBn ZXRfQ29yZV Byb3BlcnRp ZXNVcmkAZ2 V0X0V4
  6691   dGVuZGVkUH JvcGVydGll c1VyaQBnZX RfQ3VzdG9t UHJvcGVydG llc1VyaQBn ZXRfQ29yZV Byb3Bl
  6692   cnRpZXNYbW wAZ2V0X1Rp dGxlAHNldF 9UaXRsZQBn ZXRfU3Viam VjdABzZXRf U3ViamVjdA BnZXRf
  6693   QXV0aG9yAH NldF9BdXRo b3IAZ2V0X0 NvbW1lbnRz AHNldF9Db2 1tZW50cwBn ZXRfS2V5d2 9yZHMA
  6694   c2V0X0tleX dvcmRzAGdl dF9MYXN0TW 9kaWZpZWRC eQBzZXRfTG FzdE1vZGlm aWVkQnkAZ2 V0X0xh
  6695   c3RQcmludG VkAHNldF9M YXN0UHJpbn RlZABnZXRf Q2F0ZWdvcn kAc2V0X0Nh dGVnb3J5AG dldF9T
  6696   dGF0dXMAc2 V0X1N0YXR1 cwBHZXRDb3 JlUHJvcGVy dHlWYWx1ZQ BTZXRDb3Jl UHJvcGVydH lWYWx1
  6697   ZQBnZXRfRX h0ZW5kZWRQ cm9wZXJ0aW VzWG1sAGdl dF9BcHBsaW NhdGlvbgBn ZXRfSHlwZX JsaW5r
  6698   QmFzZQBzZX RfSHlwZXJs aW5rQmFzZQ BnZXRfQXBw VmVyc2lvbg BnZXRfQ29t cGFueQBzZX RfQ29t
  6699   cGFueQBnZX RfTWFuYWdl cgBzZXRfTW FuYWdlcgBH ZXRFeHRlbm RlZFByb3Bl cnR5VmFsdW UAU2V0
  6700   RXh0ZW5kZW RQcm9wZXJ0 eVZhbHVlAG dldF9DdXN0 b21Qcm9wZX J0aWVzWG1s AEdldEN1c3 RvbVBy
  6701   b3BlcnR5Vm FsdWUAU2V0 Q3VzdG9tUH JvcGVydHlW YWx1ZQBDb3 JlUHJvcGVy dGllc1VyaQ BFeHRl
  6702   bmRlZFByb3 BlcnRpZXNV cmkAQ3VzdG 9tUHJvcGVy dGllc1VyaQ BDb3JlUHJv cGVydGllc1 htbABU
  6703   aXRsZQBTdW JqZWN0AEF1 dGhvcgBDb2 1tZW50cwBL ZXl3b3Jkcw BMYXN0TW9k aWZpZWRCeQ BMYXN0
  6704   UHJpbnRlZA BDYXRlZ29y eQBTdGF0dX MARXh0ZW5k ZWRQcm9wZX J0aWVzWG1s AEFwcGxpY2 F0aW9u
  6705   AEh5cGVybG lua0Jhc2UA QXBwVmVyc2 lvbgBDb21w YW55AE1hbm FnZXIAQ3Vz dG9tUHJvcG VydGll
  6706   c1htbABTeX N0ZW0uUmVz b3VyY2VzAF Jlc291cmNl TWFuYWdlcg ByZXNvdXJj ZU1hbgBTeX N0ZW0u
  6707   R2xvYmFsaX phdGlvbgBD dWx0dXJlSW 5mbwByZXNv dXJjZUN1bH R1cmUAZ2V0 X1Jlc291cm NlTWFu
  6708   YWdlcgBnZX RfQ3VsdHVy ZQBzZXRfQ3 VsdHVyZQBD dWx0dXJlAG RlZmF1bHRJ bnN0YW5jZQ BnZXRf
  6709   RGVmYXVsdA BEZWZhdWx0 AGlucHV0Rm lsZVR5cGUA bG9nU3RyaW 5nAF9lZGlw aUNvbHVtbg Bfc3Nu
  6710   Q29sdW1uAF 9sYWJSZXBv cnREYXRlQ2 9sdW1uAF9r ZXlGaWVsZE NvbHVtbgBf a2V5RmllbG RDb2x1
  6711   bW5OYW1lAG lucHV0Rmls ZU5hbWUATG lzdGAxAHJh d0VkaXBpcw B2YWxpZEtl eUZpZWxkcw BrZXlU
  6712   b0VkaXBpAH ZhbGlkRWRp cGlJY25zAF 9pbnB1dEV4 Y2VsAF9iYW NrdXBFeGNl bABfaW5wdX RFeGNl
  6713   bENvbHVtbk NvdW50AF9p bnB1dEV4Y2 VsUm93Q291 bnQAX2lucH V0RXhjZWxX b3Jrc2hlZX QAX2Nv
  6714   bm5lY3Rpb2 5TdHJpbmdT dGFnaW5nRG F0YWJhc2UA X2Nvbm5lY3 Rpb25TdHJp bmdSZWdpc3 RyeURh
  6715   dGFiYXNlAE d1aWQAX2d1 aWRJZABfZG 9kX2ZyYWdt ZW50X3Jhd1 9kYXRhX2lk AGVmckRvRE ZyYWdM
  6716   b2dBbGxUcm Fuc2FjdGlv bnMAZWZyRG 9ERnJhZ0Ny c012aUV0bE 5hbWUAZWZy RG9ERnJhZ0 VkaXBp
  6717   Q29sdW1uTm FtZQBlZnJE b0RGcmFnTG FiUmVwb3J0 Q29sdW1uTm FtZQBlZnJE b0RGcmFnU3 NuQ29s
  6718   dW1uTmFtZQ BlZnJEb0RG cmFnQXJjaG l2ZUZvbGRl cgBlZnJEb0 RGcmFnSnBj S2V5RmllbG QAZWZy
  6719   RG9ERnJhZ1 VzYWZLZXlG aWVsZABlZn JEb0RGcmFn RW1mS2V5Rm llbGQAZWZy RG9ERnJhZ0 pwY0xh
  6720   YkRhdGVGaW VsZABlZnJE b0RGcmFnVX NhZkxhYkRh dGVGaWVsZA BlZnJEb0RG cmFnRW1mTG FiRGF0
  6721   ZUZpZWxkAG VmckRvREZy YWdUZXN0TW 9kZQBNYWlu AE1vdmVGaW xlc1RvQXJj aGl2ZQBJbn NlcnRG
  6722   cmFnUmF3RG F0YQBTeXN0 ZW0uRGF0YQ BEYXRhVGFi bGUAR2V0RG 9ERnJhZ0Rh dGFUYWJsZQ BJbnNl
  6723   cnRVcGRhdG VkRXhjZWxG aWxlVG9EYX RhYmFzZQBH ZW5lcmF0ZV VwZGF0ZWRF eGNlbEZpbG UAaW5z
  6724   ZXJ0RG9EX0 ZyYWdtZW50 X0RhdGFfUm VjZWl2ZV9M b2cAc2V0dX BDb25uZWN0 aW9uU3RyaW 5ncwBs
  6725   b2FkSW5wdX RFeGNlbERh dGEAc2V0Um F3RWRpcGlz RnJvbUlucH V0AHNldENv bHVtbnMAZX hlY3V0
  6726   ZUNSU01WSV BhY2thZ2UA Z2VuZXJhdG VCYWNrdXBF eGNlbEZpbG VOYW1lAHJl dHJpZXZlRG F0YWJh
  6727   c2VFZGlwaX MAaW5zZXJ0 UmF3RWRpcG lzSW50b0Rh dGFiYXNlAH NldENvbmZp Z1ZhbHVlcw B3cml0
  6728   ZUxvZwBTdW NjZXNzAEZh aWx1cmUASl BDAFVTQUYA RU1GAFVOSw BTY3JpcHRP YmplY3RNb2 RlbABk
  6729   dHMARHRzT2 JqZWN0AE9u RXJyb3IAT2 5JbmZvcm1h dGlvbgBPbl dhcm5pbmcA eGxXb3Jrc2 hlZXQA
  6730   cm93AGNvbA B2YWx1ZQBz dHJpbmdJRA BpQ29sdW1u TnVtYmVyAG NlbGxBZGRy ZXNzAGlSb3 cAaUNv
  6731   bHVtbgByb3 dJbmNyZW1l bnQAY29sSW 5jcmVtZW50 AGFmdGVyUm 93AGFmdGVy Q29sdW1uAF dvcmtz
  6732   aGVldABIZW FkZXJGb290 ZXJOb2RlAG luU3RydWN0 AG5ld0ZpbG UAdGVtcGxh dGUAWG1sRG 9jAHN1
  6733   YkZvbGRlcg B1cmlQYXJl bnQAUmVsYX Rpb25zaGlw AHJvb3QAc2 NoZW1hAG5h bWVTcGFjZQ B1cmlQ
  6734   YXJ0AHhtbF BhcnQAUGFy ZW50WGxQYW NrYWdlAHNo ZWV0TmFtZQ B1cmlXb3Jr c2hlZXQASG lkZQBz
  6735   dGFydENlbG wAZW5kQ2Vs bABjb2xvcg Bwb3NpdGlv bgByb3dUb0 RlbGV0ZQBz aGlmdE90aG VyUm93
  6736   c1VwAFN0eW xlTmFtZQBw b3NpdGlvbk lEAFBvc2l0 aW9uSUQATm V3TmFtZQBw cm9wZXJ0eU 5hbWUA
  6737   cHJvcFZhbH VlAGR0AGlu cHV0RXhjZW xGaWxlAHNv dXJjZQBlcn JvckNvZGUA c3ViQ29tcG 9uZW50
  6738   AGRlc2NyaX B0aW9uAGhl bHBGaWxlAG hlbHBDb250 ZXh0AGlkb2 ZJbnRlcmZh Y2VXaXRoRX Jyb3IA
  6739   aW5mb3JtYX Rpb25Db2Rl AGZpcmVBZ2 FpbgB3YXJu aW5nQ29kZQ BTeXN0ZW0u UnVudGltZS 5WZXJz
  6740   aW9uaW5nAF RhcmdldEZy YW1ld29ya0 F0dHJpYnV0 ZQBTeXN0ZW 0uUmVmbGVj dGlvbgBBc3 NlbWJs
  6741   eVRpdGxlQX R0cmlidXRl AEFzc2VtYm x5RGVzY3Jp cHRpb25BdH RyaWJ1dGUA QXNzZW1ibH lDb25m
  6742   aWd1cmF0aW 9uQXR0cmli dXRlAEFzc2 VtYmx5Q29t cGFueUF0dH JpYnV0ZQBB c3NlbWJseV Byb2R1
  6743   Y3RBdHRyaW J1dGUAQXNz ZW1ibHlDb3 B5cmlnaHRB dHRyaWJ1dG UAQXNzZW1i bHlUcmFkZW 1hcmtB
  6744   dHRyaWJ1dG UAQXNzZW1i bHlDdWx0dX JlQXR0cmli dXRlAEFzc2 VtYmx5VmVy c2lvbkF0dH JpYnV0
  6745   ZQBTeXN0ZW 0uUnVudGlt ZS5Db21waW xlclNlcnZp Y2VzAENvbX BpbGF0aW9u UmVsYXhhdG lvbnNB
  6746   dHRyaWJ1dG UAUnVudGlt ZUNvbXBhdG liaWxpdHlB dHRyaWJ1dG UAU1RfZmNl Njg2M2NkOG M5NDE4
  6747   N2I3YmQyNT I4MTMwNjM0 ZTEuY3Nwcm 9qAEV4Y2Vw dGlvbgBTZW xlY3RTaW5n bGVOb2RlAG dldF9J
  6748   bm5lclRleH QAWG1sQXR0 cmlidXRlQ2 9sbGVjdGlv bgBnZXRfQX R0cmlidXRl cwBYbWxBdH RyaWJ1
  6749   dGUAZ2V0X0 l0ZW1PZgBT dHJpbmcAb3 BfRXF1YWxp dHkAQ29udm VydABUb0lu dDMyAGdldF 9Pd25l
  6750   ckRvY3VtZW 50AENyZWF0 ZUVsZW1lbn QAQXBwZW5k Q2hpbGQAWG 1sTmFtZWRO b2RlTWFwAF JlbW92
  6751   ZU5hbWVkSX RlbQBJbnQz MgBDcmVhdG VBdHRyaWJ1 dGUAQXBwZW 5kAHNldF9J bm5lclRleH QAR2V0
  6752   QXR0cmlidX RlAG9wX0lu ZXF1YWxpdH kAUGFyc2UA U2V0QXR0cm lidXRlAEZv cm1hdABHZX ROYW1l
  6753   ZEl0ZW0AUG Fja2FnZVJl bGF0aW9uc2 hpcABHZXRS ZWxhdGlvbn NoaXAAZ2V0 X1RhcmdldF VyaQBn
  6754   ZXRfRG9jdW 1lbnRFbGVt ZW50AEluc2 VydEFmdGVy AFRhcmdldE 1vZGUAQ3Jl YXRlUmVsYX Rpb25z
  6755   aGlwAGdldF 9JZABSZW1v dmVDaGlsZA BTeXN0ZW0u VGV4dC5SZW d1bGFyRXhw cmVzc2lvbn MAUmVn
  6756   ZXgASXNNYX RjaABYbWxO b2RlTGlzdA BTZWxlY3RO b2RlcwBJbn NlcnRCZWZv cmUAZ2V0X0 N1cnJl
  6757   bnQATW92ZU 5leHQAVG9E b3VibGUAQ2 hhcgBDb25j YXQAVG9DaG FyQXJyYXkA SXNOdW1iZX IAZ2V0
  6758   X0xlbmd0aA BTdWJzdHJp bmcAUmVnZX hPcHRpb25z AFJlcGxhY2 UAU3BsaXQA TmFtZVRhYm xlAFht
  6759   bE5hbWVUYW JsZQBBZGRO YW1lc3BhY2 UAZ2V0X0No aWxkTm9kZX MARG91Ymxl AGdldF9IYX NWYWx1
  6760   ZQBnZXRfRG lyZWN0b3J5 TmFtZQBGaW xlU3lzdGVt SW5mbwBnZX RfRXhpc3Rz AGdldF9GdW xsTmFt
  6761   ZQBGaWxlTW 9kZQBGaWxl QWNjZXNzAE 9wZW4AVXJp S2luZABDcm VhdGVQYXJ0 AERlbGV0ZV BhcnQA
  6762   Q29weVRvAH NldF9Jc1Jl YWRPbmx5AE RpcmVjdG9y eUluZm8AQ3 JlYXRlAEdl dFBhcnQAUG Fja2Fn
  6763   ZVJlbGF0aW 9uc2hpcENv bGxlY3Rpb2 4AR2V0UmVs YXRpb25zaG lwc0J5VHlw ZQBJRW51bW VyYXRv
  6764   cmAxAFBhY2 tVcmlIZWxw ZXIAUmVzb2 x2ZVBhcnRV cmkAU3RyZW FtAEdldFN0 cmVhbQBDbG 9zZQBM
  6765   b2FkAFBhcn RFeGlzdHMA U3RyZWFtV3 JpdGVyAFRl eHRXcml0ZX IARmx1c2gA R2V0UmVsYX Rpb25z
  6766   aGlwcwBEZW xldGVSZWxh dGlvbnNoaX AAU3lzdGVt LldpbmRvd3 MuRm9ybXMA TWVzc2FnZU JveABE
  6767   aWFsb2dSZX N1bHQAU2hv dwBCb29sZW FuAFJlbW92 ZQBEZWZhdW x0TWVtYmVy QXR0cmlidX RlAFRv
  6768   Qm9vbGVhbg BWYWx1ZUNv bGxlY3Rpb2 4AZ2V0X1Zh bHVlcwBFbn VtZXJhdG9y AFJlbW92ZU F0dHJp
  6769   YnV0ZQBnZX RfTGFzdENo aWxkAFN5c3 RlbS5EaWFn bm9zdGljcw BEZWJ1Z2dl ck5vblVzZX JDb2Rl
  6770   QXR0cmlidX RlAFR5cGUA UnVudGltZV R5cGVIYW5k bGUAR2V0VH lwZUZyb21I YW5kbGUAQX NzZW1i
  6771   bHkAZ2V0X0 Fzc2VtYmx5 AFN5c3RlbS 5Db21wb25l bnRNb2RlbA BFZGl0b3JC cm93c2FibG VBdHRy
  6772   aWJ1dGUARW RpdG9yQnJv d3NhYmxlU3 RhdGUAQ29t cGlsZXJHZW 5lcmF0ZWRB dHRyaWJ1dG UALmNj
  6773   dG9yAFNTSV NTY3JpcHRU YXNrRW50cn lQb2ludEF0 dHJpYnV0ZQ BnZXRfRHRz AHNldF9UYX NrUmVz
  6774   dWx0AGdldF 9UYXNrUmVz dWx0AFBhdG gAR2V0Rmls ZU5hbWVXaX Rob3V0RXh0 ZW5zaW9uAE RhdGVU
  6775   aW1lAGdldF 9Ob3cAR2V0 RXh0ZW5zaW 9uAEZpbGUA TW92ZQBHZX RGaWxlTmFt ZQBnZXRfTW Vzc2Fn
  6776   ZQBDb250YW lucwBUcnlH ZXRWYWx1ZQ BnZXRfSW52 YXJpYW50Q3 VsdHVyZQBJ Rm9ybWF0UH Jvdmlk
  6777   ZXIARnJvbU 9BRGF0ZQBE YXRhUm93Q2 9sbGVjdGlv bgBnZXRfUm 93cwBEYXRh Um93AEludG VybmFs
  6778   RGF0YUNvbG xlY3Rpb25C YXNlAERhdG FDb2x1bW5D b2xsZWN0aW 9uAGdldF9D b2x1bW5zAE RhdGFD
  6779   b2x1bW4ARm lsZVN0cmVh bQBPcGVuUm VhZABCeXRl AFJlYWQAU3 lzdGVtLkRh dGEuU3FsQ2 xpZW50
  6780   AFNxbENvbm 5lY3Rpb24A U3FsQ29tbW FuZABTcWxQ YXJhbWV0ZX JDb2xsZWN0 aW9uAGdldF 9QYXJh
  6781   bWV0ZXJzAF NxbFBhcmFt ZXRlcgBTeX N0ZW0uRGF0 YS5Db21tb2 4ARGJDb21t YW5kAENvbW 1hbmRU
  6782   eXBlAHNldF 9Db21tYW5k VHlwZQBzZX RfQ29ubmVj dGlvbgBEYk Nvbm5lY3Rp b24ARXhlY3 V0ZU5v
  6783   blF1ZXJ5AE V4ZWN1dGVT Y2FsYXIAU3 lzdGVtLlRo cmVhZGluZw BUaHJlYWQA U2xlZXAAQ2 9udGFp
  6784   bnNLZXkAU3 FsQnVsa0Nv cHkAc2V0X0 Rlc3RpbmF0 aW9uVGFibG VOYW1lAFNx bEJ1bGtDb3 B5Q29s
  6785   dW1uTWFwcG luZ0NvbGxl Y3Rpb24AZ2 V0X0NvbHVt bk1hcHBpbm dzAFNxbEJ1 bGtDb3B5Q2 9sdW1u
  6786   TWFwcGluZw BXcml0ZVRv U2VydmVyAF ZhcmlhYmxl cwBnZXRfVm FyaWFibGVz AFZhcmlhYm xlAFRy
  6787   aW0AVG9Mb3 dlcgBUb1Vw cGVyAElEVF NFdmVudHMA TG9hZEZyb2 1TcWxTZXJ2 ZXIARXhlY3 V0YWJs
  6788   ZQBEVFNFeG VjUmVzdWx0 AENvbm5lY3 Rpb25zAElE VFNMb2dnaW 5nAEV4ZWN1 dGUAR2V0RG lyZWN0
  6789   b3J5TmFtZQ BFeGlzdHMA U3FsRGF0YV JlYWRlcgBF eGVjdXRlUm VhZGVyAERi RGF0YVJlYW RlcgBH
  6790   ZXRPcmRpbm FsAEdldFN0 cmluZwBEYl BhcmFtZXRl ckNvbGxlY3 Rpb24AQ2xl YXIAQWRkV2 l0aFZh
  6791   bHVlAGdldF 9Jbm5lckV4 Y2VwdGlvbg BTcWxEYXRh QWRhcHRlcg BEYkRhdGFB ZGFwdGVyAE ZpbGwA
  6792   TmV3R3VpZA BFdmVudHNP YmplY3RXcm FwcGVyAGdl dF9FdmVudH MARmlyZUVy cm9yAEZpcm VJbmZv
  6793   cm1hdGlvbg BGaXJlV2Fy bmluZwBTVF 9mY2U2ODYz Y2Q4Yzk0MT g3YjdiZDI1 MjgxMzA2Mz RlMS5j
  6794   c3Byb2ouUH JvcGVydGll cy5SZXNvdX JjZXMucmVz b3VyY2VzAA AAgI1FAHgA YwBlAGwAQw BlAGwA
  6795   bAAgAEMAbw BuAHMAdABy AHUAYwB0AG 8AcgA6ACAA TgBlAGcAYQ B0AGkAdgBl ACAAcgBvAH cAIABh
  6796   AG4AZAAgAG MAbwBsAHUA bQBuACAAbg B1AG0AYgBl AHIAcwAgAG EAcgBlACAA bgBvAHQAIA BhAGwA
  6797   bABvAHcAZQ BkAACAh0UA eABjAGUAbA BDAGUAbABs ACAAQwBvAG 4AcwB0AHIA dQBjAHQAbw ByADoA
  6798   IAB4AGwAVw BvAHIAawBz AGgAZQBlAH QAIABtAHUA cwB0ACAAYg BlACAAcwBl AHQAIAB0AG 8AIABh
  6799   ACAAdgBhAG wAaQBkACAA cgBlAGYAZQ ByAGUAbgBj AGUAAAsuAC 8AZAA6AHYA AAEAA3QAAA NzAAAD
  6800   dgAAc2gAdA B0AHAAOgAv AC8AcwBjAG gAZQBtAGEA cwAuAG8AcA BlAG4AeABt AGwAZgBvAH IAbQBh
  6801   AHQAcwAuAG 8AcgBnAC8A cwBwAHIAZQ BhAGQAcwBo AGUAZQB0AG 0AbAAvADIA MAAwADYALw BtAGEA
  6802   aQBuAABRLw AvAGQAOgBo AHkAcABlAH IAbABpAG4A awBzAC8AZA A6AGgAeQBw AGUAcgBsAG kAbgBr
  6803   AFsAQAByAG UAZgAgAD0A IAAnAHsAMA B9ACcAXQAB BWkAZAAAgI doAHQAdABw ADoALwAvAH MAYwBo
  6804   AGUAbQBhAH MALgBvAHAA ZQBuAHgAbQ BsAGYAbwBy AG0AYQB0AH MALgBvAHIA ZwAvAG8AZg BmAGkA
  6805   YwBlAEQAbw BjAHUAbQBl AG4AdAAvAD IAMAAwADYA LwByAGUAbA BhAHQAaQBv AG4AcwBoAG kAcABz
  6806   AAAdLwAvAG QAOgBoAHkA cABlAHIAbA BpAG4AawBz AAAVaAB5AH AAZQByAGwA aQBuAGsAcw AAMy8A
  6807   LwBkADoAYw BvAG4AZABp AHQAaQBvAG 4AYQBsAEYA bwByAG0AYQ B0AHQAaQBu AGcAAB0vAC 8AZAA6
  6808   AG0AZQByAG cAZQBDAGUA bABsAHMAAB svAC8AZAA6 AHMAaABlAG UAdABEAGEA dABhAAA3Lg AvAGQA
  6809   OgBoAHkAcA BlAHIAbABp AG4AawBbAE AAcgBlAGYA IAA9ACAAJw B7ADAAfQAn AF0AARNoAH kAcABl
  6810   AHIAbABpAG 4AawAAB3IA ZQBmAAADcg AAgJtoAHQA dABwADoALw AvAHMAYwBo AGUAbQBhAH MALgBv
  6811   AHAAZQBuAH gAbQBsAGYA bwByAG0AYQ B0AHMALgBv AHIAZwAvAG 8AZgBmAGkA YwBlAEQAbw BjAHUA
  6812   bQBlAG4AdA AvADIAMAAw ADYALwByAG UAbABhAHQA aQBvAG4Acw BoAGkAcABz AC8AaAB5AH AAZQBy
  6813   AGwAaQBuAG sAAAsuAC8A ZAA6AGYAAA 1zAGgAYQBy AGUAZAAABX MAaQAAgKFF AHgAYwBlAG wAQwBl
  6814   AGwAbAAgAG YAbwByAG0A dQBsAGEAIA BtAGEAcgBr AGUAZAAgAG EAcwAgAHMA aABhAHIAZQ BkACAA
  6815   YgB1AHQAIA BuAG8AIABy AGUAZgBlAH IAZQBuAGMA ZQAgAEkARA AgAGYAbwB1 AG4AZAAgAC gAaQAu
  6816   AGUALgAgAH MAaQAgAGEA dAB0AHIAaQ BiAHUAdABl ACkAAE0vAC 8AZAA6AHMA aABlAGUAdA BEAGEA
  6817   dABhAC8AZA A6AHIAbwB3 AC8AZAA6AG MALwBkADoA ZgBbAEAAcw BpAD0AJwB7 ADAAfQAnAF 0AAX1F
  6818   AHgAYwBlAG wAQwBlAGwA bAAgAGYAbw ByAG0AdQBs AGEAIABtAG EAcgBrAGUA ZAAgAGEAcw AgAHMA
  6819   aABhAHIAZQ BkACAAYgB1 AHQAIABuAG 8AIAByAGUA ZgBlAHIAZQ BuAGMAZQAg AG4AbwBkAG UAIABm
  6820   AG8AdQBuAG QAADtGAHUA bgBjAHQAaQ BvAG4AIABu AG8AdAAgAH kAZQB0ACAA aQBtAHAAbA BlAG0A
  6821   ZQBuAHQAZQ BkACEAABNb AF4AMAAtAD kALAAuAC0A XQABLV4ALQ BbADAALQA5 ACwALgBdAC sAJAB8
  6822   AF4AWwAwAC 0AOQAsAC4A XQArACQAAS MvAC8AZAA6 AHMAaQBbAG QAOgB0AD0A JwB7ADAAfQ AnAF0A
  6823   AS9wAHIAZQ BjAGUAZABp AG4AZwAtAH MAaQBiAGwA aQBuAGcAOg A6AGQAOgBz AGkAAQ0vAC 8AZAA6
  6824   AHMAaQAAA2 YAAC8uAC8A ZAA6AGMAWw BAAGMAbwBs AE4AdQBtAG IAZQByAD0A JwB7ADAAfQ AnAF0A
  6825   AQNjAAATYw BvAGwATgB1 AG0AYgBlAH IAAAsuAC8A ZAA6AGMAAB lbAF4AYQAt AHoAQQAtAF oAMAAt
  6826   ADkAXQABF1 sAYQAtAHoA QQAtAFoAMA AtADkAXQAB AyAAAAUgAC AAAANkAAAR LwAvAGQAOg BjAG8A
  6827   bABzAAAJYw BvAGwAcwAA B20AaQBuAA AHbQBhAHgA AAdjAG8AbA AADWgAaQBk AGQAZQBuAA ADMQAA
  6828   AzAAAAt3AG kAZAB0AGgA ADFDAG8AbA B1AG0AbgAg AFIAYQBuAG cAZQA6ACAA ewAwAH0AIA B0AG8A
  6829   IAB7ADEAfQ AAGWgAZQBh AGQAZQByAE YAbwBvAHQA ZQByAABzRQ B4AGMAZQBs AEgAZQBhAG QAZQBy
  6830   AEYAbwBvAH QAZQByACAA RQByAHIAbw ByADoAIABQ AGEAcwBzAG UAZAAgAGkA bgB2AGEAbA BpAGQA
  6831   IABoAGUAYQ BkAGUAcgBG AG8AbwB0AG UAcgAgAG4A bwBkAGUAAC FhAGwAaQBn AG4AVwBpAH QAaABN
  6832   AGEAcgBnAG kAbgBzAAAh ZABpAGYAZg BlAHIAZQBu AHQATwBkAG QARQB2AGUA bgAAHWQAaQ BmAGYA
  6833   ZQByAGUAbg B0AEYAaQBy AHMAdAAAE2 8AZABkAEgA ZQBhAGQAZQ ByAAATbwBk AGQARgBvAG 8AdABl
  6834   AHIAABVlAH YAZQBuAEgA ZQBhAGQAZQ ByAAAVZQB2 AGUAbgBGAG 8AbwB0AGUA cgAAF2YAaQ ByAHMA
  6835   dABIAGUAYQ BkAGUAcgAA F2YAaQByAH MAdABGAG8A bwB0AGUAcg AABSYATAAA BSYAQwAABS YAUgAA
  6836   GS8AZABlAG YAYQB1AGwA dAAuAHgAbQ BsAAAfYQBw AHAAbABpAG MAYQB0AGkA bwBuAC8AeA BtAGwA
  6837   AIClaAB0AH QAcAA6AC8A LwBzAGMAaA BlAG0AYQBz AC4AbwBwAG UAbgB4AG0A bABmAG8Acg BtAGEA
  6838   dABzAC4Abw ByAGcALwBv AGYAZgBpAG MAZQBEAG8A YwB1AG0AZQ BuAHQALwAy ADAAMAA2AC 8AcgBl
  6839   AGwAYQB0AG kAbwBuAHMA aABpAHAAcw AvAG8AZgBm AGkAYwBlAE QAbwBjAHUA bQBlAG4AdA AAe0UA
  6840   eABjAGUAbA BQAGEAYwBr AGEAZwBlAC AARQByAHIA bwByADoAIA BUAGEAcgBn AGUAdAAgAG YAaQBs
  6841   AGUAIABhAG wAcgBlAGEA ZAB5ACAAZQ B4AGkAcwB0 AHMAIABhAG 4AZAAgAGkA cwAgAGwAbw BjAGsA
  6842   ZQBkAC4AAI CDRQB4AGMA ZQBsAFAAYQ BjAGsAYQBn AGUAIABFAH IAcgBvAHIA OgAgAFAAYQ BzAHMA
  6843   ZQBkACAAaQ BuAHYAYQBs AGkAZAAgAF QAZQBtAHAA bABhAHQAZQ BQAGEAdABo ACAAdABvAC AARQB4
  6844   AGMAZQBsAC AAVABlAG0A cABsAGEAdA BlAAADLwAA gIloAHQAdA BwADoALwAv AHMAYwBoAG UAbQBh
  6845   AHMALgBvAH AAZQBuAHgA bQBsAGYAbw ByAG0AYQB0 AHMALgBvAH IAZwAvAG8A ZgBmAGkAYw BlAEQA
  6846   bwBjAHUAbQ BlAG4AdAAv ADIAMAAwAD YALwByAGUA bABhAHQAaQ BvAG4AcwBo AGkAcABzAC 8AAAt4
  6847   AG0AbABuAH MAADtoAHQA dABwADoALw AvAHcAdwB3 AC4AdwAzAC 4AbwByAGcA LwAyADAAMA AwAC8A
  6848   eABtAGwAbg BzAC8AADsv AC8AZAA6AH MAaABlAGUA dABEAGEAdA BhAC8AZAA6 AHIAbwB3AF sAQABy
  6849   AD0AJwB7AD AAfQAnAF0A AQdyAG8Adw AAJy8ALwBk ADoAcwBoAG UAZQB0AEQA YQB0AGEALw BkADoA
  6850   cgBvAHcAAA VoAHQAABlj AHUAcwB0AG 8AbQBIAGUA aQBnAGgAdA AAGWMAdQBz AHQAbwBtAE YAbwBy
  6851   AG0AYQB0AA AhLwB4AGwA LwB3AG8Acg BrAGIAbwBv AGsALgB4AG 0AbAAAKy8A eABsAC8Acw BoAGEA
  6852   cgBlAGQAUw B0AHIAaQBu AGcAcwAuAH gAbQBsAAAd LwB4AGwALw BzAHQAeQBs AGUAcwAuAH gAbQBs
  6853   AAAjLwB4AG wALwBjAGEA bABjAEMAaA BhAGkAbgAu AHgAbQBsAA CAlWEAcABw AGwAaQBjAG EAdABp
  6854   AG8AbgAvAH YAbgBkAC4A bwBwAGUAbg B4AG0AbABm AG8AcgBtAG EAdABzAC0A bwBmAGYAaQ BjAGUA
  6855   ZABvAGMAdQ BtAGUAbgB0 AC4AcwBwAH IAZQBhAGQA cwBoAGUAZQ B0AG0AbAAu AHMAaABlAG UAdAAu
  6856   AG0AYQBpAG 4AKwB4AG0A bAABEXcAbw ByAGsAYgBv AG8AawAAE2 IAbwBvAGsA VgBpAGUAdw BzAAAZ
  6857   dwBvAHIAaw BiAG8AbwBr AFYAaQBlAH cAAA1zAGgA ZQBlAHQAcw AAgJthAHAA cABsAGkAYw BhAHQA
  6858   aQBvAG4ALw B2AG4AZAAu AG8AcABlAG 4AeABtAGwA ZgBvAHIAbQ BhAHQAcwAt AG8AZgBmAG kAYwBl
  6859   AGQAbwBjAH UAbQBlAG4A dAAuAHMAcA ByAGUAYQBk AHMAaABlAG UAdABtAGwA LgBzAGgAYQ ByAGUA
  6860   ZABTAHQAcg BpAG4AZwBz ACsAeABtAG wAAQdzAHMA dAAAC2MAbw B1AG4AdAAA F3UAbgBpAH EAdQBl
  6861   AEMAbwB1AG 4AdAAAgKNo AHQAdABwAD oALwAvAHMA YwBoAGUAbQ BhAHMALgBv AHAAZQBuAH gAbQBs
  6862   AGYAbwByAG 0AYQB0AHMA LgBvAHIAZw AvAG8AZgBm AGkAYwBlAE QAbwBjAHUA bQBlAG4AdA AvADIA
  6863   MAAwADYALw ByAGUAbABh AHQAaQBvAG 4AcwBoAGkA cABzAC8Acw BoAGEAcgBl AGQAUwB0AH IAaQBu
  6864   AGcAcwAAgI 1hAHAAcABs AGkAYwBhAH QAaQBvAG4A LwB2AG4AZA AuAG8AcABl AG4AeABtAG wAZgBv
  6865   AHIAbQBhAH QAcwAtAG8A ZgBmAGkAYw BlAGQAbwBj AHUAbQBlAG 4AdAAuAHMA cAByAGUAYQ BkAHMA
  6866   aABlAGUAdA BtAGwALgBz AHQAeQBsAG UAcwArAHgA bQBsAAEVcw B0AHkAbABl AFMAaABlAG UAdAAA
  6867   C2YAbwBuAH QAcwAACWYA bwBuAHQAAA VzAHoAAAd2 AGEAbAAABT EAMQAACW4A YQBtAGUAAA 9DAGEA
  6868   bABpAGIAcg BpAAAZYwBl AGwAbABTAH QAeQBsAGUA WABmAHMAAA V4AGYAABFu AHUAbQBGAG 0AdABJ
  6869   AGQAAA1mAG 8AbgB0AEkA ZAAAD2MAZQ BsAGwAWABm AHMAAAl4AG YASQBkAACA lWgAdAB0AH AAOgAv
  6870   AC8AcwBjAG gAZQBtAGEA cwAuAG8AcA BlAG4AeABt AGwAZgBvAH IAbQBhAHQA cwAuAG8Acg BnAC8A
  6871   bwBmAGYAaQ BjAGUARABv AGMAdQBtAG UAbgB0AC8A MgAwADAANg AvAHIAZQBs AGEAdABpAG 8AbgBz
  6872   AGgAaQBwAH MALwBzAHQA eQBsAGUAcw AAFS8ALwBk ADoAYwBhAG wAYwBQAHIA ABFjAGEAbA BjAE0A
  6873   bwBkAGUAAA lhAHUAdABv AAAXYQB1AH QAbwBOAG8A VABhAGIAbA BlAAANbQBh AG4AdQBhAG wAAICN
  6874   VwBvAHIAaw BiAG8AbwBr ACAAUwBhAH YAZQAgAEUA cgByAG8Acg A6ACAAdABo AGUAIAB3AG 8AcgBr
  6875   AGIAbwBvAG sAIABtAHUA cwB0ACAAYw BvAG4AdABh AGkAbgAgAG EAdAAgAGwA ZQBhAHMAdA AgAG8A
  6876   bgBlACAAdw BvAHIAawBz AGgAZQBlAH QAIQAAG2MA YQBsAGMAQw BoAGEAaQBu AC4AeABtAG wAAAV4
  6877   AGwAABl3AG 8AcgBrAGIA bwBvAGsALg B4AG0AbAAA FXMAdAB5AG wAZQBzAC4A eABtAGwAAC NzAGgA
  6878   YQByAGUAZA BzAHQAcgBp AG4AZwBzAC 4AeABtAGwA AAlkAG8Abg BlAAAvLwAv AGQAOgBzAG gAZQBl
  6879   AHQAWwBAAH MAaABlAGUA dABJAGQAPQ B7ADAAfQBd AAAjLwAvAG QAOgBzAGgA ZQBlAHQARg BvAHIA
  6880   bQBhAHQAUA ByAAAhZABl AGYAYQB1AG wAdABSAG8A dwBIAGUAaQ BnAGgAdAAA G3MAaABlAG UAdABG
  6881   AG8AcgBtAG EAdABQAHIA AB0vAC8AZA A6AHMAaABl AGUAdABWAG kAZQB3AHMA ACEvAC8AZA A6AGgA
  6882   ZQBhAGQAZQ ByAEYAbwBv AHQAZQByAA CAgUMAcgBl AGEAdABlAF MAaABhAHIA ZQBkAEYAbw ByAG0A
  6883   dQBsAGEAIA BFAHIAcgBv AHIAOgAgAH MAdABhAHIA dABDAGUAbA BsACAAZABv AGUAcwAgAG 4AbwB0
  6884   ACAAYwBvAG 4AdABhAGkA bgAgAGEAIA BmAG8AcgBt AHUAbABhAC EAAD8vAC8A ZAA6AHMAaA BlAGUA
  6885   dABEAGEAdA BhAC8AZAA6 AHIAbwB3AC 8AZAA6AGMA LwBkADoAZg AvAEAAcwBp AAAPewAwAH 0AOgB7
  6886   ADEAfQAAK2 MAbwBuAGQA aQB0AGkAbw BuAGEAbABG AG8AcgBtAG EAdAB0AGkA bgBnAAALcw BxAHIA
  6887   ZQBmAAAVLg AvAGQAOgBj AGYAUgB1AG wAZQAADWMA ZgBSAHUAbA BlAAAJdAB5 AHAAZQAAD2 QAYQB0
  6888   AGEAQgBhAH IAABFwAHIA aQBvAHIAaQ B0AHkAAA9k AGEAdABhAG IAYQByAAAJ YwBmAHYAbw AAC2MA
  6889   bwBsAG8Acg AAB3IAZwBi AAATLgAvAG QAOgBjAC8A ZAA6AGYAAB svAC8AZAA6 AHAAYQBnAG UAUwBl
  6890   AHQAdQBwAA AHLwB4AGwA AAUuAC4AAB t4AGwAXAB3 AG8AcgBrAH MAaABlAGUA dABzAAALcw BoAGUA
  6891   ZQB0AAAJLg B4AG0AbAAA C3MAcABhAG 4AcwAAIS8A LwBkADoAYw BlAGwAbABY AGYAcwAvAG QAOgB4
  6892   AGYAADkvAC 8AZAA6AGMA ZQBsAGwAUw B0AHkAbABl AFsAQAB4AG YASQBkACAA PQAgACcAew AwAH0A
  6893   JwBdAAE5Lw AvAGQAOgBj AGUAbABsAF MAdAB5AGwA ZQBbAEAAbg BhAG0AZQAg AD0AIAAnAH sAMAB9
  6894   ACcAXQABPy 8ALwBkADoA YwBlAGwAbA BYAGYAcwAv AGQAOgB4AG YAWwBAAHgA ZgBJAGQAIA A9ACAA
  6895   JwB7ADAAfQ AnAF0AAS9w AHIAZQBjAG UAZABpAG4A ZwAtAHMAaQ BiAGwAaQBu AGcAOgA6AG QAOgB4
  6896   AGYAARUvAC 8AZAA6AHMA aABlAGUAdA BzAAAJcgA6 AGkAZAAAD3 MAaABlAGUA dABJAGQAAI CPQQBk
  6897   AGQAIAB3AG 8AcgBrAHMA aABlAGUAdA AgAEUAcgBy AG8AcgA6AC AAYQB0AHQA ZQBtAHAAdA BpAG4A
  6898   ZwAgAHQAbw AgAGMAcgBl AGEAdABlAC AAdwBvAHIA awBzAGgAZQ BlAHQAIAB3 AGkAdABoAC AAZAB1
  6899   AHAAbABpAG MAYQB0AGUA IABuAGEAbQ BlAAApLwB4 AGwALwB3AG 8AcgBrAHMA aABlAGUAdA BzAC8A
  6900   cwBoAGUAZQ B0AACAk2EA cABwAGwAaQ BjAGEAdABp AG8AbgAvAH YAbgBkAC4A bwBwAGUAbg B4AG0A
  6901   bABmAG8Acg BtAGEAdABz AC0AbwBmAG YAaQBjAGUA ZABvAGMAdQ BtAGUAbgB0 AC4AcwBwAH IAZQBh
  6902   AGQAcwBoAG UAZQB0AG0A bAAuAHcAbw ByAGsAcwBo AGUAZQB0AC sAeABtAGwA AYCbaAB0AH QAcAA6
  6903   AC8ALwBzAG MAaABlAG0A YQBzAC4Abw BwAGUAbgB4 AG0AbABmAG 8AcgBtAGEA dABzAC4Abw ByAGcA
  6904   LwBvAGYAZg BpAGMAZQBE AG8AYwB1AG 0AZQBuAHQA LwAyADAAMA A2AC8AcgBl AGwAYQB0AG kAbwBu
  6905   AHMAaABpAH AAcwAvAHcA bwByAGsAcw BoAGUAZQB0 AAATdwBvAH IAawBzAGgA ZQBlAHQAAA 94AG0A
  6906   bABuAHMAOg ByAAAVcwBo AGUAZQB0AF YAaQBlAHcA cwAAE3MAaA BlAGUAdABW AGkAZQB3AA AddwBv
  6907   AHIAawBiAG 8AbwBrAFYA aQBlAHcASQ BkAAATcwBo AGUAZQB0AE QAYQB0AGEA AIDvRQByAH IAbwBy
  6908   ADoAIABZAG 8AdQAgAGEA cgBlACAAYQ B0AHQAZQBt AHAAdABpAG 4AZwAgAHQA bwAgAGQAZQ BsAGUA
  6909   dABlACAAdA BoAGUAIABs AGEAcwB0AC AAdwBvAHIA awBzAGgAZQ BlAHQAIABp AG4AIAB0AG gAZQAg
  6910   AHcAbwByAG sAYgBvAG8A awAuACAAIA BPAG4AZQAg AHcAbwByAG sAcwBoAGUA ZQB0ACAATQ BVAFMA
  6911   VAAgAGIAZQ AgAHAAcgBl AHMAZQBuAH QAIABpAG4A IAB0AGgAZQ AgAHcAbwBy AGsAYgBvAG 8AawAh
  6912   AAArLwAvAG QAOgB3AG8A cgBrAGIAbw BvAGsALwBk ADoAcwBoAG UAZQB0AHMA AC8uAC8AZA A6AHMA
  6913   aABlAGUAdA BbAEAAcwBo AGUAZQB0AE kAZAA9AHsA MAB9AF0AAF dUAGgAZQAg AG0AZQB0AG gAbwBk
  6914   ACAAbwByAC AAbwBwAGUA cgBhAHQAaQ BvAG4AIABp AHMAIABuAG 8AdAAgAGkA bQBwAGwAZQ BtAGUA
  6915   bgB0AGUAZA AuAAAbLwAv AGQAOgBzAG gAZQBlAHQA VgBpAGUAdw AAF3QAYQBi AFMAZQBsAG UAYwB0
  6916   AGUAZAAACX YAaQBlAHcA ABVwAGEAZw BlAEwAYQB5 AG8AdQB0AA AlLwBkAG8A YwBQAHIAbw BwAHMA
  6917   LwBjAG8Acg BlAC4AeABt AGwAACMvAG QAbwBjAFAA cgBvAHAAcw AvAGEAcABw AC4AeABtAG wAACkv
  6918   AGQAbwBjAF AAcgBvAHAA cwAvAGMAdQ BzAHQAbwBt AC4AeABtAG wAAAV2AHQA AICJaAB0AH QAcAA6
  6919   AC8ALwBzAG MAaABlAG0A YQBzAC4Abw BwAGUAbgB4 AG0AbABmAG 8AcgBtAGEA dABzAC4Abw ByAGcA
  6920   LwBvAGYAZg BpAGMAZQBE AG8AYwB1AG 0AZQBuAHQA LwAyADAAMA A2AC8AZABv AGMAUAByAG 8AcABz
  6921   AFYAVAB5AH AAZQBzAAAF eABwAACAk2 gAdAB0AHAA OgAvAC8Acw BjAGgAZQBt AGEAcwAuAG 8AcABl
  6922   AG4AeABtAG wAZgBvAHIA bQBhAHQAcw AuAG8AcgBn AC8AbwBmAG YAaQBjAGUA RABvAGMAdQ BtAGUA
  6923   bgB0AC8AMg AwADAANgAv AGUAeAB0AG UAbgBkAGUA ZAAtAHAAcg BvAHAAZQBy AHQAaQBlAH MAAQdj
  6924   AHQAcAAAgI 9oAHQAdABw ADoALwAvAH MAYwBoAGUA bQBhAHMALg BvAHAAZQBu AHgAbQBsAG YAbwBy
  6925   AG0AYQB0AH MALgBvAHIA ZwAvAG8AZg BmAGkAYwBl AEQAbwBjAH UAbQBlAG4A dAAvADIAMA AwADYA
  6926   LwBjAHUAcw B0AG8AbQAt AHAAcgBvAH AAZQByAHQA aQBlAHMAAQ VjAHAAAICP aAB0AHQAcA A6AC8A
  6927   LwBzAGMAaA BlAG0AYQBz AC4AbwBwAG UAbgB4AG0A bABmAG8Acg BtAGEAdABz AC4AbwByAG cALwBw
  6928   AGEAYwBrAG EAZwBlAC8A MgAwADAANg AvAG0AZQB0 AGEAZABhAH QAYQAvAGMA bwByAGUALQ BwAHIA
  6929   bwBwAGUAcg B0AGkAZQBz AAEFZABjAA BBaAB0AHQA cAA6AC8ALw BwAHUAcgBs AC4AbwByAG cALwBk
  6930   AGMALwBlAG wAZQBtAGUA bgB0AHMALw AxAC4AMQAv AAAPZABjAH QAZQByAG0A cwAAM2gAdA B0AHAA
  6931   OgAvAC8AcA B1AHIAbAAu AG8AcgBnAC 8AZABjAC8A dABlAHIAbQ BzAC8AABFk AGMAbQBpAH QAeQBw
  6932   AGUAADloAH QAdABwADoA LwAvAHAAdQ ByAGwALgBv AHIAZwAvAG QAYwAvAGQA YwBtAGkAdA B5AHAA
  6933   ZQAvAAAHeA BzAGkAAFNo AHQAdABwAD oALwAvAHcA dwB3AC4Adw AzAC4AbwBy AGcALwAyAD AAMAAx
  6934   AC8AWABNAE wAUwBjAGgA ZQBtAGEALQ BpAG4AcwB0 AGEAbgBjAG UAAXVhAHAA cABsAGkAYw BhAHQA
  6935   aQBvAG4ALw B2AG4AZAAu AG8AcABlAG 4AeABtAGwA ZgBvAHIAbQ BhAHQAcwAt AHAAYQBjAG sAYQBn
  6936   AGUALgBjAG 8AcgBlAC0A cAByAG8AcA BlAHIAdABp AGUAcwArAH gAbQBsAAEj YwBwADoAYw BvAHIA
  6937   ZQBQAHIAbw BwAGUAcgB0 AGkAZQBzAA CAq2gAdAB0 AHAAOgAvAC 8AcwBjAGgA ZQBtAGEAcw AuAG8A
  6938   cABlAG4AeA BtAGwAZgBv AHIAbQBhAH QAcwAuAG8A cgBnAC8AcA BhAGMAawBh AGcAZQAvAD IAMAAw
  6939   ADYALwByAG UAbABhAHQA aQBvAG4Acw BoAGkAcABz AC8AbQBlAH QAYQBkAGEA dABhAC8AYw BvAHIA
  6940   ZQAtAHAAcg BvAHAAZQBy AHQAaQBlAH MAAQt0AGkA dABsAGUAAA 9zAHUAYgBq AGUAYwB0AA APYwBy
  6941   AGUAYQB0AG 8AcgAAF2QA ZQBzAGMAcg BpAHAAdABp AG8AbgAAEW sAZQB5AHcA bwByAGQAcw AAHWwA
  6942   YQBzAHQATQ BvAGQAaQBm AGkAZQBkAE IAeQAAF2wA YQBzAHQAUA ByAGkAbgB0 AGUAZAAAEW MAYQB0
  6943   AGUAZwBvAH IAeQAAG2MA bwBuAHQAZQ BuAHQAUwB0 AGEAdAB1AH MAADcvAC8A YwBwADoAYw BvAHIA
  6944   ZQBQAHIAbw BwAGUAcgB0 AGkAZQBzAC 8AewAwAH0A OgB7ADEAfQ AAgIthAHAA cABsAGkAYw BhAHQA
  6945   aQBvAG4ALw B2AG4AZAAu AG8AcABlAG 4AeABtAGwA ZgBvAHIAbQ BhAHQAcwAt AG8AZgBmAG kAYwBl
  6946   AGQAbwBjAH UAbQBlAG4A dAAuAGUAeA B0AGUAbgBk AGUAZAAtAH AAcgBvAHAA ZQByAHQAaQ BlAHMA
  6947   KwB4AG0AbA ABFVAAcgBv AHAAZQByAH QAaQBlAHMA AICvaAB0AH QAcAA6AC8A LwBzAGMAaA BlAG0A
  6948   YQBzAC4Abw BwAGUAbgB4 AG0AbABmAG 8AcgBtAGEA dABzAC4Abw ByAGcALwBv AGYAZgBpAG MAZQBE
  6949   AG8AYwB1AG 0AZQBuAHQA LwAyADAAMA A2AC8AcgBl AGwAYQB0AG kAbwBuAHMA aABpAHAAcw AvAGUA
  6950   eAB0AGUAbg BkAGUAZAAt AHAAcgBvAH AAZQByAHQA aQBlAHMAAR dBAHAAcABs AGkAYwBhAH QAaQBv
  6951   AG4AABtIAH kAcABlAHIA bABpAG4Aaw BCAGEAcwBl AAAVQQBwAH AAVgBlAHIA cwBpAG8Abg AAD0MA
  6952   bwBtAHAAYQ BuAHkAAA9N AGEAbgBhAG cAZQByAAAt LwAvAHgAcA A6AFAAcgBv AHAAZQByAH QAaQBl
  6953   AHMALwB4AH AAOgB7ADAA fQAAgIdhAH AAcABsAGkA YwBhAHQAaQ BvAG4ALwB2 AG4AZAAuAG 8AcABl
  6954   AG4AeABtAG wAZgBvAHIA bQBhAHQAcw AtAG8AZgBm AGkAYwBlAG QAbwBjAHUA bQBlAG4AdA AuAGMA
  6955   dQBzAHQAbw BtAC0AcABy AG8AcABlAH IAdABpAGUA cwArAHgAbQ BsAAGAq2gA dAB0AHAAOg AvAC8A
  6956   cwBjAGgAZQ BtAGEAcwAu AG8AcABlAG 4AeABtAGwA ZgBvAHIAbQ BhAHQAcwAu AG8AcgBnAC 8AbwBm
  6957   AGYAaQBjAG UARABvAGMA dQBtAGUAbg B0AC8AMgAw ADAANgAvAH IAZQBsAGEA dABpAG8Abg BzAGgA
  6958   aQBwAHMALw BjAHUAcwB0 AG8AbQAtAH AAcgBvAHAA ZQByAHQAaQ BlAHMAAVkv AC8AYwB0AH AAOgBQ
  6959   AHIAbwBwAG UAcgB0AGkA ZQBzAC8AYw B0AHAAOgBw AHIAbwBwAG UAcgB0AHkA LwBAAG4AYQ BtAGUA
  6960   WwAuAD0AJw B7ADAAfQAn AF0AASEvAC 8AYwB0AHAA OgBQAHIAbw BwAGUAcgB0 AGkAZQBzAA BhLwAv
  6961   AGMAdABwAD oAUAByAG8A cABlAHIAdA BpAGUAcwAv AGMAdABwAD oAcAByAG8A cABlAHIAdA B5AC8A
  6962   QABjAHQAcA A6AG4AYQBt AGUAWwAuAD 0AJwB7ADAA fQAnAF0AAQ dwAGkAZAAA EXAAcgBvAH AAZQBy
  6963   AHQAeQAAC2 YAbQB0AGkA ZAAATXsARA A1AEMARABE ADUAMAA1AC 0AMgBFADkA QwAtADEAMA AxAEIA
  6964   LQA5ADMAOQ A3AC0AMAA4 ADAAMAAyAE IAMgBDAEYA OQBBAEUAfQ ABDWwAcAB3 AHMAdAByAA ARZABv
  6965   AGMAUAByAG 8AcABzAAAR YwBvAHIAZQ AuAHgAbQBs AAAPYQBwAH AALgB4AG0A bAAAFWMAdQ BzAHQA
  6966   bwBtAC4AeA BtAGwAAH9T AFQAXwBmAG MAZQA2ADgA NgAzAGMAZA A4AGMAOQA0 ADEAOAA3AG IANwBi
  6967   AGQAMgA1AD IAOAAxADMA MAA2ADMANA BlADEALgBj AHMAcAByAG 8AagAuAFAA cgBvAHAAZQ ByAHQA
  6968   aQBlAHMALg BSAGUAcwBv AHUAcgBjAG UAcwAAQ0IA ZQBnAGkAbg BuAGkAbgBn ACAARABvAE QARgBy
  6969   AGEAZwBtAG UAbgB0AFMA YwByAGkAcA B0AFQAYQBz AGsALgAgAA AzVQBwAGQA YQB0AGUAIA BJAEMA
  6970   TgAgAGEAbg BkACAATQBW AEkAIABzAH QAYQB0AHUA cwAAE0MATw BNAFAATABF AFQARQAuAA ADXAAA
  6971   A18AAB15AH kAeQB5AE0A TQBkAGQASA BIAG0AbQBz AHMAADVBAH IAYwBoAGkA dgBpAG4AZw AgAGkA
  6972   bgBwAHUAdA BFAHgAYwBl AGwAIAB0AG 8AIAA6ACAA AAU7ACAAAD dBAHIAYwBo AGkAdgBpAG 4AZwAg
  6973   AGIAYQBjAG sAdQBwAEUA eABjAGUAbA AgAHQAbwAg ADoAIAAAV0 UAUgBSAE8A UgA6ACAATQ BvAHYA
  6974   ZQBGAGkAbA BlAHMAVABv AEEAcgBjAG gAaQB2AGUA IAB0AGgAcg BlAHcAIABl AHgAYwBlAH AAdABp
  6975   AG8AbgA6AC AAAD1DAG8A bQBwAGwAZQ B0AGUAZAAg AE0AbwB2AG UARgBpAGwA ZQBzAFQAbw BBAHIA
  6976   YwBoAGkAdg BlADsAIAAA F1AAcgBvAG MAZQBzAHMA aQBuAGcAIA AAESAAIABy AG8AdwBzAD sAIAAA
  6977   WUUAUgBSAE 8AUgAgAHcA aQB0AGgAIA BsAGEAYgBS AGUAcABvAH IAdABEAGEA dABlACAAYw BvAG4A
  6978   dgBlAHIAcw BpAG8AbgAg AG8AbgAgAH IAbwB3ADoA IAAAEyAAIA BWAGEAbAB1 AGUAOgAgAA AZIABF
  6979   AHgAYwBlAH AAdABpAG8A bgA6ACAAAB lEAG8ARAAg AEYAcgBhAG cAIABFAFQA TAAAK0kAbg B2AGEA
  6980   bABpAGQAIA BFAEQASQBQ AEkAIABmAG 8AdQBuAGQA OgAgAAAjIA AgACAASQBD AE4AIAByAG UAdAB1
  6981   AHIAbgBlAG QAOgAgAAAN QQBkAGQAZQ BkACAAADsg AHIAbwB3AH MAIAB0AG8A IABkAG8AZA AgAGYA
  6982   cgBhAGcAIA BkAGEAdABh AHQAYQBiAG wAZQA7ACAA AFVFAFIAUg BPAFIAOgAg AEkAbgBzAG UAcgB0
  6983   AEYAcgBhAG cAUgBhAHcA RABhAHQAYQ AgAHQAaABy AGUAdwAgAG UAeABjAGUA cAB0AGkAbw BuADoA
  6984   IAAAO0MAbw BtAHAAbABl AHQAZQBkAC AASQBuAHMA ZQByAHQARg ByAGEAZwBS AGEAdwBEAG EAdABh
  6985   ADsAIAAAFV AAQQBUAEkA RQBOAFQAUw BTAE4AADFE AE8ARABfAE YAUgBBAEcA TQBFAE4AVA BfAFIA
  6986   QQBXAF8ARA BBAFQAQQBf AEkARAAAI0 8AUgBJAEcA SQBOAEEATA BJAE4AUABV AFQARABBAF QARQAA
  6987   D0MAUgBFAE EAVABFAEQA ABNDAFIARQ BBAFQARQBE AEIAWQAAD1 UAUABEAEEA VABFAEQAAB NVAFAA
  6988   RABBAFQARQ BEAEIAWQAA H0wAQQBCAF 8AUgBlAHAA bwByAHQAXw BEAEEAVABF AAAXUABBAF QASQBF
  6989   AE4AVABfAE kAQwBOAABN QgBlAGcAaQ BuACAASQBu AHMAZQByAH QAVQBwAGQA YQB0AGUAZA BFAHgA
  6990   YwBlAGwARg BpAGwAZQBU AG8ARABhAH QAYQBiAGEA cwBlAABVSQ BOAFMARQBS AFQAIABJAE 4AVABP
  6991   ACAAWwBFAE YAUgBdAC4A WwBEAE8ARA BfAEYAUgBB AEcATQBFAE 4AVABfAFIA QQBXAF8ARA BBAFQA
  6992   QQBdACAAAH EoAFsAUwBP AFUAUgBDAE UAXwBMAEEA QgBdACwAWw BGAEkATABF AF8ARABBAF QAQQBd
  6993   ACwAWwBPAF IASQBHAEkA TgBBAEwAXw BOAEEATQBF AF0ALABbAE MATwBOAFQA RQBOAFQAXw BUAFkA
  6994   UABFAF0AAF 0sAFsAQwBS AEUAQQBUAE UARABCAFkA XQAsAFsAQw BSAEUAQQBU AEUARABdAC wAWwBV
  6995   AFAARABBAF QARQBEAEIA WQBdACwAWw BVAFAARABB AFQARQBEAF 0AKQAgAAAR VgBBAEwAVQ BFAFMA
  6996   IAAoAAADJw ABDywAQABi AHkAdABlAH MAAAUsACcA AREsACcARQ BYAEMARQBM ACcAAScsAC cARABP
  6997   AEQAIABGAF IAQQBHAE0A RQBOAFQAIA BFAFQATAAn AAEVLABnAG UAdABkAGEA dABlACgAKQ AAFywA
  6998   ZwBlAHQAZA BhAHQAZQAo ACkAKQAADU AAYgB5AHQA ZQBzAAAVSQ BuAHMAZQBy AHQAZQBkAD oAIAAA
  6999   QyAAaQBuAH QAbwAgAGUA ZgByAC4AZA BvAGQAXwBm AHIAYQBnAG 0AZQBuAHQA XwByAGEAdw BfAGQA
  7000   YQB0AGEAOw AgAACA4XMA ZQBsAGUAYw B0ACAAdABv AHAAKAAxAC kAIABbAEQA TwBEAF8ARg BSAEEA
  7001   RwBNAEUATg BUAF8AUgBB AFcAXwBEAE EAVABBAF8A SQBEAF0AIA BmAHIAbwBt ACAARQBGAF IALgBE
  7002   AE8ARABfAE YAUgBBAEcA TQBFAE4AVA BfAFIAQQBX AF8ARABBAF QAQQAgAG8A cgBkAGUAcg AgAGIA
  7003   eQAgAFsARA BPAEQAXwBG AFIAQQBHAE 0ARQBOAFQA XwBSAEEAVw BfAEQAQQBU AEEAXwBJAE QAXQAg
  7004   AGQAZQBzAG MAADVkAG8A ZABfAGYAcg BhAGcAbQBl AG4AdABfAH IAYQB3AF8A ZABhAHQAYQ BfAGkA
  7005   ZAA6ACAAAF 9FAFIAUgBP AFIAOgAgAE kAbgBzAGUA cgB0AFUAcA BkAGEAdABl AGQARQB4AG MAZQBs
  7006   AEYAaQBsAG UAIAB0AGgA cgBlAHcAIA BlAHgAYwBl AHAAdABpAG 8AbgA6ACAA AClDAG8AcA B5AGkA
  7007   bgBnACAAaQ BuAHAAdQB0 ACAAZgBpAG wAZQA6ACAA ACMgAHQAbw AgAGIAYQBj AGsAdQBwAC AAZgBp
  7008   AGwAZQA6AC AAADdHAGUA dAAgAGgAYQ BuAGQAbABl ACAAbwBuAC AAYgBhAGMA awB1AHAAIA BmAGkA
  7009   bABlADsAIA AAK1IAZQBt AG8AdgBlAC AAaQBuAHYA YQBsAGkAZA AgAHIAbwB3 AHMAOwAgAA BjRQBS
  7010   AFIATwBSAD oAIABHAGUA bgBlAHIAYQ B0AGUAVQBw AGQAYQB0AG UAZABFAHgA YwBlAGwARg BpAGwA
  7011   ZQAgAHQAaA ByAGUAdwAg AGUAeABjAG UAcAB0AGkA bwBuADoAIA AASUMAbwBt AHAAbABlAH QAZQBk
  7012   ACAARwBlAG 4AZQByAGEA dABlAFUAcA BkAGEAdABl AGQARQB4AG MAZQBsAEYA aQBsAGUAOw AgAABd
  7013   UwB0AGEAcg B0AGkAbgBn ACAAaQBuAH MAZQByAHQA RABvAEQAXw BGAHIAYQBn AG0AZQBuAH QAXwBE
  7014   AGEAdABhAF 8AUgBlAGMA ZQBpAHYAZQ BfAEwAbwBn ADsAIAAAQU UARgBSAC4A RABvAEQAXw BGAFIA
  7015   QQBHAE0ARQ BOAFQAXwBE AEEAVABBAF 8AUgBFAEMA RQBJAFYARQ BMAE8ARwAA ByAAIAAgAA BpSQBu
  7016   AHMAZQByAH QAZQBkACAA cgBlAGMAbw ByAGQAcwAg AGkAbgB0AG 8AIABEAG8A RABfAEYAUg BBAEcA
  7017   TQBFAE4AVA BfAEQAQQBU AEEAXwBSAE UAQwBFAEkA VgBFAEwATw BHADsAIAAA WVUAUABEAE EAVABF
  7018   ACAAWwBFAE YAUgBdAC4A WwBEAG8ARA BfAEYAUgBB AEcATQBFAE 4AVABfAEQA QQBUAEEAXw BSAEUA
  7019   QwBFAEkAVg BFAEwATwBH AF0AIAAAO1 MARQBUACAA WwBMAEEAQg BfAFIAZQBw AG8AcgB0AF 8ARABB
  7020   AFQARQBdAC AAPQAgAG4A dQBsAGwAIA AAaVcASABF AFIARQAgAF sATABBAEIA XwBSAGUAcA BvAHIA
  7021   dABfAEQAQQ BUAEUAXQAg AD0AIAAnAD EAOQAwADAA LQAwADEALQ AwADEAIAAw ADAAOgAwAD AAOgAw
  7022   ADAALgAwAD AAMAAnACAA ARNVAHAAZA BhAHQAZQBk ADoAIAAATS AAaQBuACAA ZQBmAHIALg BEAG8A
  7023   RABfAEYAUg BBAEcATQBF AE4AVABfAE QAQQBUAEEA XwBSAEUAQw BFAEkAVgBF AEwATwBHAD sAIAAA
  7024   gIVFAFIAUg BPAFIAOgAg AGkAbgBzAG UAcgB0AEQA bwBEAF8ARg ByAGEAZwBt AGUAbgB0AF 8ARABh
  7025   AHQAYQBfAF IAZQBjAGUA aQB2AGUAXw BMAG8AZwBf AEUAbgB0AH IAeQAgAHQA aAByAGUAdw AgAGUA
  7026   eABjAGUAcA B0AGkAbwBu ADoAIAAAWU UAbgBkAGkA bgBnACAAaQ BuAHMAZQBy AHQARABvAE QAXwBG
  7027   AHIAYQBnAG 0AZQBuAHQA XwBEAGEAdA BhAF8AUgBl AGMAZQBpAH YAZQBfAEwA bwBnADsAIA AAR1MA
  7028   dABhAHIAdA BpAG4AZwAg AHMAZQB0AH UAcABDAG8A bgBuAGUAYw B0AGkAbwBu AFMAdAByAG kAbgBn
  7029   AHMAKAApAD sAIAAAGUQA YQB0AGEAIA BTAG8AdQBy AGMAZQA9AA AnVQBzAGUA cgA6ADoATA BvAGcA
  7030   ZwBpAG4AZw BTAGUAcgB2 AGUAcgAAIz sASQBuAGkA dABpAGEAbA AgAEMAYQB0 AGEAbABvAG cAPQAA
  7031   K1UAcwBlAH IAOgA6AEwA bwBnAGcAaQ BuAGcARABh AHQAYQBiAG EAcwBlAAAz OwBJAG4AdA BlAGcA
  7032   cgBhAHQAZQ BkACAAUwBl AGMAdQByAG kAdAB5AD0A VAByAHUAZQ AAQ2MAbwBu AG4AZQBjAH QAaQBv
  7033   AG4AUwB0AH IAaQBuAGcA UwB0AGEAZw BpAG4AZwBE AGEAdABhAG IAYQBzAGUA OgAgAAApVQ BzAGUA
  7034   cgA6ADoAUg BlAGcAaQBz AHQAcgB5AF MAZQByAHYA ZQByAAAtVQ BzAGUAcgA6 ADoAUgBlAG cAaQBz
  7035   AHQAcgB5AE QAYQB0AGEA YgBhAHMAZQ AARWMAbwBu AG4AZQBjAH QAaQBvAG4A UwB0AHIAaQ BuAGcA
  7036   UgBlAGcAaQ BzAHQAcgB5 AEQAYQB0AG EAYgBhAHMA ZQA6ACAAAD 9TAHQAYQBy AHQAaQBuAG cAIABs
  7037   AG8AYQBkAE kAbgBwAHUA dABFAHgAYw BlAGwARABh AHQAYQAoAC kAOwAgAAAT ZgBpAGwAZQ BOAGEA
  7038   bQBlADIAAC lVAHMAaQBu AGcAIABwAG EAYwBrAGEA ZwBlACAAZg BpAGwAZQA6 ACAAAEFDAG 8AbAB1
  7039   AG0AbgBzAC AAaQBuACAA aQBuAHAAdQ B0AEUAeABj AGUAbABEAG EAdABhACAA ZgBpAGwAZQ A6ACAA
  7040   AFVFAFIAUg BPAFIAOgAg AE4AbwAgAE MAbwBsAHUA bQBuAHMAIA BpAG4AIABp AG4AcAB1AH QARQB4
  7041   AGMAZQBsAE QAYQB0AGEA IABmAGkAbA BlADsAIAAA V0UAUgBSAE 8AUgA6ACAA bABvAGEAZA BJAG4A
  7042   cAB1AHQARQ B4AGMAZQBs AEQAYQB0AG EAIAB0AGgA cgBlAHcAIA BlAHgAYwBl AHAAdABpAG 8AbgA6
  7043   ACAAAEVTAH QAYQByAHQA aQBuAGcAIA BzAGUAdABS AGEAdwBFAG QAaQBwAGkA cwBGAHIAbw BtAEkA
  7044   bgBwAHUAdA AoACkAOwAg AAAXcgBhAH cARQBkAGkA cABpAHMAOg AgAAAVUgBv AHcAQwBvAH UAbgB0
  7045   ADoAIAAAN0 UAUgBSAE8A UgA6ACAATg BvACAAcgBh AHcARQBkAG kAcABpAHMA IABmAG8AdQ BuAGQA
  7046   LgAgAABdRQ BSAFIATwBS ADoAIABzAG UAdABSAGEA dwBFAGQAaQ BwAGkAcwBG AHIAbwBtAE kAbgBw
  7047   AHUAdAAgAH QAaAByAGUA dwAgAGUAeA BjAGUAcAB0 AGkAbwBuAD oAIAAAL1MA dABhAHIAdA BpAG4A
  7048   ZwAgAHMAZQ B0AEMAbwBs AHUAbQBuAH MAKAApADsA IAAAB0oAUA BDAAAHRQBN AEYAAAlVAF MAQQBG
  7049   AACAhUUAUg BSAE8AUgA6 ACAAQwBvAH UAbABkACAA bgBvAHQAIA BkAGUAdABl AHIAbQBpAG 4AZQAg
  7050   AGkAbgBwAH UAdAAgAGYA aQBsAGUAIA B0AHkAcABl ACAAZAB1AG UAIAB0AG8A IABmAGkAbA BlAG4A
  7051   YQBtAGUAIA BpAHMAcwB1 AGUAOwAgAA AdRQBEAEkA UABJACAAYw BvAGwAdQBt AG4AOgAgAA A9RQBS
  7052   AFIATwBSAD oAIABFAEQA SQBQAEkAIA BjAG8AbAB1 AG0AbgAgAG 4AbwB0ACAA ZgBvAHUAbg BkADsA
  7053   AC1MAGEAYg BSAGUAcABv AHIAdABEAG EAdABlACAA YwBvAGwAdQ BtAG4AOgAg AABNRQBSAF IATwBS
  7054   ADoAIABMAG EAYgBSAGUA cABvAHIAdA BEAGEAdABl ACAAYwBvAG wAdQBtAG4A IABuAG8AdA AgAGYA
  7055   bwB1AG4AZA A7AAAZcwBz AG4AIABjAG 8AbAB1AG0A bgA6ACAAAD 1XAEEAUgBO AEkATgBHAD oAIABz
  7056   AHMAbgAgAG MAbwBsAHUA bQBuACAAbg BvAHQAIABm AG8AdQBuAG QAOwAAT0UA UgBSAE8AUg A6ACAA
  7057   cwBlAHQARQ BkAGkAcABp AEMAbwBsAH UAbQBuACAA dABoAHIAZQ B3ACAAZQB4 AGMAZQBwAH QAaQBv
  7058   AG4AOgAgAA BHUwB0AGEA cgB0ACAAcg B1AG4AbgBp AG4AZwAgAE MAUgBTAF8A TQBWAEkAIA BzAGMA
  7059   cgBpAHAAdA AgAHQAYQBz AGsAOwAgAA BNRQBSAFIA TwBSADoAIA BGAGEAaQBs AHUAcgBlAC AAcgB1
  7060   AG4AbgBpAG 4AZwAgAGMA aABpAGwAZA AgAHAAYQBj AGsAYQBnAG UALgAgAABZ RQBSAFIATw BSADoA
  7061   IABFAHgAYw BlAHAAdABp AG8AbgAgAG kAbgAgAGUA eABlAGMAdQ B0AGUAQwBS AFMATQBWAE kAUABh
  7062   AGMAawBhAG cAZQAoACkA OgAgAABPQw BvAG0AcABs AGUAdABlAG QAIAByAHUA bgBuAGkAbg BnACAA
  7063   QwBSAFMAXw BNAFYASQAg AHMAYwByAG kAcAB0ACAA dABhAHMAaw A7ACAAABVf AG8AcgBpAG cAaQBu
  7064   AGEAbABfAA AbUwBvAHUA cgBjAGUAIA BGAGkAbABl ADoAIAAAHz sAIABCAGEA YwBrAHUAcA AgAEYA
  7065   aQBsAGUAOg AgAABpRQBS AFIATwBSAD oAIABnAGUA bgBlAHIAYQ B0AGUATwB1 AHQAcAB1AH QARQB4
  7066   AGMAZQBsAE YAaQBsAGUA TgBhAG0AZQ AgAHQAaABy AGUAdwAgAG UAeABjAGUA cAB0AGkAbw BuADoA
  7067   IAAAgI1zAG UAbABlAGMA dAAgAFAAYQ B0AGkAZQBu AHQAXwBFAG QAaQBwAGkA LAAgAE0AVg BJAF8A
  7068   UABBAFQASQ BFAE4AVABf AEkAQwBOAF 8ATgBJAF8A RABPAEQAIA BmAHIAbwBt ACAAZQB0AG wAXwBj
  7069   AHIAcwBfAG 0AdgBpAF8A cABhAHQAaQ BlAG4AdAAg AAA1dwBoAG UAcgBlACAA TQBWAEkAXw BSAGUA
  7070   cwBwAG8Abg BzAGUAIAA9 ACAAJwBPAE sAJwAgAAE7 YQBuAGQAIA BjAHIAZQBh AHQAZQBkAG IAeQAg
  7071   AD0AIAAnAE QAbwBEAEYA cgBhAGcARQ BUAEwAJwAg AAEtYQBuAG QAIABSAFUA TgBfAEkARA BFAE4A
  7072   VABJAEYASQ BFAFIAIAA9 ACAAJwABBS cAIAABTWEA bgBkACAATQ BWAEkAXwBQ AEEAVABJAE UATgBU
  7073   AF8ASQBDAE 4AXwBOAEkA XwBEAE8ARA AgAGkAcwAg AG4AbwB0AC AAbgB1AGwA bAAAG1AAYQ B0AGkA
  7074   ZQBuAHQAXw BFAGQAaQBw AGkAAC1NAF YASQBfAFAA QQBUAEkARQ BOAFQAXwBJ AEMATgBfAE 4ASQBf
  7075   AEQATwBEAA AhIwAgAHYA YQBsAGkAZA AgAGUAZABp AHAAaQBzAD oAIAAANVcA QQBSAE4ASQ BOAEcA
  7076   OgAgAE4ATw AgAFYAQQBM AEkARAAgAE UARABJAFAA SQBTADsAIA AAX0UAUgBS AE8AUgA6AC AAcgBl
  7077   AHQAcgBpAG UAdgBlAEQA YQB0AGEAYg BhAHMAZQBF AGQAaQBwAG kAcwAgAHQA aAByAGUAdw AgAGUA
  7078   eABjAGUAcA B0AGkAbwBu ADoAIAAAUV MAdABhAHIA dABpAG4AZw AgAGkAbgBz AGUAcgB0AF IAYQB3
  7079   AEUAZABpAH AAaQBzAEkA bgB0AG8ARA BhAHQAYQBi AGEAcwBlAC gAKQA7ACAA AEFJAE4AUw BFAFIA
  7080   VAAgAEkATg BUAE8AIABF AFQATABfAE MAUgBTAF8A TQBWAEkAXw BQAGEAdABp AGUAbgB0AC AAAEUo
  7081   AFsAUABBAF QASQBFAE4A VABfAEUARA BJAFAASQBd ACwAWwBSAF UATgBfAEkA RABFAE4AVA BJAEYA
  7082   SQBFAFIAXQ AsAABXWwBD AFIARQBBAF QARQBEAF0A LABbAEMAUg BFAEEAVABF AEQAQgBZAF 0ALABb
  7083   AFUAUABEAE EAVABFAEQA XQAsAFsAVQ BQAEQAQQBU AEUARABCAF kAXQAABSkA IAAAIVYAQQ BMAFUA
  7084   RQBTACAAKA BAAGUAZABp AHAAaQAsAC AAAGknACwA IABnAGUAdA BkAGEAdABl ACgAKQAsAC AAJwBE
  7085   AG8ARABGAH IAYQBnAEUA VABMACcALA AgAGcAZQB0 AGQAYQB0AG UAKAApACwA IAAnAEQAbw BEAEYA
  7086   cgBhAGcARQ BUAEwAJwAp AAEnSQBuAH MAZQByAHQA IABlAGQAaQ BwAGkAcwAg AHMAcQBsAD oAIAAA
  7087   DUAAZQBkAG kAcABpAAA3 RgBpAG4AaQ BzAGgAZQBk ACAAaQBuAH MAZQByAHQA aQBuAGcAIA BlAGQA
  7088   aQBwAGkAcw A6ACAAAGNF AFIAUgBPAF IAOgAgAEUA eABjAGUAcA B0AGkAbwBu ACAAdwByAG kAdABp
  7089   AG4AZwAgAG UAZABpAHAA aQBzACAAdA BvACAAdABo AGUAIABkAG EAdABhAGIA YQBzAGUAOg AgAAA5
  7090   UwB0AGEAcg B0AGkAbgBn ACAAcwBlAH QAQwBvAG4A ZgBpAGcAVg BhAGwAdQBl AHMAKAApAD sAIAAA
  7091   gJVzAGUAbA BlAGMAdAAg AFsATgBBAE 0ARQBdACwA IABbAHYAYQ BsAHUAZQBd ACAAZgByAG 8AbQAg
  7092   AEMAUgBTAF 8AUwBFAFQA VABJAE4ARw BTACAAdwBo AGUAcgBlAC AAWwBOAEEA TQBFAF0AIA BsAGkA
  7093   awBlACAAKA AnAEUAZgBy AEQAbwBEAE YAcgBhAGcA JQAnACkAAS VFAGYAcgBE AG8ARABGAH IAYQBn
  7094   AFQAZQBzAH QATQBvAGQA ZQAACXQAcg B1AGUAADlF AGYAcgBEAG 8ARABGAHIA YQBnAEwAbw BnAEEA
  7095   bABsAFQAcg BhAG4AcwBh AGMAdABpAG 8AbgBzAAAv RQBmAHIARA BvAEQARgBy AGEAZwBDAH IAcwBN
  7096   AHYAaQBFAH QAbABOAGEA bQBlAAAzRQ BmAHIARABv AEQARgByAG EAZwBFAGQA aQBwAGkAQw BvAGwA
  7097   dQBtAG4ATg BhAG0AZQAA O0UAZgByAE QAbwBEAEYA cgBhAGcATA BhAGIAUgBl AHAAbwByAH QAQwBv
  7098   AGwAdQBtAG 4ATgBhAG0A ZQAAL0UAZg ByAEQAbwBE AEYAcgBhAG cAUwBzAG4A QwBvAGwAdQ BtAG4A
  7099   TgBhAG0AZQ AAL0UAZgBy AEQAbwBEAE YAcgBhAGcA QQByAGMAaA BpAHYAZQBG AG8AbABkAG UAcgAA
  7100   K0UAZgByAE QAbwBEAEYA cgBhAGcASg BwAGMASwBl AHkARgBpAG UAbABkAAAt RQBmAHIARA BvAEQA
  7101   RgByAGEAZw BVAHMAYQBm AEsAZQB5AE YAaQBlAGwA ZAAAK0UAZg ByAEQAbwBE AEYAcgBhAG cARQBt
  7102   AGYASwBlAH kARgBpAGUA bABkAAAzRQ BmAHIARABv AEQARgByAG EAZwBKAHAA YwBMAGEAYg BEAGEA
  7103   dABlAEYAaQ BlAGwAZAAA NUUAZgByAE QAbwBEAEYA cgBhAGcAVQ BzAGEAZgBM AGEAYgBEAG EAdABl
  7104   AEYAaQBlAG wAZAAAM0UA ZgByAEQAbw BEAEYAcgBh AGcARQBtAG YATABhAGIA RABhAHQAZQ BGAGkA
  7105   ZQBsAGQAAE 1EAHQAcwAu AFYAYQByAG kAYQBiAGwA ZQBzAFsAVQ BzAGUAcgA6 ADoAZgBpAG wAZQBO
  7106   AGEAbQBlAD IAXQAuAFYA YQBsAHUAZQ A6ACAAAB9V AHMAZQByAD oAOgBmAGkA bABlAE4AYQ BtAGUA
  7107   MgAAPUUAZg ByAEQAbwBE AEYAcgBhAG cATABvAGcA QQBsAGwAVA ByAGEAbgBz AGEAYwB0AG kAbwBu
  7108   AHMAOgAgAA AzRQBmAHIA RABvAEQARg ByAGEAZwBD AHIAcwBNAH YAaQBFAHQA bABOAGEAbQ BlADoA
  7109   IAAAN0UAZg ByAEQAbwBE AEYAcgBhAG cARQBkAGkA cABpAEMAbw BsAHUAbQBu AE4AYQBtAG UAOgAg
  7110   AAA/ZQBmAH IARABvAEQA RgByAGEAZw BMAGEAYgBS AGUAcABvAH IAdABDAG8A bAB1AG0Abg BOAGEA
  7111   bQBlADoAIA AAM2UAZgBy AEQAbwBEAE YAcgBhAGcA UwBzAG4AQw BvAGwAdQBt AG4ATgBhAG 0AZQA6
  7112   ACAAADNlAG YAcgBEAG8A RABGAHIAYQ BnAEEAcgBj AGgAaQB2AG UARgBvAGwA ZABlAHIAOg AgAAAv
  7113   RQBmAHIARA BvAEQARgBy AGEAZwBKAH AAYwBLAGUA eQBGAGkAZQ BsAGQAOgAg AAAxRQBmAH IARABv
  7114   AEQARgByAG EAZwBVAHMA YQBmAEsAZQ B5AEYAaQBl AGwAZAA6AC AAAC9FAGYA cgBEAG8ARA BGAHIA
  7115   YQBnAEUAbQ BmAEsAZQB5 AEYAaQBlAG wAZAA6ACAA ADdFAGYAcg BEAG8ARABG AHIAYQBnAE oAcABj
  7116   AEwAYQBiAE QAYQB0AGUA RgBpAGUAbA BkADoAIAAA OUUAZgByAE QAbwBEAEYA cgBhAGcAVQ BzAGEA
  7117   ZgBMAGEAYg BEAGEAdABl AEYAaQBlAG wAZAA6ACAA ADdFAGYAcg BEAG8ARABG AHIAYQBnAE UAbQBm
  7118   AEwAYQBiAE QAYQB0AGUA RgBpAGUAbA BkADoAIAAA EWcAdQBpAG QASQBkADoA IAAAO0UAcg ByAG8A
  7119   cgAgAGcAZQ B0AHQAaQBu AGcAIABjAG 8AbgBmAGkA ZwAgAHYAYQ BsAHUAZQBz ADoAIAAAgU 1JAE4A
  7120   UwBFAFIAVA AgAEkATgBU AE8AIABFAF QATABfAEUA cgByAG8Acg BMAG8AZwBz ACAAKABQAG EAYwBr
  7121   AGEAZwBlAE kARAAsACAA UAByAG8AYw BlAHMAcwBJ AEQALAAgAE UAcgByAG8A cgBOAHUAbQ BiAGUA
  7122   cgAsACAARQ ByAHIAbwBy AEQAZQBzAG MAcgBpAHAA dABpAG8Abg AsACAARQBy AHIAbwByAF QAaQBt
  7123   AGUAKQAgAF YAQQBMAFUA RQBTACAAKA BAAFAAYQBj AGsAYQBnAG UASQBEACwA IABAAFAAcg BvAGMA
  7124   ZQBzAHMASQ BEACwAIABA AEUAcgByAG 8AcgBOAHUA bQBiAGUAcg AsACAAQABF AHIAcgBvAH IARABl
  7125   AHMAYwByAG kAcAB0AGkA bwBuACwAIA BnAGUAdABk AGEAdABlAC gAKQApAAAV QABQAGEAYw BrAGEA
  7126   ZwBlAEkARA AAFUAAUABy AG8AYwBlAH MAcwBJAEQA ABlAAEUAcg ByAG8AcgBO AHUAbQBiAG UAcgAA
  7127   I0AARQByAH IAbwByAEQA ZQBzAGMAcg BpAHAAdABp AG8AbgAAJU QAbwBEACAA RgByAGEAZw BtAGUA
  7128   bgB0ACAARQ BUAEwAOgAg AAAAAACNvQ sMZevxQYSR 14oUjkcYAA i3elxWGTTg iQiJhF3NgI DMkQMG
  7129   EiwDBhIhAg YIAgYOAwYS JQcgAwESLA gIBCAAEiED IAAIAyAADg MgAAIEIAEB DgQgAQEIBC AAEiUF
  7130   IAEBEiUDIA ABBAABAg4E IAEIDgQgAQ 4ICCADEiES LAgIBAABDg gEAAEIDgUA Ag4ICAgABQ 4OCAgI
  7131   CAQoABIhAy gACAMoAA4D KAACBCgAEi UDBhIpBiAC ARIsCAQgAQ ECAyAADQQg AQENAygADQ QmAFAA
  7132   BCYATgAEJg BBAAQmAFoA BCYARgAEJg BEAAQmAFQA AwYSEAYGFR EtAQIFIAEB EiEEIAASEA UgAQ4S
  7133   EAQoABIQcm gAdAB0AHAA OgAvAC8Acw BjAGgAZQBt AGEAcwAuAG 8AcABlAG4A eABtAGwAZg BvAHIA
  7134   bQBhAHQAcw AuAG8AcgBn AC8AcwBwAH IAZQBhAGQA cwBoAGUAZQ B0AG0AbAAv ADIAMAAwAD YALwBt
  7135   AGEAaQBuAI CGaAB0AHQA cAA6AC8ALw BzAGMAaABl AG0AYQBzAC 4AbwBwAGUA bgB4AG0AbA BmAG8A
  7136   cgBtAGEAdA BzAC4AbwBy AGcALwBvAG YAZgBpAGMA ZQBEAG8AYw B1AG0AZQBu AHQALwAyAD AAMAA2
  7137   AC8AcgBlAG wAYQB0AGkA bwBuAHMAaA BpAHAAcwAI Mb84Vq02Tj UDBhIxAwYS KAUgAQESNQ cgAgES
  7138   NRI1AgYCBC AAEjEEIAAS KAcgAwESOQ 4OByACEiUS JQ4HAAMBEi EODgYAAgES IQ4HIAIBEi USOQYg
  7139   ARI5EiUEKA ASMQQoABIo BCAAEj0EKA ASPQMGESQE AAAAAAQBAA AABAIAAAAD BhIYAwYSOQ MGEjAD
  7140   BhI4BSABAR IYBCAAEjAE IAASQQQgAB I5BSABARI5 BCAAEjgEIA ARJAUgAQER JAQoABIwBC gAEkEE
  7141   KAASOQQoAB I4BCgAESQS YwBvAGwATg B1AG0AYgBl AHIAAwYSNA MGEhQLIAYB EhgODhIlCA IEIAAS
  7142   KQQgABI0BC AAEhQGIAIS CAgIBSABEh wIBSABEgwI ByACARIIEg gIIAMBEggS CA4FIAIBCA IEKAAS
  7143   KQQoABI0BC gAEhQIBhUS RQIIEiwDBh I9BCAAEkkF IAESLA4FIA ESLAgGIAIS LA4OBSgBEi wIBSgB
  7144   EiwOBSABAR IsgI5oAHQA dABwADoALw AvAHMAYwBo AGUAbQBhAH MALgBvAHAA ZQBuAHgAbQ BsAGYA
  7145   bwByAG0AYQ B0AHMALgBv AHIAZwAvAH AAYQBjAGsA YQBnAGUALw AyADAAMAA2 AC8AbQBlAH QAYQBk
  7146   AGEAdABhAC 8AYwBvAHIA ZQAtAHAAcg BvAHAAZQBy AHQAaQBlAH MAgJJoAHQA dABwADoALw AvAHMA
  7147   YwBoAGUAbQ BhAHMALgBv AHAAZQBuAH gAbQBsAGYA bwByAG0AYQ B0AHMALgBv AHIAZwAvAG 8AZgBm
  7148   AGkAYwBlAE QAbwBjAHUA bQBlAG4AdA AvADIAMAAw ADYALwBlAH gAdABlAG4A ZABlAGQALQ BwAHIA
  7149   bwBwAGUAcg B0AGkAZQBz AICOaAB0AH QAcAA6AC8A LwBzAGMAaA BlAG0AYQBz AC4AbwBwAG UAbgB4
  7150   AG0AbABmAG 8AcgBtAGEA dABzAC4Abw ByAGcALwBv AGYAZgBpAG MAZQBEAG8A YwB1AG0AZQ BuAHQA
  7151   LwAyADAAMA A2AC8AYwB1 AHMAdABvAG 0ALQBwAHIA bwBwAGUAcg B0AGkAZQBz AEBoAHQAdA BwADoA
  7152   LwAvAHAAdQ ByAGwALgBv AHIAZwAvAG QAYwAvAGUA bABlAG0AZQ BuAHQAcwAv ADEALgAxAC 8AMmgA
  7153   dAB0AHAAOg AvAC8AcAB1 AHIAbAAuAG 8AcgBnAC8A ZABjAC8AdA BlAHIAbQBz AC8AOGgAdA B0AHAA
  7154   OgAvAC8AcA B1AHIAbAAu AG8AcgBnAC 8AZABjAC8A ZABjAG0AaQ B0AHkAcABl AC8AUmgAdA B0AHAA
  7155   OgAvAC8Adw B3AHcALgB3 ADMALgBvAH IAZwAvADIA MAAwADEALw BYAE0ATABT AGMAaABlAG 0AYQAt
  7156   AGkAbgBzAH QAYQBuAGMA ZQCAiGgAdA B0AHAAOgAv AC8AcwBjAG gAZQBtAGEA cwAuAG8AcA BlAG4A
  7157   eABtAGwAZg BvAHIAbQBh AHQAcwAuAG 8AcgBnAC8A bwBmAGYAaQ BjAGUARABv AGMAdQBtAG UAbgB0
  7158   AC8AMgAwAD AANgAvAGQA bwBjAFAAcg BvAHAAcwBW AFQAeQBwAG UAcwAFIAIO Dg4GIAMBDg 4OBCAB
  7159   Dg4FIAIBDg 4DBhJNAwYS UQQAABJNBA AAElEFAAEB ElEECAASTQ QIABJRAwYS QAQAABJABA gAEkAD
  7160   BhFMBgYVEl UBDgcGFRJF Ag4OAwYSNQ MGEVkEAAAS XQUgAQESXQ MGEUgEAwAA AAMGEmEFIA EBEmEL
  7161   IAcCEmUIDg 4OCA4NIAgB EmUIDg4OCA 4QAgsgBwES ZQgODg4IDg cgAhI9DhIp BSAAEoCdBi ABEoCh
  7162   DgUAAgIODg gHAwISPRKA oQYgAhIhDg 4GIAESPRI9 BSABEj0OCC ABEoChEoCh CwcEEj0SgK ESgKEI
  7163   BgcCDhKAoQ UHARKAoQQH AggOBwACAh IlEiUFAAIO DhwGIAISPQ 4OBiABEoC1 DgwHBQ4SPR KAoQ4S
  7164   gLUIIAISPR I9Ej0IIAMS gKEODg4LIA MSgLUSJRGA uQ4QBwcSPR I9DhIhEoCh EoC1Dg0HBR I9EoCh
  7165   EoChDhI9BA cBEiEEBwES PQQgAQIOCA cCEoC9EoC9 CCACEoDBDh IpCgcECBI9 EiESgMEFIA ESPQgI
  7166   BwMOEoDBEj 0GBwISIRI9 AyAAHBQHCR IhEj0SPRKA wRI9Ej0IEk kSCQQAAQgI BAABDQgFAA IODg4H
  7167   BwUIAwgIAw QgAB0DBAAB AgMFIAIOCA gSBw4ICAID DggIAwgdAw gdAwgICQcG CAIDDh0DCA QHAggI
  7168   ByACAQ4RgM kGIAEdDh0D GQcQDhKAvR KAvQ4OHQMI CA4ICA4IHQ MdDggGIAEB EoDRBSAAEo DBGgcM
  7169   EoDNEj0SPR KAoRKAoRI9 AhI9CAgSSR IJBAcCAg4E BwINDgYAAw 4OHBwFFREt AQIFIAEBEw AEIAAT
  7170   AAYAAw4ODg 4DBwEOCwAD EjEOEYDdEY DhByACAQ4R gOUHIAISQR IlDgQHARIl ByACAQ4SgJ kFIAES
  7171   NQ4FBwESgJ kFAAEOHQ4J BwMSgOkSNR 0OBiABEkES JQYgARKA7Q 4KIAAVEoDx ARKAtQgVEo DxARKA
  7172   tQgAAhIlEi USJREHBBIl EkESgLUVEo DxARKAtQsg AhKA+RGA3R GA4QYgAQES gPkEBwESQQ UgABKA
  7173   +QYHAhI5Ek ENBwYSPRI9 Ej0IEkkSCQ QAAQ0OBQcB EoDNBSABAh IlBiABARKB AQ8HBhJBEi ESIRIh
  7174   EiESgP0JBw MSQRIhEoD9 GQcLEkESIR IhEiESIRIh EiESIRIhEi ESgP0KBwQR JBI9EoChDg cHAxIh
  7175   DhEkBSAAEo DtBgABEYEJ DhUHBhIlEo C1EiwVEoDx ARKAtRJJEg kHBwISPRKA oQYHAwgSIQ 4RBwoS
  7176   IQ4IEj0ICA gSCBJJEgkP BwYSPRI9Eo ChEj0SPRI9 GwcPEiESPQ gSgMEIEj0I CAgICBKAwR I9EkkS
  7177   CRgHDRI9Eo DBCAgSPQgI CAgSgMESPR JJEgkGAAMO HBwcDwcGEj 0SgKEOEoC1 EiUSQRYHCh I9EoCh
  7178   Ej0SgKEOCB JJEkkSCRIJ CyACEoChEo ChEoChGQcN CBI9CAgSPR KAoQgOEoCh EkkSSRIJEg kPBwgO
  7179   Ej0IEj0OEj 0SSRIJDAcG CA4SPQ4SPR KAwQkBAARJ dGVtAAAHFR JFAggSLAcg AgETABMBFw cMEoDN
  7180   CBI9Dg4IAh I9EoC1EiUS SRIJCyAAFR KBFQITABMB CBUSgRUCCB IsCyAAFRGB GQITABMBCB URgRkC
  7181   CBIsBiADDg 4ODh4HDggS PRKAoQgSJR JBEoD9EjkS gLUSIRIsCB JJEgkMBwUS ORIhEiESIR IhBiAB
  7182   EwETAAUgAQ ITAAgHAxIs Ej0SPQQgAB MBDgcDEiwS LBURgRkCCB IsCAcDEiwS SRIJBgcDDg 4SPQcg
  7183   AxIhDg4OBw cEDhI9Dg4F BwIOEj0WBw sOEj0SPQgS PRKAoQgSIR IhEkkSCQgA ARKBIRGBJQ UgABKB
  7184   KQcgAgEOEo EpBAcBEk0G IAEBEYExCA EAAgAAAAAA AwAAAQQgAB JhBAABDg4F AAARgUEHAA QODg4O
  7185   DgUAAgEODg kHAw4SgJkR gUEFFRJVAQ 4GFRJFAg4O CCACAhMAEB MBBwACDQ4S gUkGAAERgU ENBiAD
  7186   AQgICAUgAB KBTQcgARKB UR0cIwcRDg 4OFRJVAQ4S XRGBQRIYEi wIEoCZEoCZ Dh0OHRwOHQ 4IBSAA
  7187   EoFZCSACEo FdDhKBIQQH ARJdBgABEo FhDgMgAAoH IAMIHQUICA UgABKBcQcg AhKBdQ4cBi ABARGB
  7188   fQYgAQESgW kEAAEIHAQA AQEIFwcKAg 4SgWEdBRKB aQ4SgW0IEo FtEoCZBgAD AQ4OAhEHCg 4OCA4S
  7189   GBIsCBKAmQ 4dDgUgABKB jQcgAhKBkQ 4OFQcJEoGJ HBKBaQ4SgW 0IEoCZEkkS CQUgABKBlQ YgARKB
  7190   mRwIBwMSGA gSgJkMBwgO DggIAggSgJ kIBwcDDggS gJkMIAUSga EODg4OEoGl EiAFEYGtEo GxEoGV
  7191   EoGlEoG1HA 4HBQ4SgaES gZ0SUBKAmR UHCg4OCBKA mR0OEYFBHQ 4RgUEOHQ4F IAASgbkRBw cCEoFp
  7192   DhKBbRKBuR KAmQgJIAAV EYHBARMABh URgcEBDgUg ABKAmRQHBw 4IEoFpEoFt DhKAmRURgc EBDgcg
  7193   AgEOEoFpBi ABARKBbQUg AQgSXQQgAR wIBQABDh0c GwcLEoFpDh JdEoFtEoHJ EoFREoCZEk kSCRwd
  7194   HAgHAhKBaR KBbQQAABFZ BSAAEoHRCC AFAggODg4I CiAGAQgODg 4IEAIIIAUB CA4ODghJAQ AaLk5F
  7195   VEZyYW1ld2 9yayxWZXJz aW9uPXY0Lj YBAFQOFEZy YW1ld29ya0 Rpc3BsYXlO YW1lEi5ORV QgRnJh
  7196   bWV3b3JrID QuNi8BACpT VF9mY2U2OD YzY2Q4Yzk0 MTg3YjdiZD I1MjgxMzA2 MzRlMS5jc3 Byb2oA
  7197   AAUBAAAAAC MBAB5EZXBh cnRtZW50IG 9mIFZldGVy YW5zIEFmZm FpcnMAADQB AC9Db3B5cm lnaHQg
  7198   QCBEZXBhcn RtZW50IG9m IFZldGVyYW 5zIEFmZmFp cnMgMjAxNA AACAEACAAA AAAAHgEAAQ BUAhZX
  7199   cmFwTm9uRX hjZXB0aW9u VGhyb3dzAQ AAALA1AQAA AAAAAAAAAM 41AQAAIAAA AAAAAAAAAA AAAAAA
  7200   AAAAAAAAAA DANQEAAAAA AAAAAAAAAA AAAABfQ29y RGxsTWFpbg Btc2NvcmVl LmRsbAAAAA AA/yUA
  7201   IAAQAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AQAQAAAAGA AAgAAA
  7202   AAAAAAAAAA AAAAAAAQAB AAAAMAAAgA AAAAAAAAAA AAAAAAAAAQ AAAAAASAAA AFhAAQCMBA AAAAAA
  7203   AAAAAACMBD QAAABWAFMA XwBWAEUAUg BTAEkATwBO AF8ASQBOAE YATwAAAAAA vQTv/gAAAQ AAAAEA
  7204   ZkyfFwAAAQ BmTJ8XPwAA AAAAAAAEAA AAAgAAAAAA AAAAAAAAAA AAAEQAAAAB AFYAYQByAE YAaQBs
  7205   AGUASQBuAG YAbwAAAAAA JAAEAAAAVA ByAGEAbgBz AGwAYQB0AG kAbwBuAAAA AAAAALAE7A MAAAEA
  7206   UwB0AHIAaQ BuAGcARgBp AGwAZQBJAG 4AZgBvAAAA yAMAAAEAMA AwADAAMAAw ADQAYgAwAA AAYAAf
  7207   AAEAQwBvAG 0AcABhAG4A eQBOAGEAbQ BlAAAAAABE AGUAcABhAH IAdABtAGUA bgB0ACAAbw BmACAA
  7208   VgBlAHQAZQ ByAGEAbgBz ACAAQQBmAG YAYQBpAHIA cwAAAAAAgA ArAAEARgBp AGwAZQBEAG UAcwBj
  7209   AHIAaQBwAH QAaQBvAG4A AAAAAFMAVA BfAGYAYwBl ADYAOAA2AD MAYwBkADgA YwA5ADQAMQ A4ADcA
  7210   YgA3AGIAZA AyADUAMgA4 ADEAMwAwAD YAMwA0AGUA MQAuAGMAcw BwAHIAbwBq AAAAAABAAA 8AAQBG
  7211   AGkAbABlAF YAZQByAHMA aQBvAG4AAA AAADEALgAw AC4ANgAwAD QANwAuADEA OQA1ADUAOA AAAAAA
  7212   gAAvAAEASQ BuAHQAZQBy AG4AYQBsAE 4AYQBtAGUA AABTAFQAXw BmAGMAZQA2 ADgANgAzAG MAZAA4
  7213   AGMAOQA0AD EAOAA3AGIA NwBiAGQAMg A1ADIAOAAx ADMAMAA2AD MANABlADEA LgBjAHMAcA ByAG8A
  7214   agAuAGQAbA BsAAAAAACE ADAAAQBMAG UAZwBhAGwA QwBvAHAAeQ ByAGkAZwBo AHQAAABDAG 8AcAB5
  7215   AHIAaQBnAG gAdAAgAEAA IABEAGUAcA BhAHIAdABt AGUAbgB0AC AAbwBmACAA VgBlAHQAZQ ByAGEA
  7216   bgBzACAAQQ BmAGYAYQBp AHIAcwAgAD IAMAAxADQA AACIAC8AAQ BPAHIAaQBn AGkAbgBhAG wARgBp
  7217   AGwAZQBuAG EAbQBlAAAA UwBUAF8AZg BjAGUANgA4 ADYAMwBjAG QAOABjADkA NAAxADgANw BiADcA
  7218   YgBkADIANQ AyADgAMQAz ADAANgAzAD QAZQAxAC4A YwBzAHAAcg BvAGoALgBk AGwAbAAAAA AAeAAr
  7219   AAEAUAByAG 8AZAB1AGMA dABOAGEAbQ BlAAAAAABT AFQAXwBmAG MAZQA2ADgA NgAzAGMAZA A4AGMA
  7220   OQA0ADEAOA A3AGIANwBi AGQAMgA1AD IAOAAxADMA MAA2ADMANA BlADEALgBj AHMAcAByAG 8AagAA
  7221   AAAARAAPAA EAUAByAG8A ZAB1AGMAdA BWAGUAcgBz AGkAbwBuAA AAMQAuADAA LgA2ADAANA A3AC4A
  7222   MQA5ADUANQ A4AAAAAABI AA8AAQBBAH MAcwBlAG0A YgBsAHkAIA BWAGUAcgBz AGkAbwBuAA AAMQAu
  7223   ADAALgA2AD AANAA3AC4A MQA5ADUANQ A4AAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7224   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7225   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7226   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7227   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7228   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAw AQAMAAAA4D UAAAAAAAAA AAAAAAAAAA AAAAAA
  7229   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7230   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7231   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7232   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7233   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7234   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7235   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7236   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA
  7237   AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA AAAAAA</Bi naryItem>
  7238                    </Sc riptProjec t>
  7239                  </DTS: ObjectData >
  7240                </DTS:Ex ecutable>
  7241              </DTS:Exec utables>
  7242              <DTS:ForEa chVariable Mappings>
  7243                <DTS:For EachVariab leMapping
  7244                  DTS:Cr eationName =""
  7245                  DTS:DT SID="{9C7B C503-CE88- 4BBE-8C35- 083A1F6C8B D7}"
  7246                  DTS:Ob jectName=" {9C7BC503- CE88-4BBE- 8C35-083A1 F6C8BD7}"
  7247                  DTS:Va lueIndex=" 0"
  7248                  DTS:Va riableName ="User::fi leName2" / >
  7249              </DTS:ForE achVariabl eMappings>
  7250           </ DTS:Execut able>
  7251         </DT S:Executab les>
  7252       </DTS: Executable >
  7253     </DTS:Ex ecutables>
  7254     <DTS:Pre cedenceCon straints>
  7255       <DTS:P recedenceC onstraint
  7256         DTS: refId="Pac kage.Prece denceConst raints[Con straint]"
  7257         DTS: CreationNa me=""
  7258         DTS: DTSID="{E1 F035FF-262 4-4BDE-86D E-4389C974 8D79}"
  7259         DTS: From="Pack age\Sequen ce Contain er"
  7260         DTS: LogicalAnd ="True"
  7261         DTS: ObjectName ="Constrai nt"
  7262         DTS: To="Packag e\LogPacka ge End" />
  7263       <DTS:P recedenceC onstraint
  7264         DTS: refId="Pac kage.Prece denceConst raints[Con straint 1] "
  7265         DTS: CreationNa me=""
  7266         DTS: DTSID="{56 2A420E-5BD 6-4DF8-B0C 6-020447E4 2B00}"
  7267         DTS: From="Pack age\Log Pa ckage  Beg an"
  7268         DTS: LogicalAnd ="True"
  7269         DTS: ObjectName ="Constrai nt 1"
  7270         DTS: To="Packag e\Sequence  Container " />
  7271     </DTS:Pr ecedenceCo nstraints>
  7272     <DTS:Eve ntHandlers >
  7273       <DTS:E ventHandle r
  7274         DTS: refId="Pac kage.Event Handlers[O nError]"
  7275         DTS: CreationNa me="OnErro r"
  7276         DTS: DTSID="{1E 1ABCBF-A7E F-4C4E-B48 D-216CD952 32A5}"
  7277         DTS: EventID="6 094914"
  7278         DTS: EventName= "OnError"
  7279         DTS: LocaleID=" -1">
  7280         <DTS :Variables >
  7281           <D TS:Variabl e
  7282              DTS:Creati onName=""
  7283              DTS:DTSID= "{28A476DF -D016-4962 -A3E4-FC5B 5A658282}"
  7284              DTS:Includ eInDebugDu mp="2345"
  7285              DTS:Namesp ace="User"
  7286              DTS:Object Name="Noti ficationGr oup">
  7287              <DTS:Varia bleValue
  7288                  DTS:DataTy pe="8"> PII                     </DTS:Vari ableValue>
  7289           </ DTS:Variab le>
  7290           <D TS:Variabl e
  7291              DTS:Creati onName=""
  7292              DTS:Descri ption="The  propagate  property  of the eve nt"
  7293              DTS:DTSID= "{95DFF8AA -3134-407E -801A-B6FA BA598A5E}"
  7294              DTS:Includ eInDebugDu mp="6789"
  7295              DTS:Namesp ace="Syste m"
  7296              DTS:Object Name="Prop agate">
  7297              <DTS:Varia bleValue
  7298                DTS:Data Type="11"> -1</DTS:Va riableValu e>
  7299           </ DTS:Variab le>
  7300         </DT S:Variable s>
  7301         <DTS :Executabl es>
  7302           <D TS:Executa ble
  7303              DTS:refId= "Package.E ventHandle rs[OnError ]\Log Pack age Error"
  7304              DTS:Creati onName="Mi crosoft.Sq lServer.Dt s.Tasks.Ex ecuteSQLTa sk.Execute SQLTask, M icrosoft.S qlServer.S QLTask, Ve rsion=11.0 .0.0, Cult ure=neutra l, PublicK eyToken=89 845dcd8080 cc91"
  7305              DTS:Descri ption="Exe cute SQL T ask"
  7306              DTS:DTSID= "{EB1C96D2 -A19F-4DEE -B989-DEA1 56478FBC}"
  7307              DTS:Execut ableType=" Microsoft. SqlServer. Dts.Tasks. ExecuteSQL Task.Execu teSQLTask,  Microsoft .SqlServer .SQLTask,  Version=11 .0.0.0, Cu lture=neut ral, Publi cKeyToken= 89845dcd80 80cc91"
  7308              DTS:Locale ID="-1"
  7309              DTS:Object Name="Log  Package Er ror"
  7310              DTS:TaskCo ntact="Exe cute SQL T ask; Micro soft Corpo ration; Mi crosoft SQ L Server 2 008; © 200 7 Microsof t Corporat ion; All R ights Rese rved;http: //www.micr osoft.com/ sql/suppor t/default. asp;1">
  7311              <DTS:Varia bles />
  7312              <DTS:Prope rtyExpress ion
  7313                DTS:Name ="SqlState mentSource ">"exec db o.usp_ETL_ PackageErr or " + (DT _WSTR, 50)  @[User::i PackageID]  + " ,'" +  @[System: :SourceNam e] + "',"  + (DT_WSTR , 50) @[Sy stem::Erro rCode] + " ,'" + @[Sy stem::Erro rDescripti on]  +"'
  7314   GO
  7315   Declare @D ate dateti me=getdate () 
  7316   Exec dbo.u sp_ETL_Pac kageEnd 0, @Date,'Fai led'
  7317   go
  7318   "</DTS:Pro pertyExpre ssion>
  7319              <DTS:Objec tData>
  7320                <SQLTask :SqlTaskDa ta
  7321                  SQLTas k:Connecti on="{D7948 F44-D7BE-4 422-8F90-4 A130AECABC 9}"
  7322                  SQLTas k:SqlState mentSource ="exec dbo .usp_ETL_P ackageErro r 0 ,'',0, ''&#xA;GO& #xA;Declar e @Date da tetime=get date() &#x A;Exec dbo .usp_ETL_P ackageEnd  0,@Date,'F ailed'&#xA ;go&#xA;"  xmlns:SQLT ask="www.m icrosoft.c om/sqlserv er/dts/tas ks/sqltask " />
  7323              </DTS:Obje ctData>
  7324           </ DTS:Execut able>
  7325           <D TS:Executa ble
  7326              DTS:refId= "Package.E ventHandle rs[OnError ]\Send Mai l Task"
  7327              DTS:Creati onName="Mi crosoft.Sq lServer.Dt s.Tasks.Se ndMailTask .SendMailT ask, Micro soft.SqlSe rver.SendM ailTask, V ersion=11. 0.0.0, Cul ture=neutr al, Public KeyToken=8 9845dcd808 0cc91"
  7328              DTS:Descri ption="Sen d Mail Tas k"
  7329              DTS:DTSID= "{73A83212 -CFEB-4903 -93C7-5132 0410094A}"
  7330              DTS:Execut ableType=" Microsoft. SqlServer. Dts.Tasks. SendMailTa sk.SendMai lTask, Mic rosoft.Sql Server.Sen dMailTask,  Version=1 1.0.0.0, C ulture=neu tral, Publ icKeyToken =89845dcd8 080cc91"
  7331              DTS:Locale ID="-1"
  7332              DTS:Object Name="Send  Mail Task "
  7333              DTS:TaskCo ntact="Sen d Mail Tas k; Microso ft Corpora tion; Micr osoft SQL  Server 200 8; © 2007  Microsoft  Corporatio n; All Rig hts Reserv ed;http:// www.micros oft.com/sq l/support/ default.as p;1">
  7334              <DTS:Varia bles />
  7335              <DTS:Prope rtyExpress ion
  7336                DTS:Name ="FromLine ">@[System ::PackageN ame] + "_E rrors@VA.g ov"</DTS:P ropertyExp ression>
  7337              <DTS:Prope rtyExpress ion
  7338                DTS:Name ="MessageS ource">@[S ystem::Pac kageName]  + " versio n: " + (DT _STR, 10,  1252) @[Sy stem::Vers ionMajor]+ "."+(DT_ST R, 10, 125 2) @[Syste m::Version Minor]+"." +(DT_STR,  10, 1252)  @[System:: VersionBui ld]  + " h as Encount ered the f ollowing E rror
  7339   ErrorNumbe r: " + (DT _STR, 100,  1252) @[S ystem::Err orCode] +  "
  7340   ErrorDescr iption: '"  +  @[Syst em::ErrorD escription ] + "'"</D TS:Propert yExpressio n>
  7341              <DTS:Prope rtyExpress ion
  7342                DTS:Name ="Subject" >@[System: :PackageNa me] + " ve rsion: " +  (DT_STR,  10, 1252)  @[System:: VersionMaj or]+"."+(D T_STR, 10,  1252) @[S ystem::Ver sionMinor] +"."+(DT_S TR, 10, 12 52) @[Syst em::Versio nBuild]  +  " has Enc ountered a n Error"</ DTS:Proper tyExpressi on>
  7343              <DTS:Prope rtyExpress ion
  7344                DTS:Name ="ToLine"> @[User::No tification Group]</DT S:Property Expression >
  7345              <DTS:Objec tData>
  7346                <SendMai lTask:Send MailTaskDa ta
  7347                  SendMa ilTask:SMT PServer="{ E10C6F7C-0 8E9-4420-9 6A9-5E0456 F9D7CA}"
  7348                    SendMailTa sk:From=" P I                                "
  7349                    SendMailTa sk:To=" PII                     "
  7350                  SendMa ilTask:Sub ject="DoDF ragment_Im port versi on: 1.0.89 1 has Enco untered an  Error"
  7351                  SendMa ilTask:Mes sageSource ="DoDFragm ent_Import  version:  1.0.891 ha s Encounte red the fo llowing Er ror&#xA;Er rorNumber:  0&#xA;Err orDescript ion: ''" x mlns:SendM ailTask="w ww.microso ft.com/sql server/dts /tasks/sen dmailtask"  />
  7352              </DTS:Obje ctData>
  7353           </ DTS:Execut able>
  7354         </DT S:Executab les>
  7355         <DTS :Precedenc eConstrain ts>
  7356           <D TS:Precede nceConstra int
  7357              DTS:refId= "Package.E ventHandle rs[OnError ].Preceden ceConstrai nts[Constr aint]"
  7358              DTS:Creati onName=""
  7359              DTS:DTSID= "{D9796D0E -5BDE-4EDA -848A-A012 3C48FF04}"
  7360              DTS:From=" Package.Ev entHandler s[OnError] \Log Packa ge Error"
  7361              DTS:Logica lAnd="True "
  7362              DTS:Object Name="Cons traint"
  7363              DTS:To="Pa ckage.Even tHandlers[ OnError]\S end Mail T ask" />
  7364         </DT S:Preceden ceConstrai nts>
  7365       </DTS: EventHandl er>
  7366     </DTS:Ev entHandler s>
  7367     <DTS:Des ignTimePro perties><! [CDATA[<?x ml version ="1.0"?>
  7368   <!--This C DATA secti on contain s the layo ut informa tion of th e package.  The secti on include s informat ion such a s (x,y) co ordinates,  width, an d height.- ->
  7369   <!--If you  manually  edit this  section an d make a m istake, yo u can dele te it. -->
  7370   <!--The pa ckage will  still be  able to lo ad normall y but the  previous l ayout info rmation wi ll be lost  and the d esigner wi ll automat ically re- arrange th e elements  on the de sign surfa ce.-->
  7371   <Objects
  7372     Version= "sql11">
  7373     <!--Each  node belo w will con tain prope rties that  do not af fect runti me behavio r.-->
  7374     <Package
  7375       design -time-name ="Package" >
  7376       <Layou tInfo>
  7377         <Gra phLayout
  7378           Ca pacity="8"  xmlns="cl r-namespac e:Microsof t.SqlServe r.Integrat ionService s.Designer .Model.Ser ialization ;assembly= Microsoft. SqlServer. Integratio nServices. Graph" xml ns:mssgle= "clr-names pace:Micro soft.SqlSe rver.Graph .LayoutEng ine;assemb ly=Microso ft.SqlServ er.Graph"  xmlns:asse mbly="http ://schemas .microsoft .com/winfx /2006/xaml ">
  7379           <N odeLayout
  7380              Size="136, 59"
  7381              Id="Packag e\Log Pack age  Began "
  7382              TopLeft="1 03.1897274 63312,52.8 3333333333 31" />
  7383           <N odeLayout
  7384              Size="136, 44"
  7385              Id="Packag e\LogPacka ge End"
  7386              TopLeft="9 4.15618448 63732,505. 6781970649 89" />
  7387           <N odeLayout
  7388              Size="215, 44"
  7389              Id="Packag e\Sequence  Container \Foreach L oop Contai ner\Script  Task - pr ocess reco rds"
  7390              TopLeft="2 5.51362683 43816,12.5 2620545073 38" />
  7391           <C ontainerLa yout
  7392              HeaderHeig ht="43.924 5283018867 95"
  7393              IsExpanded ="True"
  7394              PanelSize= "290,87"
  7395              Size="290, 131"
  7396              Id="Packag e\Sequence  Container \Foreach L oop Contai ner"
  7397              TopLeft="3 1.61006289 30818,26.3 4381551362 69" />
  7398           <C ontainerLa yout
  7399              HeaderHeig ht="43.924 5283018867 95"
  7400              IsExpanded ="True"
  7401              PanelSize= "332,218"
  7402              Size="332, 262"
  7403              Id="Packag e\Sequence  Container "
  7404              TopLeft="3 7.16666666 66666,152. 0911949685 54" />
  7405           <E dgeLayout
  7406              Id="Packag e.Preceden ceConstrai nts[Constr aint]"
  7407              TopLeft="2 03.1666666 66667,414. 0911949685 54">
  7408              <EdgeLayou t.Curve>
  7409                <mssgle: Curve
  7410                  StartC onnector=" {assembly: Null}"
  7411                  EndCon nector="-4 1.01048218 02934,91.5 8700209643 51"
  7412                  Start= "0,0"
  7413                  End="- 41.0104821 802934,84. 0870020964 351">
  7414                  <mssgl e:Curve.Se gments>
  7415                    <mss gle:Segmen tCollectio n
  7416                      Ca pacity="5" >
  7417                      <m ssgle:Line Segment
  7418                         End="0,41. 7935010482 175" />
  7419                      <m ssgle:Cubi cBezierSeg ment
  7420                         Point1="0, 41.7935010 482175"
  7421                         Point2="0, 45.7935010 482175"
  7422                         Point3="-4 ,45.793501 0482175" / >
  7423                      <m ssgle:Line Segment
  7424                         End="-37.0 1048218029 34,45.7935 010482175"  />
  7425                      <m ssgle:Cubi cBezierSeg ment
  7426                         Point1="-3 7.01048218 02934,45.7 9350104821 75"
  7427                         Point2="-4 1.01048218 02934,45.7 9350104821 75"
  7428                         Point3="-4 1.01048218 02934,49.7 9350104821 75" />
  7429                      <m ssgle:Line Segment
  7430                         End="-41.0 1048218029 34,84.0870 020964351"  />
  7431                    </ms sgle:Segme ntCollecti on>
  7432                  </mssg le:Curve.S egments>
  7433                </mssgle :Curve>
  7434              </EdgeLayo ut.Curve>
  7435              <EdgeLayou t.Labels>
  7436                <EdgeLab elCollecti on />
  7437              </EdgeLayo ut.Labels>
  7438           </ EdgeLayout >
  7439           <E dgeLayout
  7440              Id="Packag e.Preceden ceConstrai nts[Constr aint 1]"
  7441              TopLeft="1 71.1897274 63312,111. 8333333333 33">
  7442              <EdgeLayou t.Curve>
  7443                <mssgle: Curve
  7444                  StartC onnector=" {assembly: Null}"
  7445                  EndCon nector="31 .976939203 3546,40.25 7861635220 9"
  7446                  Start= "0,0"
  7447                  End="3 1.97693920 33546,32.7 5786163522 09">
  7448                  <mssgl e:Curve.Se gments>
  7449                    <mss gle:Segmen tCollectio n
  7450                      Ca pacity="5" >
  7451                      <m ssgle:Line Segment
  7452                         End="0,16. 1289308176 104" />
  7453                      <m ssgle:Cubi cBezierSeg ment
  7454                         Point1="0, 16.1289308 176104"
  7455                         Point2="0, 20.1289308 176104"
  7456                         Point3="4, 20.1289308 176104" />
  7457                      <m ssgle:Line Segment
  7458                         End="27.97 6939203354 6,20.12893 08176104"  />
  7459                      <m ssgle:Cubi cBezierSeg ment
  7460                         Point1="27 .976939203 3546,20.12 8930817610 4"
  7461                         Point2="31 .976939203 3546,20.12 8930817610 4"
  7462                         Point3="31 .976939203 3546,24.12 8930817610 4" />
  7463                      <m ssgle:Line Segment
  7464                         End="31.97 6939203354 6,32.75786 16352209"  />
  7465                    </ms sgle:Segme ntCollecti on>
  7466                  </mssg le:Curve.S egments>
  7467                </mssgle :Curve>
  7468              </EdgeLayo ut.Curve>
  7469              <EdgeLayou t.Labels>
  7470                <EdgeLab elCollecti on />
  7471              </EdgeLayo ut.Labels>
  7472           </ EdgeLayout >
  7473         </Gr aphLayout>
  7474       </Layo utInfo>
  7475     </Packag e>
  7476     <DtsEven tHandler
  7477       design -time-name ="Package. EventHandl ers[OnErro r]">
  7478       <Layou tInfo>
  7479         <Gra phLayout
  7480           Ca pacity="4"  xmlns="cl r-namespac e:Microsof t.SqlServe r.Integrat ionService s.Designer .Model.Ser ialization ;assembly= Microsoft. SqlServer. Integratio nServices. Graph" xml ns:mssgle= "clr-names pace:Micro soft.SqlSe rver.Graph .LayoutEng ine;assemb ly=Microso ft.SqlServ er.Graph"  xmlns:asse mbly="http ://schemas .microsoft .com/winfx /2006/xaml " xmlns:ms sgm="clr-n amespace:M icrosoft.S qlServer.G raph.Model ;assembly= Microsoft. SqlServer. Graph">
  7481           <N odeLayout
  7482              Size="135. 7735849056 61,43.9245 283018868"
  7483              Id="Packag e.EventHan dlers[OnEr ror]\Log P ackage Err or"
  7484              TopLeft="5 .5,5.5" />
  7485           <N odeLayout
  7486              Size="135. 7735849056 61,43.9245 283018868"
  7487              Id="Packag e.EventHan dlers[OnEr ror]\Send  Mail Task"
  7488              TopLeft="2 4.36792452 83019,99.9 1509433962 26" />
  7489           <E dgeLayout
  7490              Id="Packag e.EventHan dlers[OnEr ror].Prece denceConst raints[Con straint]"
  7491              TopLeft="7 3.38679245 28302,49.4 2452830188 68">
  7492              <EdgeLayou t.Curve>
  7493                <mssgle: Curve
  7494                  StartC onnector=" {assembly: Null}"
  7495                  EndCon nector="18 .867924528 3019,50.49 0566037735 8"
  7496                  Start= "0,0"
  7497                  End="1 8.86792452 83019,42.9 9056603773 58">
  7498                  <mssgl e:Curve.Se gments>
  7499                    <mss gle:Segmen tCollectio n
  7500                      Ca pacity="5" >
  7501                      <m ssgle:Line Segment
  7502                         End="0,25. 2452830188 679" />
  7503                      <m ssgle:Line Segment
  7504                         End="18.86 7924528301 9,25.24528 30188679"  />
  7505                      <m ssgle:Line Segment
  7506                         End="18.86 7924528301 9,42.99056 60377358"  />
  7507                    </ms sgle:Segme ntCollecti on>
  7508                  </mssg le:Curve.S egments>
  7509                </mssgle :Curve>
  7510              </EdgeLayo ut.Curve>
  7511              <EdgeLayou t.Labels>
  7512                <mssgm:E dgeLabel
  7513                  Boundi ngBox="0,0 ,0,0"
  7514                  Relati vePosition ="Any" />
  7515              </EdgeLayo ut.Labels>
  7516           </ EdgeLayout >
  7517         </Gr aphLayout>
  7518       </Layo utInfo>
  7519     </DtsEve ntHandler>
  7520   </Objects> ]]></DTS:D esignTimeP roperties>
  7521   </DTS:Exec utable>